0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【10/6 まで】Kiro University Challenge をやってみた

0
Posted at

はじめに

こんにちは、ほうき星 @H0ukiStar です。

みなさんは Kiro を利用していますか?
Kiro は AWS が開発した AI 活用型の開発ツールで、CLI や IDE が提供されており、特に仕様駆動開発がサポートされています。

この Kiro の使い方を 1 週間で学ぶ自習のチャレンジが、Kiro University Challenge として開催中です。

今回のチャレンジで扱われる主なテーマは以下のとおりです。

  • レッスン 1:Spec-driven development
  • レッスン 2:Steering documents
  • レッスン 3:Hooks
  • レッスン 4:Property-based testing
  • レッスン 5:Powers
  • レッスン 6:Model Context Protocol(MCP)
  • レッスン 7:Custom agents
  • ボーナスレッスン 1:Kiro Web、cloud sessions、cloud configuration
  • ボーナスレッスン 2:Kiro Power のパッケージング

今回はこのチャレンジをやってみましたので、各レッスンで学ぶ内容を簡単にご紹介します。

また、各レッスンを実施し課題提出まで行うことで、Kiro のクレジットをもらうことができます。
Kiro を触ってみるいい機会ですので、挑戦してみてはいかがでしょうか?

前提

今回のチャレンジでは、Kiro を使って実際にプロジェクトを作成し、その成果物を最終課題として提出します。

そのため、あらかじめ以下を用意しておく必要があります。

  • Kiro のアカウント
  • 18 歳以上であること
  • GitHub アカウント(作成から 3 か月以上経過していること)
  • X または LinkedIn のアカウント
  • 作成したプロジェクトを公開できる GitHub リポジトリ

また、チャレンジ期間は 2026 年 9 月 21 日 9:00 PT ~ 10 月 5 日 23:59 PT(日本時間:9 月 22 日 1:00 ~ 10 月 6 日 15:59) です。

最終課題として使用するプロジェクトはチャレンジ期間中に新しく作成する必要があり、GitHub の最初のコミットが 2026 年 9 月 21 日 9:00 PT(日本時間:9 月 22 日 1:00)以降であることが求められます。チャレンジ開始前にコミットが存在するリポジトリは対象外となります。

また、最終課題では以下の提出物が必要です。

  • 自分が所有する公開 GitHub リポジトリ
  • .kiro フォルダを含むプロジェクト
  • 30 秒~3 分のデモ動画
  • X または LinkedIn への公開投稿
  • 最終課題の応募フォームへの提出

SNS への投稿では、X の場合は @kirodotdev、LinkedIn の場合は @kiro をメンションし、#KiroUniversity と #BuildWithKiro のハッシュタグを付ける必要があります。

最終課題の提出期限は 2026 年 10 月 5 日 23:59 PT(日本時間:10 月 6 日 15:59) です。

詳細な参加条件や提出要件については、公式の利用規約 を確認してください。

今回作成するもの

今回は実装ボリュームなども考慮し、AWS アカウント上に存在する未使用の EIP をクリーンアップする CLI ツールを題材として、本チャレンジの中で作成することにしました。

レッスン 1:Spec-driven development

レッスン 1 は仕様駆動開発における spec の書き方を学びます。

仕様駆動開発と spec とは

仕様駆動開発(Spec-driven development、SDD)は、コードを書く前に「ソフトウェアが何を満たすべきか」という仕様を定義し、その仕様をもとに設計・実装を進めていく開発手法です。

Kiro では、この仕様を spec として管理します。
spec は主に以下の3つのドキュメントから構成されます。

  • requirements.md:ユーザーやシステムが満たすべき要件
  • design.md:要件を実現するための設計
  • tasks.md:設計をもとにした実装タスク

一般的な開発では、まずコードを書き始めてから仕様や設計を考えることもありますが、仕様を先に明文化することで、AI Agent に対しても「何を作るのか」を明確に伝えられます。

