神原 健一
SIerにもテクノロジーの冒険はある!
∼Android編∼
Androidのマルチバージョン・マルチデバイス対応
NTTソフトウェア株式会社
ソフトウェア生産技術センター
Developers Summit 2013 Summer...
■業務
-社内Androidプロジェクト技術支援
■業務外
-Google Play向けアプリ開発(セカイフォン等)
-書籍①Androidプログラミング入門改訂2版
-書籍②Android API プログラミングリファレンス
-書籍③Andr...
Developers Summit 2013 Summer
Summit
Developers
3
セカイフォン(講演題材紹介)
2.x
3.x 4.x
スマホ タブレット
翻訳電話サービス(プライベート開発)
人生が変わる1分間の深イイ話(日...
Developers Summit 2013 Summer
Summit
Developers
4
使い方①
通話モード
(話した言葉が相手の母国語に自動変換)
フランス語 日本語
こんにちは!
Merci! ありがとう!
Bonjour!
Developers Summit 2013 Summer
Summit
Developers
5
フランス語英語
会話モード
(話した言葉をその場で自動翻訳)
使い方②
Developers Summit 2013 Summer
Summit
Developers
6
アジェンダ
•背景
•アプリ開発の課題
•アプリ開発の対策
•最後に
Developers Summit 2013 Summer
Summit
Developers
7
2.x 3.x 4.x
Androidと言っても
複数のデバイス・複数のバージョン
スマホ タブレット
Developers Summit 2013 Summer
Summit
Developers
8
This data by Google on July 8, 2013
ICS
JB
Eclair
Froyo
Gingerbread
Hone...
Developers Summit 2013 Summer
Summit
Developers
9
画面サイズと画面密度
This data by Google on July 8, 2013
Normal
Small
Xlarge
Large...
10
アプリ開発の課題
Developers Summit 2013 Summer
Summit
Developers
11
アプリ開発の課題
マルチバージョン・マルチデバイス対応
UI関連 API関連
①UIの設計・実装 ②APIの利用
•画面サイズの違い
•画面密...
12
アプリ開発の対策
13
スマホ タブレット (7’’) タブレット (10’’)
①UIの設計・実装
Developers Summit 2013 Summer
Summit
Developers
14
アプローチ①
layout-small/normal/large/xlargeの利用
l Android 1.6でも動作
l 幾つか問題あ...
Developers Summit 2013 Summer
Summit
Developers
15
アプローチ②
layout/
main.xml
layout-sw600dp/
main.xml
スマホ タブレット(‘’7)
l 本家でも...
Developers Summit 2013 Summer
Summit
Developers
16
①と②の組み合わせ
l Android1.6もサポート
l ①や②と比較してより多くの端末をサポート
l 幾つかの問題が…
l res...
l res/layout-sw600dp/main.xml <- 3.2+タブレット
l res/layout-xlarge/main.xml <- 3.0/3.1タブレット
l res/layout/main.xml <- その他(スマ...
l ソースのロジックが複雑
Developers Summit 2013 Summer
Summit
Developers
18
if ([xlargeである] or [横幅・縦幅の両方600dp以上])
// codes for table...
19
より良いアプローチは?
Developers Summit 2013 Summer
Summit
Developers
20
アプローチ④
今回は時間の都合で、省略m(__)m
valuesフォルダの活用 Layout-Aliasの活用
•Multi-Versioni...
21
別のアプローチだと?
Developers Summit 2013 Summer
Summit
Developers
22
柔軟なレイアウト
• 両方で適用可能なレイアウト
スマホ タブレット
Fragmentを使わない
23
Android
2.x
Android
3.x
Android
4.x
②APIの利用
Developers Summit 2013 Summer
Summit
Developers
24
マルチバージョン対応
開発難易度?メンテナンス性能?
Single APK Multiple APK
2.x
3.x
4.x
2.x
3.x
...
Developers Summit 2013 Summer
Summit
Developers
25
最新APIを含むアプリを1つのAPKで実現
Reflection
Configuring Lint
Lazy Loading
Single APK...
Developers Summit 2013 Summer
Summit
Developers
26
“Configuring Lint”の利用例
	 @SuppressLint("NewApi")
	 private void setActi...
Developers Summit 2013 Summer
Summit
Developers
27
“Lazy loading”の利用例
public	
 abstract	
 class	
 NotificationUtilAbstract...
Developers Summit 2013 Summer
Summit
Developers
28
public	
 class	
 NotificationUtilJB
extends	
 NotificationUtilAbstract{...
Developers Summit 2013 Summer
Summit
Developers
29
最後に)自分のアプローチ
SIerにおけるエンジニアの生き方の1つ
プライベート 会社
両方の活動による相乗効果
•プロダクト開発
•ノウハウ...
30
ご清聴ありがとうございました。
•Facebook:http://fb.com/kanbara.kenichi
•Google+:+Kenichi Kambara
•Twitter:@korodroid
Upcoming SlideShare
Loading in …5
×

[DevSummit2013S]Android_Multi-Version_Multi-Device

1,463 views

Published on

夏サミ2013のB2セッションの資料です。
Androidのマルチバージョン・マルチデバイス対応についてです。

Published in: Technology, Business
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,463
On SlideShare
0
From Embeds
0
Number of Embeds
262
Actions
Shares
0
Downloads
0
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

[DevSummit2013S]Android_Multi-Version_Multi-Device

  1. 1. 神原 健一 SIerにもテクノロジーの冒険はある! ∼Android編∼ Androidのマルチバージョン・マルチデバイス対応 NTTソフトウェア株式会社 ソフトウェア生産技術センター Developers Summit 2013 Summer #natsumiB2 Summit Developers 2013.8.1
  2. 2. ■業務 -社内Androidプロジェクト技術支援 ■業務外 -Google Play向けアプリ開発(セカイフォン等) -書籍①Androidプログラミング入門改訂2版 -書籍②Android API プログラミングリファレンス -書籍③Androidアプリテスト技法 ■共通 -Android関連講演活動(Droidcon Paris 2013、Droidcon London 2012等) Developers Summit 2013 Summer Summit Developers 2 自己紹介 •NTTソフトウェア株式会社  テクニカルプロフェッショナル(Android) •神原 健一
  3. 3. Developers Summit 2013 Summer Summit Developers 3 セカイフォン(講演題材紹介) 2.x 3.x 4.x スマホ タブレット 翻訳電話サービス(プライベート開発) 人生が変わる1分間の深イイ話(日テレ) →2013/7/29(月)放送にて紹介
  4. 4. Developers Summit 2013 Summer Summit Developers 4 使い方① 通話モード (話した言葉が相手の母国語に自動変換) フランス語 日本語 こんにちは! Merci! ありがとう! Bonjour!
  5. 5. Developers Summit 2013 Summer Summit Developers 5 フランス語英語 会話モード (話した言葉をその場で自動翻訳) 使い方②
  6. 6. Developers Summit 2013 Summer Summit Developers 6 アジェンダ •背景 •アプリ開発の課題 •アプリ開発の対策 •最後に
  7. 7. Developers Summit 2013 Summer Summit Developers 7 2.x 3.x 4.x Androidと言っても 複数のデバイス・複数のバージョン スマホ タブレット
  8. 8. Developers Summit 2013 Summer Summit Developers 8 This data by Google on July 8, 2013 ICS JB Eclair Froyo Gingerbread Honeycomb OSのバージョン分布
  9. 9. Developers Summit 2013 Summer Summit Developers 9 画面サイズと画面密度 This data by Google on July 8, 2013 Normal Small Xlarge Large hdpi xhdpi ldpi mdpi xxhdpi tvdpi
  10. 10. 10 アプリ開発の課題
  11. 11. Developers Summit 2013 Summer Summit Developers 11 アプリ開発の課題 マルチバージョン・マルチデバイス対応 UI関連 API関連 ①UIの設計・実装 ②APIの利用 •画面サイズの違い •画面密度の違い •その他 •パッケージング方針 •APIの互換性 •その他
  12. 12. 12 アプリ開発の対策
  13. 13. 13 スマホ タブレット (7’’) タブレット (10’’) ①UIの設計・実装
  14. 14. Developers Summit 2013 Summer Summit Developers 14 アプローチ① layout-small/normal/large/xlargeの利用 l Android 1.6でも動作 l 幾つか問題あり 画面サイズ layout-<hoge>
  15. 15. Developers Summit 2013 Summer Summit Developers 15 アプローチ② layout/ main.xml layout-sw600dp/ main.xml スマホ タブレット(‘’7) l 本家でも推奨 l Android 3.2以上でのみ動作 dp(Density-Independent pixel)の利用
  16. 16. Developers Summit 2013 Summer Summit Developers 16 ①と②の組み合わせ l Android1.6もサポート l ①や②と比較してより多くの端末をサポート l 幾つかの問題が… l res/layout-sw600dp/main.xml <- 3.2+タブレット l res/layout-xlarge/main.xml <- 3.0/3.1タブレット l res/layout/main.xml <- その他(スマホ) アプローチ③
  17. 17. l res/layout-sw600dp/main.xml <- 3.2+タブレット l res/layout-xlarge/main.xml <- 3.0/3.1タブレット l res/layout/main.xml <- その他(スマホ) l 同じファイルを別フォルダに格納 Developers Summit 2013 Summer Summit Developers 17 メンテナンス性は? アプローチ③
  18. 18. l ソースのロジックが複雑 Developers Summit 2013 Summer Summit Developers 18 if ([xlargeである] or [横幅・縦幅の両方600dp以上]) // codes for tablets }else{ // codes for others } アプローチ③ メンテナンス性は?
  19. 19. 19 より良いアプローチは?
  20. 20. Developers Summit 2013 Summer Summit Developers 20 アプローチ④ 今回は時間の都合で、省略m(__)m valuesフォルダの活用 Layout-Aliasの活用 •Multi-Versioning Android Apps  http://goo.gl/qx86qs Droidcon Paris 2013 講演資料
  21. 21. 21 別のアプローチだと?
  22. 22. Developers Summit 2013 Summer Summit Developers 22 柔軟なレイアウト • 両方で適用可能なレイアウト スマホ タブレット Fragmentを使わない
  23. 23. 23 Android 2.x Android 3.x Android 4.x ②APIの利用
  24. 24. Developers Summit 2013 Summer Summit Developers 24 マルチバージョン対応 開発難易度?メンテナンス性能? Single APK Multiple APK 2.x 3.x 4.x 2.x 3.x 4.x
  25. 25. Developers Summit 2013 Summer Summit Developers 25 最新APIを含むアプリを1つのAPKで実現 Reflection Configuring Lint Lazy Loading Single APKアプローチ オーソドックスな方式 デザインパターンの1つ Lintの活用
  26. 26. Developers Summit 2013 Summer Summit Developers 26 “Configuring Lint”の利用例 @SuppressLint("NewApi") private void setActionBarStyle() { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = this.getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); }else{ ... } } @TargetApi(11) private void setActionBarStyle() { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ActionBar actionBar = this.getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); }else{ ... } } 基本的にOK マルチバージョン対応
  27. 27. Developers Summit 2013 Summer Summit Developers 27 “Lazy loading”の利用例 public abstract class NotificationUtilAbstract { public static NotificationUtilAbstract newInstance() { NotificationUtilAbstract instance = null; if (Integer.parseInt(Build.VERSION.SDK)>= 16) { instance = new NotificationUtilJB(); } else { instance = new NotificationUtilDefault(); } return instance; } public abstract void showCaller; } 1st step マルチバージョン対応
  28. 28. Developers Summit 2013 Summer Summit Developers 28 public class NotificationUtilJB extends NotificationUtilAbstract{ @Override public void showCaller(){ // Code by Jelly Bean (API 16) } } public class NotificationUtilDefault extends NotificationUtilAbstract{ @Override public void showCaller(){ // Code by Old API } } 1.6でもOK 2nd step マルチバージョン対応
  29. 29. Developers Summit 2013 Summer Summit Developers 29 最後に)自分のアプローチ SIerにおけるエンジニアの生き方の1つ プライベート 会社 両方の活動による相乗効果 •プロダクト開発 •ノウハウ蓄積・展開 •コミュニティ活動 •社内開発支援 •ノウハウ蓄積・展開 •活動バックアップ
  30. 30. 30 ご清聴ありがとうございました。 •Facebook:http://fb.com/kanbara.kenichi •Google+:+Kenichi Kambara •Twitter:@korodroid

×