高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

PicoでのWebサイト作成

ようやく記事にできるところまで来たので掲載。

以前もテキストベースのCMSでのサイトリニューアルについていろいろやっていましたが、現在少しずつ自宅で準備中。データベースのないCMSなので自宅環境での試験が楽で良いですね(利用しやすいようにフォルダのハードリンクを作成していろいろ結びつけて使っていますが)。

f:id:TakamiChie:20140710172500p:plain

Pico

実際使ってるのは、以前紹介したCoqooでなく、その派生元のCMS、Picoというものです。

いろいろ見てみた感じ、CoqooはPicoに存在するいくつかのプラグインを結びつけたものであるという感じなのでしょうか。プラグインを設定すれば、Picoでも結構Coqooと同じことが出来る*1。とりあえずしばらくこのまま様子をみてみようかな と。

さて、そんなPicoですが。Coqooの開発者ブログに「ブログ以外には推奨しない」などと書いてあるだけあって、固定サイトに使うには結構工夫しなければいけないところが多いです。とりあえず現時点で三つほどプラグインを作成しました*2

ただ、プラグインテンプレートエンジンTwigの機能を活用すれば、まあなんとかできなくはないように思えます。今後記事が増えていくにあたってどうなるかが気になりますが、まあ、やれるところまではやってみようかな(テンプレート自体が全くの無駄になってしまうことは、なさそうですし)。

気になるPicoの動作速度

ソースコードを見る限りだと、Picoは毎呼び出しごとに、contentフォルダ配下の全mdファイルを読み込んで処理しているようです(pico.phpのget_pages()呼び出し処理あたりを参照)。

中を見ると、とりあえず全てのファイルに対してMarkdown変換処理を行ったり、メタデータ(全ファイル冒頭のコメント部分)の読み込み処理を行ったりしている模様(プラグインでget_pages()メソッドを実装した場合、それらファイルでも適宜再読込処理が入る)。こんなに大量のファイルを読み込んで処理して、実用的な速度が出るのかな?と不安になります。


いちおう使用開始する前に、index.mdを100個作って読み込みしてみて、それでも1秒くらいで実行が終わってたのを確認しましたし、固定サイトならまだなんとか大丈夫か?という気もしますが、今後スクリプトによる外部サイトの記事読み込みも考えているので、ちょっと不安ですね。

まあ、このへんは固定サイトよりも記事数が多くなりがちな、ブログ向けのCMSなはずだし、とりあえずしばらくは問題にならないのであろう・・・ と、思うことにしています。将来的には(Picoを改造するなりして)ツールを使って静的HTMLをはき出すような仕組みにしたほうがよさそうですね。


やるべきこと

とりあえずメモも含み

  • 記事中に画像を埋め込み表示する機能の追加(プラグインで対応できそう)
  • 意味段落を解釈し、形式段落と区別して表示できるようにする(プラグインで対応できそう)
  • 特定ディレクトリ配下のファイルのみを絞り込み表示する(Twigの機能を使えば出来そう)
  • slideshareGoogle Mapなどの埋め込み表示(プラグインで対応できそう)
  • Evernoteなど外部サービスのデータから記事を生成して表示(別にMarkdownを出力するようなスクリプトを作れば良さそう)
  • 複数のリンクを持っている記事の表示(運用対処でどうにでもできそう)
  • ダウンロード可能なファイルを持っている記事の表示(運用対処+プラグインの作成)
  • 記事の日付順・指定インデックス順の並び替え(プラグインで対処可能)

ちょっと手間はかかりそうですがとりあえず大筋はわかってきたので色々やってみようかな と。

*1:ただしプラグインシステムによってある程度処理時間が犠牲になってる部分もあるので、多少動作速度が犠牲になっているものと思われます

*2:プラグインについては、落ち着いたらどこかに公開しようと思います