¶È̳ÆâÍÆ
ÊÀ¼ÒÀ½ÉÊ
¥ª¡¼¥×¥ó¥½¡¼¥¹¥×¥í¥À¥¯¥È
¥Ñ¥ï¡¼¥Ó¡¼¥ó¥ºLab
²ñ¼Ò¾ðÊó
¥³¥ó¥¿¥¯¥È
Yahoo¡¡¥Æ¥­¥¹¥È¸¡º÷¡ÊÆüËܸì·ÁÂÖÁDzòÀÏ¡Ë
Yahoo WEB¥µ¡¼¥Ó¥¹¤Ë¤ÏÆüËܸìʸ»úÎ󤫤饭¡¼¥ï¡¼¥É¤òÈ´¤­½Ð¤¹¡ÖÆüËܸì·ÁÂÖÁDzòÀϡפε¡Ç½¤¬Ä󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£
Î㤨¤Ð¡Ö»ä¤Î̾Á°¤Ï¡£¡×¤È¤¤¤¦Ê¸¾Ï¤òÅϤ¹¤È¡¢Ê¸¾Ï¤ò¹½À®¤·¤Æ¤¤¤ëñ¸ì¤Ëʬ³ä¤·¡¢
¤½¤ÎÆÉ¤ßÊý¡¢ÉÊ»ì¤òÊÖ¤·¤Þ¤¹¡£

Îã¡Ë
¡¡»ä¡¡¡ä¡¡¤ï¤¿¤· (̾»ì)
¡¡¤Î¡¡¡ä¡¡¤Î (½õ»ì)
¡¡Ì¾Á°¡ä¡¡¤Ê¤Þ¤¨ (̾»ì)
¡¡¤Ï¡¡¡ä¡¡¤Ï (½õ»ì)

¤³¤³¤Ç¤Ï¤½¤ÎÍøÍÑÊýË¡¤ò¾Ò²ð¤·¤Þ¤¹¡£

1. Yahoo ¥Ç¥Ù¥í¥Ã¥Ñ¡¼¥Í¥Ã¥È¥ï¡¼¥¯¤ËÅÐÏ¿

Yahoo! ¥Ç¥Ù¥í¥Ã¥Ñ¡¼¥Í¥Ã¥È¥ï¡¼¥¯¤òɽ¼¨¤·¡¢
º¸Â¦¥µ¥¤¥É¥á¥Ë¥å¡¼¤Î¡Ö¥¢¥×¥ê¥±¡¼¥·¥ç¥óID¤ÎÅÐÏ¿¡×¤«¤éÅÐÏ¿¤·¤Þ¤¹¡£
¢¨¾ÜºÙ¤Ï²èÌ̤λؼ¨¤Ë½¾¤Ã¤Æ¤¯¤À¤µ¤¤¡£
¢¨¤³¤³¤Ç¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥óID¤Ï "amstransit" ¤È¤·¤Þ¤¹¡£

2. ÆüËܸì·ÁÂÖÁDzòÀϤò»î¤¹

¤³¤Á¤é¤Î¥Ú¡¼¥¸¤Ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
ÆüËܸì·ÁÂÖÁDzòÀÏWeb¥µ¡¼¥Ó¥¹

¸¡º÷URI
¡¡http://api.jlp.yahoo.co.jp/MAService/V1/parse
ɬ¿Ü¥Ñ¥é¥á¡¼¥¿
¡¡²òÀÏÂоݥƥ­¥¹¥È¡§sentence
¡¡²òÀÏ·ë²Ì¤Î¼ïÎà¡§results ( "ma" ¤Î¾ì¹çÄ̾ï¤Î·ÁÂÖÁDzòÀÏ·ë²Ì¡¢"uniq" ¤Î¾ì¹ç·ÁÂÖÁDzòÀÏ·ë²Ì¤Î½Ð¸½ÉÑÅÙ )
¡¡¥¢¥×¥ê¥±¡¼¥·¥ç¥óID : appid

