Amazon Q CLI Usage - godsugar/aws-url-quiz GitHub Wiki

Amazon Q CLI活用ポイント

🤖 Amazon Q CLIとは

Amazon Q CLIは、AWSが提供するAI支援開発ツールで、コマンドラインから直接AIアシスタントと対話できます。このプロジェクトでは、開発の全工程でAmazon Q CLIを活用し、効率的な開発を実現しました。

📋 実際の活用履歴

1. プロジェクト初期化フェーズ

Next.jsプロジェクトの作成支援

# ユーザー入力
q chat "Next.js 15でTypeScriptを使ったクイズアプリを作りたい。適切なプロジェクト構造を教えて"

# Amazon Q CLIの提案
- create-next-app@latestの使用
- TypeScript設定の最適化
- ディレクトリ構造の提案
- package.jsonの依存関係設定

技術スタック選定の相談

# ユーザー入力
q chat "GitHub Pagesにデプロイするクイズアプリに最適な技術スタックは?"

# Amazon Q CLIの回答
- Next.js静的エクスポートの推奨
- GitHub Actionsでの自動デプロイ設定
- CSS ModulesとCustom CSSの組み合わせ提案

2. コード実装フェーズ

TypeScript型定義の作成

# ユーザー入力
q chat "クイズ問題のデータ構造をTypeScriptで定義したい"

# 生成されたコード
export interface QuizQuestion {
  id: number;
  question: string;
  options: string[];
  correctAnswer: number;
  explanation?: string;
  links?: {
    title: string;
    url: string;
  }[];
}

Reactコンポーネントの実装支援

# ユーザー入力
q chat "クイズコンポーネントでランダムに10問選択する機能を実装して"

# 提案されたロジック
const shuffleArray = (array: QuizQuestion[]) => {
  const shuffled = [...array];
  for (let i = shuffled.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
  }
  return shuffled;
};

3. UI/UX改善フェーズ

CSS アニメーションの実装

# ユーザー入力
q chat "ミリオネア風のエレガントなアニメーションを追加したい"

