2003年10月アーカイブ

 もの凄く簡単なコードですが、Amazon APIsを利用した和書を検索するJavaのサンプルコードを試してみた。

 サンプルコード:
 AmazonSearchTest.java

 環境構築は、この記事を参考して下さい。
 尚、コードの修正すべき箇所は下記の3つになります。
  1.Proxy環境であれば、コード内のコメントを参照して修正する。
  2."associates tag" と "developer’s token"を設定する。
  3.検索条件はコード内に埋め込みなので、好きなように修正して下さい。
 
 以下、実行結果
 % java AmazonSearchTest
 Total number of matches = 774

 0: Javaゲームプログラミングアルゴリズム ¥ 2,800
 1: ゲーム作りで学ぶJavaクラス設計入門―JDK1.4.1対応 構造化設計と対比して覚えるオジェクト設計 ¥ 2,000
 2: Java API実用リファレンス Vol.3 JFC/Swi (3) ¥ 2,380
 3: JavaデベロッパーのためのApache Ant入門 ¥ 2,400
 4: Javaによるプロブラミング―アルゴリズムとデータ構造 ¥ 2,400
 5: Java プログラミング辞典 サーバーサイド・データベース・ネットワーク 編 ¥ 2,600
 6: EJB+J2EE入門―JBossとStrutsで作るWebアプリケーション ¥ 3,200
 7: オープンソース徹底活用 EclipseによるJavaアプリケーション開発 ¥ 2,200
 8: オープンソースがビジネスになる理由―勝ち組企業は何をしたか ¥ 2,400
 9: 実践Eclipse Javaプログラミング入門 ¥ 2,280
  

日本のWebService

| コメント(1)

 GoogleやAmazonのWebAPIsはとても素晴らしいと思うが、国内企業ではどの様な一般公開型のWebサービスを提供しているか調べてみた。

 三省堂(体験版)
 http://www.btonic.com/ws/
 → 辞書情報、書籍情報、新聞記事、論文、テクニカル・マニュアルなど、XMLベースコンテンツの検索が行えます。

 JTB(パイロット版)
 http://net.est.co.jp/jtb/about/
 →国や空港の列挙や、ホテル・ツアーの検索や予約が行えます。

 IWebMethod.NET ( Insider.NET presents... )
 http://www.iwebmethod.net/
 →コンピュータ用語事典 Webサービス

 きっとこの他にもあると思いますが今後、企業の特性を生かしたWebServiceが提供される事に期待したい。(日本企業が提供しているWebService情報があればコメントをお願いします。)

Amazon.com XSLT Service

| コメント(0)

 非常に簡単な説明になってしまうと思いますが、Amazon APIsから戻るXMLをXSLTで構文解析させ、HTMLにする方法を書きたいと思う。

 今回は、HTTPのGETでリクエストしてXMLのレスポンスをXSLTで構文解析してHTMLにする方法を説明する。

