42
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS発のAIエディタ🔥】Kiro 完全チートシート - 公式Doc全網羅!🚀

Last updated at Posted at 2025-07-15

📌 はじめに - Kiroって何?なぜ今注目されているの?

Kiro(キロ)は、2025年7月にAWSがリリースした革新的なAI統合開発環境(IDE) です。「え?また新しいエディタ?VSCode,Cursorでよくない?」って思った方、ちょっと待ってください。Kiroはただのエディタじゃないんです。

🤔 従来のIDEとの決定的な違い

従来のIDEでは、コードを書くのは100%あなたの仕事でした。でもKiroは違います。AIがあなたの開発パートナーとして、一緒に考え、提案し、実装してくれるんです。まるで優秀な先輩エンジニアがペアプログラミングしてくれているような感覚です。

✨ Kiroでできること(これ重要)

  • 🤖 AIとの対話でコード生成: 「ログイン機能作って」って言うだけで、本当に作ってくれます
  • 📋 Specs(仕様書)の自動生成: 曖昧な要望から、きちんとした仕様書を作成
  • 🔧 Agent Hooksで自動化: ファイル保存時に自動でテスト実行とか、フォーマットとか
  • 🎯 Steeringでプロジェクト知識を記憶: 「うちのプロジェクトはTypeScript使ってて...」を毎回説明不要に
  • 🔌 MCPで外部ツール連携: GitHub、AWS Docs、Web検索などと連携
  • 🛡️ 安全な実行環境: 「やばい、間違えて全部消しちゃった!」を防ぐ仕組み

🚀 クイックスタート - 5分で始めるKiro

最速セットアップ(マジで5分)

まず、Kiroをインストールしましょう。といっても、普通のアプリと同じです。

# 1. ダウンロード
# https://kiro.dev/ にアクセスして「Download」ボタンをクリック
# macOS、Windows、Linuxに対応してます

# 2. インストール
# macOS: ダウンロードしたKiro.appをApplicationsフォルダにドラッグ
# Windows: ダウンロードしたインストーラーをダブルクリックして実行
# Linux: AppImageに実行権限を付けて起動

# 3. 初回起動時の設定(ここ重要!)

初回起動すると、いくつか聞かれます:

  1. ログイン方法の選択

    • GitHub: 個人開発者ならこれが一番楽
    • Google: Gmailアカウントで簡単ログイン
    • AWS Builder ID: AWSアカウント持ってない人向け(無料)
    • AWS IAM Identity Center: 会社で使う人向け
  2. VS Codeの設定インポート

    • 「Import VS Code Settings」を選ぶと、今使ってる設定がそのまま使えます
    • 拡張機能やテーマも引き継げるので便利
  3. シェル統合の許可

    • これ、必ず「Allow」してください!
    • AIがターミナルコマンドを実行できるようになります

最初のプロジェクトを開いてみよう

# ターミナルから開く場合
cd my-project
kiro .

# またはKiroのメニューから
File > Open Folder > プロジェクトフォルダを選択

プロジェクトを開いたら、左サイドバーのKiroゴーストアイコンをクリック。これがKiroの心臓部です。

AIと最初の会話をしてみる

# チャットパネルを開く
Cmd+L (Mac) / Ctrl+L (Windows/Linux)

# 試しに聞いてみましょう
"このプロジェクトの構造を説明して"
"package.jsonの依存関係を整理して"
"READMEを充実させて"

めっちゃ自然に会話できることに驚くはずです。

🔑 認証方法完全ガイド - どれを選べばいいの?

方法1: GitHub認証(個人開発者におすすめ度: ★★★★★)

# こんな人向け
- 個人でコード書いてる
- OSSプロジェクトやってる
- とりあえず試したい

# メリット
- 設定が一番シンプル
- GitHubアカウントあれば即使える
- 無料枠で十分使える

# 手順
1. "Sign in with GitHub"をクリック
2. ブラウザが開く → GitHubにログイン
3. "Authorize kirodotdev"をクリック
4. 完了!もう使えます

方法2: Google認証(カジュアルユーザー向け度: ★★★★☆)

# こんな人向け
- Gmailは持ってるけどGitHubアカウントない
- 個人的な学習用途
- とにかく簡単に始めたい

# メリット
- Googleアカウントで即開始
- 追加設定不要
- 個人利用に最適

# 手順
1. "Sign in with Google"をクリック
2. Googleアカウントを選択
3. "Continue"で許可
4. 終わり!簡単でしょ?

方法3: AWS Builder ID(AWS初心者向け度: ★★★☆☆)

# こんな人向け
- AWSを使ってみたいけどアカウント作るのは面倒
- 無料でAWSサービスを試したい
- 将来的にAWSを本格的に使うかも

# メリット
- AWSアカウント不要で無料
- AWSの各種サービスと連携しやすい
- 企業利用への移行がスムーズ

# 手順
1. "Login with AWS Builder ID"をクリック
2. メールアドレスを入力
3. パスワードを設定
4. メール認証して完了

方法4: AWS IAM Identity Center(企業向け度: ★★★★★)

# こんな人向け
- 会社でKiroを導入したい
- セキュリティ要件が厳しい環境
- Amazon Q Developer Proを契約してる

# 注意点
- Amazon Q Developer Pro契約が必須(有料)
- 会社のIT部門の設定が必要
- 個人利用には向かない

# 手順
1. "Sign in with AWS IAM Identity Center"を選択
2. Start URL: https://your-company.awsapps.com/start
3. Region: us-east-1(会社によって違う)
4. IT部門に聞いて設定してもらう

⌨️ キーボードショートカット完全マスター

🎯 これだけは覚えて!必須ショートカット10選

まず、これだけ覚えれば、Kiroの8割は使いこなせます:

やりたいこと Mac Windows/Linux 何が起きる?
AIと会話 Cmd+L Ctrl+L チャットパネルが開いて、AIと対話開始
その場でAI呼び出し Cmd+I Ctrl+I カーソル位置でインラインAIが起動。コード書きながら質問できる
なんでも検索 Cmd+Shift+P Ctrl+Shift+P コマンドパレット。Kiroの全機能にアクセス
ファイル開く Cmd+P Ctrl+P ファイル名の一部入力するだけで開ける
保存 Cmd+S Ctrl+S 当たり前だけど大事
全体検索 Cmd+Shift+F Ctrl+Shift+F プロジェクト全体から文字列検索
定義にジャンプ F12 F12 関数やクラスの定義元に一発ジャンプ
エラー修正 エラーにホバー → Quick fix 同じ AIが自動でエラー修正案を提示
ターミナル Ctrl+` Ctrl+` 統合ターミナルの表示/非表示
サイドバー Cmd+B Ctrl+B サイドバーの表示/非表示。画面広く使いたい時に

💡 便利な小技ショートカット

# 複数カーソル(これ知ってると作業効率3倍)
Option+クリック (Mac) / Alt+クリック (Windows)
→ クリックした場所全部にカーソルが置かれる

# 行の移動(地味に便利)
Option+↑/↓ (Mac) / Alt+↑/↓ (Windows)
→ 行をまるごと上下に移動

# 行の複製(テストデータ作る時とか)
Option+Shift+↑/↓ (Mac) / Alt+Shift+↑/↓ (Windows)
→ 現在の行を複製

# コメントアウト(一番使う)
Cmd+/ (Mac) / Ctrl+/ (Windows)
→ 選択行をコメント化/解除

📋 Specs(仕様駆動開発)- これがKiroの真骨頂

そもそもSpecsって何?なんで必要なの?

従来の開発って、こんな感じじゃないですか?

  1. 「ログイン機能作って」という曖昧な要望
  2. とりあえずコード書き始める
  3. 「あ、パスワードリセット機能も必要だった」
  4. 「メール認証も追加して」
  5. ぐちゃぐちゃになる...

Specsは、この問題を解決します。AIが要望を整理して、きちんとした仕様書にしてくれるんです。

Specの3つのフェーズ(これが革命的)

1. Requirements(要件)フェーズ - 「何を作るか」を明確に

# 実際にKiroが生成する要件定義の例

## ユーザーストーリー
As a: ユーザー
I want to: メールアドレスとパスワードでログインしたい
So that: サービスの個人機能を利用できる

## 受け入れ基準(EARS記法)
When: ユーザーがログインページにアクセスした時
The system shall: ログインフォームを表示する
With:
  - メールアドレス入力欄
  - パスワード入力欄(マスク表示)
  - 「ログイン」ボタン
  - 「パスワードを忘れた方」リンク

When: 正しい認証情報を入力してログインボタンをクリックした時
The system shall: ユーザーをダッシュボードにリダイレクトする
And: JWTトークンを発行してセッションを開始する

When: 間違った認証情報を入力した時
The system shall: エラーメッセージを表示する
But: セキュリティのため具体的な理由は表示しない

すごくないですか?「ログイン機能作って」だけで、ここまで詳細に落とし込んでくれるんです。

2. Design(設計)フェーズ - 「どう作るか」を設計

// Kiroが生成する技術設計書の例

## アーキテクチャ設計

### フロントエンド構成
interface LoginSystem {
  // UIコンポーネント
  components: {
    LoginForm: {
      path: "components/auth/LoginForm.tsx"
      props: {
        onSubmit: (credentials: LoginCredentials) => Promise<void>
        onForgotPassword: () => void
      }
    }
    
    PasswordResetModal: {
      path: "components/auth/PasswordResetModal.tsx"
      props: {
        isOpen: boolean
        onClose: () => void
      }
    }
  }

  // 状態管理
  stores: {
    AuthStore: {
      state: {
        user: User | null
        isAuthenticated: boolean
        isLoading: boolean
      }
      actions: {
        login: (credentials: LoginCredentials) => Promise<void>
        logout: () => void
        resetPassword: (email: string) => Promise<void>
      }
    }
  }

  // API通信
  services: {
    AuthService: {
      endpoints: {
        login: "POST /api/auth/login"
        logout: "POST /api/auth/logout"
        resetPassword: "POST /api/auth/reset-password"
      }
    }
  }
}

### バックエンド構成
- Node.js + Express
- JWT認証
- bcryptでパスワードハッシュ化
- PostgreSQLでユーザー情報管理

技術的な設計まで自動で考えてくれます。しかも、プロジェクトの技術スタックに合わせて!

3. Implementation(実装)フェーズ - タスクに分解

## 実装タスク

### フロントエンド
- [ ] LoginFormコンポーネントの作成
  - [ ] フォームバリデーション実装
  - [ ] エラーハンドリング
  - [ ] ローディング状態の管理
- [ ] AuthStoreの実装
  - [ ] ログインアクション
  - [ ] トークン管理
  - [ ] 自動ログアウト機能
- [ ] ルートガードの実装
  - [ ] 未認証ユーザーのリダイレクト
  - [ ] 認証済みユーザーの処理

### バックエンド  
- [ ] 認証エンドポイントの実装
  - [ ] /api/auth/login
  - [ ] /api/auth/logout
  - [ ] /api/auth/refresh
- [ ] ミドルウェアの作成
  - [ ] JWT検証ミドルウェア
  - [ ] レート制限
- [ ] データベース設計
  - [ ] usersテーブル
  - [ ] sessionsテーブル

### テスト
- [ ] ユニットテスト
- [ ] 統合テスト
- [ ] E2Eテスト

各タスクをクリックすると、AIがそのタスクを実装してくれます。まるで部下に仕事を振るような感覚!

Spec作成の実際の使い方

# 方法1: Kiroパネルから
1. 左サイドバーのKiroアイコンをクリック
2. Specsセクションの「+」ボタン
3. 自然言語で要望を入力

# 方法2: チャットから
1. Cmd/Ctrl+L でチャット開く
2. 「Spec」ボタンをクリック
3. 要望を入力

# 実際の入力例
"ECサイトのショッピングカート機能を実装したい。
以下の機能が必要:
- 商品の追加・削除
- 数量の変更
- 在庫チェック
- 合計金額の自動計算
- クーポン適用
- 送料計算"

# Kiroが生成するもの
.kiro/specs/shopping-cart/
├── requirements.md  # 詳細な要件定義
├── design.md       # 技術設計書
└── tasks.md        # 実装タスクリスト

🪝 Agent Hooks - 面倒な作業を自動化する魔法

