メインコンテンツに移動

Claude Code にコードを全部書いてもらって、「ババ抜き AI」を作った話

2026-11-04 | Author : 野口 優真, 久野 康貴, 石崎 翔

Missing alt text value

はじめに

こんにちは。ソリューションアーキテクトの野口 優真です。

2026 年 6 月、幕張メッセで開催された AWS Summit Japan の Builders' Fair に、同期と「ババ抜き AI」を出展しました。Builders' Fair は、AWS のエンジニアが作ったものを持ち寄り、来場者に体験してもらう展示エリアです。
私たちのブースでは、ロボットアームと来場者 2 人がテーブルを囲んで、3 人でババ抜きをしていただきました。

作ったのは、私を含む 2025 年入社の新卒の同期です。ロボットアームを扱った経験は、誰にもありませんでした。それでも展示が形になったのは、コードを書く仕事をまるごと Claude Code に預けたからです。アームの制御も、カメラやセンサーの処理も、ゲームの進行も、AWS との接続も全てです。開発は業務の合間の実質 1 ヶ月だったので、人間だけで書いていたら間に合わなかったと思います。

もっとも、「書いてもらえば終わり」ではありませんでした。コードは 1 分で出てきても、アームを動かすと平気でカードにぶつかります。

この記事では、何をどう頼み、どこでつまずいて、実機でどう確かめたのかを紹介します。
 

X ポスト » | Facebook シェア » | はてブ »

Missing alt text value

builders.flash メールメンバー登録

builders.flash メールメンバー登録で、毎月の最新アップデート情報とともに、AWS を無料でお試しいただけるクレジットコードを受け取ることができます。

今すぐ登録 »

ロボットとババ抜きで対戦する

卓上には、ロボットアームと 3 台のカードホルダーが並んでいます。使うのは 7 種類 × 2 枚にジョーカーを足した計 15 枚。来場者 2 人とロボットに 5 枚ずつ配り、ペアを捨てて、順に相手の手札から 1 枚引きます。最後にジョーカーが残った人の負けです。

ロボットの目は、天板の真上に取り付けたカメラです。カードとホルダーに貼った ArUco マーカー (OpenCV で読み取れる白黒の二次元マーカー) を読んで、誰が何枚持っているかを把握します。人間同士の手番のあいだも、カメラは場を追い続けます。

この展示の中心は、カードを引くときの駆け引きです。自分の番が来たロボットは、狙いを決めても、いきなり引き抜きません。カードに触れたまま一度止まり、そのあいだに正面のカメラで相手の顔の特徴点を読み取ります。

あわせて手元の GSR センサー (皮膚の電気抵抗の変化を測るセンサー) で、緊張の揺れも捉えます。ジョーカーに手がかかった瞬間、人はどこかに反応が出るはずだ、という読みです。その読みを、引くカードの選択に使っています。逆に自分がジョーカーを持ったときは、それまでの対戦でよく引かれた位置に差しておきます。

看板で「AI を騙し通せる ?」と銘打ったのは、この仕掛けがあるからです。

卓の後ろのディスプレイには、ロボットが見ている場の状況と、ジョーカーの位置の推定を映しました。

Claude Code に書いてもらったもの

冒頭で、コードを書く仕事はまるごと預けたと書きました。具体的には次の範囲です。

部分
書いてもらったコード
ロボットアーム

動きの記録と再生、カードをつかんで運ぶ制御、位置の補正

カメラとセンサー

カードのマーカー認識、顔の特徴点の抽出、GSR センサーの読み取り

ババ抜き

Amazon Bedrock の呼び出し、Amazon Polly での読み上げ、Amazon DynamoDB への保存、AWS CDK のコード

AWS

Amazon Bedrock の呼び出し、Amazon Polly での読み上げ、Amazon DynamoDB への保存、AWS CDK のコード

表示と確認

観客向けの画面、自動テスト、実機確認や起動のためのスクリプト

エージェントと人間の役割分担

最初はチャットで「こう動かしたい」「ここを直したい」と、そのつど実装を頼んでいました。

ただ、作るものが増えてくると、実装より手前の「どの方式でやるか」で迷う時間のほうが長くなります。カードの見分け方や、アームの動かし方がその典型です。

そこで、コードを書く前の調査と設計も Claude Code に頼み、出てきた比較を私たちが確認して方式を決めてから、実装を任せる形に変えました。

レビューも Claude Code です。モジュールごとに別のエージェントに読ませ、集まった指摘をさらに別のエージェントに検証させる。最後に残った指摘から、直すものを私たちが選びました。

書くのも読むのもエージェントで、人間は決めるところだけ、という分担です。

Missing alt text value

実装の前に、候補を調べてもらう