1.Interface [ HTTP GET ]
 http://xml-jp.amznxslt.com/onca/xml3?
  t=[associates tag]&
  dev-t=[developer’s token goes here]&
  type=[lite or heavy]&
  mode=[product line goes here]&
  page=[page # goes here]&
  f=[ output format ]&
  KeywordSearch=[subject keyword goes here]&
  locale=[locale]

 Explanation of Tag
  t : アソシエイトタグID
     アソシエイトプログラムへ登録した時のID(デフォルトは、webservices-20)
  dev-t : デベロッパー・トークン
     ここから登録して取得します。
  type : [lite] or [heavy]を選択します。 XMLのレスポンス情報が違います。
  mode : 製品カテゴリ。 本やDVDなどがあります。(下記 mode一覧参照)
  page : XSLTで表示した製品数よりもXMLのレスポンス製品が多い時に有効。 ページ制御
  f : [xml] or [xsltのURL] 出力フォーマットを指定する。
  KeywordSearch : 検索キーワド。 この他にも ArtistSearch、AsinSearchなどがある。
  locale : 日本なので jp 。(USは必要なし!、イギリスは uk、ドイツは de になる。

  ※ t と dev_t は、デタラメでも動作します???
   アソシエイトタグはキャッシュバックがあるが、デベロッパー・トークンは何の意味があるのだろうか???

  ※日本で使用可能なmode一覧
    books-jp
    dvd-jp
    vhs-jp
    electronics-jp
    software-jp
    music-jp
    classical-jp
 
2.使ってみる。
  [ サンプル1 ]
  Response XML

  ここ をクリックすると、Java書籍の一覧が表示されます。
 

  [ サンプル2 ]
  Response XML

  これはJava書籍のバナーです。


  [↑この interface ]
  http://xml-jp.amznxslt.com/onca/xml3?
    t=[ アソシエイトタグID ]
    &dev-t=[ デベロッパー・トークン ]
    &KeywordSearch=java
    &mode=books-jp
    &type=lite
    &page=1
    &locale=jp
    &f=http://www.blogkid.com/AmazonWebServices/XSLTSamples/webserv-example3c.xsl

Amazon APIs

| コメント(4)

 Googleで続けてきた投稿ですが、ネタが減ってきたので以前から気になっていたAmazon APIなるモノを試してみた。 今回はAmazonDevKitにあるJavaのサンプルを動作させるまでの本当に簡単な手順を記述します。

1.ユーザ登録とDeveloper's Tokenの取得
  下記のサイトより・・・
  http://www.amazon.co.jp/webservices
  下記の手順を完了する。
  1. Download our free developer's kit
  2. Apply for a free developer's token

2.WebServices - Axisをダウンロードして環境を作る。
  ↓ここからダウンロード(今回はV1.1)
  http://ws.apache.org/axis/index.html

  展開してAXISのlibにあるJarファイルをCLASSPATHへ通す。

3.Amazon WSDLドキュメントからの Java コードの生成
  ( 参照WSLDL : http://soap.amazon.com/schemas3/AmazonWebServices.wsdl )
  下記のコマンドを実行する。

  [ for none-proxy environment ]
  % java org.apache.axis.wsdl.WSDL2Java -v -p com.amazon.soap.axis
       http://soap.amazon.com/schemas3/AmazonWebServices.wsdl

  [ for proxy environment ]
  % java -Dhttp.proxyHost=[ProxyServer] -Dhttp.proxyPort=[ProxyPort]    
       org.apache.axis.wsdl.WSDL2Java -v -p com.amazon.soap.axis
       http://soap.amazon.com/schemas3/AmazonWebServices.wsdl

  --- こんな感じでJavaコードが生成される。
  Parsing XML file: http://soap.amazon.com/schemas3/AmazonWebServices.wsdl
  Generating com\amazon\soap\axis\PowerRequest.java
  Generating com\amazon\soap\axis\ShortSummary.java
  Generating com\amazon\soap\axis\ListingProductInfo.java
  ・・・

  生成されたコードをコンパイルする。(今回はこんな感じで!)
  % javac com\amazon\soap\axis\*.java

  出来上がった com package をCLASSPATHへ通す。

4.Amazon Dev KitのJavaのサンプルコードをコンパイルする。
  ↓このフォルダーにJavaのサンプルコードがあるので作業ディレクトリを移動する。
  [kit]\AmazonWebServices\JavaCodeSample

  % javac *.java
  コンパイルしてみる・・・っがエラーが沢山出る。
  「補足」20031108にリリースされたバージョンは問題ない。

  コンパイルエラーで出力されるサンプルコード内にあるメソッド [ setXXXXXX_Id ]のIdidへ全て変更して再コンパイルすれば上手くいくはず!

5.サンプルの起動
  None Proxy環境であれば、
  % java run
  っで実行可能

  Proxy環境の場合は AbstractXmlQuery.java の 100行近辺にある。
  [ Original ]
  socket = new Socket(hostPort[0], (hostPort.length > 1) ? Integer.parseInt(hostPort[1]) : 80);
  [ Modify ]
  socket = new Socket( [ ProxyServer] , [ProxyPort] );
  簡単な修正ではあるが、これで動作するはず!!(認証が必要なProxyは解りません!)

6.アプリケーションを実行
  ※起動が成功すると、Javaのサンプルアプリケーションが表示される。
  XMLタブとSOAPタブがあるが、XMLタブの[Keyword Search]を選択する。

  殆どの箇所はデフォルトで入っているので、そこは修正せず下記のみ入力する。

  Developer Token [ 1で取得したID ]
  Keyword [ 検索したワード ]
  Mode [ 商品のカテゴリ ]   

  私は、Keywordを [ google ]で、Modeを [ books-jp ]で試した。

  成功するとアプリを起動したコンソールへレスポンスのXMLが表示され、サンプルアプリケーションのGUIへはTreeViewで結果が見れる。

  ○今回は、ここまで・・・Google APIsより機能が多いので色々と探ってみたい。

Googleへの改善要求

| コメント(0)

 Googleへ機能改善レポートを出す事が出来ます。

[Japanese]
 http://www.google.co.jp/quality_form
 http://www.google.co.jp/quality_form?q=blogkid [ q="検索に使用したキーワードなど" ]

[English]
 http://www.google.com/quality_form
 http://www.google.com/quality_form?q=blogkid [ q="検索に使用したキーワードなど" ]

 個人的にGoogleへの不満はありませんが、チャンスがあれば是非書きたいと思う。
 特に改善のアイデアはあれば是非書いてみたい!・・・しかし、あるようでないんですよね!

Googleの情報

| コメント(0)

 この、Google Zeitgeist は我々に、貴重な情報を教えてくれる、とても良いレポートである。
 検索キーワードだけでは無く、気候についての検索状況(季節や状況により変わると思いますが・・・)や、各地域からのアクセス比率や使用しているWeb Browserなど・・・とても説得力のあるグラフとして活用できる。

 GoogleAPIsを知りだした頃からいったい何に活用出来るのかと色々と考えてきた。
 今までは仕事でも個人的にも検索ワードだけの入力で活用してきましたが、最近はGoogleの特別構文などを活用することで「知る」範囲が広くなったように感じる。

 例えばUSのCNNでは日本企業が企業別にどのくらい扱われているかを検索結果の数値から興味度(私が勝手に思い込む)として知る事が出来るような気がします。

 今日現在の日付で検索キーワードを下記のようにすればサイト内で扱われている数値を算出する事が出来る。
 "日本企業名(英語)" site:http://www.cnn.com

 ちなみに今日現在の結果は・・・
 Honda : 1530
 Nissan : 1210
 Toyota : 2350
 Sony : 5500
 Nec : 1360
 Sharp : 7680 ( 単語的に微妙・・・)
 Toshiba : 1900
 Hitachi : 906

 参考までに、これのcnn site:http://www.cnn.com検索結果は955000であった。
 
 今回の例は良くも悪くもニュースとしてインターネットに出た記事の総数なので興味というか気にされるだけ華かな・・・っと個人的感じますが、このような感じで「知る」事からこれをなんらかの形で活用していく会社やサービスなどが、Googleを活用する事で成功する為の鍵の1つではないかと個人的に思う。
 話を始めに戻しますが、つまりGoogleAPIsを活用し unix cronで定期的にAPIsを起動させて統計情報などを取ると言う現実的な活用が見えてきた。
 但しGoogle APIsでは件数が合わない・・・正式版に期待したいが、まずはどのような事が出来るか想像する事に重点を置きたいと思う。

 突然ですが、アメリカで非常に人気のあるSFテレビシリーズで、「スタートレック」というものがあります。 その中にクリンゴン人という架空のキャラクター(宇宙人)が TVシリーズで出てきました。 そこで、アメリカの映画会社のパラマウント社が、映画版の第3作目を作る際に、言語学者のマーク・オークランド博士に、このクリンゴン人が話すクリンゴン語を作るよう依頼しました。その後、5作目、6作目でもクリンゴン語は用いられました。
 参考サイト:クリンゴン語について
 
 そのクリンゴン語のGoogle版URLです!
 http://www.google.com/intl/xx-klingon/
 See : http://www.google.co.jp/press/funfacts.html
 抜粋:
 ・・・今のところ、地球の軌道圏外から検索クエリが送られてきたことはありませんが、万一に備えて Google では、クリンゴン語のインターフェイスに取り組んでいます。

 下記のURLは、ハッカーの為の?
 http://www.google.com/intl/xx-hacker/

 下記のURLは、人形キャラクターMuppets' Swedish Chef(スウェーデン???)
 http://www.google.com/intl/xx-bork/

 下記のURLは”なんちゃってラテン語”
 http://www.google.com/intl/xx-piglatin/

 下記のURLは、アニメキャラクターのElmer Fuddが話す言語
 http://www.google.com/intl/xx-elmer/

Googleの英語機能

| コメント(0)

 Googleは英語のみ下記の機能などをサポートしているので、まとめてみた。

○株価情報(Yahoo! FINANCEを参照する。)
 stocks:MSFT
 参考までに検索で一致するSymbol(Microsoftの場合はMSFT)で検索すると検索結果にグラフマークが表示される。(電卓マークといい、グラフマークといい他に何があるか非常に興味があります。)
 Symbolのみで検索する事も可能・・・ex) intc sunw nuan
 ※Google APIsでは下記のExceptionが発生し検索出来なかった。
  GoogleSearchFault: com.google.soap.search.GoogleSearchFault: Fault Code = SOAP-ENV:Server
  Fault String = Exception from service object: Internal error while performing search.

○言葉の定義
 define:usa
 とにかく意味を参照しているサイトから検出し表示する。 ページコントロールが無いようで、10件以上あっても同じページへ表示させる。
 ※Google APIsでは件数がゼロだった。

○電話番号&住所検索
 phonebook: Googleの電話帳全体を検索する。
 rphonebook: 個人用の電話帳のみを検索する。
 bphonebook: ビジネス用の電話帳のみを検索する。
 usage:
 phonebook:[First name] [Last name] [US State]
 phonebook:[Phone address]
 ...etc
 sample:
 phonebook:white house washington dc
 bphonebook:computer ( ny | la )
 rphonebook:sears ma
 しかも住所はYahoo! Maps , MapQuest と連携して場所まで解る・・・とても便利!
 ※Google APIsでは件数がゼロだった。

○住所検索
 該当するアドレスがあれば、Yahoo! Maps か MapQuestへ誘導する。
 ex) 165 University Ave Palo Alto CA
 ※Google APIsでは結果件数が違った。

Google APIsと特別構文

| コメント(0)

 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で楽しんでいるサイトなどをまとめてみました。

・2検索キーワードで検索結果数で競い合わせる。
 http://www.googlefight.com/
・ある人名やトピックの説明をGoogleの検索結果から行なうサイト。
 http://www.googlism.com/
・Googleのサイトを左右反転させたサイト
 http://www.alltooflat.com/geeky/elgoog/
・サイト間の関連性を視覚的に表示してくれる。(Java Applet)
 http://www.touchgraph.com

 Googleの電卓機能は知りませんでした!
 検索結果に電卓の画像と式と結果が出てちょっと驚きました!
 関数(cos / sqr )などや予約語 pi(円周率)や下記の計算なんかも出来ました!
 1 inch
 1 inch in PostScript point
 65535 in Hex [ 16進数 ]
 sin(45 degree) [ 度 ]
 mass of earth [ 地球の重さ ]
 mass of earth / (4/3 * pi * radius of earth^3)  [ 地球の密度 ]
 mass of the sun [ 太陽の重さ ]
 1 mile in km
 i * i [ これは -1なら・・・ ]
 sqrt(-1) [ これは i ]
 VI * X [ ギリシャ文字も計算 ]
 3 * c [ これは高速か!!]
 3 * h [ プランク定数 ]
 3 * k [ ボルツマン定数 ]
 3 * s [ 秒 ]
 3 * g [ グラム ]
 3 * l [ リットル ]
 3 * u [ 原子量単位 ]
 0 + 0b010 [ これは2になります。。。基数は最初の数字に合わさるようで! ]
 3.5V/1A [ 電圧などなど・・・]
 3 horsepower in W [ 馬力ですか!!]
 1year in sec [ 年から秒 ]
 1century in year [ 世紀 ]
 300kbps*10hour in GB [ bps / gigabytes ]
 seconds in a day * 7 [ 7日を秒にする ]
 3 dozen * 1 [ 1ダース = 12 ]
 1 bakers dozen [ パン屋のダース ]
 1 tablespoon [ 大さじ ]
 1 teaspoon [ 小さじ ]
 golden ratio [ 黄金比率 ]
 1 googol [ Google名の由来? ]

 なんだか開発している方の趣味のような感じもしますが、流石だと思います。
 ※ところで通貨変換は出来るのでしょうか?出来れば凄い・・・っと思う。
 ※参考までに、GoogleAPIsでは実行出来ませんでした。
 
 *計算例を追加した。
 (30 gigabytes) / (160 kbps)
 (1 hour) * 128 kbps
 one decade
 98.6 degrees Fahrenheit
 1 smoot
 answer to life, the universe and everything
 (answer to life, the universe and everything * the speed of light) / (3 US teaspoons)
 (1.21 gigaWatts) * 88 mph
 1 light year

Googleのキャッシュ

| コメント(0)

 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の秘密は安くて早いハードウェアだそうです!
 前に書いたベータ版でリリースしているGoogle APIsのサーバもフリーのTomcatを使っているのには正直驚いた!現在もビジネスとして成功させているGoogleの判断としては個人的には素晴らしいと思う。)