¤³¤Î»ÅÍͤ˽¾¤¦¤È"»ä¤Î̾Á°¤Ï¥Ñ¥ï¡¼¥Ó¡¼¥ó¥º¤Ç¤¹¡£"¤ò¸¡º÷¤¹¤ë¥¯¥¨¥êURL¤Ï
http://api.jlp.yahoo.co.jp/MAService/V1/parse?appid=amstransit&sentence=»ä¤Î̾Á°¤Ï¥Ñ¥ï¡¼¥Ó¡¼¥ó¥º¤Ç¤¹¡£&results=ma
¤È¤Ê¤ê¤Þ¤¹¡£
¤³¤ÎURL¤òURL¥¨¥ó¥³¡¼¥É¤¹¤ë¤È
http://api.jlp.yahoo.co.jp/MAService/V1/parse?appid=amstransit&sentence=%E7%A7%81%E3%81%AE%E5%90%8D%E5%89%8D%E3%81%AF%E3%83%91%E3%83%AF%E3%83%BC%E3%83%93%E3%83%BC%E3%83%B3%E3%82%BA%E3%81%A7%E3%81%99%E3%80%82&results=ma
¤È¤Ê¤ê¤Þ¤¹¡£

¤¿¤á¤·¤Ë¾åµ­URL¤ò¥Ö¥é¥¦¥¶¤ÎURLÍó¤ËÆþÎϤ·¤Æ¥ê¥¯¥¨¥¹¥È¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£
°Ê²¼¤Î¤è¤¦¤Ê¸¡º÷·ë²Ì¤¬XML¤ÇÊֵѤµ¤ì¤Þ¤¹¡£


¤³¤³¤Ç¤ÏJAVA¤ÈPHP¤Ç¤Î¥µ¥ó¥×¥ë¤ò¾Ò²ð¤·¤Þ¤¹¡£

3. JAVA¤Ç·ÁÂÖÁǸ¡º÷¸¡º÷

¥µ¥ó¥×¥ë¥³¡¼¥É¤ò¸ø³«¤·¤Þ¤¹¡£

YahooWebService ¥¯¥é¥¹
package jp.co.powerbeans.ws.sample.yahoo;

import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
 * YahooWebService
 * @author amonden
 * @create date 2007/06/25
 */
public class YahooWebService {

  /**
   * yahoo appid
   */
  private String appid;

  /**
   * ¥³¥ó¥¹¥È¥é¥¯¥¿
   * @param appid ¥¢¥×¥ê¥±¡¼¥·¥ç¥óID
   */
  public YahooWebService(String appid) {
    this.appid = appid;
  }

  /**
   * ¥Æ¥¹¥È¼Â¹ÔÍѥᥤ¥ó
   * @param args
   * @throws Exception 
   */
  public static void main(String[] args) throws Exception {
    String appid = "amstransit";
    YahooWebService yahoo = new YahooWebService(appid);
    // WEB¸¡º÷
//    List<Map> list = yahoo.searchWeb("¥Ñ¥ï¡¼¥Ó¡¼¥ó¥º");
    // ²èÁü¸¡º÷
//    List<Map> list = yahoo.searchImage("¥Ñ¥ï¡¼¥Ó¡¼¥ó¥º");
    // ¸¡º÷·ë²Ì¤ò½ÐÎÏ
//    for (Map row : list) {
//      System.out.println(row.get("Title") + ":" + row.get("Url"));
//    }
    
    
    // ÆüËܸì·ÁÂÖÁDzòÀÏ
    List<Map> list = yahoo.parseJp("»ä¤Î̾Á°¤Ï¥Ñ¥ï¡¼¥Ó¡¼¥ó¥º¤Ç¤¹¡£");
    
    // ¸¡º÷·ë²Ì¤ò½ÐÎÏ
    for (Map row : list) {
      System.out.println("[ñ¸ì]" + row.get("surface") + " " + 
          "[ÆÉ¤ßÊý]"+ row.get("reading") + " " + 
          "[ÉÊ»ì]" + row.get("pos"));
    }
  }

