パーソナルツール
現在の場所: ホーム Users YAMADA Masaki 2009 0904 Grailsがもたらすソフトウェア開発の新しい視点

Grailsがもたらすソフトウェア開発の新しい視点

— カテゴリー: ,

2009年4月21日, 日本Javaユーザ会 (JJUG) の恒例クロス・コミュニティ・カンファレンス 2009 Springで, ショート・プレゼンテーションを行いました.

日本Javaユーザグループ (JJUG) の恒例クロス・コミュニティ・カンファレンス 2009 Springで, 日本Grails/Groovyユーザグループ (JGGUG) 代表として, ショート・プレゼンテーションを行いました.

Grailsがもたらす新しい視点とは, 一言で言えばドメイン駆動開発と言っていいでしょう. (このプレゼンテーションのタイトルに反して:-) ドメイン駆動自身は特に新しいわけではありません. しかし一般的な技術セットとして, ドメイン駆動開発を非常にやりやすいGrailsという技術が出現したことは大きな意味があります.

データベースのスキーマ開発を中心としたデータ指向アプローチ (DOA) ではなく, システムを機能に分割して再利用性と柔軟性を求めるコンポネント・ベース開発でもありません.

データ指向アプローチは, どうしても「固すぎる」システムになりがちです. そして, 昨今のシステムに求められる複雑性, 柔軟性, スピードと真正面からぶつかると多くの場合失敗します. そういうケースを多く目にしてきました. そもそもデータ指向と言っても実態はRDBという固有の技術に基づく「表指向」でしかありません. ERモデルと現実の問題領域との整合性はよくありません. RDBが技術的な可能性を奪っていることもあり得ます.

再利用の鍵としてコンポネントをベースとするやり方は, 長く行われてきました. 一部の狭い意味でのオブジェクト指向もコンポネント・ベースと言えるかも知れません. しかし, 実際問題としてコンポネントは再利用性を高めるのにあまり寄与しませんでした. もちろん部分的には大きな成果を出しています. ユーザ・インタフェイス部品などはそのいい例でしょう. またコンポネントよりも大きな再利用単位であるライブラリやフレームワークの存在なくては, 現在のソフトウェア開発はあり得ません. しかし, 「機能」を単位としたコンポネントに基づく再利用やシステム構築の進化は頭打ちになりつつあります. それは「ソフトウェア」の特性として, 部品の組み合わせだけではうまく行かない部分があるということが強く認識されてきたからです.

ドメイン駆動は, そういう意味で新しいソフトウェア開発の考え方です. そしてGrailsはドメイン駆動でWebアプリケーションを開発するのに非常に適しています (もっとよくしたい面もありますが). このプレゼンテーションでは, 

  • ドメインで考えるとはどういうことか
  • ドメイン駆動はどういう開発プロセスか
  • ドメイン駆動チームにはどんな役割が必要か
  • ドメイン駆動によりどんな利点があり得るか

を短く (30分のプレゼンテーション) にまとめています.

ドメイン駆動というと, Eric Evansの "Domain-Driven Design" (2004, Addison-Wesley) がよく知られています. この分厚い本はもちろんいい本ですが (邦訳は出ないのでしょうか?), 書名通り「設計」に焦点が当てられており, ドメインをベースとした開発全体についてはほとんど述べられていません (というか, Eric自身そこまで考えていなかったと思う). これからは設計だけでなく, 開発プロセス全体としての「ドメイン駆動」についてもっと研究と実践が行われる必要があるでしょう.

またGrailsも大衆化が進むにつれ, 技術志向が強くなってきています. 例えば最近リリースされる多くのプラグインは既存のJava技術のラッパに過ぎません. もちろん, それは目前の目標にとっては便利ですし, それ自身否定されるものではありませんが, もっとドメインやユーザの視点からのプラグインが提供されることが必要です. Grails自身の限界もこれからみえてくるかも知れません (まだ1~2年はぜんぜん大丈夫です:-).

関連コンテンツ