俺自身は説明そんなに得意じゃないので、ソース見てもらった方が早いかも。
とりあえず、公開できるレベル?まで漕ぎつけたので、公開してみました。
最初の大前提としての話
- 今回はAndroidで時計アプリを作成してみる
- どうせならUIも後でCrossPlatform対応できそうなFlutterを使う
- 可能な限りAIに任せるが、認識違い、動作的に気に食わなければ自分でやる
- 自動処理は、指示した範囲内のみだけ行わせ、自律的な動作はあまりさせない
- 夜中に勝手に処理させとくとかは、させない。こちらが確認出来なくなるので
- 最終的に public 公開して、Portfolio 代わりにする
- 完成しなかったら、AIってまだそんなもんなんだと諦める
覚えてる限りでやってること
- Claude.ai と設計・詳細仕様・ADRとかを相談して草案を作成
- ClaudeCodeに投げ込んで、詳細を詰める
- ある程度纏まったら、タスクと優先順位を分けて、スケジュールを作成
- 基本的に、実作業は Claude Opus にほぼ丸投げ
- 質問や疑問点には答えつつ、方向性は維持
- 途中から、「テスト駆動開発」も導入した
- UnitTestもEspresso?とか入れられるものは入れてみた
- CI/CDは、GitHubActionに設定、
- 常にgreenじゃないとPullRequestのマージは禁止する
- 途中から、StartupPromptを生成して読ませるようにした
- 友人からAIの「ロール固定」の助言を聞いたため
- これが発生すると、最初の3度の会話で動作が固定されたりするみたい
- それを最大限防いで、指示した作業を行わせるためのStartupPromptを作成
- 実務だとよくある「途中での大がかりな仕様変更」も悪戯で追加してみた
- 多言語対応と、世界時計(各国の時差が確認できる機能)を追加
あと何やったっけ……。
結果
なんか出来たし、public公開までこぎつけた。出来るもんなんだなぁ。
正直、実務の時よりテストも CI/CD を回しちゃってるので、ちょっとビックリしてる。
どうやったら出来んの?
- Claude.ai を使って、仕様を決めます
- ClaudeCodeに書類全部投げ込みます
- 詳細仕様を作ります
- 実装します
- テストを作らせます
- GitHubActionでCI/CDやらせます
- CodeReviewをAutoでやらせます
- StartupPromptをChat開始時に必ず読ませる
- StartupPrompt の内容は、各自で調整
何か問題あった?
Opus だとあまり起きなかったけど、
「ハルシネーション」には注意しなきゃだし、
「最新情報の未取得」「根拠が正しくない」「URLが提示できない内容」は、
気を付けて精査しないといけなかった。
あと学習セットというかデータセットが小さいと、すぐに適当なこと言う。
大きいと逆に勘違いしたり、「やってほしくないこと」までやろうとするから、
今の段階だとしっかりニンゲン側が管理・整理・操作しないとダメだなって言う印象。