書籍概要

良いAndroidアプリを作る139の鉄則

著者
発売日
更新日

概要

国内初のAndroid端末に標準搭載された『ポケット羅針盤』の開発を始め,全日本空輸株式会社の『ANA』や,NTTタウンページ株式会社の『iタウンページ』,株式会社三省堂の『三省堂辞書』など,数多くの開発実績を持つテックファ―ムが,Androidアプリ開発の現場で求められる知識を集大成。

「意図しない動作を回避する」
「強制終了しない」
「ユーザにストレスを感じさせない」
「マルチスレッドを使いこなす」
「電池にやさしいつくりにする」
「重要なデータを守る」
「機種依存に考慮する」
「品質を向上させる」
「安全にリリースする」

といった実践的なノウハウをおしみなくまとめた,かつてない1冊。

こんな方におすすめ

  • とりあえず動くアプリが開発できるが,現場で求められる知識が足りていないAndroidアプリ開発者

著者から一言

2014年現在,スマートフォン用のOSの中で世界シェア1位といえば,Androidです。スマートフォン以外にも多くの機器に使われ始めていることもあり,Android端末は最も身近な携帯機器といえるでしょう。

しかし,勢いのあるOSだからこそ,開発にはさまざまな苦労があります。普及しているがゆえに多種多様な端末があり,そのためにAndroid OSのバージョンや機種に依存する差違からは逃れることができません。Androidの正しい作法を知らずに,手元の端末で動くことだけを重要視して,場当たり的なアプリ実装をしてしまうと,後に多大な改修の手間に悩まされることになります。

テックファームには,2009年から現在まで5年間,Androidアプリを開発してきた実績があります。一例を挙げれば,国内初のAndroid端末に標準搭載された『ポケット羅針盤』の開発を始め,全日本空輸株式会社様の『ANA』や,NTTタウンページ株式会社様の『iタウンページ』,株式会社三省堂様の『三省堂辞書』など,有名なAndroidアプリの開発に携わってきました。また,高齢者,指や手が不自由な人のための支援アプリ『At-Scan』『At-Switch』を自社開発しています。その間,急速に進化を重ねるAndroid OS自体の歴史とともに,テックファームではAndroidに関するノウハウを蓄積してきました。

本書では,そのような現場で積み重ねてきたノウハウの一部や,開発にあたって理解していないと苦労するポイントなどを紹介しています。これから業務でAndroid開発に携わる方や,ほかのスマートフォンOSで開発経験がある方が,Androidの正しい作法や特性を理解し,より品質の高いアプリを開発し,スムーズなサービス運営まで配慮できるよう,経験則も含めて広い範囲の内容を収めました。

本書の読者としては,Android開発の経験がある人を想定していますが,基本的なJavaのソースコードを読めるプログラマであれば,Androidの経験がなくても,ソースコードを見ながら理解できるでしょう。

この本を品質の高いアプリを作れるようになるためのステップアップ材料にしていただければ幸いです。

目次

第1章 開発を円滑に進めるためのコツ

1.1 開発前に押さえておくべきポイントとは

  • 1 顧客の理解を得る
  • 2 対象端末を選定する
  • 3 マルチスクリーンの対応可否を決める
  • 4 Androidのバージョンを選定する
  • Column AndroidとiOSの両方に対応する難しさ
  • 5 責任範囲を明確にする
  • 6 サービスインまでのスケジュールを立てる
  • 7 顧客と調整すべきことを考慮する
  • Column バージョンの定義をすりあわせる
  • 8 他社開発アプリを引き継ぐ時に注意すること

1.2 開発から運用までをスムーズに進めるには

  • 9 チーム内のルールを決める
  • 10 アプリ開発中に押さえるべきポイント
  • 11 サービスイン後に押さえておくべきポイント
  • Column コードネームがお好き

第2章 意図しない動作を回避する

2.1 安全なActivityを設計する

  • 12 最適な起動モードとフラグを選ぶ
  • 13 Activity Aliasで名称の変更に対応する
  • 14 他アプリから使用させないようにする

