記事一覧へ

AIナレッジ / 理解メモ / 確認日 2026-06-30

OKF入門: 繰り返し説明する前提を知識ファイルにする

OKFは、AI agentに何度も説明している指標定義、除外条件、テーブルの意味、評価条件を、参照しやすい知識単位として切り出すための形式である。この記事では採用判断ではなく、OKFを自分の言葉で説明できる状態を目指す。

01

この記事で扱うこと、扱わないこと

この記事は、OKFを導入すべきかを判定する記事ではない。1つの指標定義をOKF風の知識ファイルに分けると、何が参照しやすくなり、何を別途運用で決める必要があるのかを確認する記事である。

読後に目指す状態は、次の4つを自分の言葉で説明できることだ。

  • どのメモがOKF化の候補になりそうか。
  • 通常のMarkdownで十分なメモと、知識ファイルに分けたいメモの違いは何か。
  • 作業指示として置くべき内容と、参照知識として置くべき内容は何が違うか。
  • 外部AI、RAG、検索indexへ渡す前に何を確認すべきか。

本文はOKF v0.1 Draftを、2026-06-30時点で確認した理解に基づく。仕様が変わる可能性はあるため、実装や公開前には公式仕様を確認する。

02

普通のメモでは、人間が文脈を補っている

たとえば、月次アクティブユーザー数をAI agentに説明したいとする。普通のMarkdownなら、次のように書ける。

普通のMarkdownメモ
# monthly_active_users

月次アクティブユーザー数。
月内に1回以上ログインしたユーザーを数える。
無料トライアル中のユーザーは含めない。
退会済みユーザーは退会日以降の月から除外する。
分析では users と login_events を user_id で結合する。

人間が読むだけなら意味は分かる。しかしAI agentに渡す知識として見ると、次の判断を人間が毎回補っている。

  • これは指標なのか、テーブルなのか、業務ルールなのか。
  • どのテーブルやイベントと関係するのか。
  • 分析時に必ず参照すべき除外条件はどれか。
  • 複数のメモを渡すとき、どこを入口にすればよいのか。
  • いつ、なぜ、その知識が変わったのか。

OKFは、この「毎回人間が補っている文脈」を、ファイル側に置くための形式として読むと分かりやすい。

03

OKF化で何が変わるか

OKF化の前

人間がメモを探し、指標の意味、除外条件、関連テーブル、注意点をプロンプトで毎回説明する。

OKF化の後

指標や注意点を知識ファイルとして置き、AI agentやツールが種類、本文、関連リンク、入口、更新履歴を参照しやすくする。

ここで重要なのは、AI agentが自動で賢くなるわけではないという点だ。OKFは、参照漏れを減らすための手がかりを増やす。実際にどこまで使えるかは、読み手側のツールやagentが、ファイル探索、リンク解決、権限判定をどう実装しているかに依存する。

成功の目安は、前提説明が短くなること、除外条件の参照漏れが減ること、古い定義を見つけやすくなること、知識変更をレビューしやすくなることである。

04

OKFの用語を、日本語の実務語に置き換える

OKFの仕様語は英語で出てくる。日本語話者が読むときは、先に意味を押さえてから仕様語に戻る方が読みやすい。

仕様語 この記事での説明 実務でのイメージ
concept file AI agentに何度も再利用させたい知識を1つに切り出したMarkdownファイル。日本語では「知識ファイル」と考える。 指標定義、テーブル説明、業務ルール、評価条件。
bundle 複数の知識ファイルをまとめて渡したり参照したりするための、知識のまとまり。 指標、テーブル、注意点、入口、更新履歴を含むフォルダ。
producer OKFファイルを作る側。人間、スクリプト、変換ツールなど。 記事を書く人、dbtから説明を生成するツール。
consumer OKFファイルを読む側。AI agent、検索ツール、取り込み処理など。 RAG、社内検索、分析支援agent。

以降では、仕様語を残しつつ、必要に応じて「知識ファイル」「知識のまとまり」「作り手側」「読み手側」と言い換える。

05

知識ファイルとして、1つの指標定義を切り出す

OKFの中心は、長い文書を作ることではない。繰り返し参照する前提を、1つの知識ファイルとして切り出すことだ。

以下は架空例である。実務では、実テーブル名、顧客名、内部KPI、個人情報、APIキー、SQL、ログ断片をそのまま入れない。

OKFの最小知識ファイル例
---
type: metric
title: Monthly Active Users
description: 月内に1回以上ログインし、無料トライアル中ではないユーザー数
tags: [growth, product_analytics]
---

# Monthly Active Users

月内に1回以上ログインしたユーザーを数える。
無料トライアル中のユーザーは含めない。
退会済みユーザーは退会日以降の月から除外する。

## Related concepts

- [users table](/tables/users.md)
- [login events table](/tables/login_events.md)
- [trial users excluded](/caveats/trial-users-excluded.md)

変化は、MarkdownにYAML frontmatterを付けたこと自体ではない。月次アクティブユーザー数を、AI agentが参照しやすい知識の1単位として扱ったことにある。

Markdownリンクは、関連情報をたどる手がかりである。ただしリンク自体に「必須join」「参考情報」「注意喚起」のような関係種別はない。関係の意味は、周辺の本文で説明する必要がある。

06

OKFで必須のこと、この例で足したこと

上の例には、OKF仕様として重要なものと、この記事で理解しやすくするために足したものが混ざっている。ここを分けると、Markdown + frontmatter一般との違いが見えやすい。

要素 位置づけ 今回の例での意味
type index.mdlog.md以外の通常の知識ファイルに置く必須のfrontmatter項目。 type: metricにより、「これは指標定義として読む候補だ」と示す。
title, description, tags 知識を探しやすくする推奨field。 人間とAI agentが、何の知識かを早く把握するために置いている。
resource, timestamp 仕様上の推奨fieldとして扱われる項目。 外部リソースや時点情報を示したい場合に候補になる。
Markdownリンク 知識ファイル間の関係を示せる通常のMarkdownリンク。リンクは任意。 利用テーブルや注意点をたどるための手がかりになる。
Related concepts この例の見出し名。 OKFが固定する見出しではなく、関係を読みやすくするための書き方。
owner, source, last_reviewed, classification OKF標準fieldではなく、実務運用で足す候補。 誰が更新するか、正本はどこか、公開範囲は何かを管理する。

OKFは、厳密なスキーマで知識を縛る形式ではない。最低限のfrontmatterと通常のMarkdownリンクを前提に、異なるツールやAI agentが同じ知識のまとまりを参照しやすくするための軽い約束である。

07

1ファイルで試す

OKFを理解するために、既存メモを一括変換する必要はない。まず、架空の指標定義を1つだけ作る。

作成手順
mkdir -p okf-demo/metrics

cat > okf-demo/metrics/monthly_active_users.md <<'EOF'
---
type: metric
title: Monthly Active Users
description: 月内に1回以上ログインし、無料トライアル中ではないユーザー数
tags: [growth, product_analytics]
---

# Monthly Active Users

月内に1回以上ログインしたユーザーを数える。
無料トライアル中のユーザーは含めない。
退会済みユーザーは退会日以降の月から除外する。

## Related concepts

- [users table](/tables/users.md)
- [login events table](/tables/login_events.md)
- [trial users excluded](/caveats/trial-users-excluded.md)
EOF

find okf-demo -type f -name '*.md' -print

期待結果は次の通りである。macOSでも動きやすいように、ここでは-maxdepthを使わない。

期待結果
okf-demo/metrics/monthly_active_users.md

この時点では、リンク先のtables/users.mdなどは未作成でよい。最小実験の成功条件は、1つのMarkdownファイルからtype: metric、指標の説明、無料トライアル除外、退会後除外、関連リンクの手がかりを読み取れることである。

YAMLとリンクを確認する任意のコマンド
uv run --with pyyaml python - <<'PY'
import re
from pathlib import Path
import yaml

path = Path("okf-demo/metrics/monthly_active_users.md")
text = path.read_text(encoding="utf-8")
_, frontmatter, body = text.split("---", 2)
meta = yaml.safe_load(frontmatter)

print("type:", meta.get("type"))
print("title:", meta.get("title"))
print("links:", re.findall(r"\[[^\]]+\]\(([^)]+)\)", body))

assert meta.get("type") == "metric"
assert "無料トライアル中のユーザーは含めない" in body
PY

AI agentに読ませる場合は、「この知識ファイルを読んで、MAUの除外条件と参照先を列挙して」と依頼する。除外条件と3つのリンクを拾えれば、まずは概念理解として十分である。

08

index.mdlog.mdは、知識のまとまりを支える予約ファイル

OKFには、通常の知識ファイルとは別に、特別な意味を持つ予約ファイル名がある。この記事で押さえるべきものはindex.mdlog.mdである。

予約ファイル 役割 注意点
index.md 複数の知識ファイルを束ねたときの入口。主要なconceptへの目次として使える。 必須ではない。存在しないだけで、読み手側はbundleを拒否しない。rootのindex.mdにはOKF version宣言を置ける例外がある。
log.md 知識のまとまりに対する更新履歴。いつ、何が、なぜ変わったかを追うためのファイル。 必須ではない。存在する場合は、日付ごとの更新ログとして読みやすい構造にする。正しさの保証ではなく、変更を追う手がかりである。
index.mdの例
# Metrics