Agent Hooksって何?どんな時に使うの?

プログラミングしてて、こんなこと思ったことないですか?

  • 「ファイル保存するたびにESLint走らせるの面倒...」
  • 「新しいコンポーネント作るたびにテストファイルも作らなきゃ...」
  • 「import文の整理、毎回手動でやるのだるい...」

Agent Hooksは、これらを全自動でやってくれます。ファイルの保存、作成、削除などのイベントをトリガーに、AIが自動でタスクを実行するんです。

実際のHook設定例(コピペで使える!)

1. コード品質を保つ「保存時自動整形フック」

# 名前: auto-format-on-save
# 説明: ファイル保存時に自動でコード整形とimport整理

Trigger: File Save
Target: "**/*.{js,ts,jsx,tsx}"
Instructions: |
  ファイルが保存されたら、以下を順番に実行:
  
  1. ESLintで問題をチェック
     - 自動修正可能なものは修正
     - 修正できない問題はリストアップ
  
  2. Prettierでコードフォーマット
     - プロジェクトの.prettierrc設定に従う
     - なければデフォルト設定を使用
  
  3. import文の整理
     - 未使用のimportを削除
     - import順を整理(外部→内部→相対パス)
     - 重複したimportを統合
  
  4. console.logの検出
     - 本番コードに残っていたら警告
     - デバッグ用なら /* debug */ コメントを追加するよう提案

これ設定しておくと、保存するだけでコードがきれいに整形されます。チーム開発でコードスタイルを統一するのに最高です。

2. React開発者の味方「コンポーネント作成時フック」

# 名前: react-component-scaffold
# 説明: 新しいReactコンポーネント作成時に必要なファイルを自動生成

Trigger: File Create
Target: "src/components/**/*.tsx"
Instructions: |
  新しいReactコンポーネントが作成されたら:
  
  1. コンポーネントの基本構造を生成
     ```typescript
     import React from 'react'
     import styles from './ComponentName.module.css'
     
     interface ComponentNameProps {
       // TODO: propsを定義
     }
     
     export const ComponentName: React.FC<ComponentNameProps> = (props) => {
       return (
         <div className={styles.container}>
           {/* TODO: 実装 */}
         </div>
       )
     }
     ```
  
  2. 対応するテストファイルを作成
     - 同じディレクトリに ComponentName.test.tsx
     - 基本的なレンダリングテストを含む
  
  3. Storybookストーリーを作成
     - ComponentName.stories.tsx
     - 基本的なストーリーを含む
  
  4. CSSモジュールファイルを作成
     - ComponentName.module.css
     - 基本的なスタイル定義
  
  5. index.tsに自動エクスポート追加

新しいコンポーネント作るたびに、これら全部手動で作ってませんでした?もう不要です!

3. セキュリティを守る「秘密情報検出フック」

# 名前: security-scanner
# 説明: APIキーや秘密情報が含まれていないかチェック

Trigger: File Save
Target: "**/*"
Instructions: |
  ファイルを精査して、以下のような機密情報を検出:
  
  1. ハードコードされた認証情報
     - APIキー(AWS、Google、OpenAIなど)
     - パスワード
     - 秘密鍵
     - データベース接続文字列
  
  2. 見つかった場合の対処
     - 該当行をハイライト
     - 環境変数への移行方法を提案
     - .envファイルへの追加例を表示
     - .gitignoreに.envが含まれているか確認
  
  3. プライベートなURL
     - 内部APIのエンドポイント
     - 開発環境のURL
     - これらも環境変数化を提案
  
  4. コミット前の最終チェック
     - git diffで機密情報が含まれていないか確認
     - 問題があればコミットを中断するよう警告

これ、マジで重要です。GitHubに秘密情報をプッシュしちゃったことある人、手を挙げて!(みんなあるよね...)

4. 国際化対応「翻訳同期フック」

# 名前: i18n-sync
# 説明: 言語ファイルの同期を保つ

Trigger: File Save  
Target: "src/locales/ja/*.json"
Instructions: |
  日本語の言語ファイルが更新されたら:
  
  1. 変更内容を検出
     - 追加されたキー
     - 修正されたキー
     - 削除されたキー
  
  2. 他の言語ファイルを確認
     - src/locales/en/*.json(英語)
     - src/locales/zh/*.json(中国語)
     - その他の言語
  
  3. 同期処理
     - 新しいキーには "TODO: 翻訳が必要" を設定
     - 修正されたキーには "REVIEW: 翻訳確認が必要" を追加
     - 削除されたキーは他の言語からも削除
  
  4. レポート生成
     - 翻訳が必要な項目一覧
     - 各言語の翻訳進捗率
     - translation-status.mdに出力

多言語対応してるプロジェクトで、言語ファイルの同期って地味に大変ですよね。これで自動化!

5. テスト駆動開発「テスト自動生成フック」

# 名前: test-generator
# 説明: 実装ファイルの変更時にテストを更新

Trigger: File Save
Target: "src/**/*.{ts,tsx}"
Exclude: "**/*.test.*"
Instructions: |
  実装ファイルが保存されたら:
  
  1. 変更内容を分析
     - 新しく追加された関数
     - 変更された関数のシグネチャ
     - 新しく追加されたクラス
  
  2. 対応するテストファイルを確認
     - 存在しない場合は新規作成
     - ファイル名.test.ts(x)
  
  3. テストケースを生成または更新
     - 正常系のテスト
     - 異常系のテスト
     - エッジケース
     - モックが必要な場合は適切に設定
  
  4. カバレッジを確認
     - 新しいコードがテストされているか
     - カバレッジが低下していないか
     - 目標カバレッジ(80%)を維持
  
  5. テストを実行
     - 生成したテストが通ることを確認
     - 失敗した場合は修正案を提示

TDD(テスト駆動開発)したいけど、テスト書くの面倒...という人に最適!

Hook設定の実践的なコツ

# フックの作成方法
1. Kiroパネル → Agent Hooks → 「+」ボタン
2. 自然言語で説明を入力
3. Kiroが設定を生成 → 確認して保存

