トップスポーツチームの監督に教わる秘訣
この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。
作者 Scott Delap, 翻訳者 編集部 投稿日 2007年11月14日 午前2時2分
先日GoogleがAndroid SDKをリリースした(source)。このリリースは最近のOpen Handset Alliance(source)の発表の後を追うものとなっている。SunのCEOであるJonathan Schwartz氏はこの発表の後にOHAとそのJavaサポートを称賛した(source)。しかしながらAndroidの観点におけるJavaの詳細は、今日に至るまで未だ漠然としたままである。Androidはそのハードウェアアブストラクションレイヤー用の基盤としてLinux2.6を使用し、ドライバ、メモリマネジメント、ネットワーク等のサポートを提供する。このレイヤーの上にはOpenGL、フォント、メディアコーデック、SQL Lite、またブラウザ表示用のWebKitのような機能のために、C/C++で記述されたネイティブライブラリ一式が備わっている。興味深い詳細は、そのスタック上の次なるレイヤーとDalvik VMの中にあるのである。
Java SEかもしくはJava MEのフルバージョンを提供する代わりに、Googleは2方向に分岐している。一つ目はコアJavaパッケージの限定サブセットが提供されていることである(source)。一般的に使用されているjava.nio、java.lang、java utilのようなパッケージが含まれている。Apache HttpClientはAndroid特定ライブラリに加えてまとめられたいくつかのオープンソースプロジェクト中の一つである。しかしながらJMEクラスと従来のJava UI関連のパッケージであるSwingとAWTが顕著に欠如している。このルートを辿ることによって、AndoroidはJavaをその開発言語とするがフルのJDKをサポートしないもう一つのグーグルプロジェクトGWT(source)と同じ轍を踏んでいる。
AndroidはJavaの変則型の言語で記述されたアプリケーションを稼働するのにカスタムVMを使用する。
全てのAndroidアプリケーションは、自身のDalvikバーチャルマシーンのインスタンスを用いてそれ自体のプロセス内で動作する。Dalvikはデバイスが複数のVMを効率的に動作できるように記述されている。Dalvik VMは最小限のmemory footprintに最適化されたDalvik Executable(.dex)フォーマット内でファイルを実行する。またVMはレジスタベースで、含有された”dx”ツールによって.dexフォー マットに変換されたJavaランゲージコンパイラによってコンパイルされたクラスを稼働させる。Dalvik VMはスレディングや低レベルメモリマネジメントのような根本的な機能に関してはLinux kernelに依存している。
Dalvikは制限のあるバッテリーとCPUコンディションの下で動作させるという点において、モバイル装置に適している。Apache V.P.、Java Community Process Geir Magnussonは、DalvikがApache Harmonyクラスリブを使用することを記載している(source)。またAndroid SDKはApache Software Licenseの下でライセンスされている。GPLv2を使用するのに比較してこの決断はArs Technicaによって徹底的に保護されている(source)。

上記の図はAndroidのスタックである。ブルーのアイテムはJavaのAndroidサブセットで記述されている。これにはリソースマネジメントや ウィンドウなのどのアプリケーションフレームワークサービスが含まれている。中核のAndroid Phone、Browser、Contactアプリケーションもまた同様にJavaで記載されていてDalvik VMの下で動作する。
Android SDKは現在Windows XPかもしくはそれ以上、またOS X 10.4.8+とLinuxをサポートしている(source)。JDK 5か6もまた必要である。一方EclipseはEclipse 3.2+プラグインを必要とせず、デバッグツールとエミュレータと共に提供されている。
デベロッパたちから得られた早期のSDKに関するレビューにはいろいろな意見が盛り込まれていた。Java Liteの使用は厄介であるという意見もあった(source)。
・・・私の意見としてはこれには少しがっかりさせられました。現在のJavaのプロファイルに同調していないのは残念なデザインチョイスです。またそれによってAndroidはそれ以外のものと互換性がなくなってしまうのです。私の見解としてはそれは不必要なことだと思うのです。それに加えてAndroidはフルJava、J2MEと他のいろいろなオープンソースプロジェクトからの機能をたくさん重複しているように思えます。それぞれのケー スにその理由がある事は確実なのですが、全体的な結果としてはいろいろな車輪の再発明のように見えるのです。Android APIが既存のものより大幅に速く、より柔軟で実用的 等々であるというのは疑わしいです。
Ryan Block氏は概してJavaを問うている。
私はJavaをそのアプリケーションレイヤ環境として使用したAndroidに落胆した人は私だけではないでしょう。Androidは平均的なJava 実行環境よりもはるかに最適化されたフレームワークであり、中核のOSにネイティブでコードされたものと同様にモバイルマルチタスクJava VMアプリケーション環境は絶対に稼働しないのです。これは スワイプ、タップ、タッチ等の動作がiPhone/iPodタッチで設定された基準より粗雑で、ビジュアル的に満足度のより低い体験を意味するのです。
Ed Burnette氏(source)はレイヤーの中のスタックに価値を見出している。
これはデベロッパたちにとって良い知らせであります。なぜなら例えばARM用に1バージョン、×86用にもう一つのバージョンといったように異なるアーキテクチャごとにプログラムを再コンパイルする必要がなくなるからです。またそれは電話の中に導入可能なハードウェアに多大な柔軟性をもたらし、生産者側にも利点をもたらすのです。既存のアプリケーションを壊す必要なく、新たなタイプのプロセッサを使うことができるのです。原文はこちらです:http://www.infoq.com/news/2007/11/android-java
InfoQ Japanはコンポーネントスクエアが運営しています
【無償】「Google Apps 企業向けソリューションセミナー」のご案内
12/5 CSQ会員限定技術情報交換会にてJCP議長が標準化について語る
この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。
Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。
マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。
Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。
筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。
エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。
この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。
No comments
返信