GoogleがGoogle MapsのAPIを公開しました。
Google Maps API
API Documentation
・・・ いい感じに何でも出来ます。
何かの偶然かと思いますがYahooMapsもAPIを公開しました。
Documentation for Yahoo! Maps Web Services
Google APIsの最近のブログ記事
Google Desktop Search Plug-ins [ GDS Java API ] リリース ( via Google Weblog )
http://desktop.google.com/plugins/javaapi.html
JNI(Java native interface)のICE_JNIRegistry.dllでアクセスしています。
サンプルに少し手を加え、遊んでみましたがパフォーマンスも問題なく非常に良い感じです。
import java.util.Iterator;
import java.util.List;import jgd.JGDError;
import jgd.JGDQuery;
import jgd.jaxb.Results;
import jgd.jaxb.impl.ResultsTypeImpl;public class test {
public static void main(String args[]) throws JGDError {
JGDQuery q = new JGDQuery("Google");
q.setNum(new Integer(3));
q.setStart(new Integer(1));
Results results = q.execute();
List list = results.getResult();for (Iterator iter = list.iterator(); iter.hasNext();) {
ResultsTypeImpl.ResultTypeImpl rt =
(ResultsTypeImpl.ResultTypeImpl) iter.next();
System.out.println(rt.getCategory());
System.out.println(rt.getTitle());
System.out.println(rt.getSnippet());
System.out.println(rt.getUrl());
}
}
}
久しぶりにGoogle APIsを使った素晴らしいツールがありました。
◆google Similarリリース by Drk7jp
ChaSenという、形態素解析システムとの組み合わせで実現されているようですが、この様なシステムと組み合わせて汎用的に使えるようにしたアイデアが素晴らしいと思いました。
フリーの日本語形態素解析などは、学習した事もないので良く解かりませんが、一般人もこの様なライブリを手軽に使える時代になりましたね!
名前から性別を判断するサイトを見つけました。
Geoff's Gender Guesser
Google APIsのDeveloper's Keyはオプションのようなので、一応入力する必要はないようですが、日本人名は判断出来ないようだったので"Duke"で検索すると、"It's a boy!"と判断されました。
MTGoogleRank Pluginを導入してみた。
作者のページ:John's Jottings
これを導入すると、例えばある検索条件で自分は何番目にGoogle検索されているか取得する事が可能である。(但しGoogleAPIsは未だBetaなので検索結果数が微妙に違う時があります。)
導入は非常に簡単で・・・
1.Google APIのlicense key を、メインメニュー > [ウェブログ名]編集メニュー > 設定 の Google API Keyへ設定する。 持っていない場合は、http://www.google.com/apis/で取得する。
2.ダウンロードした、GoogleRank.pl をMTの cgi-bin/plugins へコピーする。
3.http://api.google.com/GoogleSearch.wsdlから、ファイル名をGoogleSearch.wsdlとして保存して、MTの cgi-bin/lib/MT へコピーする。
4.例として、MTのテンプレートの編集で・・・
BLOGKID = <MTGoogleRank query="blogkid" url="www.blogkid.com" /><br>
半落ち = <MTGoogleRank query="半落ち" url="www.blogkid.com"/><br>
・・・などのように登録する。
5.Rebuildして完成。
とりあえずテストで左下部に導入してみた。 楽しくなければ外しますが・・・
JavaWorldの2004/1月号にGoogle Tag Library の記事があったので試してみた。
まずは、Google Tag Library から Libraryをダウンロードし、 Google Web APIsのサイトで、 license keyの登録/取得が必要である。
ダウンロードした、google-taglib-1.0.1.tar.gz のgoogle.jar と google.tld をWEB-INF/libなどへコピーする。
web.xmlを下記のように設定し、(license keyは取得したモノを設定する)
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<context-param>
<param-name>google_key</param-name>
<param-value>license key</param-value>
</context-param>
<taglib>
<taglib-uri>/google-taglib <taglib-location>/WEB-INF/lib/google.tld</taglib-location>
</taglib>
</web-app>
入力フォームを下記のようにして、
<form target="_blank" action="results.jsp" >
<input type="text" name="q">
<input type="submit" >
</form>
JSP(results.jsp)を下記のようにし、フォームから実行すれば動作します。
<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib uri="/google-taglib" prefix="google"%>
<google:search/>
<ol>
<google:searchResult>
<li><google:element name="title-url"/></li>
</google:searchResult>
</ol>
※サンプル
Googleの検索時には通常検索とは別に幾つか特別構文なるモノがあるがGoogle APIsでどこまで通用するか試してみた。 下記に記す3キーワドのみWebBrowserからの検索結果の数値と同一だったので整合性がとれている・・・っと思う。
related: 指定されたページと関連する検索をするのに使用する。
ex) related:www.google.co.jp
link: 指定されたURLにリンクしているページを検索するのに使用する。
ex) link:http://www.google.co.jp/
info: 指定されたURLに関するさまざまな情報へのリンクを出力する。
ex) info:http://www.google.co.jp/ ※そもそも、この場合1件であったが、関連するページまでは出力されない。
Googleのキャッシュ機構は素晴らしいと思うが、キャッシュの取り扱いなどについては著作権侵害などで熱く議論されている。 個人的には、これで商売できるんじゃないのかGoogleさん・・・っと思っていましたが、かなり甘かったみたいです。
話を変えますが、以前検索のサンプルを作り試していたところ、日本語の場合にWebBrowserとGoogle APIsでは検索結果が違う事があった。(それもかなり大きな数値での誤差がある。) そこで今回はキャッシュも誤差があるのかサンプルを作りテストしてみた。
GoogleCache.java
ダウンロードしたら、"Your Google Web APIs license key"の箇所を書き換え、Proxyが必要であれば、環境に合わせて修正します。
*コンパイル方法
java -classpath googleapi.jar GoogleCache.java
*実行方法
java -classpath .:googleapi.jar GoogleCache "<取得したいキャッシュのURL>"
[ Proxyが必要な環境でコードを修正していない場合は ]
java -classpath .:googleapi.jar -Dhttp.proxyHost= -Dhttp.proxyPort= GoogleCache "<取得したいキャッシュのURL>"
この記事を書いている日付は2003.10.20であるが、2003.10.16あたりに変更されたページをWebBrowserとGoogle APIsの両方から取得してみたところ同一の結果を取得する事が出来た。 その他にも数ページしか試していませんが、たぶんキャッシュに関して違いはないと思いますが間違っていたらごめんなさい・・・
Google APIsは現在ベータ版という事で利用されていますが、このサーバ(SOAPのWebServiceサーバ)は現時点ではhttp://api.google.com/search/beta2 ←このURLへ向けられ、WebBrowserからアクセスしてみると、どこかで見た画面である。!そう、ApacheSoapである!
更に調べて見ると、現時点のTomcatのバージョンは4.0.3を使っている事が解った。
ただ、個人的にへぇーそうなんだ!っと思っただけであるがベータバージョンといいつつもサーバ構成が気になる。
始めてGoogleAPIsを使いました。
(昨年からあったんですね!時代に乗り遅れていました・・・)
http://www.google.com/apis/
↑このページで利用規約に同意して、SDKと自分のGoogle Web APIs license keyを取得します
簡単なサンプルコードはここからダウンロードして下さい。 このサンプルは検索キーワードからMAX10件取得し、予想される検索数を算出します。
言語の制限は前述のメソッドGoogleSearch#setLanguageRestricts()を使用します。
developer's toolのAPIs_Reference.htmlを見ると、日本語は"lang_ja"で指定します。
GoogleTest.java
ダウンロードしたら、"Your Google Web APIs license key"の箇所を書き換え、Proxyが必要であれば、環境に合わせて修正します。
*コンパイル方法
java -classpath googleapi.jar GoogleTest.java
*実行方法
java -classpath .:googleapi.jar GoogleTest "<検索ワード>"
[ Proxyが必要な環境でコードを修正していない場合は ]
java -classpath .:googleapi.jar -Dhttp.proxyHost=