# 上手なフック設計のポイント
- 1つのフックは1つの責任だけ(単一責任の原則)
- ファイルパターンは具体的に("**/*"は避ける)
- 実行頻度を考慮(保存のたびは重くなりがち)
- エラーハンドリングも指示に含める

# フックの有効/無効切り替え
- 目のアイコンをクリックでON/OFF
- 一時的に無効にしたい時に便利

🎯 Steering - プロジェクトの知識をAIに教える

Steeringって何?なぜ重要なの?

新しいプロジェクトに参加した時、こんな経験ありませんか?

  • 「このプロジェクトのコーディング規約は?」
  • 「使ってるライブラリのバージョンは?」
  • 「ディレクトリ構成のルールは?」
  • 「命名規則はキャメルケース?スネークケース?」

普通は、これらを新メンバーに毎回説明する必要があります。でもSteeringを使えば、AIが最初から全部知っている状態にできるんです。

デフォルトで生成される3つのSteeringファイル

Kiroは賢いので、プロジェクトを分析して基本的なSteeringファイルを自動生成してくれます:

1. product.md - 製品の概要

# このファイルは .kiro/steering/product.md に生成されます

# 製品概要

## 製品名
MyAwesomeECサイト

## ミッション
中小規模のオンラインショップが、簡単に高機能なECサイトを構築できるプラットフォームを提供する

## ターゲットユーザー
- 個人事業主
- 中小企業のEC担当者
- 副業でネットショップを始めたい人

## 主要機能
1. 商品管理
   - 在庫管理
   - カテゴリ分類
   - 商品画像の複数登録
   
2. 注文管理
   - 注文ステータス管理
   - 配送追跡
   - 返品・交換対応
   
3. 顧客管理
   - 会員登録
   - 購入履歴
   - お気に入り機能
   
4. 決済機能
   - クレジットカード(Stripe)
   - コンビニ決済
   - 代金引換

## ビジネスゴール
- 月間流通総額1億円
- アクティブ店舗数1,000店
- 平均カート単価5,000円

これがあることで、AIは「このプロジェクトが何を目指しているか」を理解して、適切な提案をしてくれます。

2. tech.md - 技術スタック

# このファイルは .kiro/steering/tech.md に生成されます

# 技術スタック

## フロントエンド
- **フレームワーク**: Next.js 14.2.5 (App Router)
- **言語**: TypeScript 5.5.4
- **スタイリング**: 
  - Tailwind CSS 3.4.1
  - CSS Modules(コンポーネント固有のスタイル)
- **状態管理**: Zustand 4.5.4
- **フォーム**: React Hook Form 7.52.1
- **バリデーション**: Zod 3.23.8

## バックエンド
- **ランタイム**: Node.js 20.x
- **フレームワーク**: Express 4.19.2
- **ORM**: Prisma 5.17.0
- **認証**: NextAuth.js 4.24.7

## データベース
- **本番**: PostgreSQL 15(AWS RDS)
- **開発**: PostgreSQL 15(Docker)
- **キャッシュ**: Redis 7.2

## インフラ・デプロイ
- **ホスティング**: Vercel(フロントエンド)
- **API**: AWS Lambda + API Gateway
- **画像配信**: Cloudinary
- **監視**: Datadog

## 開発ツール
- **パッケージマネージャー**: pnpm 8.15.6
- **リンター**: ESLint 8.57.0
- **フォーマッター**: Prettier 3.3.3
- **テスト**: 
  - Jest 29.7.0
  - React Testing Library
  - Playwright(E2E)

## 注意事項
- Node.jsのバージョンは.nvmrcで管理
- 必ずpnpmを使用(npmやyarnは使わない)
- huskyでpre-commitフックを設定済み

これでAIは、あなたのプロジェクトの技術的な詳細を完璧に把握します。

3. structure.md - プロジェクト構造

# このファイルは .kiro/steering/structure.md に生成されます

# プロジェクト構造

## ディレクトリ構成
project-root/
├── .kiro/              # Kiro設定
│   ├── steering/       # プロジェクト知識
│   └── settings/       # Kiro設定
├── src/
│   ├── app/           # Next.js App Router
│   │   ├── (auth)/    # 認証が必要なページ
│   │   ├── (public)/  # 公開ページ
│   │   ├── api/       # APIルート
│   │   └── layout.tsx # ルートレイアウト
│   ├── components/    # UIコンポーネント
│   │   ├── common/    # 共通コンポーネント
│   │   ├── features/  # 機能別コンポーネント
│   │   └── ui/        # 基本UIパーツ
│   ├── hooks/         # カスタムフック
│   ├── lib/           # ユーティリティ
│   │   ├── api/       # APIクライアント
│   │   ├── utils/     # 汎用関数
│   │   └── constants/ # 定数定義
│   ├── stores/        # Zustand stores
│   └── types/         # TypeScript型定義
├── prisma/
│   ├── schema.prisma  # データベーススキーマ
│   └── migrations/    # マイグレーション
├── public/            # 静的ファイル
├── tests/             # テストファイル
└── docs/              # ドキュメント

命名規則

ファイル名

  • コンポーネント: PascalCase.tsx(例: ProductCard.tsx)
  • フック: camelCase.ts(例: useAuth.ts)
  • ユーティリティ: camelCase.ts(例: formatPrice.ts)
  • 型定義: types.ts または models.ts
  • 定数: constants.ts(全て大文字SNAKE_CASE)

コード内の命名

  • 変数・関数: camelCase
  • 定数: UPPER_SNAKE_CASE
  • 型・インターフェース: PascalCase
  • 列挙型: PascalCase(値はUPPER_SNAKE_CASE)

インポート順序

  1. React関連
  2. 外部ライブラリ
  3. 内部エイリアス(@/...)
  4. 相対パス
  5. スタイル

例:

import React, { useState } from 'react'
import { useRouter } from 'next/navigation'
import axios from 'axios'
import { Button } from '@/components/ui'
import { formatPrice } from '@/lib/utils'
import { ProductType } from './types'
import styles from './Product.module.css'

これらのファイルは、プロジェクトを開いた時点でAIが参照し、常に文脈を理解した上で回答してくれます。

### カスタムSteeringファイルの作成

デフォルトの3つだけじゃ物足りない!もっと詳しくプロジェクトのルールを教えたい!そんな時は、カスタムSteeringファイルを作りましょう。