調べてもらったことには、たとえばカードの識別があります。市販のトランプはアームの指ではつかみにくく、裏面を見ても 1 枚 1 枚の区別がつきません。カードを自作することは早くから決めていましたが、何を目印に見分けるかが決まっていませんでした。

Claude Code に調査を頼むと、8 案が返ってきました。裏面にマーカーを貼る、絵柄を機械学習で見分ける、NFC タグを埋め込む。それぞれの案に、読み取りやすさと、準備にかかる日数や費用の比較が付いています。採用しない理由も書くように頼んだのがポイントです。

カードの上端に載せる小さなマーカーは、今回のカメラでは読み取れない。機械学習での絵柄認識は、残りの日数では準備が間に合わない。

消去法まで見えていれば、私たちは選ぶだけで済みます。選んだのは、裏面に ArUco マーカーを置く案でした。

方式が決まれば、あとはマーカーの検出と、カードをホルダーの位置に対応づける処理を実装してもらうだけです。

この「先に調べさせて、決めるのは人間」という頼み方は、次に紹介するアームの動かし方の検討でも、そのまま使うことになります。

カード識別方式の比較

Claude Code が調べた 8 案から 3 案を抜粋

候補
今回の条件で考えたこと
判断
裏面にArUco マーカー

OpenCV の既存機能でそのまま読み取れる

採用

 

絵柄を機械学習で識別

残りの日数で準備するのが難しい

見送り

カードの上端にマーカー

今回のカメラでは小さすぎて読めない

見送り

アームの動かし方を変える

アームへの最初の指示は、素直なものでした。「この座標からこの座標へ動かして」。6 つの関節の角度を始点から終点まで線形に補間するコードが、1 分ほどで出てきます。正直、これは楽勝かもしれないと思いました。

ところが、実機で動かすとアームはカードに突っ込みました。コードのバグではありません。手先の位置は 6 つの関節の角度の組み合わせで決まるので、各関節を一定の速さで動かしても、手先はまっすぐには進まないのです。

軌跡は途中で膨らむ曲線になり、その途中でカードの上端に当たる。経由点を増やしても、曲線であることは変わりませんでした。間違っていたのはコードではなく、指示の出し方のほうだったわけです。

そこで、方式ごと変えました。アームを手で持って動かし、その軌道を記録して、本番では再生する。「相手の席に近づく」「カードをつかむ」「自分のホルダーへ運ぶ」という一連の動きを、実際にアームを握って覚えさせました。

カードを差す位置ごとに軌道を録るのは大変なので、席ごとに基準の軌道を 1 本だけ録り、カードの位置に合わせて終点を補正します。出発と帰着は必ず、人間が教えた形をなぞる設計です。

Claude Code には、この記録と再生の仕組みを伝えて、制御コードを書き直してもらいました。最初に紹介した「触れたまま止まって様子をうかがう」動きも、実はこの方式の上に乗っています。接近の軌道を途中まで再生して止まり、相手の反応を見て、つかむか、狙いを変えるか、戻るかを選ぶ。

駆け引きに見えた動きの正体は、録画の再生と、止まった先での三択でした。

カードとホルダーも自作した

ソフトウェアの外にも、作るものは残っています。卓上のカードとホルダーは、ほぼ全部自作です。

カードの裏面は、中央に AWS のロゴ、その上下に ArUco マーカーを置いたデザインにしました。A4 に並べて印刷したものを厚紙に貼り、1 枚ずつ手で切り出しています。

ホルダーは、探しても市販品が見つかりませんでした。「アームが垂直に引き抜ける」かつ「マーカーがカメラから見える」という条件を両方満たす製品は、さすがに売っていません。このため、カードを差す 6 つのスロットを円弧状に並べた形をメンバーが設計し、3D プリンタで出力しました。

Missing alt text value

MacBook と AWS をつないだ構成

ここまでの Claude Code は、開発する側の生成 AI でした。 完成したロボットの中では、別の生成 AI が対戦する側として動いています。 構成は単純で、卓上の MacBook 1 台が Amazon Bedrock、Amazon Polly、Amazon DynamoDB を直接呼ぶだけです。

実際の処理

役割の線は、来場者のデータを境に引きました。カメラの映像、顔の特徴点、GSR センサーの値は、すべて MacBook の中で処理して外に出しません。クラウドに渡すのは、場の状況を数値やテキストにしたものだけです。

Amazon Bedrock の Claude Haiku 4.5 が返すのは、次の一手そのものではなく、「いまのロボットが何を重視するか」という採点の重みです。MacBook 側はその重みで候補の行動を採点し、次の動きを選びます。天秤に載っているのは、得られる情報と、動作にかかる時間と、そのまま引いてジョーカーをつかんでしまうリスクです。

