Hatena::¥Ö¥í¥°(Diary)

°Å¹æ¡¢¿ô³Ø¡¢»þ¡¹¥×¥í¥°¥é¥ß¥ó¥° ¤³¤Î¥Ú¡¼¥¸¤ò¥¢¥ó¥Æ¥Ê¤ËÄɲà RSS¥Õ¥£¡¼¥É

2008-04-16

Datastore ¤Ëµã¤¤¤¿¥¢¥Ê¥¿¤ËÊû¤°¡ÊÃæÊÔ­¡¡Ë - Google App Engine

| 05:04 | Datastore ¤Ëµã¤¤¤¿¥¢¥Ê¥¿¤ËÊû¤°¡ÊÃæÊÔ­¡¡Ë  - Google App Engine¤ò´Þ¤à¥Ö¥Ã¥¯¥Þ¡¼¥¯

1¤Ä¤Î¥¨¥ó¥È¥ê¤Ë¤É¤Î¤¯¤é¤¤¤ÎʬÎ̤òµÍ¤á¹þ¤à¤«¡©¤ò¹Í¤¨¤ë¤Î¤Ï·ë¹½Æñ¤·¤¤¡£ÌÞÏÀ¡¢»Å»ö¤ÎÊÒ¼ê´Ö¤Ç¤ä¤Ã¤Æ¤¤¤ëºî¶È¤Ê¤Î¤Ç1²ó¤ÇÁ´¤Æ¤òÊÒÉÕ¤±¤ë¤Î¤Ï̵Íý¤Ê¤Î¤À¤¬¡¢¤½¤â¤½¤âµ­»ö¤È¤·¤ÆÆÉ¤ó¤Ç¤â¤é¤¦¤Î¤ËŬÀÚ¤ÊŤµ¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤½¤¦¡£¤¢¤ó¤Þ¤êŤ¤¤È¡Ö¤¢¤È¤ÇÆÉ¤à¡×°·¤¤¤Ë¤Ê¤Ã¤Æ¸å¤Ï¤½¤Î¤Þ¤Þ¡¢¡¢¤Ê¤ó¤Æ¥³¥È¤Ë¤Ê¤ê¤¬¤Á¤Ê¤ó¤¸¤ã¤Ê¤¤¤À¤í¤¦¤«¡£¡£¡£¤»¤Ã¤«¤¯Google App Engine ¤Ã¤ÆÌÌÇò¤¤¥ª¥â¥Á¥ã¤Ë¶½Ì£¤ò»ý¤Ã¤Æ¤¯¤ì¤¿¿Í¤¬¤¤¤ë¤Î¤Ë¡¢¤½¤ì¤Ï¾¯¤·»Äǰ¡£

¤â¤Á¤í¤ó¡¢²¿¤«¤ò³Ø¤Ö»þ¤Ë½ÐÍè¤ë¸Â¤ê³Ú¤·¤¯¤¹¤ë¤è¤¦¿´¤¬¤±¤ë»ö¤Ï½ÐÍè¤Æ¤â¡¢¥é¥¯¤Ë¤¹¤ë¤³¤È¤Ï̵Íý¤ÊÏäʤó¤À¤í¤¦¤È»×¤¦¡£·Ñ³¤¹¤ë°Ù¤Ë¼«Ê¬¤Î¥Ú¡¼¥¹¤Ç¹¥¤­¤Ë¶èÀÚ¤ê¤ò¤Ä¤±¤ë¤Î¤Ï¼õ¤±¼ê¤Î¼«¸ÊÀÕǤ¤Ã¤Æ¸À¤Ã¤Æ¤âÎɤ¤¤Î¤«¤âÃΤì¤Ê¤¤¡£¤Ç¤â¡¢¤»¤Ã¤«¤¯µ¯¤³¤Ã¤¿¡Ö¥ä¥ëµ¤¡×¤ò»ý³¤µ¤»¤ë°Ù¤Ë¡¢¼«Ê¬¤Ë²¿¤«½ÐÍè¤Ê¤¤¤ó¤À¤í¤¦¤«¡©¤È¹Í¤¨¤º¤Ë¤Ï¤¤¤é¤ì¤Ê¤¤¡£¡Ê¤Þ¤¡¡¢¼ê¤Ã¼è¤êÁ᤯Google App Engine ¤Î¥¢¥×¥ê¤¬ºî¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤¿¤¤¥À¥±¤Ç¤¢¤ì¤Ð¡¢¸ø¼°¥É¥­¥å¥á¥ó¥È¤ò¸«¤ë¤è¤êÆþÌç¹ÖºÂ¤ß¤¿¤¤¤Ê¤Î¤òÆÉ¤ó¤À¤Û¤¦¤¬Îɤ¤¤Ã¤ÆÀâ¤â¤¢¤ë¤Î¤Ç¡¢Ç»¤¤ÌܤʾðÊó¤Ë¿¨¤ì¤¿¤¤¤Ã¤Æ¿Í¤¬¥¿¡¼¥²¥Ã¥È¤À¡¢¤Ã¤Æ¹Í¤¨Êý¤ò´º¤¨¤Æ¤·¤Æ¤ß¤ë¤Î¤â¥¢¥ê¤Ê¤Î¤«¤âÃΤì¤Ê¤¤¤±¤É¤â¡Ë

¤Ê¤ó¤Æ»ö¤ò¹Í¤¨¤Ê¤¬¤é¡¢º£Æü¤âºòÆü¤Î¥¨¥ó¥È¥ê¤Ë°ú¤­Â³¤­Datastore API ¤Ë¤Ä¤¤¤Æ¤ÎĶÌõºî¶È¤ò³¤±¤Æ¤¤¤³¤¦¤È»×¤¦¡£¤¯¤É¤¤¤è¤¦¤À¤¬¡¢¤¢¤¯¤Þ¤ÇĶÌõ¤Ê¤Î¤Ç¡¢¤³¤³¤Ë¤¢¤ë»ö¤òÁ´¤Æ±­ÆÝ¤ß¤Ë¤»¤º¡¢É¬Íפ˱þ¤¸¸¶Ê¸¤ò¤´³Îǧ´ê¤¤¤¿¤¤¡£


¤¢¤¤¤µ¤Ä


¤ä¤¢¡ªÂԤäƤ¿¤è¡£¤è¤¯Í褿¤Í¡ªºòÆü¤ÎÏäϥɥ¦¤À¤Ã¤¿¤«¤Ê¡©¤Á¤ç¡¼¤Ã¤È³µÇ°Åª¤Ç¥¤¥Þ¥¤¥Á¤À¤Ã¤¿¤«¤âÃΤì¤Ê¤¤¡£¤Þ¤À¤É¤¦¤¤¤¦É÷¤ËAPI¤ò»È¤¦¤Î¤«¡©Á´ÂΤ⸫¤ì¤Æ¤Ê¤«¤Ã¤¿¤·¤Í¡ª¡¡¤½¤ó¤Ê·¯¤Î¤¿¤á¤Ë¡¢º£Æü¤Ï¤â¤¦¤Á¤ç¤Ã¤È¿¼¤¤¤È¤³¤í¤Þ¤Ç¹¶¤á¹þ¤ó¤Ç¤ß¤è¤¦¤È»×¤¦¡£´üÂÔ¤·¤Æ¤Æ¤¯¤ì¤è¡¼¡ª


¥Ç¡¼¥¿¤ÎÀ¸À®¡¢¼èÆÀ¡¢ºï½ü


Datastore API ¤ò»È¤Ã¤Æ¥â¥Ç¥ë¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¢¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤òɽ¸½¤¹¤ë¤Ã¤Æ¤Î¤Ï¡¢ºòÆü¤ÎÏäǥ¤¥á¡¼¥¸¤¬ÄÏ¤á¤Æ¤ë¤ó¤¸¤ã¤Ê¤¤¤«¤È»×¤¦¡£¤½¤³¤Ç¡¢º£²ó¤Ï¼ÂºÝ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Îºî¤êÊý¤äÊÔ½¸¤Î¤·¤«¤¿¡¢¤½¤ì¤Ëºï½ü¤ÎÊýË¡¡¢¤Ê¤ó¤Æ¤¢¤¿¤ê¤ò¾Ò²ð¤µ¤»¤Æ¤â¤é¤¦¥¼¡ª¡¡

¾Ò²ð¤·¤Æ¤¤¤¯½çÈ֤Ϥ³¤ó¤Ê´¶¤¸¤Ë¤Ê¤ë¡ª

  • ¥¨¥ó¥Æ¥£¥Æ¥£¤ÎÀ¸À®¤È¹¹¿·
  • ¡¡¥¯¥¨¥ê¤ò»È¤Ã¤¿¥¨¥ó¥Æ¥£¥Æ¥£¤Î¼è¤ê½Ð¤·
  • ¡¡¥­¡¼¤ò»È¤Ã¤¿¥¨¥ó¥Æ¥£¥Æ¥£¤Î¼è¤ê½Ð¤·
  • ¡¡¥¨¥ó¥Æ¥£¥Æ¥£¤Îºï½ü

¤½¤ì¤¸¤ã¤¢Áᮤ¤¤Ã¤Æ¤ß¤è¤¦¡ª


¥¨¥ó¥Æ¥£¥Æ¥£¤ÎÀ¸À®¤È¹¹¿·

·«¤êÊÖ¤·¤Ë¤Ê¤ë¤¬¡¢Model¥¯¥é¥¹¡Ê¤ÈExpando¥¯¥é¥¹¡Ë¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò»È¤Ã¤ÆDatastore¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ïɽ¸½¤µ¤ì¤ë¡£²£Ê¸»ú¤Ð¤Ã¤«Ê¤ó¤Ç¤ë¥±¥É¤â¤¦Âç¾æÉפÀ¤è¤Ê¡©¡¡¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¿·¤·¤¤¥¨¥ó¥Æ¥£¥Æ¥£¤òModel¥¯¥é¥¹¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ò»È¤Ã¤ÆÀ¸À®¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤ó¤À¥¼¡ª¥³¥³¤Ç¤É¤ó¤Ê¤â¤Î¤¬À¸À®¤µ¤ì¤ë¤«¤Ï¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤Æ¤ë¥â¥Ç¥ë¼¡Âè¤Ë¤Ê¤ë¥±¥É¤Ê¡ª

Î㤨¤Ð¡¢ºî¤êÊý¤Ï¤³¤ó¤Ê´¶¤¸¤À¡ª

pet = Pet(name="Fluffy",
         type="cat",
         owner=users.get_current_user())

¤À¤¬¡¢¤³¤³¤Ç°Â¿´¤·¤Á¤ã¤ï¤Ê¤¤¤Ç¤¯¤ì¡ªÁ°¤Ë¤â¤¤¤Ã¤¿¤È»×¤¦¤¬¡¢À¸À®¤µ¤ì¤¿Åö½é¤Ï¥¤¥ó¥¹¥¿¥ó¥¹¤¬put¤µ¤ì¤ë¤Þ¤Ç¤Ïdatastore¾å¤Ë¤Ï¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¸ºß¤·¤Æ¤¤¤Ê¤¤¤ó¤À¡ª¤À¤«¤é¡¢¥¤¥ó¥¹¥¿¥ó¥¹¤Îput()¥á¥½¥Ã¥É¤ò¥³¡¼¥ë¤¹¤ë¤«¡¢db.put()´Ø¿ô¤Ë¥¤¥ó¥¹¥¿¥ó¥¹¼«¿È¤ò°ú¤­ÅϤ¹¤«¡¢¤É¤Ã¤Á¤«¤ò¤ä¤Ã¤Ædatastore¾å¤ÇÍ­¸ú¤Ê·Á¤Ë¤·¤ÆÍߤ·¤¤¡ª

¤Ä¤Þ¤ê¤³¤ó¤Ê´¶¤¸¤À¤Ê¡ª

# ¥¤¥ó¥¹¥¿¥ó¥¹¤Îput()¥á¥½¥Ã¥É¤ò¥³¡¼¥ë
pet.put()

# db.put()´Ø¿ô¤Ë¥¤¥ó¥¹¥¿¥ó¥¹¼«¿È¤ò°ú¤­ÅϤ¹
db.put(pet)

¤Á¤Ê¤ß¤Ë¡¢´û¤ËDatastore¾å¤Ë¸ºß¤·¤Æ¤¤¤ë¥¤¥ó¥¹¥¿¥ó¥¹¤ËÂФ·¤Æput()¥á¥½¥Ã¥É¤ò»È¤Ã¤¿¾ì¹ç¡¢¾å½ñ¤­°·¤¤¤Ë¤Ê¤ë¥¼¡ª ¤½¤ì¤«¤é¥¯¥¨¥ê¤Î·ë²Ì¤â¥â¥Ç¥ë¥¤¥ó¥¹¥¿¥ó¥¹¤È¤·¤ÆÊ֤äƤ¯¤ë¤ó¤À¤¬¡¢¼Â¤Ï¥³¥¤¥ÄÅù¤âÊѹ¹¤·¤¿¤êdatastore¤ËÌᤷ¤¿¤ê¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤ó¤À¡ª¡¡

Îã¤ò¸«¤Æ¤ß¤è¤¦¤«¡ª

if users.get_current_user():
 user_pets = db.GqlQuery("SELECT * FROM Pet WHERE pet.owner = :1",
                         users.get_current_user())
 for pet in user_pets:
   pet.spayed_or_neutered = True

 db.put(user_pets)

¤È¤ê¤¢¤¨¤º¡¢¡Öºî¤Ã¤¿¤éput¡×¡¢¡Öºî¤Ã¤¿¤éput¡×¤È3²ó¤¯¤é¤¤·«¤êÊÖ¤·¤Æ¤ß¤Æ¤¯¤ì¡ª

¥É¥¦¤À¤¤¡©¡¡¤â¤¦³Ð¤¨¤¿¤ó¤¸¤ã¤Ê¤¤¤«¡©

¤è¤·¡¢¤½¤ì¤¸¤ã¤¢¼¡¤Ë¹Ô¤³¤¦¡£


¡¡¥¯¥¨¥ê¤ò»È¤Ã¤¿¥¨¥ó¥Æ¥£¥Æ¥£¤Î¼è¤ê½Ð¤·


Datastore API ¤Ç¤Ï¥¯¥¨¥ê¤¬»È¤¨¤ë¤Ã¤Æ¤Î¤Ï´û¤Ëʹ¤¤¤Æ¤ë¤è¤Ê¡©¡¡¥¯¥¨¥ê¤ò»È¤¨¤Ð¥×¥í¥Ñ¥Æ¥£Ãͤò»È¤Ã¤¿¥Õ¥£¥ë¥¿¥ê¥ó¥°¤â½ÐÍè¤ë¤·¡¢"ancestor"¤òÍøÍѤ·¤Æ¥¨¥ó¥Æ¥£¥Æ¥£¤ÎÈϰϤòÀ©¸Â¤¹¤ë»ö¤À¤Ã¤Æ½ÐÍè¤ë¤ó¤À¡ª¤ª¤Ã¤È¡¢"ancestor" ¤Ë¤Ä¤¤¤Æ¤ÏºòÆü¤â¤Á¤ç¤Ã¤È½Ð¤Æ¤­¤¿¤È»×¤¦¤¬¡¢¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡Ö¥­¡¼¤È¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¡×¤Î¥»¥¯¥·¥ç¥ó¤Ç¿¼¤¯ÀâÌÀ¤µ¤»¤Æ¤â¤é¤¦Í½Äê¤À¤«¤é¡¢¥³¥³¤Ç¤Ï¥µ¥é¤Ã¤Èή¤·¤È¤¤¤Æ¤¯¤ì¡ª

¤½¤¦¤½¤¦¡¢¤½¤ì¤«¤é¥¯¥¨¥ê¤¬¤É¤ó¤ÊÉ÷¤Ë»È¤¨¤ë¤Î¤«¡©¤Ã¤Æ¤Î¤ò¾ÜºÙ¤ËÃΤꤿ¤¤¾ì¹ç¤Ï¡¢¡Ö¥¯¥¨¥ê¤È¥¤¥ó¥Ç¥Ã¥¯¥¹¡×¤Î¥»¥¯¥·¥ç¥ó¡Ê¼¡²óµ­»ö¡Ë¤ò¸«¤Æ¤¯¤ì¤è¤Ê¡£²¿¤¬½ÐÍè¤Æ²¿¤¬½ÐÍè¤Ê¤¤¤«¡¢¤â¤¦¾¯¤·¾Ü¤·¤¤ÀâÌÀ¤ò¤µ¤»¤Æ¤â¤é¤¦Í½Äê¤À¡ª

¤Ç¡¢¼Â¤ÏDatastoreAPI ¤Ç»È¤¨¤ë¥¯¥¨¥ê¤Ë¤Ï2¼ïÎढ¤ë¤ó¤À¡££±¤Ä¤ÏQuery¥¯¥é¥¹¡£¥³¥¤¥Ä¤ÏQuery¥ª¥Ö¥¸¥§¥¯¥È¾å¤Î¥á¥½¥Ã¥É¤ò»È¤¦¤¿¤á¤Î¤â¤ó¤À¡£¤½¤·¤Æ¤â¤¦1¤Ä¤¬GqlQuery¥¯¥é¥¹¡£¥³¥¤¥Ä¤ÏSQL¥é¥¤¥¯¤Ê¥¯¥¨¥ê¸À¸ì¤Ç¤¢¤ëGQL¤ò»È¤¦¤¿¤á¤Î¤â¤ó¤À¡£

¤½¤ì¤¸¤ã¡¢Query¤ÈGqlQuery¤È¡¢¤½¤ì¤¾¤ì¤ò½çÈÖ¤ËÀâÌÀ¤·¤Æ¤¤¤¯¤¼¡ª


Query ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹

Model¥¯¥é¥¹¡Ê¤Þ¤¿¤ÏExpando¥¯¥é¥¹¡Ë¤Îall()¥á¥½¥Ã¥É¤ÏƱ¼ï¤Î¥ª¥Ö¥¸¥§¥¯¥ÈÁ´¤Æ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤òQuery¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤ÆÊֵѤ¹¤ë·Á¤Ë¤Ê¤Ã¤Æ¤ë¡ª¤½¤·¤Æ¥¢¥×¥ê¤Ïfilter()¡¢order()¡¢ancestor()¤Ê¤ó¤Æ¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¡¢¤½¤ÎQuery¥ª¥Ö¥¸¥§¥¯¥È¤«¤éɬÍפʥǡ¼¥¿¤ò¼è¤ê½Ð¤¹¥³¥È¤¬½ÐÍè¤ë¥¼¡ª

¤Á¤ç¤Ã¤ÈÎã¤ò¸«¤Æ¤ß¤è¤¦¤«¡£

class Story(db.Model):
 title = db.StringProperty()
 date = db.DateTimeProperty()

query = Story.all()

query.filter('title =', 'Foo')
query.order('-date')
query.ancestor(key)

# ¤Á¤Ê¤ß¤Ë¾åµ­¤Î¥á¥½¥Ã¥É¤ÏÏ¢·ë¤·¤Æ»È¤Ã¤Æ¤âOK¡ª
query.filter('title =', 'Foo').order('-date').ancestor(key)

¸ÀÍդǤ¤¤¦¤È¤Ê¤ó¤«¤ä¤ä¤³¤·¤½¤¦¤À¤±¤É¡¢°Õ³°¤È´Êñ¤À¤í¡©


GqlQuery ¥¤¥ó¥¿¡¼¥Õ¥§¥¤¥¹

¼¡¤ÏGqlQuery¤ÎÊý¤Ë¤¤¤Ã¤Æ¤¤¤è¤¦¤«¡ª¡¡

