著作一覧 |
思えば昨年5月あたりから開始して、夏に大きく停滞して(編集の方には実に申し訳ないことをしました。心よりお詫びします)、年末に完了。なんか停滞の影響かこのまま覆水盆に返らずとなるのかと思っていたものの、NetBeans5に合わせて3月くらいに手直し依頼があって、その後またどうなったのかなぁ、と思っていたところ、Rails本の校了と同時くらいに最終校正が始まって、あれよあれよというまに、アマゾンです。
Seasar2で学ぶ DIとAOP アスペクト指向によるJava開発(arton)
えーと、題には問題があります。指摘した時点では遅かったらしいのですが。
本来は『DIとAOPによるJava開発』であるべきですが(Java開発って何よ? というのもあるなぁ。Javaを開発するみたいにもとれるし)、多分AOP何それ? というのを恐れて(その懸念はわかるのですが)『アスペクト指向』というカタカナ(ここの読者の大半には以下の理屈はわかんないだろうなぁ、と思うんだけど、同じ「意味がわからない」であっても英字3文字とカタカナだと、カタカナのほうがわかったつもりになれる/わからなくはなさそうだというポジティブな方向に考えがはたらく、つまり敬遠されにくくなるという効用がある)が変なところに入っています。そのため、題名はどう見ても『DI』が埋没して『アスペクト指向によるJava開発』です。本当にありがとうございました。が、もちろん最初に書いたとおり『DIとAOPによるJava開発』です。最初に出てくるDIのほうがむしろ主眼です。
で、Java開発は何よ? ですが、ここでは実装設計が主題です。
内容は一口では説明しにくい本なので、ここで説明します。
全体は大きく2つのパートに分かれています。
最初のパートは、3つに分かれます。
1つ目は、ソフトウェアのライフサイクルの話で、モジュラー化重要ということの説明です。
2つ目は、DIという実装技術の解説です。昨年の内容なので、セッタインジェクション、コンストラクタインジェクション、注釈付きフィールドインジェクション、インターフェイスインジェクションです。意外とインターフェイスインジェクションが好きですねというのは余談です。
3つ目は、アスペクト指向の解説とAOPLではないJavaというOOPLでどうAOPを実現するかの簡単な(バイトコードモディフィケーションまでは入らない)実装技術の解説です。
このパートはどちらかというと、フレームワーク実装者向きかも知れません(追記:誤解を招く表現。その実装がわけのわからないものではなく、安定した技術に基づいたものだということを示すという意味がもちろんあるわけで、自分で作るかどうかに関わりなく、どのような技術に基づいて作られたのかということを知っておくことは重要だと思います。完全なブラックボックスを利用するのと、その実装――たとえばS2――そのものはブラックボックスとして扱うにしても、中でどのようなことが行われているかについて原理を理解しているのではまったく異なります。この観点から、パート1のうち実装技術の説明をしている章を書いています)。
次のパートは、S2コンテナ+S2JSF+S2Daoを利用したWebアプリケーション開発のチュートリアルの形式を取っています。しかし、チュートリアルとは言わずにケーススタディとして扱っています。これは実装中に出した論点について、考え方などについて説明したり考察したりしても結論を出さない(ケースバイケースで結論が変わる)部分が多々あるからです。つまり、設計上の選択がどのような局面で必要となり、それに対してどういう観点を取るとどのような設計が必要となるのか、といった点を解説しています。
#実はごーやについては昨年夏ころまでの情報を元に考えた結果で構成しているため、はぶさんや現在のひがさんの考えている(というかオリジナルの)ごーやとはずいぶん違うような気がします。
取り上げた題材ですが、以前『J2EEプログラミング講座』(これいい本だと思うので、こちらもよろしく)の時には比較的業務プログラムに近い内容のサンプルを使ってみたのとは大きく変えてWikiの実装にしています。
これは、業務プログラミングのイメージに近づけたサンプルを出すことよりも、終わった後にそれなりに使えるプログラムにしたほうが良いかな、という考えからです。そういった現実のプログラムとしての実用性とは別に、構造的な実用性としてWikiは、データベースからデータを引っ張り出した後にいろいろな加工をする(Wiki記法の処理)こと、特にその加工方法について拡張性が必要なことが挙げられます。
というわけで、家では『かんたんRails』、会社では『DIとAOP』(会社でRailsの場合は、ライド・オンやはじめよう、くまくまーの人のもリファレンス性が高いらしい、だろうなぁ。かんたんRailsはパーソナル性を追求してるし)ということでよろしくお願いします。
かんたんRuby on RailsでWebアプリケーション開発(arton)
#私信:レビューしてくださった方へ。こちらから発送しますので見本刷りが出るまで(多分、後2〜3週間)お待ちください。
#実装はまったく参照していませんが、Wiki記法はHikiのWiki記法をそのまま流用させていただいています。スタイルシートもHiki同様tDiaryテーマを流用させていただいています。
ジェズイットを見習え |
>昨年の内容なので<br><br>今年だと何が追加されるのでしょうか?最近のJava事情に明るくないので、十分に感じられてしまうのですが。
インターフェイスインジェクションの扱い、EJB3のDIはドラフトだけを元に記述、2番目とも関連するけどアノテーションの扱いが相対的に軽い、と言った点です。
アノテーション重視とEJB3の記述を追加、というのはなるほど、と思いました。<br>質問ばかりで申し訳ないですが、インターフェースインジェクションの扱いはどう変わるのでしょうか?<br>私の認識だとどちらかといえばインターフェースインジェクションは古いやり方なのかと思っているのですが。
その通りだと思います。>古い<br>#質問と逆に、どうなっているかを書いてました。<br>削除しないまでも「歴史的」としての言及になります(ファウラーのDI記事に出ているので無視はできませんね)。<br>ただし、汎用コンテナを考えなければ、インターフェイスによって型を制約することが良い場合もあるのが悩ましいところです。結局、DIというよりは普通のIoCなAPIだという点が扱いを難しくしている点だと思います。
了解しました。<br>面白そうなので見かけたらちょっと手にとって見ます。
よろしく。