Facebook、Twitterに続いて急速に普及し続けているInstagram。
一般層における利用増加にともなって、"Instagramを絡めたプロモーションを行いたい!"といったプロジェクトの企画も増えてきたように思います。
プランニングの観点については、以前、NABANAがこのMD-Blogにエントリを上げてくれていますが、今回はもう少し技術よりのお話。Instagramが提供しているAPIを使って、データを取得する一例をざっくりとちょっぴりご紹介してみます。
このAPIには、Instagramと連携したモバイルアプリの開発するためのメソッドも用意されていますが、この記事ではもう少し簡易に、例えば自分がアップロードした写真や映像をWebサイト上にフィードしたり、特定のタグが付けられた最新記事を取得する、といった表示系処理に絞って書いていきます。
なお、規約や仕様は日々アップデートされるものですので、お試しになる前には、まず最新の公式資料をチェックすることをお忘れなく!
Instagram APIを利用するために、まずはデベロッパーサイトからアプリケーション登録を行います。
これで「Client ID」を取得する準備が出来ました。
「Client ID」とは、APIとやりとりするためのアプリケーション識別情報のようなもので、エンドポイントへのリクエストで必要になります。
完了画面が表示されますので、「Client ID」の内容を控えておきましょう。
デベロッパーサイトのメニューから「End Points」を開きましょう。
取得できる情報をいくつか挙げると、
などなど、リファレンスに記載されているように、それぞれデータ種別ごとにエンドポイントが用意されているので、
https://api.instagram.com/v1/tags/タグの名前/media/recent?client_id=あなたのClient ID
といったURLを叩くことでデータを取得することが出来るという形です。
先ほど記載したURLの例は、特定のタグに紐づく最新の写真/映像を取得する、というものでした。
デベロッパーサイト上には疎通テストが出来る「API Console」が用意されていますので、そちらで実際に実行してみましょう。
右ペインに結果が表示されます。JSON形式でデータが返ってくることが分かりますね。
大きく分けて、
という3つに分かれているので、例えば特定のタグが付けられた写真だけをWebサイトに表示したい!という場合には、これらのデータをPHP等のプログラムで取得/表示してあげましょう。
と、ざっくりと、プログラムで取得/表示してあげましょう...と書いてしまいましたが、ここでハマりやすいポイントがひとつあります。
それは、APIのリミット(リクエスト上限)です。
まず今回の例で上げたようなユーザのログイン認証を必要としない方法においては、1アプリケーションあたり1時間に5,000リクエストまで、と制限されています。
また、例に挙げた「Tags」のエンドポイントにおいては、ページネーションの値が存在しているように、1回のリクエストで取得できるデータの件数が限定されており、これは公式資料には記載が無い(と思う)のですが、どうやら最大値は20件ずつのようです。
となると、ユーザがアクセスした度に毎回最新記事を100件表示したい!なんていうプロモーションサイトでは、APIのリミットに到達してしまいますね。
これを回避するためには、ログイン認証を経て表示する仕組みとするか(その場合は1トークンあたり1時間に5,000リクエストとなります)、定時処理でデータをクライアント側にキャッシュする仕組み(※)を検討する必要があります。
※もちろんこの場合、取り扱うことが出来るのは自分が投稿した(権利を所有している)データに限りますが。
冒頭に記載したように、Instagramと連携したWebサービス・Webシステムの企画を立てる際には、あらかじめこういったAPIの仕様(規約)をしっかりと把握しておくこと、場合によってはモックアップを作成して、その都度最新のレギュレーションに合わせた実装をテストしておくことが重要!です。
また、「アプリでそういうのがあるからWebサイトでも出来るんじゃないの??」とカンタンには行きません。Webサイトの場合、アプリに比べてユーザのログイン認証はハードルの高い行為だと思います。ユーザのニーズと技術的な裏付けを合わせて、フローを考えていく。Instagramに限りませんが、外部サービスと連携した企画においては、この手順は欠かすことが出来ません!
小難しいオチになってしまいましたが、公式にもFirst Versionと記載されているとおり、このAPIはまだまだシンプルな機能になっています。
まずはリファレンスに書かれているメソッドを1つずつ試してみてはいかがでしょうか。
写真や映像を使ったあんなコト、こんなコト、アイデアが浮かぶかもしれません!