移動: トップ > ラボ > プログラミングのアイディア > クラス = 会社の中で働く人
クラスを作るタイミング | 人に仕事を頼む感覚でクラスを作る
履歴:
統計:
目次:
このページの最終更新日: 2012/05/30
提案日: 2009/09/21

クラスとは会社の中で働く人

概要

クラスを作るときに、人に仕事を頼む感覚で作ると、クラスがまるで会社の中で働く人のように見えてきます。そこで、クラスとは会社の中で働く人、といったアイディアに至りました。

クラスの振る舞いは、部下が仕事をキッチリ果たし、上司が部下の成果をまとめてより大きな仕事を果たす構図にとてもよく似ています。クラスの階層は、会社の中の部/課/人の構造によく似ています。

背景

人に仕事を頼む感覚でクラスを作る

別ページ「人に仕事を頼む感覚でクラスを作る」の中で、クラスを作るときには、人に仕事を頼む感覚で作るアイディアについて記載しました。人に仕事を頼む感覚でクラスを作ると、クラスに仕事をお願いしたり、クラスがお互い協調して仕事を果たしたり、クラスがまるで会社の中で働く人のように見えてきます。複数のクラスが組み合わさって高度な機能を実現するところが、会社の中で人がお互いコラボレーションして1人では出来ないような大きな仕事を達成する様子によく似ています。そこで、クラスとは会社の中で働く人、といったアイディアに至りました。

どんなもの?

クラス = 会社の中で働く人

クラスを作るときに、人に仕事を頼む感覚で作ると、クラスがまるで会社の中で働く人のように見えてきます。ある仕事を任されたクラス1つ1つは会社の中で働く1人1人のように振舞います。クラス = 会社の中で働く人、といったアイディアです。

アプリケーションに必要なクラス

人に仕事を頼む感覚でクラスを作るとは、実現したい機能を1つの仕事と考えて、仕事を小さく分割してクラスに割り振り、クラスを実装する、といったことになります。例えば、実現したい機能を1つの大きな仕事Zと捉えてこれを分割していくと、右図のようにZがA、B、Cに、さらにA、BがA1、A2、B1、B2に分割できたとします。

仕事をクラスに割り振るので、仕事Zから仕事B2まですべてにそれぞれクラスを作ります。クラスZからクラスB2までが出来ます。クラスA1、A2は与えられた仕事A1、A2を責任を持ってキッチリ果たします。一方、クラスAは配下の2クラスがする仕事を取りまとめてより大きな仕事Aを果たします。この構図は会社の中で与えられた仕事を部下が責任を持ってキッチリ果たし、上司が部下の成果を取りまとめてより大きな仕事を果たすのにとてもよく似ています。

クラスZ/A/A1の階層構造は会社の中の部/課/人の構造によく似ています。課長が社員に仕事を任せるのと同じように、課長に当たるクラスAはその課に属する社員に当たるクラスA1、A2に仕事を任せます。そのため、課長が社員の仕事の詳細を知らないのと同じように、AはA1、A2の詳細を知りません。A1、A2にはAからやってほしい仕事だけを説明してあり、どのように処理するかの詳細はAではなくA1、A2が考えます。A1、A2が与えられた仕事をキッチリ果たして、結果をAに渡します。もし、A1、A2に仕事を任せないと、課長に当たるAはすべての詳細を考えなくてはならなくなり手に負えなくなります。

このように、上司が部下に仕事を頼み、処理の詳細は部下が考え、部下の成果を上司がまとめる、といった営みがすべての階層で繰り返し続くことで、全体として大きな機能を達成します。会社の中でプロジェクトが立ち上がり、多くの人が関わって、全体として大きな達成を得るのと同じように、アプリケーションを作成するとき、多くのクラスが関わって、全体として大きな機能を達成します。

課長は部下である社員がどのように仕事を達成するのかといった詳細を知りませんが、代わりにどの社員に聞けばよいかはよく把握しているものです。クラスも同じように、課長に当たるクラスAは配下にあるA1、A2のどちらのクラスに聞けばよいかをよく知っています。クラスAは配下のクラスA1、A2の内部動作は知りませんが、使い方はとてもよく知っています

部下が効率よく仕事をするためには、上司が仕事をどのように分割してどのように割り振るかが大切です。同じように、人に仕事を頼む感覚でクラスを作るときは、どのように仕事を分割してクラスに割り振るかがポイントになります。このように、上司が仕事を割り振る能力は、単純な仕事に分けてクラスに割り振る能力と共通しています。

人に仕事を頼む感覚でクラスを作ると、クラスが人のように振る舞います。人が仕事を頼まれてそれを果たすのと同じように、クラスも仕事を頼まれてそれを果たすように振る舞います。仕事を頼まれてそれを果たすといったこの構造は、会社の中で働く人の1人1人にある基本的な構造と同じです。クラスがこのような構造を持つことで、会社に見られるさまざまな側面と同じ性質を持つようになります。

大元の仕事Z→分割 : A, B, C→分割 : A1, A2, B1, B2→A1はキッチリ果たす=部下、Aは取りまとめ=上司、部/課/平の構造に同じ、全体で大きな達成=システム=協調=コラボレーション、Aは部下をまとめてさらに大きな仕事を果たす、Aは部下の詳細を知らない=任せてある⇔AはA1に聞けばよいことは知っている、仕事で分かれているので情報を聞きたいときにどこ(部/課)のだれに聞けばよいかが分かりやすい、上司が仕事を割り振る能力 = 単純な仕事に分ける

会社とクラスに見られる同じ側面

人に仕事を頼む感覚でクラスを作ると、会社に見られるさまざまな側面と同じ性質を持つようになります。これらの共通点をまとめると、次の6つになります。

  会社の中にある側面   クラスにある側面
1. 部下が責任を持って仕事をこなす = クラスが仕事をキッチリ果たす
2. 上司が部下の成果を取りまとめて
より大きな仕事を果たす
= 上位クラスは配下のクラスがする仕事を
取りまとめてより大きな仕事を果たす
3. 部/課/人の構造 = クラスの階層構造
(クラスZ/A/A1の構造)
4. 多くの人が関わって全体として
大きな達成を得る
= 多くのクラスが関わって全体として
大きな機能を達成する
5. 上司は部下の仕事の詳細を
知らない
= 上位クラスは配下のクラスの内部動作を
知らない
6. 上司が仕事を割り振る = 単純な仕事に分けてクラスに割り振る

クラスが仕事をキッチリ果たす=部下が責任を持って仕事をこなす
単純な仕事に分ける=上司が仕事を割り振る能力

 

更新履歴
2009/12/14
  • 書き始め
2009/12/25 v1
  • 初版作成
2009/12/27 v2
  • 図の追加

※ご意見、ご感想、改善点、その他の情報などがありましたら、メールにてお知らせ願います。

Copyright (C) 2002 - 2019 Simon.P.G. All Rights Reserved. Top | Simon.P.G. とは | 使用条件 | ご意見
inserted by FC2 system