Androidアプリ開発について


         愛媛IT勉強会資料
「Androidアプリの開発における注意点」
          2012年9月19日

   有限会社ネットプラン松山
           上田 和章
       Twitter: @twikaz
   Android Play: netplan_jp
自己紹介(キーワード)など

    興味のあること         仕事以外では
●   WordPress   ●   音楽
●   Android     ●   自転車
●
    Agile開発     ●
                    たばこはすいません
●   C#          ●   お酒は控えめに
●   Linux
●   仮想化

                                2
NpsViewer - アンドロイダー




                      3
npFixIt - 窓の杜




                4
第1章




スマホの市場について
一応、調べてみました。




              5
端末の種類




国内主要3キャリア
            6
機種依存




  カメラアプリ開発で
機種依存に悩まされたとか


               7
個性のある端末




楽しみの一つとして


            8
世界のスマートフォンシェア

                       世界のスマートフォンシェア (Wiki)

                            2012Q2 by Wikipedia




                                                               Android
                                                               iOS
                                                               Symbian
                                                               RIM
                                                               Bada
                                                               Microsoft
                                                               その他




Android   iOS     Symbian      RIM                Bada     Microsoft       その他
  64.1%   18.8%      5.9%         5.2%              2.7%       2.7%         0.6%


                                                                                   9
前のページでわかったこと



Androidが
  多い
               10
メモ書き

Symbian OS
●
    ドコモ、ノキアなどが採用。
●
    従来のケータイ向けOSシェアNo.1
RIM OS
●
    Research In Motion (Canada)
●
    BlackBerry
Bada OS
●
    바다
●   サムスン電子
                                  11
国内の利用者

                  国内のスマホ利用者 (Wiki)

                        2012 年 6 月




                                                   Android
                                                   iOS (iPhone)
                                                   Microsoft
                                                   その他




Android      iOS (iPhone)            Microsoft                    その他
     64.1%           32.3%                  3.2%                        0.4%

                                                                               12
前のページでわかったこと



iPhoneも
  多い
               13
(参考)世界のタブレット出荷数

                      世界のタブレット出荷数
                        2012Q2 by Wiki

 18000000

 16000000

 14000000

 12000000

 10000000

  8000000

  6000000

  4000000

  2000000

       0
            Android               iOS    その他




                                               14
(参考)国内のタブレット出荷台数

                      国内のタブレット出荷台数 (Wiki)

                         2011/10 ~ 2012/03

  1200000


  1000000


  800000


  600000


  400000


  200000


       0
            Android                iOS       その他




                                                   15
前のページでわかったこと



  iPadが
  多い
               16
ちなみに


          TM
Android        の



搭載機器
   には...

                   17
スマホやタブレット以外にも、



             音楽プレーヤー
   カーナビ



                デジカメ
    テレビ   などなど...
                       18
Android には

             Arduinoも
iOSとは異なる     あるよ~




市場あります。
             が

                 ん?
                        19
いえいえ iOS にも

iPodシリーズ     音楽プレーヤー
iPad         テレビ視聴
iPhone       ナビアプリ
             カメラ機能

                       20
スマホ系OS市場


Android
          複雑         Windows
                      Phone
 iOS         な

Bada OS   様相         RIM OS

                          21
「iPhone」でトレンドを調べると




                 22
トレンド(OS)のチャートを見て

Symbianがあり
 ● 従来のNo.1シェア


iPhoneが出てきて
 ● デザイン、機能、ブランド力


そしてAndroid
 ● オープンソースのパワー




                    23
第2章




Androidの

開発環境

           24
さて、Android開発環境




             他にも...?
                   25
開発環境の比較

   開発環境              動作環境                 言語           ターゲット               価格

Eclipse           Win, Mac, Linux Java             Android            無償

Titanium Mobile   Win, Mac, Linux JavaScript       Android, iOS       無償・有償
                                                   Android, iOS,
                  Win, Mac, Linux HTML, CSS,
PhoneGap                                           Windows
                  ※Eclipse
                                                                      無償
                                  JavaScript
                                                   Phone, ...
                                                   Android, iOS,
Corona            Win, Mac          Lua            Kindle Fire,       アプリ公開は
                                                                      有償
                                                   nook
                                    HTML5, CSS3,   Android, iOS,      無償および
Sencha            Win, Mac, Linux
                                    JavaScript     Kindle Fire, ...   有償サポート

      ・・・               ・・・               ・・・             ・・・              ・・・


                                                                                 26
(参考)App Inventor




http://appinventor.mit.edu/explore/   27
(参考)gabuchanの日記




http://d.hatena.ne.jp/gabuchan/20120905   28
第3章




 アプリ開発と
OSのバージョン



           29
Androidのバージョン


        デベロッパーコンソール
         「ツール」カテゴリの


         トップ10


                      30
(参考)Antomatic Task Killer
   S.Tachibanaさん作




   ANDROID要件:

   1.6以上
                            31
各バージョンへの対応

● 幅広く対応
  1.5, 1.6, ... , 2.3.x, 4.x
●
  主要バージョンに絞る
  2.2, 2.3.x, ... , 4.x

                               32
メリット・デメリット

