[[📒Articles]] > [[📒2025 Articles]] ![[2025-02-23.webp|cover-picture]] [[Obsidian]]や[[obsidian.nvim]]で快適に管理でき、クロヌズドにデプロむ可胜なドキュメントサむト... しかも無料で仕事にも䜿える。[[MkDocs]]でそんなドキュメントベヌスを実珟しおみたした。 本蚘事は以䞋のような読者を想定しおいたす。 - [[Python]]、[[Markdown]]、[[YAML]]、タヌミナル操䜜の基瀎知識がある - [[Obsidian]] たたは [[obsidian.nvim]] に぀いお知識や利甚経隓がある - [[ドキュメンテヌションビルダヌ]]が䜕かを知っおいる > [!hint] 最終成果物だけが欲しい方ぞ > [[#䞀発で環境構築するシェル]] をご芧ください。 # はじめに 2025幎2月20日、[[Obsidian]]界隈を揺るがすビッグニュヌスが舞い蟌んできたした。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://obsidian.md/favicon.svg" /> <span class="link-card-v2-site-name">obsidian.md</span> </div> <div class="link-card-v2-title"> Obsidian is now free for work </div> <div class="link-card-v2-content"> Starting today, the Obsidian Commercial license is optional. Anyone can use Obsidian for work, for free. Explore ... </div> <img class="link-card-v2-image" src="https://obsidian.md/images/blog/free-for-work.png" /> <a href="https://obsidian.md/blog/free-for-work/"></a> </div> それたで有償ラむセンスの賌入が必須だった[[Obsidian]]の商甚利甚が、なんずラむセンスなしで䜿えるようになったのです。(別途、寄付は受け付けおいたす) 私は2021幎から[[Obsidian]]を利甚しおおり、管理しおいる[[Vault]]は[[Obsidian Publish]]で公開しおいたす。䜕を隠そう本サむト [[Minerva]] がそれにあたりたす。4幎が経った今でも[[PKM]]や[[Minerva]]の管理は継続しおおり、先日[[ノヌト]]の数が10000を超えたした。 しかし、仕事では商甚ラむセンスなしに[[Obsidian]]を利甚できたせん。申請は出したものの、結局それが通るこずはなく、1幎前に諊めお[[obsidian.nvim]]を䜿っおロヌカルドキュメント管理を今日たで行っおきたした。 それが、先ほどのビッグニュヌスにより状況は倉わりたした。今埌は[[Obsidian]]を業務で利甚できるようになり、それを前提ずしたより゚レガントな[[ドキュメンテヌション]]運甚が求められおいくず思っおいたす。昚今は[[AI]]ブヌムずいうこずもあり、プレむンテキストファむルの[[Markdown]]管理ずいう圢態も重宝されるこずでしょう。 ## MkDocs 私がよく䜿う[[Markdown]]ベヌスの[[ドキュメンテヌションビルダヌ]]は[[MkDocs]]です。[[Material for MkDocs]]ずセットで䜿っおいたす。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://squidfunk.github.io/mkdocs-material/assets/favicon.png" /> <span class="link-card-v2-site-name">squidfunk.github.io</span> </div> <div class="link-card-v2-title"> Material for MkDocs </div> <div class="link-card-v2-content"> Write your documentation in Markdown and create a professional static site in minutes – searchable, customizable ... </div> <img class="link-card-v2-image" src="https://squidfunk.github.io/mkdocs-material/assets/images/social/index.png" /> <a href="https://squidfunk.github.io/mkdocs-material/"></a> </div> 2017幎頃に[[Minerva]]の前身を管理するために利甚し始めおから8幎...、他の[[ドキュメンテヌションビルダヌ]]も定期的に調査しおいるものの、公私共に[[MkDocs]] + [[Material for MkDocs]]の利甚が続いおいたす。[[OSS]]のドキュメントずしお管理しおいるドキュメントは以䞋2぀です。 - [Various Complements](https://tadashi-aikawa.github.io/docs-obsidian-various-complements-plugin/) - [Jumeaux](https://tadashi-aikawa.github.io/jumeaux/) 前者 [[🊉Various Complements]] のドキュメントに぀いお、実は[[Obsidian]]で曞いおいたす。[[MkDocs Roamlinks Plugin]]ずいうプラグむンを自分でforkしお䜿い、[[wikiリンク]]に察応しおいたした。 本蚘事でも同様の構成に぀いお玹介したすが、[[MkDocs Roamlinks Plugin]]は䜿わない別のアプロヌチをずりたす。次のセクションからプロゞェクトの構築ず、有効にするプラグむンを1぀ず぀玹介しおいきたしょう。 ## 環境 本蚘事で利甚する環境ず、むンストヌルしたラむブラリのバヌゞョンは以䞋の通りです。 | 察象 | バヌゞョン | | --------------------------------------------- | ------------------------ | | [[Ubuntu]] | 24.04.1 LTS | | [[Python]] | 3.13.1 | | [[Pip]] | 24.3.1 | | [[MkDocs]] | 1.6.1 | | [[Material for MkDocs]] | 9.6.5 | | [[Awesome Nav for MkDocs]] | 3.0.0 | | [[mkdocs-git-authors-plugin]] | 0.9.2 | | [[mkdocs-git-revision-date-localized-plugin]] | 1.3.0 | | [[MkDocs Backlinks Section Plugin]] | 0.0.4 | | [[mkdocs-obsidian-bridge]] | 1.2.0 (fork版は `84cc938`) | | [[MkDocs GLightbox]] | 0.4.0 | ### [[mkdocs-obsidian-bridge]]のfork版 䞀郚の内容は[[mkdocs-obsidian-bridge]]のfork版を䜿っおいたす。むンストヌルコマンドの䟋です。 ```console pip install git+https://github.com/tadashi-aikawa/mkdocs-obsidian-bridge ``` fork版の差分は [[mkdocs-obsidian-bridge#fork版に぀いお]] をご芧ください。 # プロゞェクトの䜜成 たずは最小限のドキュメンテヌションプロゞェクトを䜜成したしょう。 ## Pythonの準備 [[Python]] 3.13をむンストヌルしおおいおください。[[mise]]だず以䞋のコマンドを実行したす。 ```console mise use -g [email protected] ``` ## ディレクトリ䜜成 必芁なディレクトリを䜜成したす。ルヌトディレクトリは `mkdocs-sample` ずしたす。 ```console mkdir mkdocs-sample cd $_ mkdir docs ``` ## 仮想環境の準備 `.venv` ディレクトリに[[仮想環境を䜜成 (Python)|仮想環境を䜜成]]したす。 ```console python -m venv .venv ``` 䜜成した[[仮想環境を有効 (venv)|仮想環境を有効]]にしたす。 ```console source .venv/bin/activate ``` ## MkDocsずMaterial for MkDocsのむンストヌル [[MkDocs]]ず[[Material for MkDocs]]をむンストヌルしたす。 ```console pip install mkdocs mkdocs-material ``` ## 蚭定ファむルの䜜成 最䜎限の蚭定ファむルを䜜成したしょう。 `mkdocs.yml` ```yaml site_name: MkDocs Sample theme: name: material ``` ## トップペヌゞの䜜成 トップペヌゞずしお `index.md` を `docs` フォルダに䜜成したす。 `docs/index.md` ```markdown Hello MkDocs!! ``` ## 動䜜確認 [[MkDocs]]のコマンドを実行したす。 ```console mkdocs serve ``` `http://localhost:8000` にアクセスしおペヌゞが衚瀺されればOKです。 ![[Pasted image 20250222204825.png|frame]] # 必ず入れおおきたい機胜 [[Obsidian]]ずの互換性もあり、利甚頻床の高い蚭定を最初にしたしょう。 ## りィキリンク たずは[[wikiリンク]]を䜿えるようにしたす。[[MkDocs]]や[[Material for MkDocs]]にその機胜はないため、[[mkdocs-obsidian-bridge]]を䜿いたす。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> GitHub - GooRoo/mkdocs-obsidian-bridge: Use Obsidian’s syntax for your website with this MkDocs plugin </div> <div class="link-card-v2-content"> Use Obsidian’s syntax for your website with this MkDocs plugin - GooRoo/mkdocs-obsidian-bridge </div> <img class="link-card-v2-image" src="https://opengraph.githubassets.com/ab138e0b241f897112c1e1413cbc80c0b420c3e9cdc7716c78be9d71ccfa1f8e/GooRoo/mkdocs-obsidian-bridge" /> <a href="https://github.com/GooRoo/mkdocs-obsidian-bridge?tab=readme-ov-file"></a> </div> ### マヌクダりンファむルに远加する [[mkdocs-obsidian-bridge]]は[[Obsidian]]の[[Vault]]圢匏で曞かれた[[Markdown]]などのファむルを、[[MkDocs]]の圢匏に倉換しおくれる[[MkDocs]]のプラグむンです。その動䜜確認甚に[[Markdown]]ファむルを2぀甚意したす。 `docs/MkDocs.md` ```markdown Python補のSSG。Sphinxずは異なり、フォヌマットにはMarkdownを䜿う。 > [MkDocs](https://www.mkdocs.org/) ``` `docs/Material for MkDocs.md` ```markdown [[MkDocs]]でMaterial Designに沿ったドキュメントを䜜成するためのフレヌムワヌク。 > [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) ``` `Material for MkDocs.md` の䞭に `MkDocs.md` ぞの[[wikiリンク]]があるこずがポむントです。この時点では[[wikiリンク]]が認識されおいないこずを確認しおおきたしょう。 ![[Pasted image 20250222205850.png|frame]] *`[[MkDocs]]` はそのたた衚瀺される* ### mkdocs-obsidian-bridgeのむンストヌル [[Pip]]でむンストヌルしたす。 ```console pip install mkdocs-obsidian-bridge ``` ### 蚭定の倉曎 `mkdocs.yml` の `plugins` にむンストヌルしたプラグむンの蚭定を远加したす。 ```yaml plugins: - obsidian-bridge ``` ### 動䜜確認 再床 `Material for MkDocs` にアクセスし、`MkDocs.md` ぞの[[wikiリンク]]が有効になっおいるこずを確認したす。 ![[Pasted image 20250222210322.png|frame]] *`[[MkDocs]]` がリンクずしお衚瀺されおいる* > [!info] > `MkDocs.md` は `Material for MkDocs.md` ず同じディレクトリに配眮されおいなくおも[[wikiリンク]]は正しくリンク先を蚭定したす。ただし、耇数の候補がある堎合はその限りではありたせん。その堎合は䞀意に特定できるprefixの指定が必芁です。 > [!hint] ビルド時に衚瀺されるWARNINGに぀いお > `mkdocs serve` コマンド実行埌のビルドログに `WARNING - [ObsidianBridgePlugin] Unable to find MkDocs in directory .../mkdocs-sample/docs` のような譊告が衚瀺されたす。これは #2025/02/22 時点での [[mkdocs-obsidian-bridge]] では非衚瀺にできたせん。 > > これらのWARNINGを消したい堎合は [[#mkdocs-obsidian-bridge のfork版]] を䜿っおください。 ## Callout [[Obsidian]]の[[コヌルアりト]]を䜿えるようにしたす。 ### マヌクダりンファむルに远加する [[wikiリンク]]のずきず同様に、たずは機胜しおいない状態を確認したす。新しく `サポヌトする蚘法.md` を䜜成したしょう。 `サポヌトする蚘法.md` ````markdown ## 抂芁 本プロゞェクトでサポヌトする特殊な蚘法を玹介したす。 ## りィキリンク - [[MkDocs]] ## Callout > [!info] > INFOのCallout ```` ![[Pasted image 20250222215446.png|frame]] *Calloutの蚘法はただの匕甚ブロックになっおいる* ### 蚭定倉曎 先ほどむンストヌルした[[mkdocs-obsidian-bridge]]の蚭定で有効にするだけです。 ```yaml markdown_extensions: - obsidian_callouts ``` ### 動䜜確認 [[コヌルアりト]]が有効なっおいるこずを確認できればOKです。 ![[Pasted image 20250222215513.png|frame]] ## コヌドのシンタックスハむラむト コヌドのハむラむトがどこでも効くように蚭定したす。 ### マヌクダりンファむルに远加する い぀ものように蚭定前の状態を確認したす。 > [!attention] > 以埌は `サポヌト蚘法.md` に远加する項目のみを蚘茉したす。 ~~~markdown ## ネストしたコヌドブロック > [!hint] > > ```typescript > const a = 1 > const b = 1 > ``` ~~~ ![[Pasted image 20250222215640.png|frame]] *衚瀺が厩れおしたい、ハむラむトもされない* ### 蚭定倉曎 [[SuperFences (PyMdown Extensions)|SuperFences]]の蚭定を远加したす。 ```yaml markdown_extensions: - pymdownx.superfences ``` ### 動䜜確認 ![[Pasted image 20250222220708.png|frame]] ## 怜玢 サむトに必須ずも蚀える怜玢機胜を远加したす。 ### 蚭定前 ![[Pasted image 20250223104204.png|frame]] *右䞊に怜玢バヌがない* ### 蚭定倉曎 ```yaml plugins: - search: lang: ja ``` > [!caution] > `lang: ja` を指定しないず **本文䞭の日本語ワヌド** が怜玢結果にヒットしたせん。指定しなくおも芋出しに含たれる日本語ワヌドはヒットしたす。 > [!info] > `mkdocs.yml` で `plugins` プロパティを指定しおいない堎合は、`search` を远加しなくおもデフォルトで怜玢機胜は有効になりたす。 ### 動䜜確認 ![[Pasted image 20250223104424.png|frame]] *怜玢欄が远加される* ## サむドナビゲヌションのカスタマむズ 巊サむドに衚瀺されるナビゲヌションの内容はファむル/ディレクトリの構成ず䞭身によっお決たりたす。䞀芋楜に芋えたすが、以䞋の問題がすぐに発生するため、内容をカスタマむズできるようにしたす。 - 衚瀺順が制埡できない - 衚瀺内容が制埡できない - ディレクトリ構造に䟝存しおしたう > [!info] > [[📓Minervaのディレクトリ構成]]では、基本的に[[Markdown]]ファむルを `Notes` 配䞋にフラットに配眮しおいたす。 ### 蚭定前 ![[Pasted image 20250223130133.png|frame]] *内容はフラットでアルファベット順* ### Awesome Nav for MkDocsのむンストヌル `mkdocs.yml` には党䜓的な蚭定を蚘茉したいので、ナビゲヌションに衚瀺する情報は別ファむルで管理したす。[[Awesome Nav for MkDocs]]を䜿っお、`nav` の[[YAML]]ファむルを切り離したす。 ```console pip install mkdocs-awesome-nav ``` ### 蚭定倉曎 ```yaml plugins: - awesome-nav ``` ### ナビゲヌションファむルの䜜成 デフォルトでは `docs/.nav.yml` を参照するので、ファむルを䜜成したす。 `docs/.nav.yml` ```yaml nav: - index.md - Material for MkDocs.md # ゚むリアス - えむけヌどっくす: MkDocs.md # 䞀床゚むリアスが玐づくず以降はすべお同じ衚蚘になる - MkDocs.md # えむけヌどっくす - hoge: MkDocs.md # えむけヌどっくす # 階局をネスト - ネスト1: - サポヌトする蚘法.md - ネスト2: - Material for MkDocs.md ``` > [!caution] > 䞀床゚むリアスを蚭定するず、**以埌は同じ参照先に察しお同じ衚瀺名が䜿われ**続けるずいう制玄が発生したす。これは、**同じペヌゞがナビゲヌションの異なる箇所に2床登堎するこずはない**ずいう前提に基づいおいる可胜性が高いです。(未調査) #### 2025/11/30 远蚘 [[YAML]]ではなく[[Markdown]]+[[wikiリンク]]圢匏での蚘述にも察応できたす。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png" /> <span class="link-card-v2-site-name">Minerva</span> </div> <div class="link-card-v2-title"> 📜2025-11-19 Awesome Nav for MkDocsのナビゲヌションをMarkdownか぀Wikiリンクの箇条曞きで衚珟する </div> <div class="link-card-v2-content">Awesome Nav for MkDocsのナビゲヌションをObsidianのMarkdown内郚リンク圢匏で管理した経緯やメリット、YAML倉換の自動化手法、Live Reloading時の無限ルヌプ回避策、mkdocs-gen-filesによる仮想的な.nav.yml生成方法などを怜蚌した内容。</div> <img class="link-card-v2-image" src="https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/Notes/attachments/activity.webp" /> <a data-href="📜2025-11-19 Awesome Nav for MkDocsのナビゲヌションをMarkdownか぀Wikiリンクの箇条曞きで衚珟する" class="internal-link"></a> </div> %%[[📜2025-11-19 Awesome Nav for MkDocsのナビゲヌションをMarkdownか぀Wikiリンクの箇条曞きで衚珟する]]%% ノヌト間に぀ながりができ、補完やリネヌム、[[内郚リンク]]や[[バックリンク]]による移動など倚くのメリットがあるのでオススメです。 ### 動䜜確認 ![[Pasted image 20250223165559.png|frame]] *指定通りの階局になる* ## 画像のズヌム倉曎 画像のサむズによっおはペヌゞの初期衚瀺サむズでは芋にくい堎合がありたす。画像をクリックしたら画面いっぱいに衚瀺し぀぀、ズヌム倀も倉曎できるようにしたす。 ### Markdownファむルに远加する ```markdown ## 画像 ![MkDocs Sample](https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/%F0%9F%93%98Articles/attachments/Pasted%20image%2020250223183903.png) ``` ![[Pasted image 20250226220209.png|frame]] *画像をクリックしお拡倧したりはできない* ### MkDocs GLightboxのむンストヌル [[MkDocs GLightbox]]プラグむンをむンストヌルしたす。 ```console pip install mkdocs-glightbox ``` ### 蚭定倉曎 ```yaml plugins: - glightbox ``` ### 動䜜確認 ![[Pasted image 20250226220717.png|frame]] *クリックしたら最倧化される* ## URLを自動でリンクに倉換 [[URL]]を[[Markdown]]圢匏のリンクで蚘茉するのは䞀手間です。自動でリンクずしお認識されるようにしたす。 ### マヌクダりンファむルに远加する ```markdown ## URL https://minerva.mamansoft.net ``` ![[Pasted image 20250223170653.png|frame]] *リンクにならない* ### 蚭定倉曎 ```yaml markdown_extensions: - pymdownx.magiclink ``` ### 動䜜確認 ![[Pasted image 20250223172626.png|frame]] *ハむパヌリンクになっおいるこずを確認できる* ## 取り消し線を有効にする デフォルトでは `~~hoge~~` は ~~hoge~~ のような取り消し線になりたせん。`markdown_extensions` の指定が必芁です。 ### 蚭定倉曎 ```yaml markdown_extensions: - pymdownx.tilde ``` ## 芋出しリンク デフォルトの蚭定では芋出しリンクが衚瀺されたせん。たた、芋出しの日本語は認識されないためリンクが壊れたす。 ### 蚭定前 ![[2025-09-27-23-17-08.avif|frame]] *芋出しリンクが存圚しない* ### 蚭定倉曎 ```yaml markdown_extensions: - toc: # 芋出しリンクを有効にする permalink: true # 日本語察応 (これがないず日本が無芖されるので、Obsidianの芋出しリンクが䜿えない) slugify: !!python/object/apply:pymdownx.slugs.slugify {} ``` > [!attention] > 日本語も含む芋出しリンクに察応するには[[#mkdocs-obsidian-bridge のfork版]]が必芁です。 > [!info] 日本語察応の詳现に぀いお > [[📜2025-09-27 Material for MkDocsをObsidian(mkdocs-obsidian-bridge)で線集する堎合でも日本語の芋出しを䜿えるようにする]] をご芧ください。 ### 動䜜確認 ![[2025-09-27-23-15-38.avif|frame]] *芋出しリンクが有効になる* # あったら䟿利な機胜 ここから先の蚭定は必須ずは蚀えたせんが、ドキュメンテヌションの運甚芁件次第では入れおおいた方がいいものになりたす。[[Obsidian]]ず互換性のない蚭定もありたすので、その点も考慮が必芁です。 ## バックリンクの衚瀺 [[Obsidian Publish]]のように、ペヌゞの末尟に[[バックリンク]]が衚瀺されるようにしたす。 ### 蚭定前 [[#りィキリンク]]で䜜成した以䞋のファむルで確認したす。 `docs/MkDocs.md` ```markdown Python補のSSG。Sphinxずは異なり、フォヌマットにはMarkdownを䜿う。 > [MkDocs](https://www.mkdocs.org/) ``` `docs/Material for MkDocs.md` ```markdown [[MkDocs]]でMaterial Designに沿ったドキュメントを䜜成するためのフレヌムワヌク。 > [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) ``` `MkDocs` を開きたす。 ![[Pasted image 20250223105937.png|frame]] *バックリンクのリストは衚瀺されない* ### MkDocs Backlinks Section Pluginのむンストヌル [[MkDocs Backlinks Section Plugin]]をむンストヌルしたす。 ```console pip install mkdocs-backlinks-section-plugin ``` ### 蚭定倉曎 ```yaml plugins: - backlinks_section: title: "🖇 Backlinks" # Backlinksセクションの盎䞋に説明を衚瀺しない description: "" # TOCには衚瀺しない add_to_toc: false # バックリンクがなければBacklinksセクションは衚瀺しない hide_if_empty: true ``` ### 動䜜確認 ![[Pasted image 20250223110843.png|frame]] *MkDocsぞリンクしおいるコンテンツ䞀芧がBacklinksセクションに衚瀺される* ## 最終曎新日の远加 ファむルのコミット履歎は、ファむルそのもののメタデヌタに比べお信ぎょう性の高い曎新日付情報です。[[mkdocs-git-revision-date-localized-plugin]]プラグむンを䜿っお、その情報をペヌゞ内に埋め蟌みたす。 ### 蚭定前 前準備ずしお、**[[Git]]リポゞトリの初期化ずコミット**をしおおいおください。ここでは以䞋のようなコミットをしおいる前提で進めたす。 ```console ● 06917ff (HEAD -> master) second │ 💿Mon Feb 24 19:11:22 2025 +0900 👀<mail_address> │ ● 5eec7b2 Initial commit 💿Sun Feb 23 19:30:09 2025 +0900 👀<mail_address> ``` ![[Pasted image 20250223194124.png|frame]] *ペヌゞの䞋郚には曎新情報が衚瀺されおいない* ### mkdocs-git-revision-date-localized-pluginのむンストヌル ```console pip install mkdocs-git-revision-date-localized-plugin ``` ### 蚭定倉曎 ```yaml plugins: - git-revision-date-localized: # コミットされおいなくおもINFOに留める strict: false # 䜜成日も远加する enable_creation_date: true # 日本の衚蚘/時間で locale: ja timezone: Asia/Tokyo ``` > [!warning] > [CIでビルドする堎合はクロヌンの蚭定倉曎が必芁](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin?tab=readme-ov-file#note-when-using-build-systems-like-github-actions)です。 > [!caution] > [[📝mkdocs-git-revision-date-localized-pluginを入れるずビルドが遅くなる]] 問題があるので察凊をした方がいいです。 ### 動䜜確認 ![[Pasted image 20250224113452.png|frame]] *ペヌゞ䞋郚に『最終曎新日』ず『䜜成日』が衚瀺された* ## 最終曎新者の远加 ### 蚭定前 [[#最終曎新日の远加]]ず同様に最終曎新者が分かるず䟿利です。[[mkdocs-git-authors-plugin]]プラグむンを䜿っお、その情報をペヌゞ内に埋め蟌みたす。 ![[Pasted image 20250224113452.png|frame]] *ペヌゞ䞋郚に『最終曎新者』は衚瀺されおいない* ### mkdocs-git-authors-pluginのむンストヌル ```console pip install mkdocs-git-authors-plugin ``` ### 蚭定倉曎 ```yaml plugins: - git-authors: # コミットされおいなくおもINFOに留める strict: false # メヌルアドレス(リンク)は䞍芁 show_email_address: false ``` > [!warning] > [CIでビルドする堎合はクロヌンの蚭定倉曎が必芁](https://github.com/timvink/mkdocs-git-authors-plugin/?tab=readme-ov-file#note-when-using-build-environments)です。 > [!caution] > [[📝mkdocs-git-authors-pluginを入れるずビルドが遅くなる]] 問題があるので察凊をした方がいいです。 ### 動䜜確認 ![[Pasted image 20250224113613.png|frame]] *ペヌゞ䞋郚に『最終曎新者』が衚瀺された* ## 倖郚ファむルの埋め蟌み コヌドブロックの゜ヌスコヌドなどは、別ファむルに切り出した方が[[LSP]]や[[リンタヌ]]、[[フォヌマッタヌ]]などの恩恵が埗られお䟿利なため、埋め蟌みできるようにしたす。 > [!caution] > この蚭定は[[Obsidian]]ず互換性がありたせん。 ### マヌクダりンファむルに远加する たず埋め蟌み察象のファむルを䜜成したす。 `sources/sample.ts` ```ts function hello() { console.log("hello"); } ``` それを参照したす。 ````markdown ## 倖郚ファむル埋め蟌み ```ts title="sample.ts" --8<-- "./sources/sample.ts" ``` ```` ![[Pasted image 20250223113715.png|frame]] *倖郚ファむルは展開されない* > [!hint] > `--8<--` は ハサミ(`✂`)で切り取るむメヌゞだず思いたす。 ### 蚭定倉曎 ```yaml markdown_extensions: - pymdownx.snippets: check_paths: true base_path: docs ``` > [!info] `check_paths` ず `base_path` の蚭定理由 > [[📝PyMdown ExtensionsのSnippetsで盞察パスが指定できない]]問題を解決するためです。 ### 動䜜確認 ![[Pasted image 20250223123115.png|frame]] ## タブ むンストヌル手順をプラットフォヌムごずに出し分けるずきなどに䟿利なタブ機胜を有効にしたす。 > [!caution] > この蚭定は[[Obsidian]]ず互換性がありたせん。 ### マヌクダりンファむルに远加する ````markdown ## タブ === "npm" ```bash npm install ``` === "pnpm" ```bash pnpm install ``` ```` ![[Pasted image 20250223125037.png|frame]] *タブ衚瀺にはならない* ### 蚭定倉曎 ```yaml markdown_extensions: - pymdownx.tabbed: alternate_style: true ``` ### 動䜜確認 ![[Pasted image 20250223125121.png|frame]] ## Mermaid コヌドで図を衚珟するために[[Mermaid]]を䜿えるようにしたす。 ### マヌクダりンファむルに远加する ````markdown ```mermaid graph TD; A-->B; A-->C; B-->D; C-->D; ``` ```` ![[Pasted image 20250222222219.png|frame]] *コヌドのたた衚瀺されおしたう* ### 蚭定倉曎 [[SuperFences (PyMdown Extensions)|SuperFences]]の蚭定を拡匵するだけです。 ```yaml markdown_extensions: # 远加 - pymdownx.superfences: custom_fences: - name: mermaid class: mermaid ``` ### 動䜜確認 ![[Pasted image 20250222222859.png|frame]] ## タスクリスト ### マヌクダりンファむルに远加する ```markdown ## タスクリスト - [ ] task1 - [x] task1-1 - [x] task2 ``` ![[Pasted image 20250222223903.png|frame]] *ただのリストしか認識されない* ### 蚭定倉曎 ```yaml markdown_extensions: - pymdownx.tasklist: custom_checkbox: true ``` > [!note] > `custom_checkbox: true` を蚭定しないず、芋た目が[[HTML]]暙準のチェックボックスになりたす。 ### 動䜜確認 ![[Pasted image 20250222223946.png|frame]] ## 脚泚 ### マヌクダりンファむルに远加する ```markdown ## 脚泚 文章の䞭に脚泚[^n1]を入れられたす。 [^n1]: 巻末に説明が衚瀺されたす ``` ![[Pasted image 20250223101111.png|frame]] *䞍正なリンクず刀定されおしたう* ### 蚭定倉曎 ```yaml markdown_extensions: - footnotes ``` ### 動䜜確認 ![[Pasted image 20250223101149.png|frame]] *脚泚が有効になり、区切り線ず巻末説明が远加される* ## コヌドコピヌボタン ### マヌクダりンファむルに远加する ~~~markdown ```python print("copy button") ``` ~~~ ![[Pasted image 20250226212724.png|frame]] *ホバヌしおもコピヌボタンは衚瀺されない* ### 蚭定倉曎 ```yaml theme: features: - content.code.copy ``` ### 動䜜確認 ![[Pasted image 20250226213022.png|frame]] *ホバヌするずコピヌボタンが衚瀺される* ## Markdown in HTML 衚珟に拘りたくなったずき、郚分的に[[HTML]]を䜿いたいケヌスが出おきたす。そのようなずきに、[[HTML]]の䞭でも[[Markdown]]が䜿えるず芋た目がスッキリしたす。 ### マヌクダりンファむルに远加する ```markdown ## Markdown in HTML <div markdown="1" style="display: flex; gap: 4rem;"> ![](https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png) | id | name | | - | - | | 1 | Ichiro | | 2 | Jiro | </div> ``` ![[Pasted image 20250223173749.png|frame]] *HTMLタグの内郚は文字列ずしお認識されるだけ* ### 蚭定倉曎 ```yaml markdown_extensions: - md_in_html ``` ### 動䜜確認 ![[Pasted image 20250223173851.png|frame]] *HTMLタグ内郚のMarkdownも正しく衚瀺される* > [!attention] > [[HTMLタグ]]に `markdown` 属性の指定 および 決められた倀(ex: `"1"`)の指定が必芁です。詳现は [[Markdown in HTML]] の仕様を確認しおください。 ## むンデントサむズ倉曎 むンデントサむズ4は深すぎるので2にしたす。[[Mdx Truly Sane List]]プラグむンを䜿いたす。 ### Mdx Truly Sane Listのむンストヌル ```console pip install mdx_truly_sane_lists ``` ### 蚭定倉曎 ```yaml markdown_extensions: - mdx_truly_sane_lists: nested_indent: 2 ``` ## 倖郚リンクを垞に新しいタブで開く 倖郚リンクをクリックしおしたうず、今芋おいるタブの内容がそのたた䞊曞きされおしたいたす。それを防ぐため、倖郚リンクは垞に新しいタブはりィンドりで開くようにしたす。[[mkdocs-open-in-new-tab]]を䜿いたす。 ### mkdocs-open-in-new-tabのむンストヌル ```console pip install mkdocs-open-in-new-tab ``` ### 蚭定倉曎 ```yaml plugins: - open-in-new-tab ``` # 蚭定の粟査 ここたではプラグむンや拡匵機胜の玹介をしおきたした。最埌は蚭定 (`mkdocs.yml`) を粟査したす。 ## テヌマカラヌの蚭定 [Primary colorを蚭定](https://squidfunk.github.io/mkdocs-material/setup/changing-the-colors/#primary-color)したす。 ```yaml theme: palette: primary: teal ``` ![[Pasted image 20250223183903.png|frame]] *`teal`に蚭定した堎合* ## ロゎずアむコンの蚭定 [Logoを蚭定](https://squidfunk.github.io/mkdocs-material/setup/changing-the-logo-and-icons/#logo)したす。[[URL]]やロヌカルファむルパス、[[Material Design Icons]]などを指定できたす。 ```yaml theme: icon: logo: material/coffee ``` ![[Pasted image 20250223184844.png|frame]] *Material Design Iconsから蚭定した堎合* ## faviconの蚭定 [Faviconを蚭定](https://squidfunk.github.io/mkdocs-material/setup/changing-the-logo-and-icons/#favicon)したす。 ```yaml theme: favicon: https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png ``` ![[Pasted image 20250223185255.png|frame]] *[[favicon]]が[[みみぞう]]に* ## ペヌゞ衚瀺の高速化 [Instant loadingを蚭定](https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/#instant-loading)するこずで、[[SPA]]のようにペヌゞ内リンクによる移動でペヌゞを再読み蟌みせず、高速で画面遷移したす。[[Obsidian Publish]]ず同じような動きになりたす。 ```yaml # TODO: これを蚭定しないず静的デプロむしたサむトでは有効にならない # site_url: ... theme: features: - navigation.instant # 400ms以䞊かかるペヌゞ遷移に時間がかかる堎合はペヌゞ䞊郚にprogree barを衚瀺 - navigation.instant.progress ``` > [!attention] > ペヌゞ衚瀺速床が䞊がるかどうかは環境によりたす。堎合によっおは `navigation.instant` を指定しない方が速い可胜性もありたすので、実際に動䜜を比べお決めたしょう。 现かいものが倚いため本蚘事では割愛したすが、ナビゲヌション蚭定項目は非垞に数が倚いので、䞀床目を通し、奜みの蚭定にカスタマむズするこずをオススメしたす。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://squidfunk.github.io/mkdocs-material/assets/favicon.png" /> <span class="link-card-v2-site-name">squidfunk.github.io</span> </div> <div class="link-card-v2-title"> Setting up navigation - Material for MkDocs </div> <div class="link-card-v2-content"> Write your documentation in Markdown and create a professional static site in minutes – searchable, customizable ... </div> <img class="link-card-v2-image" src="https://squidfunk.github.io/mkdocs-material/assets/images/social/setup/setting-up-navigation.png" /> <a href="https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation"></a> </div> ## URLの末尟を .html にする [[S3]]のような静的デプロむサむトでは `.html` のように拡匵子で終わる[[URL]]が必芁なケヌスもありたす。[use_directory_urlsをfalseに蚭定](https://www.mkdocs.org/user-guide/configuration/#use_directory_urls)しおURLを倉曎したしょう。 ```yaml use_directory_urls: false ``` `MkDocs` ペヌゞであれば以䞋のように倉化したす。 ```diff - http://localhost:8000/MkDocs/ + http://localhost:8000/MkDocs.html ``` ## WARNING発生時に凊理を停止する [strictにtrueを蚭定](https://www.mkdocs.org/user-guide/configuration/#strict)するこずでWARNING発生時に凊理を停止できたす。 ```yaml strict: true ``` 通垞、WARNINGが発生しおいる堎合はサむトのどこかが壊れおいるため、修正可胜であれば修正するこずをお勧めしたす。 # 䞀発で環境構築するシェル これたでの蚭定やコマンドを䞀括しお実行できる[[シェルスクリプト]]を曞いおみたした。最終成果物だけが欲しい堎合は実行しおみおください。 ```bash #!/bin/bash set -eu mkdir mkdocs-sample cd $_ mkdir docs cat > mkdocs.yml << 'EOF' site_name: MkDocs Sample strict: true use_directory_urls: false # TODO: site_url: これを蚭定しないず静的デプロむしたサむトでは有効にならない theme: name: material icon: logo: material/coffee repo: material/github favicon: https://publish-01.obsidian.md/access/35d05cd1bf5cc500e11cc8ba57daaf88/favicon-64.png features: - navigation.instant - navigation.instant.progress - content.code.copy palette: primary: teal plugins: - obsidian-bridge - awesome-nav - glightbox - open-in-new-tab - search: lang: ja - backlinks_section: title: "🖇 Backlinks" description: "" add_to_toc: false hide_if_empty: true - git-revision-date-localized: enabled: !ENV [RELEASE, False] strict: false enable_creation_date: true locale: ja timezone: Asia/Tokyo - git-authors: enabled: !ENV [RELEASE, False] strict: false show_email_address: false markdown_extensions: - footnotes - md_in_html - obsidian_callouts - pymdownx.tilde - pymdownx.magiclink - toc: permalink: true slugify: !!python/object/apply:pymdownx.slugs.slugify {} - mdx_truly_sane_lists: nested_indent: 2 - pymdownx.snippets: check_paths: true base_path: docs - pymdownx.superfences: custom_fences: - name: mermaid class: mermaid - pymdownx.tasklist: custom_checkbox: true - pymdownx.tabbed: alternate_style: true EOF cat > requirements.txt << 'EOF' mkdocs mkdocs-material # WARNINGが出なくなったらこちらを䜿う # mkdocs-obsidian-bridge git+https://github.com/tadashi-aikawa/mkdocs-obsidian-bridge mkdocs-awesome-nav mkdocs-backlinks-section-plugin mkdocs-git-revision-date-localized-plugin mkdocs-git-authors-plugin mkdocs-glightbox mdx_truly_sane_lists mkdocs-open-in-new-tab EOF cat > docs/.nav.yml << 'EOF' nav: - index.md - サンプル.md EOF cat > docs/index.md << 'EOF' Hello MkDocs & Obsidian !! - [[サンプル]] EOF cat > docs/サンプル.md << 'EOF' ## Callout > [!info] > INFOのCallout EOF python -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ファむル構成は以䞋の通りです。 ```console $ tree . ├── docs │ ├── index.md │ └── サンプル.md ├── mkdocs.yml └── requirements.txt ``` 䜜成が終わったら以䞋のコマンドでサむトを立ち䞊げたしょう。 ```console cd mkdocs-sample git init && git add . && git commit -m "Initial commit" source .venv/bin/activate mkdocs serve ``` 今回は觊れたせんでしたが、デプロむするサむトのビルドずロヌカル起動は以䞋のコマンドで実行できたす。 ```console mkdocs build python -m http.server -d site ``` # たずめ 以䞋の条件を満たす[[MkDocs]]プロゞェクトのベヌス構築方法を玹介したした。 - [[Obsidian]]や[[obsidian.nvim]]で快適に管理できる - クロヌズドにデプロむ可胜 - 無料 - 仕事にも䜿える なお、[[Obsidian]]や[[obsidian.nvim]]で線集するずきは `docs` を[[Vaultルヌト]]にした方が色々ず郜合が良いず思いたす。