英和・和英辞書APIのデ辞蔵を呼び出すRubyコードのサンプル

この前のハッカソンで、英和・和英辞書のAPIを公開しているサービスを教えてもらって実際に使ってみたところ、なかなかおもしろかったのでメモがてらRubyのサンプルソースを共有します!


🎂 英和・和英辞書APIのデ辞蔵公式サイト

デ辞蔵さんのサービスの紹介ページがこちら。

デ辞蔵Webサービスとは - デ辞蔵

でもって、REST APIの使用紹介はこちら。

REST版API - デ辞蔵

取得できるのはXMLのみですが、シンプルな仕様ですので、簡単に習得できます。

🍣 下準備Nokogiriの取得

下準備で Nokogiri を取得。

gem install 'nokogiri'

🐠 英単語 => 日本語訳のサンプルソース(英和)

ということで説明は苦手なので早速コードを。

まずは、英単語を和訳するための

require 'uri'
require 'open-uri'
require 'nokogiri'
def translate_en_to_jp(word_en)
# (1) 英単語の単語ItemIdを取得
enc_word = URI.encode(word_en)
url = "http://public.dejizo.jp/NetDicV09.asmx/SearchDicItemLite?Dic=EJdict&Word=#{enc_word}&Scope=HEADWORD&Match=EXACT&Merge=OR&Prof=XHTML&PageSize=20&PageIndex=0"
xml = open(url).read
doc = Nokogiri::XML(xml)
item_id = doc.search('ItemID').first.inner_text rescue nil
return nil unless item_id
# (2)英単語のItemIdから翻訳を取得
url = "http://public.dejizo.jp/NetDicV09.asmx/GetDicItemLite?Dic=EJdict&Item=#{item_id}&Loc=&Prof=XHTML"
xml = open(url).read
doc = Nokogiri::XML(xml)
text = doc.search('Body').inner_text rescue nil
text.gsub!(/(\r\n|\r|\n|\t|\s)/, '')
return text
end

デ辞蔵さんのAPIではこんなふうに、単語のItemIdを取得してからその日本語訳を取得すます。2段階のアクセスですが、XMLがシンプルなので使いやすいです!

🐡 日本語の単語 => 英単語のサンプルソース(和英)

続いて、日本語の単語から対応する英単語を取得する和英辞書のサンプルソースです。

require 'uri'
require 'open-uri'
require 'nokogiri'
def translate_jp_to_en(word_jp)
# 日本語単語のItemIdを取得
enc_word = URI.encode(word_jp)
url = "http://public.dejizo.jp/NetDicV09.asmx/SearchDicItemLite?Dic=EdictJE&Word=#{enc_word}&Scope=HEADWORD&Match=EXACT&Merge=OR&Prof=XHTML&PageSize=20&PageIndex=0"
xml = open(url).read
doc = Nokogiri::XML(xml)
item_id = doc.search('ItemID').first.inner_text rescue nil
return item_id unless item_id
# 日本語単語のItemIdから英単語を取得
url = "http://public.dejizo.jp/NetDicV09.asmx/GetDicItemLite?Dic=EdictJE&Item=#{item_id}&Loc=&Prof=XHTML"
xml = open(url).read
doc = Nokogiri::XML(xml)
text = doc.search('Body').inner_text rescue nil
text.gsub!(/(\r\n|\r|\n|\t|\s)/, '')
return text
end

ということで簡単ですがサンプルソースの紹介でした。

ソースコードにツッコミ大歓迎です。コメントいただけたら、泣いて喜びますw

📚 おすすめの書籍