・以下に気になった点を抜粋。
--- 
"Cheap and fast" hardware is the way to go, according to Craig Nevill-Manning, a senior research scientist with Google.
===
「安く、また速い」ハードウェアは、とるべき道です。
---
---
This "fast and cheap" mantra at Mountain View, California-based Google resonates through the more than 10,000 servers used by query searchers worldwide, turning over more than 200 million search queries a day among 4 billion Web documents. 
===
Googleは世界中から1日に2億回以上もの検索リクエストがあり、40億のドキュメントから結果を返す処理を、1万台以上のサーバで対応しています。
---

※記事は古いですが、OSはLinuxを採用しているようです。
 ハードウェアはRackableのIA サーバを採用しているようで・・・理由は下記のページを読んで納得!
 http://www.atmarkit.co.jp/news/200105/02/google.html

以下にも興味深い資料がありました。
The Google Cluster Architecture
http://www.computer.org/micro/mi2003/m2022.pdf
The Google File System
http://www.cs.rochester.edu/sosp2003/papers/p125-ghemawat.pdf

-------
ここまでは真面目な話でしたが、下記のサイトは何かヒントが隠れているのでしょうか?
http://www.google.com/technology/pigeonrank.html

・・・実はPageRankの名前はPigeonRankから生まれたのでしょうか!
・・・鳩の群れをクラスター化させ検索効率を上げている!
・・・Googleは、その鳩全職員の倫理の扱いのためにすべての国際基準を超えます。
・・・鳩は公園から猟犬を使って集め適正な仕事をさせる。