GqlQuery¥¯¥é¥¹¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ÏGQL¤Î¥¯¥¨¥ê¥¹¥È¥ê¥ó¥°¤È¥ª¥×¥·¥ç¥ó¥Ñ¥é¥á¡¼¥¿¤ò»È¤¦¤ó¤À¡£¤Á¤Ê¤ß¤Ë¡Ö¥¯¥¨¥ê¥¹¥È¥ê¥ó¥°¡×¤Ã¤Æ¤Î¤Ï¥Ç¡¼¥¿¤Î¼ïÊ̤Ȥ«¥Õ¥£¥ë¥¿¾ò·ï¤È¤«¡¢¥½¡¼¥È½ç¤È¤«"ancestor"¤Î¾ò·ï¤Ê¤ó¤«¤òÆþ¤ì¹þ¤à¤È¤³¤í¤Ê¡£¥³¥¤¥Ä¤Ï½ÐÎÏ·ë²Ì¤Î¾å¸Â¤È¤«¥ª¥Õ¥»¥Ã¥È¤ò´Þ¤à¤³¤È¤â½ÐÍè¤ë¤ó¤À¥¼¡ª

¥Ô¥ó¤ÈÍè¤Ê¤¤¤Ê¤é¡¢¤Þ¤º¤ÏÎã¤ò¸«¤Æ¤¯¤ì¡ª

# ¥Ñ¥é¥á¡¼¥¿¤Î»È¤¤Êý(¥Ý¥¸¥·¥ç¥ó¤Ç»ØÄê¡Ë
query = db.GqlQuery("SELECT * FROM Story WHERE title = :1 "
                   "AND ANCESTOR IS :2 "
                   "ORDER BY date DESC",
                   'Foo', key)

# ¥Ñ¥é¥á¡¼¥¿¤È¤·¤Æ¥­¡¼¥ï¡¼¥É¤ò»È¤Ã¤Æ¤âOK
query = db.GqlQuery("SELECT * FROM Story WHERE title = :title "
                   "AND ANCESTOR IS :parent "
                   "ORDER BY date DESC",
                   title='Foo', parent=key)

# ʸ»úÎ󡢿ô»ú¡¢¿¿µ¶Ãͤʤ󤫤â»È¤¨¤ë
query = db.GqlQuery("SELECT * FROM Story WHERE title = 'Foo' "
                   "AND ANCESTOR IS :parent "
                   "ORDER BY date DESC",
                   parent=key)

¤½¤ì¤«¤é¡¢Model¥¯¥é¥¹¤Îgql()¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¤âOK¤À¡£¤³¤Î¾ì¹ç¡¢GQL¥¯¥¨¥ê¥¹¥È¥ê¥ó¥°¤È¤·¤Æ¡ÖSELECT * FROM Model¡×¤ÎÉôʬ¤Ï¾Êά¤µ¤ì¤ë¤«¤éÃí°Õ¤·¤Æ¤¯¤ì¤è¤Ê¡ª

query = Story.gql("WHERE title = :title "
                 "AND ANCESTOR IS :parent "
                 "ORDER BY date DESC",
                 title='Foo', parent=key)

¤Á¤Ê¤ß¤Ë¡¢bind()¥á¥½¥Ã¥É¤ò»È¤¦¤³¤È¤Ç°ìÅÙ¼èÆÀ¤·¤¿GqlQuery¥ª¥Ö¥¸¥§¥¯¥È¤òºÆÍøÍѤ¹¤ë»ö¤¬½ÐÍè¤ë¤ó¤À¡ª¥³¥ì¤ò»È¤¦¤È¡¢£±¤«¤éGqlQuery¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤í¤¦¤È¤¹¤ë¤è¤êÁ᤯½èÍý¤Ç¤­¤½¤¦¤Ã¤Æ¤Î¤Ï¥¤¥á¡¼¥¸¤Ç¤­¤ë¤«¤¤¡©·ë¹½¥Ý¥¤¥ó¥È¤Ë¤Ê¤ë¤È¤³¤À¤«¤é¡¢¤Á¤ã¤ó¤È¥Á¥§¥Ã¥¯¤·¤È¤¤¤Æ¤¯¤ì¤è¡ª


¥¯¥¨¥ê¤Î¼Â¹Ô¤È·ë²Ì¤Ø¤Î¥¢¥¯¥»¥¹

Query¥ª¥Ö¥¸¥§¥¯¥È¤âGqlQuery¥ª¥Ö¥¸¥§¥¯¥È¤â¡¢¼Â¤Ï¥¢¥×¥ê¤¬¤½¤Î·ë²Ì¤Ë¥¢¥¯¥»¥¹¤·¤è¤¦¤È¤¹¤ë¤Þ¤Ç¤Ï¥¯¥¨¥ê¤ò¼Â¹Ô¤·¤Ê¤¤¤ó¤À¡£¤Ä¤Þ¤ê¡¢¥¢¥×¥ê¤¬·ë²Ì¤Ë¥¢¥¯¥»¥¹¤·¤è¤¦¤È¤·¤¿»þ¤Ë¥¯¥¨¥ê¤¬¼Â¹Ô¤µ¤ì¡¢Model¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤È¤·¤Æ¥á¥â¥ê¤ËÆÉ¤ß¹þ¤Þ¤ì¤ë¤Ã¤Æ¥³¥È¤À¤Ê¡£¤Á¤Ê¤ß¤Ë¡¢¤É¤Ã¤Á¤Î¥¯¥é¥¹¤â·ë²Ì¤Ø¤Î¥¢¥¯¥»¥¹ÊýË¡¤Ï£²¤Ä¤¢¤ë¡£1¤Ä¤¬fetch()¥á¥½¥Ã¥É¤ò»È¤¦ÊýË¡¡¢¤½¤·¤Æ¤â¤¦1¤Ä¤¬¥¤¥Æ¥ì¡¼¥¿¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤À¡£

fetch()¥á¥½¥Ã¥É¤ÏÊֵѤµ¤ì¤ë·ë²Ì¤Î¾å¸ÂÃͤò¡Öfetch(¾å¸ÂÃ͡ˡפηÁ¼°¤Çɽ¸½¤¹¤ë¤¼¡ª¤½¤ì¤«¤é¥ª¥×¥·¥ç¥ó¤Ç¥¹¥­¥Ã¥×¤¹¤ë¥ª¥Õ¥»¥Ã¥È¤ò»ØÄꤹ¤ë»ö¤â¤Ç¤­¤ë¡£½ñ¤­Êý¤È¤·¤Æ¤Ïfetch(¾å¸ÂÃÍ, offset=¥ª¥Õ¥»¥Ã¥ÈÃ͡ˤäƴ¶¤¸¤Ë¤Ê¤ë¡£¾å¸ÂÃͤÎÉôʬ¤Ç»ØÄꤷ¤Æ¤ë¤Î¤¬¡¢datastore¤«¤é°ú¤ÃÄ¥¤Ã¤Æ¤¯¤ë·ë²Ì¤Î¿ô¤Ç¡¢¥ª¥Õ¥»¥Ã¥È¤Ç»ØÄꤹ¤ë¤Î¤¬¼ÂºÝ¤Ë¥á¥½¥Ã¥É¤Î·ë²Ì¤È¤·¤ÆÊÖ¤µ¤ì¤ë·ë²Ì¤Î¿ô¤Ã¤Æ¥³¥È¤Ë¤Ê¤Ã¤Æ¤ë¥¼¡ª ´Êñ¤Ë¤Þ¤È¤á¤ë¤È¡¢¤Þ¤º¤Ï¥á¥â¥ê¾å¤Ë¾å¸ÂÃͤޤǤÎÁ´¤Æ¤Î·ë²Ì¤ò°ú¤ÃÄ¥¤Ã¤Æ¤­¤Æ¡¢¤½¤ì¤«¤é½é¤á¤Æ¥ª¥Õ¥»¥Ã¥È¤Ë½¾¤Ã¤¿·ë²Ì¤òÊÖ¤¹°Ù¤Î½èÍý¤¬¹Ô¤ï¤ì¤ë¤Ã¤Æ¥ï¥±¤À¤Ê¡£¤Ä¤Þ¤ê¡¢¥ª¥Õ¥»¥Ã¥È¤Ç»ØÄꤹ¤ëÃͤÏdatastore¤«¤é¤È¤Ã¤Æ¤¯¤ë·ë²Ì¤Î¿ô¤Ë¤Ï±Æ¶Á¤òÍ¿¤¨¤Ê¤¯¤Æ¡¢¤¢¤¯¤Þ¤Ç¤âfetch()¥á¥½¥Ã¥É¤Î¼Â¹Ô·ë²Ì¤òÊÖ¤¹Ãʳ¬¤Ç»È¤ï¤ì¤ë¥À¥±¤Ã¤ÆÏäÀ¡£

fetch()¥á¥½¥Ã¥É¤Î»È¤¤Êý¤Ï¤³¤ó¤Ê´¶¤¸¤Ë¤Ê¤ë¡£

results = query.fetch(10)
for result in results:
 print "Title: " + result.title

fetch()¥á¥½¥Ã¥É¤Î°ú¿ô¤È¤·¤Æ»ØÄꤵ¤ì¤¿¾å¸ÂÃͤ䥪¥Õ¥»¥Ã¥ÈÃͤϡ¢GQL¥¯¥¨¥ê¥¹¥È¥ê¥ó¥°¤ÎÃæ¤ÇÍ¿¤¨¤é¤ì¤¿¾å¸ÂÃͤ䥪¥Õ¥»¥Ã¥ÈÃͤò¾å½ñ¤­¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤ë¤¼¡ªÃí°Õ¤·¤Æ¤¯¤ì¤è¡£¥¯¥¨¥ê¥ª¥Ö¥¸¥§¥¯¥È¤¬¥¤¥Æ¥ì¡¼¥¿¡ÊÈ¿Éü»Ò|·«ÊֻҡˤȤ·¤ÆÍøÍѤµ¤ì¤ë¾ì¹ç¤Ï¡¢¥¯¥¨¥ê¤Ï¾å¸ÂÃͤ䥪¥Õ¥»¥Ã¥È̵¤·¤Ç¼Â¹Ô¤µ¤ì¤ë¤ó¤À¡£¤½¤·¤Æ·ë²Ì¤Ï¥á¥â¥ê¤ËÆÉ¤ß¹þ¤Þ¤ì¡¢Model¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤È¤·¤ÆÊÖ¤µ¤ì¤ë¥ï¥±¤À¤Ê¡£

for result in query:
 print "Title: " + result.title

¤Á¤Ê¤ß¤Ë¡¢App Engine ¥µ¡¼¥Ó¥¹¤Î¥·¥¹¥Æ¥à¦¤Çµ¬Äꤷ¤Æ¤¤¤ë¾å¸ÂÃͤäƤΤ¬¤¢¤Ã¤Æ¡¢fetch()¥á¥½¥Ã¥É¤Ç»ØÄê¤Ç¤­¤ë¤Î¤Ï1000¤Þ¤Ç¤Ë¤Ê¤Ã¤Æ¤ë¡£¾å¸Â¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¤ê¡¢¤½¤ì¤òͤ¨¤Æ¤¿¤ê¤¹¤ë¾ì¹ç¤Ï¡¢1000¤¬»ØÄꤵ¤ì¤Æ¤¿¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤ë¤«¤é¡¢¤½¤³¤Ïµ¤¤ò¤Ä¤±¤Æ¤ª¤¤¤Æ¤¯¤ì¤Ã¡ª


¤¸¤ã¤¢¡¢¼¡¤Ï¥­¡¼¤ò»È¤Ã¤¿¾ì¹ç¤Ë¤Ä¤¤¤Æ¸«¤Æ¤¤¤³¤¦¤«¡£


¥­¡¼¤ò»È¤Ã¤¿¥¨¥ó¥Æ¥£¥Æ¥£¤Î¼è¤ê½Ð¤·


Datastore¤Ë¥¨¥ó¥Æ¥£¥Æ¥£¤¬Êݸ¤µ¤ì¤ë¤È¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¸Ä¡¹¤Ë¥æ¥Ë¡¼¥¯¤Ê¥­¡¼¤ò»ý¤Ä¤Ã¤ÆÏäϺòÆü¤·¤¿¤è¤Ê¡©¤³¤Î¥­¡¼¤Ã¤Æ¥ä¥Ä¤ÏKey¥¯¥é¥¹¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤È¤·¤Æºî¤é¤ì¤ë¤â¤ó¤Ê¤ó¤À¡£put()¥á¥½¥Ã¥É ¤È¤«db.put()´Ø¿ô¤Ê¤ó¤«¤ò»È¤Ã¤¿¾ì¹ç¤ËÊֵѤµ¤ì¤Æ¤¯¤ë¥¼¡ª¡¡¤½¤·¤Æ¥¨¥ó¥Æ¥£¥Æ¥£¤¬Datastore¤ËÊݸ¤µ¤ì¤¿¸å¤Ï¡¢key()¥á¥½¥Ã¥É¤ò»È¤¨¤Ð¤¤¤Ä¤Ç¤â¤½¤¤¤Ä¤Î¥­¡¼¤ò¼èÆÀ¤³¤È¤¬¤Ç¤­¤ë¤ó¤À¡ª

º£¤ÎÏäÎή¤ì¤ò¥³¡¼¥É¤Ç¸«¤ë¤È¤³¤ó¤Ê´¶¤¸¤À¤Ê¡ª

entity.put()
key = entity.key()

# ...

entity = db.get(key)

¥­¡¼¤Î¤è¤¯¤¢¤ë»È¤¤Êý¤È¤·¤Æ¤Ï¡¢Â¾¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Î¥×¥í¥Ñ¥Æ¥£¤Ë³ÊǼ¤¹¤ë¤Ã¤Æ¤Î¤¬¤¢¤ë¡£ReferenceProperty¥â¥Ç¥ë¤Îproperty¥¯¥é¥¹¤Ï¼«Æ°Åª¤Ê»²¾Èµ¡Ç½¤¬»È¤¨¤ë¤«¤é¡¢¥×¥í¥Ñ¥Æ¥£¤Ë¥â¥Ç¥ë¤Î¥¤¥ó¥¹¥¿¥ó¥¹¼«¿È¤ò³ÊǼ¤·¤¿¤¤¾ì¹ç¤Ï¡¢Ä¾ÀÜ»ØÄꤷ¤¿¤Ã¤Æ¹½¤ï¤Ê¤¤¤ó¤À¡ª¤¦¤©¡¼¤Ã¡ª¤³¤ê¤ãÊØÍø¡ª¡ª

¤Ä¤Þ¤ê¤³¤¦¤¤¤¦¤³¤È¡£

class Pet(db.Model):
 name = StringProperty()
 owner = ReferenceProperty(PetOwner)

class PetOwner(db.Model):
 name = StringProperty()

owner = PetOwner(name="Albert")
pet = Pet(name="Fluffy", owner=owner)

# ¥³¥ì¤Ï¾å¤Î¹Ô¤ÈƱ¤¸¤³¤È¤ò°ÕÌ£¤¹¤ë
pet = Pet(name="Fluffy", owner=owner.key())

¤Þ¡¢¤É¤Ã¤Á¤¬½ñ¤­¤ä¤¹¤¤¤«¡©¤Ã¤ÆÏ䫤⡢¤À¤Ê¡£

ƱÍͤˤ³¤ó¤Ê»È¤¤Êý¤â¤¢¤ë¤¼¡ª

pets = GqlQuery("SELECT * FROM Pet WHERE name = :1", "Fluffy")
pet = pets.get()

owner_name = pet.owner.name

¤Á¤Ê¤ß¤Ë¡¢Expndo¤ò»È¤Ã¤¿¥À¥¤¥Ê¥ß¥Ã¥¯¥×¥í¥Ñ¥Æ¥£¤äListPropertyÍ×ÁǤʤ󤫤ˤ¢¤ë¥­¡¼¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤³¤Î¼«Æ°¤Î´ÖÀÜ»²¾È¤Ï»È¤¨¤Ê¤¤¤«¤éµ¤¤ò¤Ä¤±¤Æ¤¯¤ì¤è¤Ê¡£ReferenceProperty¤À¤±¤¬¥³¥ì¤ò»È¤¨¤ë¤Ã¤Æ¥³¥È¤À¡£

db.get()´Ø¿ô¤ò»È¤Ã¤Æ¥­¡¼¤ò»ØÄꤹ¤ì¤Ð¡¢datastore¤«¤é³ºÅö¥Ç¡¼¥¿¤ò°ú¤ÃÄ¥¤Ã¤Æ¤¯¤ë¤³¤È¤¬²Äǽ¤À¤¼¡ª¥­¡¼¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó³°¤Ë½Ð¤¹¾ì¹ç¤Î»ö¤ò¹Í¤¨¤ÆÊ¸»úÎó¤Ë¥¨¥ó¥³¡¼¥É¤¹¤ë¤³¤È¤â²Äǽ¤Ë¤Ê¤Ã¤Æ¤ë¡£¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥­¡¼¤òKey¥ª¥Ö¥¸¥§¥¯¥È¤ËÌ᤹°Ù¤Ë¤Ï¡¢¤½¤Îʸ»úÎó¤òKey¥³¥ó¥¹¥È¥é¥¯¥¿¤Ë°ú¤­ÅϤ»¤ÐOK¤À¡ª

obj = MyModel(name="Foo")
self.response.write('<a href="/view?key=%s">%s</a>' % (str(obj.key()),
                                                     obj.name()))

# ...

key_name = self.request.get('key')
obj = db.get(db.Key(key_name))

¤¿¤À¡¢¥¨¥ó¥³¡¼¥É¤Ã¤Æ¸À¤Ã¤Æ¤â°Å¹æ²½¤·¤Æ¤ë¥ï¥±¤¸¤ã¤Ê¤¤¤«¤é¤Ê¡£¥­¡¼¤ÎÃæ¿È¤ò¤Á¤ã¤ó¤È¼é¤ê¤¿¤±¤ì¤Ð¡¢ÊÌÅӰŹ沽¤È¤«¤ò¹Í¤¨¤ë¤è¤¦¤Ë¤·¤Ê¤¤¤ÈÂÌÌܤÀ¡£¤½¤³¤Ïµ¤¤ò¤Ä¤±¤Æ¤¯¤ì¤è¡ª¡¡

¡ô¡¡¤¨¡©¡¡¤ªÁ°¤Ï°Å¹æ¤Î¼ÂÁõ¤Ë¾Ü¤·¤¤¤À¤í¤¦¤Ã¤Æ¡©¡¡´õ˾¤¬Â¿¤«¤Ã¤¿¤é²¿¤«¥ª¡¼¥×¥ó¥½¡¼¥¹²½¤È¤«¹Í¤¨¤Æ¤ß¤ë¥«¥â¤Ê¡ª

¤½¤ì¤¸¤ã¡¢¼¡¤Ï¤¤¤è¤¤¤è¥Ç¡¼¥¿¤òºï½ü¤¹¤ë¾ì¹ç¤Ë¤Ä¤¤¤Æ¤À¡ª


¥¨¥ó¥Æ¥£¥Æ¥£¤Îºï½ü


¥¢¥×¥ê¤Ï¥¨¥ó¥Æ¥£¥Æ¥£¤ò¾Ã¤·¤¿¤¤¾ì¹ç¡¢¥â¥Ç¥ë¥¤¥ó¥¹¥¿¥ó¥¹¤ò»È¤¦¤«¡¢¥­¡¼¤ò»È¤¨¤ÐOK¤À¡£¥â¥Ç¥ë¥¤¥ó¥¹¥¿¥ó¥¹¤Îdelete()¥á¥½¥Ã¥É¤ÏÂбþ¤¹¤ë¥Ç¡¼¥¿¤òdatastore¤«¤é¾Ã¤·¤Æ¤¯¤ì¤ë¤¼¡ª¤Á¤Ê¤ß¤Ë¡¢delete()´Ø¿ô¤Î¾ì¹ç¤Ï¥­¡¼¡Ê¤Þ¤¿¤Ï¥­¡¼¤Î¥ê¥¹¥È¡Ë¤ò°ú¿ô¤Ë»È¤Ã¤Ædatastore¤«¤é¥¨¥ó¥Æ¥£¥Æ¥£¤òºï½ü¤¹¤ë·Á¤Ë¤Ê¤Ã¤Æ¤ë¡£

Îã¤Ç¸«¤Æ¤ß¤è¤¦¤«¡£

q = db.GqlQuery("SELECT * FROM Message WHERE create_date < :1", earliest_date)
results = q.fetch(10)
for result in results:
 result.delete()

# db.delete() ¤Î¸Æ¤Ó½Ð¤·¤Ç°ú¿ô¤È¤Ê¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤ÏÁ´¤ÆÆ±¤¸¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Ë¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
# ¤½¤¦¤¹¤ì¤ÐÁ´¤Æ¤Îºï½ü½èÍý¤¬£±¤Ä¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ÎÃæ¤ÇȯÀ¸¤µ¤»¤é¤ì¤ë¡£
q = db.GqlQuery("SELECT * FROM Message WHERE create_date < :1" +
               "AND ANCESTOR IS :2",
               earliest_date, parent)
results = q.fetch(10)
db.delete(results)

¤½¤¦¤½¤¦¡£¥¨¥ó¥Æ¥£¥Æ¥£¤òºï½ü¤·¤Æ¤â¡¢Â¾¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ç¤½¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ò»²¾È¤¹¤ë¤Î¤Ë»È¤Ã¤Æ¤¤¤¿¥­¡¼¤ÎÃͤˤϲ¿¤Î±Æ¶Á¤âȯÀ¸¤·¤Ê¤¤¤¼¡ª¤Ä¤Þ¤ê¡¢¾Ã¤µ¤ì¤¿¥¨¥ó¥Æ¥£¥Æ¥£¤Î¥­¡¼¤ò´ÖÀÜ»²¾È¤¹¤ë²ÄǽÀ­¤¬¤¢¤ë¾ì¹ç¡¢¥¢¥×¥ê¤Ï¥¢¥¯¥»¥¹¤ÎÁ°¤Ëdb.get()¤ò»È¤Ã¤Æ¥¨¥ó¥Æ¥£¥Æ¥£¤¬Â¸ºß¤·¤Æ¤ë¤«¤ò¥Á¥§¥Ã¥¯¤·¤¿Êý¤¬¥¤¥¤¤Ã¤Æ¥³¥È¤À¤Ê¡£

¤¿¤À¡¢"ancestor"¤òºï½ü¤·¤¿¤È¤·¤Æ¤â¡¢Â¾¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ë¤Ï±Æ¶Á¤Ï̵¤¤¤¼¡ª¥¢¥×¥ê¤¬¥¨¥ó¥Æ¥£¥Æ¥£¤Î¥­¡¼¤òºî¤ë¤Î¤Ë"ancestor"¤Î¸ºß¤òÁ°Äó¤È¤¹¤ë¤è¤¦¤Ê¤³¤È¤¬Ìµ¤¤¸Â¤ê¡¢¥¢¥×¥ê¤Ï"»Ò¹"¤Ë¤¢¤¿¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤Ë¥¢¥¯¥»¥¹¤·Â³¤±¤é¤ì¤ë¤Ã¤Æ¥³¥È¤À¡£¤³¤ì¤Ï¥¤¥á¡¼¥¸¤È¤·¤Æ¤Á¤ç¤Ã¤È¤ä¤ä¤³¤·¤¤¤«¤âÃΤì¤Ê¤¤¤«¤éµ¤¤ò¤Ä¤±¤Æ¤ª¤¤¤Æ¤¯¤ì¤è¡ª

¤½¤ì¤¸¤ã¡¢¼¡¤Ë¤¤¤Ã¤Æ¤ß¤è¤¦¤«¡ª


¥­¡¼¤È¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×


Datastore¤Ë¸ºß¤¹¤ëÁ´¤Æ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¥­¡¼¤ò»ý¤Ã¤Æ¤ë¤Ã¤ÆÏäϤ¹¤Ç¤ËÍý²ò¤·¤Æ¤ë¤è¤Ê¡©¥³¥¤¥Ä¤Ï³Æ¥¨¥ó¥Æ¥£¥Æ¥£¤Î¥æ¥Ë¡¼¥¯¤Ê¼±Ê̻ҤȤ·¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤ÇÍøÍѤµ¤ì¤ë¤â¤ó¤À¡£¤½¤·¤Æ¡¢¥­¡¼¤Ã¤Æ¤¤¤Ã¤Æ¤â¼Â¤Ï¤¤¤¯¤Ä¤«¤ÎÉôÉʤˤè¤Ã¤ÆÀ®¤êΩ¤Ã¤Æ¤ë¤ó¤À¡£Î㤨¤Ð¥Ñ¥¹¤Ã¤Æ¤Î¤Ï¥¨¥ó¥Æ¥£¥Æ¥£´Ö¤Î¿Æ»Ò´Ø·¸¤ò¼¨¤¹¤â¤ó¤À¤·¡¢Â¾¤Ë¥¨¥ó¥Æ¥£¥Æ¥£¤Î¼ïÊÌ¡¢¤½¤·¤Æ¥¢¥×¥ê¤Ë¤è¤Ã¤ÆÍ¿¤¨¤é¤ì¤¿Ì¾Á°¤«¡¢¿ô»ú¤Ç¹½À®¤µ¤ì¤ëID¡Êdatastore¤Ë³ä¤ê¿¶¤é¤ì¤¿¥ä¥Ä¡Ë¤Ê¤ó¤Æ¤Î¤¬¤¢¤ë¤Ê¡£

¤½¤ì¤¸¤ã¡¢½çÈÖ¤ËÀâÌÀ¤µ¤»¤Æ¤â¤é¤¦¤¼¡ªÎ®¤ì¤Ï¤³¤ó¤Ê´¶¤¸¤À¡£

  • ¼ïÊÌ¡¢Ì¾Á°¡¢ID
  • ¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¡¢"ancestor"¡¢¤½¤·¤Æ¥Ñ¥¹
  • ¥Ñ¥¹¤È¥­¡¼¤Î°ì°ÕÀ­

ÍѰդϤ¤¤¤¤«¤¤¡©


¼ïÊÌ¡¢Ì¾Á°¡¢ID

Á´¤Æ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¼ïÊ̤äƤâ¤ó¤ò»ý¤Ã¤Æ¤ë¤ó¤À¡£ºòÆü¤âÀâÌÀ¤·¤¿¤È»×¤¦¤¬¡¢Íפ¹¤ë¤Ë¤Ï¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ç¤¤¤¦¤È¤³¤í¤Î¥¯¥é¥¹¤ß¤¿¤¤¤Ê¤â¤ó¤À¤Ê¡Ê¤³¤Î¾ì¹ç¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¥¤¥ó¥¹¥¿¥ó¥¹¤Ã¤Æ¥³¥È¤Ê¡Ë¡£¤Ç¡¢¥³¥¤¥Ä¤Ï¥¯¥¨¥ê¤Ç»È¤¨¤ë¡£¤Á¤Ê¤ß¤Ë¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Æ¡¼¥Ö¥ë¤È°ã¤Ã¤ÆÆ±¤¸¼ïÊ̤Υ¨¥ó¥Æ¥£¥Æ¥£¤À¤«¤é¤Ã¤ÆÆ±°ì¤Î¥×¥í¥Ñ¥Æ¥£¤ò»ý¤¿¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤Ê¤ó¤Æ¥³¥È¤Ï¤Ê¤¤¤ó¤À¤¼¡ª¤Ã¤Æ¤³¤ì¤Ï¤â¤¦²¿ÅÙ¤«¸À¤Ã¤Æ¤ë¤Ê¡£¤¿¤À¡¢¥¢¥×¥ê¤È¤·¤Æ¤Ï´º¤¨¤Æ¤½¤¦¤¤¤¦À©¸Â¤ò¤Ä¤±¤ë¤Î¤â¥¢¥ê¤Ê¤ó¤À¤í¤¦¤È»×¤¦¥¼¡ª¤È¤Ë¤«¤¯datastore API ¤ÏModel(¤Þ¤¿¤ÏExpando¡Ë¥¯¥é¥¹¤Î¥µ¥Ö¥¯¥é¥¹¤Î̾¾Î¤ò¼ïÊÌ̾¤È¤·¤ÆÍøÍѤ¹¤ë¤ó¤À¡£

Î㤨¤Ð¡¢°Ê²¼¤ÎÎã¤À¤È¼ïÊ̤Ë"Story"¤Ã¤Æ¤Î¤òÍ¿¤¨¤é¤ì¤¿¥â¥Ç¥ë¤òµ¬Äꤷ¤Æ¤ë¥¼¡ª

class Story(db.Model):
 title = db.StringProperty()
 author = db.StringProperty()

¤Ç¡¢Á´¤Æ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ÏID¤ò»ý¤Ã¤Æ¤ë¡£¥¢¥×¥ê¤Ï¼«Ê¬¤ÇID¤ò³ä¤ê¿¶¤ë¤³¤È¤¬½ÐÍè¤ë¤ó¤À¡£¤½¤Î¾ì¹ç¤Ï¡¢°ú¿ô¤È¤·¤Ækey_name¤ò»È¤Ã¤Æ¥¤¥ó¥¹¥¿¥ó¥¹¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ò¸Æ¤Ó½Ð¤»¤Ð¥¤¥¤¡£¤¢¡¢¤Á¤Ê¤ß¤Ë¤³¤³¤Ç»È¤¨¤ë¤Î¤Ïʸ»úÎó·¿(str)¥À¥±¤Ê¡£Ãí°Õ¤·¤Æ¤¯¤ì¡£

s = Story(key_name="xzy123")

¤½¤·¤Æ¥¢¥×¥ê¤¬Ì¾Á°¤òÍ¿¤¨¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¡¢Êݸ»þ¤Ëdatastore¤«¤é¼«Æ°Åª¤Ë¿ô»ú¤ÎID¤¬³ä¤ê¿¶¤é¤ì¤ë¤ó¤À¥¼¡ª

¤Ä¤Þ¤ê¤³¤¦¤¤¤¦¤³¤È¤À¡£

s2 = Story()    # s2 ¤Ï¤³¤Î»þÅÀ¤Ç¤Ï̾Á°¤âID¤â»ý¤¿¤Ê¤¤
s2.put()        # s2 ¤³¤Î¥¿¥¤¥ß¥ó¥°¤Çdatastore¤«¤éID¤¬³ä¤ê¿¶¤é¤ì¤ë

¤½¤ì¤«¤é¡¢¤¤¤Ã¤¿¤ó̾Á°¤Ê¤êID¤Ê¤ê¤¬·è¤Þ¤ë¤È¤½¤³¤ÏÊѤ¨¤é¤ì¤Ê¤¤¤«¤éµ¤¤ò¤Ä¤±¤Æ¤¯¤ì¤è¡ª

¤¢¤È¡¢¤Á¤ç¤Ã¤È¤·¤¿¾®µ»¤ò¶µ¤¨¤È¤¯¤Ê¡£¥­¡¼¤Î̾Á°¤äID¤Ã¤Æ¤Î¤Ï¥¯¥¨¥ê¤Ç¤Ï¥×¥í¥Ñ¥Æ¥£Ãͤߤ¿¤¯¤Ï»È¤¨¤Ê¤¤¤ó¤À¤¬¡¢¼«Ê¬¤Ç̾Á°¤ò¤Ä¤±¤ë¾ì¹ç¤Ê¤ó¤«¤Ï¡¢¤½¤ì¤òÊÌÅÓ¥×¥í¥Ñ¥Æ¥£¤ËÊݸ¤·¤È¤±¤Ð»÷¤¿¤è¤¦¤Ê¤³¤È¤Ï½ÐÍè¤ë¤¼¡ª¼Â¤Ï¿ô»ú¤ÎID¤Ë¤·¤Æ¤â¤Þ¤¢Æ±¤¸¤è¤¦¤Ê¥³¥È¤¬¤Ç¤­¤Ê¤¯¤â¤Ê¤¤¡£Obj.key().id()¤ò»È¤Ã¤ÆID¤ò¼è¤ê½Ð¤»¤Ð¡¢¤½¤¤¤Ä¤òÊ̤Υץí¥Ñ¥Æ¥£¤ËÊݸ¤·¤È¤±¤ÐÎɤ¤¥ï¥±¤À¤«¤é¤Ê¡ª¡¡¤Þ¤¡¡¢»È¤¨¤Í¡¼¤È¤«Ê¸¶ç¸À¤¦Á°¤ËÈ´¤±Æ»¤Ê¤¤¤«¹Í¤¨¤í¡¢¤Ã¤Æ¥³¥È¤À¡£


¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¡¢"ancestor"¡¢¤½¤·¤Æ¥Ñ¥¹

¼Â¤Ï¡¢¤É¤ó¤Ê¥¨¥ó¥Æ¥£¥Æ¥£¤Ë¤·¤¿¤Ã¤Æ²¿¤«¤·¤é¤Î¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Î°ì°÷¤Ê¤ó¤À¡£¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Ã¤Æ¤Î¤Ï¡¢Æ±°ì¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ÎÃæ¤Ç°ì³ç¤·¤Æ½èÍý¤¬½ÐÍè¤ë1¤Ä°Ê¾å¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Î½¸¤Þ¤ê¤ß¤¿¤¤¤Ê¤â¤ó¡¢¤Ã¤Æ¸À¤¨¤Ð¤¤¤¤¤«¤â¤Ê¡£App Engine ¤Ïʬ»¶¥Í¥Ã¥È¥ï¡¼¥¯¾å¤Î´Ä¶­¤ò»È¤Ã¤Æ¤ë¤«¤é¡¢Æ±¤¸¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Ë°¤·¤Æ¤¤¤ë¤â¤Î¤Ï¡¢Æ±¤¸¤È¤³¤í¤ËÊݸ¤·¤Æ¤ª¤¤¤¿Êý¤¬²¿¤«½èÍý¤ò¤¹¤ë¤Î¤Ë¸úΨ¤¬Îɤµ¤½¤¦¤À¤Ã¤Æ¤Î¤Ï»×¤ï¤Ê¤¤¤«¤¤¡©¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ã¤Æ¤Î¤Ï¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Î°Ù¤ÎdatastoreÁàºî¤ÎÁȤ߹ç¤ï¤»¤Î¥³¥È¤Ç¡¢¤³¤Î½èÍý¤ÏÀ®¸ù¤·¤¿¾ì¹ç¤Ï¥°¥ë¡¼¥×¤ÎÁ´¤Æ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ËÂФ·¤ÆÅ¬ÍѤµ¤ì¡¢¼ºÇÔ¤·¤¿¾ì¹ç¤ÏÁ´¤Æ¤Î½èÍý¤¬¤Ê¤«¤Ã¤¿¤³¤È¤Ë¤Ê¤ë¡¢¤Ã¤Æ»ÅÁȤߤˤʤäƤ롣¤³¤ÎÏäϲ¿ÅÙ¤«´û¤Ë¤µ¤»¤Æ¤â¤é¤Ã¤Æ¤ë¤è¤Ê¡©

¤½¤ì¤«¤é¡¢¥¢¥×¥ê¤¬¥¨¥ó¥Æ¥£¥Æ¥£¤òÀ¸À®¤·¤¿»þ¤Ë¤Ï¡¢Â¾¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ò¿Æ¥¨¥ó¥Æ¥£¥Æ¥£¤È¤·¤Æ³ä¤êÅö¤Æ¤ë¤³¤È¤¬½ÐÍè¤ë¡ª¤½¤·¤Æ¿Æ¥¨¥ó¥Æ¥£¥Æ¥£¤ò³ä¤ê¿¶¤ë¤Ã¤Æ¥³¥È¤Ï¡¢¿·¤·¤¤¥¨¥ó¥Æ¥£¥Æ¥£¤ò¿Æ¥¨¥ó¥Æ¥£¥Æ¥£¤ÈƱ¤¸¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Ë½ê°¤µ¤»¤ë¡¢¤Ã¤Æ¥³¥È¤ò°ÕÌ£¤¹¤ë¤ó¤À¡ª

¤Á¤Ê¤ß¤Ë¿Æ¤ò»ý¤¿¤Ê¤¤¥¨¥ó¥Æ¥£¥Æ¥£¤Ï¥ë¡¼¥È(root)¥¨¥ó¥Æ¥£¥Æ¥£¤Ã¤Æ¸Æ¤Ð¤ì¤ë¤ó¤À¡£¤½¤·¤Æ¡¢²¿¤«¤Î¿Æ¤Ë¤Ê¤Ã¤Æ¤ë¥¨¥ó¥Æ¥£¥Æ¥£¼«¿È¤â¡¢¿Æ¥¨¥ó¥Æ¥£¥Æ¥£¤ò»ØÄꤹ¤ë¤³¤È¤¬½ÐÍè¤ë¤ó¤À¥¼¡ª¼Â¤Ï¡¢¤³¤ÎRoot¤Þ¤ÇÏ¢¤Ê¤ë¿Æ»Ò¤ÎÏ¢º¿¤Î¥³¥È¤ò¥Ñ¥¹¤Ã¤Æ¸Æ¤ó¤Ç¤ë¤ó¤À¡ª¤½¤·¤Æ¡¢¥Ñ¥¹¤Ë´Þ¤Þ¤ì¤ë³Æ¥á¥ó¥Ð¡ÊÍפϿƥ¨¥ó¥Æ¥£¥Æ¥£Ã£¤À¤Ê¡Ë¤Î¤³¤È¤ò¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤Î"ancestor"¤Ã¤Æ¸Æ¤Ö¤³¤È¤Ë¤Ê¤Ã¤Æ¤ë¡£¤¢¤¢¡¢¤½¤ì¤«¤é¥¨¥ó¥Æ¥£¥Æ¥£¤Î¿Æ¤Ã¤Æ¤Î¤Ï¥¨¥ó¥Æ¥£¥Æ¥£¤¬À¸À®¤µ¤ì¤¿»þ¤Ë·è¤á¤é¤ì¤ë¤â¤ó¤Ç¡¢¸å¤ÇÊѹ¹¤Ï¤­¤«¤Ê¤¤¤«¤éÃí°Õ¤·¤Æ¤¯¤ì¤è¡ª

¤½¤·¤Æ¤³¤³¤Ï·¯¤Ë¤âÁÛÁü¤Ä¤¯¤È»×¤¦¤ó¤À¤¬¡¢Æ±¤¸¥ë¡¼¥È¤òÀèÁĤ˻ý¤ÄÁ´¤Æ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ÏƱ¤¸¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Î°ì°÷¤Ã¤Æ°·¤¤¤Ë¤Ê¤ë¤ó¤À¡£¤Ã¤Æ¥³¥È¤Ï¡¢¤½¤¤¤Ä¤é¤ÏƱ¤¸datastore¥Î¡¼¥É¤ËÊݸ¤µ¤¨¤ë¤Ã¤Æ¥³¥È¤Ë¤Ê¤ë¤Ê¡£¤³¤¦¤·¤È¤±¤Ð¡¢1¤Ä¤Î¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ÇƱ°ì¥°¥ë¡¼¥×¤ÎÁ´¤Æ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ËÂФ·¤ÆÊѹ¹¤·¤¿¤ê¡¢¤½¤³¤Ë¥¨¥ó¥Æ¥£¥Æ¥£¤òÄɲä·¤¿¤ê¤Ã¤Æ½èÍý¤¬½ÐÍè¤ë¤À¤í¡©¡¡¤Ä¤Þ¤ê¡¢Ê¬»¶¥Ç¡¼¥¿¥Ù¡¼¥¹¤À¤«¤é¸úΨŪ¤Ë»È¤¦¤Ë¤Ï¥É¥¦¤È¤«¡¢¤½¤¦¤¤¤¦¾®Æñ¤·¤¤Ïäϲ¶¤¿¤Á¤Ïµ¤¤Ë¤·¤Ê¤¤¤Ç¥¤¥¤¤Ã¤Æ¥ï¥±¤À¡£¤«¡¼¤Ã¡ª¤ä¤ë¤è¤Ê¡¼¡¢Google¡£·¯¤Ï¤½¤¦¤Ï»×¤ï¤Ê¤¤¤«¤¤¡©

¤µ¤Æ¡¢¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾Ü¤·¤¤Ïäϸå¤Ç¤µ¤»¤Æ¤â¤é¤¦¤«¤é¡¢¤³¤³¤Ç¤Ï¤³¤ÎÊդˤ·¤Æ¤ª¤¯¤¼¡ª

¤½¤ì¤«¤é¡¢²¿¤«¤Îancestor¤Ë¤Ê¤Ã¤Æ¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤¬ºï½ü¤µ¤ì¤¿¾ì¹ç¤Ê¤ó¤À¤¬¡¢Ê̤˻Ò¹¤Þ¤Çºï½ü¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤Ï¤Ê¤¤¤¼¡ª¥Ñ¥¹¤ò»È¤¦¤Ê¤ê¡¢¥­¡¼¤ò»È¤¦¤Ê¤ê¤·¤Æ¤Á¤ã¤ó¤È¥¢¥¯¥»¥¹½ÐÍè¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤ë¤«¤é°Â¿´¤·¤Æ¤¯¤ì¡ª

¤¢¤È¡¢¥³¥¤¥Ä¤Ï¤Á¤ç¤Ã¤È¥È¥ê¥Ã¥­¡¼¤ÊÏ䫤⤷¤ì¤Ê¤¤¤ó¤À¤¬³Ð¤¨¤Æ¤ª¤¤¤ÆÍߤ·¤¤¡£¼Â¤Ï¡¢Àè¤Ë¿Æ¤È¤Ê¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤òºî¤é¤Ê¤¯¤Æ¤â¡¢ancestor¤ò»ý¤Ã¤¿¾õÂ֤ǥ¨¥ó¥Æ¥£¥Æ¥£¤òÀ¸À®¤¹¤ë¤³¤È¤¬½ÐÍè¤Á¤ã¤¦¤ó¤À¡ª¡¡¤³¤ì¤Ï¤¿¤À¤Î½çÈÖ¤ÎÌäÂê¤À¤«¤é¡¢¤½¤¦¤·¤¿¤¤¾ì¹ç¤Ï¤Á¤ã¤ó¤ÈancestorÍѤ˼ïÊ̤ȥ­¡¼Ì¾¤ò¹Í¤¨¤Æ¤Ä¤±¤ì¤Ð¥¤¥¤Ïäʤó¤À¤±¤É¤Ê¡£

·«¤êÊÖ¤·¤Ë¤Ê¤ë¤¬¡¢Æ±¤¸¥ë¡¼¥È¤òancestor¤Ë»ý¤Ã¤Æ¤ëÁ´¤Æ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ÏƱ¤¸¥°¥ë¡¼¥×¤Î°ì°÷¤À¤¼¡£¤³¤ì¤Ï¥Ñ¥¹¤Ç¼¨¤µ¤ì¤ë¥ë¡¼¥È¤¬¼ÂºÝ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤Ç¤¢¤í¤¦¤¬¤Ê¤«¤í¤¦¤¬°ì½ï¤ÎÏääƤȤ³¤í¡¢³Ð¤¨¤Æ¤ª¤¤¤Æ¤¯¤ì¤è¡ª


¤½¤Î¾¤Î¾®µ»¡Ê¿´ÆÀ4²Õ¾ò¡Ë

  • ¡¡¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¤ËɬÍפʻþ¤À¤±¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Ï»È¤¦¤Ù¤·¡£¤½¤Î¾¤Î¥¨¥ó¥Æ¥£¥Æ¥£´Ö¤Ë´Ø¤ï¤ë½èÍý¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥¯¥¨¥ê¤ÇÍøÍѲÄǽ¤ÊReferenceProperty¤È¥­¡¼¤òÍøÍѤ¹¤Ù¤·¡£
  • ¡¡¤è¤ê¿¤¯¤Î¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Ï¡¢¤è¤ê¿¤¯¤Î¥ë¡¼¥È¥¨¥ó¥Æ¥£¥Æ¥£¤Î¸ºß¤ò°ÕÌ£¤¹¤ë¡£¤³¤ì¤Ï¡¢¤è¤ê¸úΨ¤è¤¯Ê¬»¶datastore¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤Ä¤Ê¤¬¤ë¡£¾å¼ê¤¯¥Ç¡¼¥¿¤òʬ»¶¤µ¤»¤ë¤³¤È¤Ï¡¢¥Ç¡¼¥¿¤ÎÀ¸À®¤ä¹¹¿·¤Ë¤ª¤±¤ë¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤Î¸þ¾å¤Ë¤Ä¤Ê¤¬¤ë¤â¤Î¤Ç¤¢¤ë¡£¤µ¤é¤Ë¡¢Ê£¿ô¤Î¥æ¡¼¥¶¤¬¥Ç¡¼¥¿Áàºî¤òƱ»þ¤Ë¹Ô¤Ã¤¿¾ì¹ç¤Î¤³¤È¤ò¹Íθ¤·¡¢¥Ç¡¼¥¿¤ÎÊѹ¹¥¨¥é¡¼¤Ëȼ¤¦¥ê¥È¥é¥¤²ó¿ô¤òÄ㸺¤µ¤»¤ë¤¿¤á¡¢Á´¤Æ¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤¬Æ±°ì¤Î¥ë¡¼¥È¤ò»ý¤Ä¤è¤¦¤Ê¾õ¶·¤ÏÈò¤±¤ë¤Ù¤·¡£
  • ¡¡·Ð¸³Â§¾å¡¢¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Ï1¿Í¤Î¥æ¡¼¥¶Ê¬¤Î¥Ç¡¼¥¿¤ËÁêÅö¤¹¤ëÄøÅÙ¤«¡¢¤½¤ì°Ê²¼¤ËÍÞ¤¨¤ë¤Ù¤·
  • ¡¡¥¨¥ó¥Æ¥£¥Æ¥£¥°¥ë¡¼¥×¤Ï¡¢¥¯¥¨¥ê¤ËÂФ·¤ÆÆÃ¤ËÂ礭¤Ê±Æ¶Á¤ÏÍ¿¤¨¤Ê¤¤¡£²áÅ٤ΰռ±¤Ï¼Î¤Æ¤Æ¤è¤·¡£

¥Ñ¥¹¤È¥­¡¼¤Î°ì°ÕÀ­


¥¨¥ó¥Æ¥£¥Æ¥£¤Î¥­¡¼¤Î¹½À®¤Ã¤Æ¥ä¥Ä¤ò¤è¤¯¸«¤Æ¤ß¤ë¤È¡¢¼ÂºÝ¤Î¤È¤³¤í¡Ö¥Ñ¥¹¡×¤À¤Î¡Ö¼ïÊ̡פÀ¤Î¡Ö̾Á°¡Ê¤Þ¤¿¤Ï¿ô»ú¤ÎID¡Ë¡×¤À¤Î¤¢¤ë¥ï¥±¤À¤¬¡¢¤³¤¤¤Ä¤Ï³Æ¥¨¥ó¥Æ¥£¥Æ¥£¤Ç¸ÇÍ­¤Î¤â¤Î¤Ë¤Ê¤ë¤Ã¤Æ¤Î¤Ï¤¹¤°Ê¬¤«¤ë¤À¤í¤¦¡©¡¡¤½¤·¤Æ¡¢¤³¤Î¥­¡¼¤Î´°Á´ÂΤϥ¨¥ó¥Æ¥£¥Æ¥£¤¬datastore¾å¤ËÀ¸À®¤µ¤ì¤¿¥¿¥¤¥ß¥ó¥°¤Ç³ä¤êÅö¤Æ¤é¤ì¤ë¤â¤Î¤Ç¡¢¤É¤ÎÉôʬ¤â¸å¤ÇÊѤ¨¤é¤ì¤ë¤â¤ó¤¸¤ã¤Ê¤¤¤À¡£¤Þ¤¡¡¢¹Í¤¨¤Æ¤ß¤ì¤ÐÅö¤¿¤êÁ°¤ÎÏäÀ¤è¤Ê¡£

¤Á¤ç¤Ã¤È£²¤Ä¤Î°Û¤Ê¤ë¥¨¥ó¥Æ¥£¥Æ¥£¤Î¥­¡¼¤Îº¹Ê¬¤Ë¤Ä¤¤¤Æ¹Í¤¨¤Æ¤ß¤è¤¦¤«¡©¡¡·ëÏÀ¤«¤éÀè¤Ë¤¤¤¨¤Ð¡¢»÷¤¿¤è¤¦¤Ê¥Ñ¡¼¥Ä¤ò»ý¤Æ¤¿¤È¤·¤Æ¤â¡¢ºÇÄã1²Õ½ê¤Ï°ã¤¦¤è¤¦¤Ë¤Ê¤Ã¤Æ¤ë¤ó¤À¡£Î㤨¤Ð¡¢2¤Ä¤Î¥¨¥ó¥Æ¥£¥Æ¥£¤ÏƱ¤¸¼ïÊ̤È̾¾Î¤ò»ý¤Ä¤³¤È¤¬½ÐÍè¤ë¡£¤Ç¤â¡¢¤³¤Î¾ì¹ç¤Ï¿Æ¤¬Ê̤¸¤ã¤Ê¤¤¤ÈÂÌÌܤÀ¤Ê¡£Æ±Íͤˡ¢Æ±¤¸¿Æ¡Ê¤Þ¤¿¤Ï¿Æ¥Ê¥·¡Ë¤ÈƱ¤¸Ì¾¾Î¤ò»ý¤Ä¤³¤È¤â½ÐÍè¤ë¡£¤Ç¤â¡¢¤³¤Î¾ì¹ç¤Ï¼ïÊ̤¬Ê̤¸¤ã¤Ê¤¤¤ÈÂÌÌܤÀ¡£

¤½¤ì¤«¤é¡¢¥¨¥ó¥Æ¥£¥Æ¥£¤òÀ¸À®¤¹¤ëÅÙ¤ËID¤Ë»È¤ï¤ì¤Æ¤ë¿ô»ú¤¬¤º¤Ã¤ÈÁý¤¨Â³¤±¤Æ¤¤¤¯¤â¤ó¤À¤È¤Ï·è¤áÉÕ¤±¤Ê¤¤Êý¤¬¥¤¥¤¤¼¡ª°ìÈÌŪ¤Ë¤Ï¤½¤¦¤Ê¤ó¤À¤¬¡¢Ê̤ËGoogle¦¤¬¤½¤ì¤òÊݾڤ·¤Æ¤ë¥ï¥±¤¸¤ã¤Ê¤¤¤«¤é¤Ê¡ª¤³¤¦¤¤¤¦Íî¤È¤··ê¡¢·ë¹½¥Ï¥Þ¤ë¤ä¤Ä¤¤¤ë¤«¤éµ¤¤ò¤Ä¤±¤è¤¦¤¼¡ª

¤ª¤Ã¤È¡¢¤½¤í¤½¤íº£Æü¤â»þ´Ö¤¬Í褿¤ß¤¿¤¤¤À¡£

ÌÀÆü¤Î¥¨¥ó¥È¥ê¡¼¤ò´üÂÔ¤·¤Æ¤Æ¤¯¤ì¤è¡¼¤Ã¡ª


Äù¤á


ºî¶È¤·¤Æ¤¤¤Æµ¤ÉÕ¤¤¤¿¤Î¤À¤¬¡¢¼Â¤Ï¤³¤Î¡Ö¿¼ÌëÄÌÈÎÈÖÁÈÉ÷¡×¤Î¸ì¤ê¸ý¤ËÊÑ´¹¤¹¤ëºî¶È¤¬°ìÈÖ»þ´Ö¤¬¤«¤«¤Ã¤Æ¤¤¤¿¤ê¤¹¤ë¡£¡£¡£Â¿Ê¬¡¢ÉáÄ̤è¤ê¤â¥ê¥º¥à¤ò¹Í¤¨¤¿¤ê¤·¤Ê¤¤¤ÈÂÌÌܤʤΤȡ¢API¤ÎÀâÌÀ¤Ë¡ÖË«¤á¤ë·Ï¡×¡ÖGoogle¥¹¥´¥¤¤Ê¡ª·Ï¡×¤Î¥Í¥¿¤òÆþ¤ì¹þ¤à¤Î¤¬¤½¤â¤½¤âÆñ¤·¤¤¤«¤é¤Ê¤Î¤À¤í¤¦¡£¡£¡¡¤½¤í¤½¤íµ´¶µ´±¤ËÅо줷¤Æ¤â¤é¤Ã¤¿Êý¤¬³Ú¤Ê¤Î¤«¤âÃΤì¤Ê¤¤¡£¥¢¥ì¤Ï·ë¹½³Ú¤ËÉ®¤¬¿Ê¤à¤Î¤Ç¡£¡£¡£¤Ç¤â¡¢¡¢¥¢¥ì¡©¤Ã¤Æ»ö¤Ï¼«Ê¬¤¬¤½¤¦¤¤¤¦Â¦Ì̤ò»ý¤Ã¤Æ¤ë¤Ã¤Æ¥³¥È¤Ë¤Ê¤ë¤Î¤«ÃΤé¤ó¡¦¡¦¡©

¤³¤ì¤Ï¥Õ¥í¡¼¤È¸À¤¨¤ë¤Î¤«¡©

| 04:38 | ¤³¤ì¤Ï¥Õ¥í¡¼¤È¸À¤¨¤ë¤Î¤«¡©¤ò´Þ¤à¥Ö¥Ã¥¯¥Þ¡¼¥¯

ºÇ¶á¤Î¥¨¥ó¥È¥ê¡¼¤ò¸«¤ì¤Ðʬ¤«¤ëÄ̤ꡢ¤³¤³¤Î¤È¤³¤í¤Ï¡¢¤º¤Ã¤ÈGoogle App Engine ¤ÎĶÌõ¤Ë½¸Ã椷¤Æ¤¤¤ë¡£¤¢¤ì¡¢°Å¹æ¤Ï¥É¥¦¤·¤¿¡©¿ô³Ø¤Ï¥É¥¦¤·¤¿¡©¤È¤¤¤¦¤¯¤é¤¤¤ÎÀª¤¤¤À¡£

°ÊÁ°¡¢ÇßÅÄ˾Éפµ¤ó¤¬Ruby¤Î¾¾Ëܤµ¤ó¤Ø¹Ô¤Ã¤¿¥¤¥ó¥¿¥Ó¥å¡¼¤Ë´ØÏ¢¤·¤¿µ­»ö¤«²¿¤«¤Ç¡Ö¥ª¡¼¥×¥ó¥½¡¼¥¹¥³¥ß¥å¥Ë¥Æ¥£¤Î¿Íã¤Ï²¿¸Î¡¢Ìµ½þ¤Ç¥×¥í¥°¥é¥ß¥ó¥°¤Ë¼è¤êÁȤà¤Î¤«¡©¡×¤È¤¤¤Ã¤¿Ï䬽ФƤ¤¤¿¡£¤½¤ÎÃæ¤Ç¾¾Ëܤµ¤ó¤Ï¡Ö¿Í¡¹¤Ï³µ¤Í¼«Ê¬¤ÎǽÎϤˤÁ¤ç¤¦¤É¤¢¤Ã¤¿º¤Æñ¤µ¤Ë¼è¤êÁȤá¤ëµ¡²ñ¤ò¾ï¤Ëµá¤á¤Æ¤¤¤ë¤â¤Î¤À¡×¤È¤¤¤Ã¤¿Îà¤Î¥³¥á¥ó¥È¤ò¤µ¤ì¤Æ¤¤¤¿¤Î¤ò»×¤¤½Ð¤·¤¿¡£¤½¤Îµ­»ö¤òÆÉ¤ó¤ÀÅö»þ¤Ï¡Ö¥³¥ì¤Ã¤Æ¥Á¥¯¥»¥ó¥È¥ß¥Ï¥¤¤Î¥Õ¥í¡¼ÍýÏÀ¤Ã¤Æ¥ä¥Ä¤À¤è¤Ê¡¼¡×¤Ê¤ó¤ÆÄøÅ٤Υ³¥È¤·¤«¹Í¤¨¤Ê¤«¤Ã¤¿¤Î¤À¤¬¡¢º£¼«Ê¬¤¬¼è¤êÁȤó¤Ç¤¤¤ë¤Î¤â·ë¹½¤½¤ì¤Ë¶á¤¤ÏäʤΤ«¤â¡¢¡¢¤Ê¤ó¤Æ»×¤Ã¤¿¤ê¡£

³Î¤«¤ËĶÌõ¤Ë¤Ï¥Ï¥Þ¤Ã¤Æ¤ë¡£¤Ç¤â¡¢¤è¤¯¤è¤¯¹Í¤¨¤ë¤È²¿¤Ç¤À¤í¤¦¡©¡¡²ñ¼Ò¤Ç¿Í¤Î°Ù¤ËËÝÌõ¤È¤«¤·¤Æ¤¢¤²¤¿¥³¥È¤Ê¤ó¤Æ¤Ê¤¤¤·¡Ä

  • ¿Í¤ËÀâÌÀ¤·¤è¤¦¤È¤¹¤ë»ö¤ÇÃí°Õ¿¼¤¯ÆÉ¤â¤¦¤È¤¹¤ë¡£¤½¤ì¤¬ÊÙ¶¯¤Ë¤Ê¤Ã¤Æ¤ë¤«¤é
  • ¸ø³«¤·¤Æ¤ª¤±¤Ð狼¤¬¥Ä¥Ã¥³¥ß¤òÆþ¤ì¤Æ¤¯¤ì¡¢¹¹¤Ê¤ë¥ì¥Ù¥ë¥¢¥Ã¥×¤Ë¤Ä¤Ê¤¬¤ë¥«¥â¡©
  • ¤Ê¤ó¤À¤«¤ó¤À¸À¤Ã¤Æ¤â·ë¹½É¾È½¤¬Îɤ¯¤Æ´ò¤·¤¤¤«¤é
  • ï¤â¤ä¤Ã¤Æ¤Ê¤¤¤ß¤¿¤¤¤À¤«¤é¡¢¤³¤Î¤Þ¤Þ¼è¤êÁȤá¤Ð¥È¥Ã¥×¥°¥ë¡¼¥×¤ËÆþ¤ì¤ë¥«¥â¡©
  • ÂçÎ̤ÎGoogle App Engine¥×¥í¥°¥é¥ÞÃÂÀ¸¤Î¤­¤Ã¤«¤±¤òºî¤ê¡¢Ë¿¥×¥í¥ì¥¹¥é¡¼¤Î¤è¤¦¤Ë¡ÖÆüËܿͤÏËÜÅö¤Ï¥¹¥´¤¤¤ó¤Ç¤¹¡ª¡×¤È¤«¸À¤Ã¤Æ¤ß¤¿¤¤¡©
  • ¤½¤â¤½¤â¶µ¤¨¤ë¤Ã¤Æ¥³¥È¤ËÀ¨¤¯¶½Ì£¤¬¤¢¤ë

¤³¤ó¤Ê¤È¤³¤í¤À¤í¤¦¤«¡Ä

Ê̤˥¢¥Õ¥£¥ê¥¨¥¤¥È¤ò¤·¤Æ¤ë¥ï¥±¤Ç¤â¤Ê¤·¡¢¤³¤Î¥Ö¥í¥°¤Î¥¢¥¯¥»¥¹¿ô¤¬¾å¤¬¤í¤¦¤È¾å¤¬¤ë¤Þ¤¤¤ÈËܼÁŪ¤Ë¤Ï¤É¤¦¤Ç¤âÎɤ¤¡£¤à¤·¤í²ñ¼Ò¤ÎƱν¤Ë¸«¤Ä¤«¤ë¤ÈÌÌÅݤʤΤǡ¢¥Û¥É¥Û¥É¤¬Îɤ¤¡£¤½¤¦»×¤Ã¤Æ¤¤¤¿¥Ï¥º¤Ê¤Î¤Ë¡¢¼ÂºÝ¤ËÂçÎ̤˥¢¥¯¥»¥¹¤¬Íè¤ë¤È¤ä¤Ã¤Ñ¤ê´ò¤·¤¤¡£¥¢¥¯¥»¥¹¤¬¾¯¤Ê¤¤µ­»ö¤Ï¡¢¤Á¤ç¤Ã¤ÈÀڤʤ¤¡£

¿Í´Ö¤Î¿´¤Ã¤Æ¤Î¤Ï¼Â¤ËÆñ¤·¤¤¤â¤ó¤À¤Ê¡¼¡¢¤È²þ¤á¤Æ»×¤Ã¤¿4·î¤ÎÌë¡£