uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

「グッドラッパー」VS「セカンドシステム症候群」

本日、「第2回 grails code reading」に参加いたしました。
私にとっては、懇親会を含め(懇親会のほうが?)大いにインスパイされる、有意義なものでした。参加者の皆様および、会場を提供いただいたCIJさまにおかれましては、ありがとうございました。


帰りながら思うに、GrailsRailsの関係というのは、「ソフトウェア(J2EE技術群)の複雑さの増大」に対するアンチテーゼとしての典型的な2大アプローチをそれぞれに代表しているのだな、と思いました。ひとつは、バッドノウハウ*1に対する「グッドラッパー的アプローチ」(グッドかどうかは置いとくとして、ラッパー的アプローチ)としてのGrails、「セカンドシステム症候群」気味にシンプルなものに立ち戻ろう、という立場のRails、です。


IT業界2大ドグマの対決というわけです*2。この認識からいえるのは、Grailsについては、「ラッパーがラッパーとして、どこまで隠し通せるの?」という程度問題に直面するだろうし*3、Railsについては、今は単純でも、ユーザーが増え、適用領域が増え、一般性が要求されるようになったときにどこまでシンプルさが維持できるか、という問題になります。いずれにせよ、あまり良い未来が予想できない構図ではあります。


後で書く:

  • 静的オブジェクト指向に慣れ親しんだJavaプログラマが、動的オブジェクト指向の世界に移行するためには「2つの壁」があるはず。それがGroovyがすんなり業務現場に広まるかどうかのキーポイント:
  • 1つの壁は、思考習慣としてのテストファースト・テストドリブン、が普及すること。受託開発ではこれらは必ずしも普及してない。
  • もうひとつの壁は、「動的に変化するオブジェクト」ダックタイピングへ思考を切り替える(静的タイピングにまつわる既得利益を放棄させること)ことについて。これについては、「動的にJavadocを生成する」様な考え方も一助となるかなと思いました。emacsのドキュメントコメントのように*4、Groovyで「インスタンス(に結びついたメソッド)に関する」APIリファレンスドキュメントを動的にメタクラスとかを使って返せるように作れないかなーという話。


Rubyのように過去技術とのしがらみがない言語とちがい、「Java技術者向け」というところに死活問題の根拠を置いた言語やシステムの場合、Java技術者の思考をスムーズに誘導する「移行パス」の存在が重要なのではないかと。


以上、飲みの後ですので、後から読み返して支離滅裂で後悔するのかもしれませんが、とりあえずお礼を兼ねて。
大変楽しかったです。またよろしくお願いいたします。>参加者各位

*1:バッドは言い過ぎとしても、too complexなものに対して。

*2:ソフトウェアの「増大する複雑さ」というドラゴンに対して、ゴジラキングギドラがそれぞれに立ち向かっている、という構図。関係ないけど「ドグマ」って怪獣の名前としても適切ですね。

*3:結局Grailsですまず下位システムの理解が必要なら、2重の知識が必要になる。これも程度問題だけれども

*4:Smalltalkも。