連載
» 2017年05月30日 05時00分 UPDATE

Dev Basics/Keyword:Bing Image Search API

Bing Image Search APIは、Bingが提供する画像検索機能と同様な機能をAPI化したもので、画像検索機能をユーザーに提供するなどの目的で使える。

[かわさきしんじ,Insider.NET編集部]
「Dev Basics/Keyword」のインデックス

連載目次

 Bing Image Search API(以下、Image Search API)は、マイクロソフトのCognitive Servicesが提供するAPIの1つで、検索サイトであるBingが提供する画像検索機能と同様な機能をプログラムから利用できるようにしたもの。画像検索に特化したページを作りたい場合などに便利に使える。

Image Search APIの使い方

 Image Search APIがどんなものかは、Image Search APIページで確認できる。[アクションからご覧ください]の下に検索ボックスがあるので、そこで検索語を入力すれば、[プレビュー]タブに検索結果を基に画像が、[JSON]タブに検索結果が表示される。

「グランド キャニオン」を検索語としてImage Search APIを呼び出した結果 「グランド キャニオン」を検索語としてImage Search APIを呼び出した結果

 実際にImage Search APIを使用するには、Bing Search APIsのサブスクリプションを事前に追加しておく必要がある。このサブスクリプションを追加すると、Bing Web Search API/Bing News Search API/Bing Video Search APIも同時に使用できるようになる。ただし、このサブスクリプションを追加しても、Bing Autosuggest APIなどのAPIは使用できない(別途、それら用のサブスクリプションを追加する必要がある)。Cognitive Servicesが提供するAPIなどのサブスクリプションを追加する詳しい手順は「Dev Basics/Keyword: Microsoft Translator Text API」を参考にしてほしい。

Bing Search APIsのサブスクリプションの追加画面 Bing Search APIsのサブスクリプションの追加画面

 また、Bing Search APIsサブスクリプションの価格レベルには無料のものがなく、最低価格が3ドルからとなっている点には注意されたい。詳しくは「Cognitive Services の価格 - Bing Search API」を参照のこと。

 現在、Bing Image Search APIはv7(バージョン7)がプレビュー状態となっているが、本稿ではv5を使用していく。v5からv7へのアップグレードについては「Image Search API upgrade guide」ページで詳しく説明されている(v7プレビューを利用するにはそのサブスクリプションを別途追加する必要があり、v5のアクセスキーを使用してv7のAPIにアクセスはできない。2017年5月29日現在では、Bing Image Search APIページの最下部からv7プレビューのサブスクリプションを追加できるようになっている)。

 サブスクリプションを追加したら、そのアクセスキーをコピーしておく(以下の画像の赤枠内)。Bing Search APIsではこのアクセスキーをそのまま利用する。

アクセスキー アクセスキー

 プログラムを書かずに、まずはWebインタフェースを使ってみる。これにはImage Search API - V5ページが使える。なお、Bingに関連するAPIはAPIsページで一覧できる。

Image Search APIのドキュメントで「Search API」を選択したところ Image Search APIのドキュメントで「Search API」を選択したところ

 ご覧の通り、左側にはImage Search APIが提供する3つのAPIが表示されている。Image Insights APIはPOSTリクエストのボディーに含めた画像についての情報を取得するもの。Search APIはクエリを与えると、それに関連する画像を取得する。Trending APIは画像検索のトレンドを取得するものだ。それぞれのAPIを選択すると、APIのリクエストURL、必要なパラメーターやリクエストヘッダなど、そのドキュメントが右側に表示される。

 ここではSearch APIを使用してみよう。Search APIのドキュメントを表示して、[Open API Testing Console]ボタンをクリックすると、次のようにインタラクティブにクエリを組み立てるインタフェースが表示される。

