【実務編 第8回】リリース品質に仕上げよう

社員ブログ

※Claude Codeを使用して記事を作成しています。

シリーズ:Claude Codeで実務Androidアプリ開発

  • 第1〜7回:ログイン・認証・Firestore・Push通知・地図・カメラ・パフォーマンス
  • 第8回:リリース品質に仕上げよう ← 今回

はじめに

シリーズ最終回は「本番リリースに向けた仕上げ」です。
機能はひと通り完成していますが、実際にユーザーに届けるには品質・セキュリティ・保守性の観点での準備が必要です。

「動くアプリ」と「リリースできるアプリ」は違います。

今回の内容を終えると、自信を持ってGoogle Playに公開できる状態になります。

今回取り組む内容

内容目的
クラッシュログの収集本番環境で起きたエラーを把握・修正できるようにする
Firestoreセキュリティルール他のユーザーのデータを読み書きできないようにする
機密情報の管理APIキーなどをコードに直書きしないようにする
バージョン管理の整備アップデートを安全に配信できる仕組みを作る
強制アップデート対応古いバージョンのユーザーにアップデートを促す

Step 1:クラッシュログの収集を設定する

本番環境でアプリがクラッシュしたとき、原因を調べられる仕組みを入れておきます。
Firebase Crashlyticsを使います。

✍️ Claude Codeへの指示例:

Firebase Crashlyticsをプロジェクトに導入してください。

・libs.versions.tomlを使ってライブラリを追加する
・クラッシュが発生した際にFirebaseコンソールで内容を確認できるようにする
・テスト用にクラッシュを意図的に発生させるボタンを設定画面に追加する
(リリース時は非表示にする)

💡 Crashlyticsを入れると何が便利?

ユーザーのスマホでアプリが落ちたとき、どの画面で・どんな操作をしたときに落ちたのかが自動でFirebaseコンソールに送られます。
ユーザーから「アプリが落ちます」と報告が来たときに原因がすぐわかります。

Step 2:Firestoreのセキュリティルールを設定する

開発中は「誰でも読み書きできる」テストモードでしたが、本番では自分のデータだけ操作できるようにします。

✍️ Claude Codeへの指示例:

Firestoreのセキュリティルールを本番用に設定してください。

以下のルールを適用してほしいです。
・ログイン済みユーザーのみ読み書きできる
・自分のユーザーIDに紐づいたメモのみ読み書きできる
・他のユーザーのデータは読み取りも書き込みもできない

設定するルールの内容と、Firebaseコンソールでの設定方法も教えてください。

Firebase Consoleの「Firestore Database」→「ルール」タブに以下のルールを設定します(Claude Codeが生成してくれます):

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /memos/{memoId} {
      allow read, write: if request.auth != null
        && request.auth.uid == resource.data.userId;
      allow create: if request.auth != null
        && request.auth.uid == request.resource.data.userId;
    }
  }
}

Step 3:APIキーを安全に管理する

Google MapsのAPIキーやその他の機密情報をコードに直書きするのはリスクがあります。

✍️ Claude Codeへの指示例:

コードに直書きしているAPIキーなどの機密情報を安全に管理する方法に変えてください。

local.propertiesファイルに移動して、BuildConfigを経由して参照する方式にしてください。
local.propertiesは.gitignoreに追加してGitHubに公開されないようにしてください。

Step 4:バージョン管理を整備する

アップデートを安全に管理するための設定を整えます。

✍️ Claude Codeへの指示例:

バージョン管理を整備してください。

・現在のversionCodeを1、versionNameを「1.0.0」に設定する
・リリースビルドとデバッグビルドでアプリ名を変えてほしい
 (デバッグ時は「MemoApp (dev)」、リリース時は「MemoApp」)
・デバッグビルドとリリースビルドでアプリのアイコンを変えてほしい
 (デバッグ時はアイコンにオレンジのバッジが付く形にする)

Step 5:強制アップデート機能を実装する

深刻なバグや仕様変更があった場合、古いバージョンのユーザーにアップデートを促す仕組みを入れておきます。
Firebase Remote Configを使います。

✍️ Claude Codeへの指示例:

Firebase Remote Configを使った強制アップデート機能を実装してください。

・アプリ起動時にRemote Configから「minimum_version」の値を取得する
・現在のアプリバージョンが minimum_version より古い場合、
 「このバージョンは古くなりました。アップデートしてください。」というダイアログを表示する
・ダイアログのボタンを押すとGoogle Playのアプリページが開く
・ダイアログは閉じられないようにする(アップデートするまで使えない)

Step 6:リリース前の最終チェック

✍️ Claude Codeへの指示例:

Google Playにリリースする前に、以下の点を確認して問題があれば修正してください。

・不要なデバッグ用コードやログ出力が残っていないか
・テスト用ボタン(クラッシュテスト・デバッグ通知など)が非表示になっているか
・リリースビルドでアプリが正常に動作するか
・ProGuardの設定で必要なクラスが難読化から除外されているか

動作確認チェックリスト

  • [ ] Firebaseコンソールの「Crashlytics」でアプリが検出されている
  • [ ] テスト用クラッシュボタンを押すとCrashlyticsにログが届く
  • [ ] 別のユーザーのメモにアクセスできないことを確認(テスト用アカウントで試す)
  • [ ] local.propertiesがGitにコミットされていない
  • [ ] デバッグビルドのアプリ名が「MemoApp (dev)」になっている
  • [ ] Remote Configで古いバージョンを指定するとアップデートダイアログが出る
  • [ ] リリースビルドでアプリが正常に動作する

まとめ

学んだことポイント
Crashlytics本番のクラッシュを自動収集。リリース前に必ず入れる
セキュリティルール自分のデータ以外は読み書きできないルールを本番前に設定する
APIキーの管理local.propertiesに移動してGitに含めない
強制アップデートRemote Configで最低バージョンを管理

シリーズを通して作ったもの

全8回でメモアプリに実装した機能を振り返ります。

実装した機能
第1回ログイン画面・新規登録画面・バリデーション
第2回Firebase Authentication・Googleログイン・ログイン状態管理
第3回Firestore連携・メモのCRUD・リアルタイム同期
第4回ローカル通知・リマインダー設定・通知からの画面遷移
第5回Google Maps・現在地取得・位置情報の保存と表示
第6回カメラ・ギャラリー選択・Firebase Storageへの画像保存
第7回画像最適化・無限スクロール・オフライン対応・メモリ管理
第8回Crashlytics・セキュリティルール・APIキー管理・強制アップデート

これらはすべてClaude Codeへの日本語指示で実装してきました。
実務のAndroidアプリに必要な技術を、コードを一から書かずに習得できたのは、Claude Codeという相棒がいたからです。

次は自分のアイデアで、本格的なアプリ開発に挑戦してみてください!

タイトルとURLをコピーしました