Kiro では、この spec を AI Agent との対話を通じて作成し、その後の設計や実装まで一貫して進められるようになっています。

EARS 記法とは

EARS(Easy Approach to Requirements Syntax)は、自然言語でソフトウェアの要件を記述するための記法です。

要件を一定のパターンに沿って記述することで、「誰が」「どのような条件で」「何をする必要があるのか」を明確にしやすくなります。

例えば、単純な機能であれば以下のように記述します。

WHEN ユーザーが --dry-run オプションを指定した場合
THE SYSTEM SHALL リソースの削除を行わず、削除対象の一覧を表示する

このように、自然言語だけで自由に記述するのではなく、条件やシステムの振る舞いを一定の形式で記述することで、曖昧さを減らすことができます。

Kiro の requirements.md では、EARS に基づいた形式で要件が記述されます。

Kiro IDE で要件を作成する

EARS 記法で要件(requirements.md)を直接書くことも可能ですが、Kiro IDE を利用すれば、AI Agent との対話の中で作成することもできます。

  1. Kiro IDE にて「+」より「New Session」を開き、下部の「Spec」を選択する
    image.png

  2. チャット欄にて「やりたいこと」を入力する
    私は以下のように入力しました

    本レポジトリでは、awsアカウント上に存在する未利用のEIPを削除するツールを作成します。
    主な要件は以下
    ・CLIツールとし、argparseでオプション解析
    ・--regionで調査対象リージョンを指定。未指定時は全リージョンで、複数指定可能
    ・各リージョン間の調査は並列で
    ・認証情報はboto3の標準的なチェーンで解決。オプションでプロファイル指定も対応
    ・--dry-runでチェック結果だけ表示
    ・対象のリストアップ後1つずつ対話的に削除。--yesで一括削除可能
    
  3. Kiro が入力した「やりたいこと」に対して、EARS 記法で要件(requirements.md)を作成してくれます
    image.png

作成した要件:

例にもあるように入力した「やりたいこと」からは読み取れない・明示されていない要件がある場合があります。
必ず作成された要件(requirements.md)には目を通し問題ないかの確認であったり、加筆修正しましょう。

レッスン 2:Steering documents

レッスン 2 はステアリングを学びます。

ステアリングとは

Steering documents は、Kiro の AI Agent に対して「プロジェクト全体で守ってほしいルールや前提」を伝えるためのドキュメントです。

spec が「今回作成する機能の仕様」を定義するものであるのに対し、ステアリングは「このプロジェクトでは常にこうしてほしい」というプロジェクト全体のルールを定義します。

毎回プロンプトで指定するのではなく、ステアリングとしてプロジェクトに保存しておくことで、AI Agent がプロジェクトの方針を踏まえて作業できるようになります。

Kiro IDE でステアリングを作成する

ステアリングも既定のディレクトリ(.kiro/steering/)に直接書くこともできますし、spec と同様に Kiro 自身に書いてもらうこともできます。

今回のプロジェクトでは以下のステアリングを作成しました。

日本語で応対してもらう

私は英語が得意ではないので、日本語で応対してほしいです。
そこで以下のように日本語で応対してほしい旨を入力し、ステアリングを作成しました。

以下の内容のステアリングを作成して。

・ユーザへの応答には日本語を使用すること
・ツール呼び出しやAgent自身の考察時等、ユーザの目に触れる可能性がある部分でも日本語を使用すること

image.png

作成したステアリング:

Python のコーディング規則を決める

今回は Python を利用してツールを作成しますので、Python スクリプトを書く上で守ってほしいことを同様に入力し、ステアリングを作成しました。

本プロジェクトではPythonを使用したツールを作成します。
そのため、以下のような内容のステアリングを作ってほしい

・PEP8の順守
・型ヒントの記載
 ・型が明らかな場合でも必ず記載する
 ・関数の戻り値なども同上
 ・記法は3.10以降の標準的なもの
・docstringの記載
 ・日本語で
 ・numpyスタイルで
