Claude Code × Docker Redmine
連携のすすめ
「AIにコードを書かせる」のはもう当たり前になりました。次の一歩は、AIをプロジェクト管理の輪の中に入れることです。
私は開発タスクの管理に、Dockerで立てたRedmine(レッドマイン)を使っています。そこにClaude Code(Anthropic製のCLI型AIエージェント)を連携させたところ、開発の回り方が一変しました。この記事では「そもそもRedmineって何?」というところから、画面イメージ付きで紹介します。
そもそもRedmineとは?――仕事を「チケット」で管理する道具
Redmineは、無料で使える老舗のプロジェクト管理ツールです。核になる考え方はとてもシンプルで、やること1件を「チケット」1枚にして管理する、それだけです。ホワイトボードに貼った付箋のデジタル版だと思ってください。
チケット1枚には「担当者」「期日」「状態(新規→進行中→終了)」が付き、やり取りは「注記」というコメントとしてチケットに積み重なっていきます。
パスワードに記号が入っているとログインできない。エラーメッセージも表示されない。
原因わかった。入力チェックの正規表現が古い。明日直します。
了解です。直ったら会員ページの方も同じ症状がないか見てもらえると助かります。
LINEやメール、チャットとの最大の違いは「話が流れない」こと。1案件=1チケットなので、「あの件どうなったっけ?」はチケットを開けば経緯ごと全部わかります。
そしてこのチケット管理、実は人間同士で使うよりも、人間×AIのチームで真価を発揮します。ここからが本題です。
なぜ「Docker」で立てるのか
RedmineはDocker(アプリを箱ごと動かす仕組み)を使うと、docker compose up -d というコマンド一発で自分のPCの中に立ち上がります。ホスト環境を汚さず、壊れても箱ごと作り直せばいいので、AIに触らせる実験台としても安心です。つまり「AIが読み書きしやすい管理ツール」を「壊れてもいい形」で持てるわけです。
構成の全体像
自分のPCの中に、この3つをつないだ環境を作ります。
RedmineにはREST APIという「プログラムからチケットを操作する窓口」が最初から付いています。管理画面でAPIを有効化してAPIキーを控えれば、Claude Codeがチケットの検索・作成・注記をすべて代行できるようになります。
セットアップ:docker-compose.yml はこれだけ
設定ファイルはシンプルで大丈夫です。ただし日本語チケットを扱うなら文字コード指定(utf8mb4)だけは必須です。
services:
redmine:
image: redmine:latest
ports:
- "3000:3000"
depends_on:
- db
environment:
REDMINE_DB_MYSQL: db
REDMINE_DB_PASSWORD: example
REDMINE_DB_ENCODING: utf8mb4 # 絵文字・日本語対策で必須
volumes:
- ./files:/usr/src/redmine/files
- ./repos:/repos:ro # 開発リポジトリを読み取り専用で
db:
image: mysql:8
# ここがポイント。MySQL側もutf8mb4で起動させる
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: redmine
volumes:
- db_data:/var/lib/mysql # 消えると困るので名前付きボリュームに
volumes:
db_data:
便利ポイント①:「チケット切っといて」が一言で終わる
Claude Codeに一度APIキーとURLを教えておけば、あとは会話で頼むだけです。
「今日のリファクタリング内容、Redmineにチケット切っといて」
「#123 に調査結果をメモとして残して」
「未完了チケットを優先度順に一覧して」
特に効くのが一括登録です。要件定義の議事録を渡して「これをチケットに分解して全部登録して」と言えば、Claude Codeが数十件のチケットを一気に登録してくれます。手作業なら1時間の作業が1分です。
便利ポイント②:チケット駆動でAIに開発させる
逆方向も強力です。チケットの説明文が、そのままAIへの指示書になります。
「Redmineの #456 を読んで、その内容を実装して。終わったら結果をチケットに注記して」
- 読む:AIがチケット #456 の説明と過去の注記を取得
- 直す:コードを修正し、テストを実行
- 報告する:対応内容・変更ファイル・確認方法をチケットに書き戻し
仕様の置き場所とAIへの指示書が一本化されるので、「チャットに書いた指示が流れて消える」問題がなくなります。
便利ポイント③:「@claude」注記で無人実行まで行ける
さらに一歩進めると、Redmineに注記を書くだけでAIが自動で動く仕組みも作れます。私の環境では、常駐スクリプトが1分ごとに新しい「@claude」注記をチェックし、見つけたらClaude Codeを起動して、結果をチケットに書き戻すところまで無人で回っています。実際のチケットはこんな見た目になります。
@claude この内容で実装して。終わったらテストを回して、結果をこのチケットに注記して。
実装完了しました。forms.py と register.html を修正、確認用メール欄の不一致チェックを追加。テスト12件すべてパス。コミット abc1234(refs #456)。
外出先からスマホでRedmineに注記を書いておけば、帰宅する頃には作業が終わってチケットに報告が付いている――そんな運用が現実になります。
便利ポイント④:git連携でコミットとチケットが繋がる
Redmineには標準でgit連携があります。コミットメッセージに refs #123 と書けばチケットに変更履歴が紐づくので、「このチケット、実際どのコードで直したんだっけ?」がAIにも人間にも一目瞭然になります。Claude Codeにも「コミットメッセージに refs #番号 を入れて」とルール化しておけば、履歴が自動で整います。
ハマりどころ(先に知っておくと楽)
- 文字コードはutf8mb4必須:データベースがデフォルト設定のままだと、絵文字入りの注記を書いた瞬間にエラーになります。AIは絵文字を使いたがるので特に要注意。
- APIキーの管理:キーをコードと一緒に公開しないよう、環境変数か除外設定済みのファイルに置きましょう。
- Windows+Git Bashのパス変換:docker exec にコンテナ内パスを渡すと C:/Program Files/… に化けることがあります。
MSYS_NO_PATHCONV=1を付けると回避できます。 - 自動実行は権限を絞る:@claude自動実行のような無人運用では、削除系・公開系の操作は許可しない設定にしておくのが安全です。
まとめ:AIを「相棒」から「チームメンバー」へ
Claude Code単体でも十分優秀ですが、Redmineと繋ぐことで、開発体験が一段変わります。
- 残る:指示と仕様がチケットとして蓄積される
- 繋がる:コミット・チケット・AIの作業ログが一本の線で追える
- 回る:注記ひとつでAIが動き、報告まで自動で返ってくる
まるでもう一人のチームメンバーを迎えたような感覚です。DockerでRedmineを立てるところまでなら30分もかかりません。
Claude Codeを使っている方は、ぜひ「AIの隣にプロジェクト管理を置く」一手を試してみてください。
アイキャッチ画像:Shipping container stacks – Port of Rotterdam(AgainErick, CC BY-SA 4.0 / Wikimedia Commons)