2.2 Serviceの安定性を向上させる

  • 15 Serviceがkillされることを考慮する
  • 16 Serviceのクラッシュ対策をする

2.3 届かないBroadcastに対処する

  • 17 Broadcastの配信順を考慮する
  • 18 受信できないタイミングを考慮する

第3章 強制終了しないアプリを作る

3.1 ANR回避のテクニック

  • 19 アプリでANRを起こさないために
  • 20 ホーム画面でANRを起こさない
  • 21 受信契機のANRを回避する
  • 22 遅くないレイアウトを考える
  • 23 ANRの原因を分析する

3.2 適切な例外の処置

  • 24 例外のハンドリング方針を決める
  • 25 メインスレッドを強制終了させない
  • 26 例外を考慮してメソッドを選ぶ

3.3 メモリ不足を解消するには

  • 27 初期化を考慮する
  • 28 不要なオブジェクトは破棄する
  • 29 画像のメモリリークを防ぐ
  • 30 画像サイズが大きい場合
  • 31 メモリに優しいオブジェクトを考える
  • 32 1つのアプリで複数のヒープを確保する
  • 33 大量のヒープを確保する
  • Column Androidの仮想マシンに期待する

3.4 プロセス終了時に対処すべきこととは

  • 34 Activity強制終了時にデータを保持させる
  • 35 Fragment強制終了時にデータを保持させる

第4章 ユーザーにストレスを感じさせないアプリを作る

4.1 ストレスを感じさせないテクニックとは

  • 36 ユーザーに状況を伝える
  • 37 長い処理をユーザーが中断できるようにする
  • 38 待ち状態でUIを止めない
  • 39 スプラッシュ画面をデータロードに利用する
  • 40 細かい配慮で処理効率をあげる
  • 41 データの保存タイミングを考慮する
  • 42 セルラー通信の時は重い通信を避ける
  • 43 エラー発生時にもユーザーを不安にさせない
  • 44 NDKの利用は慎重に判断する
  • Column ハードウェア描画とは

4.2 使い勝手をよくするテクニック

  • 45 直感的にわかるデザインを考える
  • 46 新しいコンポーネントをチェックする
  • 47 狭い画面に縛られない
  • 48 斬新なコンポーネントを取り入れる
  • 49 誤操作を防ぐために

第5章 マルチスレッドを使いこなす

5.1 多種多様のスレッド利用方法

  • 50 標準の非同期処理を理解する
  • 51 標準の同期処理を理解する

5.2 スレッドとAsyncTask

  • 52 スレッドとAsyncTaskを使い分ける
  • 53 AsyncTaskを中断させる
  • 54 Androidの非同期処理を理解する

第6章 不必要な処理を切り分ける

6.1 通信タイミングを決めるポイント

  • 55 設計段階でバッテリ消耗を最低限に抑える
  • 56 決まった時間に通信することを避ける
  • 57 電源の状態に応じて通信頻度を変える
  • 58 インターネット接続の有無に応じて定期通信を止める
  • 59 通信経路で通信状態を変える
  • 60 通信データの量を減らす
  • 61 データをまとめて取得して,通信回数を減らす
  • 62 取得したデータをキャッシュして通信を減らす
  • 63 プッシュ機能を用いる
  • 64 リトライ間隔をあけて通信する
  • 65 レジュームダウンロードに対応する
  • 66 ユーザーが決められるようにする

6.2 機能を使用するタイミング

  • 67 不要な画面の点灯を避ける
  • 68 電池消費量を意識して位置情報を取得する

第7章 重要なデータを守る

7.1 解析ツールの脅威

  • 69 apkファイルは誰にでも抜き出せる
  • 70 設定ファイルから機能が丸見えになる
  • 71 ツールを使えばソースコードを覗ける
  • 72 エミュレータでかんたんにデータベースが見られる

7.2 データの保護・漏洩対策

  • 73 暗号化処理の実装を検討する
  • 74 鍵の保持方法を考える
  • 75 AES暗号化でデータベースを守る
  • Column Androidの「端末の暗号化」機能
  • 76 オープンソースソフトを利用する
  • Column 暗号化処理は輸出規制の対象

