エンジニア的なネタを毎週書くブログ

東京でWebサービスの開発をしています 【英語版やってみました】http://taichiw-e.hatenablog.com/

初めてのOSGi with Bandtools

Building Modular Cloud Applications in Javaのスピンオフ記事です。

OSGiがなんだかプレゼンを聴いてもよくわからない。ググってみたけど、英語を読んでも日本語を読んでもよくわからない。具体例が全然無い。

じゃあ仕方ない、自分でいっちょやってみっか! ということで、プレゼン内で今日発売といわれていた「Modular Cloud Apps with OSGi」を購入。

Building Modular Cloud Apps with OSGi By: Bert Ertman,Paul Bakker

2時半からヒルトンのグッズショップで販売、先着3名にはあげるよ! とセッション内で言ってたんですが、社蓄なので、持運びが便利なので、Koboで買いました。
紙版より400円引き(1000円)⇒クーポンで50%オフ(500円)⇒残りはスーパーセールでごっそりたまったポイントで決済。
ということで、期間限定ポイントも捌けて、実質タダでGetしました。クーポンウマー。

なお、
海外から普通にKoboの決済ページに飛ぶと、楽天ポイントが使えない上に、なぜか住所で日本が選べない嫌がらせを受けたので、会社のVPNをつないで日本にいると見せかけるハック発動。

今日試したのは、
I. Introducing Modularity in Java の、
3. Creating the First OSGi Application の Runnning the Codeまで。
とりあえず、一個の自作Bundle + Apache Felix上のいくつかのBundleを組み合わせて、とりあえず動かす、Hello World的なレベルまでです。

大して難しいことはやっていなくて、本のとおりたんたんと進めて言っただけです。
(特につまりはしなかったんだけど、特にキャプチャとかあるわけでないので、時々操作がこれでいいのか不安になることあり)

f:id:taichiw:20130925150248p:plain
Bndtoolsで最初の雛形を作ったところ

f:id:taichiw:20130925150250p:plain
Agenda Interfaceを作成。Drag & DropでExport Packagesとして追加

f:id:taichiw:20130925150253p:plain
Apache Felixからダウンロードしたバンドルを、ローカルリポジトリに追加

f:id:taichiw:20130925150255p:plain
動いた、、、らしい。

f:id:taichiw:20130925150730p:plain
緑色の「+」が、ExportしているInterfaceですよ ってのをあらわしているそう。
プレゼンのデモでは、この「+」を含んでいるプロジェクトが10個くらいワークスペースに並んでいました。

とりあえず今日わかったのは、

  • Bndtoolsを使うときは、1workspace = 1アプリになるので、新しいワークスペースを用意する
  • プロジェクト外のほかのBundleからはInterfaceのみが見えていて、実装クラスは不可視

ということくらい。。。

疑問なのは、

  • コンポーネントを全部ばらばらのプロジェクトにしていったら、ビルド地獄になるんじゃ(なので、自分でビルドするんじゃなくてApache ACEを使うのかな)
  • コンポーネントを全部ばらばらのプロジェクトにしていったら、ソース管理ツール上でリポジトリ地獄になるんじゃ(もしかしたら1ディレクトリにまとめて、1リポジトリとして突っ込む?)
  • 結局IFが変わっちゃったら組み合わせられなくなるから最初のIF設計の大変さは変わらず?

ということでした。
この辺は実際のサービスで使ってみないことにはわからんかも…。

せっかく本を買ったので、余裕があったら続きをまたやってみます。