#### API設計のルールを定義する例

```markdown
# .kiro/steering/api-standards.md

---
inclusion: fileMatch
fileMatchPattern: "app/api/**/*"
---

# API設計標準

## エンドポイント設計

### URL設計の原則
- RESTfulな設計を採用
- リソース名は複数形(/users, /products)
- 階層は3階層まで
- ケバブケース使用(/user-profiles)

### HTTPメソッドの使い分け
- GET: リソースの取得(冪等性あり)
- POST: リソースの作成
- PUT: リソース全体の更新
- PATCH: リソースの部分更新
- DELETE: リソースの削除

## レスポンス形式

### 成功レスポンス
```json
{
  "success": true,
  "data": {
    // 実際のデータ
  },
  "meta": {
    "timestamp": "2025-01-20T10:00:00Z",
    "version": "1.0",
    "requestId": "uuid-here"
  }
}

エラーレスポンス

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "入力値が不正です",
    "details": [
      {
        "field": "email",
        "message": "有効なメールアドレスを入力してください"
      }
    ]
  },
  "meta": {
    "timestamp": "2025-01-20T10:00:00Z",
    "requestId": "uuid-here"
  }
}

エラーコード体系

コード HTTPステータス 説明
VALIDATION_ERROR 400 入力値検証エラー
UNAUTHORIZED 401 認証エラー
FORBIDDEN 403 権限エラー
NOT_FOUND 404 リソースが見つからない
CONFLICT 409 リソースの競合
RATE_LIMIT 429 レート制限
INTERNAL_ERROR 500 サーバー内部エラー

認証・認可

認証ヘッダー

Authorization: Bearer <jwt-token>

JWTペイロード

{
  "sub": "user-id",
  "email": "user@example.com",
  "roles": ["user", "admin"],
  "iat": 1234567890,
  "exp": 1234567890
}

ページネーション

リクエスト

GET /api/products?page=1&limit=20&sort=createdAt:desc

レスポンス

{
  "data": [...],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 100,
    "totalPages": 5,
    "hasNext": true,
    "hasPrev": false
  }
}

バリデーション

必ずZodを使用してリクエストボディを検証:

const createProductSchema = z.object({
  name: z.string().min(1).max(100),
  price: z.number().positive(),
  description: z.string().optional(),
  categoryId: z.string().uuid()
})

このSteeringファイルがあれば、APIエンドポイントを作る時、AIは自動的にこれらのルールに従ったコードを生成してくれます。

#### テスト戦略を定義する例

```markdown
# .kiro/steering/testing-strategy.md

---
inclusion: fileMatch
fileMatchPattern: "**/*.test.{ts,tsx}"
---

# テスト戦略

## テストの種類と目的

### ユニットテスト
- カバレッジ目標: 80%以上
- 対象: 純粋関数、カスタムフック、ユーティリティ
- ツール: Jest

### 統合テスト
- 対象: APIエンドポイント、データベース操作
- ツール: Jest + Supertest
- データベース: テスト用のDockerコンテナ

### E2Eテスト
- 対象: 主要なユーザーフロー
- ツール: Playwright
- 実行環境: CI/CDパイプライン

## テストの書き方

### テストファイルの配置

src/
├── components/
│   ├── Button.tsx
│   └── Button.test.tsx  # 同じディレクトリに配置


### テストの構造(AAA原則)

describe('機能名', () => {
  it('期待される動作', () => {
    // Arrange(準備)
    const input = 'test'
    
    // Act(実行)
    const result = functionToTest(input)
    
    // Assert(検証)
    expect(result).toBe('expected')
  })
})


### モックの方針
- 外部APIは必ずモック
- データベースは統合テスト以外でモック
- 日付は固定値でモック

## テストデータ

### ファクトリー関数を使用
```typescript
// tests/factories/user.ts
export const createMockUser = (override?: Partial<User>): User => ({
  id: 'test-id',
  email: 'test@example.com',
  name: 'Test User',
  ...override
})


### シードデータ
- 各テストは独立して実行可能
- beforeEachでクリーンアップ
- 必要最小限のデータのみ作成

Steeringファイルの効果的な使い方

# インクルージョンモードの使い分け

# 1. always(常に含まれる)
# プロジェクト全体に影響する設定
- コーディング規約
- セキュリティポリシー
- 基本的な設計原則

# 2. fileMatch(条件付き)
# 特定のファイルタイプでのみ必要
- APIエンドポイントのルール → "app/api/**/*"
- Reactコンポーネントの規約 → "**/*.tsx"
- テストの書き方 → "**/*.test.*"

# 3. manual(手動)
# たまにしか使わない情報
- トラブルシューティングガイド
- パフォーマンス最適化手法
- 複雑なデプロイ手順

🔌 MCP(Model Context Protocol)- 外部ツールとの連携

MCPって何?なぜすごいの?

MCPは、KiroのAIに「特殊能力」を追加する仕組みです。例えば:

  • AWS公式ドキュメントを検索する能力
  • GitHubのリポジトリを操作する能力
  • Webを検索する能力
  • データベースに接続する能力

これらの能力を、プラグインのように追加できるんです。

主要なMCPサーバーの設定と使い方

1. AWS Documentation Server - AWSの公式ドキュメントにアクセス

// .kiro/settings/mcp.json に追加

{
  "mcpServers": {
    "aws-docs": {
      "command": "uvx",
      "args": ["awslabs.aws-documentation-mcp-server@latest"],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"  // ログを最小限に
      },
      "disabled": false,
      "autoApprove": [
        "mcp_aws_docs_search_documentation",  // 検索は自動承認
        "mcp_aws_docs_read_documentation"     // 読み取りも自動承認
      ]
    }
  }
}

実際の使用例:

# チャットで質問するだけ
"S3のライフサイクルポリシーについて教えて"
"Lambda関数のコールドスタート対策は?"
"DynamoDBのパーティションキー設計のベストプラクティスは?"

# Kiroが自動的にAWS公式ドキュメントを検索して回答

必要な準備:

# uvをインストール(初回のみ)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Python 3.10以上が必要
uv python install 3.10

