iphoneとandroidのアプリ開発最新潮流

25
iPhoneAndroidアプリ開発最新潮流 Rakuten, Inc. May/9/2012

Upload: rakuten-inc

Post on 24-May-2015

5.509 views

Category:

Technology


3 download

DESCRIPTION

高橋 憲一、楽天株式会社 『第21回ソフトウェア開発環境展 専門セミナー』講演資料 iPhoneやAndroidが世に出てから数年経過し、ここにきて爆発的普及を見せており、 その上で動くアプリケーションはさまざまな分野から求められている。 開発環境の動向、陥りやすいポイント、テスト手法などについて、 アプリ開発者としてのこれまでの経験を踏まえて紹介する。

TRANSCRIPT

Page 1: iPhoneとAndroidのアプリ開発最新潮流

iPhoneとAndroidの

アプリ開発最新潮流

Rakuten, Inc. May/9/2012

Page 2: iPhoneとAndroidのアプリ開発最新潮流

1

今日のトピック

1 開発環境の動向

2 アプリケーションの動向

4 テスト環境

3 陥りやすいポイント

Page 3: iPhoneとAndroidのアプリ開発最新潮流

2

1 開発環境の動向

Page 4: iPhoneとAndroidのアプリ開発最新潮流

3

標準のツール

• iPhone

– Xcode

– Simulator

– 言語 Objective-C

• Android

– Eclipse + ADT

– Emulator

• 最近 GPU サポートがついて幾らか使えるレベルに

– 言語 Java

– NDK を使って C, C++ で一部、及び全体を実装することも可能

• 一部をC,C++で書いた場合、JNI経由で関数を呼び出す。

• 既存のC,C++で書かれたライブラリを移植する際にも有効

Page 5: iPhoneとAndroidのアプリ開発最新潮流

4

iPhone

• 最新の環境は iOS 5.1

• 日本でデビューして間もなく4年

– 当時は iPhone OS 2.0 だった。

– 名前も iPhone OS から iOS に

• iOS 4.0 から

• デバイスの進化とともに OS も機能が増えて進化

– GPS, 電子コンパス, ジャイロスコープ、iPad

– 5.1では日本語のディクテーションもサポート

Page 6: iPhoneとAndroidのアプリ開発最新潮流

5

アプリの動作対象OSバージョン - iOS

• 新バージョンのOSでしか使えないAPIを使うとき

• 新バージョンのOSにしか存在しないフレームワークを使うとき

– 対象となるフレームワークを weak link にする。

if (NSClassFromString(@"UIDictationPhrase")) {

//使用出来る場合のコード

}

Page 7: iPhoneとAndroidのアプリ開発最新潮流

6

Android

• 最新の環境は4.0.x (ics … Ice Cream Sandwich)

• 日本での端末デビューからは3年だが、

– 開発環境はオープンだったため、デバイス登場以前から日本Androidの会の元となったAndroid勉強会などの活動でアプリ開発は進められていた。

• GPS, 電子コンパス, ジャイロスコープ、に加えてNFCもある。

Page 8: iPhoneとAndroidのアプリ開発最新潮流

7

メモリ管理

• iOS

– リファレンスカウント

– ARC

• iOS 5.0 より

• Android

– Java … garbage collection

Page 9: iPhoneとAndroidのアプリ開発最新潮流

8

iOS - ARC

• Automatic Reference Counting

– GC とは異なる。

– リファレンスカウントの自動化

• [object retain], [object release] が不要になる。

– 人の手だけでは漏れがちなメモリリーク、二重解放などを削減できる。

– コンパイラレベルで自動化されている。

• Apple LLVM compiler

– iOS 4以降が対象、積極的に使うべき

• フルに活用するには iOS 5 以降

– iOS4では __weak 修飾子が使えない

Page 10: iPhoneとAndroidのアプリ開発最新潮流

9

タブレット対応

• iOS

– Universal Application

• iPhone, iPad 両方で動くアプリ

• Android

– Fragment

• 画面の広さに合わせて動的にレイアウトを変更

– Multiple APK Support

• Google Play (旧 Android Market)

–一つのアプリ登録で複数のバイナリ(apk)を登録可能

Page 11: iPhoneとAndroidのアプリ開発最新潮流

10

Android - Fragment

• デバイスの画面に合わせて画面の構成を動的に変えられる。

