À¤³¦¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì Âè39²ó ¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òCypher¤Ç¥Ç¡¼¥¿¤ò»ë³Ð²½¤·¤Æ¥Ç¡¼¥¿¤òºÆȯ¸«¤·¤è¤¦
º£²ó¾Ò²ð¤¹¤ë¸À¸ì¤Ï¡¢¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎNeo4j¤Ç»È¤¦Ì䤤¹ç¤ï¤»¸À¸ì¤ÎCypher¤Ç¤¹¡£Cypher¤Ï°ìÈÌŪ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÁàºî¤¹¤ëSQL¤ÈƱÅù¤Îµ¡Ç½¤ò¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç°·¤¨¤ë¤è¤¦¤ËÀ߷פµ¤ì¤¿¤â¤Î¤Ç¤¹¡£¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ï¸«¤¿ÌܤâÌÌÇò¤¯¡¢¥Ç¡¼¥¿´ÉÍý¤À¤±¤Ç¤Ê¤¯»ë³Ð²½¤ÎÅÀ¤Ç¤âÌòΩ¤Á¤Þ¤¹¡£
¡ûCypher¤È¤Ï
°ÊÁ°¡¢ËÜÏ¢ºÜ¤Ç¤Ï°ìÈÌŪ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹(RDBMS)¤Ç»È¤¨¤ëSQL¤Ë¤Ä¤¤¤Æ¾Ò²ð¤·¤Þ¤·¤¿¡£SQL¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÌ䤤¹ç¤ï¤»¸À¸ì¤Ç¤¢¤ê¡¢´Êñ¤Ê¥³¥Þ¥ó¥É¤Ë¤è¤ê¥Ç¡¼¥¿¤ÎÁÞÆþ¡¢Êѹ¹¡¢ºï½ü¡¢¸¡º÷¤ò¹Ô¤¤¤Þ¤¹¡£
Ʊ¤¸¤è¤¦¤Ë¡¢Cypher¤ò»È¤¦¤³¤È¤Ç¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÁàºî¤Ç¤¤Þ¤¹¡£Cypher¤Ï¤â¤È¤â¤ÈNeo4j¤Î¤¿¤á¤ËÀ߷פµ¤ì¤Þ¤·¤¿¤¬¡¢2015ǯ¤Ë¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î¥×¥í¥¸¥§¥¯¥È¤È¤·¤Æ¤â¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¡û¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹Neo4j¤È¤Ï
¤Ê¤ª¡¢Neo4j¤È¤¤¤¦¤Î¤Ï¥°¥é¥Õ¹½Â¤¤Î¥Ç¡¼¥¿¥â¥Ç¥ë¤ò°·¤¦¤³¤È¤Î¤Ç¤¤ë¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¥·¥¹¥Æ¥à¤Ç¤¹¡£Java¤Ç³«È¯¤µ¤ì¤Æ¤ª¤ê¥¯¥í¥¹¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤â¤½¤â¡¢Neo4j¤Ï¡¢°ìÈÌŪ¤ÊRDBMS¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ò²þÁ±¤¹¤ëÌÜŪ¤Ç2002ǯ¤Ë³«È¯¤µ¤ì¤Þ¤·¤¿¡£2007ǯ¤ËGPL¥é¥¤¥»¥ó¥¹¤Ç¥ª¡¼¥×¥ó¥½¡¼¥¹²½¤µ¤ì¡¢¤½¤Î¸å¤âÃ塹¤È»È¤¤¾¡¼ê¤¬²þÁ±¤µ¤ì¤Æ¤¤Þ¤·¤¿¡£¸¶¹Æ¼¹É®»þÅÀ¤Ç¤ÎºÇ¿·ÈǤÏ4.4.2¤Ç¤¹¡£¾¦Íѥ饤¥»¥ó¥¹¤ÈGPL¤ÎÆó½Å¥é¥¤¥»¥ó¥¹¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
Neo4j¤ÎºÇÂç¤ÎÆÃħ¤Ï¡¢¥°¥é¥Õ¹½Â¤¤Î¥Ç¡¼¥¿¤ò¼ê·Ú¤Ë°·¤¦¤³¤È¤¬¤Ç¤¤ë¤³¤È¤Ç¤¹¡£¤Þ¤¿¡¢°ìÈÌŪ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎRDBMS¤Ç¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¤»Ï¤á¤ëÁ°¤Ë¤·¤Ã¤«¤ê¤È¥Ç¡¼¥¿¹½Â¤¤òÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢Neo4j¤Ç¤ÏÄêµÁ¤¬ÉÔÍפǤ¢¤ê¡¢¼ê·Ú¤ËÍøÍѤǤ¤Þ¤¹¡£
¤Þ¤¿¡¢¥í¡¼¥«¥ëPC¤ÇNeo4j¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤¹¤ë¤È¡¢¥Ö¥é¥¦¥¶¾å¤Ë¥°¥é¥Õ¤òÉÁ²è¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡ûNeo4j¤Î¥¤¥ó¥¹¥È¡¼¥ë
¤½¤ì¤Ç¤Ï¡¢Neo4j¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¡¢Cypher¤Ç´Êñ¤Ë¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÁàºî¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤³¤Á¤é¤ÎNeo4j¤Î¥À¥¦¥ó¥í¡¼¥É¥Ú¡¼¥¸¤è¤ê¥¢¡¼¥«¥¤¥Ö¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤Ç¤Ï¡¢¥ª¡¼¥×¥ó¥½¡¼¥¹ÈǤÎCommunity Edition¤òÁªÂò¤·¤Æ¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤ß¤Þ¤¹¡£
¡û¡ÚWindows¤Î¾ì¹ç¡Û
¤Ê¤ª¡¢Neo4j¤ò¼Â¹Ô¤¹¤ë¤Ë¤ÏJava11¤¬É¬ÍפǤ¹¡£OpenJDK¤«Oracle Java¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤³¤Ç¤Ï¡¢OpenJDK 11¤ò»È¤¦ÊýË¡¤ò¾Ò²ð¤·¤Þ¤¹¡£¾åµ¤ÎNeo4j¤Ë²Ã¤¨¤Æ¡¢¤³¤Á¤é¤Î¥Ú¡¼¥¸¤«¤é¡¢OpenJDK 11.02¤òÁª¤ó¤Ç¥À¥¦¥ó¥í¡¼¥É¤·¤Þ¤¹¡£
OpenJDK 11¤ÎZIP¥Õ¥¡¥¤¥ë¤ò²òÅष¤¿¤é¡¢C:\Java¤Ë¥³¥Ô¡¼¤·¤Þ¤·¤ç¤¦¡£
¤½¤Î¾å¤ÇWindows¤Î´Ä¶ÊÑ¿ô¤ËOpenJDK¤òÄɲä·¤Þ¤¹¡£¥³¥ó¥È¥í¡¼¥ë¥Ñ¥Í¥ë¤ò³«¤¤¤Æ¡¢¸¡º÷¥Ü¥Ã¥¯¥¹¤Ë¡Ö´Ä¶ÊÑ¿ô¤òÊÔ½¸¡×¤ÈÆþÎϤ·¤Æ´Ä¶ÊÑ¿ô¤ÎÊÔ½¸²èÌ̤ò½Ð¤·¤Þ¤·¤ç¤¦¡£
¤½¤·¤Æ¡¢¼¡¤Î¿Þ¤Î¤è¤¦¤Ë¡ÖJAVA_HOME¡×¤Ë¡ÖC:\Java\jdk-11.0.2¡×¤òÀßÄꤷ¡¢¡ÖPath¡×¤Ë¡ÖC:\Java\jdk-11.0.2\bin¡×¤òÄɲä·¤Þ¤¹¡£
¤½¤·¤Æ¡¢Neo4j¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤¿ZIP¥Õ¥¡¥¤¥ë¤ò²òÅष¤Þ¤¹¡£¤½¤·¤Æ²òÅष¤¿¤é¥³¥Þ¥ó¥É¥×¥í¥ó¥×¥È¤òµ¯Æ°¤·¤Þ¤¹¡£¤½¤·¤Æ¡¢°Ê²¼¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£¤¹¤ë¤È¡¢Neo4j¤Î¥µ¡¼¥Ð¡¼¤¬µ¯Æ°¤·¤Þ¤¹¡£
cd (Neo4j¤ò²òÅष¤¿¥Õ¥©¥ë¥À)
cd bin
neo4j console
¤Ê¤ª¡¢Neo4j¤ò½ªÎ»¤¹¤ë¤Ë¤Ï¡¢[Ctrl]+[C]¥¡¼¤ò²¡¤·¤Þ¤¹¡£
¡û¡ÚmacOS¤Î¾ì¹ç¡Û
macOS¤Î¾ì¹ç¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¥Þ¥Í¡¼¥¸¥ã¡¼¤ÎHomebrew¤òÍøÍѤ·¤Þ¤¹¡£¤³¤Á¤é¤Î¥Ú¡¼¥¸¤ò³«¤¤¤Æ¡¢½ñ¤«¤ì¤Æ¤¤¤ë¥³¥Þ¥ó¥É¤ò¥³¥Ô¡¼¤·¤Þ¤·¤ç¤¦¡£¤½¤·¤Æ¡¢¥¿¡¼¥ß¥Ê¥ë.app¤òµ¯Æ°¤·¤Æ¡¢Å½¤êÉÕ¤±¤Æ¼Â¹Ô¤·¤Þ¤¹¡£
Homebrew¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤«¤é¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢Neo4j¤¬¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¤Þ¤¹¡£
brew install neo4j
¤½¤ì¤«¤é¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦¡£
neo4j console
¤¹¤ë¤È¡¢Neo4j¤Î¥µ¡¼¥Ð¡¼¤¬µ¯Æ°¤·¤Þ¤¹¡£
¡û¶¦Ä̤ÎÁàºî
Neo4j¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¡¢¥µ¡¼¥Ð¡¼¤¬µ¯Æ°¤·¤¿¤é¡¢¥Ö¥é¥¦¥¶¤òµ¯Æ°¤·¤Æ¼¡¤ÎURL¤Ë¥¢¥¯¥»¥¹¤·¤Þ¤¹¡£
http://localhsot:7474
¤½¤·¤Æ¡¢Username¤Ë¡Öneo4j¡×¡¢Password¤Ë¡Öneo4j¡×¤ÈÆþÎϤ·¤Æ¥í¥°¥¤¥ó¤·¤Þ¤·¤ç¤¦¡£½é²ó¥í¥°¥¤¥ó¤¹¤ë¤È¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÊѹ¹²èÌ̤¬½Ð¤Þ¤¹¡£
¡û¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¥Ç¡¼¥¿¤òÁÞÆþ¤·¤è¤¦
¤½¤ì¤Ç¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¥Ç¡¼¥¿¤òÆþÎϤ·¤Þ¤·¤ç¤¦¡£Ì䤤¹ç¤ï¤»¸À¸ì¤ÎCypher¤òÍøÍѤ·¤Æ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÁàºî¤·¤Þ¤¹¡£¥Ö¥é¥¦¥¶¤Î²èÌ̾åÉô¤Ë¤¢¤ë¡Öneo4j$¡×¤ÎÉôʬ¤ËCypher¤òÆþÎϤ·¤Þ¤¹¡£
¤³¤³¤Ç¤Ï¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤òÆþÎϤ·¤Æ¥Ç¡¼¥¿¤òÁÞÆþ¤·¤Þ¤·¤ç¤¦¡£¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤ÈPerson¤È¤¤¤¦5·ï¤Î¥Î¡¼¥É¤òºîÀ®¤·¤Þ¤¹¡£
CREATE
(:Person { name: "ÎëÌÚ", age: 30 }),
(:Person { name: "ÅÄÃæ", age: 22 }),
(:Person { name: "ÉðÅÄ", age: 20 }),
(:Person { name: "°ËÆ£", age: 24 }),
(:Person { name: "¹©Æ£", age: 30 });
¤³¤Î¾õÂ֤ǡ¢²èÌ̺¸Â¦¤Î¡ÖDatabese Information¡×¤«¤éPerson¤È¤¤¤¦¥é¥Ù¥ë¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¥Î¡¼¥É¤¬²èÌ̤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¤³¤Î¾õÂ֤Ǥϡ¢Person¥Î¡¼¥É¤¬5¸Ä¤¢¤ë¤À¤±¤Ç¤¹¡£¥Î¡¼¥É¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¥Î¡¼¥É¤Î¾ðÊó¤ò³Îǧ¤Ç¤¤Þ¤¹¡£
¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç¤Ï¡¢¥Î¡¼¥ÉƱ»Î¤Î´Ø·¸¤òÀܳ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¼¡¤Ë¡¢¥Î¡¼¥ÉƱ»Î¤Î´Ø·¸¤òÄɲä·¤Þ¤·¤ç¤¦¡£¤³¤³¤Ç¤Ï¡¢Person¤Ëͧ¿Í´Ø·¸¤òÄɲ䷤Ƥߤޤ·¤ç¤¦¡£
MATCH (a:Person{name: "ÎëÌÚ"}), (b:Person{name: "ÅÄÃæ"})
CREATE (a)-[:ͧ¿Í]->(b);
MATCH (a:Person{name: "ÎëÌÚ"}), (b:Person{name: "°ËÆ£"})
CREATE (a)-[:ͧ¿Í]->(b);
MATCH (a:Person{name: "°ËÆ£"}), (b:Person{name: "ÅÄÃæ"})
CREATE (a)-[:ͧ¿Í]->(b);
MATCH (a:Person{name: "°ËÆ£"}), (b:Person{name: "¹©Æ£"})
CREATE (a)-[:ͧ¿Í]->(b);
MATCH (a:Person{name: "ÉðÅÄ"}), (b:Person{name: "¹©Æ£"})
CREATE (a)-[:ͧ¿Í]->(b);
²þ¤á¤Æ¡¢Database Information¤«¤éPerson¥Î¡¼¥É¤Î°ìÍ÷¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ëͧ¿Í´Ø·¸¤¬¤Ç¤¤Æ¡¢Ã¯¤È郎ͧã¤Ê¤Î¤«¤ò³Îǧ¤Ç¤¤Þ¤¹¡£
¡û¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¸¡º÷¤·¤è¤¦
¤³¤Î¤è¤¦¤Ë¥°¥é¥Õ¤¬´°À®¤·¤¿¤é¡¢Cypher¤òÍøÍѤ·¤ÆǤ°Õ¤Î¥Ç¡¼¥¿¤ò¸¡º÷¤·¤Æɽ¼¨¤Ç¤¤Þ¤¹¡£Î㤨¤Ð¡¢ÎëÌÚ¤µ¤ó¤«¤é¹©Æ£¤µ¤ó¤Þ¤Çï¤ò²ð¤»¤Ð²ñ¤¨¤ë¤«¤ò¸¡º÷¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£°Ê²¼¤Î¤è¤¦¤Ëµ½Ò¤·¤Þ¤¹¡£
MATCH p=(:Person{name:"ÎëÌÚ"})-[*]->(:Person{name:"¹©Æ£"})
RETURN p;
¾åµ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ê¥°¥é¥Õ¤¬ÉÁ²è¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÎëÌÚ¤µ¤ó¤¬¹©Æ£¤µ¤ó¤ÈÃçÎɤ¯¤Ê¤ë¤Ë¤Ï°ËÆ£¤µ¤ó¤ò²ð¤»¤ÐÎɤ¤¤³¤È¤¬Ê¬¤«¤ê¤Þ¤·¤¿¡£
¡ûFizzBuzz¤ò¥°¥é¥Õ¤Çɽ¸½¤·¤Æ¤ß¤ë
³¤¤¤Æ¡¢ËÜÎãºÄ¤Ç¹±Îã¤È¤Ê¤Ã¤Æ¤¤¤ëFizzBuzzÌäÂê¤ò²ò¤¤¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤·¤«¤·¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÇFizzBuzz¤ò²ò¤¤¤Æ¤âÌÌÇò¤¯¤Ê¤¤¤Î¤Ç¡¢¤³¤³¤ÏFizz¤ÈBuzz¤Î´Ø·¸¤ò¥°¥é¥Õ¤Çɽ¼¨¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¤Ê¤ª¡¢1¤«¤é100¤Þ¤Ç¤ÎÃͤǡ¢Fizz¤È¤Ï3¤Ç³ä¤êÀÚ¤ì¤ëÃͤǤ¢¤ê¡¢Buzz¤È¤Ï5¤Ç³ä¤êÀÚ¤ì¤ëÃͤǤ¹¡£¤³¤ì¤òNeo4j¤Çɽ¸½¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤Ê¤ª¡¢¥×¥í¥°¥é¥à¤ò¥³¥Ô¡¼¤·¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤Á¤é¤«¤é¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£
// Fizz, Buzz¤Î¥Î¡¼¥É¤òºî¤ë --- (*1)
CREATE (:FizzBuzzGroup { name: "Fizz" }), (:FizzBuzzGroup { name: "Buzz" });
// 1¤«¤é100¤Þ¤Ç¤ÎÃͤòÄɲà --- (*2)
FOREACH (i IN RANGE(1,100) | CREATE (a:FizzBuzz{v:i}));
// isFizz, isBuzz¤Î´Ø·¸¤òÄɲà --- (*3)
MATCH (i:FizzBuzz),(g:FizzBuzzGroup{name:"Fizz"})
WHERE i.v % 3 = 0
CREATE (g)-[:isFizz]->(i);
MATCH (i:FizzBuzz),(g:FizzBuzzGroup{name:"Buzz"})
WHERE i.v % 5 = 0
CREATE (g)-[:isBuzz]->(i);
(¡ö1)¤ÎÉôʬ¤Ç¤Ï¡¢FizzBuzzGroup¤ËFizz¤ÈBuzz¤Î¥Î¡¼¥É¤òÄɲä·¤Þ¤¹¡£Â³¤¤¤Æ¡¢(¡ö2)¤Ç¤Ï¡¢1¤«¤é100¤ÎÃͤòɽ¤¹¥Î¡¼¥É(FizzBuzz)¤òÄɲä·¤Þ¤¹¡£¤½¤·¤Æ¡¢(¡ö3)¤ÇisFizz¤ÈisBuzz¤Î´Ø·¸¤òÄɲä·¤Þ¤¹¡£
³¤¤¤Æ°Ê²¼¤ò¼Â¹Ô¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
MATCH p=(n:FizzBuzzGroup)-[*]->(v:FizzBuzz) RETURN p
¤¹¤ë¤È¼¡¤Î¤è¤¦¤ËFizzBuizz¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¼Â¹Ô·ë²Ì¤Ë¤½¤ì¤Û¤É°ÕÌ£¤¬¤¢¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢3¤ÎÇÜ¿ô(Fizz)¤È5¤ÎÇÜ¿ô(Buzz)¤Î¸øÇÜ¿ô¤¬³Îǧ¤Ç¤¤Þ¤¹¡£
¡û¤Þ¤È¤á
°Ê¾å¡¢º£²ó¤Ï¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎNeo4j¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¡¢Cypher¤ò»È¤Ã¤Æ¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÁàºî¤¹¤ëÊýË¡¤ò¾Ò²ð¤·¤Þ¤·¤¿¡£Cypher¤ò»È¤¦¤È¡¢SQL¤Î¤è¤¦¤Ë¥Ç¡¼¥¿¤ÎÁÞÆþ¤«¤é¸¡º÷¤Þ¤Ç¹âÅ٤ʽèÍý¤¬²Äǽ¤Ç¤¹¡£FizzBuzz¤ÎÎã¤ò¸«¤ë¤ÈCypher¤Îɽ¸½ÎϤι⤵¤¬Ê¬¤«¤ë¤³¤È¤Ç¤·¤ç¤¦¡£´Êñ¤Ê¹½Ê¸¤µ¤¨³Ð¤¨¤Æ¤·¤Þ¤¨¤Ð¡¢¤½¤ì¤Ê¤ê¤Ë»È¤¨¤ë¤Î¤ÇÄ©À路¤Æ¤ß¤ë¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡£
¼«Í³·¿¥×¥í¥°¥é¥Þ¡¼¡£¤¯¤¸¤é¤Ï¤ó¤É¤Ë¤Æ¡¢¥×¥í¥°¥é¥ß¥ó¥°¤Î³Ú¤·¤µ¤òÅÁ¤¨¤ë³èÆ°¤ò¤·¤Æ¤¤¤ë¡£Âåɽºî¤Ë¡¢ÆüËܸì¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¡Ö¤Ê¤Ç¤·¤³¡× ¡¢¥Æ¥¥¹¥È²»³Ú¡Ö¥µ¥¯¥é¡×¤Ê¤É¡£2001ǯ¥ª¥ó¥é¥¤¥ó¥½¥Õ¥ÈÂç¾ÞÆþ¾Þ¡¢2004ǯÅṲ̀Ƨ¥æ¡¼¥¹ ¥¹¡¼¥Ñ¡¼¥¯¥ê¥¨¡¼¥¿Ç§Äê¡¢2010ǯ OSS¹×¸¥¼Ô¾Ï¼õ¾Þ¡£µ»½Ñ½ñ¤â¿¤¯¼¹É®¤·¤Æ¤¤¤ë¡£Ä¾¶á¤Ç¤Ï¡¢¡Ö¥·¥´¥È¤¬¤Ï¤«¤É¤ë Python¼«Æ°½èÍý¤Î¶µ²Ê½ñ(¥Þ¥¤¥Ê¥Ó½ÐÈÇ)¡×¡Ö¤¹¤°¤Ë»È¤¨¤ë!¶È̳¤Ç¼ÂÁ©¤Ç¤¤ë! Python¤Ë¤è¤ëAI¡¦µ¡³£³Ø½¬¡¦¿¼Áسؽ¬¥¢¥×¥ê¤Î¤Ä¤¯¤êÊý TensorFlow2Âбþ(¥½¥·¥à)¡×¡Ö¥Þ¥ó¥¬¤Ç¤¶¤Ã¤¯¤ê³Ø¤ÖPython(¥Þ¥¤¥Ê¥Ó½ÐÈÇ)¡×¤Ê¤É¡£
¡ûCypher¤È¤Ï
°ÊÁ°¡¢ËÜÏ¢ºÜ¤Ç¤Ï°ìÈÌŪ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹(RDBMS)¤Ç»È¤¨¤ëSQL¤Ë¤Ä¤¤¤Æ¾Ò²ð¤·¤Þ¤·¤¿¡£SQL¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎÌ䤤¹ç¤ï¤»¸À¸ì¤Ç¤¢¤ê¡¢´Êñ¤Ê¥³¥Þ¥ó¥É¤Ë¤è¤ê¥Ç¡¼¥¿¤ÎÁÞÆþ¡¢Êѹ¹¡¢ºï½ü¡¢¸¡º÷¤ò¹Ô¤¤¤Þ¤¹¡£
¡û¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹Neo4j¤È¤Ï
¤Ê¤ª¡¢Neo4j¤È¤¤¤¦¤Î¤Ï¥°¥é¥Õ¹½Â¤¤Î¥Ç¡¼¥¿¥â¥Ç¥ë¤ò°·¤¦¤³¤È¤Î¤Ç¤¤ë¥Ç¡¼¥¿¥Ù¡¼¥¹´ÉÍý¥·¥¹¥Æ¥à¤Ç¤¹¡£Java¤Ç³«È¯¤µ¤ì¤Æ¤ª¤ê¥¯¥í¥¹¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤ËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤â¤½¤â¡¢Neo4j¤Ï¡¢°ìÈÌŪ¤ÊRDBMS¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ò²þÁ±¤¹¤ëÌÜŪ¤Ç2002ǯ¤Ë³«È¯¤µ¤ì¤Þ¤·¤¿¡£2007ǯ¤ËGPL¥é¥¤¥»¥ó¥¹¤Ç¥ª¡¼¥×¥ó¥½¡¼¥¹²½¤µ¤ì¡¢¤½¤Î¸å¤âÃ塹¤È»È¤¤¾¡¼ê¤¬²þÁ±¤µ¤ì¤Æ¤¤Þ¤·¤¿¡£¸¶¹Æ¼¹É®»þÅÀ¤Ç¤ÎºÇ¿·ÈǤÏ4.4.2¤Ç¤¹¡£¾¦Íѥ饤¥»¥ó¥¹¤ÈGPL¤ÎÆó½Å¥é¥¤¥»¥ó¥¹¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
Neo4j¤ÎºÇÂç¤ÎÆÃħ¤Ï¡¢¥°¥é¥Õ¹½Â¤¤Î¥Ç¡¼¥¿¤ò¼ê·Ú¤Ë°·¤¦¤³¤È¤¬¤Ç¤¤ë¤³¤È¤Ç¤¹¡£¤Þ¤¿¡¢°ìÈÌŪ¤Ê¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎRDBMS¤Ç¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò»È¤¤»Ï¤á¤ëÁ°¤Ë¤·¤Ã¤«¤ê¤È¥Ç¡¼¥¿¹½Â¤¤òÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢Neo4j¤Ç¤ÏÄêµÁ¤¬ÉÔÍפǤ¢¤ê¡¢¼ê·Ú¤ËÍøÍѤǤ¤Þ¤¹¡£
¤Þ¤¿¡¢¥í¡¼¥«¥ëPC¤ÇNeo4j¥µ¡¼¥Ð¡¼¤òµ¯Æ°¤¹¤ë¤È¡¢¥Ö¥é¥¦¥¶¾å¤Ë¥°¥é¥Õ¤òÉÁ²è¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡ûNeo4j¤Î¥¤¥ó¥¹¥È¡¼¥ë
¤½¤ì¤Ç¤Ï¡¢Neo4j¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¡¢Cypher¤Ç´Êñ¤Ë¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÁàºî¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤³¤Á¤é¤ÎNeo4j¤Î¥À¥¦¥ó¥í¡¼¥É¥Ú¡¼¥¸¤è¤ê¥¢¡¼¥«¥¤¥Ö¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤Ç¤Ï¡¢¥ª¡¼¥×¥ó¥½¡¼¥¹ÈǤÎCommunity Edition¤òÁªÂò¤·¤Æ¥À¥¦¥ó¥í¡¼¥É¤·¤Æ¤ß¤Þ¤¹¡£
¡û¡ÚWindows¤Î¾ì¹ç¡Û
¤Ê¤ª¡¢Neo4j¤ò¼Â¹Ô¤¹¤ë¤Ë¤ÏJava11¤¬É¬ÍפǤ¹¡£OpenJDK¤«Oracle Java¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤³¤Ç¤Ï¡¢OpenJDK 11¤ò»È¤¦ÊýË¡¤ò¾Ò²ð¤·¤Þ¤¹¡£¾åµ¤ÎNeo4j¤Ë²Ã¤¨¤Æ¡¢¤³¤Á¤é¤Î¥Ú¡¼¥¸¤«¤é¡¢OpenJDK 11.02¤òÁª¤ó¤Ç¥À¥¦¥ó¥í¡¼¥É¤·¤Þ¤¹¡£
OpenJDK 11¤ÎZIP¥Õ¥¡¥¤¥ë¤ò²òÅष¤¿¤é¡¢C:\Java¤Ë¥³¥Ô¡¼¤·¤Þ¤·¤ç¤¦¡£
¤½¤Î¾å¤ÇWindows¤Î´Ä¶ÊÑ¿ô¤ËOpenJDK¤òÄɲä·¤Þ¤¹¡£¥³¥ó¥È¥í¡¼¥ë¥Ñ¥Í¥ë¤ò³«¤¤¤Æ¡¢¸¡º÷¥Ü¥Ã¥¯¥¹¤Ë¡Ö´Ä¶ÊÑ¿ô¤òÊÔ½¸¡×¤ÈÆþÎϤ·¤Æ´Ä¶ÊÑ¿ô¤ÎÊÔ½¸²èÌ̤ò½Ð¤·¤Þ¤·¤ç¤¦¡£
¤½¤·¤Æ¡¢¼¡¤Î¿Þ¤Î¤è¤¦¤Ë¡ÖJAVA_HOME¡×¤Ë¡ÖC:\Java\jdk-11.0.2¡×¤òÀßÄꤷ¡¢¡ÖPath¡×¤Ë¡ÖC:\Java\jdk-11.0.2\bin¡×¤òÄɲä·¤Þ¤¹¡£
¤½¤·¤Æ¡¢Neo4j¤ò¥À¥¦¥ó¥í¡¼¥É¤·¤¿ZIP¥Õ¥¡¥¤¥ë¤ò²òÅष¤Þ¤¹¡£¤½¤·¤Æ²òÅष¤¿¤é¥³¥Þ¥ó¥É¥×¥í¥ó¥×¥È¤òµ¯Æ°¤·¤Þ¤¹¡£¤½¤·¤Æ¡¢°Ê²¼¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£¤¹¤ë¤È¡¢Neo4j¤Î¥µ¡¼¥Ð¡¼¤¬µ¯Æ°¤·¤Þ¤¹¡£
cd (Neo4j¤ò²òÅष¤¿¥Õ¥©¥ë¥À)
cd bin
neo4j console
¤Ê¤ª¡¢Neo4j¤ò½ªÎ»¤¹¤ë¤Ë¤Ï¡¢[Ctrl]+[C]¥¡¼¤ò²¡¤·¤Þ¤¹¡£
¡û¡ÚmacOS¤Î¾ì¹ç¡Û
macOS¤Î¾ì¹ç¤Ï¡¢¥Ñ¥Ã¥±¡¼¥¸¥Þ¥Í¡¼¥¸¥ã¡¼¤ÎHomebrew¤òÍøÍѤ·¤Þ¤¹¡£¤³¤Á¤é¤Î¥Ú¡¼¥¸¤ò³«¤¤¤Æ¡¢½ñ¤«¤ì¤Æ¤¤¤ë¥³¥Þ¥ó¥É¤ò¥³¥Ô¡¼¤·¤Þ¤·¤ç¤¦¡£¤½¤·¤Æ¡¢¥¿¡¼¥ß¥Ê¥ë.app¤òµ¯Æ°¤·¤Æ¡¢Å½¤êÉÕ¤±¤Æ¼Â¹Ô¤·¤Þ¤¹¡£
Homebrew¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤«¤é¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢Neo4j¤¬¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¤Þ¤¹¡£
brew install neo4j
¤½¤ì¤«¤é¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Þ¤·¤ç¤¦¡£
neo4j console
¤¹¤ë¤È¡¢Neo4j¤Î¥µ¡¼¥Ð¡¼¤¬µ¯Æ°¤·¤Þ¤¹¡£
¡û¶¦Ä̤ÎÁàºî
Neo4j¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¡¢¥µ¡¼¥Ð¡¼¤¬µ¯Æ°¤·¤¿¤é¡¢¥Ö¥é¥¦¥¶¤òµ¯Æ°¤·¤Æ¼¡¤ÎURL¤Ë¥¢¥¯¥»¥¹¤·¤Þ¤¹¡£
http://localhsot:7474
¤½¤·¤Æ¡¢Username¤Ë¡Öneo4j¡×¡¢Password¤Ë¡Öneo4j¡×¤ÈÆþÎϤ·¤Æ¥í¥°¥¤¥ó¤·¤Þ¤·¤ç¤¦¡£½é²ó¥í¥°¥¤¥ó¤¹¤ë¤È¡¢¥Ñ¥¹¥ï¡¼¥É¤ÎÊѹ¹²èÌ̤¬½Ð¤Þ¤¹¡£
¡û¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¥Ç¡¼¥¿¤òÁÞÆþ¤·¤è¤¦
¤½¤ì¤Ç¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ë¥Ç¡¼¥¿¤òÆþÎϤ·¤Þ¤·¤ç¤¦¡£Ì䤤¹ç¤ï¤»¸À¸ì¤ÎCypher¤òÍøÍѤ·¤Æ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÁàºî¤·¤Þ¤¹¡£¥Ö¥é¥¦¥¶¤Î²èÌ̾åÉô¤Ë¤¢¤ë¡Öneo4j$¡×¤ÎÉôʬ¤ËCypher¤òÆþÎϤ·¤Þ¤¹¡£
¤³¤³¤Ç¤Ï¡¢°Ê²¼¤Î¥³¥Þ¥ó¥É¤òÆþÎϤ·¤Æ¥Ç¡¼¥¿¤òÁÞÆþ¤·¤Þ¤·¤ç¤¦¡£¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤ÈPerson¤È¤¤¤¦5·ï¤Î¥Î¡¼¥É¤òºîÀ®¤·¤Þ¤¹¡£
CREATE
(:Person { name: "ÎëÌÚ", age: 30 }),
(:Person { name: "ÅÄÃæ", age: 22 }),
(:Person { name: "ÉðÅÄ", age: 20 }),
(:Person { name: "°ËÆ£", age: 24 }),
(:Person { name: "¹©Æ£", age: 30 });
¤³¤Î¾õÂ֤ǡ¢²èÌ̺¸Â¦¤Î¡ÖDatabese Information¡×¤«¤éPerson¤È¤¤¤¦¥é¥Ù¥ë¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¥Î¡¼¥É¤¬²èÌ̤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£¤³¤Î¾õÂ֤Ǥϡ¢Person¥Î¡¼¥É¤¬5¸Ä¤¢¤ë¤À¤±¤Ç¤¹¡£¥Î¡¼¥É¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¥Î¡¼¥É¤Î¾ðÊó¤ò³Îǧ¤Ç¤¤Þ¤¹¡£
¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç¤Ï¡¢¥Î¡¼¥ÉƱ»Î¤Î´Ø·¸¤òÀܳ¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¼¡¤Ë¡¢¥Î¡¼¥ÉƱ»Î¤Î´Ø·¸¤òÄɲä·¤Þ¤·¤ç¤¦¡£¤³¤³¤Ç¤Ï¡¢Person¤Ëͧ¿Í´Ø·¸¤òÄɲ䷤Ƥߤޤ·¤ç¤¦¡£
MATCH (a:Person{name: "ÎëÌÚ"}), (b:Person{name: "ÅÄÃæ"})
CREATE (a)-[:ͧ¿Í]->(b);
MATCH (a:Person{name: "ÎëÌÚ"}), (b:Person{name: "°ËÆ£"})
CREATE (a)-[:ͧ¿Í]->(b);
MATCH (a:Person{name: "°ËÆ£"}), (b:Person{name: "ÅÄÃæ"})
CREATE (a)-[:ͧ¿Í]->(b);
MATCH (a:Person{name: "°ËÆ£"}), (b:Person{name: "¹©Æ£"})
CREATE (a)-[:ͧ¿Í]->(b);
MATCH (a:Person{name: "ÉðÅÄ"}), (b:Person{name: "¹©Æ£"})
CREATE (a)-[:ͧ¿Í]->(b);
²þ¤á¤Æ¡¢Database Information¤«¤éPerson¥Î¡¼¥É¤Î°ìÍ÷¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ëͧ¿Í´Ø·¸¤¬¤Ç¤¤Æ¡¢Ã¯¤È郎ͧã¤Ê¤Î¤«¤ò³Îǧ¤Ç¤¤Þ¤¹¡£
¡û¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ò¸¡º÷¤·¤è¤¦
¤³¤Î¤è¤¦¤Ë¥°¥é¥Õ¤¬´°À®¤·¤¿¤é¡¢Cypher¤òÍøÍѤ·¤ÆǤ°Õ¤Î¥Ç¡¼¥¿¤ò¸¡º÷¤·¤Æɽ¼¨¤Ç¤¤Þ¤¹¡£Î㤨¤Ð¡¢ÎëÌÚ¤µ¤ó¤«¤é¹©Æ£¤µ¤ó¤Þ¤Çï¤ò²ð¤»¤Ð²ñ¤¨¤ë¤«¤ò¸¡º÷¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£°Ê²¼¤Î¤è¤¦¤Ëµ½Ò¤·¤Þ¤¹¡£
MATCH p=(:Person{name:"ÎëÌÚ"})-[*]->(:Person{name:"¹©Æ£"})
RETURN p;
¾åµ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ê¥°¥é¥Õ¤¬ÉÁ²è¤µ¤ì¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÎëÌÚ¤µ¤ó¤¬¹©Æ£¤µ¤ó¤ÈÃçÎɤ¯¤Ê¤ë¤Ë¤Ï°ËÆ£¤µ¤ó¤ò²ð¤»¤ÐÎɤ¤¤³¤È¤¬Ê¬¤«¤ê¤Þ¤·¤¿¡£
¡ûFizzBuzz¤ò¥°¥é¥Õ¤Çɽ¸½¤·¤Æ¤ß¤ë
³¤¤¤Æ¡¢ËÜÎãºÄ¤Ç¹±Îã¤È¤Ê¤Ã¤Æ¤¤¤ëFizzBuzzÌäÂê¤ò²ò¤¤¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤·¤«¤·¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÇFizzBuzz¤ò²ò¤¤¤Æ¤âÌÌÇò¤¯¤Ê¤¤¤Î¤Ç¡¢¤³¤³¤ÏFizz¤ÈBuzz¤Î´Ø·¸¤ò¥°¥é¥Õ¤Çɽ¼¨¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¤Ê¤ª¡¢1¤«¤é100¤Þ¤Ç¤ÎÃͤǡ¢Fizz¤È¤Ï3¤Ç³ä¤êÀÚ¤ì¤ëÃͤǤ¢¤ê¡¢Buzz¤È¤Ï5¤Ç³ä¤êÀÚ¤ì¤ëÃͤǤ¹¡£¤³¤ì¤òNeo4j¤Çɽ¸½¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£¤Ê¤ª¡¢¥×¥í¥°¥é¥à¤ò¥³¥Ô¡¼¤·¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤Á¤é¤«¤é¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£
// Fizz, Buzz¤Î¥Î¡¼¥É¤òºî¤ë --- (*1)
CREATE (:FizzBuzzGroup { name: "Fizz" }), (:FizzBuzzGroup { name: "Buzz" });
// 1¤«¤é100¤Þ¤Ç¤ÎÃͤòÄɲà --- (*2)
FOREACH (i IN RANGE(1,100) | CREATE (a:FizzBuzz{v:i}));
// isFizz, isBuzz¤Î´Ø·¸¤òÄɲà --- (*3)
MATCH (i:FizzBuzz),(g:FizzBuzzGroup{name:"Fizz"})
WHERE i.v % 3 = 0
CREATE (g)-[:isFizz]->(i);
MATCH (i:FizzBuzz),(g:FizzBuzzGroup{name:"Buzz"})
WHERE i.v % 5 = 0
CREATE (g)-[:isBuzz]->(i);
(¡ö1)¤ÎÉôʬ¤Ç¤Ï¡¢FizzBuzzGroup¤ËFizz¤ÈBuzz¤Î¥Î¡¼¥É¤òÄɲä·¤Þ¤¹¡£Â³¤¤¤Æ¡¢(¡ö2)¤Ç¤Ï¡¢1¤«¤é100¤ÎÃͤòɽ¤¹¥Î¡¼¥É(FizzBuzz)¤òÄɲä·¤Þ¤¹¡£¤½¤·¤Æ¡¢(¡ö3)¤ÇisFizz¤ÈisBuzz¤Î´Ø·¸¤òÄɲä·¤Þ¤¹¡£
³¤¤¤Æ°Ê²¼¤ò¼Â¹Ô¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
MATCH p=(n:FizzBuzzGroup)-[*]->(v:FizzBuzz) RETURN p
¤¹¤ë¤È¼¡¤Î¤è¤¦¤ËFizzBuizz¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£¼Â¹Ô·ë²Ì¤Ë¤½¤ì¤Û¤É°ÕÌ£¤¬¤¢¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢3¤ÎÇÜ¿ô(Fizz)¤È5¤ÎÇÜ¿ô(Buzz)¤Î¸øÇÜ¿ô¤¬³Îǧ¤Ç¤¤Þ¤¹¡£
¡û¤Þ¤È¤á
°Ê¾å¡¢º£²ó¤Ï¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤ÎNeo4j¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¡¢Cypher¤ò»È¤Ã¤Æ¥°¥é¥Õ¥Ç¡¼¥¿¥Ù¡¼¥¹¤òÁàºî¤¹¤ëÊýË¡¤ò¾Ò²ð¤·¤Þ¤·¤¿¡£Cypher¤ò»È¤¦¤È¡¢SQL¤Î¤è¤¦¤Ë¥Ç¡¼¥¿¤ÎÁÞÆþ¤«¤é¸¡º÷¤Þ¤Ç¹âÅ٤ʽèÍý¤¬²Äǽ¤Ç¤¹¡£FizzBuzz¤ÎÎã¤ò¸«¤ë¤ÈCypher¤Îɽ¸½ÎϤι⤵¤¬Ê¬¤«¤ë¤³¤È¤Ç¤·¤ç¤¦¡£´Êñ¤Ê¹½Ê¸¤µ¤¨³Ð¤¨¤Æ¤·¤Þ¤¨¤Ð¡¢¤½¤ì¤Ê¤ê¤Ë»È¤¨¤ë¤Î¤ÇÄ©À路¤Æ¤ß¤ë¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡£
¼«Í³·¿¥×¥í¥°¥é¥Þ¡¼¡£¤¯¤¸¤é¤Ï¤ó¤É¤Ë¤Æ¡¢¥×¥í¥°¥é¥ß¥ó¥°¤Î³Ú¤·¤µ¤òÅÁ¤¨¤ë³èÆ°¤ò¤·¤Æ¤¤¤ë¡£Âåɽºî¤Ë¡¢ÆüËܸì¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¡Ö¤Ê¤Ç¤·¤³¡× ¡¢¥Æ¥¥¹¥È²»³Ú¡Ö¥µ¥¯¥é¡×¤Ê¤É¡£2001ǯ¥ª¥ó¥é¥¤¥ó¥½¥Õ¥ÈÂç¾ÞÆþ¾Þ¡¢2004ǯÅṲ̀Ƨ¥æ¡¼¥¹ ¥¹¡¼¥Ñ¡¼¥¯¥ê¥¨¡¼¥¿Ç§Äê¡¢2010ǯ OSS¹×¸¥¼Ô¾Ï¼õ¾Þ¡£µ»½Ñ½ñ¤â¿¤¯¼¹É®¤·¤Æ¤¤¤ë¡£Ä¾¶á¤Ç¤Ï¡¢¡Ö¥·¥´¥È¤¬¤Ï¤«¤É¤ë Python¼«Æ°½èÍý¤Î¶µ²Ê½ñ(¥Þ¥¤¥Ê¥Ó½ÐÈÇ)¡×¡Ö¤¹¤°¤Ë»È¤¨¤ë!¶È̳¤Ç¼ÂÁ©¤Ç¤¤ë! Python¤Ë¤è¤ëAI¡¦µ¡³£³Ø½¬¡¦¿¼Áسؽ¬¥¢¥×¥ê¤Î¤Ä¤¯¤êÊý TensorFlow2Âбþ(¥½¥·¥à)¡×¡Ö¥Þ¥ó¥¬¤Ç¤¶¤Ã¤¯¤ê³Ø¤ÖPython(¥Þ¥¤¥Ê¥Ó½ÐÈÇ)¡×¤Ê¤É¡£