Wingが『クラウドとアプリコードの分離』を消す
従来のクラウドアプリ開発は『アプリコード(TypeScript等)+ IaCコード(Terraform/CDK)』の分離が前提で、両者の整合性管理が課題でした。Wingは2023年に登場した実験的なプログラミング言語で、クラウドリソース(Bucket・Queue・Function・Topic等)を言語の一級市民として扱い、IaCとアプリコードを統合します。Monada等のスタートアップが本番採用を進めている注目言語です。
採用すべき5つのシグナル
- クラウドアプリの『IaC vs アプリ』分離に疲れた
- サーバーレス中心のアーキテクチャ
- マルチクラウド対応を言語レベルで実現したい
- 新興言語の早期採用に興味がある
- クラウドネイティブな設計を直感的に書きたい
Wing言語の主要概念
- Preflight/Inflight: コンパイル時/実行時の分離を言語レベルで表現
- Cloud Resources: Bucket・Queue・Function・Topic・Counter等が組み込み型
- Distributed System: 分散システムの設計をコードで表現
- Type Safety: 強型・コンパイル時検証
- Multi-cloud: AWS/GCP/Azure/シミュレータ等のターゲット切替
実装の基本パターン
(1) Wingファイル(.w)でリソース宣言
(2) bring cloudでクラウドリソースをインポート
(3) let bucket = new cloud.Bucket()でバケット作成
(4) Function内でbucket.put()でアクセス・必要権限を自動付与
(5) wing compile --target tf-awsでTerraform生成・デプロイ
従来手法との比較
CDK + TypeScript: IaCとアプリ別ファイル・型完全だが分離あり。
SST + Next.js: 統合されたDX・実態はCDK+アプリ。
Wing: 言語レベルで統合・Preflight/Inflight分離が明示的。実験的段階。
使い分け: 安定本番はCDK/SST・先進的探求としてWing。
本番採用の判断基準
- 実験的段階: バージョン0.x・破壊的変更可能性
- 本番採用: Monada等の限定的事例
- 学習価値: クラウドネイティブ思想の理解
- ベンダーロックイン: Wing独自記法・移行コスト高
- 長期賭け: 言語が定着するか不確実
実装で詰まる3つの落とし穴
- Preflight/Inflightの理解: コンパイル時と実行時の境界を理解
- エコシステム不足: ライブラリ・サンプル少ない
- IDEサポート: VSCode拡張あるが他言語に比べて薄い
30日学習プラン
- 1週目: Wing公式チュートリアル・Hello World
- 2週目: Bucket・Queue・Function統合
- 3週目: 分散システム設計・Multi-cloud設定
- 4週目: AWS本番デプロイ・既存IaCとの比較検証
関連リンク
SSTは SST v3深掘り、Encore.tsは Encore.ts深掘り、Pulumiは Pulumi深掘り を参照してください。クラウドネイティブ全般は クラウドネイティブ実践 もどうぞ。