• 例:メーラーアプリ

– 解像度が高く画面も広いタブレットではマルチペイン

– 画面の狭いフォン端末ではシングルペイン

Page 12: iPhoneとAndroidのアプリ開発最新潮流

11

Android – Multiple APK Support

• フィルター毎に別々のapkをビルドして提供出来る。

– Google Play上は一種類のアプリ

• フィルターの種類

– OpenGL の textuer 圧縮方式

– スクリーンサイズ

– API Level

Page 13: iPhoneとAndroidのアプリ開発最新潮流

12

デバイスの画面解像度

• 今やiOSデバイスも4種類!

– 320x480 … iPhone 3GS 以前

– 640x960 … iPhone 4 以降 (Retina Display)

– 1024x768 … iPad, iPad2

– 2048x1536 … New iPad (Retina Display)

• Android 多くの種類の解像度

– 320x480 … 初代Android端末 G1 等

– 480x800

– 480x854

– 540x960

– 1280x800

– …..

• 解像度に依存しない実装を!

Page 14: iPhoneとAndroidのアプリ開発最新潮流

13

解決方法

• iOSのアプローチ

– Pixel ではなく Point という概念

– XXX.png と [email protected] というリソースを用意する。

• 実行時に自動的に判断して読み分けられる。

• Android

– dip という単位

• Density Independent Pixels … 密度非依存のピクセル

• 同じ値ならば異なる解像度でも見た目は同じ大きさになるよう表示される。

– 解像度の細かさ毎のリソースを用意

• drawable-mdpi, drawable-hdpi 等

Page 15: iPhoneとAndroidのアプリ開発最新潮流

14

サードパーティ製の開発ツール

• Titanium

– Java Script

• PhoneGap

– HTML5 アプリケーションをネイティブアプリ化する

• Unity

– 3Dグラフィクスを活用したゲーム向け

– C#, Java Script

• これら3つに共通する特徴

– iPhone, Android どちらのアプリも作ることができる。

Page 16: iPhoneとAndroidのアプリ開発最新潮流

15

2 アプリケーションの動向

Page 17: iPhoneとAndroidのアプリ開発最新潮流

16

UI

• どんどん凝る方向に

– 例: Path, iPhoto, Clear

• Android

– ics でハードボタンは無くなる方向に

– Fragment

Page 18: iPhoneとAndroidのアプリ開発最新潮流

17

他アプリとの連携

• Android

– Intentでシームレスに

• iPhone

– URLScheme

– Androidほどシームレスではない

Page 19: iPhoneとAndroidのアプリ開発最新潮流

18

3 陥りやすいポイント

Page 20: iPhoneとAndroidのアプリ開発最新潮流

19

iPhoneとAndroid両方にあるアプリ

• ありがちなこと

– 「Android版もiPhoneと同じUIに」---×

• 事例: Twitter 公式アプリ

– iPhone版、Android版ともにリリースされている。

– タブバーの位置が異なる。

• iPhoneは下

• Androidは上

Page 21: iPhoneとAndroidのアプリ開発最新潮流

20

セキュリティ

• Android Manifest 設定

– 不要なものはセットしない

• 情報を抜き取るアプリではないかと怪しまれる。

• ユーザー識別にUDIDは使用しない

– iOS 5.0 以降 UDID取得APIはobsoleteに。

Page 22: iPhoneとAndroidのアプリ開発最新潮流

21

4 テスト環境

Page 23: iPhoneとAndroidのアプリ開発最新潮流

22

テストの自動化

• 各プラットフォーム固有のもの

– iPhone

• UIAutomation

– Android

• monkeyrunner

• 両方で使えるもの

– NativeDriver (Google, Open Source) --- 開発終了

– MonkeyTalk (GORILLA LOGIC)

Page 24: iPhoneとAndroidのアプリ開発最新潮流

23

CI

• Continuous Integration(継続的インテグレーション)

– 主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣。XPのプラクテイスの一つで、狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを意味する。 … Wikipediaより

Page 25: iPhoneとAndroidのアプリ開発最新潮流

24

CIをサポートするツール

• Jenkins

– iPhone, Androidの開発でも使用事例が増えている。

– プラグイン

• Xcode用

• Android emulator 用

• コードレビューとの組み合わせ

– Gerrit

– Jenkinsでビルドが通ることを自動確認し、通らなければ自動でリジェクト