ソフトウェア開発の守・破・離ITアーキテクトを探して(10)

2006年6月28日、東京・国立オリンピックセンターでオブジェクト倶楽部主催のイベント「ソフトウェア開発の守・破・離〜基本・挑戦・その先にあるもの〜」が開催された。本イベント基調講演に立った豆蔵会長 取締役会長 兼 ES事業部担当役員 羽生田栄一氏は、伝統芸の世界でいわれる「守・破・離(しゅ・は・り)」の考え方を応用し、オブジェクト指向とソフトウェア開発、そしてエンジニアの未来について語った。

» 2006年07月14日 12時00分 公開
[岩崎史絵(トレッフェ),@IT]

ITの未来を守・破・離で考える

羽生田氏 皆さん、こんにちは。本日は「オブジェクト倶楽部 2006夏イベント 『ソフトウェア開発の守・破・離』〜基本・挑戦・その先にあるもの〜」の中で、基調講演をやらせていただくことになりました。

 守・破・離(しゅ・は・り)とは、江戸時代の茶匠であった川上不白の『不白筆記』にある言葉です。守は「自分の師匠の教え、型を守り、習熟すること」、破は「自分の師匠の教えを完ぺきにマスターした後、ほかの流派の教えを請い、習熟すること」、離は「自分の体の中でいろいろな流派を熟成させた結果、自分なりの流派を作り出すこと」です。これは川上不白が弟子を育てる良い方法論や体系はないかと考え続け、生まれたもので、今日では武道や伝統芸の世界などでよく使われるようになりました。

 こうして守・破・離の意味を見ていると、西洋哲学でいう「弁証法」と似ているのではないか、と気が付きました。弁証法とは、簡単にいえば「対話法」です。具体的には、自分と異なる意見を持っている人と対話しながら、もともとの意見よりも高次な意見を一緒になって作り上げること。弁証法の世界では、正(テーゼ)・反(アンチテーゼ)・合(ジンテーゼ)と呼ばれていますが、守・破・離と同じく、ほかの流派の見方も考えたうえで、さらに新しい考え方に昇華させていく方法論です。

 さて、守・破・離や弁証法がソフトウェア開発とどんな関係にあるのか。この講演では、守・破・離や弁証法の方法論を適用することで、「今日のソフトウェア開発やエンジニアの“その先”にあるもの」が見えてくればいいな、と考えています。手始めに、オブジェクト指向というアプローチを守・破・離のパターンに当てはめてみましょう。

オブジェクト指向の守・破・離とは

 まず「守」です。ここではオブジェクト指向の特徴を復習しておきましょう。大まかにいって、(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)に代表されるようなアジャイル的なスキルが必要だと考えています。こうしたことがエンジニアのスキル体系となり、社会と価値を共有する開発が可能になるのではないかと考えています。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