見出し画像

【AWS】 AI搭載IDE Kiroチュートリアルやってみた - バグ調査編(2) - |1日1ハンズオン Day 22

こんにちは、ぽめら です。
本記事は1日1ハンズオン企画、第22回です!
引き続きKiroのチュートリアルをおこなっていきます。今回はKiroにバグ調査を依頼し、修正をおこなうバグ調査編に挑戦しました💨
…の、続きです!



1.はじめに

引き続き、AI搭載IDEのKiroに触れていきます!

題材はKiro公式ドキュメント。
"Spirit of Kiro"というゲームで予め用意されているバグの修正を通じてKiroの使い方を学ぶハンズオンです。

前回はバイブコーディングによるバグ調査に挑戦したのですが、環境エラーからチュートリアル本編に入る直前でストップ…。なので、今回はそのエラー解消からお届けしようと思います!(むしろ実質本編な気もしますが)

ちなみに本編として進めたいチュートリアルは下記。

・Investigating and fixing a subtle bug with physics


※ 基本的にエラーや失敗も私の糧にしていくためのメモとして残します。"最短で"や"これだけでOK!"のような効率や簡単さ、攻略RTAのような記事にするつもりは微塵もありません😊

では、さっそく進めていきたいと思います。レッツハンズオン!


2.チュートリアルに進む前のバグ調査

現在遭遇・判明している内容は下記の通りです。

  • ゲーム画面は表示される

  • 一部ゲーム要素(レバーを引く)後のアイテム生成が動作しない

  • コンソールでBedrockの権限が不足していること確認

  • 環境構築時に設定したリージョン不一致もエラー要因の一部

上記に対し、前回は目視でのチェックをしていました。
…そう、Kiroという便利ツールを目の前にして😇

"コードの内容理解はどうしても時間がかかる"し、"複雑なコードほど依存関係に注意が必要"という前振り通り、私は修正の沼にハマったわけです。しかも影響調査もろくにせず…(👈ここが最大のミス)

というわけで、今回はKiro先生に調査を依頼し、実際の修正もお願いしてみたいと思います!👻

2-1.プログラムの状態を確認する

前回手作業で直した部分は一度元に戻して、Kiro先生に一から聞いてみることにしました。アクセス権の依存度とリージョン設定の変更箇所を知りたかったので、事実とエラー内容だけ伝えてみました。

実際のスクリプト

すると早速下記のような回答が!
Steering Filesを確認した上で関係しそうな箇所を確認してくれるそうです。

Steering機能が生かされている

また、昨日時点で私も確認していたmodelの記載箇所にも言及。

そうそう、依存関係を知りたかったのよ

加えて"このモデルも使用してるみたいだけどちゃんとアクセス権付与してる?"という言及もしてくれました。

調査までのつもりだったが、変更もしてくれた
変更はしてほしくなければ「変更はまだしないで」のようなスクリプトが必要か

そして、実際にリージョンに関する記述も修正してくれた様子。

私の方では、下記BedrockモデルがItem生成に関与しているとのことで、追加でアクセス権を申請しました。

  • Titan Text Embeddings V2

  • Nova Canvas

さて、これで動くのかな?

2-2.依存関係を掘り下げる

なぜ掘り下げるのか。それは、この修正がおこなわれた状態でログインをしようとしたらログイン画面でエラーが出たから(°▽°)

"コードの内容理解はどうしても時間がかかる"し、"複雑なコードほど依存関係に注意が必要"という前振り通り、私は修正の沼にハマったわけです。しかも影響調査もろくにせず…(👈ここが最大のミス)

記事内再掲

実際にKiroのチュートリアルでも「質問①→質問②(質問①で得られた修正計画に対して関連箇所の影響調査依頼)」をするといいって書いてましたし、深掘りしていきます!

で、質問に先立ちエラー内容をみると、昨日の「④ エラー解消施策(2)」で記載した内容と同じでWebSocketエラー。つまり、AWSリソースとの接続がうまくいっていないということはわかりました。

ここで"リージョンの不整合は先ほど解消できたはずでは?"とも感じながら、再度Kiro先生にお尋ねしてみました。

Kiro先生にHelp依頼

生成AI全般ですが、ただ"エラーが出ました"だけプロンプトに記述すると、そのエラー解消のための最短経路として"とりあえずエラーが起こらないようにコードを修正する"ような挙動になる印象があります🫤

「2-1.プログラムの状態を確認する」で修正された内容で一発OKにならなかった原因はここなのかな、と思ったのでフラットにプログラム全体に対する懸念点の質問をしてみた次第です。

すると下記のような回答が得られました。

Kiro先生回答の懸念点

