会場は法政大学ボアソナードタワー26F。飯田橋駅構内でまた道に迷った。春に一度来た場所なのに。会場は見晴らしがよい。会場に着くとメイドさんが歩いていた。通り無料ドリンクサービスをやっているらしい。50分×4コマのそれぞれにつき、5つのセッションを平行して催すのでどれにしようか迷ったけれども、どうにか絞り込んだ。2.4と、これまで詳細が明らかではなかった"Chura"について。最近のweb開発には"agile"と"enterprise"の2つの大きな流れがあるけれども、seasarはその流れの中でどう進んでいくのがが説明された。agileはRailsに代表されるもので、ひがさんはこれらをスピード感を出すために独自仕様も辞さずに突き進むものだとする。一方のenterpriseはEJB3/JPA/JSFに代表されるもので、大手ベンダーが仕様を練った上で提出されるものであり安心感を持てる技術であるけれども、その分、委員会てきな玉虫色なものになってしまいがちであるとする。ひがさんは、一開発者としては独自仕様でイノベーションを追求したいけれども、ユーザーの立場を考えるとそれも善し悪しであるという。独自仕様で属人的な性質が強い製品はその人がいなくなった時が怖いし、教育コストという面でも標準化されたもののほうが嬉しいという。そのような考えから、seasarではどちらの流れも捨てることはないそうだ。enterprise"の両路線に共通するのは3つだそうだ。oneはrails使いにはおなじみのフルスタックの利点ということである。これまでは問題領域ごとに様々なフレームワークが存在し、それらを組み合わせるのに独特のノウハウが必要であった。個々のフレームワークごとに思想の違いがあるので、そのギャップを如何に埋めるかも問題であった。HibernateとSpringの組み合わせはよく用いられるが、HibernateがAnnotationを重視するスタイルであるのに対し、Springは設定ファイルのほうを主に使用するスタイルであり、思想がこのレベルからして異なっている。この状況は組み合わせの自由度があるということではあるが、ユーザーが迷うことも多い。そこでseasarではフルスタックのフレームワーク群"Chura"を提供し、一つの開発哲学をパッケージングして提供する。Churaは沖縄方言で「美しい」という意味ということだ。seasarの慣例に従い、沖縄関連の名称である。2.4を中心としてフレームワークをパッケージングしたものだそうだ。一連のフレームワークはEclipse拡張であるDoltengを通じて配布されるので、インストールや構成に悩む必要はない。Diiguを組み合わせる。Hibernate-JPAを用いる。Javaの引数名情報をclassファイルに埋め込み、利用するもの。churaのスタイルでは、テープルのカラムと引数名を対応させてSQLテンプレート中のパラメータに対して一々引数を明示的に指定しなくても良いなど、引数名を積極的に利用する。通常classファイルには引数名情報が書き込まれていないのでそれを補う。API)をより使いやすくするためのフレームワーク。JPQLを書かなくても宣言的にDAOを構築できる。2.3のころからずっと言っている話だ。フレームワークは利用される様々な場面に応じて要求に応えられるよう、柔軟性を確保して作らねばならない。その結果として設定ファイルが随所に必要となり、大規模開発では設定ファイル地獄をもたらす。Configrationの思想を用いて設定の必要性を減らす。Configurationという思想については、日経ソフトウエア2007年1月号に書かせていただいた原稿でちょっと触れてる。ひがさんのお話は原稿を書く前に聞きたかったね。感スクリプト言語の良さを取り入れる。ひがさんによれば、スクリプト言語の良さの1つはファイルをサーバーに置けばすぐに認識される手軽さだということだ。Errorで開発できる。Java開発ではコンパイルして、jarやwarにパッケージングして、デプロイして、サーバーを再起動するという手間が必要となり、大変面倒である。手順が面倒なので最初からある程度完成度を上げておく必要があるけれども、現実には最初からきちんと動かすことは難しい。難しいことをやろうとするから心理的プレッシャーが掛かる。その結果として開発が楽しくない。リブート中などに無駄な待ち時間が発生することで開発のリズムも悪くなる。思考が中断して、思いついたアイディアが失せてしまう。スクリプト言語の生産性の高さとは、こういった問題がないことであろうとひがさんは指摘する。Javaの良さとは何だろうか。コンパイル時の最適化であるとか、静的な型チェックが挙げられる。Javaの堅さによって堅い開発が可能となっている。IDEと言語は直接は関係ないが、型が静的であることがIDEの実装を助けている面はある。IDEによって自動補完やリファクタリング支援、保存時の自動コンパイルなどが可能となる。Javaは、さくさく感がない分は堅さでカバーしていると言える。そこにさくさく感をも加えれば更に良くなるであろうというのがひがさんの発想だ。Seasarはそれをサポートする。アプリケーションを稼働させたままクラスの変更を反映できる。classファイルを上書きすればそれだけで認識されるので、Eclipseでソースを保存すればすぐにアプリケーションに反映されることになる。マスターのメンテナンスのように、業務画面には直接は結びつかない部分を拾ってページ駆動を補う。既存のテーブル定義に基づいてコード生成を積極的に使用するスタイル。実演Webアプリケーションを3分で作って見せた。Doltengプラグインを活用する。Uujiを選択プロジェクトが自動生成される。Railsのように、最近のWebアプリケーションフレームワークでは多いスタイルだ。メニューから、Tomcatにコンテキストを登録。Deployがあるので、ここで起動してしまって良い。既存のテープルからscaffold。従業員マスターに対する管理機能を作って見せた。Rails同様、モデルとなるテープルを選択するだけ。server"などが追加されている。これでブラウザが起動してそのページを開くことができる。このような細かな点まで操作性を追求している。Ctrl+5を押すとviewテンプレートと対応するJavaソースを行き来できる。これまではある程度完成させないと動かせなかった。2.4では、とにかく動かして、機能を足せる。以上はテープル駆動の場合の実例であった。動的にしたい部分にid属性を与える。span要素に入れ込んだり。Ctrl+5を押す対応するJavaソースがないので、新規作成ダイアログが現れる。クラス名等はHTMLの名前に基づいて予め埋まっている。ユーザーは規約からは導出できない部分だけを指定すればよい。idを振ってある要素は動的要素の候補として表示されているのでユーザーはそこから選択してbeanのプロパティを作成すればよい。再起動する必要もなく、ブラウザ側でリロードすれば先ほどspanで括った部分がbeanプロパティの値に置き換わっている。Dao/Dxoここで、先ほど従業員マスターEMPから作成したソースを見てみる。packge構成規約に基づき、プロジェクトのrootとなるパッケージの下、daoパッケージの下にDaoの定義がある。定義があると言っても実装までコード生成されているわけではない。只のインターフェースだ。findAll()などがある。このように規約に基づいて命名し、interfaceだけ宣言しておけば実装はSeasarのAOP機構を通じてフレームワークが差し込んでくれる。ユーザーはDAOを実装する必要がない。ここではDao部分にUujiを使用している。Uujiの場合、findAllのように返り値の型はMapである。Typedな利点を用いる場合も考慮されている。Typedなクラスに変換するのがDXOの役目である。DXOもまた、S2Dxoでinterfaceさえ宣言しておけば実装はフレームワークが作成してくれる。ちなみに、DXOはどう発音するのかと思っていたら、「だっくすおー」らしい。このように、開発者が書くべきはHTMLテンプレートに値を渡すbean(Churaの用語ではPageクラス)だけである。PageクラスにしてもDoltengでHTMLモックからダイアログで作成するだけである。月別アーカイブはてなブログをはじめよう!yuguiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。