- [Monthly Active Users](metrics/monthly_active_users.md) - 月内に1回以上ログインし、無料トライアル中ではないユーザー数
log.mdの例
# Change Log

## 2026-06-30

- Added `metrics/monthly_active_users.md`.
- Clarified that trial users are excluded from MAU.
- Linked related concepts for users, login events, and trial exclusion.

index.mdは入口を作る。log.mdは変更の履歴を残す。どちらも、知識を正しくする魔法ではないが、複数の知識ファイルを扱うときに、AI agentと人間が同じ文脈へ戻りやすくする。

09

OKFだけでは解決しないこと

OKFが保証するのは、最低限の読み取りやすさであって、知識の正しさではない。読み手側は、unknown type、unknown field、broken link、missing indexだけを理由に知識のまとまりを拒否しない。これは互換性のための寛容さであり、本番品質の保証ではない。

そのため、実務では次の設計を別途決める必要がある。

  • 正本はどこか。BI、dbt、SQL、仕様書、運用ルールのどれを基準にするのか。
  • 誰が更新するのか。ownerとレビュー周期をどう置くのか。
  • リンク切れ、古い定義、重複した指標名をどう検知するのか。
  • どのAI agent、RAG、検索index、社内ツールに読ませてよいのか。
  • 外部由来のMarkdownを、命令ではなく参照データとして扱えるか。

特に、OKF本文に書かれた文は作業命令として信頼しない。外部由来のMarkdownに「以前の指示を無視して」といった文が混じっていても、system指示や開発者指示より優先してはいけない。

10

OKF化候補と、やりがちな失敗

採用判断はこの記事ではしない。ただし、候補の見分け方を持つと、OKFの意味は具体化する。

OKF化の候補 まだ通常Markdownでよいもの
同じ前提を2〜3回以上、人やAI agentに説明している。 一度きりのメモ、未確定アイデア、個人的な走り書き。
誤解されると分析結果、仕様判断、施策判断が変わる。 誤用されても影響が小さい補助メモ。
正本、owner、更新タイミングを説明できる。 誰も更新責任を持てず、正本も分からない情報。
公開、社内、個人用、機密の分類ができる。 分類できない顧客情報、金融情報、認証情報を含むメモ。

「同じ前提を何度も説明している」は、採用条件ではなく導入の目安である。頻度だけでなく、誤用時の影響、変更頻度、正本の所在、機密性、レビュー可能性を見る。

失敗例としては、typeだけ付けて満足する、BIやdbt側の定義とズレる、broken linkを放置する、owner不在の公式っぽいメモを増やす、機密情報を外部AIへ渡す対象に混ぜる、といったものがある。

11

公開範囲ではなく、投入先まで決める

OKF化すると、知識は参照しやすくなる。だからこそ、公開HTMLにするかどうかだけでなく、外部AI、社内RAG、全文検索、embedding、agentの常時参照、CIログ、PR差分、ブラウザ履歴、キャッシュに流れてよいかを考える必要がある。

実務運用では、OKF標準fieldとは別に、次のような運用fieldやチェックを足す候補がある。

  • classification: public、internal、confidential、restrictedなどの分類。
  • allowed_consumers: 読ませてよいAI agent、ツール、検索index。
  • owner, source, last_reviewed: 更新責任、正本、最終確認日。
  • secret scan、PII scan、broken link check、実テーブル名の公開可否確認。
  • 誤公開時のrevert、検索indexやembeddingからの削除、復元確認。

個人運用メモでは、口座番号、残高、顧客名、内部KPI、認証情報を知識ファイルに入れない。必要なら、判断ルールだけを匿名化して扱う。

12

結論: まず1つの指標定義を知識ファイルにする

OKFは、社内知識や個人メモを一気に移行するための仕組みではない。まずは指標定義、除外条件、テーブル説明のように、何度もAI agentへ説明している前提を1つだけ知識ファイルに分ける。

そのうえで、index.mdで入口を作るか、log.mdで更新履歴を残すか、owner、正本、公開範囲、投入先をどう決めるかを考える。OKFは、知識を正しくするものではなく、知識を参照しやすい単位に分けるための形式である。

13

参考資料

資料 位置づけ
Introducing the Open Knowledge Format Google Cloud BlogによるOKF紹介。OKFの狙いと背景を確認する資料。
GoogleCloudPlatform/knowledge-catalog Knowledge Catalogのsamples、tools、OKF関連資料を含むrepository。
Open Knowledge Format (OKF) v0.1 Draft bundle structure、frontmatter、reserved filename、conformanceを定義する仕様。