2. GitHub MCP Server - GitHubと連携

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "$GITHUB_TOKEN"
      },
      "timeout": 10000,  // 10秒でタイムアウト
      "trust": false     // 実行前に確認
    }
  }
}

実際の使用例:

# リポジトリ情報の取得
"facebook/reactリポジトリの最新リリース情報を教えて"

# コード検索
"tensorflow/tensorflowでconv2dの実装を探して"

# Issue作成
"このバグについてIssueを作成して"

# PR作成
"feature/loginブランチからmainへのPRを作成"

GitHubトークンの作成:

  1. GitHub → Settings → Developer settings
  2. Personal access tokens → Generate new token
  3. 必要な権限:repo, user
  4. 環境変数に設定:export GITHUB_TOKEN="ghp_xxxx"

3. Web Search Server - 最新情報を検索

{
  "mcpServers": {
    "web-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-bravesearch"],
      "env": {
        "BRAVE_API_KEY": "$BRAVE_API_KEY"
      },
      "autoApprove": ["brave_search"]  // 検索は自動実行
    }
  }
}

実際の使用例:

# 最新技術情報
"React 19の新機能について検索して"

# トラブルシューティング
"Next.js 14でhydration errorが出る原因を調べて"

# ニュース
"今週のJavaScript界隈のニュースをまとめて"

Brave Search APIキーの取得:

  1. https://brave.com/search/api/ にアクセス
  2. 無料プランで登録(月5000クエリまで無料)
  3. APIキーを環境変数に:export BRAVE_API_KEY="BSA_xxxx"

カスタムMCPサーバーの作成

自分だけのMCPサーバーも作れます!例えば、社内APIと連携するサーバー:

// my-company-mcp-server.js

import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

const server = new Server(
  {
    name: 'my-company-tools',
    version: '1.0.0',
  },
  {
    capabilities: {
      tools: {},
    },
  }
);

// ツールの定義
server.setRequestHandler('tools/list', async () => ({
  tools: [
    {
      name: 'search_company_docs',
      description: '社内ドキュメントを検索',
      inputSchema: {
        type: 'object',
        properties: {
          query: {
            type: 'string',
            description: '検索クエリ'
          },
          department: {
            type: 'string',
            enum: ['engineering', 'design', 'marketing'],
            description: '部署で絞り込み'
          }
        },
        required: ['query']
      }
    },
    {
      name: 'get_employee_info',
      description: '社員情報を取得',
      inputSchema: {
        type: 'object',
        properties: {
          email: {
            type: 'string',
            description: '社員のメールアドレス'
          }
        },
        required: ['email']
      }
    }
  ]
}));

// ツールの実装
server.setRequestHandler('tools/call', async (request) => {
  const { name, arguments: args } = request.params;
  
  switch (name) {
    case 'search_company_docs':
      // 実際の検索処理
      const results = await searchInternalDocs(args.query, args.department);
      return {
        content: [{
          type: 'text',
          text: `検索結果:\n${results.map(r => `- ${r.title}: ${r.url}`).join('\n')}`
        }]
      };
      
    case 'get_employee_info':
      // 社員情報取得
      const info = await getEmployeeInfo(args.email);
      return {
        content: [{
          type: 'text',
          text: `社員情報:\n名前: ${info.name}\n部署: ${info.department}\n内線: ${info.extension}`
        }]
      };
      
    default:
      throw new Error(`Unknown tool: ${name}`);
  }
});

// サーバー起動
const transport = new StdioServerTransport();
await server.connect(transport);

設定に追加:

{
  "mcpServers": {
    "company-tools": {
      "command": "node",
      "args": ["./mcp-servers/my-company-mcp-server.js"],
      "cwd": ".",
      "env": {
        "COMPANY_API_KEY": "$COMPANY_API_KEY"
      }
    }
  }
}

MCPサーバーのデバッグ

うまく動かない時のトラブルシューティング:

# 1. MCPログを確認
Kiroパネル → Output → "Kiro - MCP Logs"

# 2. サーバーの状態確認
/mcp  # チャットで実行

# 3. 手動でサーバーを実行してテスト
node ./mcp-servers/my-server.js

# 4. 環境変数の確認
echo $GITHUB_TOKEN
echo $BRAVE_API_KEY

# 5. タイムアウトを増やす
"timeout": 30000  # 30秒に増やす

🛡️ セキュリティとプライバシー設定

Autopilot vs Supervised モード - どっちを使うべき?

Autopilotモード(デフォルト)

# こんな人向け
- スピード重視で開発したい
- AIを信頼している
- ローカル開発環境で作業

# 動作
- ファイルの作成・編集・削除を自動実行
- コマンドも自動実行(信頼リストのみ)
- いつでも「Stop」で中断可能

# 使用例
"ユーザー認証機能を実装して"
→ 必要なファイルを全部作成、実装まで自動で完了

Supervisedモード(慎重派向け)

# こんな人向け
- 本番環境で作業している
- 重要なプロジェクト
- AIの動作を細かく確認したい

# 動作
- 各アクションの前に確認ダイアログ
- 「このファイルを作成していいですか?」
- 「このコマンドを実行していいですか?」

# 切り替え方法
チャット画面の「Autopilot」トグルをOFF

信頼されたコマンドの管理

デフォルトで自動実行されるコマンド:

ls      # ディレクトリ一覧
cat     # ファイル内容表示
echo    # 文字列出力
pwd     # 現在のディレクトリ
which   # コマンドの場所
head    # ファイルの先頭
tail    # ファイルの末尾
find    # ファイル検索
grep    # 文字列検索

カスタムコマンドの追加:

// Settings  Kiro Agent: Trusted Commands
[
  "npm test",
  "npm run build",
  "git status",
  "git diff",
  "docker ps",
  "docker-compose up",
  "jest",
  "prettier --write"
]

危険なコマンドは絶対に追加しない:

# これらは追加NG!
rm -rf
sudo
chmod 777
curl | sh
eval

データプライバシーとテレメトリ

オプトアウトの方法

# 方法1: 設定から
Settings → Application → Telemetry and Content → Disabled

# 方法2: settings.jsonで
{
  "telemetry": {
    "enabled": false
  },
  "usageStatisticsEnabled": false
}

収集されるデータ

