連載
» 2004年09月28日 10時00分 UPDATE

JavaTips 〜JSP/サーブレット編:Googleタグライブラリを利用する

[山田祥寛,@IT]

 「Googleの検索機能を利用する」「Googleの高度な検索機能を活用する」でも見たように、Google APIを利用することで、Googleデータベースを自アプリケーションから自在に活用できるようになります。

 本稿では、さらに一歩踏み込んで、Googleタグライブラリを利用してみることにしましょう。Googleタグライブラリは、Google APIの機能をほとんどそのままタグライブラリ化したものです。Googleタグライブラリを利用することで、これまでスクリプトレットなどで記述しなければならなかった検索処理を限りなくプログラムレスで記述できるようになります。

 それでは早速、サンプルコードを見てみることにしましょう。なお、本稿のサンプルを利用するに当たっては、あらかじめ「Googleの検索機能を利用する」の手順に従って、Google APIのインストール、および、ライセンスキーの入手を済ませておく必要があります。

(1)Googleタグライブラリをインストールする

 Googleタグライブラリのアーカイブgoogle-taglib-X.X.X.zip(X.X.Xはバージョン番号)は以下のサイトから入手可能です。

 ダウンロードファイルを解凍したフォルダ配下に含まれるgoogle.jarをアプリケーション配下の「/WEB-INF/lib」フォルダに、google.tldを同「/WEB-INF」フォルダに、それぞれ配置してください。

(2)デプロイメント・ディスクリプタの設定を行う

 Googleタグライブラリを利用する場合には、タグライブラリ・ディスクリプタ(「.tld」ファイル)の登録と初期化パラメータとしてライセンスキーの登録をしておく必要があります。ライセンスキーの方は、適宜、自分で取得したものに置き換えてください。

web.xml
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
  version="2.4">
  …中略…
  <context-param>
    <param-name>google_key</param-name>
    <param-value>XXXXXXXXXXXXXXXXXXXXXXXXXXXX</param-value>
  </context-param>
  …中略…
  <jsp-config>
    <taglib> 
      <taglib-uri>/google-taglib</taglib-uri>
      <taglib-location>/WEB-INF/google.tld</taglib-location>
    </taglib>
  </jsp-config>
</web-app>


(3)JSPぺージを作成する

 これで、Googleタグライブラリを利用するための準備は整いました。次に、Googleタグライブラリを使って、「Googleの高度な検索機能を活用する」で使用したJSPページ「google_plus.jsp」「google_cache.jsp」を置き換えてみましょう。先ほど述べたように、GoogleタグライブラリはGoogle APIをほとんどそのまま置き換えたものですので、対比的に参照することでコードの流れは直感的に理解することができるはずです。

google_tag.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
<%@ taglib prefix="google" uri="/google-taglib" %>
<% request.setCharacterEncoding("Windows-31J"); %>
<html>
<head>
<title>Google検索</title>
</head>
<body>
<form method="POST" action="google_tag.jsp">
検索キーワード:
<input type="text" name="q" size="30" />
<input type="submit" value="検索" />
</form>
<% if(request.getParameter("q")!=null && !request.getParameter("q").equals("")){%>
  <google:search maxResults="10" lr="lang_ja" safeSearch="true">
    ${param['q']}</google:search>
  <hr />
  <h2>検索キーワード:<google:searchQuery /></h2>
  <h3>検索の結果、<google:estimatedTotal />件のサイトが抽出されました。検索時間は<google:searchTime />秒です。</h3>
  (目的のサイトが見つからない場合は、キーワード「<google:spelling>${param['q']}</google:spelling>」で検索してみてください。)
  <dl>
    <google:searchResult>
      <dt><google:element name="title-url" /></dt>
      <dd><google:element name="snippet" />
        <br /><font size="-1">
        <a href="google_tag.jsp?q=related:<google:element name="URL" />">
          関連サイト</a> /
        <a href="google_tag.jsp?q=link:<google:element name="URL" />">
          バックワードリンク</a> /
        キャッシュサイズ
        <a href="google_tagcache.jsp?q=<google:element name="URL" />">
          <google:element name="cachedSize" /></a>
        </dd>
    </google:searchResult>
  </dl>
<% } %>
</body>
</html>


google_cache.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
<%@ taglib prefix="google" uri="/google-taglib" %>
<google:cachedPage />


 なお、Googleタグライブラリには、ほかにもページング機能を追加するための<google:previous><google:next>タグをはじめ、さまざまなカスタムタグが用意されています。詳細については、以下のURLを参考にしてみてください。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

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

RSSについて

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

メールマガジン登録

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