・リンターなどにはruffを使用
 ・isortやblackなどの代替としても使用
 ・docstringもこれでチェックする
・テストにはpytest
・環境はuvを使用する
・フォルダ構成はuvを利用した際の標準的なものを使用して。なお、親階層があるので
 ・aws-eip-cleaner:ここにツール本体のコード。中にはsrcやtests等、uv使用時の適切な階層を用意
 ・docs:ドキュメント類

作成したステアリング:

レッスン 3:Hooks

レッスン 3 は Hooks を学びます。

Hooks とは

Hooks は、Kiro IDE 上で特定のイベントをきっかけに、あらかじめ指定した処理を自動的に実行する仕組みです。

  • ファイルを保存したとき
  • ファイルを作成したとき
  • 特定のパターンに一致するファイルが変更されたとき

などをトリガーとして、Kiro Agent に処理を依頼したり、コマンドを実行したりできます。

Hooks を利用することで、開発者が毎回明示的に指示しなくても特定の作業を自動化でき、定型的な作業の抜け漏れをなくすことが可能です。

今回のプロジェクトでは、Python ファイルが保存されたことをきっかけとして Kiro Agent を起動し、ruff や mypy によるチェック・フォーマットを行わせる Hook を作成しました。

Kiro IDE で Hooks を作成する

Hooks も既定のディレクトリに直接書いてもいいですし、Kiro 自身に作成してもらうこともできます。
また、Kiro IDE には Hooks 作成用の UI もあるので、今回はそれを利用して作成します。

  1. 左ペインの「Kiro アイコン」から「+ Create New Hook」を押下
    image.png

    image.png

  2. 「Create an agent hook」画面にて以下入力し「Create Hook」

    項目 値
    Title Ask Agent on Save
    Trigger File Saved
    File path pattern .py$
    Instructions for Kiro agent ruffやmypyでチェックや自動フォーマットを行って

    image.png

  3. 新規セッションで問題のある Python スクリプトを書いてもらい、Hooks が発火して指定したチェックが実施されれば動作 OK です
    image.png

なお、例として「Ask Kiro」の Hooks を作成しましたが、上記の様な定型的なチェックであれば「Run Command」の方が良いです。
あくまで、作成・動作の例としてください。

作成した Hooks:

レッスン 4:Property-based testing (IDE only)

レッスン 4 は Property-based testing (PBT) を学びます。

Property-based testing (PBT) とは

Property-based testing(PBT)は、あらかじめ用意した具体的な入力値と期待値をテストするのではなく、「入力がどのような値であっても成立するべき性質(Property)」を定義してテストする手法です。

例えば、文字列を反転する関数であれば、

reverse(reverse(x)) == x

という性質が成立するはずです。

通常のテストでは "hello" や "abc" など具体的な値をいくつか用意してテストしますが、PBT ではこの性質を定義し、テストフレームワークがさまざまな入力値を生成して検証します。

そのため、開発者が事前に想定していなかった入力値による問題を発見できる可能性があります。

今回のプロジェクトでは、Kiro が作成したタスクに含まれる PBT 用のタスクを利用して、実装したロジックに対する Property-based testing を行います。

Kiro IDE で PBT を実施する

本レッスンは Kiro IDE のみで実施可能です。

仕様駆動開発を進めると要件(requirements.md)→設計(design.md)→タスク(tasks.md)と spec が作成されていきます。
そしてこのタスク(tasks.md)にはコード実装時、オプションのタスクとして PBT の項目があります。
このオプションのタスクを個々に実行するか、「Make task required」を押下して必須のタスクとすれば、PBT も併せて対応することが可能です。

image.png

レッスン 5:Powers

レッスン 5 は Powers を学びます。

Powers とは

Powers は、Kiro に特定の専門知識やツール、ワークフローを追加するための仕組みです。

例えば AWS に関する開発であれば、AWS のサービス固有の知識や、特定の作業手順を Power としてまとめておくことで、AI Agent が必要な場面でそれらを利用できるようになります。