●   メリット
    多くの利用者に使ってもらえる(信頼、収益)
    ノウハウの蓄積
    公開してスキル証明(資産)
●   デメリット
    ターゲット毎に処理を分岐するなど
    開発のコストがかかる
    メンテナンスの手間               33
パッケージのリリース

できるだけ

単一のAPK
でサポートするように
アプリケーションを開発することを

推奨します。
https://sites.google.com/site/androiddevelopersclub/docs/multiple-apk-support より   34
少し言い換えると


      できるだけ

1個のパッケージ(プロジェクト)で

   対象とするAPIレベルに

    対応しましょう。

                    35
もう少し言い換えると



 ひとつのアプリケーションを
複数のパッケージに分けてしまうと
後のメンテナンスが大変ですよ。

                  36
とはいえ、



 複数のAPKに

分けたい       場合も
 あるでしょう。



                 37
マルチプル(複数) APK サポート

     同一のパッケージで、複数のAPKを公開できる。

 ●
     同じパッケージ名をつけ、同じ認証キーで署名

     例)com.example.android.myapp

 ●
     各々異なったバージョンコードをつける、など




https://sites.google.com/site/androiddevelopersclub/docs/multiple-apk-support より   38
第4章




プログラミングスタイルと
  APIレベルへの対応



               39
Fragment機能



  昨年リリースの Android3.0
    (Honeycomb)より

Fragment    という機能が
     追加されました。



                       40
Fragmentの例




             41
ちょっとわかりにくい




  ご遠慮なくどうぞ




             42
Fragment で便利になること
                   メニュー    詳細記事


Handset
                                  2画面




                   メニュー   詳細記事


                                  1画面
          Tablet




                                    43
Activityで作ると
Act-A + Lay-A      Act-B + Lay-B
                                   ロジック
                                          Act-A   メニュー表示

                                          Act-B   詳細表示

                                          Act-C   メニュー表示と
                                                  詳細表示


          Act-C + Lay-C
                                   レイアウト
                                          Lay-A   メニュー用

                                          Lay-B   詳細用

                                          Lay-C   メニューと詳細用




 レイアウトの種類が増えると、ロジックが煩雑になってしまう。                               44
Fragmentで作ると
Act-A + Fra-A         Act-B + Fra-B   ロジック

                                             Act-A   (Single)Fra-Aの起動
                                                     (Dual)Fra-A, Fra-Bの
                                                     起動

                                             Act-B   Fra-Bの起動

                                             Fra-A   メニュー表示

        Act-A + Fra-A + Fra-B                Fra-B   詳細表示

                                      レイアウト
                                             Lay-A   メニュー用

                                             Lay-B   詳細用(Handset)

                                             Lay-C   詳細用(Tablet)


 レイアウトの種類が増えても、ロジック(Fra)は共通で使える。                                       45
なんだか




余計に複雑?



         46
表現を変えてみます。




   カプセル化

 メニューの表示処理


  詳細の表示処理


             47
部品として再利用

「メニュー表示」と「詳細表示」を
それぞれ部品にすることで
様々な解像度(レイアウト)の端末に対して
簡単に再利用することができます。




                   48
マルチスクリーンへの対応例




                49
スマホ(API-2.2、Froyo)
ニュースのタイトルをタップ   Activityが開く




右上のカテゴリをタップ     Dialogが開く




                              50
タブレット(API-3.2, Honeycomb)
  タイトル、カテゴリ、選択記事すべて1画面で表示




                            51
ところで Fragment って




                   52
Android 3.0以降じゃないと...??

Androidバージョン    API Level
2.2(Froyo) =           8
2.3.x(GINGERBREAD) = 9, 10
3.x(Honeycomb) = 11, 12, 13
4.0.x(ICS) =         14, 15

                              53
そんなあなたに、




サポートパッケージ!!


              54
サポートパッケージ




以前のOSバージョンを新しいAPIに対応させることが可能。
【注意】あらゆるAPIに対応しているわけではない。

                                55
追加の仕方(Support Package)

  パッケージの右クリックから、




                         56
サポートパッケージのインストール




               57
追加されました。




           58
APIレベルで非対応でも




 サポートパッケージで
対応できる場合があります。
 ※万能ではありません。




                59
最終章




その他に、
お伝えしたいこと




           60
Android          TM 
                        ブランディング



Android Robot は、ライセンス規定の元に、
自由に編集して使うことができます。
http://developer.android.com/license.html#attribution




      Androidロゴは
      勝手に使ってはいけません。
                                                        61
情報源
●
    ウェブサイト                       ●
                                     書籍
        –   Android Developers   ●   各種セミナー
        –   TechBooster          ●   勉強会
●   Twitter
                                 ●   もくもく会
●   Facebook
●   Google+
                                 ●   瀬戸デ部
●
    Google Groups
●   LinkedIn
●
    Forkwell

                                              62
ご案内

●   CVehime(勉強会)
    ウェブサイト、HTML5, CSS3, JavaScript
●   GDGshikoku(コミュニティ、勉強会)
    四国地方のGoogle Developer Group
●   Agile459(勉強会)
    アジャイルサムライの読書会など



                                     63
以上です。




ご清聴
ありがとうございました。
    m(. .)m



               64

Android Develop presentation on 19 Sep 2012.