開発者
ランタイムを所有します: エンジンの挙動、検証、連携、デプロイ、信頼性。
runtime仕組み
ビジネスユーザーは Excel でレイアウトを編集し、アプリケーションはデータと入力値を供給し、xl3 はワークブックを決定的に実行します。三つのステージをクリックして、一つのレポートが 元データから完成した出力まで進む様子をたどってください。
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Account | Region | Renewal | Owner | |||
| 2 | Acme Logistics | Seoul | 18400 | Mina | |||
| 3 | Beta Works | Busan | 7200 | Joon | |||
| 4 | |||||||
| 5 | |||||||
| 6 | |||||||
| 7 | |||||||
| 8 |
アプリケーションが xl3 にデータテーブル — .xlsx シートまたは言語中立な JSON ソース — と実行ごとの入力値を渡します。レイアウトに関するものはコードに存在しません。
なぜ Excel がテンプレートなのか
ExcelJS、SheetJS、openpyxl、Apache POI はスプレッドシートの DOM API です。強力ですが冗長です。レポートのレイアウト、スタイル、結合セル、ループがコードに入ると、列の追加、小計の移動、ヘッダーの書式変更といったあらゆるデザイン変更がデプロイになります。
xl3 は繰り返される契約を Excel の中へ戻します。ワークブックはすでにビューであり、XTL がそれを実行可能にします。アプリケーションはデータを供給してエンジンを実行するだけです。テンプレートはごく普通の .xlsx なので — マクロもベンダークラウドもなく — 差分を取り、プルリクエストでレビューし、xl3 を聞いたことのない人にも渡せます。
責任に基づく自動化
ほとんどの Excel 自動化ツールは開発者を速くします。xl3 が目指すのは別の成果です — かつて開発者が必要だった文書変更を、オペレーター自身が引き受けられるようにすることです。取引先ごとに独自のフォーマットが必要なとき、開発者一人がそれを一つずつ実装し、変更のたびに直し続けるのはボトルネックになります。
xl3 は、数か月にわたり運用された社内サービスの中で形づくられました。その間、非開発者が Excel で直接テンプレートと変換ルールを保守し、開発者はほ ぼランタイムに専念しました。重要だったのは単なるコード量の削減ではなく、そもそも開発者がやらなければならない作業の量でした。
ランタイムを所有します: エンジンの挙動、検証、連携、デプロイ、信頼性。
runtimeテンプレートを所有します: レイアウト、列、繰り返しルール、出力形式、文書固有のロジック — Excel で直接編集します。
template.xlsx繰り返される文書変更のたびにリリースを待つことなく、完成したワークブックを使います。
result.xlsxxl3 は開発者を置き換えようとするものではありません。開発者がランタイムを、オペレーターがテンプレートを所有し、文書自動化は開発者だけの仕事ではなく組織の能力になります。
ライブラリではなく、オープンな標準
xl3 は、三つの部分からなる実装非依存のオープンな標準として定義されています。XTL の表面は意図的に小さく保たれ、テンプレートは人が読みやすく、AI が下書きしやすいままです。
規範的な定義: xl3 のワークブック形式と、その小さな組み込み式言語である XTL。関数は、ワークブックの作成前に値を確定しておく必要がある場合にのみ XTL に存在します (ADR-0043)。
spec/あらゆる実装が実行して適合を証明する、言語中立なフィクスチャ。特定の実装ではなく、このコーパスこそが移植が満たすべき契約です。
conformance/@xl3-lang/xl3(TypeScript)はブラウザと Node で動作します。有用ですが規範ではなく — Rust/WASM と Python への移植が進行中です。
@xl3-lang/xl3XTL 0.1 は 75 ADRs と 160 conformance fixtures を備え、Stage 2 ですべてグリーンです。TypeScript のリファレンス実装は @xl3-lang/xl3 で公開されており — 移植ガイド が契約を文書化しているため、別言語への移植でも同じ挙動を再現できます。
比較
| アプローチ | 得意なこと | トレードオフ |
|---|---|---|
| xl3 | 宣言的な Excel テンプレートの実行。ワークブックはすでに存在し、xl3 がデータでそれを実行します。 | アルファ版、メンテナー一人、XTL の表面は意図的に小さく保たれ、1.0 まで進化を続けます。 |
| Workbook APIs (ExcelJS, SheetJS, openpyxl, POI) | アプリケーションコードからの低レベルまたはフル機能のワークブック生成。 | レイアウト、スタイル、結合、 ループ、業務ルールがコードになります。非開発者はテンプレートを安全に編集できません。 |
| Python / VBA scripts | 既存のスプレッドシートに近い、素早い単発の自動化。 | ルールがコードや担当者一人の記憶の中にあり、レイアウト変更には依然としてコード修正が必要です。 |
| Power Query / Office Scripts | Excel エコシステム内での Microsoft 365 ワークフローとデータ整形。 | テナントに依存し、ワークフローのルールがワークブックと一緒に移動しません。 |
| Template engines (JXLS, xltpl, jsreport xlsx) | スプレッドシート風テンプレートからのサーバーサイドのレポート生成。 | 有用な先行事例ですが、多くは単一のランタイムに結び付いており、小さく可搬な Excel ルールフォーマットとしては位置づけられていません。 |
| Doc-gen SaaS (Plumsail, Conga, Formstack) | マネージドな文書ワークフロー、連携、承認、配信。 | ルールがベンダーのサービスに存在し、自分でレビューして実行できる可搬なワークブックテンプレートではありません。 |
| Direct LLM → xlsx | 手早い探索的なドラフト作成、単発のチャート。 | 反復運用のための決定的な変換契約ではなく、実行のたびにスタイルや合計がぶれます。 |
開発者 API
リファレンス実装をインストールし、データのバッファでテンプ レートを実行します。オペレーターの体験はファイルベースのまま、アプリがデプロイと検証を担います — さらに、ホストに渡す .xlsx がない場合は convertJson() が言語中立な JSON ソースを受け取ります。
$npm install @xl3-lang/xl3import { convert } from '@xl3-lang/xl3';
const outputs = await convert(templateBuffer, dataBuffer);
// OutputFile[] → formatted .xlsx workbook(s)