AWS Icon Life
AWSのアイコンたちが生命体のように画面上を動き回り、相互作用するシミュレーションゲーム。コンウェイのライフゲームにインスパイアされつつ、AWSサービスアイコンが独自の「生態系」を形成する。プレイヤーは環境に介入し、アイコン同士の相互作用を観察したり誘導したりできる。
- グラフィカルウィンドウを持つデスクトップアプリケーション
- Vibe coding
- Python
- Pygame(グラフィカルインターフェース用)
- AWS SDK for Python (Boto3)
プレイヤーはAWSサービスアイコンの生態系を観察し、介入することで、興味深いパターンや相互作用を発見する。特定のサービスの組み合わせによる「相乗効果」を見つけ出すことが主な目的となる。
- アイコンの動き: 各AWSサービスアイコンは独自の動きのパターンと特性を持つ
- 相互作用: アイコン同士が接触すると、サービスの関連性に基づいた反応が発生
- プレイヤー介入: マウスやキーボードを使って新しいアイコンを配置したり、環境パラメータを変更したりできる
- 進化: 特定の条件下でアイコンが「進化」し、関連サービスに変化する可能性がある
- 初期状態では、基本的なAWSサービスアイコン(EC2、S3、Lambda等)が画面上に配置される
- アイコンは自律的に動き始め、相互作用を開始する
- プレイヤーは新しいアイコンを追加したり、環境パラメータを調整したりして介入できる
- 特定の相互作用パターンを発見すると、新しいアイコンやモードがアンロックされる
- プレイヤーは自分だけの独自の「AWS生態系」を作り上げていく
- 明確な「勝利」や「敗北」はなく、サンドボックス的な体験を提供
- 特定のマイルストーン(全アイコンの発見、特殊な相互作用パターンの発見など)を達成することで進行度を測定
- メインゲームループ: Pygameを使用したフレームベースの更新システム
- アイコンエンティティシステム: 各AWSサービスアイコンをオブジェクトとして管理
- 物理エンジン: 簡易的な衝突検出と反応システム
- イベントシステム: ユーザー入力とゲーム内イベントの処理
- レンダリングシステム: アイコンとエフェクトの描画
- アイコンクラス:
class AWSIcon: def __init__(self, service_type, position, velocity, image): self.service_type = service_type # EC2, S3, Lambda等 self.position = position # (x, y) self.velocity = velocity # (vx, vy) self.image = image # Pygameサーフェス self.properties = {} # サービス固有の特性 self.interactions = [] # 相互作用可能なサービスリスト
- 相互作用マトリックス: どのサービスがどのサービスとどのように相互作用するかを定義
- 環境パラメータ: 重力、摩擦、境界条件などのシミュレーションパラメータ
- 移動アルゴリズム: 各アイコンタイプ固有の動きパターン(直線、円形、ランダムウォークなど)
- 衝突検出: 矩形または円形の衝突判定
- 相互作用ロジック: アイコン同士の相互作用を決定するルールベースシステム
- 進化システム: 特定条件下でのアイコン変化ルール
- Pygame: グラフィックスとゲームループ管理
- NumPy: 物理計算の効率化(オプション)
- Boto3: AWS関連の機能統合(オプション)
- AWSアイコンセット: 公式のAWSアーキテクチャアイコン
- マウス操作:
- 左クリック: 新しいアイコンを配置
- 右クリック: アイコンの情報を表示
- ドラッグ&ドロップ: アイコンを移動
- キーボード操作:
- スペース: シミュレーション一時停止/再開
- 数字キー(1-9): 異なるアイコンタイプを選択
- 矢印キー: 画面スクロール
- +/-: ズームイン/アウト
- メインゲーム画面: アイコンが動き回るシミュレーション領域
- サイドパネル: 選択可能なアイコン一覧、統計情報
- 情報パネル: 選択したアイコンの詳細情報
- ミニマップ: 大規模シミュレーション時の全体像(オプション)
- 視覚エフェクト: アイコン同士の相互作用時のエフェクト
- 視覚的フィードバック: 相互作用時のアニメーション、色の変化
- 音声フィードバック: 相互作用タイプに応じた効果音
- ポップアップ通知: 新しい発見や特殊イベント発生時
- 統計グラフ: アイコンの数や種類の変化を視覚化
- 基本アイコン(最初から利用可能):
- コンピューティング: EC2, Lambda
- ストレージ: S3, EBS
- データベース: RDS, DynamoDB
- ネットワーキング: VPC, Route 53
- アンロック可能アイコン:
- 高度なサービス: SageMaker, Rekognition, Comprehend
- 特殊サービス: IoT Core, Greengrass, DeepRacer
- レアアイコン: 特定の相互作用でのみ出現する特殊サービス
- 依存関係:
- EC2はVPC内に存在する必要がある(VPCがないとEC2の体力が徐々に減少)
- RDSはVPCとセキュリティグループを必要とする
- LambdaはIAMロールがないと実行できない
- ECSはECRからイメージを取得する必要がある
- API GatewayはLambdaやEC2などのバックエンドがないと機能しない
- CloudFrontはS3やEC2などのオリジンがないと配信できない
- 基本相互作用:
- 補完関係: 互いに強化し合う(例: EC2とEBS、DynamoDBとLambda)
- 統合関係: 一時的に結合して新機能を発揮(例: LambdaとAPI Gateway)
- 競合関係: 互いに反発し合う(例: 異なるデータベースサービス同士)
- 複雑相互作用:
- カスケード効果: 一連の相互作用が連鎖的に発生
- 創発現象: 複数のアイコンが特定のパターンで配置されると特殊効果が発生
- アーキテクチャパターン: Well-Architectedフレームワークに基づくパターン形成
- 発見システム: 新しいアイコンや相互作用を発見するとアンロック
- チャレンジ: 特定のパターンや条件を満たすミニゲーム的要素
- アチーブメント: 特定の条件を達成するとバッジやトロフィーを獲得
- 統計追跡: プレイヤーの発見や相互作用の履歴を記録
-
プロトタイプフェーズ
- 基本的なPygameウィンドウの設定
- シンプルなアイコン移動と衝突検出の実装
- 最小限のAWSアイコンセット(EC2、S3、VPC、Lambda)の実装
-
コア機能フェーズ
- 完全なアイコン移動システムの実装
- 基本的な相互作用ルールの実装
- ユーザーインターフェースの基本要素の実装
-
拡張フェーズ
- 追加のAWSアイコンと相互作用の実装
- 進行システムとアンロック機能の実装
- 視覚・音響効果の強化
-
ポリッシュフェーズ
- バグ修正とパフォーマンス最適化
- ユーザーフィードバックに基づく調整
- 追加コンテンツの実装
-
M1: 動くプロトタイプ (2週間)
- 基本的なウィンドウとアイコン表示
- シンプルな物理エンジン
- 4種類のAWSアイコン
-
M2: 基本ゲームプレイ (2週間)
- 10種類のAWSアイコン
- 基本的な相互作用システム
- ユーザー入力処理
-
M3: 完全なゲームループ (3週間)
- 20種類のAWSアイコン
- 複雑な相互作用パターン
- 進行システムとUI完成
-
M4: 最終版 (1週間)
- バグ修正とバランス調整
- パフォーマンス最適化
- 最終ポリッシュ
- ユニットテスト: 個々のコンポーネント(アイコン動作、衝突検出など)のテスト
- 統合テスト: 複数のシステム間の相互作用のテスト
- パフォーマンステスト: 多数のアイコンが存在する場合のフレームレート確認
- ユーザビリティテスト: 実際のユーザーによるプレイテスト
- バランステスト: ゲームメカニクスのバランス調整
- 公式AWSアーキテクチャアイコン: AWS公式のアーキテクチャアイコンを使用
- 正確な依存関係: 実際のAWSサービス間の依存関係や相互作用を反映
- 教育的側面: ゲームを通じてAWSサービスの関係性を学べる要素
- サービス特性: 各AWSサービスの特徴や強みを動きや相互作用に反映
- アーキテクチャパターン: AWS Well-Architectedフレームワークの原則を組み込む
- サービス連携: 実際のAWSサービス連携パターンをゲーム内で再現
- 新サービス対応: 新しいAWSサービスが発表されたら追加可能な設計
- コミュニティ貢献: プレイヤーが新しい相互作用パターンを提案できる仕組み
- カスタマイズ: 自分だけのAWS環境をシミュレートできる機能
- Amazon Q CLIとの関連性: AWSサービスの視覚的表現とインタラクティブな学習体験を提供
- 創造性: AWSアイコンに生命を吹き込み、独自の生態系を作り出す創造的アプローチ
- 教育的価値: AWSサービス間の関係性を直感的に理解できる
- エンターテイメント性: ゲーム要素を通じて楽しみながらAWSを学べる
- ゲームのソースコード(GitHub リポジトリ)
- インストールと実行手順を含むREADME
- ゲームのスクリーンショットまたはデモ動画
- AWS Blog記事で言及されているキャンペーン要件への対応説明
- 使用したAWSサービスやアイコンのリスト
- ライセンス情報
- AWS Architecture Icons
- AWS Well-Architected Framework
- Pygame Documentation
- Conway's Game of Life
- AWS Blog: Build games with Amazon Q CLI and score a t-shirt
- アイコンの動きと相互作用のバランス調整が重要
- パフォーマンス最適化のため、画面外のアイコンの処理を最適化
- 初心者にもわかりやすいチュートリアルの実装を検討
- 将来的に、実際のAWS環境からサービス構成をインポートする機能も検討