日本への祈りを集めるサイト pray4japan.heroku.com をつくりました




http://pray4japan.heroku.com/
何か出来ることが無いかなと色々考えてみたのですが、以前Nekostagramというのを見てInstagramが気になっていたので、Instagramで#prayforjapanのタグが付いている写真をたくさん集めるサイトをつくりました。つくっている間に同じ名前のサービスがあることに気付いて何か申し訳ない気がして公開を躊躇しましたが、別に被災地の人の元気が出ればそれでいいじゃんと思いとりあえず公開してみました。

InstagramAPI

Instagramのacceess_tokenが必要な部分のAPIを利用するには、以下の手順でaccess_tokenを取得します。別にiPhoneは必要ありません。

  • Instagramにサインイン
  • Instagramにログイン
  • Instagramにアプリを登録 http://instagr.am/developer/manage/
    • 以下の情報が発行される
      • client_id
      • client_secret
  • 上記情報を利用してaccess_tokenを取得
    • TwitterAPIのように開発者用AccessTokenが用意されていない
    • 自分で取得する必要がある
    • こちらの記事で紹介されていた方法でサクッと済ませた
  • あとは適当なURIでリクエストを投げればJSONが返ってくるのでパースして使う


またRuby/Pythoneのライブラリが公開されています。Rubyの場合はgem install instagramでインストール出来ますね。リクエストURI生成・例外処理・JSONパース・Hashie::Mashへの変換等をやってくれます。少しだけ利用してみたところ下記の情報が取得出来なかったので、自分の場合は使わないことにしました。自分は例外処理に疎いので、ライブラリを見ているとそこらへんを更に詰めていく必要があるなと感じました。

  • pagination
    • next_url (前回URL+"&next_max_id")
    • next_max_id
    • meta
      • code (StatusCode(200など))

Heroku

日本のサーバーを利用するのは現在の状況を考えるとあまり好ましくなさそうであり、またサクッと作って公開してしまいたかったので、HerokuというRubyホスティングサービスで公開しました。DBは利用せずアクセスがあるたびにInstagramのAPIにリクエストを投げ、最新の画像を取得しにいっています。herokuのDBは普通のユーザの場合5MBまでですが、今回のようなDBを利用しないアプリにとってはほぼ制限がありません。


herokuの利用方法は非常に簡単で、既に登録済みのユーザの場合は以下のコマンドを叩くだけでRailsアプリがデプロイ出来ます。Rails3以降では利用するgemをGemfileに記述していると思いますが、herokuもこれを見てpush時に自動的にgemを入れてくれます。

# gitで管理していない場合はgitで管理
$ git init
$ git add .

$ heroku create pray4japan  #=> pray4japan.heroku.com
$ git push heroku master    #=> deployed!!
$ heroku open               #=> go to http://pray4japan.heroku.com

SourceCode

サイトはRailsで動いており、ソースコードgithubで公開しています。NekostagramはSinatraで書かれていましたが、Railsの方が開発者が多そうだったので、Railsで書き直してあります。私の関与した部分に関してはライセンスフリーとしていますので、同様のサービスを作成する際などご自由にお使いください。

Demand

まだまだ不十分なところが多いかと思います。よろしければコメントやtwitterやブクマコメントなどで要望・意見をいただけると助かります。質問などもあればどうぞ。