借入金の返済予定と契約の条件を毎月点検して、期限と財務制限条項の抵触を洗い出す
借入契約書と月次の試算表を入力に、返済期限・報告義務の期日・財務制限条項の余裕度を一覧にします。担当者の作業は、契約書を開いて条件を思い出すことから、出てきた一覧で余裕の小さいものを確かめることに変わります。
- 利用ツール
- ChatGPT/Claude/Gemini/Google Apps Script/Power Automate/Python
- 対象業界
- 不動産/商社/小売/建設/製造
- 対象部門
- 法務/財務
- 対象業務
- 内容確認・チェック/集計・分析
- 主な課題
- 判断に時間がかかる/属人化している/期限・対応漏れが起きる
- AIで行う処理
- 判定
- 主な効果
- 判断支援/品質標準化/属人化解消
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 月次決算が確定し、試算表が出る
- 担当者がExcelの借入金管理表を開き、今月返済のあるものを確認する
- 財務制限条項が付いている借入について、契約書のPDFを開いて条項を読み直す
- 試算表から、純資産、有利子負債、経常利益などの該当する数値を拾う
- 条項の式に当てはめて、抵触していないかを計算する
- 報告義務の期日を確認し、提出すべき書類があるかを見る
- 結果を財務部長に報告する
- 四半期ごとに、金融機関へコベナンツの遵守状況を報告する
- 自動借入契約書のPDFを読み、条件を抽出する
- 自動返済条件、財務制限条項の式、数値の定義、報告義務、期限を項目ごとに分ける
- 人担当者と法務が、抽出結果を契約書と照合して確定する
- 自動確定した内容を借入台帳に保存する
- 自動月次の試算表が確定したら処理が始まる
- 自動台帳から、今月点検すべき条項と期限を取り出す
- 自動試算表から、各条項が必要とする数値を集める(連結・単体の別を台帳の定義に従って選ぶ)
- 自動条項ごとに計算し、基準値に対する余裕度を出す
- 自動余裕度が小さいもの、期限が近いものを上に並べた一覧を作る
- 人担当者が一覧を確認し、余裕の小さい条項について財務部長へ報告する
- 自動結果を履歴として保存し、余裕度の推移を記録する
各工程の詳しい説明を読む
- 月次決算が確定し、試算表が出る
- 担当者がExcelの借入金管理表を開き、今月返済のあるものを確認する
- 財務制限条項が付いている借入について、契約書のPDFを開いて条項を読み直す
- 試算表から、純資産、有利子負債、経常利益などの該当する数値を拾う
- 条項の式に当てはめて、抵触していないかを計算する
- 報告義務の期日を確認し、提出すべき書類があるかを見る
- 結果を財務部長に報告する
- 四半期ごとに、金融機関へコベナンツの遵守状況を報告する
問題は4つあります。
(a)条項の式が契約ごとに違う。 「純資産の額を前期末の75%以上に維持する」「経常損益を2期連続で損失としない」「有利子負債をEBITDAの10倍以内に維持する」。同じ会社の借入でも、締結した年と金融機関によって書き方が違います。式を毎回契約書から読み直しています。
(b)数値の定義が契約ごとに違う。 「純資産」が連結か単体か、「経常利益」に特別損益を含むか。契約書の定義条項を読まないと分かりません。同じ「純資産」でも、契約Aと契約Bで見るべき数字が違うことがあります。
(c)報告義務が忘れられやすい。 財務制限条項は目立ちますが、「決算確定後3か月以内に計算書類を提出する」といった報告義務は目立ちません。遅れても催促が来ないことがあり、気づかないまま期日を過ぎます。
(d)余裕度が記録に残らない。 「抵触していない」という結論だけが残り、どれくらい余裕があったかが残りません。1年前と比べて余裕が減っているのかどうかが分かりません。
この構成は、最初に一度だけ行う「台帳化」と、毎月繰り返す「点検」に分かれます。
最初に一度だけ(台帳化)
- 【自動】 借入契約書のPDFを読み、条件を抽出する
- 【自動】 返済条件、財務制限条項の式、数値の定義、報告義務、期限を項目ごとに分ける
- 【人】 担当者と法務が、抽出結果を契約書と照合して確定する
- 【自動】 確定した内容を借入台帳に保存する
毎月(点検)
- 【自動】 月次の試算表が確定したら処理が始まる
- 【自動】 台帳から、今月点検すべき条項と期限を取り出す
- 【自動】 試算表から、各条項が必要とする数値を集める(連結・単体の別を台帳の定義に従って選ぶ)
- 【自動】 条項ごとに計算し、基準値に対する余裕度を出す
- 【自動】 余裕度が小さいもの、期限が近いものを上に並べた一覧を作る
- 【人】 担当者が一覧を確認し、余裕の小さい条項について財務部長へ報告する
- 【自動】 結果を履歴として保存し、余裕度の推移を記録する
自動化されるのは「読む」「拾う」「計算する」「並べる」です。残るのは「どう対処するか」の判断です。
台帳化を一度きりの作業として分ける点が重要です。 契約書からの抽出は月次で繰り返す必要がありません。一度正しく台帳にしてしまえば、毎月の処理は計算だけになります。
02今回想定するシステム構成
【初回】借入契約書のPDF │ ▼ Gemini API ── 条件の抽出(返済/条項の式/定義/報告義務) │ ▼ 借入台帳(スプレッドシート)──【人が契約書と照合して確定】 │ ▼ ───────────────────────────── 【毎月】月次試算表の確定 │ ▼【トリガー】Apps Script の時間主導型トリガー(毎月・平日朝) Google Apps Script │ ├──▶ 台帳から今月点検する条項を取り出す │ ├──▶ 試算表から必要な数値を集める │ ├──▶ 条項ごとに計算 ── 基準値・実績値・余裕度 │ └──▶ Gemini API ── 抵触の判断が微妙な条項の説明文を作る │ ▼ 月次点検表(余裕度順)──【人が確認】 │ ▼ 履歴に保存 + 期限の近い報告義務を通知
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Gemini API | Claude API、OpenAI API |
| 連携 | Google Apps Script | Power Automate、Python |
| 台帳 | Google スプレッドシート | Excel、Airtable |
| 保管 | Google ドライブ | SharePoint、Box |
Geminiを主に使う理由は、借入契約書が長いためです。 シンジケートローンの契約書は100ページを超えることがあります。定義条項が前半に、財務制限条項が後半にあり、両方を同時に読まないと式の意味が決まりません。 章ごとに切って渡すと、定義が失われます。
計算そのものはApps Scriptで行います。条項の式をAIに計算させません。 「純資産 ≧ 前期末純資産 × 0.75」という式は、台帳に数値として持てば四則演算です。AIに計算させると、数字が合わなかったときに原因が追えません。
03どうやって実装するのか
処理の起点を決める
毎月の起点は、月次試算表の確定です。 Apps Script のインストール型トリガーのうち、時間主導型トリガーを使います。時間主導型トリガーは1分ごとから月1回までの頻度で設定できます。
ここで注意が要るのは、開始時刻が正確ではないことです。9時のトリガーを作ると、Apps Script は9時から10時の間の時刻を選びます。「試算表が確定した直後に必ず動く」という組み方はできません。
対策は単純です。毎営業日の朝に動かし、試算表の確定フラグを見て、確定していなければ何もせずに終える形にします。これなら時刻のずれは問題になりません。
初回の台帳化は、担当者が手で実行します。契約書が新しく増えたときも同じです。月45本の点検に対し、新規の契約は年に数本しかありません。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 借入契約書 | 金銭消費貸借契約書、シンジケートローン契約書、社債の要項 | 共有フォルダのPDF |
| 借入台帳 | 借入先、金額、利率、返済スケジュール、条項、報告義務 | スプレッドシート(この構成で作る) |
| 月次試算表 | 連結と単体の貸借対照表・損益計算書 | 会計システム |
| 前期末の確定値 | 条項の基準になる期末の数値 | 決算書 |
| 提出済みの報告 | いつ何を金融機関へ出したか | 台帳に記録 |
前期末の確定値を台帳に持つことを忘れないでください。 「前期末比75%」という条項は、前期末の数字が固定されていないと計算できません。決算が確定した時点で台帳に書き込む運用を入れます。
データの取得方法を決める
契約書のPDF: 金融機関から受け取る契約書は、テキスト情報を持つPDFであることが多いものの、製本して押印したものをスキャンしている場合もあります。スキャンPDFはAIの画像入力で読めますが、100ページを超えると枚数の上限に当たります。 その場合は財務制限条項と定義条項の章だけを抜き出して渡します。
試算表: 会計システムから月次でエクスポートします。CSVで足ります。連結と単体の両方を取り出してください。 条項がどちらを見るかは契約ごとに違います。
期限の管理: 返済日、利払日、報告義務の期日を台帳に日付として持ちます。契約書の「決算確定後3か月以内」のような相対的な表現は、台帳に入れる時点で具体的な日付に直します。
AIへ渡す前に整形する
- 契約書の章の切り分け … 「定義」「財務制限条項」「報告義務」「期限の利益喪失」の章を特定します。見出しの表現は契約ごとに違うので、AIに探させます
- 数値の定義の紐づけ … 条項に出てくる「純資産」が、定義条項でどう定義されているかを対応づけます。定義がなければ「定義なし」として記録し、人が判断します
- 試算表の科目の対応づけ … 契約書の用語(「有利子負債」)と、試算表の科目(短期借入金+長期借入金+社債+リース債務)を対応づける表を作ります。この表は人が作ります
- 相対期日の絶対化 … 「決算確定後3か月以内」を、今期の決算確定日から計算した日付に直します
- 点検対象の絞り込み … 月次で見る条項と、四半期・年次で見る条項を分けます
3番目が最も重要で、最も手間がかかります。ここを自動化しようとしないでください。 「有利子負債」にリース債務を含むかどうかは、契約書の定義と自社の会計処理を照らして人が決めることです。一度決めれば変わりません。
AIに処理させる
AIと計算処理で役割を分けます。
計算処理にさせること: 条項の式の計算、余裕度の算出、期限までの日数。すべて四則演算と引き算です。
AIにさせること:
| 処理 | 内容 |
|---|---|
| 契約書からの条件抽出 | 財務制限条項の式、基準値、判定のタイミング(初回のみ) |
| 定義条項との紐づけ | 条項に出てくる語が、定義条項でどう定義されているか(初回のみ) |
| 報告義務の洗い出し | 何を、誰に、いつまでに提出する義務があるか(初回のみ) |
| 条項の平易な言い換え | 「前期末純資産の75%を下回らないこと」を、財務以外の人にも分かる文に |
| 判断が微妙な条項の説明 | 定義が曖昧、複数の解釈がありうる条項について、論点を並べる |
AIの出番は、ほぼ初回の台帳化に集中します。 毎月の点検でAIが使われるのは、余裕度が小さい条項について「何が起きているか」の説明文を作るところだけです。この構成は、AIを常時動かす構成ではありません。
指示内容を固定する
あなたは企業財務の担当者を支援する立場です。
以下の借入契約書から、財務制限条項・報告義務・期限の利益喪失事由を
抽出してください。
【厳守事項】
- 契約書に書かれていない条件を補わないでください。
一般的な契約に「よくある」条項を推測で足さないでください。
- 各条項について、原文をそのまま original_text に入れてください。
要約した文を original_text に入れないでください。
- 条項に出てくる財務指標(純資産、有利子負債など)について、
定義条項での定義を definition に入れてください。
定義条項に記載がない場合は null にし、needs_review に理由を書いてください。
- 連結・単体の別が契約書から読み取れない場合は、
scope を "unclear" にしてください。推測で "consolidated" としないでください。
- 判定のタイミング(各決算期末/各四半期末/各月末)を明記してください。
記載がなければ null にしてください。
- 抵触しているかどうかの判断はしないでください。
条件を構造化して返すことだけが役割です。
【契約書の本文】
{contract_text}
最後の指示が重要です。 抵触の判断をAIにさせません。判断は、台帳に入った式と試算表の数値を使って計算処理が行います。AIに判断させると、なぜその結論になったかを後から説明できません。
「一般的な契約によくある条項を推測で足さない」も必須です。 財務制限条項の抽出でこれが起きると、実際には付いていない条項を毎月点検することになります。逆に危険な方向の誤りではありませんが、無駄な作業と誤った安心を生みます。
出力形式を固定する
Gemini API の構造化出力を使います。スキーマは properties でプロパティを定義し、required で必須項目を列挙します。契約書1本あたりの条項は多くても10個程度なので、深くネストしない浅い構造で返させます。
{
"contract_id": "",
"covenants": [
{
"covenant_type": "net_assets | profit | debt_ratio | other",
"original_text": "",
"formula": {
"metric": "",
"operator": ">= | <= | > | <",
"base": "",
"ratio": 0
},
"scope": "consolidated | standalone | unclear",
"definition": null,
"timing": null,
"needs_review": ""
}
],
"reporting_obligations": [
{
"document": "",
"recipient": "",
"due_expression": "",
"original_text": ""
}
],
"acceleration_events": [],
"extraction_confidence": "high | medium | low"
}
毎月の点検結果は、計算処理が作ります。
{
"as_of": "",
"results": [
{
"contract_id": "",
"covenant_type": "",
"threshold": 0,
"actual": 0,
"headroom": 0,
"headroom_ratio": 0,
"status": "ok | watch | breach | not_calculable",
"reason": ""
}
]
}
headroom_ratio(余裕の割合)を必ず持たせます。「抵触していない」だけでは、余裕が10%なのか100%なのかが分かりません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 会計システム | 月次CSVエクスポート | 試算表の取得 |
| Google ドライブ | Apps Script | 契約書PDFの読み取り |
| Google スプレッドシート | Apps Script | 台帳と点検結果 |
| メール/チャット | Apps Script | 期限の近い報告義務の通知 |
会計システムへの書き込みはありません。 この構成は読み取り専用です。金融機関への報告書の送信も自動化しません。
台帳をスプレッドシートにする理由は、人が直せるためです。 契約書からの抽出には必ず誤りが混ざります。パッケージのデータベースに入れてしまうと、担当者が直せなくなります。年に数本しか増えない台帳を、専用システムで管理する必要はありません。
人が確認する
確認は2段階あります。
1段階目は、台帳化のときです。 AIが抽出した条項を、担当者と法務が契約書と1条ずつ照合します。ここは省略できません。 45本で2〜3日かかりますが、一度だけの作業です。この確認を飛ばすと、以後の点検がすべて誤った前提の上に乗ります。
2段階目は、毎月の点検結果です。 余裕度が小さいもの、status が watch breach not_calculable のものを担当者が確認します。ok のものは一覧で確認するだけです。
確認を速くするための設計が重要です。
- 余裕度の小さい順に並べる
not_calculable(計算できなかった)を必ず上に出す。okと混ぜない- 前月・前々月の余裕度を横に並べ、推移が見えるようにする
- 条項の原文を一覧の中に展開しておく
not_calculable を ok と区別することが最も重要です。 数値が取れなかったために計算できなかったものを「問題なし」と表示すると、抵触に気づけません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 契約書がスキャンPDFで、100ページを超える | 定義条項と財務制限条項の章だけを抜き出して渡す。全文を無理に渡さない |
| 定義条項に該当の定義がない | definition を null にし、人が判断する。推測で定義を当てはめない |
| 連結・単体の別が読み取れない | scope を unclear にして人へ回す。片方で計算して安心しない |
| 試算表の科目が変わった | 科目の対応表を見直す。対応づかない科目が出たら not_calculable にして止める |
| 月次では計算できない指標(EBITDAの年換算など) | 判定のタイミングを台帳に持ち、四半期・年次でのみ計算する。月次では「対象外」と表示する |
| 契約が変更された(条件変更契約) | 変更契約書を読み、台帳に新しい版として追加する。古い版を上書きしない |
| 借入が完済された | 台帳の状態を完済にし、点検対象から外す。履歴は残す |
| 決算が確定せず、前期末の基準値が入っていない | not_calculable にして人へ回す。前々期の値を使わない |
| 余裕度がマイナス(抵触の可能性) | breach として最上位に出し、担当者と財務部長の両方へ即時通知する |
| Apps Script の実行時刻がずれる | 毎営業日の朝に動かし、試算表の確定フラグで判断する。時刻に依存しない設計にする |
記録を残す
- 契約書PDFの版(変更契約を含む)
- AIが抽出した条項と
original_text、extraction_confidence - 人が確定した台帳の内容と、AIの抽出からどこを直したか
- 毎月の点検結果(基準値・実績値・余裕度・使った試算表の日付)
- 金融機関へ提出した報告書と、提出日
breachまたはwatchが出たときの通知先と対応
4つ目で「使った試算表の日付」を残すのが要です。後から「この月はなぜ余裕があると判断したのか」を問われたときに、当時の数値を再現できる必要があります。
余裕度の推移を残すことに、この構成のもうひとつの価値があります。 12か月分並べれば、余裕が減り続けているかどうかが一目で分かります。抵触してから対処するのでは遅く、半年前に傾向が見えていれば、金融機関との事前相談ができます。
04実装レベルの3段階
半自動化の時点で、22分が11分程度になります。 契約書を開いて条項を読み直す作業が消えるためです。本格構成にすると8分程度になりますが、報告義務の管理と推移の記録を作り込む必要があります。 借入が20本以下なら、半自動化で止めても十分です。 本格構成の価値が出るのは、報告義務が多いシンジケートローンを複数抱えている場合です。
05工数削減シミュレーション
導入後 45件 × 8分 ÷ 60 = 6 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 金融機関からの借入が20本以上あり、シンジケートローンや長期借入に財務制限条項が付いている企業。借入の管理が担当者1名のExcelに集約されており、その人以外が条件を把握していない場合。決算発表のたびに、コベナンツに抵触しないかを手で確かめている場合。
- 借入が数本で、条件がすべて同じ金融機関の定型契約である場合。財務制限条項が一切付いていない場合。財務管理のパッケージシステムを導入済みで、条件の管理機能が使えている場合。
07最小構成で試す方法
- 財務制限条項が付いている借入を3本選ぶ(できればシンジケートローンを含める)
- 契約書の該当する章をテキストでコピーする
- AIの画面に貼り付け、「財務制限条項の式、基準値、対象となる財務指標の定義、判定のタイミングを表にしてください。契約書に書かれていないことは補わないでください」と指示する
- 出てきた表を、自分が把握している条件と突き合わせる
この3本だけは必ずやってください。 契約書の書き方は金融機関ごとに違います。自社の契約で抽出できるかどうかが分からないと、台帳化の工数が読めません。
判断の目安は次のとおりです。
| 抽出の正しさ | 判断 |
|---|---|
| 式と定義が正しく取れる | 全契約の台帳化に進む |
| 式は取れるが定義が取れない | 定義は人が入れる前提で進める。それでも工数は大きく減る |
| 式も取れない | 契約書のPDFの品質を疑う。テキストが取れているかを確認する |
あわせて、科目の対応表を作ってみてください。 「有利子負債」が試算表のどの科目の合計かを決める作業です。これが決まらないと、自動化しても計算できません。この作業が、この構成でいちばん時間がかかります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 契約書の「純資産」が連結か単体か分からない | scope を unclear にして人へ回す。推測で片方を選ばない |
| 定義条項が契約書の前半、条項が後半にあり、切って渡すと対応がつかない | 長文をそのまま渡せるモデルを使う。切る場合は定義条項を毎回添える |
| 「有利子負債」に何を含めるかが決まらない | 科目の対応表を人が作る。ここを自動化しない |
| Apps Script のトリガーが指定時刻に動かない | 開始時刻はランダムに調整される(9時なら9時〜10時の間)。毎営業日に動かし、確定フラグで判断する |
| 月次では計算できない指標を毎月計算してエラーになる | 判定のタイミングを台帳に持ち、対象外の月は「対象外」と表示する |
| 計算できなかったものが「問題なし」に見える | not_calculable を ok と分け、一覧の最上位に出す |
| 変更契約を台帳に上書きしてしまう | 版を分けて保存する。過去の点検結果がどの版に基づくかを記録する |
| 前期末の基準値が入っておらず、毎月ゼロ割りになる | 決算確定時に基準値を台帳へ書き込む運用を入れる。入っていなければ not_calculable で止める |
| 抽出で実在しない条項が足される | 「推測で足さない」指示を入れる。台帳化の照合で必ず人が確認する |
| 余裕度の推移が残らない | 毎月の結果を履歴シートに追記する。上書きしない |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 借入契約の条件、金融機関名、借入金額、月次の財務数値。未公表の財務情報と、金融機関との取引条件が含まれます。
- 未公表の財務情報 … 月次試算表は未公表の財務情報です。上場企業では、これが外部に漏れることがインサイダー取引規制上の問題になりえます。外部AIに試算表そのものを渡さない設計にしてください。 AIに渡すのは契約書までとし、数値の計算は自社の環境内で行います
- 金融機関との秘密保持 … 借入契約書には秘密保持条項が含まれることが一般的です。契約書を第三者のサービスに入力することが、その条項に抵触しないかを法務部門として確認してください。 ここは必ず契約書の原文で確認が必要です
- 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
- アクセス権限 … 台帳と点検結果を閲覧できる範囲を、財務部門・法務部門・経営層に限定します
- 自動実行してよい範囲 … 金融機関への報告書の提出は人が行います。抵触の可能性が出たときの連絡も人が行います。 自動通知は社内向けに限定します
誤りが起きた場合のリスクは、財務制限条項への抵触の見逃しです。抵触すると期限の利益を喪失し、借入金の一括返済を求められる可能性があります。「計算できなかった」を「問題なし」と扱わない設計が、この構成でもっとも重要な安全装置です。
10まず何から始めるか
1週目:3本で抽出を試し、科目の対応表を作る
財務制限条項が付いている借入を3本選び、契約書の該当章をAIに読ませます。同時に、条項に出てくる財務指標が試算表のどの科目に当たるかの対応表を作り始めてください。 この2つの作業を並行させると、抽出結果の良し悪しが判断できます。
2〜3週目:全契約の台帳化
45本の契約書から条件を抽出し、担当者と法務が1条ずつ照合して台帳を確定します。ここに2〜3日かかります。 この構成でもっとも重い作業ですが、一度きりです。
4週目:月次の計算を作る
台帳と試算表から余裕度を計算し、一覧を出すところまで作ります。過去12か月分の試算表で遡って計算し、推移が正しく出るかを確かめてください。 過去の実際の判断と一致すれば、計算が正しいことが確認できます。
2か月目以降: 報告義務の期限通知と、変更契約への追随を足します。並行して、契約書を外部サービスに入力することの可否を法務部門として整理しておきます。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Gemini API の構造化出力で、properties と required を持つスキーマを指定できること。非常に大きい、あるいは深くネストしたスキーマは拒否される場合があること | Google: Structured output | 2026-09-22 |
| Apps Script の時間主導型トリガーが1分ごとから月1回までの頻度で設定できること。開始時刻はランダムに調整され、9時のトリガーを作ると9時から10時の間の時刻が選ばれること | Google: Installable triggers | 2026-09-22 |
財務制限条項の解釈、期限の利益喪失事由の判断は、個々の契約書の文言と準拠法に依存します。この部分は自社の法務部門と顧問弁護士への確認が必要です。 また、未公表の財務情報の取扱いについては、自社のインサイダー取引防止規程に従ってください。本記事は点検の作業を機械化する構成を示したものであり、抵触の有無の法的判断を代替するものではありません。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0149)についてのご相談はこちらから。
