Android実践プログラミング
- ¥ 1,000
<電子書籍版です。表紙はC87公開時のイラストでダウンロードPDFには含まれません> 第一線の開発者が遭遇した、アンチパターンを多数収録。ノンフィクション超大作です。 Androidアプリケーション開発で一度や二度、踏み抜く落とし穴やミスなど、実際にあったダメなコード15選から、現場でどのような対処が有効か、読み解きます。 Googleのガイドライン攻略法。デザインガイドラインは刻一刻とかわるものです。その時々に合わせて、どのルールが重要なのか判断し、取捨選択が必要です。ガイドラインの考え方を解説します 検証機の選定例などケーススタディやGradle、Dockerなど気になる周辺技術の特集も。 第1章 駄目コードとその対策 @cattaka_net 第2章 Android100機種サポートしたいけど10機種しか試験するお金がありませんでした @youten_redo, @_mochicon_, @consomme72 第3章 Googleに従わない方が幸せになるかもしれない7つのケース @youten_redo 第4章 UCDに沿ったアプリ設計の実践 〜PlayStoreで☆1をつけられないために〜 @_mochicon_ 第5章 Android Gradle プロジェクト逆引きリファレンス @zaki50 第6章 Dockerが切り開くソフトウェア開発の未来 @amedama 目次は次のとおりです 第1 章駄目コードとその対策 1.1 Activity 間のデータのやりとりがstatic 変数で行われている......... 6 1.2 無名クラスのOnClickListener がそこら中で生成されている......... 9 1.3 Handler がそこら中で生成されている..................... 13 1.4 ポーリングでしか状態を知ることができないスレッドがある......... 16 1.5 try-catch が乱暴にException で受けている................. 21 1.6 Thread が回収できなくなって仕方なくkillProcess している........ 22 1.7 static フィールドに状態をもつオブジェクトが入っている.......... 25 1.8 内部の処理が微妙に異なるAsyncTask が無数にある............. 28 1.9 Preference への書き込みに個々でedit メソッドを呼んでいる........ 33 1.10 Application にService の実体を突っ込んでいる............... 38 1.11 OutOfMemoryError 避けが悪影響だけ出している.............. 42 1.12 カスタムApplication が本来あるべき振る舞いをしない........... 50 1.13 xml を使わずにコードでView を延々と生成している............. 51 1.14 synchronized がそこら中にある........................ 52 1.15 new を嫌ってローカル変数をフィールドに追いやってる........... 52 1.16 おわりに.................................... 53 第2 章Android100 機種サポートしたいけど10機種しか試験するお金がありませんでした 2.1 はじめに.................................... 54 2.2 ケーススタディ................................. 55 第3 章Google に従わない方が幸せになるかもしれない7 つのケース60 3.1 縦向き(portrait)固定でいい......................... 61 3.2 minSdkVersion はなるべく高くしよう.................... 61 3.3 DialogFragment は素人は諦めよう...................... 64 3.4 PreferenceActivity は古い使い方でいい.................... 65 3.5 ぼっちにContentProvider は要らない.................... 68 3.6 「タブレット向け」ではなく「大きな画面向け」で.............. 69 3.7 下タブはタブじゃないと思いこもう...................... 70 3.8 そうは言っても、原則には従おう....................... 73 第4 章UCD に沿ったアプリ設計の実践~PlayStore で☆ 1 をつけられないために~ 4.1 序論....................................... 74 4.2 UCD という考え方............................... 75 4.3 UCD の実践.................................. 76 4.4 スマートフォンアプリ設計での実践...................... 79 4.5 結論....................................... 81 第5 章Android Gradle プロジェクト逆引きリファレンス 5.1 はじめに.................................... 84 5.2 applicationId を変更したい.......................... 86 5.3 minSdkVersion をbuild.gradle から指定したい............... 87 5.4 targetSdkVersion をbuild.gradle から指定したい.............. 88 5.5 versionCode を算出するロジックを組み込みたい.............. 88 5.6 一部の機能の異なるapk を作りたい...................... 89 5.7 Product Flavor を追加したい......................... 91 5.8 Build Type を追加したい............................ 92 5.9 Build Type でapplicationId を変更したい................... 93 5.10 メソッド数上限を回避したい......................... 95 5.11 ProGuard を有効化したい........................... 97 5.12 使用していないリソースを削除してapk を小さくしたい(1)........ 98 5.13 使用していないリソースを削除してapk を小さくしたい(2)........ 99 5.14 RenderScript Support Library を使いたい.................. 101 5.15 ABI ごとに別のapk を作りたい........................ 102 5.16 density ごとに別のapk を作りたい...................... 104 5.17 ビルドタイプ/フレーバー固有の依存ライブラリを追加したい........ 106 5.18 ビルドバリアント固有の依存ライブラリを追加したい............ 106 5.19 推移的依存関係を管理したい(依存ライブラリの除外)........... 107 5.20 ライブラリプロジェクトをプロジェクトルートの外に置きたい........ 108 5.21 ライブラリプロジェクトをデバッグビルド連動させたい........... 109 5.22 Build Type ごとに異なる値をAndroidManifest に書きたい......... 111 5.23 BuildConfig に定数フィールドを追加したい................. 113 5.24 リリース証明書の設定を外出ししたい..................... 115 5.25 デバッグ証明書をリポジトリに入れて共有したい............... 117 5.26 Android Wear アプリを追加したい...................... 117 5.27 すべてのビルドバリアントに対して処理を書きたい.............. 119 5.28 lint の設定を記述したい............................ 119 5.29 assets 内の特定のファイルを除外したい................... 121 5.30 コンパイル済みのjni ライブラリ(.so)を取り込みたい........... 122 5.31 NDK で*.c や*.cpp ファイルをコンパイルしたい............... 122 5.32 依存ライブラリの重複ファイルを除外/一つだけ取り込みたい........ 124 5.33 apk ファイルのファイル名を変えたい..................... 125 5.34 IDE からのビルドを判別したい........................ 126 5.35 ビルドサーバでのビルドを高速化したい.................... 126 5.36 Gradle ラッパーのバージョンを更新したい.................. 127 5.37 ProGuard のマッピングファイルのパスを取得したい............ 129 5.38 おわりに.................................... 130 第6 章Docker が切り開くソフトウェア開発の未来 6.1 仮想化.................................... 6.2 VM とコンテナに基づくアプローチの違い.................. 132 6.3 コンテナのパフォーマンス........................... 134 6.4 Docker が採用されるのはなぜか........................ 134 6.5 Docker コンテナを用いた一例......................... 135 6.6 VM とDocker コンテナの住み分け...................... 136 6.7 Docker を活かすソフトウェア設計...................... 137 6.8 マイクロサービスを阻む技術上の課題..................... 140 6.9 マイクロサービスを阻む管理上の課題..................... 141 6.10 コンテナ管理サービスの夜明け........................ 142 6.11 クラウド事業者のコンテナ戦略........................ 144 6.12 Docker プラットフォームの未来........................ 146 6.13 Docker 後の世界................................ 149 6.14 最後に..................................... 151 著者紹介