Revision 4 as of 2010-09-28 07:39:51

Clear message
Locked History Actions

roboguice

roboguice

リンク

roboguice - Google Guice on Android

概要

要するに、Guiceをandroid上で便利に利用するためのサポートライブラリ。 特にこれがなければandroidでGuiceできないというわけではないが、あった方が全然便利。

※ただし、もともとguiceのAOP機能はandroidのような実行のバイトコード生成をサポートしていないプラットフォームでは使用できないことに注意。 http://code.google.com/p/google-guice/downloads/listのダウンロードリストにも、AOP無しバージョンについてわざわざ「Suitable for android」と注意書きしている。

素人による翻訳

※以下は素人による翻訳です。

トップページ

原文:roboguice - Google Guice on Android

RoboguiceはAndroidの開発における欠点をいくつかの欠点を解消して、物事を簡単にし、楽しくする。 getIntent().getExtra()したときにいつもnullチェックを忘れないだろうか?RoboGuiceはこれをやってくれる。 findViewById()をTextViewにキャストするのは不要と思わないだろうか?RoboGuiceはこれをやってくれる。

RoboGuiceは開発における推測を行う。もはや、bindService()を用いてユーザサービスを取得する必要はなく、getSystemService()を用いてシステムサービスを取得すればよいのだ(訳注:???)。 View, Serviceあるいはいかなるオブジェクトであってもそれを注入してくれ、RoboGuiceに詳細を任せることができる。

RoboGuiceはアプリケーションコードをスリム化する。 短いコードはバグの出現率も低い。 それに追跡しやすくなる。 もはや、androidぷらっとフォームのメカニックスが散らばったコードではなく、アプリ特有のロジックにフォーカスすればよいのだ。

マジックなどない。これらすべてはあなた自身がRoboGuiceを使って明示的に構成あるいはオーバライドする必要がある。

RoboGuiceアプリケーションはAndroidマーケットに過去数カ月に渡ってフィーチャーされてきた。 これはGoogle Guiceライブラリを利用して単純な依存性注入を、モバイルアプリケーション用に軽く行うものである。

きちんと動き、人々に使われている。Why not give it a spin?

簡単な例

※原文:http://code.google.com/p/roboguice/wiki/SimpleExample

RoboGuiceはandroidに単純で容易な依存性注入をもたらすフレームワークであり、Guiceを使用している。 もし今までにSpringやGuiceを使ったことがあるなら、既にこのスタイルのプログラミングがいかに便利であるかを実感しているだろう。

以下の簡単な例をみてみよう。これは典型的なAndroidアクティビティだ。

class AndroidWay extends Activity { 
    TextView name; 
    ImageView thumbnail; 
    LocationManager loc; 
    Drawable icon; 
    String myName; 

    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        name      = (TextView) findViewById(R.id.name); 
        thumbnail = (ImageView) findViewById(R.id.thumbnail); 
        loc       = (LocationManager) getSystemService(Activity.LOCATION_SERVICE); 
        icon      = getResources().getDrawable(R.drawable.icon); 
        myName    = getString(R.string.app_name); 
        name.setText( "Hello, " + myName ); 
    } 
} 

この例は18行からなるコードである。 onCreate()を見てみると、5行ものボイラープレート初期化を行って、たった一つのname.setText()という目的にたどりついていることがわかる。 複雑なアクティビティはもっと多くのこの手のコードが必要になる。

RoboGuiceを使った次のコードを比較してみよう。

class RoboWay extends GuiceActivity { 
    @InjectView(R.id.name)             TextView name; 
    @InjectView(R.id.thumbnail)        ImageView thumbnail; 
    @InjectResource(R.drawable.icon)   Drawable icon; 
    @InjectResource(R.string.app_name) String myName; 
    @Inject                            LocationManager loc; 

    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        name.setText( "Hello, " + myName ); 
    } 
} 

この例では、onCreate()はとても読むのが簡単になっている。 プラットフォームボイラープレートはすべて取り除かれ、君自身のビジネスロジックのみに集中している。 SystemServiceは必要かい?一つ注入しよう。 ViewやResouceは必要かい?それらも注入しよう。RoboGuiceにその詳細を任せよう。

RoboGuiceのゴールは、君自身のコードを作成してもらうことだ。Androidにおいてメンテナンスが必要なすべての初期化やライフサイクルコードではなく。

インストレーションページにいって、君の最初のRoboGuiceアプリケーションの構成方法の詳細を見てみよう。

追加の例)

RoboGuiceの使用法マニュアルは、まだまだすべき姿になっていないのだが、君が開始するために必要なサンプルを提供している。 RoboGuiceで何ができるかを知りたいのであれば、samplesディレクトリ中のAstroboy exampleを参照してほしい。