10月26日(土)、第32回北海道開発オフに参加しました。
今回も最近作っているアプリの続きです。
この日は、「画面に表示するURLを短縮URLにする」事がミッション。
bit.ly APIを使って、CakePHPのHelperを作成しました。
bit.ly API
URL短縮サービスで割と有名なbit.ly。公式APIが準備されているので導入が割と楽です。
アクセスキーの取得
APIを呼び出すときにユーザIDとAPI Keyが必要になります。
サインアップ&サインインし、右上リンク → Settings -> ADVANCED でAPI Keyが取得できます。
OAuth認証も用意されているのだけど、前にbit.lyの短縮URL取得でAPI Keyを使った事があったのでそのままAPI Keyで実装しました。
まるっとアプリを作るわけではないので、しばらくはこのままでいいかなあと思っている。
短縮URLの取得
bit.ly APIにアクセスするライブラリを作成(app/Lib の下)
APIは/v3/shorten を使います。
Documentに従ってのURLを生成し、GETリクエストすればOK。
Cake PHPの中で使うので、HTTP通信にはHttpSocketを使用しました。
今回、短縮URL取得を実装している過程で、bit.lyのURLの場合、末尾に[.qrcode]をつけると、QRコードを表示させることができるのが判明(!!!)
第29回開発オフでやったこと、まるっと捨てていんじゃね…? となり、きれいに捨てましたorz
Helperの作成
上記ライブラリを呼び出し、短縮URLを返却するHelperを作成しました。
ライブラリを呼び出したりする場合は、画面に直接書くよりはHelper使った方がいいですね。
例外処理をどうするか悩みましたが、わざわざエラー出力して操作を止めなければいけない処理ではないので、URLを短縮せずにそのまま返す事にしました。(ログとかはあとで考える)
画面から呼び出す
細かい調整はあるけれどひとまずはこんな感じで呼び出せています。
これ書いていて、エラーでURLが短縮されずに戻ってきたらQRコード表示されない事に気がついた。
$url = '動的生成したURL' $shortenUrl = $this->Bitly->getShortenUrl($url); echo $this->Html->image($shortenUrl.'.qrcode?s=180'); // QR Code echo $this->Html->tag('br'); echo $this->Html->tag('p', $this->Html->link($shortenUrl, $url));
今回書いたLibとHelperはgistにおいてみました。
このあとは、キリが良かったので最後の30分ほど、前に作ったままリリースできる段階に達していないRailsのアプリをいじってみました。
やっぱり、継続的にコードを書いていないと、ダメですね。
いろんな事を忘れていっている・・・・ガーン・・・
次回の開発オフは12月7日(土)です。
この夏以降、なんだかんだで約月1回でオーソドックスに開催できています。
毎回参加人数は多くはないけれど、日常の仕事とかから抜け出して「開発の時間」を確保できるのはとても良い気分転換になっています。
主要メンバーが北海道を離れたりと、寂しい事もありますが、ゆるゆるとそのときいる人達で楽しい時間を作っていける勉強会として、続いていくといいなあと思います。