できるだけコードを書かないという発想ソースコード自動生成技術の最新状況(1/3 ページ)

» 2005年10月05日 12時00分 公開
[贄良則(ジャスミンソフト),@IT]

 Webアプリケーション開発案件の短納期化、高品質化、低コスト化要求に応えるために、ソースコード自動生成技術を活用する手法が注目されている。アイデア自体は昔から存在するものの、これまで大きく普及してこなかった自動生成という分野が、いまなぜ再び脚光を浴びつつあるのか。開発現場では顧客の高品質化要求や短納期要求により、もはや5%や10%の生産性向上策では負荷を吸収できずにいる。思い切って生産性を5倍、10倍へと上げるためには「できるだけコードを書かない」という発想の転換を行うしかないと気付き始めてきたことが大きい。ここではその技術進化の過程を追っていくとともに、ソースコード自動生成技術分野の最新状況と、これによるソフトウェア開発作業の現場への影響を紹介する。

自動生成技術の歴史

  ソースコードを自動生成させるという考え方自体は古く、FortranやCOBOLが全盛の時代から今日に至るまで、さまざまな技術/製品が市場に投入されてきた。その方式は「対象範囲を限定し、定型的なソースコードを生成する」方法と、「設計書を読み込み、必要となるすべてのソースコードを生成する」方法の2つに大別される。

 前者は主としてコーディングの一部を自動生成することを目的としている。例えばテーブル定義の作成や、一部業務ロジックのひな型コードの生成などが挙げられる。これらは腕に覚えのあるSE/プログラマがスクリプト言語を駆使して、自前で用意することも珍しくない。ただしこれらは体系化されたものではなく、プロジェクトごとに使い捨てられるという側面があった。一方、後者は汎用性を重視し、プロジェクトに必要なすべてのソースコードの完全自動生成を目指したものであったが、市場に投入された製品は少ない。これは実現そのものが難しいためであると考えられる。

 ところで、製品として投入されたソースコード自動生成技術は、現場で大きく普及するに至っていない。その理由を筆者なりに分析すると次のようになる。

  1. アーキテクチャの変遷に追い付くことが困難。汎用機からクライアントサーバシステム、WebシステムへとIT分野では日々、アーキテクチャが進化している。稼働プラットフォームや言語も変わっている。その流れにキャッチアップする製品を供給するのは困難であるため、デファクトスタンダードになるような製品がまだ存在しない。
  2. 自動生成技術の適用の難しさ。現実にはすべてのソースコードを完全に自動生成できるわけではないので、現場サイドでは「自動生成されたソースコードをベースに、手を入れていく」という使い方が前提になる。しかしこれまでの自動生成技術では、「自動生成されたソースコードは可読性が低く、解析が困難」であり、かつ「自動生成されたソースコードに少しでも変更を加えてしまうと、再自動生成が行えなくなる」という点があったため、適用が難しいという評価となってしまった。

 次に、自動生成技術が普及していない状況において、現場の生産性向上策はどのように進められてきたのかを、ざっと復習しておきたい。

オブジェクト指向技術による生産性向上アプローチの発展

 どのような開発言語においても、「先人が残したノウハウ」を再利用するためにコードの「ライブラリ」化を行うことが推奨されている。ところがIT業界の現場では、徹底したライブラリ化を図ったとしても、生産性の向上に寄与しないということが分かってきた。当社においてもさまざまなライブラリを整備しているが、その再利用率はプロジェクト全体の5%前後ではないかと判断している。これは一度書いたコードが「そのままの形で」別プロジェクトで再利用できる率というのは極めて少ないということである。

ALT 図1 オブジェクト指向技術による生産性向上アプローチの発展

 オブジェクト指向言語の登場により、さらに一歩進めた「クラスライブラリ」化を実現できるようになった。これまでのライブラリと異なる点は、継承やポリモフィズムを用いることで型(インタフェース)と実装を分離できるようになったため、全体の再利用率を高められたことにある。さらに「デザインパターン」というノウハウの体系化により、コードの再利用率をもう一段階、向上させてきた。これらを組み合わせ、特定業務分野向けの半完成品として組み上げたのが「フレームワーク」である。現在はWebアプリケーション開発の分野において多くのフレームワークが登場しているが、これは開発ノウハウの蓄積が一気に進んだことの表れでもある。「フレームワーク」を土台とすることで、開発者はフレームワークの流儀(ルール)に沿ってメソッドを記述する(フレームワーク上に載せていく)ことでアプリケーションを構築できるようになった。

フレームワークをベースとした自動生成技術の登場

 ところで、フレームワーク上のプログラミングをしばらく行っていると、同じようなパターンのコードを書いていることに気付くことであろう。フレームワークによってコーディングルールが明確になっているため、開発者はしかるべき手順を踏んだ行儀作法の良いコーディングが求められてくるようになった。これによって、新たな視点での自動生成技術が注目されてきた。すなわち、従来のように独自規格で可読性の低いコードではなく、フレームワークの流儀にのっとり、誰がコーディングしても同じとなることが求められるような、パターン化された規格に合致した自動生成であれば、現場の負担を大きく軽減できる可能性が高いというわけである。

ALT 図2 ジェネレーションギャップ
ALT 図3 フックオペレーション

  さらに自動生成されたソースコードの改変性ということでもブレークスルーがあった。オブジェクト指向の特長である継承やポリモフィズムを基に、ジェネレーションギャップやフックオペレーションと呼ばれるデザインパターンを使うことで「自動生成されたコードをベースに、これを継承することでロジックの拡張を行う」ことが可能となった。これにより、「パターン化されたソースコードの生成により可読性が高い」「ジェネレーションギャップのような仕組みを使うことで拡張も可能」というメリットがもたらされ、これまでの自動生成技術の問題を解決できる素地が整備されたのである。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