$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

Kansai.pmに行ってCinnamonというデプロイツールについて発表しました

Kansai.pm 第15回ミーティング on Zusaar に参加して来て、前作ったデプロイツールであるCinnamonについて発表して来ました。

発表したこと

以前capistranoの奥深さに毎回ハマっているのを怒りを覚えて、もっとシンプルなデプロイツールであるCinnamonをantipopさんと一緒に作ったのでその発表をしてきました。それなりに好印象っぽかったので、発表してよかったです。

スライド

デモで使ったサンプルコード
https://github.com/shibayu36/cinnamon-deploy-sample

簡単に紹介すると

  • CinnamonはMinimumというのと、Role x Taskというのを思想として持っている
    • Minimum : デプロイの方法は実装しない。複数のサーバに定義したコマンドを発行するインターフェースだけ提供
    • Role x Task : 定義したサーバ群と定義したコマンドを組み合わせて使う

f:id:shiba_yu36:20130224103756p:plain:h300

  • 設定は例えば以下のように書いて、cinnamon production updateというコマンドを発行する
use Cinnamon::DSL;

set user => 'johndoe'; # required
set application => 'My-App'; # custom value

role production 
    => ['production.host']; # declare servers

task update => sub {
    my ($host, @args) = @_;
    my $deploy_to = '/home/app/' . get('application');
    remote {
        run "cd $deploy_to && git pull";
    } $host;
};
  • 「サーバ群を別の管理ツールからAPI経由で決めたい」とか、「開発環境は違うbranchをデプロイ」とかは簡単に出来ます

Kansai.pmの感想

今回結構盛り上がっていた。確か35人くらいは来てたと思う。普通にすごかった。

個人的には@yusukebeさんの「Webサービスのつくり方」のつくり方と、@goccy54さんのコピペ検出器についてというのが非常に興味深かった。

自分もブログとかを書くのとかが好きだし、機会があればいろんな人に届く書籍という形で何かを出版したいなーという気持ちがあったので、その流れを知ることが出来たのが非常に参考になった。あと「ボケて」のデプロイにCinnamonが活用されていると聞いて普通に驚いた。今並列処理とか作れていないので、デプロイ大変になったらpull requestお待ちしています。

あとgoccy54さんのコピペ検出器は、そのタイトルの軽さを裏切って、むちゃくちゃ面白い内容だった。Perlのparserを一から作りなおして、その言語処理系を使って、賢いコピペ検出器を作って、さらにそれを使ってどのネームスペースがひどいか、まで検出していた。そういえば前回のYAPCで、Perlと出会い、Perlを作るが突然上がってきて話題になってたことを思い出したけど、きちんとこういうものが業務で役立つものになっていてすごい。


あと懇親会ではyusukebeさんとMVCとかValidationの話をしたり、goccy54さんとコードレビューの話とかはてなとかmixiの話をした。普通に発表するとこんなかんじで話題が出来て懇親会でも話せるのが良いですね。


今回のKansai.pmは面白かったので、とりあえずKyoto.pmも再開しようかなという気持ちになって来ました。突然Tech Talkというのも大変なので、作りたいものも出来たし発表が必須でないハッカソンでも開催しようかなぁ。