  /**
   * WEB¸¡º÷¤ò¼Â¹Ô
   * @param query ¸¡º÷¥ï¡¼¥É
   * @return ¸¡º÷·ë²Ì
   * @throws Exception 
   */
  private List<Map> searchWeb(String query) throws Exception {
    String url = "http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch?appid=" + appid
        + "&query=" + URLEncoder.encode(query, "UTF-8");
    
    return queryByUri(url, "ResultSet", "Result");
  }

  /**
   * ²èÁü¸¡º÷¤ò¼Â¹Ô
   * @param query ¸¡º÷¥ï¡¼¥É
   * @return ¸¡º÷·ë²Ì
   * @throws Exception 
   */
  private List<Map> searchImage(String query) throws Exception {
    String url = "http://api.search.yahoo.co.jp/ImageSearchService/V1/imageSearch?appid=" + appid
        + "&query=" + URLEncoder.encode(query, "UTF-8");
    
    return queryByUri(url, "ResultSet", "Result");
  }

  /**
   * ÆüËܸì·ÁÂÖÁDzòÀÏ
   * @param centense ²òÀÏÂоÝʸ»ú
   * @return ¸¡º÷·ë²Ì
   * @throws Exception 
   */
  private List<Map> parseJp(String centense) throws Exception {
    String url = "http://api.jlp.yahoo.co.jp/MAService/V1/parse?appid=" + appid
    + "&sentence=" + URLEncoder.encode(centense, "UTF-8") + "&results=ma";

    return queryByUri(url, "ResultSetma_resultword_list", "word");
  }

  /**
   * URI¤ò¥ê¥¯¥¨¥¹¥È¤·¸¡º÷·ë²Ì¤òÊÖ¤¹.
   * @param url URI
   * @param root_name ¥ë¡¼¥ÈÍ×ÁÇ̾
   * @param item_name ¸¡º÷·ë²ÌÍ×ÁÇ̾
   * @return ¸¡º÷·ë²Ì
   * @throws Exception
   */
  private List<Map> queryByUri(String url, String root_name, String item_name) throws Exception {
    SAXParserFactory spfactory = SAXParserFactory.newInstance();
    SAXParser parser = spfactory.newSAXParser();
    XmlResponseSax sax = new XmlResponseSax(root_name, item_name);
    parser.parse(url, sax);
    return sax.getResultList();
  }

  /**
   * ¸¡º÷¤Î·ë²Ì¤ò²òÀϤ¹¤ë¥Ñ¡¼¥µ¡¼
   * @author amonden
   * @create date 2007/06/25
   */
  public class XmlResponseSax extends DefaultHandler {
    List<Map> list = new ArrayList<Map>();
    private String tag_path = "";
    private Map<String,String> map;
    private String itemKey;
    private String itemName;

    /**
     * ¥³¥ó¥¹¥È¥é¥¯¥¿
     * @param root_name ¥ë¡¼¥ÈÍ×ÁÇ̾
     * @param item_name ¸¡º÷·ë²ÌÍ×ÁÇ̾
     */
    public XmlResponseSax(String root_name, String item_name) {
      this.itemKey = root_name + item_name;
      this.itemName = item_name;
    }

    /* (non-Javadoc)
     * @see org.xml.sax.helpers.DefaultHandler#characters(char[], int, int)
     */
    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
      if (this.map != null) {
        String key = this.tag_path.substring(itemKey.length());
        this.map.put(key, new String(ch, start, length));
      }
    }

    /**
     * ½¸·×·ë²Ì¥ê¥¹¥È¤òÊÖ¤¹
     * @return
     */
    public List<Map> getResultList() {
      return this.list;
    }

