📖

Claude Code + Tmuxによる並列AIエージェントでタスク管理アプリを作ったが、実用化は難しいなと思った話

に公開

はじめに

AI駆動開発という言葉やClaude coodeのすごさに取り付かれて、
Tmux + Claude coodeを使用して各ペインでClaude coodeを並列に動かしてシステム開発をしてもらう仕組みを試しました。

実際に試してみると、いろいろ知見が得られたので殴り書きメモをします。

先に結論

詳細は口述しますが、完全自動化はほぼ無理です。
しかし、エンジニアの作業は大きく省略できます。
Claude Codeほど優秀な生成AIでも、人間側がアウトプットを精査する必要性が強いと感じました。

今回のアプリを作るうえで、

  • タスク途中なのにエージェントが止まる
  • PM役エージェントがメンバーにタスクを触れずに止まっている
  • 私が環境を動かそうとしたらエラーがでる(つまりPM役が動作確認をできていない)
  • 単体テストがPassしない or 実行できない
  • 古いドキュメント削除せずに残してしまう
  • 1つのタスクで異常なトークンを消費する
    など問題が多く発生しました。

単体テストのPassなどはプロンプトに明示しましたが、Passしないものがアウトプットされるため、
プロンプトの書き方が悪いところもありました。
Claude coode側でoverloaded_errorが発生して、こちらではどうにもならない問題も発生するため、X(旧Twitter)などで騒がれるほどの実用性を今回は感じませんでした。

まだまだ改善余地があるため、これからも色々試していこうと思います。

Claude Code + Tmuxによる並列実行

Claude codeとは

Claude Codeは、Anthropic社が開発したAIアシスタント「Claude」をターミナル上で使用できるツールです。
大雑把に表現すると、ターミナルなのにチャット形式で生成AIを使えるということです。

Tmuxとは

Tmuxは、1つのターミナル画面を複数の仮想端末(ペイン)に分割して同時操作できる端末マルチプレクサーです。ペイン同士でコマンドのやりとりなどができます。
大雑把に表現すると、複数のターミナル(本当はペイン)を起動して相互通信できるということです。

Claude Code + Tmux

Claude Code + Tmuxにより複数に分けたペインが同時にClaude Codeを使って、コーディングしてくれます。
ユーザ側が入力しなくとも複数のAIエージェントとやり取りできます。
これにより、複数のAIエージェント(Claude code)が同時にコーディングしてくれます。

並列実行の概要は↓の方々が分かりやすく紹介しています。すごく助かりました。
https://zenn.dev/kazuph/articles/beb87d102bd4f5
https://note.com/natty_puma9348/n/nc3329fe4e101

できたアプリ

https://github.com/dbd-fish/claude-code_task-system


上記のようなアプリができました。
フロントはReact、バックエンドはExpress、DBはPostgreSQLを使用しています。
技術選定もClaude Codeに丸投げしました。

詳細な挙動は下記のGIFに掲載します。

↓GIF
https://github.com/dbd-fish/claude-code_task-system/blob/main/タスクアプリ.gif

作業内容

前提

環境

  • Windows端末
  • WSL(Ubuntu)でTmuxとClaude Codeを起動。
    • rootユーザーでは claude --dangerously-skip-permissionsが実行できないため、専用ユーザーを使用
  • ClaudeはProプラン
  • Docker Desktopをインストール済。権限的にUbuntu側の専用ユーザーも使用可能
  • ソースコードなどは何も準備していない

作業の流れ

色んな記事を参考にプロンプトを準備

Tmuxで開発用のセッションを開始

PM役のペインに事前ドキュメント(claude-tmux.md)を読むことを指示。
この時点で必要な作業がタスク化される。
あとはPM役が他ペインに作業振ってくれる

たまにタスク未完了でPM役やメンバー役が止まる。その場合は再度指示をだす。
レート制限に達した場合なども止まるため、再度指示をだす。

PM役から完了報告がきたタイミングで私が動作確認&修正

完成

完成品の所感

ちゃんとhttp://localhost:3000/でアクセスするとタスクの登録更新削除ができるアプリを作ってくれました。
ただし、要求していないログイン機能も勝手に実装しており、要件通りのシステムではないです。
画面レイアウトはきれいにデザインされておりレスポンシブ対応もされているため、いい意味でも勝手に実装してくれました。

単体テストやLintを確認するように事前ドキュメント(claude-tmux.md)に記載しましたが、
そもそもテストが動かないため私が修正しました。
テストが動いても半分以上のテストが失敗していました。

今回の問題点

今回の作業からClaude Code + Tmuxによる並列実行に色んな課題がありました。
下記に列挙します。

  • 事前ドキュメントのルールを守らない

    • テストやLintの実行
    • トークン数の監視(これは無理かも思ってた)
    • 環境構築手順の最終確認
    • Claude Code内のメッセージやりとりをログファイルに残すように指示したができていない(これは無理かも思ってた)

    など

  • ドキュメントやタスクなどが英語化されていた

  • Docker環境構築など初期段階でユーザー側の補助がかなり必要

  • PM役が完了報告した時点のプロジェクトに問題がある

    • Docker立ち上げでエラー
    • ログインできない
      など
  • レート制限に達した場合はユーザーの操作が必須となる

  • Claude側でエラーが発生する場合もユーザーの操作が必要

  • 環境構築手順書など内容が重複したドキュメントを複数作成してしまい、古いファイルを削除してくれない

  • 機能要件を明記しても不要な機能を実装する

特にユーザー側の操作は思った以上に必要でした。
最初の開発環境構築はこちらが作成したほうが早いかもという印象です。
PM完了報告後もユーザー側の修正が多く、思ったより楽はできませんでした。

改善余地

  • プロンプトとなる事前ドキュメント(claude-tmux.md)の改善
    • PM役とメンバ役の振る舞いをもっと明確にする
    • テストやLintの実行方法を具体化して、AIに確認させる
    • 人間もわかりやすい記述にする
      など
  • 事前に開発環境をある程度準備する
  • Claude をMAXプランに変更する

最後に

Claude Code + Tmuxによるアプリ開発自動化を仕事に取り入れることは難しそうでした。
「AIによりコードが分からなくてもプログラムが作れる!」という耳障りのいい言葉を見かけますが、
結局は責任をとる人間側が品質担保するために、人間がプログラムなどの技術的知見を持つことが大切だと感じました。

現状ではAI駆動開発と呼べるほどClaude Code + Tmuxによる自動開発により効率化できていないため、もっといろいろ試してみます。

Claude Code + Tmuxによる自動開発を試した人たちは、実際にアプリを完成させるところまでどうやってたどり着いたのでしょうか。。もしかしたらアプリ完成までは試していない?

Discussion