Android



モバイル事業本部 企画開発部
川平 航介
Androidの時代がやってきた!




Android搭載スマートフォンが増えてきた
日本でも新機種が続々と

                         2
Agenda

 Androidの紹介
 Androidアプリの作り方
 Android Market
 作ってみたアプリの紹介




                  3
自己紹介
川平 航介
モバイル事業本部 企画開発部
◦ モバイルサイトのプラットフォームとか
2009年4月入社
◦ 今年で3年目です
Id: @binzume




                       4
ANDROIDの紹介
       の紹介




             5
Android??
 モバイル向けプラットフォーム

 ◦   Google
 ◦   2007年11月
 ◦   オープンソース → ソース読めます
 ◦   ドロイド君




                         6
バージョンについて
1.6 (Donut)
◦ 音声検索機能
2.1 (Eclair)
◦ 多くの解像度に対応,ライブ壁紙
2.2 (Froyo)
◦ FlashPlayer10使える,高速化
2.3 (Gingerbread)
◦ 高速化,Javaを使わなくても開発可能に

詳しくはWikipediaを…

                         7
Android Market上での統計
 2.2   63.9%
 2.1   27.2%
 1.6   3.5%
 2.3   2.5% (2.3.3含む)




2011/04/01

                        8
日本では…
 とあるアプリの場合
 2.2 39.3%
 2.1 47.8%
 1.6 6.4%
 2.3 6.0%




2011/04/13

             9
アーキテクチャ(1)
Wikipediaより




              10
アーキテクチャ(2)
こんな感じ
         アプリケーション


      アプリケーションフレームワーク

                コア・ライブラリ
      標準ライブラリ     Dalvik VM
                          .


            Linux


  Androidアプリ開発ではこの辺が重要

                              11
標準ライブラリ
OpenGL 3D/2Dグラフィック
SQLite  データベース
Web Kit HTMLの表示
他色々




◦ 今回ライブラリの話はしません

                     12
Dalvik VM
 Androidアプリを実行する仮想マシン
 ◦ 省メモリ
 ◦ Javaで書いたアプリはDalvik用のコードに
   変換して実行する
 ◦ Android 2.2からはJITコンパイルに対応




                               13
ANDROIDアプリの作り方
       アプリの作り方




             14
開発環境
Java
Android SDK
Eclipse + ADT Pluginが便利
◦ ADT : Android Development Tools



導入方法などは適当にググって!



                                    15
Java
 Javaで開発するのが現実的
 ◦ NDKを使えば他の言語で書いたライブラ
   リ等を呼び出せる
       NDK : Native Development Kit
       端末のCPUに依存するアプリになってしまう




                                      16
Android SDK
http://developer.android.com/sdk/index.html
  SDKの内容
  ◦   AndroidのAPI使うためのSDK本体
  ◦   サンプルプログラム
  ◦   エミュレータ
  ◦   開発用のツール




                                          17
Eclipse + ADT Plugin
 Eclipse
 ◦ 超便利
  (贅沢言うなら,もう少しサクサク動いて欲しい)

 ADT Plugin
 ◦ Eclipse上でAndroid SDKのツールを簡単に
   使える
 ◦ コンパイル→端末に転送→実行がワンク
   リックで


                                  18
アプリケーションフレームワーク
Androidアプリの肝
◦   Activity
◦   Service
◦   Intent
◦   Content Provider



         ActivityとIntent は必修!

                                19
Activity
 表示される画面の単位
 ◦ Activityクラスを継承して処理を書く
 ◦ 画面が切り替わるとき別のActivityが起動して
   いる
 ◦ 前のActivityも保持され,戻ることができる
           Bを起動           Cを起動




                    Activity B   Activity C
       Activity A



              Bを終了しAに Cを終了しBに
                                              20
Activityと View
 Activityはまず最初にViewを用意する
 View = 画面に表示する内容
 ◦ ボタンや画像,テキストなどを置ける



            テキスト
 Activity
                  画像
   View

            ボタン


                           21