# 提案されたCSS
@keyframes fadeInUp {
  0% {
    opacity: 0;
    transform: translateY(30px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.quiz-container {
  animation: scaleIn 0.7s ease-out 0.4s both;
}

カラーシステムの設計

# ユーザー入力
q chat "AWS公式カラーを使ったカラーパレットを作成して"

# 提案されたカラーシステム
:root {
  --primary-color: #FF9900;      /* AWS Orange */
  --secondary-color: #232F3E;    /* AWS Dark Blue */
  --millionaire-gold: #FFD700;   /* Gold Accent */
  --millionaire-silver: #C0C0C0; /* Silver Border */
}

4. レスポンシブ対応フェーズ

モバイル表示問題の解決

# ユーザー入力
q chat "Android Chromeでタイトルが見切れる問題を解決したい"

# 提案された解決策
useEffect(() => {
  const setVH = () => {
    const vh = window.innerHeight * 0.01;
    document.documentElement.style.setProperty('--vh', `${vh}px`);
  };
  
  setVH();
  window.addEventListener('resize', setVH);
  window.addEventListener('orientationchange', setVH);
}, []);

CSS Grid レイアウトの最適化

# ユーザー入力
q chat "モバイルでのグリッドレイアウトを最適化したい"

# 提案されたレスポンシブCSS
@media screen and (max-width: 768px) {
  .quiz-container {
    grid-template-rows: auto minmax(140px, 1fr) minmax(110px, auto) auto;
    height: calc(100vh - 160px);
  }
}

5. バグ修正フェーズ

TypeScriptエラーの解決

# ユーザー入力
q chat "Property 'text' does not exist in type エラーを修正して"

# 問題の特定と解決
// 問題: インターフェース定義との不一致
links: [{ text: "タイトル", url: "URL" }] // ❌

// 解決: 正しいプロパティ名を使用
links: [{ title: "タイトル", url: "URL" }] // ✅

Next.js設定の警告解決

# ユーザー入力
q chat "experimental.turbo is deprecated 警告を修正して"

# 修正された設定
// 修正前
experimental: { turbo: {} }

// 修正後
turbopack: {}

6. パフォーマンス最適化フェーズ

ビルド最適化の提案

# ユーザー入力
q chat "GitHub Pages向けのNext.js設定を最適化したい"

# 提案された設定
const nextConfig = {
  output: 'export',
  trailingSlash: true,
  images: { unoptimized: true },
  assetPrefix: process.env.NODE_ENV === 'production' ? '/aws-url-quiz' : ''
}

ファビコンの作成

# ユーザー入力
q chat "AWS URLクイズにふさわしいSVGファビコンを作成して"

# 生成されたSVGファビコン
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
  <!-- AWS風クラウド + URL + クイズ要素 -->
  <path d="M6 16c0-2 1.5-3.5 3.5-3.5..." fill="#FF9900"/>
  <circle cx="24" cy="24" r="4" fill="#FF9900"/>
  <text x="24" y="27.5" fill="#FFFFFF">?</text>
</svg>

7. デプロイメント設定フェーズ

GitHub Actions ワークフローの作成

# ユーザー入力
q chat "GitHub PagesへのNext.js自動デプロイ設定を作成して"

# 生成されたワークフロー
name: Deploy to GitHub Pages
on:
  push:
    branches: [ main ]
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: actions/setup-node@v4
      with:
        node-version: '20'
    - run: npm ci
    - run: npm run build
    - uses: actions/deploy-pages@v4

🎯 Amazon Q CLI活用のメリット

1. 開発速度の向上

  • 従来: 調査 → 実装 → テスト → 修正のサイクル
  • Amazon Q CLI活用: 即座に最適解の提案 → 実装 → 微調整

2. 品質の向上

  • TypeScript型安全性の確保
  • ベストプラクティスの自動適用
  • セキュリティ考慮事項の提案

3. 学習効果

  • 最新技術の効率的な習得
  • 理由付きの技術選択
  • 実践的なコード例の提供

📊 活用統計

対話回数と内容

  • 総対話回数: 50+ 回
  • コード生成: 15回
  • バグ修正: 8回
  • 設定最適化: 12回
  • UI/UX改善: 10回
  • ドキュメント作成: 5回

解決した問題カテゴリ

技術選択・設計: ████████████ 25%
コード実装:     ████████████ 25%
バグ修正:       ████████      20%
UI/UX改善:      ████████      20%
最適化:         ████          10%

🚀 効果的な活用パターン

1. 段階的な質問

# 悪い例
q chat "クイズアプリを作って"

# 良い例
q chat "Next.js 15でTypeScriptを使ったクイズアプリの基本構造を教えて"
q chat "ランダム選択機能の実装方法は?"
q chat "レスポンシブ対応のベストプラクティスは?"

2. 具体的な問題の提示

# 悪い例
q chat "エラーが出る"

# 良い例
q chat "TypeScript error: Property 'text' does not exist in type '{ title: string; url: string; }' を解決して"

3. コンテキストの提供

# 良い例
q chat "GitHub Pagesにデプロイする予定のNext.jsアプリで、Android Chromeでタイトルが見切れる問題を解決したい"

🎨 創造的活用例

1. デザインシステムの構築

Amazon Q CLIにAWS公式カラーとミリオネア風デザインの融合を相談し、独自のデザインシステムを構築。

2. 問題データの生成

AWSサービスのURL問題を効率的に生成し、品質チェックのポイントも提案。

3. アニメーション設計

ユーザー体験を向上させるエレガントなアニメーションの実装方法を学習。

🔧 トラブルシューティングでの活用

よく使った解決パターン

  1. エラーメッセージの直接入力: 正確な解決策の提示
  2. 環境情報の共有: デバイス・ブラウザ固有の問題解決
  3. 段階的デバッグ: 問題の切り分けと順次解決

📝 学習ポイント

Amazon Q CLI活用のコツ

  1. 明確で具体的な質問: 曖昧な質問より具体的な問題提示
  2. 段階的アプローチ: 大きな問題を小さく分割
  3. コンテキスト共有: 技術スタックや制約条件の明示
  4. 継続的対話: 一度の質問で終わらず、深掘りして最適解を探求

開発効率化のポイント

  1. 設計段階からの活用: 後戻りを防ぐ事前相談
  2. ベストプラクティスの確認: 実装前の方針確認
  3. 最新技術の活用: Next.js 15等の新機能の効率的学習

関連ページ: Home | Project Setup | Troubleshooting

⚠️ **GitHub.com Fallback** ⚠️