ひつじのにっき

mhidakaのにっきです。たまに長文、気が向いたとき更新。

デブサミ 【17-C-6】SpringのこれからとJava開発者向けの次世代RAD、Spring Roo Stefan Schmidt 氏

Stefan Schmidt氏:VMWareのSpringSourceチーム
講演内容はSpring Rooのデモとコンセプト、Springの今後の計画について。

デモンストレーション

Spring Rooでプロジェクトを作成するデモンストレーションでした。非常に軽快にデータベースをつくり、ブラウザから
データ編集をしていました。20分の短期間で、モデル定義からコード生成、テストまで。生産性の高さが伝わってきました。

以下、デモとSpringの周辺製品の情報です

ディレクトリ作成、Spring Rooを使うと画面が切り替わる

hintと入力すればヘルプ、機能が紹介される。かなり簡単にシステム構築できる。

プロジェクトを作成、トップレベルパッケージを設定

Rooはプロジェクト構造を作成、いくつかのフォルダの中はコンフィグファイルが格納されている
つねにhintと入力することでコンテキストにあったヒントが出てくる。

コンフィグ設定

EclipseTool > Datebaseと選ぶだけで新しいデータベースの設定が完了する

プロジェクトの要素を作成する

新しいドメイン Speaker を作成。自動的にSpeaker.javaやテストケースが生成される
Speakerはフィールド 名前/企業を持つ
新しいドメイン Conferenceはフィールド 日付を持つ。
ConferenceとSpeakerの関係を関係づけると単純ではあるが、ドメインモデルができる。
ここまでやったことが機能するか、確認するためのテストを実行(テストケースの自動生成?)

Web画面の生成

Rooに対してはWebサブシステムを指定するだけ。Eclipceで確認するとコードは自動生成されている。(Get/Setなど)
Rooが何をしているのか?はコードをみれば確認することができる。ただし確認はできるが、Roo側で保守、変更されるコード。
直接編集はできない。そのかわり、カスタマイズするための機能もある。
カスタマイズのためにJavaに変換した場合、Rooはメンテしない(できない)

SpringMVC以外に、Google WebToolKitが使える。
ServerBaseのJavaもサポートする予定。

Web画面の確認(MVCフロントエンド)

WebブラウザからSpeaker:2名分を追加、Conference:今日の日付で追加
つづけて参加するスピーカーを選ぶことで簡単に登録、ひも付けできる。
オブジェクトの確認などもListView,ページネーションもフレームワークでサポートされている。
Rooは9カ国語をサポート。GoogleWebToolKitのフロントエンドもあり、MVCフロントエンドと同様の機能がある

デモの補足

ほんの一部しか紹介できなかったが、ほかにもDatabaseリバースエンジニアリング機能等が追加されている。
これは既存のデータベースをアプリケーションに取り込むための移行ツール
コミュニティも活発。SpringSourceの外でも多くの活動がある。活動の一環として日本語の翻訳も進んでいる。

Spring Rooフレームワークの今後

現在のRooフレームワークはVersion3。Spring Expression Languages(コード作成補助)、新しいフォーマットのサポート、非同期処理を実現してきた。次のバージョンは3.1。
特徴は

  • コミュニティからのリクエストが多いものとして環境プロファイル。
    • 開発、テスト、ステージングなどで異なるプロファイルが指定可能
  • キャッシュ機能、抽象化機能、conversation管理(デフォルトではStateless、クラウド環境に向いている)

→ V3.1ha近日中にDeveloper Releaseされる

次は3.2

今年の末を予定。Java7のサポートが目玉。JVC4.1、Fork/Joinモデルもサポート。並列型マルチコアプログラミングで活用できる。

Springフレームワーク以外のもの
  • Spring Data:非SQL型のデータベースへのアクセスを提供
    • リレーショナルデータベースではない。この数ヶ月でMapReduce対応予定
  • Spring GemFire:データ管理。分散型キャッシュをサポート
  • RabbitMQ:SpringSourceはRabbitMQを買収、MQとのコネクタとしてSpringAMQを用意
  • Spring Moblie
    • Mobileデバイスの検知。SpringMVCの拡張。特定のモバイル端末へのViewの拡張を実現
  • Spring Android
    • NativeのAndroidアプリケーションを書く手助けになる。SpringのServer側REST統合
  • SpringPaymentService:支払い管理
  • VMForce:Springアプリケーションをエンタープライズへ適用、Amazon,GAE等クラウドでの実行環境を提供
特に注目して欲しい機能

環境プロファイル、キャッシュ機能、非SQLのサポート

Spring Roo

とても簡単にアプリケーションを作れる。アプリケーション開発時のみRooを使用。
本番時はRooに依存しているものはない。返還後のコードがあればOK。Rooの開発はオーストラリア、シドニーで行われている。日本との時差もすくなく積極的に取り組んでいる。