おお…!「重大な問題」として今回の要因っぽいものが書かれています。
envに書かれているリソースのCognito設定と、「2-1.プログラムの状態を確認する」でおこなったリージョンの書き換えで不整合が起こっている様子。

つまり、

"Spilit of Kiro"のリソースはus-west-2(オレゴン)に置かれている

にもかかわらず、全リージョン記述をap-northeast-1(東京)に変更した

リソースへのアクセス時にリージョン不整合が起きた💣💥

こういうことか。

この要因解説に加え、Kiro先生からは"ap-northeast-1でBedrockアクセス権を申請したらしいけど、us-west-2でBedrockのアクセス権申請すれば?"とのお言葉もいただきました。

…なるほど、私は昨日勘違いをしていたみたいですね😇

  • リソースはus-west-2に置かれている

  • us-west-2でBedrockモデルが呼ばれている

  • 私はローカルDBをap-northeast-1で構築しただけ

何を勘違いしていたかというと、私は"ap-northeast-1で環境構築をした"という認識をしていました。しかし、上記の環境構築はあくまでもローカル環境の話で、リソースはus-west-2にある。Bedrockモデルのアクセス権申請をそもそもus-west-2でやればよかっただけということか…。

2-3.修正してみた

ということで、先ほどのKiroコード修正箇所はスタッシュした上で、us-west-2でBedrockのアクセス権を再度申請しました。

Bedrockアクセス権を付与@us-west-2

アイテムでました!!!!

アイテム確認できた

はい、これでやっとチュートリアルに進めます😂


3.Kiroチュートリアル - バグ調査編(2) -

やっと本編です。とはいえ、Kiro先生への単純質問&影響範囲質問のコツはなんとなくわかったので、チュートリアルはおさらい程度に進めていきます。

3-1.問題点の確認

チュートリアル文で説明されているように、確かにアイテムを跳ね除けるタイミングで新規タブを開くと異常に大きくアイテムを跳ねる様子を確認できました。これを今回Kiro先生に相談していきます。

Kiroが壁の向こうにいってしまったのも仕様…?

3-2.Kiroに調査を依頼する

チュートリアルと同じような修正等をおこなってほしいので、チュートリアルに則った質問をKiro先生に投げます。

When something is moving or colliding, and the player tabs out then back in, the items do a tremendous bounce. Players report "items go haywire".

この質問を投げて、物理演算の問題だと回答がありました。そして私の場合はそのまま修正までおこなってくれて、ゲーム画面でも修正されたことを確認できました🎉

3-3.質問を深掘りする

単純なバグ修正であれば「3-2」までで問題ないでしょう。
しかし、せっかくAIソリューションを使用しているので、AIの持つ可能性を最大限に生かすためにはさらなる深掘り質問が効果的とのこと🕳️

実際に、チュートリアルでは下記のような質問を追加で投げています。

What other potential solutions or mitigations should I consider?

他に考慮すべき潜在的な解決策はある?

Do you see anything else that looks like it could be improved?

他に何か改善策はある?

実際に、このスクリプトによってKiro先生はクライアント側での動作修正に加えてバックエンド側でのバリデーションや、ロギングの処理も提案・実装してくれました。

ここまでで、今回想定していたチュートリアル「Investigating and fixing a subtle bug with physics」は終了です!


4.まとめ

今回は Kiro のチュートリアルを進めて、バグ調査にチャレンジしました。

私の所感ですが、"生成AIの使用者が生成AIの技術を制限してしまう"こともあるなあ、というのをどこかでうっすらと感じていました。今回のチュートリアルではそれを身をもって感じることができました😭

実際に今回チュートリアルの前段階でつまづいた際に、私は自分がわかっている範囲でKiroに質問を投げ、単純な回答で修正を試みた結果、依存関係を無視した変更だったことでエラーにハマったわけです…。

しかしKiroは技術的な文脈を読み込んだ上で作業をしているため、"コード上はこういう動きをしている"だけでなく、"こういう構成だからAだけ変えてもダメだよ"という関係性まで言及してくれました

そして、質問を重ねても無限ループするわけではなく、考慮した方が良いアイデア出し&実装もしてくれる…というイケメンムーブまで👏

(GitHub Copilotは使ったことあるけど)他のAIエディタでのバイブコーディングは未経験なので比較はできていませんが、"質問を重ねても無限ループしない"という点はすごさを感じました👀✨

次回チュートリアルは"複数ファイルにまたがる修正をKiroに依頼する"というのがコンセプトのようなのでそれも楽しみですね。

というわけで、今日はここまで!

ではまた明日👋


5.参考リンク

・AWS Kiro紹介ページ

・Kiro公式サイト

・Kiro公式はじめの一歩的なドキュメント

・バグ調査編チュートリアルドキュメント


いいなと思ったら応援しよう!