1. PelicanでHTML生成後に任意の置換をするプラグインを作りました

    Replacer

    PelicanでHTMLが生成される度に起動し、生成後のHTMLファイルに対して任意の置換を行うことのできるプラグインを開発しました。

    このブログはreStructuredTextからHTMLをPelicanを使って生成しています。reStructuredTextでは、reStructuredTextから生成されるHTMLタグに対して、自由にCSSのクラスを付与することができません。(一部のディレクティブはCSSを受け取ることが可能です。)任意のCSSクラスを付与できなくても基本的には問題がないのですが、今回、Tableタグに対してTwitter Bootstrapのクラスを付与したかったので、プラグインを開発して対応することにしました。 Twitter bootstrapに特化したプラグインではないので、置換で対処可能なら、他のことにも使えます。

    成果は ReplacerとしてGitHub で公開します。

    ReplacerはPelicanの設定ファイルで置換前と置換後の組のタプルをリストやタプルで受け取ります。HTMLが生成される度に生成されたHTMLを読み、置換を行うというとてもシンプルな仕組みです。

    類似プラグイン

    ingwinlu/pelican-bootstrapify というプラグインを見つけましたが、このプラグインはMarkdown用なためか、私の環境では動作しませんでした。Pelican側の変更があったのかは分かりませんが、そのプラグインでは現在は置換ができないように見えました。 このプラグインは任意の置換を目的としたものではなく、あくまでBootstrapのために置換を行っています。

    続きを読む

  2. Web APIの返すJSONはどんなフォーマットが好まれるのか

    Web APIの返すJSONのフォーマットは、そのAPIを利用するアプリケーションの開発の難易度(そしてモチベーション)に影響を与えます。ここではメジャーなWeb APIの返すJSONのフォーマットを比べます。

    これらのAPIについて調べました。

    • Twitter
    • Facebook
    • Google

    TwitterもFacebookもGoogleも似ていますが違うフォーマットを採用しています。

    続きを読む

  3. なぜVagrantを使うのか

    Vagrantとは

    VagrantVirtualbox やその他仮想マシンの上に開発環境を自動的に構築するためのツールです。Vagrant自体は仮想マシンの管理をするもので、環境構築はChefやAnsibleといったインフラの構築ツールを使用します。 VagrantはOS X、Windows、Debian系LinuxとRPM系Linuxを公式にサポートしています。私は開発時にVagrantとAnsibleを使用して開発環境の構築を自動化しています。

    Vagrantは仮想マシンを利用しますが、ホスト(仮想マシンを動かすOSです)とゲスト(仮想マシン内で動かすOSです)の間でディレクトリを共有できます。ホストでの編集は即時にゲストに反映されるため、ホスト側でいつも通り、お気に入りのIDEやエディタを使用して開発することができます。実行環境のみをゲストに移すのです。特にWebアプリケーションは本番ではLinux系OSの上で動作させるものが多いです。開発時から本番と同じ、もしくは近い構成を使用することは、運用時のトラブルを軽減します。

    ここではゲストOSにLinuxを使用することを想定しています。

    Vagrantを使うメリット

    「自分の環境では動いた」からの開放

    Vagrantを使うと開発環境を一から自動的に構築できるため、多人数で開発する場合に、全員にまったく同じ環境を提供することができます。これにより、Aさんの環境では動作したが、Bさんの環境では動作しなかった等という問題が起きにくくなります。

    いつでもクリーンな環境で開発できる

    「このパソコンではサービスAしか開発しない。サービスBを開発するときは別のパソコンを使う。一サービス、一パソコン。」ということはあまりないと思います。複数のサービスを同じパソコン内で開発をすると、それぞれがお互いに何らかの影響を与えてしまうことが多々あります。例えば、ポートが被ってしまった、など。仮想マシンを利用するVagrantはこの問題から開放してくれます。サービスAとサービスB、それぞれで別の仮想マシンをVagrantから扱えば良いのです …

    続きを読む

2015 - 2017 (c) 成瀬基樹