iiiは、Worker・Function・Triggerという3つの基本要素で、あらゆるバックエンドサービスを構成・拡張・観測できる基盤です。CLIで`iii worker add <capability>`を実行するだけで、キューやエージェントなどの機能をライブカタログに追加でき、追加した瞬間から他のworkerが呼び出せます。エージェントも同じインターフェースでworkerを追加し、呼び出し、トレースできる設計です。
Rust製のengineが中核にあり、workerプロセスの登録、function・triggerカタログの管理、ルーティングを担います。CLIやTypeScript・Python・RustのSDK経由でworkerを起動すると、engineに接続し自分のfunctionとtriggerを宣言的に登録します。triggerはHTTP、cron、queue購読、state変化など多様で、Workerは『この関数はこれが起きたら動く』と定義するだけで、配信やシリアライズはengine側が担当します。console-rustとconsole-frontend(React)から成るconsoleは、WebSocketやREST APIでengineのworker一覧・trace・queue・log・alertを取得して可視化します。console-frontendのソースにはworkers、traces、alerts、samplingなどengine APIへのフェッチ関数が数多く存在し、これがconsole UIの裏付けになっています。release-iiiやdocker-engine、publish-worker-skillsなどのCIワークフロー群は、engineとworkerとskillのビルド・配布を自動化しています。
- STEP 01
install.sh をシェルで実行すると、iii バイナリがダウンロードされ、ローカルにCLIとしてインストールされます。
- STEP 02
iii project init myapp を実行すると、プロジェクトの雛形ファイルが生成されます。
- STEP 03
cd myapp のあとに iii を実行すると、engineプロセスが起動し、ブラウザでconsoleにアクセスできる状態になります。
- STEP 04
iii worker add queue のようなコマンドを叩くと、workers.iii.dev のカタログからworker定義を取得し、プロジェクトに追加します。
- STEP 05
console のflow画面を開くと、登録済みのworkerやqueue、traceがリアルタイムに表示されます。
- STEP 06
consoleのフロントエンドはVite開発サーバーで動き、console-rustは別途cargo buildでビルドする必要があります。
実行すると、稼働中のengineプロセスと、登録済みworkerのライブカタログが手に入ります。consoleを開けば、worker一覧やfunction呼び出しのtrace、queueの状態、logをブラウザで確認できます。開発者はfunctionのコードを書きtriggerを宣言するだけで、queueやobservabilityツールごとの個別統合作業なしに、新しいcapabilityをシステムへ組み込めます。
workers.iii.dev で配布されている実際のworkerの種類や品質は、今回のファイル一覧からは確認できません。
engineコア(engine/ディレクトリ)の内部ロジックは、今回参照した代表ファイルには含まれておらず、詳細は未検証です。
consoleを本番用に動かすには console-rust を cargo build --release で別途ビルドする必要があり、フロントエンドと合わせるREBUILD_FRONTENDフラグなど手順がやや複雑です。
複数言語のサービスを1つのランタイムでつなぎ、queueやagent、observabilityを統一的に足していきたいチームに向いています。READMEの『iii worker add』という体験や、console-frontendに実装されたworkers・traces・alerts向けのAPI呼び出しコードから、CLIでworkerを追加しconsoleで観測するという流れは裏付けが取れます。ただしengineコアの実装詳細やworkerカタログの中身までは本レビューで直接確認しておらず、そこは導入前に実機で確かめることをおすすめします。