#9で面白いことを発表してました。その一つがATNDのイベント参加者の名刺画像を自動生成するというモノ。神奈川にいながら北海道の熱気を感じつつ、昔同じようなことを「Facebookのイベントを対象に」やったなーと思って、もう一度最初から書き直してみました。イベント参加者のリストを取得し、名刺っぽい画像を出力するって代物です。Facebookでの認証処理から画像生成まで興味深いポイントを含んだWebアプリになったので、つくる行程から解説してみます。ちなみに実装はPerl、WebフレームワークにはMojoliciousを使っていますが、他の言語でも流れは同じなので参考にしてください。Facebook認証を行うまず、Facebookから情報を取得するためにアプリケーション登録をします。developers」のページからそれが出来るのでその後以下の文字列を取得します。Facebook::Graphというモジュールが便利です。アプリIDとシークレットキーを指定してインスタンスを作成。パラメータってのはFacebookの認証画面に行った後に戻ってくるアプリケーションのパスを指定する。'http://localhost:3000/callback');Facebook側で認証するためのURLを作成する。基本的に「/login」とかそういうパスにアクセスされたら、この「$uri」へリダレイクトさせる。文字列などはセッションで覚えておくと吉。メソッドの引数に渡しておく。$fb->access_token($access_token);これを踏まえて、Mojolicious::Liteでの実装はこんな感じになります。helperでFacebook::Graphのインスタンスを取得する「fb」メソッドをはやしていますが、ここはもう少し工夫できるかもですね。APIはイベントのIDさえ分かれば「/{event_id}/invited」というパスにアクセスしてそのイベントに招待されているユーザーのリストを得る事が出来ます。IDをWebのフォームから入力してもらい、ユーザーリストを出力してみます。これでユーザーのリストをテンプレートへ渡すことが出来ます。情報取得の条件を決めています。画像を出力するさて、いよいよユーザーごとに画像を出力します。実装するためにこのような仕様しました。いうパスにアクセスするとWebアプリからIDで指定されたユーザーの画像が出力される画像を生成するのにImagerというライブラリを使ってみます。);};出来た画像はこちら。この場合直接Webアプリから画像を配信していますが、ローカルに画像を書き出してごにょごにょしてもよいですね。まとめ実際この「Facebookイベント参加者の名刺画像を自動生成する」というユースケースは以前行われたとある集まりでも使われたもので、似たようなコードを書いて非常に実用的なものでした。いうのもニーズは結構ありそうなので応援したいところです!こういう応用的、つまりアプリケーションよりのプログラミング、個人的にガンガンやりましょう!って思っています。ボケての本が発売中です!AWS運用。yusukebe.com。