LWP | なぜAIでVBAを書くならTakiLibを使うのか
図解1|商品名ひとつにこんなにセル操作

図1|業務として欲しい結果と、それを実現する操作を分けて考えます。
解説1|コードに業務の意味を残す
ストーリー
シャケモンが、AIに作ってもらった商品名の転記処理を見直しています。商品コードを一つ渡すだけなのに、シートの指定やセルの比較が続きます。横で確認していたフナさんは、「どの商品を、どの条件で探しているのか」に目を向けました。
この記事は、独自ライブラリのTakiLib(滝Lib)を使う考え方を扱います。TakiLibはExcelやVBAの標準機能ではありません。細かな操作を共通の部品へまとめ、業務側のコードを意味の分かる粒度で書くための選択肢です。
図の例では、一行が一つの商品です。商品コードP002を指定すると、同じ行にある商品名「ペン」を取得します。人が確かめたいのは、この対応が正しいことです。どのシートを開き、どのセルを比較したかは、その要求を実現するための実装です。
二つの問いを分ける
観点 |
確認したいこと |
|---|---|
業務の意味 |
何を対象に、どの条件で、何を取得するか |
実装の操作 |
どのデータを読み、どう探して、どこへ出すか |
結果の確認 |
入力のP002と出力のペンが正しく対応するか |
細かな操作は必要です。ただし、それを毎回業務処理の中へ展開すると、業務上の条件が操作の記述に埋もれます。共通操作の実装を別に置けば、読む人は業務の流れと操作の詳細を分けて追えます。
読むポイント
行数の少なさだけを目標にしません。短くても対象や条件が隠れたコードは読みづらくなります。業務の意図、入力と結果の対応、責務の置き場所が追えることを重視します。AIの出力も、この観点から見直します。
図解2|Excelの構造と業務データの意味

図2|Excel上の置き場所と、業務上の一件の意味を重ねて設計します。
解説2|データモデル層という言葉の意味
Excelには、ブック、ワークシート、セル範囲、Excelテーブルなどを扱うオブジェクトモデルがあります。Workbookはブック、Rangeはセルや範囲を表し、ListObjectはワークシート上のテーブルを扱います。データを入れる構造が存在しない、という話ではありません。
一方、業務では「商品一件」のような単位で考えます。商品コードは商品を識別する値で、商品名や単価はその商品の属性です。同じセル範囲でも、一行が商品なのか売上明細なのかで、重複や集計の意味は変わります。
この記事でいう三つの視点
視点 |
商品マスターでの意味 |
|---|---|
構造 |
一行は商品一件、列は商品コード・商品名・単価など |
操作 |
キーで探す、必要な項目を取り出す、値を変換する |
流れ |
入力を受け、必要な処理を行い、結果を渡す |
本稿の「データモデル層」は、業務データの構造と、それに対応する共通操作をまとめた設計上の呼び方です。ExcelのPower Pivotなどで使う「データモデル」という製品機能名を指すものではありません。図中の単価120は、属性の意味を示す架空の例です。
共通操作を補う理由
VBAでも、配列や既存の機能、利用者が作った関数を組み合わせてデータを処理できます。問題は、その共通の扱い方を決めないまま、業務ごとにセル操作から書き始めることです。TakiLibを使う狙いは、取得・検索・変換などの操作を再利用し、扱うデータと処理の意味をそろえることにあります。
読むポイント
Excelは作業・計算・表示の環境として活用します。その上に、業務データをどの単位で渡し、どの操作で扱うかを定めます。Excelを別の環境で置き換えることが、この設計の目的ではありません。
図解3|一件検索の条件を先に決める

図3|一件を取得する共通操作にも、業務上の前提が必要です。
解説3|一件という言葉に含まれる条件
商品マスターから「一件を取る」ときは、検索するキーと戻す項目を決めます。ここでは商品コードで完全に同じ値を探し、その商品の商品名を取得する例とします。備考は商品の区分を示す補助情報で、取得対象にはしません。
入力例
商品コード |
商品名 |
備考 |
|---|---|---|
P001 |
ノート |
文房具 |
P002 |
ペン |
文房具 |
P003 |
ファイル |
事務用品 |
検索キーが文字列P002で、一致する商品が一件なら、期待する結果は「ペン」です。この対応だけでなく、見つからないときと、同じコードが複数あるときも仕様にします。
件数ごとの確認
一致件数 |
この例での業務上の扱い |
|---|---|
0件 |
未登録として区別し、別の商品名を勝手に補わない |
1件 |
対象商品の商品名を取得する |
2件以上 |
重複を確認し、一件の取得として処理を進めてよいか判断する |
これは例の業務ルールです。特定のTakiLib関数が自動的にこの判定や戻り値を提供する、という機能保証ではありません。使うAPIが返す値やエラーの仕様を確認し、必要な業務判断をどこへ置くか決めます。
読むポイント
コードの表記が短くなっても、前提は消えません。商品コードの型、空白の扱い、一意性、戻す列、未登録・重複時の扱いを明確にします。P002、存在しないP999、重複させたP002という小さな確認データを使うと、正常時以外の仕様も点検できます。
共通ライブラリが担う操作と、業務側が担う判断を分けておけば、「動いたから正しい」と判断せず、入力から結果までを確かめやすくなります。
図解4|業務とExcel操作の間にTakiLibを置く

図4|ライブラリで、業務側の記述と再利用する操作の境界を作ります。
解説4|階層はコードの責務を分けるためにある
月次売上を確定する処理を例にすると、売上に何を含めるかという業務判断、そのための取得・照合・変換・出力という処理の流れ、実際にデータを動かす操作があります。同じコードの中へすべてを混ぜるより、それぞれの責務を意識して整理します。
四つの置き場所
責務 |
ここへ置く内容 |
|---|---|
業務の判断 |
対象月、取消や返品の扱い、確定条件 |
処理の流れ |
売上を読み、マスターと照合し、結果を作って出す順序 |
TakiLibの共通操作 |
API仕様に沿って再利用できる取得・検索・変換など |
VBAとExcelの操作 |
ブック・シート・範囲などを扱う具体的な実装 |
元ネタでいうData Schemeは、ここでは業務を実現するデータ処理の組み立てとして整理しています。特定の用語や層数をすべてのマクロへ強制することが目的ではありません。
TakiLib自体もVBAのライブラリです。図は別の言語や外部サービスへ処理を送る構成ではなく、業務側のVBAがライブラリを呼ぶ関係を示しています。下位の実装でも、必要なExcelオブジェクトモデルや配列などを使います。
境界を増やせばよいわけではない
同じ操作が何度も現れ、仕様をそろえる必要があるなら共通化が役立ちます。一度しか使わない短い処理まで薄いラッパーで包むと、かえって呼出先を追う負担が増えます。既存APIを使って読めるなら、余分な共通関数を増やす必要はありません。
読むポイント
画面操作、イベント、帳票の書式など、Excelの直接操作が必要な箇所は残ります。データ処理との境界を決め、ライブラリへ任せる部分と業務側が判断する部分を説明できるようにします。図中の操作名は概念であり、配布版の機能一覧ではありません。
図解5|AIが使える語彙を先に渡す

図5|独自ライブラリを使わせるには、名前に加えて契約と例を渡します。
解説5|ライブラリはAIに渡す設計の材料になる
AIへ「商品を検索して転記して」とだけ依頼しても、利用者の共通ライブラリや業務ルールが伝わっているとは限りません。AIが使える操作と、その操作を使う条件を明示します。ライブラリ名を一言添えるだけで、未提示のAPIを正しく知っていると期待しないことが大切です。
AIへ渡すもの
材料 |
今回なら何を書くか |
|---|---|
業務要求 |
商品コードに対応する商品名を取得する |
入力と出力 |
キーの型、マスターの構造、戻す値の意味 |
版とAPI仕様 |
実際に使う配布版、関数名、引数、戻り値、エラー |
使用例と規約 |
対象APIをどう呼び、どの共通操作を優先するか |
例外と期待結果 |
未登録・重複時の扱い、P002ならペンになること |
AIへの指示例
「商品マスターを商品コードで検索し、商品名を取得してください。利用できる共通操作は、添付した版のTakiLibのAPI仕様に従ってください。入力・戻り値・未登録・重複時の扱いを確認し、不明な点を推測した関数名で埋めないでください。結果は提示した確認データと照合してください。」
これは自然言語の指示例です。実行可能なVBAや、特定のTakiLib関数の呼出例ではありません。対象APIの利用手順を紹介する記事では、その版で実在する関数と、実際の呼出例を別に示す必要があります。
読むポイント
AIが生成した呼出名・引数・戻り値の扱いを、渡したAPI仕様と照らします。既存の共通操作が使えるのに独自の検索ヘルパーを増やしていないか、業務条件をライブラリ任せにしていないかも確認します。資料と規約は、AIにとっても、人が保守するときにも、設計を共有するための材料になります。
図解6|導入の判断と結果の確認を続ける

図6|共通の語彙を用意し、業務条件と結果は人が確認します。
解説6|コードを書く前に操作の語彙を整える
まとめ
私がTakiLibを使う理由は、同じ処理を数行短くすることだけではありません。業務データを扱う共通の操作を用意し、AIにもその語彙を使わせることで、何をしているか追いやすいVBAへ近づけたいからです。Excelの環境とVBAの制御機能を使いながら、業務と細かな操作の間を整理します。
TakiLibは私が開発している独自ライブラリで、一般的なVBAの標準ではありません。MITライセンスで提供しています。利用する配布物に含まれる著作権表示・許諾条件を確認し、使う版とAPI資料をそろえてください。ライブラリを採用するだけで、すべてのコードの品質や結果が保証されるわけではありません。
今回の仕掛け
商品コードから商品名を取得する小さな例で、業務の意味、Excel上の構造、共通操作、AIへ渡す資料を分けました。抽象化は詳細を消すことではなく、必要な場所へまとめることです。業務側には対象・条件・処理の流れを残し、共通操作の詳細は仕様と実装から確認できるようにします。
導入するときは、繰り返される操作が何か、ライブラリが必要な入力と結果に合うか、担当が替わってもAPI資料や確認データを使えるかを見ます。小さな範囲から試し、正常・未登録・重複の各結果を照合してから適用範囲を広げます。
出典メモ
著者提供原稿「なぜAIでVBAを書くならTakiLibを使うのか」を基に、33節の反復を6つの説明単位へ統合しました。会話・商品データは説明用に構成した例です。性能比較や特定APIの実行検証を示す記事ではありません。MIT表示はTakiLib配布版3.5.4のソース内で確認しました。
Excel上の構造はMicrosoft公式資料を参照しています。Workbookオブジェクト、Rangeオブジェクト、ListObjectsオブジェクト。
利用について
Copyright © 2026 LWP 山中 一弘
本資料は、出典を明記いただければ、商用・非商用を問わず、ご自由に複製・改変・再配布していただけます。なお、著作権表示は改変せず、そのまま記載してご利用くださいますようお願いいたします。