収集される:

  • 使用している機能(Specs、Hooks等)
  • エラー情報
  • パフォーマンスメトリクス
  • OS情報

収集されない:

  • コードの内容
  • プロンプトの内容(設定でOFFの場合)
  • ファイルパス
  • 個人情報

プロジェクトごとの設定

# グローバル設定(全プロジェクト)
~/.kiro/settings.json

# プロジェクト設定(優先される)
.kiro/settings.json

# .gitignoreに追加推奨
.kiro/settings.json  # APIキーなどが含まれる場合

セキュリティベストプラクティス

1. 環境変数でAPIキーを管理

# ❌ 悪い例:settings.jsonに直接記載
{
  "mcpServers": {
    "github": {
      "env": {
        "GITHUB_TOKEN": "ghp_actualTokenHere"  # 危険!
      }
    }
  }
}

# ✅ 良い例:環境変数を参照
{
  "mcpServers": {
    "github": {
      "env": {
        "GITHUB_TOKEN": "$GITHUB_TOKEN"  # 環境変数から読む
      }
    }
  }
}

# .zshrcや.bashrcに追加
export GITHUB_TOKEN="ghp_xxxx"
export BRAVE_API_KEY="BSA_xxxx"

2. プロジェクトごとに権限を分離

# 本番プロジェクト
.kiro/settings.json
{
  "sandbox": "docker",        # サンドボックス有効
  "autoAccept": false,        # 自動承認無効
  "excludeTools": ["run_shell_command"]  # シェル実行禁止
}

# 開発プロジェクト
.kiro/settings.json
{
  "sandbox": false,           # サンドボックス無効(高速)
  "autoAccept": false,        # それでも自動承認は無効
  "coreTools": ["all"]        # 全ツール使用可
}

3. .gitignoreの設定

# .gitignore
.env
.env.local
.kiro/settings.json    # APIキーが含まれる可能性
.kiro/cache/          # キャッシュファイル
*.log                 # ログファイル

# でもこれはコミットする
.kiro/steering/       # プロジェクト知識は共有
.kiro/hooks/          # フック設定も共有
.kiro/specs/          # 仕様書も共有

🚨 トラブルシューティング完全ガイド

よくあるエラーと解決方法

1. macOS: 「Kiroが破損しています」エラー

# エラーメッセージ
"Kiro is damaged and can't be opened. You should move it to the Trash."

# 原因
macOSのGatekeeperによる誤検知

# 解決法(簡単な順に試す)

# 方法1: システム設定から許可
1. システム設定 → プライバシーとセキュリティ
2. 「Kiroは開発元を確認できないため...」の横の「このまま許可」
3. Kiroを再度開く

# 方法2: ファイルを移動してリセット
1. Kiro.appをデスクトップにドラッグ
2. デスクトップからApplicationsフォルダに戻す
3. 開いてみる

# 方法3: コマンドラインで属性削除
sudo xattr -d com.apple.quarantine /Applications/Kiro.app

# 方法4: それでもダメなら
1. Kiro.appを右クリック
2. 「開く」を選択
3. 警告ダイアログで「開く」をクリック

2. シェル統合が利用できない

# エラーメッセージ
"Shell integration unavailable"

# 自動修復を試す
1. Cmd/Ctrl+Shift+P でコマンドパレット
2. "Kiro: Enable Shell Integration" を実行
3. Kiroを再起動

# 手動で修復する場合

# Zshの場合(macOSデフォルト)
echo '[[ "$TERM_PROGRAM" == "kiro" ]] && . "$(kiro --locate-shell-integration-path zsh)"' >> ~/.zshrc
source ~/.zshrc

# Bashの場合
echo '[[ "$TERM_PROGRAM" == "kiro" ]] && . "$(kiro --locate-shell-integration-path bash)"' >> ~/.bashrc
source ~/.bashrc

# Fishの場合
echo 'string match -q "$TERM_PROGRAM" "kiro"' >> ~/.config/fish/config.fish
echo 'and . (kiro --locate-shell-integration-path fish)' >> ~/.config/fish/config.fish

# PowerShellの場合(Windows)
Add-Content $PROFILE 'if ($env:TERM_PROGRAM -eq "kiro") { . "$(kiro --locate-shell-integration-path pwsh)" }'

3. 認証エラー(IAM Identity Center)

# エラーメッセージ
"There was an error signing you in"

# 原因と解決法

# 原因1: Q Developer Pro契約がない
→ Builder IDまたはソーシャルログインを使用

# 原因2: リージョンが違う
→ デフォルトはus-east-1、会社のリージョンを確認

# 原因3: Start URLが間違っている
→ IT部門に正しいURLを確認
   例: https://your-company.awsapps.com/start

4. MCPサーバー接続エラー

# よくあるエラーと対処法

# Error: Command not found
→ 必要なツールがインストールされていない

# AWS Docs Serverの場合
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install 3.10

# Error: Timeout
→ タイムアウト値を増やす
"timeout": 30000  # 30秒

# Error: Permission denied
→ APIキーや認証情報を確認
echo $GITHUB_TOKEN
echo $BRAVE_API_KEY

# デバッグ方法
1. Output → "Kiro - MCP Logs"でログ確認
2. /mcp コマンドで状態確認
3. 手動でサーバーコマンドを実行してテスト

5. ファイルが見つからない・読み込めない

# .gitignoreの影響を確認
cat .gitignore

# Kiroの設定を確認
{
  "fileFiltering": {
    "respectGitIgnore": false  # 一時的に無効化
  }
}

# 大きなファイルの場合
"@large-file.log:1000-2000"  # 行番号指定で部分読み込み

高度なデバッグテクニック

# Kiroのログを有効化
kiro --enable-logging

# 開発者ツールを開く
Help → Toggle Developer Tools → Console

# 現在の設定を確認
cat ~/.kiro/settings.json
cat .kiro/settings.json

# メモリ(コンテキスト)の内容確認
/memory show

# MCPサーバーの手動テスト
# GitHubサーバーの例
npx @modelcontextprotocol/server-github

# ネットワークの問題を確認
curl -I https://api.github.com
curl -I https://kiro.dev

💡 実践的な使用例とベストプラクティス

プロジェクト初期設定の完璧なフロー

