ブログをPelicanからNikolaに移行

カテゴリー:  Tech タグ:  blogging nikola
/images/nikola.webp

BlogシステムをPelicanからNikolaに移行しました。 以前にも検討していた のですが、特にPelicanで困っていたことがあった訳でなく、何となく移行してしまいました。

Nikolaとは?

Nikola ですが、以前に書いているのでそのまま引用します。

Nikola とは Pelican と同じく Python製の静的ジェネレータです。 Nikola の Blog を確認する限り、最初のバージョンのリリースが 2012年3月ごろの ようです。Pelicanのリリースノートを見ると最初のバージョンが 2010年なので、 Pelican より後発になります。

Python製なので、Pelican同様 reStructured Textが扱えます。というか、デフォルトが reStructured Textです。Markdown 記法も、もちろん扱えます。 Nikolaの特徴としては、 標準でサポートするファイル形式の豊富さです。 Jupyter Notebook、 HTML、PHP、 その他 Pandocが扱える形式であればインプット として扱えるようです。

また、プラグインを使えば、AsciiDoc、 BBCode, Org-Mode, Textile, WorkPress Posts 形式にも対応できます。

Pelican から Nikolaの移行方法

ブログの記事については、 Markdownか reStructuredTextで記述しており、 PelicanもNikolaも両方サポートしてるので、ほぼ問題なく移行できました。 例外は、以下の2点だけででした。

  • Pelicanではプラグインを使って html というディレクティブを使って 生のHTMLを記述していましたが、Nikolaではそういうプラグインは存在せず、 raw ディレクティブ で オプションとして htmlと指定すればよい。この 書き換えが必要。

  • PelicanとNikolaではメタ情報の記述方法が異なるため書き換えが必要。

メタ情報ですが、Pelicanでは reST docinfoの形式で以下のように記述されます。

:date: 2020-04-20 23:56:11
:tags: pixel4, mobile
:category: Gadget
:slug: pixel4-review
:summary: Essential Phoneが動かなくなってしまったので、Pixel4を買いました。

NikolaではreStructureTextのコメント形式を取っていて以下のような記述に なります。

.. date: 2020-04-20 23:56:11
.. tags: pixel4, mobile
.. category: Gadget
.. slug: pixel4-review
.. summary: Essential Phoneが動かなくなってしまったので、Pixel4を買いました。

Nikola はPelicanのメタ情報形式もサポートしているので、 conf.py の META_FORMAT に "pelican" と設定すればよかったのですが、混在している のが気持ち悪かったので力技で全記事の形式を書き換えました。

また、記事ごとに生成される slug も似たような形式だったので、少しの変更で 各記事は以前と同じURLで生成されているはずです。

唯一ハマったのが、 .doit.db.db です。 Nikolaが生成するもののようですが、 giboで作成した .gitignoreが ".doit.db" となっており、うまくomitできずにリポジトリに含まれて しまったため、Netlifyで生成すると checksumエラーが出てしまい、 しばらく悩みました。

移行してみて

移行してみた感想です。

まずPelicanではプラグインを使って実現していた機能が、Nikolaでは組込まれて いる場合が多く、メンテナンスが楽になる予感がします。

また CLI指向で 記事執筆もコマンドが用意されているので、コマンド指向の 人としては気分がよくなります。(あくまで気分の問題です。効率的には 記事ソースをEditoで開いてテンプレートを開いてくれるだけなので、Vim の機能を使って自動化している現状とそれほど変りません。)

残課題

まずテーマですが、 Hugo用の HemingwayというテーマをNikola用にポートした ものを適用しています。 理由は、CSSのベースが bulmaであることと、日本人の 方がオリジナルを作成しているからです。

以下の2点を今後やりたいと思います。

  1. 最新のBulmaへの対応。Hemingway自体は既に作者の方がもうメンテしないと宣言しているので。

  2. Hemingwayに過去記事のリンクが追加されるなど改変がされていますが、以下のような対応を 追加したいと思います。

    • 年や月ごとのアーカイブページの作成

    • Google Analytics対応

    • Google Adsenseなどの追加機能

    • CSSなどのカスタマイズ対応

  3. 記事のURLは変っていないはずだが、 Disqusの以前のコメントが記事に反映されない 不具合あり。Disqus上でもコメントの元記事のURLからNikolaで生成した記事への リンクは正しいので何故表示されないか疑問です。

コメント

Comments powered by Disqus