おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2011年01月17日(Mon) そんなこんなで日本に到着 [長年日記]

後があるので富豪的スカイライナーでさくっと移動。新しい車両には各座席に電源があるよ。すごい。

大江戸線で移動。トートロジー的に理解が難しい路線図 (東京都交通局) でした。乗り換え案内より1本遅れちゃった。

[Android] masuidriveと学ぶ「60分で覚えるAndroidアプリの作り方」 (atnd.org)

というわけで、ぎりぎり遅刻でやってきました。 初めてのAndoirdイベントへの参加です。 空いていた席は最前列の一番右。 もう一つのミッションをこなすためにネットワークが必要だったのですが なかなか見つからず、「:-p」というアクセスポイントを利用させていただいてしまったのが左記の発言でした。どうもありがとうございました。

下記は、masuidriveさんによる講演の、 zundaによるメモからの再現です。誤りなどがあればzundaの責によるものです。 お気軽にご指摘ください。

まずはAndroidの概要から。

一番の特徴はIntent。iOSではopenurlに相当するが、 これは、Intentと違い、制御がいったりきたりすることはない。

Androidアプリケーションの要素:

  • ACtivity
  • Service
  • Intent
  • ContentProvider

米国でのスマートフォン事情。 Androidにはアプリケーションを追加せずに、WebやE-mailのみを使っている人が多い。 いっぽう、iPhoneのユーザーには好きなアプリケーションがあることが多い。 対象Marketの違いだろうか?

Androidアプリケーションを作る時の注意。

  • 画面サイズが違う!
  • ハードウェアのキーボードが付いている端末もある
  • トラックボールのある端末もある
  • マルチタッチのある端末もある
  • 入力IMEが表示されている時の画面のレイアウトが違う
  • CPUの動作周波数が400MHzから1200MHzまでいろいろ
    • スレッド間で同期するときなどに問題になることがある
  • メモリの大きさが違う
  • 通信方法がいろいろ
    • WiFi - IPアドレスがもらえているにも関わらずインターネットには行けない場合への対処が必要。例えば、サーバからの応答にシグネチャを入れておくなどの工夫をする (中島さん)
  • OSのバージョンがいろいろ
    • 必要なAPI levelをできるだけ下げておくことで多くの端末で使ってもらえる

[Android] 「60分で覚えるAndroidアプリの作り方」- Twitterクライアントとの連携をする例

というわけで実例。

Intentの引数をACTION_SENDとして、EXTRA_TEXTに"hello"などとして呼ぶと、twitterに投稿するクライアントが起動するようなものを考える。

明示的なIntentではアプリケーションを決め打ちにできるいっぽう、暗黙のIntentではユーザーがIntentを受けるアプリケーションを選べる。

アクションには、ACTION_CALL、_SYNC、_SEND (共有)、_SET_WALLPAPER、_WEB_SEARCH などがある。アプリケーションから、IntentのAPIが公開されているものもある。

[Android] 「60分で覚えるAndroidアプリの作り方」- ラーメンタイマー

アピリケーション?の種類。ActivityはUIを持っている。 ServiceはUIを持っていないが、例えばホーム画面に戻っても処理を続けることができる。 Serviceは必ずActivityから起動する必要がある。 Serviceクラスを実装して、マニフェストで許可する。

制御の流れ

Activity
Service
bindServiceonCreate↓
onStart↓
ServiceConnectiononBind
setAlarm↓
↓インテントフィルターsetBroadCast
BrodcastReceiver

ServiceはUIを持たないので、 UIを表示する時には必ずActivityに処理を戻す必要がある。 Toastなどの表示でも同じ。

ラーメンタイマーでは、AlarmServiceを使うべき。 マルチスレッドを使っても良いが、ServiceをIntent経由で制御するようにておくと、 他のアプリケーションからでも利用できる。

[Android] 「60分で覚えるAndroidアプリの作り方」- 参考情報

エミュレータは中から見えるメモリの2倍くらいのメモリを消費する。また、常時10%くらいのCPUを使っている印象。

[Android] 「60分で覚えるAndroidアプリの作り方」- LT @yusukeyさんによる「Androidの本当にあった怖い話

資料のリンク先はslideshareです。

Java用Twitter APIライブラリ、Twitter4Jの開発の経験から、 AndroidとJavaの非互換の紹介。

sun.misc.BASE64Encoder()が使えない!Androidではsun.misc.*や com.sun.*は使えない。

XMLのエレメントを文字列にしようとすると、javax.xml.trtansformが使えない! それじゃあ例外をcatchしようとすると、Verify Error! ロードするときにClass not foundではない例外が飛ぶ。

AndoroidのXMLパーサはバグってる! &以降が消えちゃうとか (Froyoでは直っている)。 …XMLを使うのをあきらめて、JSONを使うようにした。

[Android] 「60分で覚えるAndroidアプリの作り方」- LT @ohwadaさんによる「横浜とアンドロイド

資料のリンク先はPDFです。@ohwadaさんによる当日のエントリは「1月17日Androidセミナー

横浜支部の紹介。定例会は50名程度の参加者。会場の大きさで制限されている。

支部でA3「エーキューブ」のアワードを取った人がリードして勉強を進めている。

[Android] 「60分で覚えるAndroidアプリの作り方」- まとめ

というわけで、Androidで楽しんでおられる方々に初めてお会いできた勉強会でした。普通に女性の方々が参加しておられるのも、なんというか、心強いですよね。

勉強会を主催してくださったContents-oneの皆様、ありがとうございました。

@masuidriveさんの講演、本でひととおり知っていることとは言え、やっぱり実演しながら見せていただくと頭に入りますよね。忘れないうちに僕もコーディングを…おや?もうこれを書いてるのは2月も中旬 T_T

LTは制限時間が5分ではなくて8分とか、ドラ娘が居ないとか (←失礼なやつだな〜) ありましたが、同じく楽しませていただきました。

参加者のリストを見て、もしや、と思っていた懐しい方にもお会いできたし、懇親会になってもなかなかお会いできなかったとも様とも結局お会いできて、Google4兄弟夢の共演が実現しました♪とも様はコートの各ポケットにそれぞれAndroid端末をしのばせておられる、とってもステキな方ですよ。そうそう、ステキと言えば、せきとばさんも@himamuraさんのLTも聴かせていただいてたんですね!

みなさま、今後ともよろしくお願いします。次は、一部の方々には、GoogleIO 2011でお会いできるかな?


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>