Carina機能点検(2026-04-27時点)
2026-04-27時点のスナップショット。 carina-rs/carina repoをIaCツールとして必要な20項目で点検した結果である。実装状況は時間とともに変わるので、現在の状態は必ずリポジトリで確認すること。
この点検はCarinaプロジェクト全体(DSL + ツール)を一体として評価している。state管理 / CRUD実行はDSL仕様ではなくツール側の機能だが、プロジェクトとしての成熟度を測るために含めている。
必須7項目: 7/7揃っている
| 項目 | 状況 |
|---|---|
| ノード宣言 | ✅ aws.s3.Bucket { ... } / named binding / anonymous |
| エッジの表現 | ✅ ResourceRefによる参照、string interpolation対応 |
| plan/apply | ✅ Differ + plan generation + validate→plan→apply CLI |
| identity | ✅ ResourceId (provider + type + name)、apply間でstable |
| unknown値 | ✅ deferred退避(plan時fully resolved制約あり、issue #2209で改善検討) |
| 依存解決と実行順序 | ✅ deps.rsでgraph抽出、topological order |
| state管理 | ✅ Local backend + S3 backend + DynamoDB lock |
準必須9項目: 7/9
不足しているもの:
- ❌
count相当(forで代替可能) - ❌ 明示的依存(
depends_on相当) → carina#2239
実装済みで注目すべきもの:
- ✅ import (既存リソース取り込み): DSL構文
import { to = ..., id = ... }実装済み - ✅ moved block (state migration): Terraform
moved相当、removedblockも対応 - ✅ provider拡張: WASM plugin systemで言語横断対応(carina-plugin-sdk / carina-plugin-host)
- ✅ lifecycle制御(部分):
create_before_destroy/prevent_destroy/force_delete実装済み(replace_on_changes/ignore_changesは未実装)
あると便利4項目: 3/4
不足しているもの:
- ❌ partial apply /
--target→ carina#2240 - 🚧 drift detection:ロジックは実装済みだがCLI公開なし → carina#2241
実装済み:
- ✅ policy / validation:
requirestatement、arguments validation - ✅ plan可視化: TUI (
carina-tui、ratatui) + tree-like表示
言語機能の実装状況
| 機能 | 状況 |
|---|---|
関数定義(fn、型注釈・再帰検出) | ✅ 実装済み |
関数合成(>>) / パイプ(|>) / 部分適用(closure) | ✅ 実装済み |
| 高階関数(関数を引数/戻り値に取る、関数値が一級) | ❌ 未実装 |
点検からの読み
必須7項目 + import + moved + WASM providerまで揃っており、IaCツールとしての骨格は完成している。ここから先の進化方向は2軸ある。
- 軸1:運用補助機能の充実(実需要先行) —
depends_on(#2239)、--target(#2240)、carina drift(#2241)の3項目。graph出力DSLの根本構造ではなく実運用のための補助機能で、Terraformに追従する漸進的改善 - 軸2:新しい設計象限の実証(構造先行) — 高階関数を導入してハイブリッド象限に踏み込む(#2238)。境界設計でgraph形状の静的予測可能性を維持することが核心
現状の点検結果から、軸1で実用性を保ちつつ軸2を実験できる状態にあると読める。