Hatena::ブログ(Diary)

Blog::koyhoge

2013-03-26

FuelPHP勉強会東京 vol.3に参加してきた

ここ数ヶ月間は会社のプロジェクトでは FuelPHP を使っています。丁度よいタイミングで勉強会が開催されたので参加しました。

申し込んだ時点では参加者全員 LT という約束だったので、ここ数ヶ月 FuelPHP を使った実感を簡単にまとめてスライドにしました。


昼の勉強会も面白い発表をたくさん聞けて、夜の懇親会もさらに楽しくて、とても良い時間を過ごさせて頂きました。

知ってる人が一人もいない勉強会も新鮮でいいなぁ〜。もっと色んなところに出て行かないといけないなと実感しました。

fuelphp-dynamoutilを公開した

さて、FuelPHP 勉強会 東京 vol.3 : ATND で発表したスライドの中で、FuelPHPAmazon DynamoDB を使いやすくする SDKラッパーOSS で公開したいと予告していたのですが、先ほど github で公開しました。

ドキュメントはまだないです。クラス 4 つしかない小さなものなので、ソース読んだだけでも使い方は分かるかもしれません。

2012-11-04

PHP-5.4でのZip Extension

PHPMatsuri 2012 に来ている時に、何故か自分のワーク環境の一つのPHP-5.4を整備することになって、5.3の時と同様に Zip extension を PECL から入れようとしてハマったのでメモ。


PECL Zip はすでにメンテナンスされていない。PHP-5.4 でビルドしようとすると、zend_object_handlerにセットされるハンドラ関数引数が変更されているので、コンパイルエラーになる。


PHP-5.4 本体に Zip extension がバンドルされているのでそちらを使う。

2012-06-07

月の最後の日をPHPで簡単に知る方法

集計系の処理のプログラムを開発していると、その月の最後の日を求め必要がちょくちょくあったりしませんか? 私はあります。さてそういう時にどうやって求めるでしょう。答えは一発↓

<?php
$d = date('Y-m-t');

これだけですw

書式「t」って何ですか?

恥ずかしながら date() 関数の書式に使える「t」の存在を今日まで知りませんでした。意味としては以下になっています。

t : 指定した月の日数。

t は DateTime クラスにも使えます。

例えば今年の各月に対して最終日を求めるのには、以下のようにします。

<?php
$d = new DateTime();
$year = 2012;
foreach (range(1, 12) as $month) {
    $d->setDate($year, $month, 1);
    echo $d->format('Y-m-t') . "\n";
}

従来はどうやっていた?

t フォーマットを知る前の従来のセオリーはこうでした。

  1. その月の最初の日(1日)を求める
  2. それに "+1 month" する
  3. それにさらに "-1 day" する

コードで書くとこんな感じ。

<?php
$d = new DateTime();
$d->setDate($d->format('Y'), $d->format('m'), 1);
$d->modify('+1 month -1 day');
echo $d->format('Y-m-d');

おまけ

PHPマニュアル相対的な書式」をつらつら見てたら

<?php
$d = new DateTime('last day of 2012-06');
echo $d->format('Y-m-d');

とかでもいいんじゃね? とか思った。ダメじゃんオレw

2012-06-05

「あにみた!」ができるまで

6月5日(火)にAMN新サービスあにみた!」をリリースしました。あにみたは、アニメの各話単位でソーシャルチェックインできるサービスです。


「なぜソーシャルマーケティングのAMNが?」みたいな反応が結構ありますが、今回のあにみたはエンジニア主導で企画・開発されたサービスでして、私も含めアニオタ率の高いAMNエンジニアとしては至極当然の流れだったりします。

アニメの各話単位でチェックインできるサービスが欲しかった

そもそもの発端は、昨年の11月1日に開催された、AMN新サービスのアイディア出し社内ブレストミーティング、通称「AMN Developer Day (ADD)」でした。そこでAMNエンジニア全員で20以上のサービスアイディアを出し合った訳ですが、その中の一つに私が提案した「アニメの各話ごとにチェックインできるサービス」というものがありました。


これは自分の経験として、TwitterFacebookTVアニメの感想をつぶやいた時に思いもよらない反応があったことが何回かあって、この機能に特化して自分のポストをアーカイブしつつ、ソーシャルメディアに流せるサービスがもしあれば、自分はハードに使うだろうなぁと考えたのがそもそものきっかけでした。


AMNとしてバズらせるサービスを作りたい

新サービスの話はその後しばらくは水面下に潜っていたのですが、AMN CTO福田さんが作った昨年末の「私の漢字2011」がうまく話題になったこともあって、エンジニア主導でインパクトのあるサービスを立ちあげようという話になりました。開発リソースとしてその時点で最も融通がきいた石山さんがメイン開発者となることが決まって、本人に一番作りたいサービスを決めてもらったところ「アニメチェックイン」をやりたいということで、「あにみた!」の開発が本格的にスタートしたのでした。

開発者の頑張り

石山さんはここ数ヶ月「あにみた!」の開発をほとんど一人で行なってきました。私達周囲のエンジニアは、コンセプトや仕様を決める議論には深く参加してきましたが、曲がりなりにもサービスとしてリリースできるところまで来たのは、ひとえに石山さんの頑張りによるものです。AMNのプレスリリースにも石山さんのコメントが載っていますが、自らが使って楽しいサービスをゼロから作るという経験は、モチベーションの維持に大変重要だったようです。

デザインワークはピチカートデザイン

「あにみた!」のデザインワークは白坂翔さん率いるピチカートデザインさんにお願いしています。そこはかとなく猫テイストなデザインコンセプトは、可愛くも有りほのぼのでも有り、皆大変気に入っています。どうもありがとうございます。


「あにみた!」のインフラ構成について

調べた人には簡単に分かることですが、「あにみた!」は全面的にアマゾンウェブサービスEC2上で動いています。正にクラウドさまさまと言ったところです。


現状のインフラ構成は

  • m1.large の Webフロントエンド
  • m1.large 3台の MongoDB バックエンド

となっています。このうち3台の MongoDB サーバは AMN の広告配信サービスと共有しています。サービスイン前に負荷テストを行ったところMongoDB の負荷は本当に微々たるものだったので、相乗り可能と判断して共有することにしました。ソフトウェア構成要素としては

となっています。


負荷が問題となるとしたら、現状ではまず最初にネックになるのが Web フロントエンドだと考えられます。その部分はセオリー通りスケールアウトできるように作っていますので、滅茶苦茶ブレイクしない限りは、今のところは負荷問題は気にしなくて良いと思っています。

「あにみた!」の今後について

「あにみた!」をリリースして半日ほど経ちましたが、どうやらこちらの想定以上に多くの人に使っていただけているようです。ただこちらの想定外の使用方法のニーズが多くあることも、様々な反応を追いかけていて分かって来ました。ベータリリースということで、予定している機能で実装されていないものもまだまだたくさんありますし、ユーザの方々からの要望もたくさんいただいています。


より多くの人に満足いただけるように、今後もどんどんサービスを発展させて行きたいとエンジニア一同考えていますので、どうか期待しつつお待ち下さいませ。

2012-04-27

エンジニアtypeの法林さんの新企画で対談してきました

jusLLイベント等で比較的よくつるんでいる @ こと法林浩之さんが、エンジニアtypeでやっている連載で、対談形式の新シリーズを始めました。光栄なことにその第1回目に呼んでいただいたので、4/17(火) に2時間ほど二人で色々喋ってきましたが、その内容が本日記事として公開されました。

裏話を少しすると、最初の企画では、私の技術遍歴を時系列で紐解いて、その流れの中の技術的ターニングポイントを見出しつつ、そこからエンジニアとして生き抜くヒントを見つける、といった内容でした。以前に @IT寄稿した以下の記事ぽいものかなぁと考えていました。

さて当日になりまして、法林さんといつも喋っている感じで、色んなところに話が飛び回りつつも、楽しく対談が進んでいったわけなのですが、当初の目論見の「技術的ターニングポイントからヒントを見つける」という想定ではうまく着地できない雰囲気になって来ました。


結局その日は、編集の小禄さん・ライターの白谷さんに方向性も含めてお任せするということになって、お開きになりました。後日お送りいただいた記事案では、当日話した内容から3つのメッセージを抽出して、それを中心に対談したという形でまとめられていました。あの雑多な会話の中からの再構成という見事なお手前でした。


さて肝心の内容ですが、直接の知人からの反応はなかなか良いようです。特に評判がいいのは以下の「心の折れ具合」に関連する部分ですね。

小山 ほかのことをやってる時、何か厳しい状況にぶち当たるでしょ。すると、心がポキンと折れて、逃げたくなったりするじゃないですか。でもコードを書いている時は、つらいことがあってもなかなかあきらめなかったんですよね。その時、この仕事が好きなんだと実感しました。

http://engineer.typemag.jp/knowhow/2012/04/203_2.php

これは、以前に井上陽水がラジオ番組の対談で語っていた

人間は、結局自分がそうしたいと自然に思うことをやるように出来ているので、自分の心をよく観察すると良い。

というような内容を、何故か自分はずっと覚えていて、上記の「心の折れ具合」はそこから発想した比喩だったりします。