個人開発のログです。
作っているもの
AppleのメモアプリをSSOT(Single Source of Truth)として、外部のブログサービスなどに発信するツール。個人的にメモアプリをよく使っていて、テキストメモや音声認識を使った入力、ブックマーク代わりにURLを保存などを行っています。
そこで、このメモアプリをNotionのWeb公開風に使えると便利だなと思って作り始めました。
機能
メモの内容をそのままWeb化はできないので、外部サービス連携する形で進めています。プラットフォームとしては、以下を想定しています。
- Qiita
- zenn
- note.com
- はてなブックマーク
- Dev.to
- Hugo
- Jekyll
辺りへの公開を想定しています。メモアプリのフォルダを指定して、その中にあるメモを記事として公開したり、貼り付けてある画像をAmazon S3やCloudflare R2などへアップロードして埋め込んだりできる想定です。
開発の進め方
Claude(GUI版)のチャットで壁打ちしていきます。各種ブログサービスへのエクスポート(アップロード)はなるべくCLIやGit連携を使う形で進めています。CLIを使う形だと、AIが余計な実装をしなくなり、コードが減る分ミスも減ります。
要件が固まったら、requiments.mdを書くためのプロンプトを作ってもらいました。ここまででチャットは終了です。
Issue作成まで
次はClaudeのコード(GUI版)に移ります。あらかじめGitHubでリポジトリも作っておきます(中身は空)。そのリポジトリを指定して、先ほどのrequiments.md作成のプロンプトを実行します。
requiments.md作成のPRを作った段階でCodeRabbitのレビューが実行されます。レビューが終了したら、その妥当性を判断した上で修正してもらいます。人間(私)もこの時点でレビューします。
requiments.mdが終わったら、同じようにdesign.mdとtasks.mdも作成していきます。
tasks.mdができあがったら、その内容を全てGitHub Issueに展開してもらいます。
tasks.mdの内容を、全てGitHub Issuesに登録してください。
descriptionには、概要と要件、完了要件など実装計画を立てるのに必要な情報を全て記載してください。
これで28個のタスクができあがりました。Tipsとして、各Issueの中に完了要件を書くようにしておくと、その内容に沿ってCodeRabbitがレビューを実行するようになります。
ループエンジニアリングで処理
あとは /goal を使ったループエンジニアリングで処理していきます。使っているのはFable 5です。
/goal GitHubのIssueがなくなるまで実装して。処理内容は以下の通りです。実装は必要に応じてサブエージェントに分けて行ってください。Fable 5だけで実装するのはコストが高いです。
1. gitブランチを作成
2. 各タスクに対して、 `@coderabbitai make plan in Japanese` とコメントして。
3. @coderabbitai から返答が来るまで待つ(5〜10分かかります)
4. 実装計画が返ってくるので、コメントの中に書かれているAIコーディングエージェント向けの実装プロンプトを読み込み、その妥当性に従って実装を進めてください
5. 実装が終わったら、PR作成まで進めてください。descriptionに fix #(IssueのID) を記述してください
6. CodeRabbitのレビューが終わるまで待機してください(5〜15分かかります)
7. レビュー内容を読み込んで、 Prompt for AI Agents ではじまる内容を取得し、修正を行ってください
8. 修正が終わったらプッシュし、再度CodeRabbitのレビュー完了まで待機してください
9. 修正がなくなったらPRをマージしてください
Claudeのデスクトップ版のCodeは、クラウド側にコンテナが立ち上がって処理が進むので、ノートパソコンは閉じていても勝手に進むのが便利です。
実行例は以下のようになります。ClaudeとCodeRabbitがバチバチにやり合いながら開発が進んでいます。
品質を上げる工夫
tasks.mdだけを処理していく場合、途中でチェックのし忘れが発生したり、詳細な実装要件が取りこぼされることがあると思います。一旦GitHub Issueに登録することで、GitHub Issueのメンテナンスさえすれば、コーディングはClaude Codeに任せられる状態になります。この方が人がリポジトリに介在する必要なく、コンフリクトも発生しません。Markdownファイルの肥大化を避けられ、コンテキストもIssue毎に制限できます。
もう一つGitHub Issueに登録する利点として、CodeRabbit Planが使えます。CodeRabbit Planを使えば、現在のコードベースや関連するIssueも含めた実装計画を作成できます。少ないコンテキストだとハルシネーションが発生しやすいですが、CodeRabbit Planで適切な指示を与えられるようになります。
レビューについてもメリットがあります。 Fix #1 のようにIssueのIDをPRの内容に書くことで、CodeRabbitのLinked Issueが有効になります。Issueに書かれた完了要件を使ってレビューを行うようになるので、レビュー精度を上げられます。
進捗
20時間くらい連続で動かしていますが、特に問題なく進んでいます。20時間で26個Issueをクローズして、残り2個となっています。
実装はサブエージェントに任せることで、コンテキストウィンドウの過剰な消費も避けられているようです。
ただしレビュー回数が増える傾向にあるので、CodeRabbitのレートリミットに引っかかるケースが増えています(Pro+なのに…)。記事を書いている時点で、50分待ちとなっていました。ただ、Claude Codeが賢いので、ちゃんとその時間を待った上で @coderabbitai review とコメントしてくれており、レビューを手動発火させてくれています。
注意点
今回の実装は、あくまでも個人利用兼新規開発だから成り立っています。組織開発や、暗黙知の多い既存案件などで適用すると、トラブルに発展する可能性が高いので注意してください。
Issueにしても自動ですべて行うよりも、適切にメンテナンスした上で特定のラベルを付けたIssueに限定したほうが良いでしょう。あと、自動マージも怖いので実装・レビュー・修正までで完了するのが得策です。
まとめ
ちょっとしたツールであれば、ループエンジニアリングで1日程度で完成できそうです。Claude CodeなどのAIコーディングエージェントにすべて任せると割と思っていたものと違う…みたいなことが起きがちですが、CodeRabbitのPlanとレビューで挟んであげることで、安定して実装が進められるかと思います。
ぜひお試しください。


