tkak's tech blog

This is my technological memo.

アフィリエイトソンに参加してきた。

Web APIを使ったECサイトを開発してアフィリエイト収入で小遣い稼ぎをしましょうというコンセプトのアフィリエイトソンなるイベントに参加して来ました。

【楽天・ヤフー・リクルート3社共催】第1回アフィリエイトソン -開発して稼ごうお小遣い!-(4/5,6) | 集客ならイベントアテンド

いやぁ、チームで開発するって楽しいですね。
日頃会社ではOps側の仕事が中心なので、Devの人と一緒に開発ができるなんてとても新鮮な経験をさせていただきました。特に今回perlで開発したんですが、perlフレームワークとか全然知らなくて、とても得るものが多かったです。

学んだこと、ちょっと残しておきます。

Perlの開発環境

今回ノープランでハッカソンに参加したので、Perlの開発環境を整えるところからスタートしました。
事前にやっておけよっていう話ですが...^^;

perlbrew+perl

まずperlbrewとperlをいれます。
perlbrewは複数のバージョンのperlを切り替えるためのツールです。rubyでいうrenv+ruby-buildとかrvmとかと同様のものです。
defaultでは、~/perl5/perlbrewにインストールされます。

$ curl -kL http://install.perlbrew.pl | bash
  • .zshrc にsource ~/perl5/perlbrew/etc/bashrcを追加する。
$ source .zshrc
$ perlbrew init
$ perlbrew install perl-5.16.2 --as perl-5.16
$ perlbrew switch perl-5.16.2

この辺を参考にしました。
安定的な Perl アプリケーション運用のための perlbrew 運用テクニック - tokuhirom's blog.

cpanm+carton

次にcpanmとcartonをいれます。
cpanmは、CPAN::Shellの次世代版みたいなもので、より省メモリで動作するそうです。
cpanmについてはここを参考にしました。
perlモジュールのinstallにcpanmを使う|perl|@OMAKASE

$ perlbrew install-cpanm

cartonは、rubyでいうbundlerのようなものです。
プロジェクトごとにモジュールをわけたり、モジュールのバージョンを環境ごとにあわせたりすることができるので、便利です。
モジュールは、project/local/lib/perl5/配下にインストールされます。
cartonについてはここを参考にしました。
cpanm ってなんですか? carton ってなんですか?利点はなんですか? - tokuhirom's blog.

$ cpanm Carton
$ cat cpanfile
requires 'Plack', 0.9980;
requires 'Starman', 0.2000;
$ carton install
$ ls carton.lock ## installに成功するとできる。
$ carton exec -Ilib -- plackup -p 8080 myapp.psgi

carton でインストールされたモジュールで実行できるものは、carton exec で実行できます。
オプションは、"--"のあとに指定します。

Webサーバとフレームワーク

今回perlで開発したのでPlackとAmon2を使いました。

$ carton exec plackup app.psgi -- --port 8080 -R

memo
PSGIという仕様の実装版がPlack。
plackupでサーバを起動します。
起動するときにapp.psgiファイルを指定します。
--portでポートを指定することができます。
-Rで、実行配下のファイルの更新をチェックして、サーバの動作に反映してくれます。

フレームワークのAmon2に関してはまだあまり知らないので、後日追記します。

MongoDB

今回DBまわりは、MongoDBを使いました。
MongoDBは、クエリにJSONファイルを使えるので、テーブル設計とか意識せずにとりあえずデータをなんでも突っ込んでおけて便利です。スタートアップとかに向いてるみたいです。

セットアップはここを参考にしました。
Installing MongoDB — MongoDB Manual 2.4.1

あとがき

残念ながら、昨日一日ではサービスをリリースすることはできなかったんですが、
隙をみてなんとかリリースするところまでは持って行きたいです。
そして、お小遣い稼ぎできたらなぁなんて考えてます。

開発もできて小遣い稼ぎもできるなんてなんて素晴らしいイベントだろう。
もし次回があればまた参加したいですね!