ウンコード・マニアは、perlでできてます

去年の夏に、友人達とのチャット上で冗談で出したアイデアを実装してWebサイトとして公開したところ 結構なアクセスがあり、日本のプログラマには知られたサイトになるという自分にとっては大事件がありました。

ウンコード・マニア

unkode-mania

さくらインターネットの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アプリケーションフレームワーク)

Dancer

rubyのsinatraに影響を受けている、perlのシンプルなWAF。

テンプレートエンジン

xslate

高速なテンプレートエンジン。なんと言ってもKolonシンタックスが書き易くて素晴しいです。

Webサーバ

nginx

APサーバ

Starman

ストレージ

mongodb

KVS(Key Value Store)。mongodbもいろいろな評判があるようですが、1インスタンスでの運用では特にトラブルも起こらず、使い易いKVSでした。

セッションストレージ

memcached

キャッシュ

memcached

運用開始当初の突発的なパフォーマンス改善では、威力を発揮してくれました。

デプロイ

capistrano

デプロイはcapistranoを使ってます。しばらく触ってなくて構成を忘れてても、 cap production deploy でデプロイが完了する安心感は、強い。

デザインテンプレート(フロントエンドフレームワーク)

bootstrap

敢えて全然カスタマイズせずに、デフォルトのデザインで導入しちゃいました。 bootstrap2が出た頃だったようです。

javascriptライブラリ

jQuery

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
を使わせてもらえて、助かりました。ありがとうございます。

あと、結局実現しませんでしたが、某出版社から、書籍化の相談を受けましたが、諸問題が解決せず 書籍化には至りませんでした。ただ、書籍化の相談を貰えたことが嬉しかったです。

今後も、お仕事の息抜きに、ウンコード・マニアを楽しんでもらえれば嬉しいです。

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.