Android勉強会 【前編】

【前編】Android勉強会


この度、社内のAndroid勉強会ワークチームは社員を対象にAndroid勉強会を開催しました。


勉強会は参加者の程の関係で2回行われました。私は1回目に参加しましたので、その内容をレポート形式でお伝えします。


Android勉強会

Android勉強会 AGENDA


説明は以下の順で行われました。


  1.Android解説
    1) Androidの概要
    2) Androidによる開発

  2.サンプルアプリ
    1) サンプルアプリ説明
    2) サンプルアプリ実演

1.Android解説  説明者:OW氏、KB氏


1)Androidの概要・・・Android、あなたは何者だ?!


スマートフォンが普及されるにつれ、テレビや本などでAndroidという単語をよく耳にするようになりました。


私の携帯はauのスマートフォンIS05ですが、発売当時はテレビのコマーシャルでAndroidのいう言葉がよく使われいたように記憶して
います。そのせいかAndroidと聞くとまるで知っているような気になってしまいましたが、Androidって具体的に何を指しているのか良く
わかっていませんでした。


OW氏の説明が始まりました。


Androidとは、OHA(*)により提供されている携帯端末向けオープンソースプラットフォームです。
もともとはモバイル開発ベンチャーのAndroid社がGoogleに買収され、2007年携帯電話用のソフトウェアプラットフォームとして発表されたものです。
 *OHA:Open Handset Alliance2007年11月にGoogle社の呼びかけで設立された、
    携帯電話における共通のソフトウェア基盤の開発・普及を推進する業界団体。


長所としては


 1.Googleが提供しているものなので、Google提供サービス(Gmail、Googleマップ、Youtube等)との親和性が高い。
 2.オープンソースなので独自にカスタマイズできる。
 3.無償OSなので、ライセンス料金がかからない。


なるほど、だから私の携帯の裏にはwith Googleと書いてあるし、携帯の中には検索ツールがGoogleになっていて、GmailやYoutubeのアプリも最初から入っていることも納得ができます。


一方、短所としては


 1.クラウドサービスやネットサービスを中心とするオープンな環境から通信やシステム上の脆弱性を発見し、
   悪用されるリスクがある。
 2.アプリが審査なしに公開できるため、不正なプログラムをしのばせるアプリが流通しやすい。
 3.様々なバージョンが流通している。端末のスペックによってはバージョンアップできない場合がある。


要するに、セキュリティに関してはまだまだ課題が多いということのようです。


Androidで利用できる機能としては、
既存の携帯(スマートフォンでない)でできる機能(カメラ、赤外線によるデータ通信、バーコードリーダ等)はもちろん、
今になっては当たり前なタッチパネルでの操作、デジタルカメラなどのUSB機器に接続できるUSBハードウェアの対応、
近距離無線通信(NFC)技術を利用すると携帯同士で音楽や動画、アプリ、連絡先情報などが交換できる、
そして最近話題になっている顔認識機能や、音声操作等々。


かなり便利な機能が用意されていますね。


ちなみに、スマートフォン所有者は2012年2月時点で約20%を越えていますが、AndroidがスマートフォンOSの60%以上をシェアしているそうです。このことからスマートフォンの普及率とともにAndroidのシェア率も上がって行くことが予測されます。また、今後は携帯だけに限らず、Androidを組み込んだ製品開発も続々と進んでいるそうです。


2) Androidによる開発 


Android概要の説明に続き、今度は開発の話です。 ここからはKB氏が説明を行いました。


まずはAndroidのプラットフォームの紹介です。Androidのプラットフォームは図1のように4層から構成されています。


Androidのプラットフォーム


下の層から説明します。


 【Linuxカーネル層】
  ・OSにあたる部分です。
  ・LinuxカーネルをベースにAndroid用のカーネルモジュールを追加しています。


 【ライブラリ層】
  ・フレームワーク経由で操作するようになっています。
  ・アプリから直接利用されることは基本的にありません。
  ・Android Runtime(実行環境)
    ・Dalvik仮想マシン:Android用の仮想マシンです。
    ・コアライブラリ:Java SE1.6とほぼ互換性を保持しています。


 【アプリケーション・フレームワーク層】
  ・ボタンやテキストボックスなどの標準画面コンポーネント、DBアクセスやハードウェアへのアクセス手段をアプリに提供します。


 【アプリケーション層】
  ・Android端末のユーザー(利用者)が実際に操作するプログラムが属する層です。


Androidを開発するためには以下のツールが必要です。(※Eclipseで開発することを想定しています。)


 【JDK (Java Development Kit)】
  ・AndroidアプリはJava言語で開発を行います。


 【Android SDK (Android Software Development Kit)】
  ・Androidアプリ開発に必要なツールやドキュメントが含まれています。
  ・開発に使用するプラットフォームに合わせる必要があります。


 【Eclipse】
  ・総合開発環境(IDE)ソフトウェアです。


 【ADT(Android Development Tool)】
  ・Eclipse用のプラグインです。
  ・Android用のプロジェクト作成、ビルド、エミュレータを使用したテスト、実行時デバッグをEclipse上で行うことが出来るようにする
   ツールです。


開発ツールが整ったら、次はAndroidのイベント処理についての説明です。
画面に触れた際の主なイベントには以下の3つがあります。


 【クリックイベント】
  ・画像、ボタン、テキストボックスなどをタップした際に発生するイベントです。
   ※タップとは画面を軽くたたく操作のこと。


 【タッチイベント】
  ・画像、ボタン、テキストボックスなどをタッチした際に発生するイベントです。
  ・ボタンに触れる、ボタンから離れる、ボタンに触れたまま移動するなどの情報が取得可能です。


 【マルチタッチイベント】
  ・ピンチイン(指2本で画面を縮める)、ピンチアウト(指2本で画面を広げる)という動作を実現します。


アプリから端末機能へアクセスする仕組みですが、
アプリのアイコンに触れると、アプリのあらゆる情報が記述されている「AndroidManifest.xml」というファイルにて、<uses-permission>タグに使用する機能を宣言し、アプリケーションソースからそれぞれの機能を呼び出して使用しています。


動作確認(テスト)についても説明がありました。


アプリのテストを実施する環境を提供するソフトウェアにエミュレータというものがあります。(図2)


Androidエミュレータ


エミュレータとは仮想端末のことで、端末と同様の機能を実現できるソフトウェアです。このエミュレータを利用することで、スマートフォンではなくPC上でも動作検証ができるわけです。


また、Androidのエミュレータを実行するためには、AVD(Android Virtual Device)を作成する必要があります。


AVDとは、開発したAndroidアプリをエミュレータでテストする際、 必要となるAndroid環境のエミュレータイメージのことです。Androidのバージョンや、画面の解像度、外部ストレージの容量の設定を行います。AVDを作成するのに、上記で説明した「Android SDK」と「ADT(Android Development Tool)」が使用されます。


ちなみに、各メーカーの端末に特化したAVDの作成ができる「SDK AddOn」というものもあります。


実際エミュレータのオペレーションを体験できれば良かったのですが、今回は画像のみでした。


動作確認が終わったら、いよいよAndroid端末にアプリファイルをインストールします。