0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めてのスマホアプリ開発:FoodKeeperをGoogle Playストアに公開するまでの全記録

0
Posted at

📱 はじめに

この記事は、プログラミング初心者が初めてスマホアプリを開発し、Google Playストアに公開するまでの全記録です。食品ロス削減を目指すアプリ「FoodKeeper」の開発から公開までの道のりを、実際の経験とともに詳しく紹介します。

🎯 プロジェクト概要

アプリ概要

  • アプリ名: FoodKeeper(食品管理&買い物メモ)
  • 目的: 食品ロス削減を支援する賞味期限管理アプリ
  • プラットフォーム: Android
  • 開発言語: Flutter/Dart
  • 公開予定: Google Playストア

開発期間

  • 開始: 2026年2月
  • 公開準備完了: 2026年3月
  • 総開発期間: 約1ヶ月

🚀 開発プロセス全体像

フェーズ1: 設計と計画(1週間)

機能要件定義

✅ 基本機能
- 食材の登録・管理
- 賞味期限・消費期限管理
- 買い物リスト作成
- 統計表示
- 通知機能

✅ 高度機能
- バーコードスキャン
- 外部API連携(OpenFoodFacts)
- オフライン対応

技術選定

  • フレームワーク: Flutter(クロスプラットフォーム対応)
  • 言語: Dart
  • データベース: SQLite
  • 外部API: OpenFoodFacts API
  • UIライブラリ: Material Design

フェーズ2: 実装(2週間)

開発環境構築

# Flutterインストール
flutter doctor

# プロジェクト作成
flutter create food_loss_app

# 依存パッケージ追加
flutter pub add sqflite path provider mobile_scanner openfoodfacts

主要機能実装

  1. データベース設計

    • 食材テーブル
    • 買い物リストテーブル
    • 通知設定テーブル
  2. UI/UX実装

    • ホーム画面
    • 食材登録画面
    • 買い物リスト画面
    • 設定画面
  3. バーコードスキャン機能

    • カメラ権限取得
    • mobile_scannerパッケージ実装
    • OpenFoodFacts API連携

フェーズ3: テストと改善(1週間)

テスト実施

  • 単体テスト: 各機能の動作確認
  • 結合テスト: 機能間連携確認
  • UIテスト: ユーザー操作確認

改善点

  • パフォーマンス最適化
  • UI/UX改善
  • エラーハンドリング強化

⏰ 時間配分と課題

開発時間配分

フェーズ 期間 主な作業 課題
設計計画 1週間 要件定義、技術選定 機能範囲の決定
実装 2週間 コーディング、UI実装 バーコードスキャン実装
テスト 1週間 デバッグ、改善 パフォーマンス最適化
公開準備 3日間 ビルド、ドキュメント Google Play Console設定

特に時間がかかった点

1. バーコードスキャン機能(3日間)

// mobile_scannerパッケージの実装
MobileScanner(
  controller: cameraController,
  onDetect: (capture) {
    final List<Barcode> barcodes = capture.barcodes;
    for (final barcode in barcodes) {
      // バーコード情報を処理
      _processBarcode(barcode.rawValue);
    }
  },
)

課題: カメラ権限取得とエラーハンドリング
解決: AndroidManifest.xmlに権限追加、例外処理実装

2. 外部API連携(2日間)

// OpenFoodFacts API連携
Future<Product> getProductInfo(String barcode) async {
  final response = await http.get(
    Uri.parse('https://world.openfoodfacts.org/api/v0/product/$barcode.json'),
  );
  
  if (response.statusCode == 200) {
    return Product.fromJson(jsonDecode(response.body));
  } else {
    throw Exception('Failed to load product');
  }
}

課題: APIレート制限とエラー処理
解決: キャッシュ実装、リトライロジック追加


📱 Google Playストア公開準備

必要な資産と準備

1. アプリ情報

✅ アプリ名: FoodKeeper(食品管理&買い物メモ)
✅ 短い説明: 食品の賞味期限を管理し、ロスを削減するアプリ。バーコードスキャンで簡単登録!
✅ 詳細説明: 4000文字以内の詳細説明
✅ カテゴリ: ライフスタイル > 食品・飲料
✅ タグ: 食品ロス, 賞味期限, 在庫管理, 買い物リスト, バーコード

2. アセット準備

✅ アイコン: 512x512px
✅ 特徴グラフィック: 1024x500px
✅ スクリーンショット: 最低2枚(推奨8枚)
✅ プロモーション動画: なし(任意)

3. 法務ドキュメント

✅ プライバシーポリシー: privacy_policy.html
✅ 利用規約: terms_of_service.html
✅ サポート情報: support_info.md
✅ アクセス権説明: カメラ、インターネット

🔧 技術的な課題と解決策

1. パッケージ名競合問題

問題: com.foodkeeper.app が既に存在
解決: com.foodkeeper.manager に変更

// android/app/build.gradle
android {
    namespace = "com.foodkeeper.manager"
    defaultConfig {
        applicationId = "com.foodkeeper.manager"
        versionCode = 2
        versionName = "1.1.0"
    }
}

2. バージョンコード重複

問題: バージョンコード1が既に使用済み
解決: バージョンコードを2に変更

3. AAB vs APK

問題: APKファイルサイズが大きい(68.7MB)
解決: AAB形式に変更(31.9MBに削減)

# AABビルド
flutter build appbundle --release

# 結果: 68.7MB → 31.9MB (53.6%削減)

📊 開発統計

コード統計

  • 総行数: 約5,000行
  • Dartファイル: 15個
  • 依存パッケージ: 12個
  • データベーステーブル: 3個

ビルド時間

  • デバッグビルド: 約30秒
  • リリースビルド: 約2分
  • AABビルド: 約2分

🎯 学びと教訓

良かった点

  1. Flutterの選択: クロスプラットフォーム対応で効率的
  2. 外部API活用: OpenFoodFactsで機能充実
  3. 段階的開発: 基本機能から順次実装

改善点

  1. 要件定義: 最初の段階でより詳細に定義すべき
  2. テスト計画: 早期からテストを組み込むべき
  3. 公開準備: もっと早くから準備を始めるべき

初心者へのアドバイス

  1. 小さく始める: まずは基本機能から
  2. ドキュメント重視: 開発記録を残す
  3. コミュニティ活用: Stack Overflow、GitHubを活用
  4. 継続的学習: 新しい技術を積極的に学ぶ

🎉 まとめ

初めてのスマホアプリ開発は、多くの学びと発見の連続でした。特に、技術的な課題解決とGoogle Playストア公開準備のプロセスは、実践的な経験を積む絶好の機会となりました。

この記事が、これからスマホアプリ開発に挑戦する初心者の方々の参考になれば幸いです。

開発リポジトリ

開発期間: 2026年2月〜3月
総作業時間: 約100時間
記事作成: 2026年3月6日

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?