NATURAL LANGUAGE, TURNED INTO VERIFIED DOCUMENT EDITS

「金額で並べ替えて」と言うだけで、Excel がその通りに動く。 「金額で並べ替えて」と言うだけで、Excel がその通りに動く。

自然言語の指示を、ローカルの AI が LibreOffice のコードに翻訳し、実際の .xlsx に適用します。Microsoft Office は要りません。そして 出来上がりを読み戻し、本当に変わったかを確かめてから完了とします。

道具もこのページも AI が書き、AI が描画して確かめましたailine は basrun の上に立っています。

Before: 書式のない受注台帳。自然言語の指示 12 個の後の After: 金額の降順・合計行・見出しの太字と水色・桁区切り・罫線・列幅の自動調整・取引先ごとの集計シート

上の Before が入力(書式のない受注台帳・データは架空のサンプルです)。自然言語の指示 12 個で下の After になりました ― 金額の降順・合計行(どの行を検証したかまで機械が言います)・見出しの太字と水色・桁区切り・罫線・列幅の自動調整・表全体の中央揃え・そして取引先ごとの集計シート。各指示とも適用後に読み戻して機械検証済み。Excel は使っていません

走った ≠ できたRAN IS NOT DONE

AI にコードを書かせて実行させる ―― それだけでは足りません。 「成功しました」と表示するコードは、何もしていなくてもそう表示します。 実際、エラーひとつ出さずに「読み込んだ / 実行した / 保存した」と表示され、 セルは 1 つも変わっていない、ということが起きます。

そこで ailine は、適用の前後で文書を読み戻して差分を取ります。 値・書式・色・罫線・結合・列幅・シート・グラフ ―― 変化がゼロなら 「何もしていない」とみなして書き直させます。動いた、ではなく、 本当に変わったことを機械で確かめてから、人に差分を見せます。

01

自然言語で頼む

「金額で降順に並べ替えて」。ローカルの AI が LibreOffice のコードに翻訳します。

02

守りながら適用

自動バックアップと undo つきで原本に反映(--copy でコピーにも)。 既存データを上書きする操作は、反映の前に確認を挟みます。形式は .xlsx のままです。

03

効果を検証

読み戻して差分を確認。変化ゼロなら書き直し。★ 走った ≠ できた を機械で防ぎます。

難しい操作(並べ替え・グラフ・ピボット・VLOOKUP)は、 AI に一から書かせず、人が検証した部品を呼ばせます。当たり率が上がり、 「使う側は内部の名前を知らなくていい」まま、確実に動きます。

作って、見せるSHOW, DON'T TELL

下の 2 枚は、すべて自然言語の一言から生まれ、 AI が描画して確かめたものです。値が正しいことと、見た目が正しいことは別なので、 その見た目も AI が描画して確かめています

ailine が自然言語から生成した、金額の棒グラフ。タイトルと軸を見出しから自動導出している

「金額の棒グラフを作って」― タイトル・軸は見出しから自動。LibreOffice の本物のグラフ

ailine が自然言語から作った、部門ごとに金額を集計した表(格子罫線・カンマ・合計行つき)

「部門ごとの金額を集計表に」― 罫線・カンマ・合計まで整えた表。本物のピボット(DataPilot)も生成できます

ローカルの小さな AI(qwen2.5-coder:7b)でも、値・論理・書式は ほぼ一発で書けます。難所は検証済みの部品で補い、外部にデータは一切送りません

フォルダごと、まとめて疑うA WHOLE FOLDER, VERIFIED

請求書が 40 冊。条件に合う行だけを 1 冊に集めたい ― 一言で頼めます。 原本は読むだけ(1 バイトも変えません)。読めなかった冊・怪しい値は、 黙らず名指しで返します。下はすべて実際の実行そのまま(データは架空のサンプルです)。

エクスプローラーで開いた請求書フォルダ。請求書_001.xlsx から連番の Excel ファイルが並ぶ

よくある現場 ― 請求書のフォルダ。これを 1 冊ずつ開く代わりに、フォルダごと頼みます