# 1. プロジェクトディレクトリでKiroを開く
cd my-awesome-project
kiro .

# 2. 基本的なSteering生成
Kiroパネル → "Generate Steering Docs"
# product.md、tech.md、structure.mdが自動生成される

# 3. プロジェクト固有の設定を追加
cat > .kiro/steering/conventions.md << 'EOF'
# 開発規約

## コミットメッセージ
- feat: 新機能
- fix: バグ修正
- docs: ドキュメント
- style: フォーマット
- refactor: リファクタリング
- test: テスト
- chore: その他

## ブランチ戦略
- main: 本番環境
- develop: 開発環境
- feature/*: 機能開発
- hotfix/*: 緊急修正

## コードレビュー基準
- テストが通っている
- カバレッジ80%以上
- ESLintエラーなし
- ドキュメント更新済み
EOF

# 4. 必須Hooksの設定
# 保存時の自動フォーマット
Hooks → + → "ファイル保存時にESLintとPrettier実行"

# コミット前のセキュリティチェック
Hooks → + → "git commit前に機密情報をスキャン"

# 5. MCPサーバーの設定
cat > .kiro/settings/mcp.json << 'EOF'
{
  "mcpServers": {
    "web-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-bravesearch"],
      "env": {
        "BRAVE_API_KEY": "$BRAVE_API_KEY"
      }
    }
  }
}
EOF

# 6. チーム共有用の.gitignore設定
cat >> .gitignore << 'EOF'
# Kiro
.kiro/settings.json
.kiro/cache/
.kiro/logs/

# でもこれは共有
!.kiro/steering/
!.kiro/hooks/
!.kiro/specs/
EOF

フルスタックアプリを0から作る

# 1. プロジェクト作成から始める
mkdir my-saas-app && cd my-saas-app
kiro .

# 2. 要件をSpecに落とし込む
Cmd/Ctrl+L でチャット開いて:
"SaaSアプリを作りたい。
機能:
- ユーザー認証(メール/パスワード、Google OAuth)
- サブスクリプション管理(Stripe)
- ダッシュボード
- API(REST + GraphQL)
技術:
- Next.js 14 (App Router)
- TypeScript
- Prisma + PostgreSQL
- TailwindCSS"

# 3. Specを実行
生成されたタスクを上から順に実行
各タスクをクリックすると、AIが実装

# 4. 開発サーバー起動
!npm install
!npm run dev

# 5. 追加機能もSpecで
"メール通知機能を追加したい。
- ユーザー登録時のウェルカムメール
- パスワードリセット
- 請求書送付
SendGridを使用"

レガシーコードのモダナイゼーション

# jQuery時代のコードをReactに移行する例

# 1. 現状分析
"@src/legacy/ このディレクトリのコードを分析して、
Reactへの移行計画を立てて"

# 2. 段階的移行のSpec作成
"レガシーコードの段階的移行計画:
Phase 1: 共通コンポーネントの移行
Phase 2: ページ単位での移行
Phase 3: 状態管理の統合
Phase 4: ルーティングの移行"

# 3. 自動変換Hook設定
Trigger: Manual
Name: "jQuery to React Converter"
Instructions: |
  選択されたjQueryコードを分析して:
  1. 同等のReactコンポーネントを生成
  2. イベントハンドラーをReactイベントに変換
  3. DOM操作をstate/propsに変換
  4. アニメーションをCSS/Framer Motionに変換

# 4. テスト追加
"@src/components/ 
すべてのコンポーネントにテストを追加。
React Testing Libraryを使用し、
ユーザーインタラクションをテスト"

CI/CDパイプラインの構築

# GitHub Actions設定をAIと一緒に作る

# 1. 基本的なワークフロー作成
".github/workflows/ci.ymlを作成して。
プッシュ時に:
- コードチェック(ESLint、TypeScript)
- テスト実行
- ビルド確認
- カバレッジレポート"

# 2. デプロイワークフロー
".github/workflows/deploy.ymlを作成。
mainブランチへのマージ時に:
- ビルド
- Vercelにデプロイ
- Slackに通知"

# 3. ワークフローを監視するHook
Trigger: File Save
Target: ".github/workflows/*.yml"
Instructions: |
  GitHub Actionsの設定をレビュー:
  1. シンタックスエラーチェック
  2. シークレットの適切な使用確認
  3. 並列実行の最適化提案
  4. キャッシュの活用提案

パフォーマンス最適化

# 1. 現状分析
"@src/ このプロジェクトのパフォーマンスボトルネックを分析して"

# 2. 最適化Spec作成
"パフォーマンス最適化タスク:
- React.memoによる再レンダリング防止
- 画像の最適化とlazy loading
- バンドルサイズの削減
- データベースクエリの最適化"

# 3. 自動最適化Hook
Trigger: File Save
Target: "src/components/**/*.tsx"
Instructions: |
  パフォーマンスを分析:
  1. 不要な再レンダリングを検出
  2. useCallbackやuseMemoの提案
  3. 重い計算の検出と最適化案
  4. 動的importの提案

# 4. モニタリング設定
"Datadogでパフォーマンスモニタリングを設定。
Core Web Vitalsを追跡"

🎊 まとめ - Kiroで開発が変わる

Kiroを使い始めて変わること

  1. コーディング速度が3倍に

    • Specで仕様を整理 → AIが実装
    • 面倒な作業はHooksで自動化
    • MCPで調べ物の時間を削減
  2. 品質が劇的に向上

    • 一貫したコーディングスタイル
    • 自動テスト生成
    • セキュリティチェック
  3. 学習曲線が緩やかに

    • 知らない技術もAIがサポート
    • ベストプラクティスを自然に習得
    • エラーの解決方法をその場で学習

今すぐ始めるための3ステップ

# Step 1: インストール(5分)
https://kiro.dev からダウンロード → インストール

# Step 2: 最初のプロジェクト(10分)
既存プロジェクトを開いて、Steering生成

# Step 3: AIと対話(∞)
"このプロジェクトを改善するアイデアを提案して"

コミュニティとリソース

Welcome to the future of coding with Kiro! 🚀✨

開発の常識が変わる体験を、ぜひ味わってください〜☺️

42
36
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
42
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?