7.3 ソースコードを保護する

  • 77 処理を解析から保護する
  • 78 難読化の注意点を知る
  • 79 有償ツールを検討する
  • Column 中華droidのススメ

第8章 機種依存を考慮した設計と実装

8.1 設計段階で考慮すること

  • 80 搭載機能を整理する
  • Column Androidに関わるライセンス
  • 81 レイアウトを検討する
  • 82 OSバージョンで気をつけること
  • 83 フォン型とタブレット型の両方に対応する

8.2 マルチディスプレイへの対応

  • 84 基準になる単位を知る
  • 85 実サイズで切り分ける
  • 86 仮想デバイスで確認する
  • Column シミュレータとエミュレータの違い
  • 87 異なる画面サイズに対応したWebデザインにする

8.3 リソース制作時の考慮点

  • 88 リソースの管理方法を決める
  • 89 伸縮できる画像を利用する
  • 90 正しい配置方法を知る

8.4 さまざまな機種依存の対処

  • 91 SDカードに対応する

8.4 さまざまな機種依存の対処

  • 92 その他の機種依存を知る
  • Column 異色のAndroidデバイス

8.5 マルチユーザーの対応

  • 93 マルチユーザーを知る
  • 94 各ユーザーのデータの保存場所を知る
  • 95 複数プロセスを考慮する

第9章 品質向上のためのテストを実践する

9.1 試験開始前に押さえるべきポイント

  • 96 リビジョン番号を記録する
  • 97 リリースマネージャを決める

9.2 安全なバイナリを作成する

  • 98 開発時とリリース時でバイナリを分ける
  • 99 Antでミスを防ぐ

9.3 性能試験の観点

  • 100 性能を測定する
  • 101 性能が遅かった場合の対処
  • 102 リソース負荷を測定する
  • 103 アプリ機能に負荷を与える

9.4 メモリリークを防止する

  • 104 メモリリークを取り除く

9.5 試験項目を作る際の留意点

  • 105 OSのバージョンを考える
  • 106 画面に反映される項目を考える
  • 107 設定を変更した時の試験項目を考える
  • 108 ハードウェアを考える
  • 109 インストール方法を考える
  • 110 アプリのバージョンを考える
  • 111 Androidのソフトウェア構成を考える
  • 112 プロセスがkillされた時の挙動を確認する
  • 113 処理の中断を考える

9.6 単体試験の自動化

  • 114 Activityを試験する
  • 115 Activityの画面またぎを試験する
  • 116 Content Providerを試験する
  • 117 Serviceを試験する
  • 118 データベースを試験する
  • 119 Loaderを試験する
  • 120 Webサイトを試験する
  • 121 Espressoを利用する

第10章 Google Playでアプリを安全にリリースする

10.1 端末のスペックで公開を制限する

  • 122 公開制限の必要性を理解する
  • 123 APIレベルで公開を制限する
  • 124 画面サイズや密度で公開を制限する
  • 125 搭載機能で公開を制限する
  • 126 ライブラリで公開を制限する

10.2 指定した端末への公開を制限する

  • 127 公開端末一覧を確認する
  • 128 端末のフィルタリングを確認する

10.3 公開前のテスト配布

  • 129 テスト用バイナリを配布する
  • 130 ベータ版テスト,アルファ版テストを実施する
  • 131 テスターを作成する
  • 132 テスターを承認する
  • 133 テスト版アプリをダウンロードする
  • 134 バージョンアップ時の不備を避ける
  • 135 署名を確認する
  • 136 バイナリを最適化する

10.4 公開後に押さえておくポイント

  • 137 アプリの公開状況を確認する
  • 138 アプリの公開状況を変更する
  • 139 レポートを確認する

Appendix ネイティブコードに強くなる

  • A.1 NDKの環境を構築する
  • A.2 ネイティブコードで実装する
  • Column Eclipseの構文解析エラー
  • A.3 C++利用時の注意点
  • A.4 ネイティブコードからJavaをコールする

サポート

現在サポート情報はありません。

商品一覧