roo
DESCRIPTION
2011/08/01のJSUGでプレゼンテーションした資料です。TRANSCRIPT
1
Spring Roo のご紹介
日本 Spring ユーザ会てらひで
自己紹介
• 寺島 秀樹– 所属
• 株式会社アクシスウェア( http://www.axisware.co.jp )
• ソフトウェアデザイン事業部• チーフアーキテクト
– アーキテクトとして全体最適や標準化を行う
– 連絡先• [email protected]• mixi :てらひで!!( ID : 3315992 )
最近の興味• 社内勉強会
– 社内の技術者の教育– 他社の社内勉強会の実情– 勉強会の円滑な運営– 社内講師はどうすれば育成できるか?
• 意見交換させて頂ければ幸いです。
3
ご参考: http://www.slideshare.net/terahide/ss-8600885
今回のお話をお受けするにあたり• JSUG で Roo のお話をする機会を頂いた• テーマ「大規模開発で Roo は使えるか」• Web で調べながら1カ月で評価すればいいや
• 1週間後→ チュートリアルが動かない• 日本語の記事がほぼ皆無であると気づく• テーマ変更「 Roo を触ってみたお」
• 今青ざめた自分がここにいる。。。
4
や
ば
さ
指
数
Spring Roo• RAD ツール• コマンドベース• 自動生成• Usable and
Learnable
5
http://www.springsource.org/roo
SpringSource の戦略• Framework ベンダを脱却して Java エンタプライズ システムの All In One 企業へ
– ビルド• etc.
– 実行• etc.
– 管理• Hyperic etc.
• パブリッククラウド で エンタープライズを!
6
Roo の位置づけ• SpringSource の中核技術の1つ• RAD ツールのしての競合
– RoR– Dolteng ( Seaser2 の Eclipse プラグイン)– ・・・
• クラウドと Roo
7
Roo の構成要素• 構成
– Java– SpringFramework– Spring MVC– JSP– JPA– AspectJ
8
• WEB アーキテクチャ– RESTful
• テスト– JUnit– Selenium
• ビルド– Maven
枯れた技術!
nTier アーキテクチャ• Goodbye DAOs
9
View
Action 1※
Service
DAO
従来 Roo
View
Controller
Entity
※1 Spring MVC の場合は Controller
Roo の機能–自動生成• コマンドを打つ↓• ファイルを生成
– Java– JSP– Spring の設定ファイル– メッセージ properties ファイル– Maven の pom ファイル– etc.
10
Usable !
Roo の機能 - コマンド• コマンドなんて覚えられない!
• hint コマンド• Tab キー
11
Learnable!
自動生成• 個人的なお話ですが
12
自動生成で得をしたことがない!
痛い目にはいっぱいあった(;;)
よく聞くお話• 開発者 A さん「 Excel で書かれた○ × 設計書か
ら Javaのコードを自動
生成して...」
• 自動生成 → 修正 → 再度生成
13
修正した内容消えちゃった o (>△<) o
自動生成の問題点を考える• ジェネレーションギャップ• 生成にかかるコスト(時間)
– 開発のリズム
• 完璧なコードの生成は難しい!– 可読性の確保
• 空行とかインデントって結構大事– ビジネスロジックは自動生成できない!
14
Roo の自動生成• × 設計書から自動生成• プログラムベース
– 自動生成して終わりではない– プログラミングは必要– 基本的な CRUD を生成( Scaffold )– プログラムのテンプレートを生成
• ジェネレーションギャップ– AspectJ
– 生成した「変更しない部分」を .aj ファイルに隠ぺい
15
デモ• チュートリアル
16
なんとなく分かった• 気になる点
– エンタプライズは scaffoldだけでは成り立たない– 機能を追加するのは簡単?– 画面とかどうやって追加するの?– コントローラの実装は?– ・ ・ ・
17
実務で使えるの?
実際にやってみた• 評価期間:3週間• 作業者:2人• 評価内容:
– 簡単な Web アプリケーション(ちょっとしたゲーム)を開発
– 困った点、良かった点をまとめる
18
調べられなかった点調べられなかった点 使用される技術他システム連携 JMS
Entity の拡張 JPA
複雑なトランザクション制御
SpringFramework
セキュリティ SpringSecurity
View (非同期) Spring JS(Dojo)
クラウド (GWT) GWT19
困った点• やりたいことの実現方法を探せない
– 日本語のドキュメントが皆無
• 開発のリズムがつかみにくい– hotdeploy に未対応、( tcサーバ再起動)– In メモリ DB は再起動すると。。。
• JSP がなじまない– SpringMVC のお話だけど
• STS が。。。– チュートリアルをまともに動かすのに1週間かかった– コマンドラインならすぐだったけどね
20
良かった点
21
ごめんなさい(><)よく分かりませんでした。
Roo のアドバンテージ①• Java ・ Spring ベースである
– タイプセーフの利点• 大規模開発に向く
– JavaEE に比べて Lightweight• クラウド環境に向く
– 枯れた技術• 堅牢• 学習コストの短縮
22
Roo のアドバンテージ②• 非ランタイム
– 実行時に必要な jar ファイルを含める必要がない– war の肥大化を防ぐ– 無駄にメモリを消費しない– 動的プロクシが介在しないのでそれによる性能低下
が起きない
23
Roo のアドバンテージ③• 一貫性のある開発スタイル
– アプリケーションの構造・開発方法がおのずと決まってくる
• プログラムを書く時間を短縮できる– ドメインのモデリングにその分時間をさける
• add-on ベース– 今後もさまざまな add-on が追加される– 自分で追加することも可能
• springsource の中核技術– 今後もメンテナンスが期待できる
24
感想①• 大規模開発で使用するには...
– ドキュメントの難– 例外的な機能などへの戦略– 大勢集まった開発者
• 短期間で roo の流儀を徹底できるか
25
感想②• 開発中に部分部分で使用する手もあるかも
– 最初に機能のテンプレートを作ってそれを拡張する• テンプレートの作成に roo を
– 独自フレームワークの基礎に• ソフトウェアアーキテクト• フレームワークエンジニア
26
Happy Roo Life !
27
28
ご清聴ありがとうございました
29
ライセンスについて• JSUG マスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれ
を元にした派生作品)の複製・頒布・表示・上演を認めます。
• 非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・上演を認めます。
• 本作品のライセンスを遵守する限り、派生作品を頒布することを許可します。