architecture-design について
architecture-designは、ソフトウェアシステムを計画する開発者やチーム向けのスキルです。要件分析から構成や技術の選定まで支援し、図、意思決定記録、実装計画を作成します。
主な機能
- 01要件分析とアーキテクチャ計画
- 02システム構成とアーキテクチャ様式
- 03技術スタックの評価
- 04統合とレジリエンスのパターン
- 05Mermaid図とADR
- 06仕様書と移行ロードマップ
活用シーン
- 01機能・非機能要件に基づく設計
- 02モノリス、マイクロサービス、サーバーレスの比較
- 03C4図によるシステム構造の記録
- 04技術選定と移行手順の記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dauquangthanh/ hanoi-rainbow --skill architecture-designインストール後、Claude Code で/architecture-designを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/adr-template.mdarchitecture-design-process.mdarchitecture-patterns.mdbest-practices.mdcommon-anti-patterns-to-avoid.mddesign-considerations.mdexamples.mdmigration-patterns.mdresources-and-references.mdtechnology-stack-guide.md詳細
アーキテクチャ設計
概要
このスキルを使用すると、システムコンポーネント、テクノロジースタック、統合パターン、スケーラビリティ戦略、デプロイモデルを含む包括的なソフトウェアソリューションのアーキテクチャを設計できます。
主な機能
有効にすると、このスキルでは次のことができます。
-
要件分析とアーキテクチャ計画
- 機能要件と非機能要件を分析する
- アーキテクチャ上の主要な要因(スケーラビリティ、セキュリティ、パフォーマンス)を特定する
- システムの境界と制約を定義する
- アーキテクチャの目標と成功基準を設定する
-
システムアーキテクチャ設計
- 階層型/多層アーキテクチャを設計する
- マイクロサービスとドメイン駆動設計を作成する
- イベント駆動型システムとメッセージベースのシステムを設計する
- サーバーレスおよびクラウドネイティブアーキテクチャを計画する
- モノリシック、モジュラーモノリシック、または分散システムを設計する
-
テクノロジースタックの選定
- プログラミング言語とフレームワークを評価し、選定理由を示す
- 根拠に基づいてデータベース(SQL、NoSQL、時系列、グラフ)を選定する
- ミドルウェアと統合プラットフォーム(メッセージキュー、API ゲートウェイ)を選ぶ
- インフラストラクチャとクラウドプラットフォームを選定する(ベンダーロックインを評価)
- CI/CD と DevOps のツールを推奨する
- 検討した代替案とともに、ADR に技術的な決定を記録する
- 新しいテクノロジーに必要なチームのスキルとトレーニングを評価する
-
アーキテクチャパターンとベストプラクティス
- デザインパターン(MVC、MVVM、クリーンアーキテクチャ、ヘキサゴナルアーキテクチャ)を適用する
- 統合パターン(REST、GraphQL、gRPC、メッセージキュー)を実装する
- スケーラビリティを考慮して設計する(水平/垂直スケーリング、キャッシュ、CDN)
- セキュリティパターン(OAuth、JWT、ゼロトラスト)を実装する
- レジリエンスパターン(サーキットブレーカー、リトライ、バルクヘッド)を適用する
-
ドキュメントと成果物
- C4 モデル図を Mermaid 形式で作成する(コンテキスト、コンテナー、コンポーネント、コード)
- Mermaid 図(クラス図、シーケンス図、デプロイ図)を生成する
- アーキテクチャ決定記録(ADR)を作成する
- 技術仕様書と API コントラクトを作成する
- 実装ロードマップと移行計画を作成する
アーキテクチャ設計ワークフロー
次の体系的なプロセスに従います。
ステップ 1:調査と要件の把握
-
要件を収集する
- 機能要件(機能、ユースケース)
- 非機能要件(パフォーマンス、スケーラビリティ、セキュリティ)
- ビジネス上の制約(予算、スケジュール、コンプライアンス)
- 技術的な制約(既存システム、チームのスキル)
-
アーキテクチャ上の主要な要因を分析する
- パフォーマンス:レイテンシー、スループットの目標
- スケーラビリティ:ユーザー数の増加、データ量の予測
- 可用性:稼働率 SLA、災害復旧の要件
- セキュリティ:認証、認可、コンプライアンス要件
- 保守性:テスト容易性、モジュール性の目標
-
システムのコンテキストを定義する
- ステークホルダーとそのニーズを特定する
- 外部システムと依存関係を整理する
- システムの境界を定義する
- 統合ポイントを特定する
ステップ 2:アーキテクチャ設計
- アーキテクチャスタイルを選択する
要件と制約に基づいて選択します。
モノリシック
- 使用場面:シンプルなアプリケーション、MVP、小規模なチーム、厳しい納期
- メリット:デプロイがシンプル、整合性が高い、ネットワークのオーバーヘッドがない
- トレードオフ:スケーリングの制限、テクノロジーへのロックイン
モジュラーモノリシック
- 使用場面:中程度の複雑さ、明確なドメイン境界
- メリット:構成の改善、ある程度の分離、インフラストラクチャの共有
- トレードオフ:デプロイは依然として単一、独立したスケーリングに制限がある
マイクロサービス
- 使用場面:大規模、複数のチーム、異なる技術スタック
- メリット:独立したスケーリング/デプロイ、テクノロジーの柔軟性
- トレードオフ:分散システムの複雑さ、ネットワークのオーバーヘッド、結果整合性
サーバーレス
- 使用場面:イベント駆動型、負荷が変動する場合、迅速な開発
- メリット:自動スケーリング、従量課金、インフラストラクチャの管理が不要
- トレードオフ:コールドスタート、ベンダーロックイン、デバッグの複雑さ
イベント駆動型
- 使用場面:リアルタイム処理、疎結合、高スループット
- メリット:スケーラビリティ、柔軟性、非同期処理
- トレードオフ:複雑さ、結果整合性、デバッグの難しさ
- システムコンポーネントを設計する
主要なレイヤーとコンポーネントを定義します。
┌─────────────────────────────────┐
│ Presentation Layer │ UI, Controllers, APIs
├─────────────────────────────────┤
│ Application Layer │ Use Cases, Orchestration
├─────────────────────────────────┤
│ Domain Layer │ Business Logic, Entities
├─────────────────────────────────┤
│ Data Layer │ Databases, Caches
├─────────────────────────────────┤
│ Infrastructure Layer │ External APIs, Services
└─────────────────────────────────┘
-
データアーキテクチャを定義する
- データモデルとスキーマを設計する
- データベースの種類を選択する(リレーショナル、ドキュメント、グラフ、時系列)
- データのパーティショニングとシャーディングの戦略を計画する
- キャッシュレイヤーを設計する(Redis、Memcached)
- データフローと ETL プロセスを定義する
-
統合ポイントを設計する
- API 設計(REST、GraphQL、gRPC)
- メッセージキュー(Kafka、RabbitMQ、SQS)
- イベントストリーミングアーキテクチャ
- 認証と認可のフロー
- レート制限とスロットリングの戦略
ステップ 3:アーキテクチャを文書化する
- アーキテクチャ図を作成する
包括的なドキュメントを作成するために、C4 モデルを Mermaid 形式で使用します。
- コンテキスト:ユーザーや外部システムを含む環境内でのシステム(Mermaid C4Context を使用)
- コンテナー:高レベルのテクノロジー選択と通信(Mermaid C4Container を使用)
- コンポーネント:コンテナーの内部構造(Mermaid C4Component を使用)
- コード:複雑なコンポーネントのクラス図(Mermaid classDiagram を使用)
すべての図に Mermaid 構文を使用すると、バージョン管理や Markdown でのレンダリングが容易になります。
- アーキテクチャ決定記録(ADR)を作成する
構造化された ADR を使用して、重要な決定をすべて文書化します。
# ADR-001: [Decision Title]
## Status
Proposed | Accepted | Deprecated | Superseded
## Context
[Problem and constraints requiring decision]
## Decision
[Chosen solution and approach]
## Consequences
[Benefits and trade-offs]
完全版 ADR テンプレート:例を含む完全な構成については、adr-template.md を参照してください。
- 技術仕様を作成する
- システムの概要と目標
- コンポーネントの説明と責任
- API コントラクトとインターフェース
- データモデルとスキーマ
- セキュリティおよびコンプライアンス対策
- デプロイと運用のガイドライン
ステップ 4:検証とレビュー
-
品質特性の評価
- パフォーマンス:応答時間、スループット
- スケーラビリティ:水平/垂直スケーリングの能力
- 可用性:フォールトトレランス、災害復旧
- セキュリティ:認証、認可、暗号化
- 保守性:コードの構成、テストのしやすさ
- コスト:インフラストラクチャおよび運用の費用
-
設計検証チェックリスト
アーキテクチャがレビュー可能な状態であることを確認します。
- すべての機能要件と非機能要件に対応している
- アーキテクチャスタイルの選択理由が説明され、トレードオフが文書化されている
- スケーラビリティ戦略が定義されている(水平/垂直、容量計画)
- セキュリティ対策が実装されている(認証、認可、暗号化)
- データアーキテクチャが検証されている(ストレージ、一貫性、レプリケーション)
- 統合パターンが指定されている(同期/非同期、API、イベント)
- 監視とオブザーバビリティが計画されている(メトリクス、ログ、トレース、アラート)
- 災害復旧とバックアップの戦略が文書化されている(RPO/RTO)
- コスト見積もりが提示されている(インフラストラクチャ、運用、スケーリング)
- 主要な決定について、アーキテクチャ決定記録(ADR)が作成されている
参考ファイル
特定のニーズに応じて、参考ファイルを読み込みます。
-
アーキテクチャ設計プロセス:次の場合は architecture-design-process.md を参照してください。
- 複雑なアーキテクチャについて、詳細なステップごとのガイダンスが必要な場合
- 各フェーズを体系的に進める場合
- 包括的なチェックリストや考慮事項が必要な場合
-
アーキテクチャパターン:次の場合は architecture-patterns.md を参照してください。
- メリットとトレードオフを含む、詳細なパターンの説明が必要な場合
- 複数のアーキテクチャスタイルを比較する場合
- 特定のパターンの実装例を探している場合
-
テクノロジースタックガイド:次の場合は technology-stack-guide.md を参照してください。
- 特定のテクノロジーやフレームワークを評価する場合
- データベース、言語、クラウドプラットフォームについて推奨事項が必要な場合
- 特定の要件に応じて技術的な選択肢を比較する場合
-
ベストプラクティス:次の場合は best-practices.md を参照してください。
- 設計原則やガイドラインが必要な場合
- API 設計標準を探している場合
- セキュリティや運用に関するベストプラクティスが必要な場合
-
設計上の考慮事項:次の場合は design-considerations.md を参照してください。
- 品質特性(パフォーマンス、スケーラビリティ、セキュリティ)を評価する場合
- 特定のアーキテクチャ上の課題についてガイダンスが必要な場合
- オブザーバビリティ、レジリエンス、コスト最適化を計画する場合
-
よくあるアンチパターン:次の場合は common-anti-patterns-to-avoid.md を参照してください。
- 既存のアーキテクチャの問題点をレビューする場合
- 設計上の決定を検証する場合
- 避けるべきことの例が必要な場合
-
移行パターン:次の場合は migration-patterns.md を参照してください。
- レガシーアプリケーションをモダナイズする場合
- 移行戦略を計画する場合
- 段階的な移行やストラングラーフィグアプローチのパターンが必要な場合
-
例:次の場合は examples.md を参照してください。
- よくあるシナリオについて、完全なアーキテクチャ例が必要な場合
- 実際の参考実装を探している場合
- パターンが実際にどのように適用されるか確認したい場合
-
リソースと参考資料:次の場合は resources-and-references.md を参照してください。
- 外部ドキュメントへのリンクが必要な場合
- 追加の学習リソースを探している場合
- 仕様や標準の参考資料が必要な場合
出力形式
明確で包括的なアーキテクチャドキュメントを作成します。
-
アーキテクチャの概要
- システムの目的と範囲
- 主要なアーキテクチャ上の決定とその根拠
- 高レベルのコンポーネント図
-
詳細設計
- コンポーネントの説明と責務
- データモデルとスキーマ
- API 仕様
- 統合パターン
-
図(すべて Mermaid 形式)
- C4 コンテキスト図(Mermaid C4Context)
- C4 コンテナー図(Mermaid C4Container)
- 主要なフローのシーケンス図(Mermaid sequenceDiagram)
- デプロイメント図(Mermaid flowchart または C4Deployment)
-
実装ロードマップ
- マイルストーンを含むフェーズの内訳
- 依存関係と実施順序
- 必要なリソース
- リスク軽減策
-
アーキテクチャ決定記録
- 重要な決定をすべて記録します
- 背景、代替案、トレードオフを含めます