MkDocsでmarkdownなサイト作り
MkDocsを使って、Markdownがメインのポートフォリオ/ノウハウサイトを作成してみました。
Table of Contents
作成したもの
作成したサイトとGitHubのリポジトリは以下です。
サイト
リポジトリ
経緯
アウトプットの先
学びをアウトプットすることは大事です。
私の場合はアウトプットとして、このブログに投稿していました。
しかし、ブログを書くまでも必要ないアウトプットもあります。
- 参考リンクを貼るだけで解決する場合 (公式の最新を見た方が信頼できる)
- インターネット上で既に似たような情報が多数見受けられる場合
このようなケースをどう扱うか悩んでいました。
GitHubのリポジトリにノウハウを
GitHubはインターネットからアクセスでき、全文検索も可能です。
ブログを書く必要のないものはGitHubのリポジトリにまとめていました。
しかし、しばらく使っていると以下の要望が出てきました。
- GitHub Markdown以上のリッチな機能を使いたい
- 自身の経歴などを記載したポートフォリオサイトにもしたい
そうなるとサイトジェネレータが必要になってきます。
サイトジェネレータの要件
必要な要件は以下の7点でした。
- 全文検索ができる
- マクロ構文が使える
- 追尾型の見出しに対応している
- デザインが格好いい
- 基本的にMarkdownで完結する
- バージョン管理できる
- レスポンシブ対応(スマホ対応)
本ブログで利用しているHugoも検討しましたが、条件1,3でハマッたため断念しました。
MkDocsを使えば..
そんなとき、Jumeauxで利用しているMkDocsを思い出しました。
JumeauxはPython製であるため、同じPython製のサイトジェネレータとして、ツールのドキュメント作成に選定したものです。
このMkDocsが先ほど挙げた7つの要件を全て満たしていました。
しかも、最近Version1.0になっていたのです😮
MkDocsとは
プロジェクト文書の構築を目的としてサイトジェネレータです。
ドキュメントソースはMarkdownを..設定は単一のYAMLファイルを使います。
MkDocsではテーマやプラグインが利用できます。
Material for MkDocs
見た目が好みで機能も抱負だったため、Material for MkDocsというテーマを使用しています。
Material for MkDocsは抱負なExtentionにも対応しています。
以下のExtentionを利用しています。
Extention名 | 説明 |
---|---|
Admonition | Info, Warning, Errorなど |
CodeHilite | ソースコードのハイライト表示 |
Footnotes | 注釈 |
Permalinks | パーマリンクを埋め込み |
PyMdown.MagicLink | URLなどを自動でリンク化 |
PyMdown.Details | Admonitionを折りたたみ可能にする |
PyMdown.SuperFences | Admonitionの中でもcode fence blockが使えるようにする |
要件について
先ほど挙げた要件は以下のように満たせます。
1. 全文検索ができる
Material for MkDocsは検索も提供しています。
他にpluginを使っていなければ特別な設定はいりません。
もし日本語を使う場合はmkdocs.yml
のextra.search.language
に設定が必要です。
extra:
search:
language: 'en, ja'
2. マクロ構文が使える
プラグインを使うと、Pythonを利用したマクロが定義できます。
この話をすると長くなるため、別の機会に紹介させてください。
Mimizou Roomで使っているマクロのイメージ
3. 追尾型の見出しに対応している
デフォルトで使用できます。
4. デザインが格好いい
Material for MkDocs カッコイイ( ´▽`)
5. 基本的にMarkdownで完結する
一部、特殊表記もありますが基本はMarkdownです。
新しくファイルやディレクトリを追加しても、設定(mkdocs.yml
)を変更する必要はありません😄
6. バージョン管理できる
GitHubで管理しています。
7. レスポンシブ対応(スマホ対応)
Material for MkDocsは対応しています👍
ビルド
開発中
$ mkdocs serve
localhostとポート番号をアクセスして確認できます。
ファイルを変更すると自動でリロードします。
--dirtyreload
オプションを指定すると、変更時に影響あるファイルだけリビルドします。
見出しが一部バグりますが、それさえ許容出来れば確認速度が上がります。
本番用
$ mkdocs build
site
ディレクトリに成果物ができます。
デプロイ
site
ディレクトリをpublishして終わりです。
私のサイトではNetlifyを使っています。
netlify.toml
[build]
command = "mkdocs build"
publish = "site"
総括
MkDocsを使って、Markdownがメインのサイトを作成するノウハウを紹介しました。
記事内にもあったように、マクロの部分は別の機会で紹介させていただければと思います。
Mimizou RoomにはMkDocsに関する情報も記載しています。
よろしければ覗いてみてください😃