Dropbox Sync
このブログのひとつひとつの記事は、markdown形式で書かれたテキストファイルが元になっている。 記事を追加したい場合はmarkdownでテキストを書き所定のフォルダに置くだけ、というシンプルな仕組みで、これはjekyllというブログエンジンを参考にしている。
またこのブログでは、ローカルと公開サーバで同じフォルダを共有していて、アップロードというものを意識しないような環境をつくってある。ローカルに置かれたファイルはDropbox経由で自動的にサーバ側に同期され、ブログとして公開される。
すべてのポストは公開するかどうかを示すpublishedフラグを持っており、それがtrueでないと公開されないため、書いてる途中でフォルダが同期されても公開されることはない。公開したい時にはフラグをtrueにして保存する。数秒まてば同期が完了し、記事が公開される。
僕が行うことは、記事を書いて保存するだけ、である。 ファイル名や書式の規則があるが専用のコマンドで自動化されてる。このあたりについてはまた書きたいと思う。
記事を書いたり公開するのがめんどくさいとブログを続けることが難しくなるので、簡単なことはとても大事だと思ってる。 もちろん簡単だから続くというものでもないけれど。
おおまかな流れ
- ローカルで記事を書き、postsフォルダに保存する
- [自動]Dropboxによってサーバ側に同期される
- [自動]watchrによりキャッシュ削除の処理が走る
- [自動]新しいポストが公開される
- publishedフラグがfalseなら公開されない
フォルダ監視
サーバ側ではwatchr
というツールでフォルダの変更監視を行なっている。パフォーマンスの観点からポスト一覧をキャッシュしているので、フォルダの内容に変化があった場合にキャッシュクリアの処理を走らせる必要があるからだ。
(僕が使ってるのはruby製のwatchrだけど、nodeにも同名で同目的のものがありそちらのほうがより今風な解決策かもしれない)
watch('source/posts') {|md| system('php artisan pochika:clear_cache') }
Dropboxアカウント
普段使っているDropboxのフォルダを全部サーバに同期する必要はないので、ブログ専用のアカウントを作って、その中のフォルダを本アカウントに共有して使用している。
Dropboxのlinux版を使うと簡単にフォルダ同期が実現できるので、色々と利用できそうである。
コマンドラインで Dropbox をインストールする https://www.dropbox.com/install?os=lnx