PHPerの祭典、PHP Matsuriに行ってきました。
PHP Matsuriとは、10月2日、3日の2日間にわたって開催された、日本最大級のPHP開発合宿イベントです。80名近い参加者が集まり、とてもホットなイベントとなりました。
どんなことが行われていたかは、私より筆のうまい他の方のレポート記事にお任せするとして、私がハッカソンで行った内容について書きます。
今回私は、他の人がまず作らないだろうなーと言うことで、先日公開されたmixi Graph APIのCakePHP向けプラグインを作ってみることにしました。
以前に、TwitterKitというTwitterを利用するプラグインパッケージを作成していたので、ほぼ同じような機能を実装することに。
- APIを呼び出すDataSouceを提供する。
(DataSouceにするのは、database.phpでアプリケーション固有の設定が出来るため - OAuthで認証を行い、AccessTokenをデータベースへ保存するOauthControllerを提供する
- 他、付随するModel、Component、Helperを提供する
以上の機能をもつプラグインを作ってサンプルアプリケーションを行うことを目標に設定しました。
会場到着後、午前中は基調講演などのセッションを聴いて、開発を開始したのは午後からでした。気になるセッションを聴きにいきながら、ちまちま環境構築してコーディング開始です。
Step.1 OAuth認証部分の作成
mixi Graph APIでは、OAuth2.0を採用しているので認証画面を表示するためのURL生成するメソッド、戻ってきたAuthorization Codeを使ってAccessTokenを取得するメソッドを、テストケースを書きながら実装します。
また、mixi Graph APIではAccessTokenの有効期限が短いため、再取得するためのメソッドを実装しました。
OAuth 1.0の時と比べこのトークン取得周りは、かなり簡単に実装できました。
これが、22:30分頃。
Step.2 API呼び出しメソッドの作成
次に、APIへリクエストを行って結果を取得するためのベースメソッドを作成します。
これは、TwitterKitで作成したメソッドをベースに、余分な部分を削ってAuthorizationヘッダを付けてリクエストを送るだけですぐに出来ました。
あとは、各APIを呼び出すメソッドを作成していく簡単なお仕事だったのですが、ここにきて睡魔という凶悪な敵と戦いつつのコーディングとなりました。
体力的にきつかったので、ボイスのAPIコールメソッドを一通り実装して一時撤退(睡眠)。
このあたり年齢を感じるところです。
午前3時前ぐらいだったのですが、周りではまだまだ結構な人数がゴリゴリ開発しているという素敵な光景。
ハッカソンってすごいなと感じましたね。
Step.3 Pluginクラスの作成
翌朝7時ぐらいに起きて朝食をとった後、早速開発です。
APIを叩くDataSouceは出来ているので、それを使って認証を行うControllerなどを作っていきます。これも、ほぼTwitterKitのものを流用して作成できました。
ひとつハマったポイントとしては、Twitterと違いAccessTokenの取得によるレスポンスにはユーザーを特定するキーが含まれていない点。このためAccessTokenの取得だけでは、ユーザを一意に判別できずDBに格納できないので、自身のプロフィール情報を取得するAPIを呼び出しIDを取得する必要がありました。
これが出来たのが、10時半過ぎぐらい。
Step.4 サンプルアプリケーションの作成
ここまでで、残り時間がかなり少なくなってきていたため当初予定していたアプリの開発を諦め、ボイスの一覧取得とつぶやくのみの単純なWebアプリを作ることにしました。
これまた、以前にTwitterKitで作成したサンプルアプリを流用しつつ、途中DebugKitをインストールしていないがために発生したエラーに悩まされつつ、ざっくりと開発。
なんとか、動くものを作ることが出来ました。
Step.5 LT発表
そして、LTにて発表
22分ごろからしゃべってます。もっとプレゼン構成を練れば良かった。。
というわけで、会場に着く前はもっと使ってもらえるアプリを作ろうと思っていましたが、実際には思うようにいきませんでした。ただ、開発することよりも他の参加者の方々との交流が本当にいい刺激になり、またここ最近の悩みだったことも他の方の話を聞くことでスッキリ解決したりと、たった2日間のイベントでしたが得るものはとても大きかったです。
最後に参加された皆さんお疲れさまでした。刺激的な2日間、楽しかったです。出会った皆さんと、この素晴らしいイベントを支えてくださったスタッフの皆さんに感謝します。
Pingback: CakePHPでmixi Graph APIを扱うためのプラグイン MixiKit 0.1を公開しました @ php-tips