    /* (non-Javadoc)
     * @see org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
     */
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
      if (itemName.equals(qName)) {
        this.map = new HashMap<String,String>();
      }
      this.tag_path += qName;
    }
    
    /* (non-Javadoc)
     * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String, java.lang.String, java.lang.String)
     */
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
      if (itemName.equals(qName)) {
        this.list.add(this.map);
        this.map = null;
      }
      this.tag_path = this.tag_path.substring(0, this.tag_path.length() - qName.length());
    }
  }
}


¼Â¹Ô·ë²Ì
java jp.co.powerbeans.ws.sample.yahoo.YahooWebService

[ñ¸ì]»ä [ÆÉ¤ßÊý]¤ï¤¿¤· [ÉÊ»ì]̾»ì
[ñ¸ì]¤Î [ÆÉ¤ßÊý]¤Î [ÉÊ»ì]½õ»ì
[ñ¸ì]̾Á° [ÆÉ¤ßÊý]¤Ê¤Þ¤¨ [ÉÊ»ì]̾»ì
[ñ¸ì]¤Ï [ÆÉ¤ßÊý]¤Ï [ÉÊ»ì]½õ»ì
[ñ¸ì]¥Ñ¥ï¡¼ [ÆÉ¤ßÊý]¤Ñ¤ï¡¼ [ÉÊ»ì]̾»ì
[ñ¸ì]¥Ó¡¼¥ó¥º [ÆÉ¤ßÊý]¤Ó¡¼¤ó¤º [ÉÊ»ì]̾»ì
[ñ¸ì]¤Ç¤¹ [ÆÉ¤ßÊý]¤Ç¤¹ [ÉÊ»ì]½õư»ì
[ñ¸ì]¡£ [ÆÉ¤ßÊý]¡£ [ÉÊ»ì]ÆÃ¼ì


¼Â¹Ô·ë²Ì¤ò¸«¤ë¤Èʬ¤«¤ë¤è¤¦¤Ë¡¢Ã±¸ì¤ÎÆÉ¤ßÊý¤âÊÖ¤·¤Þ¤¹¡£
¤³¤ÎÆÉ¤ßÊý¤ò¼èÆÀ¤¹¤ëµ¡Ç½¤À¤±¤Ç¤âÈó¾ï¤ËÍ­ÍѤ«¤â¤·¤ì¤Þ¤»¤ó¡£
»È¤¤Êý¼¡Âè¤Ç¤Ï¡¢»ë³Ð¾ã³²¼Ô¸þ¤±²»ÆÉ¥½¥Õ¥È¡¢²»ÆÉ¥·¥¹¥Æ¥à
¤Î´ðËܵ»½Ñ¤È¤·¤Æ¤Î³èÍѤ¹¤ë¤³¤È¤â¤Ç¤­¤½¤¦¤Ç¤¹¡£

4. PHP¤Ç·ÁÂÖÁǸ¡º÷¸¡º÷

PHPÈÇ¥µ¥ó¥×¥ë¤ò¸ø³«¤·¤Þ¤¹¡£
¥×¥ê¥ó¥¿½ÐÎÏÍѲèÌÌ Í§Ã£¤ËÅÁ¤¨¤ë
̵ÎÁ¸«ÀÑ¡¦ÁêÃÌ
¥í¥°¥¤¥ó
¥æ¡¼¥¶Ì¾:

¥Ñ¥¹¥ï¡¼¥É:


¥Ñ¥¹¥ï¡¼¥Éʶ¼º

¿·µ¬ÅÐÏ¿
¸¡º÷

¹âÅ٤ʸ¡º÷
¥¢¥¯¥»¥¹²òÀÏ£¸¡¡WEB¥µ¡¼¥Ó¥¹¥µ¥ó¥×¥ë½¸
¤³¤Î¥µ¥¤¥È¤Ï OpenFootStep ¤Ç¥¢¥¯¥»¥¹²òÀÏÃæ¤Ç¤¹