本稿は、まだ一行のコードも書いていない妄想段階のアーキテクチャである。しかし、私のこれまでのエンジニア人生(とコンパイラ作成の記憶)が、これが正解だと叫んでいる。
- 楽園の誘惑:Pythonという甘い罠
それは、ある晴れた日の午後だった。
「Cursor(AI)にPythonスクリプトを書かせて、UNO API経由でLibreOfficeを自動操作すれば、業務自動化なんて朝飯前じゃないか?」
私はそう確信していた。AIはスラスラと流麗なコードを吐き出す。
import uno, ctx = uno.getComponentContext()...。
「勝った。」私は勝利を確信し、実行ボタンを押した。
- 深淵からの囁き:ImportError と環境の壁
しかし、画面に映し出されたのは無慈悲なエラーの赤文字だった。
LibreOfficeのPython環境は特殊だ。OS標準のPythonとは絶縁され、パスは迷宮のように入り組み、バージョンが一つ違うだけで昨日の正解が今日のゴミになる。
Windows: C:\Program Files\LibreOffice\program\python.exe を使え。
Linux: /usr/lib/libreoffice/program/python だ、話を聞け。
AI: 「すみません、そのパスは見つかりませんでした。書き直しますね!」(そして無限ループへ)
その時、私は気づいた。AIにスクリプトを書かせるのは、「海図を持たずに嵐の海へ漕ぎ出す」ようなものだ。環境という名の荒波を、AIの推論だけで乗り越えるのは不可能だと。
- コンパイラ屋の血が騒ぐ:静的解析と動的実行の融合
「スクリプトがダメなら、基盤(ランタイム)を作ればいいじゃないか。」
かつて卒論でコンパイラを自作した時の記憶が、脳裏をよぎる。
AIに不安定なスクリプトを委ねるのではなく、AIには「標準化されたインターフェース(MCP)」だけを見せ、その裏側で「環境を検知し、最適なバイナリを調達し、安全に実行する」鉄壁の布陣を敷く。これこそが、フリーランスとして生き抜いてきた私の「生存戦略」だ。
- 閃きの芋づる:Rust + Wasm + Go という三位一体
アイデアは芋づる式に溢れ出した。
Go (The Scout): 起動速度とシングルバイナリの利点を活かし、現場の環境(OS、LibreOfficeのバージョン)を瞬時に偵察。最適な「作戦指示書(マニフェスト)」を書き出す。
Rust (The Engine): 堅牢なMCPサーバーとして君臨。Wasmランタイムを内蔵し、外部から降ってくるプラグインをミリ秒単位でロードする。
Wasm (The Universal Tool): 「一度書けばどこでも動く」魔法のプラグイン。環境ごとの差異は、このWasmが吸収する。
- 究極の妄想:AIは「デバッガ」へ
設計を練るうちに、さらに飛躍した。
「この基盤があれば、AIに 『描画直前で止めて、変数Xの中身を教えて!』 と命令できるんじゃないか?」
MCPをデバッグインターフェースとして使い、Wasmという「目」を通じてバイナリの内部をAIに覗かせる。それはもはや自動化ツールではない。AIがシステムの内部構造を理解し、自己修復すら可能にする「次世代のエンジニアリング・プラットフォーム」だ。
結びに代えて:Strategic Business Creatorの宣言
私はまだ、コードを一行も書いていない。
だが、頭の中にはすでに、北九州から世界へ、あるいはRaspberry Piから巨大なサーバーまでを繋ぐ、ポータブルな銀河系が広がっている。
「実装が楽しみだ」なんていう生温い言葉では足りない。
これは、AIとレガシーシステムが握手するための、新しい言語(プロトコル)を創る戦いなのだから。
(つづく:次回「Hello Worldから始まるWasmの鼓動」編)
著者あとがき
妄想100%で書き始めましたが、書いているうちに「これ、マジでいけるな」という確信に変わってきました(笑)。