シンプルなCMSとしてMDwikiがそこはかとなく使いやすい【#np2020】

タブレットでレシピを見る人のイラスト


前回、GitHub Wikiを使って店舗用マニュアルを作ってみました。

GitHub Wiki を使って店舗の作業マニュアルを作成する | mutter


短時間で構築した割には好評で、情報を見やすく集積できたと自分でも思うのですが、一方であくまでリポジトリのWikiであるため、余計な情報がたくさん表示されてしまいます。また共同執筆はあまり考慮していないテキストなので、完全なWikiである必要はあまりありませんでした。Wikiを公開するためだけにリポジトリをパブリックにするのも少し気になるところです。
(非公開情報をpushしなければいい話ですが)

そういったことを鑑みてサーバに入れられるシンプルなWikiはないかなあと探して行き当たったのが「MDwiki」でした。

MDwiki – Markdown based wiki done 100% on the client via javascript


サンプル

https://nobodyplace.github.io/demo/mdwiki/




特徴

このソフトウェアの最大の特徴は、HTMLファイル1ファイルだけで動作できるという点です。設置例としてはこんな感じで、


MDwiki.html
└  index.md
MDwiki.html#index.md

みたいな形でアクセス出来ます。

「MDwiki.html」を「index.html」に名前変更すれば、

/#!index.md

でアクセス出来ますし、サブディレクトリを以下の様に配置すれば

index.html
├ index.md
└ subdir/
└ page1.md
/#!subdir/page1.md

でアクセス出来ます。
意外に構造に柔軟性があります。1ファイルなのに。
(ただし相対リンクを工夫しなくてはいけない場合あり)


ナビゲーションファイル(navigation.md)を作成すると自動的にページヘッダーと認識して表示してくれたり、デザインテーマを変更出来たり、最低限だけれど、運用するのに十分な機能を備えています。素敵。


こんな用途には向きません

最初に書いたとおり、これは完全なWikiではないので、いわゆる共同編集には向きません。更新履歴も残らないし、ブラウザ上からファイルを更新することは出来ないし、あくまで「markdownで書いたファイルをサーバにアップロードしてWiki風に見せるCMS」といった感じです。

またファイル構造を把握するだとか、テキスト内容を保持するだとかいったことも出来ないのでサイト内検索は出来ませんし、多くの場合リンクは相対リンクで記述する必要があります。もちろんページ名から変換して自動リンクしてもらうとかそういう機能はありません。


少機能を上回る運用のしやすさ

ただ今回のように小さなテキスト群を表示させる分には十分ですし、更新履歴や共同編集に関しては、(非エンジニアに対するハードルは上がるものの)gitで解決出来ます。GitHub使えばブラウザ上での編集も可能だし、検索だってエディタで解決出来ちゃう。

なにより、導入がむちゃくちゃ楽なのがほんと素敵すぎる。一般的なモダンなWikiだと、mongoDB入れたりredis入れたり、Node.js入れたり、いろいろやることがあるんですけど、これはhtmlファイルを1つ任意の場所に置くだけです。まあ本当のこと言うと、BootstrapやjQueryも使ってて、それを圧縮してhtmlファイルに詰め込んじゃってるっていうだけなんですけど(かなりの力技)、だとしても快適。

BootstrapとjQueryを使っていることでわかる通り、スマホでの表示にももちろん対応しています。


そして、GitHub Pagesですよ

ここまで読めばわかると思いますが、静的ファイルだけで構成されている以上、GitHub Pagesでホストできます。適当に配置してpushするだけで、表示出来ます。スゲー便利。

そもそも公式サイト自体がMDwikiで作られていて、GitHub Pages上で動いているので……推奨環境みたいなもんですよね。公式サイトで出来ていることは全て出来ると考えて良いと思います。「Gimmicks」というヘルパーを使えば、動画を貼り付けたり、FacebookやTwitterのボタンを設置したりも出来ますし。

難点があるとすれば、ページロードの遅さかな。なんせ、mdwiki.htmlが338KBもあるので。ただオフラインで使用するのでなければ「mdwiki-slim.html」を使うことで、ライブラリを外部から読み込んで動作を軽量化できます。
(中身見るともっと軽量化できそうですけどね)


自分用のWikiへの採用決定

というわけで、引っ越しに当たってどうしようかなと思ってた自分用のPukiwikiは、MDwikiに引き継ぐことにしました。ほぼ自分1人しか見ないんだし、そんなにページ数無いし、移行は大変じゃないんじゃないかな。良き。



導入にあたり参考にさせて頂いた記事

Markdown を HTML ファイル一つで Wiki っぽく見せる MDWiki が便利な件 – Qiita
【MDwiki】HtmlとMarkdownファイルを置くだけで作成できる!自分専用Wikiツールのご紹介: シーサー渋谷ではたらく技術担当のブログ(SSGブログ)
MDwiki:Markdownベースの超シンプルCMS / catch.jp memo