SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「IBM Japan Geeks」勉強会レポート(AD)

IBMのとがった人たち ~ 「IBM Japan Geeks」
勉強会レポート(前編)

「Scala」と「Android」

  • このエントリーをはてなブックマークに追加

Activity

 Activityとは、画面(UI)を持つアプリの基本構成要素で、Javaで言うアプレットのようなもの。携帯の壁紙を設定するなどのたくさんの機能があらかじめ用意されている。またActivityのライフサイクルはシステムが管理するようになっている。これは、電話の受信やアラームのオン、アラートなどを割り込ませる必要があるためだ。加えて、バッテリーを重要視した設計を行っているため、大切な情報はコールバックにて退避できるようにする必要もあるとした。

 小山氏は、ここでHello World!を表示するサンプルコードを提示した。しかし、Hello World!の文字列はどこにも見当たらない。Androidアプリケーションのディレクトリ構造は固定となっており、src配下にあるR.javaは自動的に作成される、識別子の集合を持つクラスだ。プログラムのリソースは「res」ディレクトリ内にあり、ここにはさらにActivityの画面設計を担当する「layout」、イメージなどが置かれる「drawable」、可読リソースやメッセージなどを格納する「values」がある。

Hello World!を表示するサンプルプログラム
Hello World!を表示するサンプルプログラム

 先に挙げたHello World!の文字列は「layout」にあるxmlファイルにて設定していたことになる。これらのリソースファイルやXMLファイルのタグは、自動生成クラスのR.javaから直接参照できるようになっている。なお、「AndroidManifest.xml」は、アプリケーション名やアイコンの登録、セキュリティ上の許可を記述するファイルだが、最初は自動的に生成される。

 着信などの割り込み処理に対応するため、Activityのライフサイクルには注意が必要であると説明した。このうちアプリ(再)スタート地点である「onCreate」、アプリが画面から消える時に呼ばれ必要なデータを保存する「onPause」、Activityが殺される前に状態保存を行うために呼ばれる「onSaveInstanceState」が大切だとした。Activityについてはこのほか、Layout(コンテナ)とView(コンポーネント)の関係や、Animationなどについて解説を行った。

Intent

 第二の構成要素であるIntentとは、Activity間の(非)同期通信パラメータのこと。Activityは通常1画面のため、次の画面に移るときは別のActivityを実行する必要がある。Intentには実行ActivityのClassインスタンス、またはアクションとURIの指定を行い、実行先Activityへのパラメータを保持できるとした。ここで小山氏は、Intentの使用例としてURLを指定したWebサイトの閲覧やGoogleマップの表示デモを行った。

Googleマップの表示デモ
Googleマップの表示デモ

Service

 第三の構成要素Serviceは、画面がなく独立した常駐型プロセスのこと。Inter Poccess Communicationという分散オブジェクト指向により異なるプロセスのオブジェクト間でメソッド呼出が直接実行できるよう設計されているとした。

Content Provider

 最後の構成要素Content Providerは、システムデータストレージへのアクセスを提供するもの。電話帳やSDカード内のMP3ファイルなどのデータはすべてデータベースで管理しており、これらのデータにURI形式でアクセスできるようになっている。

Androidのサンプルアプリケーション

 と、ここまで解説を行った時点で発表の制限時間を超えてしまった小山氏。しかし、残り時間を少々延長し、発表の1時間前に完成したばかりというアプリケーションのデモを披露した。発表したアプリケーションは、これまで解説したServiceやContent Providerといった特徴をおさえたMP3プレイヤーで、SDカード内のMP3ファイルを再生するというもの。

発表の1時間前に完成したサンプルアプリケーション
発表の1時間前に完成したサンプルアプリケーション

 Androidでは、SDカードが挿入されたことを確認すると、MediaScannerというプログラムが自動的に起動し、すべてDBに自動的に登録する。プログラマは、Content Providerを用意してアクセスするだけでよい。他のプラットフォームであればこうした処理はデータの種類ごとにアクセス方法が異なるが、URIの種類と使い方さえ覚えれば、どんなデータも同じように扱えることが素晴らしいと説明した。

 デモでは無事にMP3ファイルの楽曲を再生できた。Serviceとして実行しているので、Activityを閉じてほかの画面になっても演奏を続けていた。ほかにもServiceサービス実行中であることを明示したり、Serviceの一覧を表示したりできるNotification機能も実装していた。

作り手も楽しめる携帯プラットフォーム「Android」

 途中何度も伊尾木氏から発表時間超過のアラートに割り込まれながらも、その都度コールバックしてデモのプログラムまで発表した小山氏。Androidは非常に高レベルな携帯プラットフォームであるとし、「作っていて楽しいので、実機が出る前に試しておいても損はないです」と太鼓判をおしてプレゼンを終了した。

次回

 各プレゼンターの熱い思いが伝わる「IBM Japan Geeks」。後半では、根本和郎氏による「Google基盤について」と津田嘉孝氏による「オブジェクト指向とカリー化」のプレゼンの模様を紹介します。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
「IBM Japan Geeks」勉強会レポート連載記事一覧
この記事の著者

森 英信(モリ ヒデノブ)

就職情報誌やMac雑誌の編集業務、モバイルコンテンツ制作会社勤務を経て、2005年に編集プロダクション業務やWebシステム開発事業を展開する会社・アンジーを創業。編集プロダクション業務においては、IT・HR関連の事例取材に加え、英語での海外スタートアップ取材などを手がける。独自開発のAI文字起こし・...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2950 2008/09/05 11:46

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング