ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ソースコードジェネレータコミュのジェネレーティブプログラミング

  • mixiチェック
  • このエントリーをはてなブックマークに追加
ジェネレーティブプログラミングの本(GPMTA)のトピです。
質問、お気に入り頁、その他もろもる、GPMTAに関することなら何でも。

コメント(6)

良いです。
ただし、かなり深いです。
いわゆるソフトウェア工学の話ですね。

ザックリいうと、ジェネレーティブプログラミングの前提にはドメイン工学があるよ、と。それはソフトウェアプロダクトラインによりシステムファミリという形で実現されるよ、と。で、ドメインってのは「医療システム」とか「在庫管理システム」とかに分類されるよ、と。

たしかに自動生成で扱うモデルはドメインが同じ方が再利用性は高いです。しかし、そのドメイン分析が、少なくとも日本の開発では軽視されている。それは単一システムのためにしかモデリングをしないからで。なのでドメインモデリングをしてから、それを複数のシステムで利用する「システム横断」ができるという前提が必要、と。

そんな感じでしょうか…。

おそらく、この本を読了しても「ドメイン工学」という概念が現場になければ役に立たないと思います。そう思って最初立ち読みしたときは買いませんでした。でも、よく考えると、自動生成をする前提がモデル工学という発想は理解できるます。そして、今ではなく将来、ドメイン工学というのが認知されそうだと思った。で、やっぱり買おうと。でも難しい。けど面白い。

注意すべきは、これがプログラミングの本ではないということです。あえて言うならXPのような開発プロセスと同レベルですね。つまり、自動生成のための開発プロセス。

そんな感じでしょうか…。
私も一言。

まず原著が 2000 年であり、それから 8 年経過したということを踏まえながら、この本を読むと歴史を感じます。「ジェネレーティブプログラミング」という単語は現時点でも魅惑的ですが、主流になっていない。それは何故か?という疑問を抱きながら読んでいます。

2000 年時点でオブジェクト指向、デザインパターン、テンプレート、DSL、MOP、AOP というさまざまな要素技術を組み合わせることでジェネレーティブを意識したプログラムは可能という見通しがあったということは勇気が出ます。その後は IoC (DI) なども登場しており、要素技術はよりジェネレーティブを後押ししているはずです。

本書ではジェネレーティブプログラミングの一つの有効な回答として、インテンショナルプログラミング (IP) を紹介していますね。IP についてはほとんど知らなかったので、その概念や構造を知ったことは有益でした。しかい、この IP は市場に浸透していません。IP を継続しなかったマイクロソフトは、そのあとソフトウェア・ファクトリーを提唱していますが、どのような連続性があるのか、または別物なのか、そのあたりは理解できていませんが...。

しかし「ジェネレーティブ」という哲学は、まだ一般的にはなっていない。その理由を考察することが、まず必要なのではないかと感じています。

(1) ジェネレーティブを意識するためには、オブジェクト指向を入り口として、本当にさまざまな技術を体系的に理解する必要がある。それだけ幅広い技術をマスターする人は少ない。

(2) ジェネレーティブプログラミング環境は一朝一夕には実現できない。得意分野となるドメインを決め、客への納品対象となるシステムの開発を密かに、しかし継続的に自動生成できるようにしていく必要がある。それはピラミッド構造となっている IT ゼネコンの枠にいる限り、とても難しい。

(3) IP のような本格的なメタプログラミング環境はまだまだ発展途上である。理想としていることは分かるが、C や Java、最近だと PHP や Ruby などの動的言語を含め、これらの言語に依存しないメタプログラミング環境は実現できるのだろうか。

(4) 本書では、自動生成されたソースコードのカスタマイズという視点は重視されていない。上位のメタプログラミング環境を鍛えることに主眼が置かれている。しかし現場の期待はカスタマイズ性の高さにある。カスタマイズを前提としたジェネレーティブプログラミングというものがあってもよいと思う。

特に (3) (4) については本書の続きのような位置づけなので、現在のソフトウェア工学分野の論文を調べた方がよいかと感じています
>IP についてはほとんど知らなかったので、その概念や構造を知ったことは有益でした。

僕も初めてみる言葉でした。
図にもIPとかって書いてますよね。一瞬、あれ?って思うけど、文脈で「あ、インテショナルプログラミングのことだ」って気づく。

あと、IPもですがドメイン工学とかプロダクトファミリとかも浸透してないですよね。これって日本だけなんだろうか?
とりあえず、この本みんな読め!って感じです。
読んだ人が口頭で啓蒙するってのでもいいんですが、学校で必読の書にしたほうがグッドですよ。
プロダクトファミリはMSの萩原さんが
http://www.atmarkit.co.jp/fdotnet/softfactory/softfactory02/softfactory02_01.html
で紹介してます。

>しかし「ジェネレーティブ」という哲学は、まだ一般的にはなっていない。

ですね。僕もあの本で初めて知ったし。プロダクトラインやソフトウェアファクトリならある程度浸透してるんですけど。
ジェネレーティブプログラミングのアクティビティの図解はわかりやすかったですよね。「そうか、そういう構成か」と納得してしまいました。だれかに説明する時はあの図は使えるなと思いました。

>自動生成されたソースコードのカスタマイズという視点は重視されていない。

ジェネレータの章は読んでて著者があまり力を入れて書いてない気がします。なんとなくですけど。読んでてちょっと退屈でしたし。
でも、IPやドメイン工学やフィーチャーは興味深く、それだけでもペイしますけどね。
今後、この本が日本の開発市場にどう影響を与えるか期待です。
>ジェネレータの章は読んでて著者があまり力を入れて書いてない気がします。
失言でした。
ジェネレータの章が退屈と言ったのは具体的なコードを期待していたからです。コードはC++メタプログラムの章であるのですが、C++がネイティブでないので退屈だったってだけです。
著者が力を入れて書いてないってことはないです。
とりあえず読了。一部読み飛ばしましたが。

で、この本で紹介されているDSSAやDARE、FASTの導入はビジネスになるとも思いました。
たとえばジェネレーティブプログラミング(以降GP)の開発をGP用のツール販売とバーターで行う。
そして、教育を受けたGPスペシャリストにコーチとして来てもらい、ファーストトライアルを赤字覚悟でやる。これでツールとツールを使った開発ノウハウをゲットする。そして、同じドメインで開発を続ける。そのうち効率と品質があがり「金のなる木」となる。
もちろん代理店を設立したり、雑誌にGPの有用性を唱う記事を載せるの忘れない。

そんなストーリを妄想しました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

ソースコードジェネレータ 更新情報

ソースコードジェネレータのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。