これは何?
Asciidoctor(AsciiDoc)は、特に技術文書やプロジェクトドキュメントの作成でよく使用されるマークアップ言語です。Markdownよりも柔軟な表現ができる一方で,html等よりも記述が簡単であり,htmlやpdfとしてexportすることもできます。
しかし,意外と環境構築が面倒です。
この記事ではDocker/DevContainerを使ってすぐにAsciiDocをbuildできる環境を作成しました。
AsciiDocとは
- Asciidoctor(AsciiDoc)は、特に技術文書やプロジェクトドキュメントの作成でよく使用されるマークアップ言語の一つ
- markdownよりも表現力がある一方で,HTMLような高い表現力
自分の記事ではないですが,このQiitaがわかりやすかったので貼っておきます。
ビルド方法の歴史
もともとはasciidoctorというRuby製のツールを使ってビルドを行うのが一般的でした。
しかし,関連ツールの依存性を解決したりPlantUMLと連携することを考えるとコマンドがとても長くなってしまいます。
そこで,Asciidoctor Gradle Pluginが作成され,build環境を整えやすくなったという歴史的背景があるようです。
そのため,本記事でもGradleを使ってbuildを行います。
AsciiDocをビルドしてみる
今回作成したサンプルリポジトリではDockerでBuild環境を整えました。詳しくはこちらをご覧ください。
VSCodeのDev Containerについてはスペースの問題上割愛します。
Dev Containerについては
https://qiita.com/sigma_devsecops/items/79db1640d1a1cd82343d
を参考にしてください。
FROM gradle:8.10.2-jdk17-jammy AS devcontainer
WORKDIR /app
RUN apt-get update -y
RUN <<EOF bash -ex
apt-get install -y --no-install-recommends libxext6 libxrender1 libxtst6 libxi6
rm -rf /var/lib/lists
EOF
CMD ["gradle", "asciidoctor"]
git clone https://github.com/RyosukeDTomita/asciidoc_env
cd asciidoc_env
docker buildx bake
docker compose up # ./build配下にhtmlが作成される。
前述したようにビルドにGradleを使うのでGradleイメージをベースイメージに使用しています。
また,PlantUML作って作成したシーケンス図等を埋め込むため,必要なツールをインストールしています。
最低限の構成だとこんな感じになります。テーマ等もカスタマイズ可能なので,Orilly用のテーマとか探してみても面白いかも。
追記
日本語が重なる場合には日本語フォントをいれると解決できた。