Powers は単なるプロンプトやルールだけではなく、Skills や MCP サーバなどをまとめて提供できます。

また、常にすべての情報を AI Agent に読み込ませるのではなく、必要な場面で関連する Power が利用される仕組みになっています。

今回のプロジェクトでは、未使用の EIP を安全に削除するために必要となる AWS の知識や作業手順を Power としてまとめました。

Kiro IDE で Powers を作成する

Powers も既定のディレクトリに直接書いてもいいですし、Kiro 自身に作成してもらうこともできます。
今回は、以下のように指示をし作成してもらいました。

未使用のEIPを安全に削除するために必要な知識をまとめたPowersを作成して

作成した Powers:

レッスン 6:Model Context Protocol (MCP)

レッスン 6 は Model Context Protocol (MCP) を学びます。

MCP とは

MCP(Model Context Protocol)は、AI Agent と外部のツールやデータソースを接続するためのオープンなプロトコルです。

AI Agent 単体では、手元のファイルを読んだりコードを書いたりすることはできても、外部サービスの情報を取得したり、外部サービスに対して操作を行ったりするには、そのための仕組みが必要です。

MCP を利用すると、MCP サーバが提供するツールを AI Agent から利用できるようになります。

例えば AWS MCP Server を利用すれば、AI Agent から AWS のリソースに対する情報取得や操作などを行えるようになります。

今回のレッスンでは AWS MCP Server を Kiro に登録し、AI Agent から AWS を操作できる環境を構築しました。

Kiro IDE に AWS MCP サーバを登録する

今回は AWS MCP サーバを登録します。ローカルの AWS 認証情報で SigV4 署名を行うプロキシ(mcp-proxy-for-aws)経由で接続します。

登録は .kiro/settings/mcp.json に以下の内容を記述しておくだけです。

mcp.json
{
  "mcpServers": {
    "aws": {
      "command": "uvx",
      "args": [
        "mcp-proxy-for-aws-cli@latest",
        "https://aws-mcp.us-east-1.api.aws/mcp",
        "--metadata",
        "AWS_REGION=us-west-2"
      ]
    }
  }
}

MCP サーバ設定後、aws login 等で認証情報を設定しておきます。
左ペインの「Kiro アイコン > MCP SERVERS」より登録した MCP サーバが Connected なら Agent から利用可能です。
image.png

レッスン 7:Custom agents

レッスン 7 は Custom agents を学びます。

Custom agents とは

Custom agents は、特定の目的に合わせて Kiro の AI Agent の役割や振る舞いをカスタマイズする仕組みです。

通常の Kiro Agent に対して、特定の指示や利用するツール、適用するルールなどを設定することで、特定の作業に特化した Agent を作成できます。

例えば、

  • コードレビューを行う Agent
  • テストを作成する Agent
  • ドキュメントを作成する Agent
  • 特定のコーディング規約をチェックする Agent

といった用途が考えられます。

今回のプロジェクトでは、レッスン 2 で作成した Python のステアリングをもとに、コーディング規則への違反をチェックして修正する Custom agent を作成しました。

Kiro IDE で Custom agents を作成する

Custom agents も既定のディレクトリに直接書いてもいいですし、Kiro 自身に作成してもらうこともできます。
今回は、以下のように指示をし作成してもらいました。

本プロジェクトのPythonステアリングで規定したコーディング規則を守り、違反を修正するカスタムエージェントを作成して

作成した Custom agents:

作成した Custom agents はセッション下部のプルダウンから選択できます。

image.png

試しに src/ フォルダ内のコードを作成した Custom agents でチェックすると、以下のように結果を返してくれました。

image.png

ボーナスレッスン 1:Kiro Web, cloud sessions, and cloud configuration

ボーナスレッスン 1 は Kiro Web を学びます。

Kiro Web とは

Kiro Web は、ブラウザから Kiro の AI Agent を利用して開発作業を行えるサービスです。

