
ソフトウェア開発の守・破・離
2006/7/14
■ ITの未来を守・破・離で考える
羽生田氏:皆さん、こんにちは。本日は「オブジェクト倶楽部 2006夏イベント 『ソフトウェア開発の守・破・離』〜基本・挑戦・その先にあるもの〜」の中で、基調講演をやらせていただくことになりました。
- - PR -
こうして守・破・離の意味を見ていると、西洋哲学でいう「弁証法」と似ているのではないか、と気が付きました。弁証法とは、簡単にいえば「対話法」です。具体的には、自分と異なる意見を持っている人と対話しながら、もともとの意見よりも高次な意見を一緒になって作り上げること。弁証法の世界では、正(テーゼ)・反(アンチテーゼ)・合(ジンテーゼ)と呼ばれていますが、守・破・離と同じく、ほかの流派の見方も考えたうえで、さらに新しい考え方に昇華させていく方法論です。
さて、守・破・離や弁証法がソフトウェア開発とどんな関係にあるのか。この講演では、守・破・離や弁証法の方法論を適用することで、「今日のソフトウェア開発やエンジニアの“その先”にあるもの」が見えてくればいいな、と考えています。手始めに、オブジェクト指向というアプローチを守・破・離のパターンに当てはめてみましょう。
■ オブジェクト指向の守・破・離とは
まず「守」です。ここではオブジェクト指向の特徴を復習しておきましょう。大まかにいって、(1)モノに着目してモデル化する(2)属性と手続きをカプセル化する(3)カプセル化しているので区別しやすい(4)手続き型と異なり、内部状態を持てる(5)メッセージを受けて反応できる(6)ほかのオブジェクトへメッセージを送信できる、という6つの特徴があります。このため、モジュール化しやすい、拡張しやすい、理解しやすいソフトウェアができる、というメリットを享受できます。
ではほかの流派、例えばDOA(データ中心アプローチ:Data Oriented Approach)と比べると、オブジェクト指向は何が違うのでしょう? このように、ほかの方法論の良いところも認めたうえで、あらためてオブジェクト指向流派を見つめ直すというのが「破」です。
DOAでは、組織が取り扱うべきデータの集合体をきちんと規格化・体系化し、その標準化されたデータの組み合わせによって業務を記述します。つまり正規化されたデータの集合(Data World)と、それを使いこなすアプリケーション(Application World)で世の中を記述するという見方です。
一方オブジェクト指向は、データとアプリケーションの“境界”に、業務の構造の本質を表す何らかのモデルがあると考えます。その本質的なモデルをうまくフレームワーク化できれば、アプリケーションにも展開できるし、ORマッパーを使ってデータ化することも可能です。つまりモデルが中心にあって、ここで業務がきっちり記述されていないといけない。厳然としたModel Worldがあり、ここがメンテナンスされている必要があるのです。
この2つは、どちらが良い・悪いという基準はありません。例えばDOAには、複数の組織にまたがった電子化が実行しやすいという利点があります。モデルベースの考え方だと、組織全体のフレームワークを作るのはかなり難しいのですが、データの集合体を規格化・体系化することにより、組織全体の標準化が進みます。大きい組織全体の標準化を目指すのであれば、Data Worldの方が実践的です。
翻ってフレームワークという観点に立ってみましょう。Model Worldでは、データとアプリケーションの基本サービスを合わせてモデル化するので、アプリケーション固有の画面とか制御だけを追加すれば簡単にソフトウェアが出来上がります。つまりModel Worldの方が、業務の本質的な構造まで含めてビジネスを表現するのに適しているといえます。なのでオブジェクト指向のアーキテクチャで世界全体を記述するのが非常に難しいというのが分かります。
さて、守・破・離の最後「離」の中で、これまでとまったく異なるオブジェクト指向のとらえ方を紹介しましょう。いま見てきたように、オブジェクト指向をほかの流派と比べ、優劣を付けることは不可能だし、意味がありません。でも現在、オブジェクト指向はソフトウェア開発の手法として普及しています。なぜなのでしょう。それには「社会的な視点」という要素を入れて考える必要があるのです。
■ 社会の流れでオブジェクト指向は普及した
ITの世界は、もともとはハードウェアの販売が主でした。15〜20年くらい前まで、ソフトウェアはおまけだったんです。その後、ハードではなくソフトが重視される中で登場したオブジェクト指向は、当初「メモリの占有率が激しい、CPUをムダにする」といわれ、「だからオブジェクト指向はダメなんだ」と評価されました。しかし今日ではハードの性能が上がり、データ構造に凝ってパフォーマンスを若干上げるより、「業務とITのモデルをできるだけ一体化して表現した方が保守コストが下がる」といわれるようになってきました。つまりオブジェクト指向が普及したのは、それが素晴らしかったのではなく、経済の仕組みや社会的な要請がこれまでと異なる方向に流れたからなのです。
もう1つ、別の見方を考えてみましょう。いまやコンピュータはネットワークや携帯端末とつながり、ユビキタスな社会を構成する一要素となっています。現代社会は、コンピュータも1つのオブジェクトとして、別のオブジェクトとつながってコミュニケーションを取るというモデルで描けるようになりました。オブジェクト指向のアーキテクチャが、現代社会のメタファーとして利用できる、つまり社会の仕組みをオブジェクト指向で表現しやすくなったのです。このように、社会のおかげでオブジェクト指向が受け入れられるようになってきた、といえるのではないでしょうか。
■ 社会と価値を共有して開発する
特定の技術論や開発者集団に閉じこもっていては「良いプログラム」は生まれません。なぜなら「良いプログラム」とは、プログラマ自身が決めることはできないからです。それを決めるのは、エンドユーザーや、エンドユーザーが属している組織、またはエンジニアが属している社会です。良いプログラムとは、顧客、エンジニア、組織・社会の3体問題であり、常に社会を意識する必要があります。これが「ソフトウェア工学」という学問です。ソフトウェア工学では、People、Process、Project、Productという4つの対象を考え、それぞれをコントロールしてプロジェクトのゴールを達成することを考えます。
もともとプログラミング言語とは、機械語のコマンドの組み合わせから端を発しています。機械語はあまりにも複雑で分かりにくいので、さまざまな手法を使って「人間にも分かりやすく」、さらに「世界の成り立ちを記述しやすいように」工夫されてきました。具体的には、CPUのアドレス空間にラベルを付けて管理しやすくしたアセンブラ、何度も出てくるコードをサブルーチンとして切り出し、処理を記述する手続き型言語など。この歴史には、複雑な対象を理解しやすくするため「分割」「命名」「抽象化」「具象化」「見える化」といったアプローチが取られてきました。オブジェクト指向もこの延長で生まれたものです。
そして次の段階で来るものは何か。私はそれが「社会」ではないかと考えているのです。現在、オブジェクト指向で最もホットな研究分野が「チームのモチベーションを維持しながらいいソフトウェアをつくるプロジェクト体制について」です。People、Process、Project、Productというよりソフトウェア工学的な見地に立って、オブジェクト指向の方法論が検討されている。ここでは、社会と価値を共有しながら良いソフトウェアを作り上げる視点を最重要視しています。
最後に、守・破・離でいう「基本を自分の体で習得すること」、そして「次を見据えて全体的な視点を持つこと」の重要性についてお話ししたいと思います。これまで申し上げたように、これからのソフトウェアは、社会的な視点や価値観を踏まえて開発していく必要があるでしょう。そうした全体的な視点を持つにはまず「モデリング」があり、先人の成功事例や努力を踏まえて開発するには「パターン」を活用し、チーム全体として最適な動きをしていくには、XP(Extreme Programming)に代表されるようなアジャイル的なスキルが必要だと考えています。こうしたことがエンジニアのスキル体系となり、社会と価値を共有する開発が可能になるのではないかと考えています。
オブジェクト倶楽部主催のイベント「ソフトウェア開発の守・破・離〜基本・挑戦・その先にあるもの〜」で豆蔵会長 取締役会長 兼 ES事業部担当役員 羽生田栄一氏が、伝統芸の世界でいわれる「守・破・離(しゅはり)」の考え方を応用しながら、オブジェクト指向とソフトウェア開発、エンジニアの未来について語った。守・破・離(しゅはり)とは江戸時代の茶道の言葉だとされる。教えを守る修行時代から、流派の中で自己の型を発見していく時を経て、自己流を編み出す段階へと至る。
ITアーキテクトを探して バックナンバー 連載インデックスへ»
- 第1回 ITアーキテクトが備えるべきスキル標準
- 第2回 ITアーキテクトとスーパーSEの違い
- 第3回 情報家電とITアーキテクト、その密接な関係
- 第4回 ITアーキテクトの仕事術:要求の「見える」化
- 第5回 ITアーキテクトはプロジェクトも設計する
- 第6回 わたしはビジネス寄りの技術者です
- 第7回 ITアーキテクトに必要な3つの視点
- 第8回 国のIT基盤を設計するITアーキテクト
- 第9回 ソニー生命保険が考えるITアーキテクト像
- 第10回 ソフトウェア開発の守・破・離
- 第11回 ITアーキテクトの専門分野を3つに整理
- 第12回 アーキテクトはコンポーネントをうまく使う
- 第13回 開発現場を3T(楽しい、定時に帰れる、高い給料)に
- 第14回 デスマーチの構造 Vol.1
- 第15回 デスマーチの構造 Vol.2
- 第16回 見えるビジネスモデリング
- 第17回 経営者はなぜソフトウェア開発環境展に足を運ぶのか
|
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
| 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| 情報漏えいで会社の社会的信用を失う前に @ITメールソリューションLive! in Tokyo |
| コスト削減・信頼性向上をまとめて満たす “高信頼Linux”を構築する方法とは? |
| SEの作業時間の大部分を占めるドキュメン ト作成。これを短縮するツールを紹介 |
|

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | 深刻化する標的型攻撃への備えは万全か? Black Hat Japanで講演した村上氏に学ぶ |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |







