がぶちゃんの日記

札幌からフルリモートCTO

Googleの中の人が作ったAndroidアプリioschedを参考にしよう!(とりあえずビルドまで)

Googleの中の人が作ったGoogle I/O用のAndroidアプリ iosched がオープンソースで公開されているのですが、Androidアプリを開発する時に非常に参考になるので(Table対応したバージョンから難解になったのがネックですが)紹介したいのですが、ビルドするまで少し作業が必要なのでダウンロードしてビルドするところまで手順をメモっておきます。

Mercurialをインストールする

ソースコードのチェックアウトページに行くと

hg clone https://code.google.com/p/iosched/

と書いてあって、svnやgitではなくhgなのでMercurialが必要みたいです。

ということで、brewでさくっと入れようかなーと思ったけど何か嫌な予感(今思えば今回に限ってなんで嫌な予感を感じたか不思議でしょうがないけど)がしてググったらbrewでMercurialを入れるのはメンドそうなので素直にパッケージをインストールしちゃいましょう。

ダウンロードはこちらからMacのバージョンに合ったファイルをダウンロードしてください。

ダウンロードしたzipファイルを解凍して、mpkgファイルをダブルクリックしてインストールしてください。

インストールできたら、ターミナルからhgと入力して以下のように出ればOKです。

$ hg
Mercurial - 分散構成管理ツール

基本コマンド:

 add        指定ファイルの追加登録予約
 annotate   ファイル行毎のリビジョン情報表示
 clone      既存リポジトリの複製
 commit     指定ファイルないし全ての変更内容のリポジトリへの記録
 diff       作業領域全体(ないし指定ファイル)の差分抽出
 export     1つ以上のリビジョンに対するヘッダおよび変更内容の出力
 forget     次回コミットにおける指定ファイルの登録除外
 init       指定されたディレクトリでの新規リポジトリの作成
 log        リポジトリ全体ないしファイルの変更履歴の表示
 merge      作業領域の内容と他のリビジョンのマージ
 pull       指定リポジトリからの変更履歴の取り込み
 push       指定リポジトリへの変更履歴の反映
 remove     次回コミットにおける指定ファイルの登録除外
 serve      独立したウェブサーバの実行開始
 status     作業領域のファイル操作状況の表示
 summary    作業領域状態の概要表示
 update     作業領域の内容更新(ないしリビジョンの切り替え)

全コマンドの一覧は "hg help" で、 コマンド詳細は "hg -v" で表示されます

今回はcloneするだけなので他のコマンドはとりあえず置いておきましょう。

ソースコードをチェックアウトする

適当なディレクトリで

hg clone https://code.google.com/p/iosched/

Eclipseでインポートする

ちょっとその前に確認

もし、最近ADTやAndroid SDKをアップデートしていない人は最新バージョンに上げておきましょう。4.0も出ましたし。

Updating the ADT Plugin でADTをアップデートしたら、

もし、4.0とか3.2とかインストールしていなければ、とりあえず全部入れておきましょう。


インポート

Androidプロジェクトを新規作成

Create project from existing sourceを選択、Project Nameが勝手に変わるのでioschedと入力、Nextボタンをクリック。

Android 3.2を選択して、Finishボタンをクリック。


android-support-v4.jarを追加する

最近のAndroidアプリは同一のソースコード(アプリ)でタブレットでもスマートフォンでも動くようにFragmentという仕組みを使って開発する必要がでてきたり、タブレットに対応する必要がないアプリでも来たるICS(Android 4.0)に備えて(もうSDKは出てますが)Fragmentに慣れておくべきとGoogleの中の人が仰られていたりで、別途、勉強する必要があるのですが、ここで説明しだすと量的に無理があるので今回はとりあえず飛ばして、ビルドするところまでいきましょう。

プロジェクトのlibsディレクトリにandroid-support-v4.jarというライブラリを置いてビルドパスを通す必要があります。

android-support-v4.jarはAndroid SDKのディレクトリのextras/android/compatibility/v4/にありますので、Eclipseのioschedプロジェクトのlibsディレクトリにコピーして、右クリック > Build Path > Add to Build Pathでビルドパスに追加します。

これでコンパイルエラーがだいぶ減るんですが、まだエラーが残ってます。

libGoogleAnalytics.jarを追加する

ioschedはGoogle Analytics SDK for Androidのサンプルコードも含んでいるらしく、そのライブラリが必要です。

http://code.google.com/intl/ja/mobile/analytics/download.html からGoogle Analytics SDK for Androidの GoogleAnalyticsAndroid_1.3.1.zip をダウンロードして、解凍するとlibGoogleAnalytics.jarがあります。

android-support-v4.jarと同様に、libGoogleAnalytics.jarをEclipseのioschedプロジェクトのlibsディレクトリにコピーして、右クリック > Build Path > Add to Build Pathでビルドパスに追加します。

これでコンパイルエラーがなくなりました。

実行する

あとはお手持ちのお好きな端末やエミュレータで実行してみてください。

スマートフォンだと

タブレットだと

こんな感じで、他のScheduleやSessionsなどもUIがスマートフォンとタブレットで変わります。

あとは

ソースコードを読んでみましょう。Googleの中の人が作ったAndroidアプリのソースコードなんて、そうそう読むチャンスなんてないと思うので非常に貴重な経験と多くの発見ができると思います。冒頭でも書きましたがタブレット対応のために難解になったのがアレなんですが・・・
易しい所だと、res/配下のファイルの命名規則なんかは真似すると整理できていいと思います。layoutファイルはactivity_やfragment_やlist_item_などのプレフィックスを付けるとか。drawableの定義の仕方とか。小さな所から真似ていけばいいかなと思います。
ソースコードの方だと、パッケージ設計やクラス設計、継承の使い方とか。ダッシュボードUIの作り方とか。ActionBarの実装とか。

ICS(Android 4.0)でまた色々変わっちゃうとは思うのですがね(ぜぇぜぇ

おまけ

タブレット対応前のシンプルなioschedはどこにいった?

ググったらunderhilllabsさんが古いioschedをがっつりコピーしてgithubに突っ込んでいてくれてたおかげで発見できました。けれど、.svnがそのままコミットされていたりいろいろ残念な感じだったのでforkしてゴミを削除したりapi versionを修正したりしときました。

https://github.com/gabu/iosched2010 からcloneしてください。Android初めてという方は、こっちの方がタブレット対応する前のAndroid 2.1向けのシンプルなioschedとなっておりますのでソースコードも読みやすいかと思います。

ICS(Android 4.0)でどっちみちFragmentは避けて通れないという噂もあるけど(げふんげふん

ではでは!

Androidタブレットアプリ開発ガイド Android SDK 3対応 (Smart Mobile Developer)

Androidタブレットアプリ開発ガイド Android SDK 3対応 (Smart Mobile Developer)