会場で測った応答時間は中央値で約 3 秒でした。アームの 1 手には数十秒かかるので、進行には十分間に合います。観客向けの実況も同じ応答で受け取り、Amazon Polly で読み上げます。

Amazon DynamoDB に置いたのは、どのスロットからカードが引かれたかのカウンターだけです。ロボットがジョーカーを差す位置は、この記録から決めています。

こうしたインフラは AWS CDK で構築しました。もちろん、この CDK のコードも Claude Code 製です。

前日に動いても、会場では調整が必要だった

開発中の自動テストは、ハードウェアの動作を模したモックで回していました。テストは全部通り、ロジックもひととおり動いて、あとは実機をつなぐだけのはずでした。実際につないでみると、カードとの摩擦や照明の加減など、モックに書かなかった条件で次々に不具合が出ます。しかも、アームを 1 回動かして確かめるのに数十秒かかり、そのあいだは人が横で見ていないといけません。気がつけば、コードを直す時間より、動かして確かめる時間のほうが長くなっていました。

そこで、確かめ方を組み立て直しました。まず部品を一つずつ。アームの姿勢を順に変えてカードに届くか、カメラでマーカーを読み取れるか、Bedrock と DynamoDB に実際につながるかを個別に確認してから、組み合わせます。確認項目は 1 本のシェルスクリプトにまとめ、当日の朝にも一通り回す時間を取りました。センサーが止まっている、本来のモデルの代わりに代替モデルで動いている、といった異常を見つけたら、そこで起動を止める設定も用意しています。

前日の夜、ほぼ徹夜の調整の末に、通しでロボットが動きました。しかし、当日の会場は照明もカメラの設置場所も前日と違い、朝からキャリブレーション (カメラの位置や明るさの基準の取り直し) が必要になりました。それでも開場までに調整を終えて、2 日間、来場者の方と対戦し続けました。

アームがカードに触れたまま止まると、それまで笑っていた来場者の方も勝負の顔になります。表情を読むロボットとの対戦は、会場でちゃんと成立していました。

まとめ

この記事で一番お伝えしたかったのは、経験のない領域のものづくりでもコードを全部 Claude Code に任せて作り切れる、ということです。ロボットが初めての私たちでも展示が完成したのは、エージェントが何でも正しく書いてくれたからではありません。決めることと確かめることを人間が手放さなかったからです。

決めるために実装の前に調査と設計を頼んで、比較と採用しない理由まで書かせました。材料さえそろえば、未経験の領域でも根拠を持って方式を選べます。そして生成されたコードが正しいかどうかは実機で確かめました。テストが全部通っていてもアームはカードにぶつかるので、確認項目のスクリプト化や異常時に起動を止める仕組みといった「確かめる側」に時間をかけています。

この 2 つさえ握っていれば、経験がないことは作らない理由にならなくなりました。ただし、専門知識が要らなくなったわけではありません。アームの動かし方ひとつとっても私たちは実機にぶつけながら遠回りしました。ロボットの技術者ならもっとうまい方式に早くたどり着いていたはずです。任せられる範囲が広がるほど、「決める」と「確かめる」の質はその領域の知識で決まります。求められるスキルはむしろ上がったというのが正直な実感です。作る手段は手に入ったので、私たちも次の挑戦までに判断の引き出しを増やしていきます。

最後になりましたが、対戦してくださった皆さま、一緒に作ってくれたチームの皆さん、ありがとうございました。来場者の方が笑って帰っていくのを見られただけで徹夜の甲斐がありました。 

Missing alt text value

筆者プロフィール

Missing alt text value

野口 優真

アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト

2025 年に AWS Japan へ入社し、お客様のアーキテクチャ設計を支援しています。得意領域は AI Agent です。今回の展示では、動かないアームの前で朝 3 時にコミットする経験をしました。あの日の朝日は忘れられません。

Missing alt text value

石崎 翔

アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト

アマゾン ウェブ サービス ジャパンのソリューションアーキテクトとして、Media、ISV/SaaS 業界のお客様を中心に、AWS をご利用になるお客様を技術面でサポートしています。好きなサービスは Amazon Bedrock Agentcore です。趣味は洋食を作ることです !

Missing alt text value

久野 康貴

アマゾン ウェブ サービス ジャパン合同会社
ソリューションアーキテクト

アマゾン ウェブ サービス ジャパンでソリューションアーキテクトとして、AWS をご利用になるお客様を技術的に支援しています。また、Amazon OpenSearch Service などの検索ワークロードをご利用のお客様への支援も行っています。趣味は体を動かすこととスポーツ観戦です !