# インフラ設計書

## 概要

本ドキュメントは、CoffeeScriptコンパイラプロジェクトのインフラストラクチャ構成を記載したものです。CoffeeScriptはJavaScriptにコンパイルされる言語であり、npmパッケージとして配布されるOSSプロジェクトです。本プロジェクトはスタンドアロンのCLIツールおよびライブラリとして機能し、専用のサーバーインフラは持たず、GitHub ActionsによるCI/CDパイプラインで品質管理を行っています。

## システム構成

### 全体構成

CoffeeScriptプロジェクトは以下の構成要素から成り立っています：

1. **ソースコード管理**: GitHub（jashkenas/coffeescript）
2. **CI/CDパイプライン**: GitHub Actions
3. **パッケージ配布**: npm Registry
4. **ドキュメントホスティング**: GitHub Pages（coffeescript.org）

本プロジェクトは従来型のサーバーインフラを持たないため、以下はCI/CD実行環境およびビルド環境としての構成を記載します。

### サーバー構成

| サーバー種別 | 役割 | スペック | 台数 |
| --- | --- | --- | --- |
| GitHub Actions Runner (ubuntu-latest) | CI/CDジョブ実行 | GitHub提供のマネージドランナー | オンデマンド |
| GitHub Actions Runner (macos-latest) | CI/CDジョブ実行（macOS互換性テスト） | GitHub提供のマネージドランナー | オンデマンド |
| GitHub Actions Runner (windows-latest) | CI/CDジョブ実行（Windows互換性テスト） | GitHub提供のマネージドランナー | オンデマンド |

### ネットワーク構成

本プロジェクトは専用ネットワークインフラを持ちません。GitHub ActionsランナーはGitHub管理のネットワーク上で動作し、以下の外部サービスと通信します：

- **GitHub API**: リポジトリ操作、Actions連携
- **npm Registry**: パッケージ依存関係の取得

## ミドルウェア

| ミドルウェア | バージョン | 用途 |
| --- | --- | --- |
| Node.js | 12.x, 14.x, 16.x, 18.x, 20.x | コンパイラ実行環境（複数バージョンでテスト） |
| npm | Node.jsに付属 | パッケージ管理 |
| Jison | ~0.4.18 | パーサー生成 |
| @babel/core | ~7.17.9 | トランスパイル |
| @babel/preset-env | ~7.16.11 | ES5互換変換 |
| Webpack | ~5.72.0 | ブラウザ向けバンドル |
| Puppeteer | ~13.6.0 | ブラウザテスト実行 |

## 外部サービス連携

| サービス名 | 用途 | 接続方式 |
| --- | --- | --- |
| GitHub | ソースコード管理、Issue/PR管理 | HTTPS (git) |
| GitHub Actions | CI/CDパイプライン | GitHub統合 |
| npm Registry | パッケージ配布 | HTTPS (npm publish) |
| GitHub Pages | ドキュメントホスティング | GitHub統合 |

## スケーリング設計

本プロジェクトはCLIツール/ライブラリであり、ユーザーのローカル環境で実行されます。そのため、サーバーサイドのスケーリング設計は不要です。

CI/CDについては、GitHub Actionsのマトリックスビルドを使用して並列実行を行っています：

- **OS**: ubuntu-latest, macos-latest, windows-latest（3並列）
- **Node.js**: 12.x, 14.x, 16.x, 18.x, 20.x（5並列）
- **最大並列ジョブ数**: 15ジョブ

## 可用性設計

本プロジェクトは以下の可用性戦略を採用しています：

1. **ソースコード**: GitHubの分散型バージョン管理により、ローカルクローンで冗長化
2. **パッケージ配布**: npmのグローバルCDNにより高可用性を確保
3. **ドキュメント**: GitHub Pagesによるホスティングで可用性を確保

## バックアップ設計

| 対象 | 方式 | 頻度 | 保持期間 |
| --- | --- | --- | --- |
| ソースコード | Git分散管理 | コミット毎 | 無期限（Git履歴） |
| リリースパッケージ | npm Registry | リリース毎 | 無期限（npm保持ポリシーによる） |
| ドキュメント | リポジトリ内docs/ | コミット毎 | 無期限（Git履歴） |

## 監視設計

本プロジェクトでは以下の監視を行っています：

1. **CI/CDステータス**: GitHub Actionsのビルドステータスバッジ
2. **依存関係脆弱性**: GitHubのDependabot（設定があれば）
3. **Issue/PRトラッキング**: GitHubのIssue/Pull Request機能

専用の監視インフラは構築されていません。OSSプロジェクトとして、コミュニティによる問題報告がGitHub Issuesを通じて行われます。

## 備考

- 本プロジェクトはCoffeeScript v2.7.0時点の構成を記載しています
- Node.js v6以上が実行環境として必要です（package.jsonのengines設定）
- ブラウザ向けにはレガシー（UMD）とモダン（ES Module）の2種類のビルドが提供されています
- 開発には`cake`コマンド（CoffeeScript版のMake）を使用します
