Ruboto: Ruby on Android

柔軟なスクリプトを使用して Dalvik 仮想マシンを扱う

Ruby スクリプト言語と Google のカスタム・フォーマットという 2 つの異なる技術を、共通の言語で連携させることにより、Android プログラムを作成することができます。また、JRuby プロジェクトと Android プロジェクトの堅牢なツールキットのおかげで、通常の Android プログラムとは大幅に動作の異なる Ruby スクリプトを作成、実行することができます。

Chris King, Software Engineer, Freelance

Photo of Chris KingChris King はモバイル開発を専門とするソフトウェア技術者です。彼は『Advanced BlackBerry Development』、『Advanced BlackBerry 6 Development』、『Android in Action, Second Edition』の著者です。



2011年 3月 22日

はじめに

今日行われているソフトウェア開発のなかでも興味深い開発作業のほとんどは、巨大なクラウド・サーバーか小型のモバイル機器のいずれかを対象としたものです。この対極にある 2 つの開発分野では大きく異なる問題を解決することになるため、使用されるツールも異なります。サーバー開発では多くの場合、スクリプト言語を使用してさまざまなコンポーネントを結合し、高度な自動タスクを実現します。一方、モバイル開発では、特定の機器やユーザーが持つ具体的な機能やニーズに焦点を当てます。

しかしこの 2 つのソフトウェア開発分野では、Java™ という共通の言語を使用します。Android フレームワークであれ、Spring フレームワークであれ、今日最もよく使われる技術の多くは、世界中で幅広く理解され、サポートされている言語を採用しています。この共通の言語により、まったく異なると考えられがちな分野を驚くような形で連携させることができます。Java プログラミングによって、プラットフォームにまたがる数多くの選択肢が生まれます。例えば、サーバー・コードを手軽に Android 機器にポーティングしたり、既存のコンポーネントからプラットフォーム固有の機能を利用したりすることができます。

この記事では、スクリプト言語と Android とのギャップを埋めるプロジェクトである Ruboto について説明します。そして Ruby と Android についての概要、Dalvik 仮想マシンで Ruby と Android を組み合わせて使用する方法、独自のスクリプトをビルドしてデプロイする方法、またこの Ruboto という技術によってどの程度プログラマーの生産性とアプリケーションの柔軟性を向上させられる可能性があるかを説明します。


Ruby についての予備知識

多くのスクリプト言語がプログラマーの支持を得ようと競っていますが、Ruby は現在、強力な立場を保持しています。最も有名な事実として、Ruby は Rails Web フレームワークをサポートしています。しかし多くの開発者は Ruby が簡潔さとスマートさを兼ね備えていることについても称賛しています。ダック・タイピング、メタプログラミングなど、多くの最新機能を備えたオブジェクト指向のスクリプト言語として、Ruby は複雑なアーキテクチャーをサポートできるだけの堅牢さと、即席で作成したタスクを実行できるだけの手軽さもあります。

Ruby にはいくつかの種類があり、よく使われている JRuby もその 1 つです。JRuby は完全な Ruby インタープリターであり、Java 言語で作成されているため JVM (Java 仮想マシン) で実行可能です。公式な Ruby とは異なり、JRuby では Java コードの中から Ruby スクリプトを呼び出すことができ、また Ruby スクリプトの中から Java API を呼び出すこともできます。


Android についての予備知識

Android は Open Handset Alliance によって開発されたものですが、ほとんどの場合 Google で開発されたプロジェクトと思われています。今日、Android は新しいスマートフォン全体の約 1/4 に採用され、市場シェアも拡大を続けています。

Android の内部では、Linux カーネルに変更を加えたものがベースとなっており、その上で Android が実行されています。ほとんどのアプリケーションは Dalvik 仮想マシン (VM) 内で実行されます。Dalvik は Google がゼロから設計したカスタム VM であり、モバイル機器のパフォーマンスを最適化するように設計されています。Dalvik についての詳細は「参考文献」を参照してください。

新たに Android を扱い始める開発者が残念に思う 1 つの点として、彼らが作成する Java ソース・コードは Java バイトコードとしては実行されません。Java バイトコードは Android ツールキットによって Dalvik バイトコードに変換されます。これらの変換されたファイル (拡張子は .dex) は、機器にデプロイされるアプリケーションの中にパッケージ化されます。その機器が皆さんのプログラムを実行するときには、Java バイトコードは残っていません。


Android + Ruby = Ruboto

JRuby 開発チームのメンバーである Charles Nutter 氏は、あることに気が付きました。Android のツールチェーンはコンパイル済みの Java コードを Dalvik ファイルに変換することができます。そして JRuby には Ruby インタープリターがコンパイル済みの Java バイトコードとして実装されています。ということは、Android で Ruby を実行することができるはずです。彼はこのことに気付き、それを驚くほど短期間で実用的な形にしたのが、Ruboto です。他の開発者達の協力によって、Ruboto は活発なプロジェクトとなり、次第に Android 開発者や Ruby 開発者の注目を集めるようになっています。

現在、Ruboto には ruboto-irb と ruboto-core という 2 種類があります。ruboto-irb は対話型の Ruby シェルであり、Android 上で実行されます。ruboto-irb プロジェクトにより、任意の Ruby スクリプトを実行することができ、その Ruby スクリプトによって Android API にアクセスすることもできます。このツールは機器上でテストをしたり、タスクを実行したりする場合には非常に便利かもしれませんが、後でユーザーに配布するアプリケーションを作成するには、おそらくあまり適していません。

対照的に、ruboto-core は独自の Ruboto プロジェクトを作成するためのフレームワークとして使用することができます。ruboto-core を使用すると、強力で柔軟なスクリプト機能をプロジェクトに追加することができ、その一方で Android API にアクセスできることに変わりはありません。図 1 は ruboto-core のビルド・プロセスを示しており、自動生成された Java ソース・ファイルとカスタム作成された Ruby スクリプトが Android APK の中に一緒にパッケージ化され、機器上で実行されます。

図 1. Ruboto アプリケーションを作成する
Ruboto による Java ファイルの生成から APK が作成されるまでのフローを示すフローチャート

この記事のこれから先では、Ruboto ベースのカスタム・プロジェクトを作成する方法に焦点を当てて説明します。Ruboto はリリースされてからまだ日の浅いソフトウェアです。この記事の執筆時点で Ruboto のバージョン番号は 0.0.2 です。Ruboto は急速に進化を続けており、皆さんがこの記事を読む頃には動作が少し変わっている可能性があります。これ以降に示すコマンドのいずれかを実行する際に問題が発生した場合には、「参考文献」を参照し、Ruboto と Android についての最新情報を入手してください。


SMS をスクリプト化する

Ruby と Android を組み合わせると、単純なスクリプトを作成して Android の強力な機能にアクセスすることができます。ここではユーザーがデリバリー・サービスを利用してシーフード料理を注文できる Ruboto スクリプトを作成します。この単純なアプリケーションでは、それぞれのプラットフォームの強みを活かします。Android 側では、注文が含まれる SMS メッセージを簡単な方法で作成することができ、アプリケーションは注文を実行する上でサーバーを必要とすることすらありません。Ruby 側では、既存の言語処理ライブラリーを再利用して注文を正規化し、人間が読めるフォーマットにします。


準備

Ruby スクリプトをビルドして Android にデプロイするためには、いくつかのコンポーネントが必要です。それらのコンポーネントのなかで既にインストール済みのものがある場合には、それをそのまま使用することができます。

Android と Ruby は共にマルチプラットフォームであるため、Linux®、Mac OS X、あるいは Windows® 上で Ruboto を実行することができます。この記事では全体をとおしてコマンドラインを使用します。

Windows で cygwin を使用する場合、特定の JRuby コマンドを実行する際に問題が発生するかもしれません。安全を期すために、Windows を実行する場合には Windows に標準の「コマンド プロンプト」を使用するようにします。

Java

開発用ツールとして、実際に動作する JDK (Java Development Kit) が必要です。既に JDK がインストールされているかどうかを調べるためには、以下のコマンドを入力します。

$ javac -version

このコマンドによって JDK のバージョン番号が返されれば、JDK はインストール済みです。バージョン番号が返されない場合には、最新バージョンの JDK を「参考文献」のリンクからインストールします。インストールした後、JDK の bin フォルダーを PATH に追加し、上記のコマンドを再度実行します。

Ant

Android には Android 独自のバージョンの Ant が含まれていますが、Ruboto は Ruboto 独自のスクリプトからも Ant にアクセスできなければなりません。スタンドアロン・バージョンの Ant がインストールされていない場合には、「参考文献」のリンクからダウンロードし、任意のフォルダーに解凍します。この場合も Java と同様に、その Ant の bin フォルダーを PATH に追加し、Ant コマンドを実行できることを確認します。


Android

Android Developers サイトにアクセスし、オペレーティング・システムに対応した Android SDK をインストールします (「参考文献」を参照)。このインストールを終えたら、Android の tools フォルダーの中にある android コマンドを実行します。すると Android SDK and AVD Manager が立ち上がります (図 2)。「Available packages (利用可能なパッケージ)」を選択すると表示されるパッケージのうち、以下のパッケージをインストールする必要があります。

  1. SDK Platform Android 2.2, API 8
  2. Android SDK Tools, revision 8
  3. Android SDK Platform-tools, revision 1
図 2. Android SDK and AVD Manager
利用可能なパッケージがウィンドウに表示されています。

Android SDK and AVD Manager の「Virtual devices (仮想デバイス)」セクションを開き、開発用の Android イメージを作成します。図 3 を参照して「Froyo」という名前の仮想デバイスを作成し、ターゲットを「Android 2.2 - API Level 8」とします。必要な場合には仮想的な SD カードを作成することもできます。

図 3. エミュレーターを作成する
ウィンドウが表示されており、「Name (名前)」フィールドには「Froyo」が、「Target (ターゲット)」フィールドには「Android 2.2 - API Level 8」が、「SD Card (SD カード)」の「Size (サイズ)」フィールドには「1024」が、「Skin (スキン)」の「Built-in (組み込み)」フィールドには「Default (HVGA) (デフォルト (HVGA))」が、そして「Hardware (ハードウェア)」フィールドにはプロパティーおよびその値がそれぞれ指定されています。

Ruboto アプリケーションは機器上で実行されますが、任意のフォルダーに書き込みアクセスできた方が開発ははるかに容易であり、そのためにはエミュレーターまたはルート化した機器を使用する必要があります。この記事のこれから先では、エミュレーターを使用する方法に焦点を絞ります。このプロジェクトが完成すると、このプロジェクトは Android バージョン 2.2 またはそれ以降を実行する Android 機器ならば、どの機器でも同じように適切に動作します。

Android の platform-tools ディレクトリーと tools ディレクトリーを PATH に追加します。すると、リスト 1 のコマンドをプロンプトから実行できるはずです。

リスト 1. プロンプトからコマンドを実行する
$ aapt version
$ adb --version

JRuby

JRuby のインストールは信じられないほど簡単です。単純に http://jruby.org/getting-started にアクセスし、その説明に従います。必要に応じて JRuby の bin フォルダーを PATH に追加します。以下のコマンドを入力し、インストールが成功したことを確認します。

$ jruby -v

Ruboto はセキュアなサーバーでホストされているため、jruby-openssl という gem をインストールして Ruboto をダウンロードする必要があります。そのためには以下のコマンドを実行します。

$ gem install jruby-openssl

また、Ruby で make または ant に相当する、rake もインストールする必要があります。そのためには以下のコマンドを入力します。

$ gem install rake

最後に、Ruboto そのものをインストールします。Ruboto は gem としてパッケージ化されているため、インストールは、以下のコマンドを入力するだけの簡単なものです。

$ gem install ruboto-core

Ruboto を使ってプロジェクトを作成する

Ruboto はゼロの状態から Android プロジェクトを作成してくれます。そのため、常にマニフェストは適切に設定され、スクリプトは適切なコレクションに配置され、また必要なライブラリーにアクセスできるようになります。Android プロジェクトを作成するには、自分で作成しようとしたり、既存の Android プロジェクトを変更しようとしたりするのではなく、Ruboto を使うようにするべきです。

Ruboto を使って Android プロジェクトを作成するには、プロジェクトを作成するフォルダーから以下のコマンドを入力します。

$ ruboto gen app --package us.cirion.ruboto.demo --path fishmonger --name Fishmonger --target android-8 --activity Fishmonger

このコマンドにより、以下の内容が実行されます。

  • gen app は Ruboto に対し、新しい Android プロジェクトをゼロの状態から作成するよう指示します。
  • --package は一意の Android パッケージ名を指定します。
  • --path は Ruboto に対し、プロジェクトの保存先を指示します。これは新しいフォルダー名でなければなりません。
  • --name はユーザーに表示されるアプリケーション名を定義します。この名前は一意である必要はありません。
  • --target は、どの Android バージョンに対してプロジェクトをコンパイルするのかを指定します。この記事の執筆時点では、android-8 を使用する必要があります。オプションの引数 --min_sdk により、このアプリケーションが以前のバージョンの Android で動作することを宣言することができます。ここではこのオプションは指定していません。
  • --activity はオプションの引数であり、新しい Android アクティビティーを生成して初期化するように Ruboto に指示します。

fishmonger ディレクトリーの内容を調べてみてください。Ruboto により、基本的なアクティビティーをビルドして実行するために必要な Android ファイルがすべて自動生成されています。このアプリケーションは SMS メッセージを送信するので、AndroidManifest.xml ファイルを 1 ヶ所変更する必要があります。AndroidManifest.xml ファイルの <manifest> 要素の最初の子として、以下のタグを挿入します。

<uses-permission android:name="android.permission.SEND_SMS" />

このパーミッションを省略すると、スクリプトのビルドとロードは相変わらず可能ですが、このアプリケーションが SMS メッセージを送信しようとするとランタイム・エラーが発生します。


デフォルトのプロジェクトを実行する

何も手を加えていない最初の状態で、Ruboto は 1 つのアクティビティーとスクリプトを生成し、そのアクティビティーとスクリプトは機器またはエミュレーターにインストールされて実行されます。まだエミュレーターが実行状態になっていない場合には、以下のコマンドを使ってエミュレーターを起動します。

$ emulator -avd Froyo

エミュレーターがブート処理を完了してホーム画面が表示されるのを待ちます。Ruboto のすべてのファイルが適切にビルドされてデプロイされるように、cd コマンドでカレント・ディレクトリーを fishmonger ディレクトリーに変更し、以下のコマンドを実行します。

$ rake install

エラーが発生した場合には、このコマンドを再度実行します。場合によるとビルド・プロセスの間に接続がタイムアウトしてしまうことがあります。最初のビルドには少し時間がかかりますが、その後の更新はもっと短時間で行われます。インストールが完了したら、エミュレーターの中で Fishmonger というラベルの付いたアイコンを探します。その Fishmonger を起動し、しばらく待ちます。この記事の執筆時点での Ruboto エンジンはロードに少し時間がかかります。最終的に、図 4 のような画面が表示されるはずです。

図 4. テンプレートとなる Ruboto のアクティビティー
エミュレーターが表示されており、ウィンドウが左側に、キーパッドと制御ボタンが右側にあります。

プロジェクトをカスタマイズする

