Pelicanで困ったこと

このブログはPelicanで出来ています。Pelicanは静的なブログを生成するブログツールなので、WordPressのような動的にブログを出力するブログツールと違ったクセを持っています。Pelicanでブログを運営するにあたり経験した不便なことを書きますが、これはPelicanだけでなく他の静的ブログツールにも当てはまることだと思います。

この記事はPelicanについて少しネガティブなことを書いっていますが、Pelicanが素晴らしいブログツールであることことに違いはなく、私は未だにPelicanを使い続けています。

Webブラウザ上で記事を書けない

私がなぜPelicanでブログを運営し始めたのかと言うと、reStructuredTextで記事を書け、自分の好きなエディタを使用することができるからです。今でもその恩恵に預かっていますが、たまに、Webブラウザから記事を編集できたらなと思うこともあります。誤字脱字を見つけたときなど特にそうです。いちいちパソコンを起動して記事を修正し、アップロードし直さねばなりません。ブラウザから編集ができれば、スマートフォンから修正することもできたでしょう。

技術的にはこれを解決するのはできます。Pelicanはその性質上、Gitで記事を管理することが容易です。このブログもGitで記事を管理しています。そこで、記事をさらにGitHubやBitbucketで管理します。GitHubやBitBucketにはGitで管理されているファイルの更新を任意のWebサーバに通知する機能を持っています。この通知を自前のサーバで受け取ることにより、git pullからブログの生成、アップロードまでを自動で行う仕組みを作れば良いのです。 ただ、WordPressやその他のブログツールと比べて敷居が高いというのは否めません。せっかく静的ファイル配信サーバだけで動作できるPelicanのメリットの一部を失ってしまうという見方もできてしまいます。

記事のアクセス順表示ができない

幸いにもこのブログはただの技術ブログなので、ブログ内で人気記事を表示したいという強くありません。しかし2ちゃんねるまとめサイトのように、ブログにアクセスした人にそのブログの他の記事もアピールしたい場合には死活問題になるでしょう。

これも技術的に解決することはできますが、より手間がかかります。URLを渡すとアクセス数をカウントアップしていくサーバサイドのプログラムを用意し、記事にアクセスがある度にJavaScript経由でそのプログラムにアクセスします。さらにJavaScriptで現在の人気記事を取得し、動的にHTMLを組み立ててサイドバーにでも表示しましょう。致命的ではないと思いますが、JavaScriptが動作する環境でしか使えない機能になってしまいますね。 人気記事の順位がリアルタイムで更新される必要がないのなら、記事生成時にPelicanのプラグイン(おそらくこの目的に合致するプラグインは存在しないので、自作する必要があります。)経由でサーバに問い合わせ、HTMLを静的にすることができます。

どちらにしても、動的ブログほどうまくこの機能を実現するのは難しそうです。これが重要になるようなジャンルのブログでは静的ブログ生成ツールはおすすめできなさそうです。

自由にHTMLタグを書けない

reStructuredText(Markdown)をHTMLに変換するという性質上、HTMLについて完全に自由ではありません。テンプレートをHTMLで書く記事以外の部分についてはこの限りではありません。 記事本体についてはreStructuredTextで行える表現が基本的な限界になります。これは プラグインで解決しました 。それでも完璧ではありません。多くのブログツールはWYSIWYGエディタによって生成されたHTMLの一部だけど任意のHTMLに手動で置き換えることができます。Pelicanは毎度すべての記事を生成し直します。つまりPelicanが生成したHTMLに直接手を加えて対応しようとした場合、新しい記事を書く度にHTMLの書き換えを行う必要があります。これは現実的ではありません。

reStructuredTextにはHTMLを直接記述する方法としてrawディレクティブにHTMLを渡すことができます。これはどうでしょうか。私の考えではこれは最終手段です。多用したいものではありません。

コメント

2015 - 2017 (c) 成瀬基樹