【AsciiDoc入門】長文・仕様書作成の神機能!ファイルの分割と結合(include)をマスターしよう!

この記事は約5分で読めます。

前回の連載第3回「【AsciiDoc入門】箇条書き・チェックボックス・定義リストの極意をマスターしよう!」では、箇条書きの階層化やMarkdownにはない「定義リスト(コロン2つ ::)」などの便利なリスト表現について解説しました。

連載第4回となる今回は、AsciiDocが「技術書」「仕様書」「大規模マニュアル」の作成で圧倒的に選ばれる最大の理由である、神機能「ファイルの分割と結合(include ディレクティブ)」について徹底解説します!

第1回の比較記事(https://niyanmemo.com/7489/ )でも「AsciiDocの決定的な強み」として触れましたが、数百ページに及ぶドキュメントや万単位の文字数になるブログ連載も、この機能を使えば驚くほどスマートに管理できるようになります。

VS Codeでの実践的なフォルダ構成例と合わせて見ていきましょう!

1. なぜ「ファイルの分割」が必要なのか?

1つの大きなドキュメントを1つのファイル(例: index.adoc)だけで書き進めると、以下のような問題が発生します。

  • スクロールが大変: 数千〜数万行になり、編集したい章を探すだけで一苦労。
  • チーム開発での衝突(コンフリクト): Gitなどで複数人で同時に編集すると、同じファイルを触るためコンフリクトが多発する。
  • 見通しの悪さ: 各章の構成の入れ替えや全体像の把握が難しくなる。

AsciiDocの include 機能を使えば、「章ごとにファイルをバラバラに書いて、最後は1つのファイルにガッチャンコして出力する」という理想的な運用が標準機能だけで可能になります。

2. 基本の書き方(include:: ディレクティブ)

書き方はとてもシンプルです。結合したいメインのファイル(親ファイル)の中に、以下のように1行記述するだけです。

include::読み込みたいファイル名.adoc[]

💡 記述のポイント

  • include:: の後ろに読み込みたいファイルの相対パスを指定します。
  • 末尾には [] (角カッコ) を必ずつけてください。(カッコ内に追加の属性を指定することも可能です)。

3. 実践!VS Codeでのディレクトリ構成とコード例

実際の開発や執筆現場でよく使われるディレクトリ(フォルダ)構成とコードの書き方を見てみましょう。

おすすめのフォルダ構成

my-document/
├── main.adoc              <-- 親ファイル(全体をまとめるファイル)
└── chapters/              <-- 子ファイルをまとめるフォルダ
    ├── 01_intro.adoc      <-- 第1章
    ├── 02_install.adoc    <-- 第2章
    └── 03_usage.adoc      <-- 第3章

① 親ファイル(main.adoc)の記述

親ファイルには、第2回(https://niyanmemo.com/7505/ )で紹介したタイトルや目次自動生成(:toc:)などの全体設定を書き、本文の位置に include を配置します。

= AsciiDoc完全マニュアル
:toc: left
:toclevels: 3
:toc-title: 目次
:numbered:

// 各章のファイルを読み込む
include::chapters/01_intro.adoc[]

include::chapters/02_install.adoc[]

include::chapters/03_usage.adoc[]

(※ :numbered: を書いておくと、各見出しに「1.」「1.1」のような章番号を自動付与してくれます)

② 子ファイル(例: chapters/01_intro.adoc)の記述

子ファイル側には、全体設定や <h1> 相当の = タイトル は書かず、== 大見出し から書き始めます。

== はじめに

本書はAsciiDocの基本から応用までを解説した完全マニュアルです。

=== 本書の対象読者
* ドキュメント作成を効率化したいエンジニア
* 技術ブログをスマートに管理したいライター

これで main.adoc をVS Codeのリアルタイムプレビューで開くと、すべての章がガッチャンコされ、目次も全章分を合算して左側に自動生成されます!

4. 【応用】ソースコードの一部を直接埋め込む

include 機能の凄さは、.adoc ファイルの結合だけにとどまりません。なんと実際のプログラム(PythonやRustなどのソースコード)をそのままドキュメント内に直接読み込むことができます!

フォルダ構成

my-document/
├── main.adoc              <-- 親ファイル(全体をまとめるファイル)
├── chapters/              <-- 子ファイルをまとめるフォルダ
│   ├── 01_intro.adoc      <-- 第1章
│   ├── 02_install.adoc    <-- 第2章
│   └── 03_usage.adoc      <-- 第3章
└── src/                   <-- プログラムソースを置くフォルダ
    └── main.py            <-- Pythonスクリプト

記述例

== サンプルプログラムの解説

以下のコードは、今回作成したPythonスクリプトの実装です。

[source,python]
----
include::src/main.py[]
----

コピペの手間と「載せ間違い」がゼロになる!

仕様書や解説記事を書く際、コードをコピー&ペーストしてドキュメントに貼り付けていると、「元のプログラムを修正したのに、仕様書のコードを更新し忘れた!」というミスがよく起きます。

プログラム自体を include しておけば、元コードを修正すればドキュメント内の表示コードも自動的に最新化されます。エンジニアにとってまさに感涙ものの神機能です。

5. まとめ

今回はAsciiDocの真骨頂である「ファイルの分割と結合(include)」について解説しました。

  • include::ファイルパス[] で外部ファイルを簡単に結合できる
  • 章ごとにファイルを分割することで、チーム開発や長文執筆が爆速・快適になる
  • .adoc だけでなく、プログラムのソースコードも直接埋め込める

「最初は1つのファイルで書いていたけれど、長くなってきたから章ごとに分けたい」と思ったときでも、すぐにファイルを切り出して include に書き換えるだけで対応できます。

コメント

タイトルとURLをコピーしました