Flickr APIの使い方【基本編】

CODE
のり
のり

FlickrのAPIを使って写真を取得/表示させたいけど、どうやってやればいいんだろう?そもそもWeb APIの使い方がわからないので知りたい。

そんな疑問に答えます。

今回は、Web APIについての基本的な知識を付けることを目標にまとめていきます。実際にプログラムを実装する方法については、Flickr APIの使い方【実装編】をご覧ください。

Web APIとは?

Web APIとは何でしょうか。APIとは、Application Programming Interfaceの略で、プログラムからアプリケーションを操作できる窓口を意味します。

普段私達は、ブラウザというインターフェイスでWebサイトの検索や、情報の表示/編集/削除などをおこないます。

一方で、プログラムにとって扱いやすいインターフェイス(API)が用意されていて、プログラムもブラウザと同じような操作をすることができるのです。

Web APIの多くは、HTTPの通信をおこなって情報のやり取りをおこないます。Web APIを使う大前提としてHTTPを理解していないといけないため少し触れることにします。

HTTP

HTTPとは、Hyper Text Transfer Protocolの略で、WebブラウザとWebサーバが通信をする時のプロトコル(約束事)です。

HTTPはリクエストすると、レスポンスが返ってくるというシンプルな処理です。Webサイトでは、WebブラウザからURLというリソースの格納場所を指定してリクエストすると、格納場所にあるリソースをレスポンスとして返してきてくれます。

この場合のレスポンスは主にHTMLで、それを受け取ったWebブラウザが描画して整形してくれるので私達はブラウザでWebサイトを見ることが出来ています。

Web APIもHTTP通信

Web APIに話を戻します。Web APIもHTTP通信をして情報を取得したりします。

Web APIもURLでリクエストをおこないってレスポンスを受け取りますが、先程と違うのは、レスポンスが主にJSONやXMLといった形式だということです。プログラムが読みやすい形でレスポンスが返ってくるので、加工して表示をおこないます。

また、Web APIのことをREST APIと呼ぶこともあります。

REST API

RESTとは、Representational State Transferの略でWebサービスにおける設計思想のことです。もっとわかりやすく説明するとHTTPをベースとしたモデルのことだと思ってください。

Web APIとREST APIの関係ですが、厳密にはWeb APIの一種なのがREST APIです。ですが、Web APIではREST APIがよく使われているので、Web API = REST APIのように思われているところもあります。

HTTPをベースとしたモデルなので、リクエストを送るとレスポンスが返ってくるのですが、リクエストのメソッドがいくつかあるので覚えておきましょう。

  • GETメソッド(データの取得)
  • POSTメソッド(データの登録)
  • PUTメソッド(データの更新)
  • DELETEメソッド(データの削除)
WebAPIまとめ
  • Web APIとは、プログラムからアプリケーションを操作できる窓口のこと
  • Web API(REST API)では、HTTP通信をおこなって情報を取得する
  • レスポンスの形式は、JSON形式やXML形式

さて、次からFlickrのAPIを使える準備をしていきましょう!

Flickr APIを使えるようにする

Flickrは、米Yahoo!が運営するオンライン写真共有サービスで、自身で撮った写真をアップロードして公開することができます。利用は無料です。

FlickrのAPIドキュメントを見てみましょう。Flickr APIは外部開発者でも非営利目的であれば利用可能で、商業利用する場合も事前に申し込むことで利用が可能になります。

右側にAPI Methodsという欄がありますが、これら一つ一つがAPIの機能になっており、後ほど細かいところを見ていきます。

ドキュメントは全て英語ですが、非公式で日本語のドキュメントも存在しています。適宜参考するようにしましょう。

Flickrのアカウント登録

まずは、Flickrにアカウント登録をしましょう。以下のURLからSign Upをクリックします。

■Flickrサイト
https://www.flickr.com/

名前やメールアドレス、パスワードを入力しましょう。

Flickr Signup画面

指定したメールアドレスに「Flickr – Verify your account」というメールが来るので、「Confirm my Flickr account」をクリックして認証を完了させましょう。

遷移した画面で、「Okay, got it!」ボタンをクリックするとFlickrのログイン画面が表示されるので、ログインしてください。

APIキーの取得

APIキーとは?

APIを利用するには、APIキーという鍵が必要です。APIを関所に例えると、APIキーという許可書がないと通過することが出来ません。

APIキーは、API提供者が利用者一人ひとりに与える鍵のことです。この鍵は、API利用者として登録をしないと手に入らないため、まずはAPI利用者登録をすることになります。

API利用者登録

■新規でAPIキーを取得する場合
https://www.flickr.com/services/apps/create/apply/

上記のサイトをアクセスしたら、左側の「APPLY FOR A NON-COMMERCIAL KEY」を選択します。

サイトの情報を入力して「SUBMIT」を押します。

そうすると、APIキーとAPIシークレットが提供されます。

APIシークレットは、APIキー(ID)に対するパスワードです。

公開したり、ソースコードに埋め込んだりしないようにしましょう。

APIキーが取得できたので、これからAPIを使っていきましょう。ちなみに、既に取得したAPIを再表示するには、以下のURLから表示することが可能です。

■既にAPIキーを取得している場合
https://www.flickr.com/services/apps/by/me

Flickr APIを使ってみる

フォーマットを確認する

APIドキュメントを見てみましょう(非公式の日本語ドキュメント)。先程から散々言っていますが、Web APIはリクエストを送って、レスポンスが変える単純な仕組みです。

ドキュメントの左下にある「Request Formats」の「REST」をクリックしてみてください。

ここで、背景が変わっているこのURLが、HTTP通信で情報を取得するための基本のフォーマットになります。

記載された内容はあくまで例ですが、以下を意味しています。リクエストを作る時の参考にしましょう。

https://www.flickr.com/services/rest/?method=flickr.test.echo&name=value
  • 赤字の部分がエンドポイント(URI≒URLのこと)
  • 青字の部分がサービス(APIメソッド)名
  • 緑字の部分が検索条件項目

続いて、リクエストの方を見ています。リクエストは今回、JSON形式を指定したいと思います。JSONは、JavaScript Object Notationの略でJavaScriptのオブジェクトに似た形式で、Javascriptへのオブジェクトへの変換も簡単にできます。

JSONのフォーマットを見てみましょう。ここで注目したいのは、枠線で囲った文言です。「JSONフォーマットでAPIレスポンスを返すためには、リクエストパラメーターに”json”という値を入れた”format”パラメータを送ってください。」とあります。

先程のリクエストに「format=json」というパラメーターの記載が必要なようです。

また、下の方にあるCallback Function(コールバック関数)についても、以下のようなことが書かれています。

「関数ラッパーなしでそのままのJSONが必要な場合は、リクエストに値1を指定したパラメーターnojsoncallbackを追加します。 独自のコールバック関数名を定義するには、希望の名前を値としてパラメータjsoncallbackを追加します。」

今回は、コールバック関数なしでJSONを取得することを想定しているので、「nojsoncallback=1」をリクエストパラメーターに入れることにします。

APIメソッドを確認する

今回は、API Methodの中からphotosの「flickr.photos.search」を使用したいと思います。

こちらのメソッドは、条件に合致する写真の一覧を取得するメソッドになります。

リンクをクリックして、中身を見てみましょう。「Arguments」と書かれたところがパラメーターの一覧です。

抜粋してパラメーターの説明を見てみます。

パラメータ名必須/任意概要
api_key必須APIキー
text任意検索テキスト。写真のタイトル、概要、タグが検索対象。
license任意ライセンスでの絞り込み。(指定できる値一覧
sort任意ソート順。指定できる値は、
date-posted-desc(投稿日が新しい順、デフォルト),
date-taken-desc(撮影日新しい順),
interestingness-desc(興味深さ順),
relevance(検索条件との関連度順)など
extras任意追加情報。description、license、owner_nameなど。
per_page任意検索結果の1ページあたりの件数。デフォルトは100。

さて、一番最後の行に「API Explorer」というところがあるのでクリックしてみましょう。

これは、APIのパラメータを実際に設定した時にどのような結果が返ってくるのかテストが出来るページです。こちらを設定してみましょう。

Call Methodを押すと検索結果が表示されます。また、リクエストのURLも表示されています。

リクエストURLについては、前に説明したエンドポイントとmethod、formatとnojsoncallbackの設定もきちんとされています。

このようにURLを組み立てると結果が表示されることがわかりました。次回は、この結果を元にプログラムを書いていきましょう。

まとめ

いかがでしたか?

Web APIを使う上で必要な基本的な知識についてまとめてみました。リクエストのURLを理解することができればあとはデータを取得するだけです。

Web APIのHTTP通信ついて理解できていれば、色々なAPIも利用可能ですよ!次はいよいよ実装編です!では!

コメント

タイトルとURLをコピーしました