> python ailine.py run 請求書2026-07 "金額が40000以上の行を抜き出して"

■ ailine run(フォルダ抽出)  folder=C:\Demo\請求書2026-07
出力先: C:\Demo\請求書2026-07_金額40000以上.xlsx
条件: 金額 40000 以上
40 ファイル中 38 照合 → 38 中 32 ファイルで計 60 行一致
  ⚠ 請求書_007.xlsx: 取れなかった(欠け: 金額)── 中身の検査は未実施
  ⚠ 請求書_031.xls: 取れなかった(旧形式(.xls))── 中身の検査は未実施
  並べ替えて照合: 4 冊(内訳は --json)
  合計行 76 行を 38 冊で除外(内訳は --json)
  ⚠ 請求書_023.xlsx: 合計行(8行目) の値 140100 ≠ 明細の和 138600
  行の完全会計: 38 冊すべてで成立(データ行 = 一致 + 不一致 + 合計行の除外・内訳は --json)
出力データ行数: 60
Σ金額: 元 4701000 / 出力 4701000

40 冊のうち、読めない 2 冊は名指しと理由。23 冊目は合計行の値が明細の和と合わないことを、両側の数字つきで指摘 ― 人が見落としていた帳簿のミスを、道具が拾った瞬間です。

LibreOffice Calc で開いた出力ブック。怪しいファイル由来の行だけが薄赤でハイライトされ、下のタブに検分シートが見える

出力ブックを開いたところ(LibreOffice)。怪しい冊由来の行だけが薄赤、右端の出所列(元ファイル・元行)でどの行も出どころを辿れます ― 下のタブに検分シートが同梱されているのが見えます

出力ブックに同梱される検分シートの所見。どのファイルのどのシートのどのセルかと両側の数字、元セルへ飛ぶリンクが並ぶ

出力の 2 枚目に検分シートを同梱 ― 所見は「どのファイルの・どのシートの・どのセルか」まで書き、クリックで元のセルに直接飛べます。このブックを渡せば、検算の記録ごと相手に渡ります

納品した後、誰かがファイルを手で直したら? ― 検算だけを単独で再実行できます。

> python ailine.py verify 請求書2026-07_金額40000以上.xlsx 請求書2026-07

■ ailine verify  out=C:\Demo\請求書2026-07_金額40000以上.xlsx  folder=C:\Demo\請求書2026-07
行数: 元 60 / 出力 60
Σ金額: 元 4701000 / 出力 4624000
⚠ 金額 の合計が一致しません: 元 4701000 / 出力 4624000
⚠ 帰属が一致しません: 請求書_002.xlsx の 4行目 列『金額』 元 120000 / 出力 43000

あとから編集された 1 セルを、どの冊の何行目の列がいくつ→いくつまで名指しで特定(終了コードでも機械に伝わります)。信じる対象が、道具から検算に移ります

使い方GETTING STARTED

必要なのは ローカルの LLM(ollama)と LibreOffice だけです。 Microsoft Office も、クラウド API も要りません。モデルは差し替えられます。

# 自然言語 → 生成 → 適用(バックアップ+undo つき) → 効果を検証 → 差分を表示
python ailine.py run 見積.xlsx "各行の金額に 単価 × 数量 を入れて"

# 適用せず、生成した内容を見るだけ(レビュー用)
python ailine.py run 見積.xlsx "..." --dry

# 別のモデルに載せ替える(天井を上げたいとき)
python ailine.py run 見積.xlsx "..." --model qwen2.5-coder:32b

検証済みのヘルパが、難しい UNO 操作を引き受けます ― 並べ替え・グラフ・ピボット・VLOOKUP・見出しの太字。モデルは「列と向き」だけ選べばよく、 ContainsHeader のような arcane な落とし穴には触れません。

確認していないことWHAT IS NOT VERIFIED

確かめた範囲と、確かめていない範囲を分けて書きます。 聞かれてから答えるのと、先に書いておくのとでは意味が違うためです。

