メインコンテンツへスキップ

繰り返し作る業務文書のための Excel テンプレートエンジン

Excel の帳票は、コードではなく
テンプレートで作る。

変換ロジックは Excel ファイルの中で直接直せます。開発依頼は要りません。データを渡せば xl3 が実行し、書式はそのまま、結果は毎回同じです。

Fast
Deterministic
Portable
Spec-first

仕組み

Excel がテンプレートで、xl3 がそれを実行する。

Excel でレイアウトをデザインしてデータを結び付けると、xl3 が文書を生成します。元データ → テンプレート → 出力を並べて比較できます。

データのつながりを見る

フィールドにカーソルを合わせるか、キーボードで選択してつながりを確認。クリックで固定し、もう一度クリックするか Esc で解除します。

フィールドを選んでください
01

毎回届く元データ

data.xlsx実行ごとに変わる、変換前のデータ
ABCD
1
2
3
4
5
6
7
8
Sheet1

顧客、金額、担当者など、毎回変わるデータを .xlsx または JSON で渡します。テンプレートを適用する前の入力データです。

02

ワークブックの中で変換を宣言する

template.xlsx実行可能な Excel テンプレート
ABCDE
1Customer Renewal Report
2
3
4
5
6
7
8
Report

Excel でタイトルの背景色、フォント、罫線、セルの結合をデザインします。データを入れるセルに XTL {{ … }} を記述します。

03

新しいデータ、同じ書式の文書

result.xlsxレンダリングされたワークブック、書式は保持
ABCDE
1Customer Renewal Report
2
3
4
5
6
7
8
Report

データが変わっても、テンプレートのタイトルの背景色、フォント、セルの結合、罫線、数値書式はそのまま保たれます。

責任に基づく自動化

文書変更をデプロイの待ち行列から外す。

ほとんどの Excel 自動化ツールは開発者を速くします。xl3 が目指すのは別の成果です — かつて開発者が必要だった文書変更を、オペレーター自身が引き受けられるようにすることです。取引先ごとに独自のフォーマットが必要なとき、開発者一人がそれを一つずつ実装し、変更のたびに直し続けるのはボトルネックになります。

xl3 は、数か月にわたり運用された社内サービスの中で形づくられました。その間、非開発者が Excel で直接テンプレートと変換ルールを保守し、開発者はほぼランタイムに専念しました。重要だったのは単なるコード量の削減ではなく、そもそも開発者がやらなければならない作業の量でした。

開発者

ランタイムを所有します: エンジンの挙動、検証、連携、デプロイ、信頼性。

runtime

オペレーター

テンプレートを所有します: レイアウト、列、繰り返しルール、出力形式、文書固有のロジック — Excel で直接編集します。

template.xlsx

ビジネス

繰り返される文書変更のたびにリリースを待つことなく、完成したワークブックを使います。

result.xlsx

xl3 は開発者を置き換えようとするものではありません。開発者がランタイムを、オペレーターがテンプレートを所有し、文書自動化は開発者だけの仕事ではなく組織の能力になります。

なぜ Excel がテンプレートなのか

レポートのレイアウトを使い捨てのスクリプトに埋め込むのをやめる。

ExcelJS、SheetJS、openpyxl、Apache POI はスプレッドシートの DOM API です。強力ですが冗長です。レポートのレイアウト、スタイル、結合セル、ループがコードに入ると、列の追加、小計の移動、ヘッダーの書式変更といったあらゆるデザイン変更がデプロイになります。

xl3 は繰り返される契約を Excel の中へ戻します。ワークブックはすでにビューであり、XTL がそれを実行可能にします。アプリケーションはデータを供給してエンジンを実行するだけです。テンプレートはごく普通の .xlsx なので — マクロもベンダークラウドもなく — 差分を取り、プルリクエストでレビューし、xl3 を聞いたことのない人にも渡せます。

ライブラリではなく、オープンな標準

仕様、適合性スイート、そしてリファレンス実装。

xl3 は、三つの部分からなる実装非依存のオープンな標準として定義されています。XTL の表面は意図的に小さく保たれ、テンプレートは人が読みやすく、AI が下書きしやすいままです。

仕様 (xl3 + XTL)

規範的な定義: xl3 のワークブック形式と、その小さな組み込み式言語である XTL。関数は、ワークブックの作成前に値を確定しておく必要がある場合にのみ XTL に存在します (ADR-0043)。

spec/

適合性スイート

あらゆる実装が実行して適合を証明する、言語中立なフィクスチャ。特定の実装ではなく、このコーパスこそが移植が満たすべき契約です。

conformance/

リファレンス実装

@xl3-lang/xl3(TypeScript)はブラウザと Node で動作します。有用ですが規範ではなく — Rust/WASM と Python への移植が進行中です。

@xl3-lang/xl3

XTL 0.1 は 79 ADRs と 171 conformance fixtures を備え、Stage 2 ですべてグリーンです。TypeScript のリファレンス実装は @xl3-lang/xl3 で公開されており — 移植ガイド が契約を文書化しているため、別言語への移植でも同じ挙動を再現できます。

比較

同じ課題、異なる形。

アプローチ得意なことトレードオフ
xl3宣言的な Excel テンプレートの実行。ワークブックはすでに存在し、xl3 がデータでそれを実行します。リリース候補、メンテナー一人、1.0 契約は 2026-11-28 まで技術的安定化中です。
Workbook APIs (ExcelJS, SheetJS, openpyxl, POI)アプリケーションコードからの低レベルまたはフル機能のワークブック生成。レイアウト、スタイル、結合、ループ、業務ルールがコードになります。非開発者はテンプレートを安全に編集できません。
Python / VBA scripts既存のスプレッドシートに近い、素早い単発の自動化。ルールがコードや担当者一人の記憶の中にあり、レイアウト変更には依然としてコード修正が必要です。
Power Query / Office ScriptsExcel エコシステム内での Microsoft 365 ワークフローとデータ整形。テナントに依存し、ワークフローのルールがワークブックと一緒に移動しません。
Template engines (JXLS, xltpl, jsreport xlsx)スプレッドシート風テンプレートからのサーバーサイドのレポート生成。有用な先行事例ですが、多くは単一のランタイムに結び付いており、小さく可搬な Excel ルールフォーマットとしては位置づけられていません。
Doc-gen SaaS (Plumsail, Conga, Formstack)マネージドな文書ワークフロー、連携、承認、配信。ルールがベンダーのサービスに存在し、自分でレビューして実行できる可搬なワークブックテンプレートではありません。
Direct LLM → xlsx手早い探索的なドラフト作成、単発のチャート。反復運用のための決定的な変換契約ではなく、実行のたびにスタイルや合計がぶれます。

開発者 API

同じワークフローをそのままプロダクトに組み込む。

アプリケーションがすでにメモリ上に持つデータを渡し、Excel テンプレートを適用して完成した .xlsx を受け取ります。convertJson() は JavaScript オブジェクトを直接受け取るため、元データファイルや中間ワークブックは不要です。

terminal
$npm install @xl3-lang/xl3
example.ts
import { convertJson } from '@xl3-lang/xl3';

const outputs = await convertJson(templateBuffer, {
  version: 'xl3-source-json/0.1',
  sources: { default: {
    headers: ['Customer', 'Amount'],
    rows: orders.map(o => [o.customer, o.amount]),
  } },
});
// OutputFile[].data → .xlsx Uint8Array

クックブック 01 — 5分で始める · 仕様を読む · 移植ガイド