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

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

Java質問&情報提供サイトコミュのどんな事にアスペクトを適用してきましたか?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
なんだかすごそうだね、アスペクト指向って!と感激してはや数年。
いちプログラマとして「うっし、アスペクトでなんかつくっちゃろ〜!」な気持ちは持ちつつ、いまだにこう、こりゃイケてる発明だ!的なものが思い付かないんですよね。。(スキルアップの為なら車輪の再発明しても良いと思ってます)
みなさん、おれこんなんやってみたぜ〜、を教えあいっこしませんか?
ちなみに私はWeb系開発をやっており、過去に作成したアスペクトなブツは
・インタセプタでトランザクション管理織り込み
・インタセプタでDTO(引数として使われるDTO)に付けた独自アノテーションを読んで自動入力チェックする機能を織り込み
・単体テスト用の簡易DIコンテナ
・指定パッケージとその子孫を含むクラス群(log4jと同じ考え方)に、ソースに対応する通過行数を1行ごとに出力させ且つメソッドのInとOutを出力させる、デバッグ用のトレース織り込み
です。
一番最後のやつはjavassistでやってます。

コメント(14)

研究レベルですが、普通に書いたJavaプログラムを分散環境で動作させるためにJavassistでごりごりやったことはあります。
メソッド内部で引数をマーシャリングしてミドルウェアに投げるように変換。とかですね。
アスペクト!って感じではないですね〜。

あれば便利なはずなのに(ログやデバッグ以外の)いい使いどころを思いつかないのが謎のアスペクト。
あ〜、DBのコネクション周りとかは聞いたことありますね。
トランザクション
例外
ログ
DI

大規模になると開発が楽になりますよ
しのぶさん
ふむふむ、EJB3の記述法でリモート呼び出しするような隠蔽の仕方と勝手にイメージしました。自作って楽しい!
〉いい使いどころを思いつかないのが謎のアスペクト。
そうそうw
おもしろい仕組みなんですけどね〜、ほんと、使いどころが謎ですね。
あんさん
そうそう、大規模だと特に有効だと私も思います。要求仕様に関係ない処理を、外だしにして、重複もないし。工数、品質ともに好影響です。
ただですね〜…その用途となると、やっぱり決まり切った使われ方しか見た事がなくって。。
なのでですねー、こう、、「あたらしい!」とか「おもしろい!」みたいな喜びを感じれたらいーなぁ…と思うわけなのです。
私も基本的に業務と関係の無い関心事はみんなAOPって感じでやりましたね。

挙がっていない例としては
サービスの開閉局
例外のラッピング
メッセージ処理
キャッシュ
画面遷移制御
テーブルの特定カラムへの自動書き込み
なんかをやりましたね。

やりすぎたのがMockInterceptorの自前実装で、
動的に処理を追加・削除できるものを作っちゃいましたね。


で、結局、AOPって、継承やサーブレットフィルターと同様に処理をフックする技術で、関数型言語のカリー化と同等の役目を持っています。
で、アドバイスで環境情報を遅延評価出来たら、かなりのことが出来るのですが、
Javaでは遅延評価は3項演算子と||と&&位しか、サポートしてないので、
DIコンテナをサービスロケータと見立てて、HttpServletRequestを取得したり、
ThreadLocalを用いて、遅延評価っぽいことが出来るようにしました。
遅くなりました(汗)
Stradaさん
ほほー、すごいですねぇ。クラサバ型のJavaアプリ?か、イントラネットの基幹業務系Webアプリ、いや、やっぱりJavaアプリかな?
権限を外だしですね、うんうん。きっと権限×ボタンマトリクスのごついエクセルがあるんですね〜。そういう設計書必要ですもんね。で、それをジェネレートして定義ファイルにするから品質大丈夫ですよと言える。うんうん、イケてますなぁ。
多分、各ボタンには権限オブジェクトを属性で持たせるようにして、持たせ方は権限インタフェース。AOPで権限オブジェクトの実体をDI、て感じですると型言語らしくなって、Stradaさんのモヤモヤが薄れてくれる気がしますねー。そこまでやる必要があるかは現場次第なんで何とも言えないですが。。
yo4takaさん
おおぉ、色々やられてますね〜!サービス開閉、なるほど。ほんでJMXで外部から動的に開閉操作!て感じですかねー。いやいや、そこまで至れり尽くせりなフレームワークだと業務ロジック書く人が余計な事気にしなくていいので幸せでしょうねー。
最後の遅延評価のところが私、話についていけてない予感…
えと、、例えばStrutsからJSFに移行するみたいな話で、環境固有のコンテキストを隠蔽するから移行時に楽だよねとか、単体テストの時に無いもので且つ不要なものを無視できて無駄なモック作成量が減るから楽、とか、そういうお話し…なのかしら?
すいません、読解力不足です。。
altnkさん
そうなんですよね〜。デバッガで非同期の動きってとらえにくいですよね。同期処理中に非同期が動くときはこんな流れ、非同期が複数同時だと以外や以外こんな流れに…みたいな事があったりなかったり。
バグ調査で先輩に「ソース追ってる時間なんてねーよ、ぶち込んで再現投入じゃ!デバッグライト!デバッグライト!」て言われてたのを思い出します。ナツカシ…
>シャア大佐
ジェネリックDAOを使うとこれはすごい!と感じるかも
自分は感じましたw
知っていたらスルーで^^
亀レスで済みません。

> ほんでJMXで外部から動的に開閉操作!て感じですかねー。
いえ、実は、これわざわざ、DB覗いていたりします…
まぁ、タイムスケジュールのような定型的なものはキャッシュしてますが…、

遅延評価に関しては私の舌足らずですが、

)えと、、例えばStrutsからJSFに移行するみたいな話で、環境固有のコンテキストを隠蔽するから移行時に楽だよねとか、単体テストの時に無いもので且つ不要なものを無視できて無駄なモック作成量が減るから楽、とか、そういうお話し…なのかしら?

は、認識があっていると思います。


こっから、先、遅延評価の話をしだすと無いものねだりになるので省略します。

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

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

Java質問&情報提供サイト 更新情報

Java質問&情報提供サイトのメンバーはこんなコミュニティにも参加しています

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

人気コミュニティランキング