インタラクティブなクエリ作成画面 インタラクティブなクエリ作成画面

 ここで各パラメーターを指定して、リクエストヘッダの[Ocp-Apim-Subscription-Key](上の赤枠内)に先ほど取得したアクセスキーを入力する。各パラメーターの意味については、[Open API Testing Console]ボタンを押す前のページで説明されているが、簡単に述べておこう。これらのうち、必須なのはqパラメーターのみであり、他はオプションとなっている。

  • q: 検索語
  • count: レスポンスに含める画像の数(デフォルト値: 10)
  • offset: 検索結果からレスポンスに含めないものの数をゼロベースのオフセットとして指定(連続して検索を行う場合に、次の検索結果に以前の検索結果を含めないようにする場合などに使用できる。デフォルト値: 0)
  • mkt: 検索を行う国や地域(デフォルト値: en-us)
  • safeSearch: アダルトコンテンツに対するフィルターの指定。Off/Moderate/Strictから指定する(デフォルト値: Moderate)

 よって、上の画像のパラメーターは「ネコの絵を10枚(10個のURL)、アメリカ国内から検索する」といった意味合いになる(「cats」はデフォルトの検索語)。

 これらを組み合わせた結果、リクエストURLは「https://api.cognitive.microsoft.com/bing/v5.0/images/search?q=cats&count=10&offset=0&mkt=en-us&safeSearch=Moderate」となる。最後に[Send]ボタンをクリックすると、検索結果が表示される。

検索結果の表示 検索結果の表示

 戻り値はJSONデータであり、Image APIを呼び出した場合はImagesオブジェクトの形で戻される。このオブジェクトのプロパティについては前述のリンクを参照してほしい。後はここから必要なデータを取り出して、画像を表示するなどの処理を行えばよい。

 最後にこのAPIをJavaScriptから呼び出すコードを示す(Node.jsおよびNPMのrequestパッケージを使用)。

const request = require("request");
const key = "アクセスキー";
const url = "https://api.cognitive.microsoft.com/bing/v5.0/images/search";
const q = process.argv[2] ? process.argv[2] : "にゃんこ";
const count = 10;
const reqUrl = encodeURI(`${url}?q=${q}&mkt=ja-jp&count=${count}`);
console.log(`request URL: ${reqUrl}`);

const opt = {
  url: reqUrl,
  headers: {
    'Ocp-Apim-Subscription-Key': key
  }
};

request.get(opt, (err, res, body) => {
  var jsondata = JSON.parse(body);
  for (var item of jsondata.value) {
    console.log(`found in ${item.hostPageDisplayUrl}`);
  }
});

Image Search APIを呼び出すコード例

 実行結果を以下に示す。

> node imgsearch.js xamarin
request URL: https://api.cognitive.microsoft.com/bing/v5.0/images/search?q=xamarin&mkt=ja-jp&count=10
found in https://www.xamarin.com/branding
found in googglet.com/images/xamarin forms picker renderer
found in https://twitter.com/Xamarinhq
found in alsocreative.com/blog/what-is-xamarin-and-why-do-we-use-it
found in xamarin.com/branding
found in www.henning.ms/2014/11/11/xamarin-ios-build-host-too-old
found in www.codenutz.com/lac06-getting-started-xamarin-visual...
found in https://blog.xamarin.com/a-xamarin-microsoft-future
found in twitter.com/xamarinu
found in jj09.net/getting-started-with-xamarin-in-2016


実行結果

 なお、前述した通り、Bing Search APIsのサブスクリプションを追加すると、Bing Web Search APIなども利用できる。Image Search APIはあくまでも画像を検索するためのものなので、Webページなどの検索には他のAPIを使用するようにしよう。また、本稿ではクライアントベースでこのAPIを使用しているが、Search the web for imagesページ(英語)では「全てのリクエストはサーバから送信しなければならない」ともある。Image Search APIは画像検索に特化したサービスを提供する際に利用するためのものだと考えておこう。


 Image Search APIはBingが提供する画像検索機能と同様な機能をプログラムから利用できるようにしたもの。Bingの画像検索の結果を利用して、ユーザーに何らかのサービスを提供する際に極めて便利に利用できる。

参考資料

  • Bing Image Search API: Image Search APIのトップページ
  • Search the web for images: Image Search APIの概要を説明したページ(英語)
  • Image Search API v5 reference: Image Search APIのリファレンスページ。APIの仕様や戻り値についてはここから調べられる(英語)
  • APIs: Bingに関連するAPIの一覧。ここからインタラクティブなAPIドキュメントを表示できる(英語)

「Dev Basics/Keyword」のインデックス

Dev Basics/Keyword

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。