Activityと View
 Viewの内容はlayoutというxmlに書く
 ◦ Javaのコードでも書けるけどxmlで定義す
   るのが良い
 ◦ EclipseのADT Pluginなら
                     ならGUIでボタンなど
                     なら
   を配置できる(…が日本語使うのは難あり)




                               22
Service
 Activityと違って画面には出ない
 ◦ バックグラウンドで動く
   Activityを起動したり
   通知領域にアイコンやメッセージを出すなど


 ◦ 通知領域




                          23
Intent
  ActivityやService間でデータを受け渡す
  ◦ 例:ボタンを押したら画面が切替わる


                    Intent     3 Bが起動しIntent受け取る



  Activity A   2 AがIntent投げる       Activity B

   ボタン



1 ボタンを押す

                                                   24
Intent
 渡せるもの
    URL
    数値
    文字列
    …など
 Intentは別のアプリにも送れる




                     25
Intent
 明示的Intent
 ◦ 指定したActivityやServiceを起動したり
   データを渡せる
 暗黙的Intent
 ◦ URLやファイルをIntentで投げると対応ア
   プリが自動的に起動する
    複数ある場合はユーザーが選択する




                                26
Content Provider
 他のプロセスにファイルやDBを提供
  ファイル自体はIntentで渡せない
  他のアプリからURIでアクセスできる
   例: content://com.example.hoge.fileprovider




                                                27
センサー類
GPS
加速度
ジャイロ
コンパス
カメラ




        28
その他
ライブ壁紙
 動く壁紙
ウィジェットアプリ
 ホーム画面に置ける常駐アプリ
ホームアプリ
 ホーム画面自体もアプリで作成できる




                     29
気を付けること:メモリ
Javaだからメモリリークとか気にしな
くて良い?
     →そんなことはない

基本的に1アプリ16MB

javaのstaticメンバ等は避けるのが無難
 アプリ画面を閉じてもプロセスは生存してる


                          30
気を付けること:速度
UIスレッドで重い処理をしない
◦ ネットワーク
◦ ファイルアクセス
別スレッドで処理する
◦ Service
◦ AsyncTask




                  31
気を付けること:環境
環境は様々
◦   OSのバージョン
◦   画面の解像度
◦   使えるセンサーの種類
◦   カメラ・フラッシュの有無




                   32
ANDROID MARKET




                 33
Android Market
https://market.android.com/




                              34
Android Market

 アプリケーション数:20万以上
 ◦ 2011年4月時点
 無料のアプリが多い
 ◦ 65%が無料
 ◦ 審査などは無い
 ◦ 良いアプリ探すのは結構大変



                   35
作ったアプリを公開する
1.   開発者用アカウントを取得($25必要)
2.   アプリケーションを登録
     ◦ ファイルをアップロード
     ◦ 説明文を書く
     ◦ スクリーンショットなど
3.   少し待つと検索結果に現れる
     ◦ 30分くらい?

審査とか待たなくて良いのが素晴らしいですね!

                           36
開発者ページで見れるもの
ダウンロード数
◦ 実際にインストールされてる数も分かる
ユーザーの統計
◦ OSのバージョン
◦ 機種
◦ 国・言語




                       37
作ってみたアプリの紹介




              38
ネギアンテナ
ネギが表示されるウィジェットアプリ
電波の強さでネギの本数が変わります

画期的!




 冗談です

                39
ニコニコPlayer(仮)
 作ってみました
 ◦ ニコニコ動画のクライアント
 ◦ コメントもできるよ
 ◦ まだ一部の動画が再生できない…




                     40
ニコニコPlayer(仮)
 デモ




                41
最後に


Androidアプリ開発 楽しいです
◦ 楽しい≒苦難の道
◦ Androidはまだまだ進化中




                     42

みゆっき☆Think#3 「androidに触ってみるよ!」