今度は Fishmonger アプリケーションをセットアップしてみましょう。まず、自然言語のサポートを追加します。Ruby には、英語に関する多様な機能を提供する、linguistics という優れた gem があります。この記事の執筆時点で、Ruboto は linguistics ライブラリーのネストされたディレクトリー構造を処理することはできません。そのため、この記事から linguistics の zip ファイルをダウンロードし、その中身を fishmonger\assets\scripts に解凍してください (「ダウンロード」のリンクを参照)。これは単に linguistics gem のディレクトリー構造をフラットにしたものです。将来は linguistics gem を皆さんが作成した ruboto スクリプトにバンドルできるようになるはずです。

スクリプトを作成する

これで、プロジェクトの本体部分を作成する準備が整いました。Ruboto フレームワークが Java コードと Android インフラのすべてを処理してくれるため、皆さんが実装する作業はすべて fishmonger.rb に記述されます。そこで、このファイルのデフォルトの内容を削除し、まずはリスト 2 のテキストを追加します。

リスト 2. 依存関係のスクリプトを作成する
require 'ruboto.rb'
require 'linguistics'
include Linguistics::EN

import "android.telephony.SmsManager"

ruboto_import_widgets :Button, :EditText, :LinearLayout, \
  :RadioGroup, :RadioButton, :TextView

最初の 2 行により、ruboto ライブラリーと linguistics ライブラリーがロードされ、include コマンドによって、このモジュールの中で英語の文法を利用できるようになります。

最初の import 文は JRuby ユーザーにとっておなじみのはずです。この import 文により、別のクラスに対するサポートを追加しています。この場合は実際には Android の Dalvik クラスを使用しており、標準的な Java ライブラリーの一部を使用しているわけではないことに注意してください。Ruboto は実行時にリフレクションを使用してこのクラスをロードし、このクラスを利用できるようにします。

ruboto_import_widgets の動作も同様です。ここでは Android 特有の UI ウィジェットをいくつか追加しています。これらの UI ウィジェットは Android アクティビティーでよく使われるものです。また Ruboto によってコンビニエンス・メソッドが追加されるため、それらのメソッドを使って容易に UI を構成することができます。

次に、このスクリプトの handle_create メソッドを定義します (リスト 3)。

リスト 3. 画面を構成する
$activity.handle_create do |bundle|
  setTitle 'Freddy\'s Fresh Fish'

  setup_content do
    linear_layout :orientation => LinearLayout::VERTICAL do
      text_view :text => "What would you like to order?"
      @group = radio_group do
        radio_button :text => "Tuna", :id => 0
        radio_button :text => "Trout", :id=> 1
        radio_button :text => "Salmon", :id => 2
        radio_button :text => "Crab", :id => 3
        radio_button :text => "Lobster", :id => 4
      end
      @quantity = edit_text :hint => "Quantity"
      button :text => "Place Order"
    end
  end

handle_create はユーザーがアプリケーションを起動すると呼び出されます。Android では、ここで必要なセットアップの処理を行います。標準的な Android アプリケーションでは、通常は XML を使用してレイアウトを定義しますが、Ruboto ではレイアウトをスクリプトで記述します。

この場合も Ruboto の機能を利用して、皆さんが作成したスクリプトと Android とを結合します。Ruby または Android の経験者でなくても、setup_content の中で何が実行されているかは理解できるはずです。ここでは縦方向のレイアウトを作成しており、いくつかのウィジェットを互いに積み重ねています。このレイアウトには、テキスト、注文する魚の種類を選択するためのラジオ・ボタン、数量を入力するための編集可能なテキスト・フィールド、そして注文を実行するためのボタンが含まれています。ウィジェットを構成するためには、通常 Android に使用される冗長な Java 構文の代わりに、Ruby の構文を使用することができます。

radio_buttonid 属性を設定する作業は少し面倒ですが、id 属性を設定しておくと、どのボタンが選択されたかを後で容易に参照することができます。

ユーザーがラジオ・ボタンと編集可能なテキスト・フィールドに対して行う操作はすべて、Android によって自動的に処理されます。あとは「Place Order (注文を実行)」ボタンの処理を定義するのみです (リスト 4)。

リスト 4. 注文を実行する
  handle_click do |view|
    if view.text == "Place Order"
      count = @quantity.text
      food = @group.child_at(@group.checked_radio_button_id).\
        text.downcase
      order = Linguistics::EN::plural(food,count)
      SmsManager.default.send_text_message("4155551234", \
        nil, "Please send #{count} #{order}", nil, nil)
      finish
    end
  end
end

これまでに Android アプリケーションを作成した経験のある人であれば、ここでは通常とは異なるやり方で選択項目の処理をしていることに気付くと思います。Android 開発を行う人は、選択可能な各項目に対して一意のクリック・ハンドラーを作成しがちです。しかし Ruboto ではアクティビティーに対するグローバルなクリック・ハンドラーを容易に作成することができ、そのハンドラーの中で、ユーザーがどの項目をクリックしたのかを検証することができます。

ここではユーザーが選択した魚の数と種類を抽出します。ラジオ・ボタンをチェックしなかった場合には、Ruboto によってランタイム・エラーが内部でグレースフルに処理されます。チェックした場合には、ラジオ・ボタンのテキストを linguistics ライブラリーに渡し、適切な名詞を生成するように要求します。linguistics ライブラリーは複数形に対する多様なルールを処理できるため、生成される値は 1 salmon2 salmon1 crab2 crabs などのようになります。linguistics ライブラリーは文字で表現された数値も認識できるため、one lobsterthree lobsters のような語句も生成することができます。この動作を 1 行のコードで実現できるのは驚くべきことであり、既存のスクリプトを活用してアプリケーションに容易に機能を追加できる強力さを示しています。

同様に、SMS メッセージを送信するには Android のコンビニエンス・メソッドを 1 行のコードで呼び出すだけの話です。Ruboto では、このメソッドを Ruby スタイルの構文を使用して呼び出すことができます (同じことを Java コードで表現すれば SmsManager.getDefault().sendTextMessage() のようになります)。ここでは、受信者の電話番号と送信テキストを渡しており、オプション・パラメーターとしては nil を渡しています。実際の機器上で実行している場合で、実際に SMS メッセージを送信したい場合には、有効な電話番号で置き換えます。エミュレーターでテストしたい場合には、エミュレーターのポート番号 (「5554」など) で置き換えることができます。

スクリプトを実行する

Ruboto の最も強力な側面の 1 つとして、更新されたスクリプトを単純にロードするだけで機能を変更することができます。このアプリケーションの実行内容を完全に変更したとしても、アプリケーションをビルドし直したり APK をリロードしたりする必要はありません。コマンドラインに以下のコマンドを入力するだけでよいのです。

$ rake update_scripts

このコマンドにより、linguistics スクリプトと新しい fishmonger スクリプトがエミュレーターまたは接続されている機器にコピーされます。アプリケーションを再度起動すると、図 5 のような新しい画面が表示されます。

図 5. Android による注文ページ
画面には注文の選択肢として Tuna (鮪)、Crab (蟹)、Trout (鱒)、Salmon (鮭)、Lobster (ロブスター) が表示されており、また数量と注文実行用のボタンも表示されています。

ルート化されていない機器を実行している場合、あるいは Java ファイルまたは Android マニフェストに何らかの変更を加える場合には、rake インストール・コマンドを再度入力して更新をロードします。ルート化されていない機器の場合でも、オンザフライでスクリプトを更新できることに注意してください。例えば、実行時に新しいスクリプトをインターネットからダウンロードしたり、新しいスクリプトを生成したりすることができます。ファームウェアの制約を受けるのは USB 接続でファイルを移動する場合のみです。

ぜひ、このアプリケーションを試してみてください。有効な選択を行い、注文ボタンを押すと、画面は自動的に閉じられます。有効な受信者アドレスを使用した場合には、そのメッセージがすぐに受信者に表示されるはずです。図 6 は非常に多忙な fishmonger が受信した最新の注文の一覧を示しています。

図 6. Ruboto スクリプトによって標準化された注文
画面には 4 つの異なる注文が表示されています。

まとめ