尚、このPigeonRank Systemの基礎研究は、B. F. Skinnerさんにより突破口が開かれたとか・・・時代が時代なだけに、凄い方です。

※知人から聞きましたが、実はこの鳩のページは2002年のApril's Foolsだそうです!
 2002 Holiday Logos :
  http://www.google.com/holidaylogos02.html
 Newsletter for May 15, 2002 :
  http://www.google.com/googlefriends/may2002.html#pigeon

Google APIs のサーバ

| コメント(0)

 Google APIsは現在ベータ版という事で利用されていますが、このサーバ(SOAPのWebServiceサーバ)は現時点ではhttp://api.google.com/search/beta2 ←このURLへ向けられ、WebBrowserからアクセスしてみると、どこかで見た画面である。!そう、ApacheSoapである!
 更に調べて見ると、現時点のTomcatのバージョンは4.0.3を使っている事が解った。
 ただ、個人的にへぇーそうなんだ!っと思っただけであるがベータバージョンといいつつもサーバ構成が気になる。

Google PageRank

| コメント(0)

Googleツールバーをインストールすると、"PageRank"なるものがあり、説明はここにありますが、なんだか人気の証みたいな感じがします。

Google APIs

| コメント(0)

始めて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= -Dhttp.proxyPort= GoogleTest "<検索ワード>"

このサイトについて

--- 2004.1.10
 当初のサイトの目的から内容が変わってきたので、タイトルヘッダーを下記に変更しました。
 「Googleの観察と映画とJavaについて」
 
--- 2003.10.17
 今日からMovableTypeを使いウェブログを開始しました。 知人に進められてやってみたものの、実際にどんなサイトになるか自分でも良くわかりませんが、WebServiceの技術とサービスの内容を軸に色々と書き込んでいこうと思います。 

 BLOGKIDの名前は、特に理由はありませんが、取得したかったドメイン名が全て取られており、とりあえずウェブログやるし小僧だからいいか!・・・っと思い命名しました。
 
 

Google Friend

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.22-ja

アーカイブ

このアーカイブについて

このページには、2003年10月に書かれたブログ記事が新しい順に公開されています。

次のアーカイブは2003年11月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。