すらいむがあらわれた

こまんど >  たたかう  にげる

Insider's Computer DictionaryのWebサービス

@ITで使われているInsider's Computer DictionaryはSOAPインターフェースを公開しています。
http://www.atmarkit.co.jp/icd/index.html
http://www.webservice.jp/netdict/index.html
ただし使用には以下の条件があります。
http://www.webservice.jp/netdict/about_nd/caution.html

禁止事項

 NetDictionaryでは、次のような使用は禁止させていただきます。

商用目的での使用
実運用を目的とする使用
データを集中的、組織的に取得するような使用方法
常識の範囲を大きく逸脱して、サーバに負荷をかけるようなアクセス

 少しでも多くの方々にとって有意義な実験サービスとして運用できるよう、皆様のご協力をお願いいたします。


ICD WebサービスのインターフェースはシンプルでわかりやすいのでWebサービスクライアント作成の練習に良さそうです。
Perl+SOAP::Liteで呼んでみました。


#!/usr/bin/perl
use encoding 'utf8';
use strict;
use warnings;
use SOAP::Lite; # +trace => 'debug';
use Data::Dumper;

my $targetNamespace = 'http://www.iwebmethod.net';

my $soap = SOAP::Lite

my $result;

#SearchWord

$result = $soap->call(
SOAP::Data->name('SearchWord')->attr({ xmlns => $targetNamespace }),
SOAP::Data->type('string')->name('query' => 'Web'),
SOAP::Data->name('partial' => 'true')

);
die "[".$result->faultcode."]".$result->faultstring if $result->fault;

my @idlist;
my @Words = $result->valueof('//WORD');
foreach my $word (@Words){
print $word->{'english'},"?t",$word->{'japanese'},"?n";
push( @idlist, $word->{'id'} );
}

#GetItemById

$result = $soap->call(
SOAP::Data->name('GetItemById')->attr({ xmlns => $targetNamespace }),
SOAP::Data->name('id' => $idlist[0] )
);
die "[".$result->faultcode."]".$result->faultstring if $result->fault;

print "?n";
print $result->valueof('//meaning');