Docusaurus:Docs-as-Code標準のドキュメントサイト構築がもはや「悪夢」ではなくなる

Development tutorial - IT technology blog
Development tutorial - IT technology blog

テクニカルドキュメント:苦行から自動化されたプロセスへ

Googleドキュメントで表のレイアウトを整えるためだけに3時間を費やしたり、VS CodeからWordへコードを必死にコピー&ペーストしたりした経験はありませんか?駆け出しの頃、私は上司からAPIドキュメントの更新を指示されるたびに憂鬱になっていました。コードのロジックが少し変わるだけで、50ページにわたるドキュメント全体が瞬時に古くなり、使い物にならなくなってしまうからです。

もしあなたがそのようなループに陥っているなら、Docs-as-Codeこそが解決策です。簡単に言えば、ドキュメントをソースコードと同じように管理する手法です。Markdownで書き、Gitで保存し、Pull Requestでレビューを行い、デプロイを自動化します。このエコシステムにおいて、Docusaurusは高いカスタマイズ性と優れたパフォーマンスにより、現在最も有力な選択肢となっています。

これはMetaがReactベースで開発した静的サイトジェネレーター(Static Site Generator)です。味気ないMarkdownファイルを、ダークモードや検索バーが標準装備されたプロフェッショナルなウェブサイトへと、わずか数分で変貌させます。React、Tailwind CSS、Algoliaといった大規模プロジェクトでもこのツールが信頼され、採用されています。

なぜREADME.mdではなくDocusaurusを選ぶべきなのか?

すべてのガイドを1つの非常に長いREADMEファイルに詰め込むと、読者は意欲を失ってしまいがちです。Docusaurusは、以下の圧倒的なメリットによってこの問題を解決します:

  • MDXの強力な機能: 単なるプレーンテキストを書くだけではありません。MDXを使えば、Reactコンポーネントをドキュメントに直接埋め込むことができます。記事の途中にインタラクティブなボタンやチャートを作成することが可能です。
  • スマートな階層構造: バージョニング(versioning)、多言語対応(i18n)、多階層のサイドバーをサポートしています。これはプロジェクトが成長し、規模が大きくなるにつれて非常に重要になります。
  • スピードとSEO: 生成されたサイトのLighthouseスコアは、通常90〜100に達します。読み込み速度が速いため、ユーザー体験がスムーズになり、Googleボットにも好まれます。

5分で最初のドキュメントサイトを立ち上げる

始める前に、Node.js(バージョン18以上)がインストールされていることを確認してください。ターミナルを開き、初期化コマンドを実行します:

npx create-docusaurus@latest my-docs classic

このコマンドにより、標準的なサンプルテンプレートを含むmy-docsディレクトリが作成されます。その後、ディレクトリに移動してサーバーを起動するだけです:

cd my-docs
npm start

http://localhost:3000にアクセスすると、プロフェッショナルなドキュメントページが表示されます。コードに加えた変更は、即座に反映されます(ホットリロード)。

ディレクトリ構造の解説

Docusaurusは、管理しやすいようにすべてが科学的に整理されています:

  • /docs//: プロジェクトの「心臓部」であり、すべての技術ドキュメント(Markdownファイル)を格納します。
  • /blog/: アップデート情報や関連ニュースを投稿する場所です。
  • /src/: ReactやCSSを使用して、UIを深くカスタマイズしたい場合に利用します。
  • docusaurus.config.js: ロゴ、メニュー、プラグインなどを変更するための中央制御ファイルです。

コンテンツ作成とサイドバーの最適化

docs/cai-dat.mdというファイルを作成してみましょう。Front Matterセクションの便利さがわかるはずです:

---
id: cai-dat
title: インストールガイド
sidebar_label: クイックインストール
sidebar_position: 1
---

# プロジェクトの開始

ライブラリをインストールするには、以下のコマンドを実行します:

```bash
npm install my-lib
```

:::tip 注意
予期せぬエラーを避けるため、Node.jsのLTS版を使用してください。
:::

複雑なメニュー設定ファイルを修正する代わりに、sidebar_positionを変更するだけで済みます。Docusaurusが左側のメニューバーの順序を自動的に並べ替えてくれます。

実務上の経験から言うと、ドキュメントはモジュールごとに細かく分けるべきです。1つのファイルに2000行も詰め込まないでください。細分化することで、チームによるPull Requestのレビューが速くなり、ユーザーも特定の情報を探しやすくなります。

プロフェッショナルな外観のカスタマイズ

docusaurus.config.jsを開いて、サイトをパーソナライズしましょう。ここでプロジェクトのアイデンティティを定義します:

const config = {
  title: 'DevDocs Pro',
  tagline: '開発者のためのテクニカルドキュメント',
  url: 'https://docs.your-site.com',
  
  themeConfig: {
    navbar: {
      title: 'ホーム',
      items: [
        {type: 'doc', docId: 'intro', label: 'ドキュメント'},
        {to: '/blog', label: 'ブログ', position: 'left'},
        {href: 'https://github.com/user/repo', label: 'GitHub', position: 'right'},
      ],
    },
  },
};

特筆すべき機能の一つは検索(Search)です。自分で検索コードを書く代わりに、Algolia DocSearchを統合できます。APIキーを設定するだけで、大手ドキュメントサイトのようなインテリジェントな検索バーを約10分で導入できます。

MDXによるドキュメントのインタラクティブ化

これは、テキストとアプリケーションの境界線を曖昧にする、私の一番のお気に入り機能です。難しい概念を説明するために、視覚的なコンポーネントを作成できます:

export const Badge = ({children, type}) => (
  <span className={`badge badge--${type}`}>{children}</span>
);

現在のステータス: <Badge type="success">稼働中</Badge>

この機能は、ユーザーがその場で実際のデモを確認する必要があるデザインシステムやUIライブラリのドキュメントを作成する際に非常に役立ちます。

迅速なデプロイ(Deployment)

コンテンツの準備ができたら、インターネットに公開するまであと数分です。Docusaurusは静的ファイルを生成するため、GitHub Pages、Vercel、Netlifyなどで無料でホストできます。

プロジェクトをパッケージ化するためにビルドコマンドを実行します:

npm run build

結果はbuild/ディレクトリに出力されます。GitHub Actionsを使用すれば、CI/CDプロセスを自動化できます。mainブランチに新しいMarkdownをプッシュするたびに、ドキュメントサイトは約60〜90秒後に自動的に更新されます。

おわりに

5万行以上のコードを扱う実際のプロジェクトを通じて、私は次のことに気づきました。どんなに優れたコードでも、ドキュメントがなければ新人は途方に暮れてしまいます。Docusaurusを導入したことで、私のチームでは新しいメンバーのオンボーディング時間を40%短縮できました。ドキュメント作成を負担と考えないでください。それは、製品を完成させ、プロフェッショナルなものにするためのプロセスなのです。

Share: