2. XML-RPC ¤È¤Ï¡©

XML-RPC ¤Ï HTTP ¾å ¤Ç¥ê¥â¡¼¥È¼ê³¤­¸Æ¤Ó½Ð¤·¤ò¹Ô¤¦¤¿¤á¤Î´Êñ¤Ç¼ê·Ú¤ÊÊýË¡¤Ç¤¹¡£Perl, Java, Python, C, C++, PHP ¤ä¿¤¯¤Î¾¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ç»ÈÍѤǤ­¤Þ ¤¹¡£Unix ¤È Windows, Macintosh ¾å¤ÇÍøÍѲÄǽ¤Ç¤¹¡£

Perl ¤Ç½ñ¤«¤ì¤¿Ã»¤¤ XML-RPC ¥¯¥é¥¤¥¢¥ó¥È¤ò¼¨¤·¤Þ¤¹ (Ken MacLeod ¤Î Frontier::Client ¤ò»ÈÍѤ·¤Þ¤¹)¡£

use Frontier::Client;
$server = Frontier::Client->new(url => 'http://betty.userland.com/RPC2');
$name = $server->call('examples.getStateName', 41);
print "$name\n";

¼Â¹Ô¤¹¤ë¤È¡¢¤³¤Î¥×¥í¥°¥é¥à¤Ï¥ê¥â¡¼¥È¤Î¥µ¡¼¥Ð¤ËÀܳ¤·¡¢½£Ì¾¤òÆÀ ¤Æ¡¢¤½¤ì¤òɽ¼¨¤·¤Þ¤¹ (¤³¤ÎÎã¤Î½£ÈÖ¹æ 41 ¤Ï South Dakota ¤Î¤Ï¤º¤Ç¤¹)¡£

Python ¤Ç¤ÎƱ¤¸¥×¥í¥°¥é¥à¤Ç¤¹ (¤³¤ì¤Ç¤Ï Fredrik Lundh ¤Î xmlrpclib ¤ò»È¤¤¤Þ¤¹)¡£

python> import xmlrpclib
python> server = xmlrpclib.Server("http://betty.userland.com/RPC2")
python> server.examples.getStateName(41)
'South Dakota'

°Ê¹ß¤Î¾Ï¤Ç¤Ï¡¢ÍÍ¡¹¤Ê¸À¸ì¤Ç XML-RPC ¥¯¥é¥¤¥¢¥ó¥È¤ª¤è¤Ó¥µ¡¼¥Ð¤Î½ñ ¤­Êý¤ò³Ø¤Ó¤Þ¤¹¡£

2.1. ¤É¤Î¤è¤¦¤Ëưºî¤¹¤ë¤Î¤«

XML-RPC ¤Ï Dave Winer ¤Î¸ø¼°»ÅÍͽñ¤Ç¾ÜºÙ¤ËÀâÌÀ¤µ ¤ì¤Æ¤¤¤Þ¤¹¡£¶½Ì£¤¬¤¢¤ë¤Ê¤é¡¢À§Èó¤´Í÷¤Ë¤Ê¤Ã¤Æ¤¯¤À¤µ¤¤¡£´Ê·é¤ÇÌÀ²ò¤Ê ʸ½ñ¤Ç¤¹¡£

ÄÌ¿®¤¹¤ë¾å¤Ç¡¢XML-RPC ¤ÎÃÍ¤Ï XML ¤Ë¥¨¥ó¥³¡¼¥É¤µ¤ì¤Þ¤¹ -

<methodCall>
  <methodName>sample.sumAndDifference</methodName>
  <params>
    <param><value><int>5</int></value></param>
    <param><value><int>3</int></value></param>
  </params>
</methodCall>

¾åµ­¤Ï¾éŤǤ¹¤¬¡¢´Êñ¤Ë°µ½Ì¤Ç¤­¤Þ¤¹¡£¤Þ¤¿¡¢Í½Á۰ʾå¤Ë®¤¤ ¤Ç¤¹ - Rick Blair ¤Î¬Äê¤Ë¤è¤ì¤Ð¡¢Hannes Wallnöæer ¤Î Java ¤Ç¤Î¼ÂÁõ¤ò»È¤¦¤È XML-RPC ¸Æ¤Ó½Ð¤·¤Î±þÅú»þ´Ö¤Ï 3 ¥ß¥êÉäǤ¹¡£

2.2. ¥µ¥Ý¡¼¥È¤µ¤ì¤ë¥Ç¡¼¥¿¤Î¼ïÊÌ

XML-RPC ¤Ï°Ê²¼¤Î¥Ç¡¼¥¿¤Î¼ïÊ̤ò¥µ¥Ý¡¼¥È¤·¤Þ¤¹¡£

int

É乿ÉÕ 32 ¥Ó¥Ã¥ÈÀ°¿ô

string

ASCII ʸ»úÎó¤Ç¶õ¥Ð¥¤¥È¤âµö¤µ¤ì¤Þ¤¹¡£(¼ÂºÝ¤Ë¤Ï¤¿¤¯¤µ¤ó¤Î XML-RPC ¤Î¼ÂÁõ¤¬ Unicode ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤¹¡£XML ¤Î´ðËܵ¡ ǽ¤Ë´¶¼Õ¡£)

boolean

¿¿¤«µ¶¤Î¤É¤Á¤é¤«

double

ÇÜÀºÅÙÉâÆ°¾®¿ôÅÀ¼Â¿ô (¼ÂºÝ¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¼ÂÁõ¤Ç»È¤¨¤Ê¤¤ ¤«¤â¤·¤ì¤Þ¤»¤ó)

dateTime.iso8601

ÆüÉդȻþ¹ï¡£»Äǰ¤Ê¤¬¤é¡¢XML-RPC ¤Ï¥¿¥¤¥à¥¾¡¼¥ó¤Î»ÈÍѤò ¶Ø»ß¤·¤Æ¤¤¤ë¤Î¤Ç¡¢¤³¤ì¤Ï¤Û¤È¤ó¤ÉÌò¤ËΩ¤Á¤Þ¤»¤ó¡£

base64

Ǥ°ÕŤÎÀ¸¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿ - ÄÌ¿®¾å Base64 ¤ò»ÈÍѤ·¤Æ ¥¨¥ó¥³¡¼¥É¤µ¤ì¤Þ¤¹¡£¤È¤Æ¤âÌòΩ¤Á¤Þ¤¹ (¤±¤ì¤É¤â¤¤¤¯¤Ä¤«¤Î¼ÂÁõ ¤Ç¤Ï 0 ¥Ð¥¤¥È¤Î¥Ç¡¼¥¿¼õ¿®¤¬¹Ô¤¨¤Þ¤»¤ó)¡£

array

Ãͤΰ켡¸µÇÛÎ󡣸ġ¹¤ÎÃͤϤɤó¤Ê¼ïÊ̤Ǥ⤫¤Þ¤¤¤Þ¤»¤ó

struct

¥­¡¼¤ÈÃͤν¸¤Þ¤ê¡£¥­¡¼¤Ïʸ»úÎó¤Ç¤¹ - ÃͤϤɤó¤Ê¼ïÊÌ ¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£

2.3. XML-RPC ¤ÎÎò»Ë

XML-RPC ¤Ï¡¢Àè¹Ô¤¹¤ëÆó¤Ä¤Î¥×¥í¥È¥³¥ë¤«¤éÃåÁÛ¤òÆÀ¤Æ¤¤¤Þ¤¹¡£¤½ ¤Î°ì¤Ä¤Ï¡¢anonymous RPC ¤Ç¤¢¤ê¡¢¤³¤ì¤Ï Dave Winer ¤Ë¤è¤êÀ߷פµ¤ì¡¢ ²áµî¤Ë DaveNet ¤Ç¤Î¥¨¥Ã¥»¥¤¤È¤·¤ÆÈ¯É½¤µ¤ì¤¿¤â¤Î¤Ç¤¹ (XML-RPC ¥µ¡¼ ¥Ð¤¬ /RPC2 ²¼¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¤³¤È¤¬Â¿¤¤¤Î ¤Ï¤³¤Î¤¿¤á¤Ç¤¹)¡£¤â¤¦°ì¤Ä¤Î¡¢¤è¤ê½ÅÍפÊÃåÁۤϡ¢SOAP ¥×¥í¥È¥³¥ë¤Î½é ´ü¥É¥é¥Õ¥È¤Ë¤è¤ë¤â¤Î¤Ç¤¹¡£

¤è¤ê¾Ü¤·¤¤ XML-RPC ¤ÎÎò»Ë¤È¤¤¤¦Ê¸½ñ¤ò Dave Winer ¤¬Ä󶡤·¤Æ¤¯¤ì¤Æ¤¤ ¤Þ¤¹¡£¤³¤Îʸ½ñ¤Ç¤Ï¡¢XML-RPC ¤È SOAP ¤È¤Î´Ø·¸¤Ë¤Ä¤¤¤Æ¤âÀâÌÀ¤µ¤ì¤Æ¤¤ ¤Þ¤¹¡£