連載 「オブジェクト指向実践レポート」 ――大規模開発プロジェクトの成功のために―― 細川努 日本総合研究所 2002/1/22 |
いま、システム開発の現場では、インターネット時代の到来とオープン系システム開発案件の増大、短期開発の要求の増加によって、従来の古典的スタイルでの開発では対応できない状況がうまれている。 本連載では、そのような状況の中で、オブジェクト/コンポーネント指向での新しい開発スタイルに取り組む筆者の、現場での果敢な挑戦からうまれた生きた情報をお届けする。(編集局) |
第1回 ソフトウェア産業の近代化をいまこそ |
■インターネット革命時代のシステム開発
ネットバブル以降においても、今後の世界経済のけん引力として、IT活用が大きく期待されている。その一方で、ガートナーグループが「eビジネス・プロジェクトの75%が失敗に終わる」との予測を示しているように、新しいビジネスモデルを新しいIT技術で実現することが、単純には成功し得ない時代が到来しようとしている。
すなわち、eビジネスに限らず、今後ますますビジネス戦略とそれを実現するシステム開発は不可分の関係となり、その結果、ソフトウェア産業の重要性が高まる一方で、ソフトウェア関連企業および技術者にとっては進化なくしては生き残れない段階に入ろうとしているのだ。こういった厳しい時代にこそ、先進的開発方法論である、オブジェクト指向の必要性がますます高まっていると感じている。
■そもそもソフトウェア産業は「近代的産業」と呼べるのか
オブジェクト指向の話に入る前に、若干、ソフトウェアに関係ない話に少しお付き合いいただきたい。20世紀は、特に工業分野において画期的な生産性向上などを達成した時代であったが、その代表といえるのが自動車産業であろう。その長い歴史の中で以下のような各種の工夫によって自動車生産における生産性向上が実現されてきた。
(1)フォーディズム
20世紀初頭において、フォードが導入した新しい生産方式は、消費者に高品質でリーズナブルな自動車を提供し、「モータリゼーション」の時代を実現するのに大きく貢献した。それまでの自動車生産は熟練工がかかりきりで1台の自動車を作っていたのに対して、フォードの方式は、以下のような点で優れていたといわれる。
- 移動組み立てラインを用いた工程別分業による生産性向上
- 部品を標準化することによって生産性およびメンテナンス性を向上させた
(2)Just In Time生産方式
トヨタが確立した生産方式は、開発工程のオートメート化を進める一方で、多能工が多工程を担当する柔軟な生産体制、QCサークル活動による品質向上などにより、製品を「必要なときに必要なだけ」生産する体制で、日本の自動車産業の発展に大きく貢献した。
すなわち、自動車産業等においては、工程別分業化、標準化、需要・要求に対する柔軟な対応等を既に20世紀のうちに実現していたのである。ところがわれわれのソフトウェア産業はどうかと言えば、非常に多くの課題を抱えているのが実情であろう。
■UMLブームの到来
さて、いよいよオブジェクト指向の話に入ろう。私個人の意見として、ソフトウェア産業の「近代化」を推進するためにも、もっとオブジェクト指向を積極的に採用し、利用していくべきだと考える。
そして、オブジェクト指向を実践する技術者にとって、UML(Unified Modeling Language)は不可欠な存在であるのは間違いないだろう。いまや、多くの技術者がUMLを習得しようと懸命になっており、書店でもUML関係の書籍がたくさん並ぶようになってきた。それだけでなく、ソフトウェア生産に関する企業(コンサルティングファーム、SI、メーカー、ベンチャーなど)自体も、UMLを積極的に採用し、社内での標準や新人教育に取り入れる動きがここのところ顕著になりつつある。
もともと、オブジェクト指向は、オブジェクト指向プログラミング言語から発展してきたが、現在では、ビジネスモデリング、要求、分析、設計、実装、テスト、デプロイメントなどのシステム開発工程の成果物を、UMLによるオブジェクト指向モデルによって記述することができる。そのため、もともと、ビジネスモデリングを行うコンサルタントと、コーディングを行うプログラマーとは、それぞれ前提とする知識が違うが、お互いにUMLという共通のモデリング仕様を利用することによって、成果物の共有、スムーズな作業分担が確立できる。これは、自動車工場において生産ライン上を自動車が動き、工程ごとの作業者が組み上げていくように、ソフトウェア生産においても、UMLという共通仕様の上で工程別のオブジェクトモデルを作成していくことによってシステム仕様を明確にすることができる。
■コンポーネントによる再利用性の向上
コンポーネントとは、再利用可能なソフトウェア部品である。もともと、ソフトウェアの再利用は、関数やサブルーチンの再利用、ソースコードの流用など、さまざまな形で行われてきた。しかしながら、例えばソースコードの流用を行った場合、もともとのプログラムにバグがあったり、仕様に変更があった場合、流用/コピーしたソースを個別に修正する必要がある。
これに対して、コンポーネントにおいてはコンポーネント内部のコードを隠ぺいし、インターフェイスのみから個別アプリケーションがアクセスできるので、コンポーネントと個別アプリケーションとの独立性は保ちながら高度な再利用を図ることができる。具体的なコンポーネントとしては、画面部品のような小さなコンポーネントから、ビジネス機能を部品化したビジネスコンポーネントのように大きなものまで存在する。
こうしたコンポーネントの流通ビジネスを行う企業もいくつか日本で立ち上がり、注目を集めている(コンポーネントスクエア、cBankなど)。
■オブジェクト指向開発環境
インターネット時代になって、システム開発環境も大きく変化している。例えばインターネット技術への対応、XML技術の利用、画像その他のメディアへの対応等に関しては、もはや古典的開発環境では対応が難しい。
オブジェクト指向に基づいてシステムを構築できるプログラムとしては、以前はSmallTalkなどが有名であったが、最近はいろいろな種類のオブジェクト指向言語や開発環境がそろってきている。特に注目すべきオブジェクト指向開発環境について、以下に紹介する。
- Java
Javaはオブジェクト指向言語として非常にシンプルであるが、J2ME(組み込み系、携帯電話などのためのJava開発環境)、J2SE(通常のJava開発環境)、J2EE(サーバサイド用Java開発環境)など、目的に応じたさまざまな環境が提供されている。
- .NET
マイクロソフト社の新しい開発環境。C#、J#など、さまざまな言語仕様でプログラムを記述し、中間言語を実行する。Webサービスなど、XMLに関する開発環境が整備されている。
上記のような各種オブジェクト指向言語に対応するために、Rational Software社などのオブジェクト指向CASEツールは設計モデルで定義したモデルから、ソースコードを生成・リバースすることができる。
■オブジェクト指向システム開発が直面する課題
ソフトウェア産業が「前近代性」からなかなか進化できないにもかかわらず、システム開発をめぐる環境はますます多くの課題を抱えている。こういった厳しい状況に対応して実績をあげてこそ、本当の意味でオブジェクト指向の実効性を証明できるのではないか。
(1)オープン系システム開発の大規模化
サーバサイドJava技術などを使って大規模な企業システムを構築する事例が日本においても増えつつある。従来、大規模システム開発はメインフレーム+COBOLによる伝統的な手法、もしくはSAP R/3などのERPパッケージの導入で実施するケースが多かったが、新技術への対応性やビジネスニーズに対する柔軟性の点で、このようなオープン系システムが基幹系システム開発にも利用されるようになってきたものと思われる。こうした大規模開発に関しては、かつてオブジェクト指向は不向きという意見もあった。しかしながら、オブジェクト指向開発方法論を用いた大型システム構築実績は着実に増えてきているし、また、オブジェクト指向に対応できる技術者も増加しているので、今後はむしろオブジェクト指向による大規模システム開発の方が多くなるものと思われる。
(2)短期間開発
もう一つ、大きなポイントとしては、システム開発の期間が著しく短くなっていることが挙げられる。かつてのシステム開発は5年くらいかけて実施する例もあったが、最近のプロジェクトは、大規模なもので1年、短い場合は3カ月でシステム構築を行う例が多い。本来、オブジェクト指向における再利用性・生産性のメリットを活用すれば、短期間開発の実現に大きく寄与することが期待できるが、単純にオブジェクト指向を採用したからといって再利用が実現できるわけではない。
■まずは実践しよう
そもそも、オブジェクト指向開発方法論に懐疑的な意見も多い。
「オブジェクト指向を使って本当に生産性向上が実現できるのか?」
「オブジェクト指向によってプログラミングの工数はどうなるのか?」
オブジェクト指向を実際に使う際には、たいていの人は周囲からこのような質問を受けているのではないか。
当然ながら、コンポーネントの再利用、オブジェクト指向開発環境等によってオブジェクト指向による生産性の向上を「PR」することは可能である。しかし、それ以上に重要なのは、オブジェクト指向によってプロジェクト全体の品質と生産性を「作りこんでいく」ことだと私は考える。
これから、何回かに渡る連載の中でその詳細に関して説明していく予定だが、
- ビジネス要件やシステム仕様等をUMLという共通言語で可視化/共有化
- イタレーションの中でレビューを繰り返すことによる、モデルの品質向上
- 再利用(モデル自体の再利用、アーキテクチャの再利用、コンポーネントの再利用)による品質・生産性向上
などといったことは、オブジェクト指向開発方法論を部分的に適用して実現できるものでなく、プロジェクトチーム全体が組織的に取り組むことによって大きな成果を発揮できるものである。
こうした目標を達成するためには、UMLを書籍などで勉強するだけでなく、実際に自分でモデリングし、チームメンバーとディスカッションしながら、設計モデルの妥当性に関して的確に評価できる「見識」をつけていく必要があるだろう。
プロフィール |
細川努(ほそかわ つとむ) 1964年生まれ。 中央大学 法学部 法律科卒業後、 (株)日本総合研究所に勤務。オブジェクト指向分析・設計を実践する傍ら、システムコンサルティングを行う。 現在、(株)日本総合研究所 事業化技術センター 副所長、(株)コンポーネントスクエア テクニカルアドバイザーを兼務する。 技術士(情報工学)。 |
Java会議室でご意見、ご感想を募集中 |