ウンコード・マニアは、perlでできてます
去年の夏に、友人達とのチャット上で冗談で出したアイデアを実装してWebサイトとして公開したところ 結構なアクセスがあり、日本のプログラマには知られたサイトになるという自分にとっては大事件がありました。
さくらインターネットのVPSで運用している自分のサイトは、表示できなくなる事態が発生したりして 嬉しい悲鳴を上げたのも懐しいです。結局はデバッグでログを出しつづけてたのでディスクが足りなく なっただけだったのですが(お粗末)
1年以上たってサイトはアクセス数も落ち着いてますが、ウンコード・マニアは、今も運用中です。 ウンコード・マニアの中身について書いてみようと思います。
インフラ
さくらVPS(980円)
Gigagine砲にさらされたときは、殆ど息をしてなかった時間もありましたが、 突発的なパフォーマンス改善を行なってなんとか乗り切れました。 2012年8月が一番アクセス数が多かった月で、100万PVでした。
OS
Ubuntu 10.04
さくらVPSのデフォルトは、CentOSだったと思うけど、最初からUbuntuをインストールしました。 まだ、UbuntuインストールがさくらVPSで保証外だった頃だったと思います。
プログラミング言語
perl(/usr/bin/perl)
終わったとかオワコンとか、いろいろ言われてるperlですが、好きなプログラミング言語です。
WAF(Webアプリケーションフレームワーク)
rubyのsinatraに影響を受けている、perlのシンプルなWAF。
テンプレートエンジン
高速なテンプレートエンジン。なんと言ってもKolonシンタックスが書き易くて素晴しいです。
Webサーバ
APサーバ
ストレージ
KVS(Key Value Store)。mongodbもいろいろな評判があるようですが、1インスタンスでの運用では特にトラブルも起こらず、使い易いKVSでした。
セッションストレージ
キャッシュ
運用開始当初の突発的なパフォーマンス改善では、威力を発揮してくれました。
デプロイ
デプロイはcapistranoを使ってます。しばらく触ってなくて構成を忘れてても、 cap production deploy でデプロイが完了する安心感は、強い。
デザインテンプレート(フロントエンドフレームワーク)
敢えて全然カスタマイズせずに、デフォルトのデザインで導入しちゃいました。 bootstrap2が出た頃だったようです。
javascriptライブラリ
bootstrapもjQueryベースです。 自分で記述する部分もjQueryベースです。
依存するPerlモジュールなど
依存関係は、後で面倒なので、dependenciesというファイルに記述してました。 sh dependenciesとすれば、依存モジュールがインストールできるようにシェルスクリプト形式で書いてます。
cpanm Dancer cpanm Dancer::Plugin::Auth::Twitter cpanm Dancer::Plugin::ValidateTiny cpanm Dancer::Plugin::Mongo cpanm Text::Xslate cpanm HTML::FillInForm::Lite sudo apt-get install libcrypt-ssleay-perl cpanm Dancer::Logger::Log4perl cpanm Module::Refresh cpanm Text::Markdown cpanm HTML::StripScripts::Parser cpanm Dancer::Session::Memcached cpanm Dancer::Plugin::Memcached cpanm DateTime::Format::MySQL cpanm XML::FeedPP cpanm DateTime::Format::W3CDTF cpanm Number::Format
まとめ
ウンコード・マニアのアイデアが出てからリリースまでの期間は2週間程度でしたが、 リリース前に数日寝かせたので、実際の開発にかかった時間は1週間くらいだったと思います。
投稿されるコードのライセンス関連でトラブルを引き起こす可能性は皆無とは言えなかったので そのあたりは、投稿時やaboutページなどで注意書きを追加するなどの対策をしました。 そのおかげもあってか、ユーザの方々が楽しんでもらう場を作ることができたのではないかと思ってます。
Twitter APIの移行によって、Twitterアカウントのアイコン表示が簡単にできなくなってしまった際には、
@katan_tさんによる
Profile Image API For Twitter
を使わせてもらえて、助かりました。ありがとうございます。
あと、結局実現しませんでしたが、某出版社から、書籍化の相談を受けましたが、諸問題が解決せず 書籍化には至りませんでした。ただ、書籍化の相談を貰えたことが嬉しかったです。
今後も、お仕事の息抜きに、ウンコード・マニアを楽しんでもらえれば嬉しいです。