Kiro IDE のようにローカル環境で作業するのではなく、Git リポジトリを指定してクラウド上の環境で Agent に作業を依頼できます。

Kiro Web は、ローカルの開発環境を用意していない状態でもサンドボックス環境を利用して、コードの確認やテストの実行などを Kiro に行わせることができます。

今回のレッスンでは、Kiro IDE で開発していたプロジェクトを Kiro Web から開き、残っていたタスクの実行とテストを行いました。

Kiro Web を使用して作業を行う

Kiro Web はここからアクセスして使用します。
サインイン方法は他の Kiro (IDE や CLI 等) と同じです。

サインイン出来たら「+ New session」から新しいセッションを開始しますが、セッション下部の「Select repository」から作業を行う Git リポジトリを選びます。

GitHub リポジトリと未連携の場合は連携が必要になります。
以下を参考にしてください。

image.png

Kiro IDE にてタスク7まで行っていたので、タスク8を Kiro Web に実施させてみます。
なお、タスク8は以下の内容です。

- [ ] 8. チェックポイント - 純粋ロジック層のテストを通す
  - Ensure all tests pass, ask the user if questions arise.

image.png

Kiro Web はサンドボックス環境にリポジトリの内容をクローンし、テスト等を実行してくれます。
結果、タスク8で予定していたテストがすべて通ったことを確認してくれました。

image.png

ボーナスレッスン 2:Package a Kiro power

レッスン 5 で作成した Power を他の環境でも利用できるようにパッケージングします。

Power の配布

Power は、必要なファイルを所定の形式でまとめ、GitHub などの公開 Git リポジトリとして公開することで、他の Kiro ユーザーにも利用してもらうことができます。

Power のパッケージには、Power のメタデータを定義する plugin.json と、専門知識やワークフローを定義する skills/ などを含めます。

Kiro の Power は単にファイルをコピーして利用するだけではなく、公開された Power を Kiro から導入して利用できる形になっています。

今回のレッスンでは、レッスン 5 で作成した「未使用 EIP を安全に削除するための Power」が、配布可能な構成になっているはずですが、問題ないかを Kiro Web にチェックしてもらいました。

image.png

結果、軽微な確認点はありましたがクリティカルではなかったため、ファイルやフォルダ構造などの修正は行いませんでした。

image.png

課題提出

これらのレッスンを通じて作成した成果物とそのデモは、以下のように提出が必要です。
※最終的にクレジットをもらいたい場合

1. SNS への投稿

X では @kirodotdev、LinkedIn では @kiro 宛てに以下の内容をメンションする形で投稿します。

  1. 成果物が動作するデモ動画(30秒~3分)
  2. GitHub リポジトリへのリンク
  3. 成果物についての簡単な説明
  4. タグ

私は以下のように投稿しました。

2. プロジェクトへの応募

応募フォームに必要事項を入力し、応募します。

image.png

応募受付のメールなどが届かないので少し不安ですが、大丈夫だと信じましょう。

さいごに

今回は Kiro University Challenge に参加し、EIP のクリーンアップツールを題材として、Kiro のさまざまな機能を実際に使ってみました。

仕様駆動開発から始まり、Steering documents、Hooks、Property-based testing、Powers、MCP、Custom agents と、それぞれ異なる機能を一通り触ることができました。
Kiro をこれまで使ったことがない方にとっても、今回のチャレンジは実際に手を動かしながら Kiro の機能を知ることができる良い機会だと思います。

また、各レッスンの課題を実施して成果物を提出することでクレジットを獲得できるため、Kiro を触ってみようと思っている方は、ぜひ Kiro University Challenge に挑戦してみてください。

最終課題の提出期限は 2026 年 10 月 5 日 23:59 PT(日本時間:10 月 6 日 15:59) です。
本記事投稿時点でもまだ間に合います。

この記事が、これから Kiro を触ってみようとしている方や、Kiro University Challenge に参加してみようとしている方の参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?