自分用の技術メモページを用意する
自分用の技術メモやレビュー記事を書き散らかすサイトが欲しいなと思ったもののこのブログのように wordpress はもういいかなとも思ったのが事の発端。
技術系メモは私も検索で良く探して参考にするが、そういった利用形態に対し時系列が強力な Blog というのはあまり筋が良くは無い。新しい投稿にさほど意味があるわけではなく、全ての情報がフラットに並んでいたほうが良いのではないかと考えるからだ。
それとは別に最近は markdown で書くのがいいなと思っている。
github かぶれというわけではないし markdown が殊更優れた記法とも思ってはいないが、素のテキストを読んでもドキュメントとして成り立っているところが良いと思う。なので組版のためにやたら装飾するのは好きでは無い。
テキストでガンガン書きためているだけでなんとなく公開できるようなページになっていたくらいがちょうど良い。
そんな前提で markdown でコンテンツ作成ができるシステムを色々を眺めていた。
■ wiki はどうか
– clowi
markdown でドキュメントを作成できる wiki システム。
良くできていてイントラシステム内で仕事に使う wiki を新規に立てるならこれかな、と思う。
多人数でログインして更新、閲覧といった目的には適しているのだけれども、一人で更新パブリックに公開といった向きにはちょっと合っていない感じがしたので今回の目的としては見送ることにした。
DB が mongo と redis で割と規模が大きくなるのとドキュメント DB にストアするところがちょっと好みでなかったのもある。
そう、Blog システムから抜け出したかったのは DB 嫌いってのもある。将来システムが更新できなくなったときにデータだけ可視な状態で残っていて欲しいのだ。
まあ、DB から頻繁に export していれば良い話でもあるけれども。
ちなみに clowi には機能拡張 fork である clowi-plus もあってこっちも魅力的である。
■ 記事データの持ち方について
なんとなく自分が不満を持っていたり追求しようとしていることが記事データの持ち方についてな事がわかってきた。
-
将来的にシステムが無くなってもデータが残ること
-
特殊なシステムで管理されていないこと
-
書いたモノが別なシステムでも読めること
-
できるだけ簡単にいろんな手段で書けること
-
記法も手頃であること(今現在だと markdown)
ところで最近はプログラミング言語の Elixir にご執心でサーバーサイド側はこれで書きたいとか実際に小物を書いてみたりとかしている。
なので最初は Elixer で書かれた Blog システムであったり markdown で書ける Blogシステムといった探し方をしていた。
そんな中見つけたのが Elixer で書かれた Blogit というコードであり、これを実際に Blog にしたシステム BlogitWeb であった。
この Blog エンジンで面白いなあと思ったのは記事のストレージとして git を利用するところである。github とかに公開のリポジトリを作成してそこに markdown ファイルを commit していく、Blogit は定期的に git をポーリングし、更新された記事があったら手元に pull するといった流れ。
元々公開している記事なんだから github とかに置いてあっても全然問題無いし、むしろそこに残り続けているというのは魅力的に感じる。そして記法も markdown なのでそのまま閲覧もできるし、他のシステムでレンダリングすることも容易である。
この Blogit のエコシステムは非常に感銘を受け魅力的になのだけれども、実際に動かしてみると BlogitWeb をそのまま使うのはしんどいかなという感じでもあった。今回の目的は Blog ではないのだし。
■ markdown ベースの CMS
git に markdown で記事を書きためそれをサイトとして展開するといったフローにすっかり心奪われ、これでいくぜという気満々である。しかしてそれは WEB フレームワークではないので、なんかしてサイトにしないといけない。
しかし git から記事を持ってくるとなると、ブラウザから記事を投稿するような一般的な Blog や Wiki のシステムから外れる事でもある。
そういった時にぴったりなのが静的ページ作成型の CMS であろう。
CMS というと定義が曖昧だけれども、ここでは手元の markdown 記事を元データとして CMS フレームワークでコンパイルすると静的 HTML ベースのサイトデータを出力するようなシステムということにする。この形式だと手元でコンパイルした結果を公開WEBサーバーにデプロイ(転送)して公開といった手順が必要になる、
ビルドしてデプロイについては今時の CI システムを使えば良く、git に commit したらそのたび WebHook でコンパイル&デプロイという一連の流れを構築できるだろう。ということは構築後は手元のリポジトリで記事を書いてそれを commit&push するだけで良いとなる。ますます良さそうだ。
静的ページの CMS (もしくは Blog) で markdown 形式なものを調べると Hexo(nodejs) / Jekyll(ruby) / Hugo(go) などが見つかる。それぞれ特色があるので好みで選択する感じか。個人的に使うとしたら Hugo かなと思っている。
いわゆる WEBエンジニア系の人たちを見ているとこれら静的ページ型 CMS で構築されたページも Blog というらしい。最近はコメント欄も無くて良いよねとかタグとか無くても良いよねとか色々変わったもんだ。
■ こじんまりとまとめる
CMS を使うとか色々考えていたけれども自分が作りたいページはそんなに気合いの入ったモノではないしなんならベタテキストでも良いほどである。なのでもうちょっとシンプルにまとめることにした。
caddy という httpd サーバーがある。実行ファイル一つで簡単に使えるサーバーなのだけれども、この httpd サーバーは markdown ファイルを直接配信する機能を要しているのだ。md 拡張子を持つファイルは caddy 内部で html に変換されて配信される。
git リポジトリ内の markdown ファイル群を caddy で配信、なんかもうこれで良いんじゃないかなあという気分になってきた。
まあちょっとは html テンプレートや css を用意しなければいけないけれども、それにしても手を入れても良いし抜いても良い。
そんなこんなで git リポジトリと caddy を軸に作ったしょぼいページが「ふみふみキック-スクラップブック」となる。更新は後々。
リポジトリを html 公開する仕組みを docker コンテナとしてまとめた構成スクリプトが
https://bitbucket.org/rerofumi/mdpage-container
実際のドキュメントリポジトリが
https://bitbucket.org/rerofumi/fm-scrapbook
この仕組みで細々と更新していこうと考える次第。
このお話はここまで。