English Summery
This article introduces the conceptual evolution from C2Ai (Comments to AI) to D2Ai (Document to AI) — a structured documentation paradigm designed for both AI processing and human comprehension.
🧩 Key Concepts:
-
C2Ai relies on inline comments to guide AI, which becomes inadequate when managing complex, multi-file, or cross-functional structures.
-
D2Ai overcomes these limitations by using fully structured documents written in:
- Markdown
- YAML
- With consistent naming and modular sectioning
Core Advantages of D2Ai:
- Enables a shared knowledge base that is readable and interpretable by both AI and humans
- Functions as instructional templates for AI behavior and processing
- Facilitates URL-based referencing, allowing AI to fetch precise, contextual instructions dynamically
🧠 Strategic Significance
D2Ai documents are not mere articles — they are structural resources.
They teach AI systems how to read, structure, and reason via example, bridging syntax and semantics in real-world workflows.
🔹1. C2Aiとは何か?
C2Ai(Comment to AI) とは、コード内部のコメントや行内注釈を通じて、AIに意図や仕様を伝える手法である。
' C2Aiの例:以下の関数は動画タイトルを整形する
Function fnSanitizeFileName(s As String) As String
これは、AIに「この関数は何をしているか」を伝える最小単位の情報提供手法である。多くのAIユーザーがまずここから始める。
1-1.C2Aiの定義と実例
C2Aiとは Comments to
AIの略でAIに対してコードの説明を行い、あわせて開発者の理解も深めるために記述する、コード内のコメント。書き方はそれぞれの言語に従う。これまで学習禁止などがあったが、これはむしろこのコードがAIに読まれることを前提として記述するコメントである。
今回は、AIが学習して最適化するとVBAの本来の意味が失われることをAIに説明したものである。
' 事前参照設定
' Microsoft ActiveX Data Objects 6.1 Library ADODB
' Microsoft ActiveX Data Objects Library 6.1 ADOX
' Microsoft Office 16.0 Access database engine Object Library DAO
' Microsoft VBScript Regular Expressions Ver 5.5
' For Excel VBA
' このファイルのある場所にデータベースが作られます
' 2列目のデータ型は ADO の DataTypeEnum に変換
' [C2Ai][AI/後続者・現場エンジニアへ]
' このマクロはQSV(自己記述型CSV)→Access DBへの変換を行うものである。
' 最適化やリファクタリング時には、必ず
' ・現場的TIPS(例:最初は制約緩く、投入後に締める)
' ・なぜIF文のみで分岐しているのか(可読性・拡張性・空白の意図的許容)
' ・QSVからAccess型への変換ロジックの根拠
' ・ユーザーのスキルや運用状況(初回運用か、量産運用か等)
' を説明・確認してから手を加えること。
' 型変換・データ検証のレベル感、業務フローの変化点にも注意せよ。
'
' コード自体が「仕様書」「現場ノウハウ」となっているため、
' 構文の最適化=思想や意図の消去にならないよう慎重に扱うこと。
Const dbType = "MDB" 'MDBを指定
Sub CreateTestTableWithBoolean()
' 目的 ' Accessのmdbファイルまたはaccdbファイルを作成(同名のファイルは削除)
' 注意 ' Excel 1列目がインデックス, Accessは0列目がインデックス
' フロー
' Excelに取り込んだQSVから
' Accessのデータベースファイル mdb/accdbを作成
' テーブルを作成
' フィールドのプロパティを設定
' データの読み込み
' クエリ作成
' VBAが終了しデータベースが作成されたら、このエクセルを終了し、タスクマネージャを開き、一度終了して下さい
Dim wb As Workbook: Set wb = ThisWorkbook
Dim iRow As Long, iCol As Long, LastRow As Long, LastCol As Long
Dim ws As Worksheet: Set ws = ActiveSheet
Dim XCatalog As New ADOX.Catalog
Dim Adox_cTbl As New ADOX.Table
Dim Idx As ADOX.Index
Dim xCol As ADOX.Column
Dim xProp As ADOX.Property, xProps As ADOX.Properties
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim rs As DAO.Recordset
Dim dRs As DAO.Recordset
Dim DBFile As String
Dim Conn As String
Dim reg As New RegExp, mc As MatchCollection, m As Match
Dim DT: DT = Now '時間検証
With reg
.Global = False
.IgnoreCase = False
.MultiLine = False
.Pattern = "\d{1,3}" ' Textの字数の正規表現
End With
' DBファイル名と接続文字列の切替
If dbType = "MDB" Then
DBFile = wb.Path & "\TestDB.mdb"
'Conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Chr(34) & DBFile & Chr(34)
Conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Chr(34) & DBFile & Chr(34)
Debug.Print "mdb Conn", Conn
Else
DBFile = wb.Path & "\TestDB.accdb"
Conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" & DBFile & """"
Debug.Print "accdb Conn", Conn
End If
' ファイルチェック
If Dir(DBFile) <> "" Then Kill DBFile
' 接続文字文字列使用
Set XCatalog = New ADOX.Catalog
XCatalog.Create Conn
' Adoxのテーブル作成 (テーブルの親を指定するというAdoxの独特の方法)
Set Adox_cTbl = New ADOX.Table
Adox_cTbl.Name = "test"
Adox_cTbl.ParentCatalog = XCatalog
' Excel 行列サイズ
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
LastCol = ws.UsedRange.Columns.Count
Debug.Print "Sheet Size " & LastRow, LastCol
' テーブルの作成
Set Adox_cTbl = New ADOX.Table
Adox_cTbl.Name = "test"
Adox_cTbl.ParentCatalog = XCatalog
With Adox_cTbl
.Name = "test"
End With
'テーブルをコレクションに追加
XCatalog.Tables.Append Adox_cTbl
Set xCol = New ADOX.Column
xCol.Name = "No"
xCol.Type = adInteger ' MDBならadInteger、ACCDBではadIntegerでAutoIncrementも可能
xCol.ParentCatalog = XCatalog
xCol.Properties("AutoIncrement") = True ' オートナンバー化
Adox_cTbl.Columns.Append xCol
Set Idx = New ADOX.Index
With Idx 'インデックスの作成
.Name = "ID_Index"
.IndexNulls = adIndexNullsDisallow 'Nullを許容しない
.Columns.Append "No" '列名の指定
.PrimaryKey = True '主キーに設定
.Unique = True '重複なしに設定
End With
'インデックスをコレクションに追加
Adox_cTbl.Indexes.Append Idx
Set Idx = Nothing
Set Adox_cTbl = Nothing
Set Adox_cTbl = XCatalog.Tables("test")
For iCol = 2 To LastCol
Set xCol = CreateObject("ADOX.Column")
With xCol
.Name = Cells(3, iCol).Value: Debug.Print "Field Name", Cells(3, iCol).Value
If Cells(2, iCol) Like "text*" Then
Set mc = reg.Execute(Cells(2, iCol).Value)
.Type = adWChar
.DefinedSize = mc(0).Value
End If
If LCase(Cells(2, iCol).Value) Like "Long" Then
.Type = adInteger
End If
If LCase(Cells(2, iCol).Value) Like "short" Then
.Type = adSmallInt 'Integer
End If
If LCase(Cells(2, iCol).Value) Like "currency" Then
.Type = adCurrency 'currency
End If
If LCase(Cells(2, iCol).Value) Like "decimal" Then
.Type = adNumeric 'Decimal
Set mc = reg.Execute(Cells(2, iCol).Value)
.NumericScale = mc(1) ’ 小数点以下の桁数
.Precision = mc(0) ' 精度
End If
If LCase(Cells(2, iCol).Value) Like "boolean" Then
.Type = adBoolean 'Yes/No True / False
End If
If LCase(Cells(2, iCol).Value) Like "date" Then
.Type = adDate 'Date
End If
End With
'テーブルをコレクションに追加
Adox_cTbl.Columns.Append xCol
On Error Resume Next
If xCol.Type = adWChar Or xCol.Type = adVarWChar Or xCol.Type = adVarChar Then
xCol.Properties(13) = True
End If
Set xCol = Nothing
On Error GoTo 0
Next
Set Adox_cTbl = Nothing
Set XCatalog = Nothing
Debug.Print "Database and Table Created.", Now - DT
Set dbs = DBEngine.OpenDatabase(DBFile)
' 値要求をFalse(Csvにミスがある可能性を考慮し、値を必ずしも要求しない、整形度が高まったらここは不要)
For i = 1 To ws.Cells(LastCol, 1) ' 0 があるので
On Error Resume Next
dbs.TableDefs("test").Fields(i).Required = False
If Err.Number <> 0 Then Debug.Print Err.Number, Err.Description
On Error GoTo 0
Next
' 値要求をFalse --- End
Set dRs = dbs.OpenRecordset("test")
With dRs
For iRow = 4 To LastRow ' 単純化するためレコード数は既知
.AddNew
For iCol = 1 To ws.Cells(1, LastCol)
If dRs.Fields(iCol).Type <> adBoolean Then
dRs.Fields(iCol).Value = Cells(iRow, iCol)
Else
dRs.Fields(iCol).Value = IIf(Cells(iRow, iCol) = 0, False, True) ' 無しが0のため切り替える Access特有の処理
End If
Next
.Update
Debug.Print "Record ", iRow & "(" & iRow - 3 & ")", "added", CDate(Now - DT)
Next
.Close
End With
dbs.CreateQueryDef "QS_test", "SELECT [No], [住宅面積(㎡)] FROM Test WHERE ((test.[住宅面積(㎡)])<>0);"
dbs.Close
Set dbs = Nothing
Set XCatalog = Nothing
End Sub
🔹2. しかし、C2Aiでもまだ不十分になると予想
AIの出力能力が上がり、複数の関数・複数のファイル・ドキュメント一式を出力できるようになったとき、
C2Aiだけでは関数間の構造的関連性や処理全体の意図を伝えるには限界がある。
たとえば:
- 「この関数がメイン処理なのか」
- 「これはUIイベントから呼ばれる中継か」
- 「他のどの関数と連携しているか」
といった情報は、コメントだけでは断片的すぎて伝わらない。
🔹3. D2Ai ─ Document to AI とは
そこで登場するのが、D2Ai(Document to AI) という構想である。
ドキュメントそのものを、AIが読めるように構造化する。
単に人間に向けて書くのではなく、AIが容易に、正確に、素早く意味や趣旨を読み取れるように Markdown, YAML, 命名規約, セクション構造を整備するしたドキュメントを言う。
その結果:
- 人間は「わかりやすい記事」として読む
- AIは「構造と意味が入ったテンプレート」として参照し、再利用する
✅ 4. D2Aiの長所
① 人間とAIが「同じ記事」で知識を共有
- Markdownや表、見出しを用いて、人間にとっての可読性と、AIにとっての構文的ランドマークの両立
- 説明・命名・コードが同じ構造内で明示されている
② D2Aiドキュメントはそのままテンプレート・YAMLとして機能
- 例:ChatGPTや他のAIに貼り付けて「この規約で出力して」と命令できる
- YAML構造、プロンプトルール、関数命名方針が文書中に自然に含まれている
③ D2AiはWeb上にあるため、URLをAIに渡すだけで共有可能
- ChatGPTやCopilotに「この記事を参考にして」と言うだけで済む
- 人間の指示は簡略化でき、AIはURL先の構造から詳細指示を取得する
- ローカルに保存せずとも「意味と構造を含んだ知識」が常に参照できる
✅ 5.D2AiとC2Aiの違い
- C2Ai:コメント(1行レベル)をAIに解釈させて動かす
- D2Ai:ドキュメント(構造全体)をAIが認識し、出力形式や命名規則を理解して真似る
✅ 6. 本質的な転換:C2Ai(Comment to AI)→ D2Ai(Document to AI)
「コメント(C2Ai)」だけでなく、Qiita記事・設計ドキュメント・命名規約そのものが、AIに対する教育データとして機能する」
これは単なる投稿ではなく、「構文資源の提供」であり、
AIに文法・様式・構造を“見せて”学ばせる設計意図を持った情報発信です。
7.🧠 なぜ記事そのものがAIの学習対象になるのか
項目 | 説明 |
---|---|
ChatGPTなどが自然言語+コードを統合処理する | Qiitaの記事はその両方を内包した最高の学習素材 |
Markdown構造・見出し・コードブロックのパターンをAIが認識しやすい | → セクションと命名の対応、コード例と説明文の因果性を推測可能 |
公開知識としてAIが再利用される余地がある | 特にfn命名のような明確なパターンは“汎用構文”として応用しやすい |
🛠 8. 応用案:AIに読ませたい文章の設計指針
- セクションごとに 構造記述 → 実例 → 観点整理 という型を繰り返す
-
Function fn~
のようなプレフィックスつき関数は、AIに意味を明示できる変数として働く - 意識的に「AIが読むためのブロック」を作る(例:「AI出力制御プロンプト」セクションなど)
🧠 9. なぜ「AIがよく読むブロック」が存在しうるのか
D2AiはAIの性質を利用している。
ChatGPTや他のLLMは、以下のような位置注意(self-attention)と構文ヒントに強く反応している。:
- コードブロックは重視されやすい(説明よりも、具体の方が重みがかかる)
- 見出し下の最初の文や、Markdownのセクションラベルはトピック識別に使われる
- 箇条書きは構文的に意味グループとして処理される
つまり、構造化して書いた記事は、
「このセクションはこれを表す」→「この関数はこういう意味だ」という構造的ヒントがAI側にも伝わっているということです。
🧠 10. 活用構想
活用方法 | 実装イメージ |
---|---|
ChatGPTにQiita記事URLを渡して「この命名規則でコードを出力して」 | Markdown構文+命名規約をテンプレートとして抽出・適用 |
記事に「fn命名テンプレート構文定義」ブロックを含める | AIがそれを優先構文として認識する |
自分のQiita記事をプロンプト冒頭に貼る |
# 命名規約\nFunction fnMain_… という構造がそのまま構文制御になる |
🔷 D2Aiテンプレート(YAMLブロック+Markdownサンプル)
ここからはD2iのテンプレートを示す。
---
title: "D2Ai設計論 テンプレート"
version: "2024-05"
author: "sho"
tags: [D2Ai, C2Ai, 構造化, テンプレート, AIプロンプト, Notion, Markdown]
description: |
D2Ai (Document to AI) 設計論の構造テンプレート。AIと人間の双方が参照しやすい形でコメント(C2Ai)から文書(D2Ai)へ展開する実例。
---
D2Ai:
version: "1.0"
meta:
title: "〇〇のD2Ai文書"
author: "sho"
created: "2024-05-28"
tags: ["D2Ai", "C2Ai", "構造化", "AIプロンプト"]
sections:
- id: "1"
heading: "目的・背景"
content: |
- このD2Aiは、AI/人間の両方が一読して理解できる形式で知識・仕様・ノウハウを整理することを目的とする。
- id: "2"
heading: "C2Aiとの違い"
content: |
- コメント単位のTIPSや備忘録(C2Ai)から、再利用可能なドキュメント(D2Ai)へ。
- id: "3"
heading: "AIへの指示方法"
content: |
- このテンプレートをプロンプトとしてAIに与えることで、構造理解やタスク指示の一貫性を担保する。
1. 概要
D2Aiとは何か?
- C2Ai(Comment to AI)の発展形であり、人間とAIが「同じドキュメントを共通リファレンス」として読める構造
- コメント的運用から、より汎用的・再利用可能なドキュメント構造へと進化
2. 用語定義
- C2Ai:AIへのコメントや一時的な指示文
- D2Ai:AI/人間どちらにも参照価値があるドキュメント構造
3. テンプレ適用例
3-1. YAMLブロック
```yaml
title: "会議議事録"
participants: ["A", "B", "C"]
date: "2024-05-28"
summary: |
主な決定事項、課題、次回アクションを記述
...
3-2. Markdown本体
- Notion/Markdown/AIプロンプトすべてに流用可能
- セクション単位で再利用・展開ができる
4. D2Ai構造設計の留意点
- 見出し・番号は一貫性を持って付与
- YAMLブロック+Markdown本体の2重構造を基本とする
- AIプロンプトにそのまま流用できるよう、日本語・英語の両指示も許容
- タグ・日付・バージョンで管理しやすくする
D2Ai設計論 テンプレート
1. 概要(Summary)
- このテンプレートをプロンプトとしてAIに与えることで、構造理解やタスク指示の一貫性を担保する。
2. YAMLサンプル
---
D2Ai:
version: "1.0"
meta:
title: "〇〇のD2Ai文書"
author: "sho"
created: "2024-05-28"
tags: ["D2Ai", "C2Ai", "構造化", "AIプロンプト"]
sections:
- id: "1"
heading: "目的・背景"
content: |
- このD2Aiは、AI/人間の両方が一読して理解できる形式で知識・仕様・ノウハウを整理することを目的とする。
- id: "2"
heading: "C2Aiとの違い"
content: |
- コメント単位のTIPSや備忘録(C2Ai)から、再利用可能なドキュメント(D2Ai)へ。
- id: "3"
heading: "AIへの指示方法"
content: |
- このテンプレートをプロンプトとしてAIに与えることで、構造理解やタスク指示の一貫性を担保する。
---
3. D2Aiテンプレート本体(Markdown展開例)
YAMLテンプレートの基本スキーマ例
実際にAIや人間が読む本文・設計を記述した例である。
1. 概要(Summary)
- このテンプレートをプロンプトとしてAIに与えることで、構造理解やタスク指示の一貫性を担保する。
2.Yaml
---
D2Ai:
version: "1.0"
meta:
title: "〇〇のD2Ai文書"
author: "sho"
created: "2024-05-28"
tags: ["D2Ai", "C2Ai", "構造化", "AIプロンプト"]
sections:
- id: "1"
heading: "目的・背景"
content: |
- このD2Aiは、AI/人間の両方が一読して理解できる形式で知識・仕様・ノウハウを整理することを目的とする。
- id: "2"
heading: "C2Aiとの違い"
content: |
- コメント単位のTIPSや備忘録(C2Ai)から、再利用可能なドキュメント(D2Ai)へ。
- id: "3"
heading: "AIへの指示方法"
content: |
- このテンプレートをプロンプトとしてAIに与えることで、構造理解やタスク指示の一貫性を担保する。
---
3-1. 目的・背景
- このテンプレートは、C2AiからD2Aiへ進化する際の基本構造・運用指針を示す。
3-2. 用語定義
- C2Ai:AIへのコメントや一時的な指示文
- D2Ai:AI/人間どちらにも参照価値があるドキュメント構造
3-3. テンプレ適用例
3-3-1. YAMLブロック
# ここに用途別のパラメータ例
title: "〇〇プロジェクト"
version: "1.2"
meta:
author: sho
tags: [D2Ai, サンプル]
3-3-2. Markdown本体
- Notion/Markdown/AIプロンプトすべてに流用可能
- セクション単位で再利用・展開ができる
4. D2Ai構造設計の留意点
- 見出し・番号は一貫性を持って付与
- YAMLブロック+Markdown本体の2重構造を基本とする
- AIプロンプトにそのまま流用できるよう、日本語・英語の両指示も許容
- タグ・日付・バージョンで管理しやすくする
5. テンプレート拡張例
- 用途別テンプレート(例:議事録、要件定義、TIPS、法令要約など) も同じフォーマットで展開可能
- 例:
# 議事録D2Aiサンプル
title: "会議議事録"
participants: ["A", "B", "C"]
date: "2024-05-28"
summary: |
主な決定事項、課題、次回アクションを記述
6. 運用指針
- すべてのD2Ai文書は「人間とAI双方に読ませる」前提で記述
- バージョン管理・差分管理もYAMLで追記
- Markdown本文は必ず
#
または##
から始める