こちらの続きです。
前回の投稿からだいぶ時間が空いてしまいましたが、ようやくアプリをリリースしました。
📱 リリースしたアプリ(iPhoneだけです💦)
問題集アプリです。
自分で問題を登録して隙間時間の学習などに役立てられると思います。
多肢選択、穴埋、記述形式の問題集や単語帳機能もあります。
オフラインで使えることや、自分で自由に問題集をカスタマイズできるようになっています。
インストールするだけでは問題は入っていないので、自作(アプリで作るでもcsvをインポートするでも可)するか、問題集配布をしていますのでそちらを取得してください。
問題集は「情報」ページ内のLINEチャネルから取得できるようにしています。
※現在は問題数が少ないですが、今後徐々に追加予定です。
※この問題集を活用して取得した資格もあるので、受験体験記として後日投稿します。
※問題集や単語等のリクエストや使い方のご質問はコメント欄へどうぞ。
🔍 リリース前のテストとコードレビュー
同僚などにも触ってもらい、テストを重ねながら改修を行い、最終的には以下の2つの手法でコード品質を確認しました:
- GitHub Copilot によるレビューと改善提案
- Flutter Analyze による静的コード解析
Flutter Analyzeとは?
flutter analyze は、Flutterプロジェクトのコードを静的解析するコマンドです。
コードの品質を保ち、潜在的なバグや非推奨の記法を早期に発見するために活用します。
🛠 主な機能
- 構文エラーの検出(タイプミス、未定義変数など)
- 型チェック(型の不一致や不明な型)
- 未使用コードの警告(importや変数)
- 推奨スタイルの提案(Dartのベストプラクティス)
📦 使用方法
flutter analyze
プロジェクトルートで実行すると、すべてのDartファイルが対象になります。
🎯 オプション例
flutter analyze lib/
特定ディレクトリのみ解析したい場合。
flutter analyze --watch
ファイル変更を監視し、リアルタイムで解析(Flutter 3.13以降)。
✅ 効果的な使い方
- CI/CDパイプラインに組み込んで品質チェックを自動化
-
analysis_options.yamlでルールをカスタマイズ
🧹 修正ログ
初回解析結果(抜粋):
> flutter analyze
Analyzing quiz_app...
warning - Unused import: 'package:uuid/uuid.dart' - lib\manage_questions_screen.dart:10:8
info - Don't invoke 'print' in production code - lib\quiz_screen.dart:90:7
error - The method 'loadTheme' isn't defined - test\widget_test.dart:10:24
error - The function 'JikomonApp' isn't defined - test\widget_test.dart:11:29
...他にも多数
43 issues found. (ran in 10.0s)
修正後:
> flutter analyze
warning - The operand can't be 'null', so the condition is always 'true' - lib\quiz_set_repository.dart:379:25
1 issue found. (ran in 12.3s)
※この警告は Dart の型システムにより null にならないことが保証されているため、意図的に残しています(戻すとエラーになるため)。
🧠 VibeCodingをやってみて — 工夫と感想
AIと協働する「VibeCoding」スタイルで開発を進めてみて、いくつかの工夫と気づきがありました。
🔧 工夫したこと
-
セッション開始時にルールを明示
品質が変わるため、毎回AI向けガイドラインを読ませていました。
→ AI向けガイドライン
-
セッションを使い分ける
長く続けるとバイアスがかかるため、コーディング用・確認用など分けて運用。 -
複数LLMを活用
行き詰まったらCopilotやChatGPTで部分的に相談。画面キャプチャでも対応可能。 -
こまめなバックアップ
修正の修正で不具合が連鎖することがあるため、復元可能な状態を常に確保。
※復元後はセッションを改めるのが安全。
💬 感想
アプリ開発そのものは、AIの力を借りることで驚くほどスムーズに進めることができました。
むしろ大変だったのは、リリースに向けたビルドや審査対応です。個人開発では特に、ここが最大のハードルになると感じました。
AIは、個人開発レベルでは非常に頼れるパートナーです。
大規模開発においても以下のような工夫をすれば、十分に活用可能だと思います:
- 開発ルールの整備(命名規則、責務分離など)
- オブジェクト指向の徹底などベストプラクティスの遵守
- シークレット管理や情報秘匿の徹底
- 明確な役割分担と責務の明文化
- バックアップと構成管理の仕組み化
- 操作・変更履歴の可視化とトレーサビリティの確保
これらを意識することで、AIは単なる補助ではなく、本当に協力な開発パートナーになります。
特に、ルールを守りながらセッションを設計することで、AIの出力品質も安定し、再現性のある開発が可能になると思います。
実際にやってみて最も感じたのは、AIは「今まで挑戦できなかった領域」への挑戦を後押しし、人が成長するきっかけを与えてくれる存在だということです。
最後まで読んで頂きありがとうございました。