正直な限界

  • ローカルの LLM と LibreOffice が要ります。外部にデータは送りませんが、そのぶん手元の環境に依存します。
  • 珍しい操作は、小さいモデルほど外します。検証済みのヘルパで補いますが、載っていない操作は当たり率が落ちます。
  • 検証が保証するのは「宣言どおりに変わったこと」までです。業務として正しいかは保証しません ― 出力の差分を人が見て判断します。道具も、必ずそう促します。
  • 頼める操作の一覧に無い依頼は、AI の直接生成に落ちます。その場合は「機械保証なし」と明示し、✓ は出しません。
  • フォルダ操作は今は「条件抽出・縦積み・棚卸し・検算」だけです。対象はフォルダ直下の .xlsx(.xls は名指しで断ります・サブフォルダは見ません)。列名は基準の冊と一致するものだけを積み、ゆるい寄せはしません。

確認した

  • 並べ替え・グラフ・集計表・ピボット・VLOOKUP・条件付き色・罫線・結合・中央揃え・太字が、自然言語から動くこと ― 値だけでなく描画して見た目も確認しました。
  • 太字は native で書き出せます(日本語は CharWeightAsian が要る点を実測で押さえました)。数値も壊れません。
  • 実務的な通し試験(1 つの表に 8 操作を連続適用)が、値の検算と描画の両方で破綻しないこと。
  • フォルダ 40 冊の通し実弾 ― 読めない冊の名指し・合計行の自動除外と両側の数字・行の完全会計(データ行 = 一致 + 不一致 + 除外)・出所列・検分シート・あとから編集された 1 セルの行水準の特定。ここに載せた出力はその実行そのままです。
  • 書いた結果を機械で疑うこと ― 操作ごとの事後条件(どの行を検証したかまで言う)、 既にある合計への二重計上に ✓ を出さない算術の検算、同じ依頼を 2 回実行しても 同一の列を黙って重複させないこと。すべて自動テストで凍結しています。
  • 危ない瞬間に止まること ― 既存データへの上書き・意図しないシートの置き換えは 確認を挟み、保存で図形などが失われる場合は申告して止まり、原本は無傷のままであること。
  • 表題行が上にある表でも見出し行を推定して動くこと(自信が無いときは推定せず聞き返します)。
  • 適用後も、通常の .xlsx であること。undo で 1 段階ずつ戻せること。
  • テストは 1,406 本が緑(GitHub Actions の CI が毎 push 検査)。このページも幅を変えて描画し、崩れと折り返しを確認しています。
Microsoft 365 Copilot との違いA DIFFERENT FIELD

2026 年の Excel には Copilot の Agent Mode があります。Microsoft 365 と Copilot ライセンスがあり、データをクラウドに出せる環境なら、あれは強力な選択肢です。ailine は同じ「自然言語で文書を動かす」という問いを、逆側の制約で解いています ── データを機械の外に出せない現場のために。

01

推論の場所

Copilot はクラウドのモデルで推論します。ailine はローカルの LLM だけで動き、 文書も指示も外部に送信しません。一度セットアップすればネットワークの無い環境でも動くので、データを外に出せない規程の現場や閉域網でも使えます。

02

前提コスト

Copilot は Microsoft 365 と Copilot ライセンスが前提です。ailine が使う LibreOffice と ollama はどちらも無償 ── Office もサブスクリプションもライセンス料も一切要りません。導入の稟議が「ゼロ円」から始められます。

03

確かめる向き

Copilot は実行に計画を示し、編集箇所を強調表示します。ailine は実行に出来上がりを読み戻し、本当に変わったかを機械で検証します。事前の計画と事後の検証は、別のものです。

どちらが優れているか、ではありません。守備範囲が違います。 ailine の持ち場は、クラウドに出せない机の上です。

基盤にしているものBUILT ON
basrun 実行系を委ねています ― 平文の Basic を文書に適用する土台。ailine はその上に AI と検証を載せました

重い所(headless の LibreOffice を安全に駆動する部分)は basrun が持っています。 ailine が足したのは、自然言語からの生成と、効果を読み戻して検証する層です。 ―― 組んで初めて出来ることの方に、時間を使っています。