Ruboto はまだリリースされてから日が浅いですが、現在の状態でも Android ソフトウェアを作成、配布するための非常に便利で柔軟な方法として活用することができます。Ruboto が成功しているのは JRuby と Android の強力さのおかげです。JRuby では、完全な Ruby インタープリターを Java 言語で作成するという大変な作業が既に完了しており、Android の Dalvik ツールチェーンでは、標準的な Java バイトコードからカスタムの Dalvik バイトコードへの変換が見事に行われています。

この記事で説明したように、Ruboto スクリプトは非常に簡潔でありながら、Ruby と Android 両方の強力な機能を兼ね備えています。Ruby スクリプト、Ruby 構文と Java 構文、そして Android API を自由に組み合わせられることで、さまざまな選択肢がもたらされ、それによって生産性を高めることができます。

Ruboto は、クライアント・サイドの開発者とサーバー・サイドの開発者を結びつける強力な手段です。Android 開発者にとって、Ruboto のリフレクション機能は非常にありがたい機能であり、この機能を利用してアプリケーションの機能をオンザフライで大幅に更新することができます。Ruby 開発者は、ほとんど苦労なくスクリプトの専門知識をモバイル・プラットフォームに活用することができ、また既存の Ruby コードを活用して新しいアプリケーションを作成することができます。Android 開発者も Ruby 開発者も、この Ruboto プロジェクトが成熟していく様子を大きな関心を持って見守っています。


ダウンロード

内容ファイル名サイズ
Article source codefishmonger.zip65KB
Article source codelinguistics-rb.zip34KB

参考文献

学ぶために

  • JRuby について学んでください。
  • Google I/O セッションの動画には、Dalvik VM と Dalvik バイトコードに関する優れた解説が提供されています。
  • ruboto-core プロジェクトの情報にアクセスしてください。
  • 対話型の Ruby インタープリターを提供する姉妹プロジェクト、ruboto-irb について学んでください。
  • Ruby on Android に対する別の方法として、Mirah と Garrett について調べてみてください。MirahGarrett は実行時に Ruby スクリプトを解釈するのではなく、Ruby スクリプトを Java 言語に (従って Dalvik に) コンパイルします。この方法により、実行は高速になりますが、メタプログラミングによって実行時に柔軟性を持たせることはできません。
  • Android 開発入門」(developerWorks、2009年5月) は Android プラットフォームを紹介し、基本的な Android アプリケーションのコーディング方法を説明しています。
  • Android によるネットワーキング」(developerWorks、2009年6月) は Android のネットワーク機能を解説しています。
  • Android で XML を扱う」(developerWorks、2009年6月) は、Android で XML を扱うためのさまざまな方法について、またそれらの方法を使って独自の Android アプリケーションを作成する方法について説明しています。
  • Under the Hood of Native Web Apps for Android」を読み、Android でハイブリッド・アプリケーションを作成する方法を学んでください。
  • O'Reilly Media 刊行で Brian Fling 著による『Mobile Design and Development』では、モバイル製品を構築するための実用的なガイドライン、標準、手法、ベスト・プラクティスが解説されています。
  • Android SDK のドキュメントを入手してください。
  • Open Handset Alliance は Android のスポンサーです。
  • developerWorks の Web Development ゾーンには、Web ベースのさまざまなソリューションを解説した記事が豊富に用意されています。

製品や技術を入手するために

  • Android 開発者の公式サイトから Android SDK をダウンロードし、API の資料にアクセスし、そして Android の最新ニュースを入手してください。バージョン 1.5 またはそれ以降であれば構いません。
  • Android はオープンソースです。つまり Android Open Source Project から Android のソース・コードを入手することができます。
  • JDK 6 Update 21 を入手してください。
  • Ant をダウンロードしてください。
  • 皆さんの次期開発プロジェクトを IBM ソフトウェアの試用版で革新してください。ダウンロードまたは DVD で入手することができます。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Web development
ArticleID=647228
ArticleTitle=Ruboto: Ruby on Android
publish-date=03222011