ファイルシステムでHello World
この連載では"ファイルシステムの作り方"をご紹介します。第1回目の今回は簡単なイントロダクションと単純なHello Worldファイルシステムの作り方を説明します。次回以降で詳しい解説と本格的なファイルシステムの作り方をご紹介しようと思います。
作者 Floyd Marinescu, 翻訳者 編集部 投稿日 2007年9月3日 午後11時26分
OSGi は、Java ベースのサービスプラットフォームの仕様であり、長時間実行、動的更新、および実行環境への配布を最小限に抑えることを必要とするシステムでの使用を目的としている。これまでの説明の多くは、ツールベンダ (Eclipse が最初)、およびアプリケーションサーバーベンダ (IBM、BEA、Oracle) による OSGi の採用に関するものだった。これらのベンダは、OSGi を使用してマイクロカーネルやプラグインのアーキテクチャを作成することで、適切なモジュール化と、実行時の動的な組み立てを可能にしている。しかし、今後OSGi が開発者に最も大きな影響を与えるのは、アプリケーション開発のためのより適切なコンポーネントモデルとしての分野だろう。JSR 291 (OSGi のコア仕様 R4.1) では、次のように説明されている。既存の Java SE プラットフォームのコンポーネントライフサイクルを含めた、動的コンポーネントフレームワークを定義します。この動的コンポーネントモデルは、コンポーネントからのアプリケーションの組み立て、コンポーネント間での実装の詳細の隠ぺい、およびこれらのコンポーネントのライフサイクル管理をサポートします。OSGi は、Java 開発にとって、コンポーネント開発を実現する最適なツールとなるであろうか。InfoQ では、OSGi を基盤としてアプリケーションアーキテクチャの次期バージョンを作成することを決定した企業に、なぜ OSGi を選択したのかを聞いた。BPS は、リスク管理ソフトウェアを販売する ISV であり、内部監査、およびコンプライアンス関連のビジネスプロセス (サーベンスオクスリー法 404 条など) に対応しようとする組織を支援している。BPS の製品は、主に、制約が厳しく IT 環境への要求が高い大手金融機関で使用されている。InfoQ は、BPS の チーフアーキテクトである Gavin Terrill 氏に、OSGi を次期アーキテクチャに採用した理由を質問した。Gavin 氏は次のように説明している。
私達は、これまでに何回も、同じ VM の中で 1 つのサービスの複数のバージョンを並行稼動させるにはどうすればよいかという問題に直面してきました。このシナリオはこうです。A および B という 2 つのアプリケーションがあり、それらは私達のアプリケーション C に統合されています。C の最初のデプロイの後、A の次のリリースをサポートする機能が追加されます。ここから問題が始まります。デプロイしたアプリケーションを新しいコードで更新する必要がありますが、サーバーを再起動することは許されません。また、B との不整合が生じることも許されません。OSGi は、ソフトウェアコンポーネント (バンドル) を動的に提供し、バージョンを管理する機能によって、このような問題を解決します。OSGi が、一般的な EAR/WAR ファイルのアプローチよりも優れた選択肢と判断された理由を、Gavin 氏は次のように述べている。
もう 1 つの目的は、コードベースにサービス指向的なアプローチを採用することです。ここで、サービス指向「的」としていることに注意してください。私達は、疎結合、関心の分離、および局所的テストなどの利点は活用したいと思いますが、これらと一緒に、アウトオブプロセス、ala Jini、または DPWS (nee UPnP) の複雑性まで取り入れるつもりはありません。私達の製品構築は、既にこのような考えに従っています。Java のインターフェイスの長所を余すところなく活用し、その実装は Spring Framework の依存性注入の方法を使用してプラグインすることができます。このような方法も、軽量な手法でサービスをよりモジュール化できる OSGi によって、さらに次の段階へと進むことになるでしょう。
既存のメカニズムが本質的に悪いというわけではありません。ただ、EAR/WAR のデプロイはおおざっぱ過ぎて実用に耐えるものではないと感じています。1 つの jar ファイルしか触っていないのに、アプリケーション全体をリロードする必要がなぜあるのでしょうか。BPS は、既に Spring ベースのアプリケーションを作成しているので、アーキテクチャ変更の中で Spring-OSGi を使用する予定である。Spring-OSGi は、最初のマイルストーンが最近リリースされている。
Java アプリケーションのデプロイについては、.jar ファイルの導入から JSR 277/294 に至るまで、Java コミュニティの中でも活発な議論が行われています。Java Module System (JSR 277) は、Java SE 7 と一緒に登場する予定であり、関心が集まってきています。一見すると、これは.Net アセンブリの考えに相当するものとも思えますが、OSGi の Eclipse (およびその他) における実績を考えれば、それ以上のものであることは明らかです。実際の現場で発生する数々のデプロイの問題を解決してきたものに対抗するのは難しいでしょう。
OSGi の設計概念は、私達の要件に合っています。軽量、インプロセス、サービスコンテナフレームワーク、そして完全なライフサイクルサポートです。
OSGi は、組織においてコンポーネント指向ソフトウェア開発を促進するアーキテクチャの資産となることもできる。InfoQ では、昨年11 月に、Piero Campanelli の分析から次のようなメリットがレポートされている。
InfoQ Japanはコンポーネントスクエアが運営しています
F2M&NRI 次世代Eコマースを勝ち抜くソリューション戦略セミナー
この連載では"ファイルシステムの作り方"をご紹介します。第1回目の今回は簡単なイントロダクションと単純なHello Worldファイルシステムの作り方を説明します。次回以降で詳しい解説と本格的なファイルシステムの作り方をご紹介しようと思います。
あなたのチームが、既存アプリケーションを「シングルトンの入れ子」設計から依存性注入(DI)へ移行しようとしているなら、この論文に心引かれるでしょうが、DIへの移行は難しいことが分かっています。論文にはGoogleのJava DIコンテナ(Guice)の名を入れていますが、Javaや.NET、Python、Rubyなどにも当てはまります。
アジャイルの「自己組織化チーム」のパラダイムでは、チームのメンバに新しいスキルが要求されます。この記事では、発展しつつあるチームの自己組織化を壊さずに、新たなスキルを伝えるためのいくつかの戦略を提案します。そして、新しいスキルを身につけるのに役立つ資料のありかを提示しています。
今回の記事では、非同期ワークフローと呼ばれるワークフロー機能の面白い使用法を考察しますが、非同期ワークフローは.NETの非同期プログラミングモデルを単純化することを目的としています。
アーキテクチャは一般に、Word文書に主として見られるような極めて実体のない、ソフトウェアシステムの概念的な側面であるか、または完全に技術によって駆動されるものかのいずれかです。そのどちらも間違っています。では、どう対処すればよいでしょうか? この記事ではアイデアを説明します、そしてアプローチのキーポイントを要約します。
Werner Schuster氏が、簡単な例を示しながら、Javaのようなプロパティをメタプログラミングを使ってRubyに追加する方法を示します。
現在のRIAアーキテクチャにおいて、クライアント/サーバーの通信は重要な位置を占めています。本稿では、James WardとShashank TiwariがアドビによるオープンソースのBlazeDSメッセージングサーバーの世界へ飛び込みます。
ウィルス対策ソフトや情報漏えい防止用のソフトは、いわば影の存在です。ユーザの操作性やGUIを工夫する以上に、いかに目立たない存在となるかにその技術を注ぎ込んでいます。ここでは日立ソフトが開発した「秘文」の事例を紹介します。
No comments
返信