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

»¨Áð¤Î²»

2018-09-30

¢£JavaScript¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ï¡¢µÕ¤Î½çÈ֤dzؤó¤À¤Û¤¦¤¬Íý²ò¤·¤ä¤¹¤¤¤È»×¤¦¤Î¤Ç¡Ä 02:48

<title>JavaScript¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ï¡¢µÕ¤Î½çÈ֤dzؤó¤À¤Û¤¦¤¬Íý²ò¤·¤ä¤¹¤¤¤È»×¤¦¤Î¤Ç¡Ä</title>

JavaScript¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ï¡¢µÕ¤Î½çÈ֤dzؤó¤À¤Û¤¦¤¬Íý²ò¤·¤ä¤¹¤¤¤È»×¤¦¤Î¤Ç¡Ä

¢¨¤³¤ÎÅê¹Æ¤Ï 2011/03/10 ¤Ë ¤³¤Á¤é ¤ËÅê¹Æ¤·¤¿µ­»ö¤ÎžºÜ¤Ç¤¹¡£

¤³¤ì¤ò½ñ¤¤¤¿·Ð°Þ

¡¡»ö¤Îȯü¤È¤¤¤¦¤«¡¢¤­¤Ã¤«¤±¤Ï¡¢id:perlcodesample¤µ¤ó¤Èid:gfx¤µ¤ó¤Î²¼¤Î¥Ý¥¹¥È¤ò¸«¤Æ¡¢

¡¡new ¤È¤« prototype ¤ò»È¤¦¤Î¤¬¿ä¾©¤µ¤ì¤Æ¤Ê¤¤¤È¤«¡¢Ä¾ÀÜÂåÆþ¤¹¤ë¤Û¤¦¤¬³Ú¤È¤«¤¸¤ã¤Ê¤¯¤Æ¡¢µóư¤¬°ã¤¦¤ó¤À¤è¤Ê¤¡¡¢¤È»×¤Ã¤¿¤³¤È¡£

¡¡µóư¤¬°ã¤¦¤ó¤À¤«¤é¡¢¤â¤Á¤í¤ó»È¤¤¤É¤³¤í¤â°ã¤¦¤ó¤Ç¤¹¤è¤Í¡£

¡¡¤Ç¤â¼ÂºÝ¡¢JavaScript¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ïº®Í𤷤䤹¤¤¤È»×¤¤¤Þ¤¹¡£

¡¡¼«Ê¬¤â¤´Â¿Ê¬¤Ë¤â¤ì¤º¡¢¤µ¤ó¤¶¤óº®Í𤵤»¤é¤ì¤¿¥¯¥Á¤Ç¤¹¤·¤Í¡£

¡¡¤ï¤«¤Ã¤Æ¤·¤Þ¤¨¤Ð¡¢¤É¤Ã¤Æ¤³¤È¤Ê¤¯¤Æ¡¢¤È¤Ã¤Æ¤â¥·¥ó¥×¥ë¤Ê¤ó¤Ç¤¹¤±¤É¤Í¡£

¡¡¤»¤Ã¤«¤¯¤Ê¤Î¤Ç¡¢º£¤À¤«¤é¤³¤½¸À¤¨¤ë¡¢¼«Ê¬¤À¤Ã¤¿¤é¤³¤¦¤ä¤Ã¤Æ¶µ¤¨¤ÆÍߤ·¤«¤Ã¤¿¤Ê¤¡¡¢¤Ã¤Æ¤¤¤¦ÀâÌÀ¤ò¤·¤Æ¤ß¤è¤¦¤«¤È»×¤¤¤Þ¤¹¡£

¡¡Âꤷ¤Æ¡¢JavaScript¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ï¡¢µÕ¤«¤éÆþÌ礷¤í¡ª

µÕ¤«¤é¤Ã¤Æ¤É¤³¤«¤é¡© ¢ª Object.create¤«¤é

¡¡»×¤¦¤Ë¡¢JavaScript¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ï¡¢new ¤«¤éÆþ¤ë¤è¤ê¤â¡¢Object.create ¤«¤éÆþ¤Ã¤¿¤Û¤¦¤¬Íý²ò¤·¤ä¤¹¤¤¤È»×¤¦¤ó¤Ç¤¹¤è¤Í¡£

¡¡Object.create ¤Ã¤Æ¤¤¤¦¤Î¤Ï¡¢¿·¤·¤¤JavaScript¤Î»ÅÍÍ¡ÊECMAScript 5th Edition¡Ë¤Çɸ½à¤Ë¼è¤êÆþ¤ì¤é¤ì¤¿¥á¥½¥Ã¥É¤Ç¡¢°ú¿ô¤Ç»ØÄꤷ¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò¥×¥í¥È¥¿¥¤¥×¤È¤¹¤ë¿·¤·¤¤¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¡¡¤³¤ó¤Ê¤Õ¤¦¤Ë¤Ç¤¹:

var mam = {
  given_name : "¥µ¥¶¥¨",
  family_name: "¥Õ¥°¥¿",
  who_am_i   : function(){ alert(this.family_name + this.given_name);  }
};

var kid = Object.create(mam);
kid.given_name = "¥¿¥é¥ª";

mam.who_am_i();  // ¥Õ¥°¥¿¥µ¥¶¥¨
kid.who_am_i();  // ¥Õ¥°¥¿¥¿¥é¥ª
¡¡kid¤¬mam¤Î¥á¥½¥Ã¥É¤ò·Ñ¾µ¤·¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¤Í¡£

¡¡¤½¤â¤½¤âJavaScript¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ã¤Æ¥×¥í¥È¥¿¥¤¥×¥Ù¡¼¥¹¤Î·Ñ¾µ¤Ê¤ï¤±¤Ç¡¢new ¤È¤«¥³¥ó¥¹¥È¥é¥¯¥¿¤Ã¤Æ¤¤¤¦¤Î¤Ï¤Ê¤¯¤Æ¤â¤¤¤¤¤ó¤Ç¤¹¡£

¡¡¤³¤Î Object.create ¥á¥½¥Ã¥É¤«¤é¤Ï¤¸¤á¤Æ¡¢½¾Í褫¤é¤¢¤ë new ¤È¥³¥ó¥¹¥È¥é¥¯¥¿¡¢¤½¤ì¤«¤éprototype ¥×¥í¥Ñ¥Æ¥£¤Îµóư¤ò¤ß¤Æ¤¤¤³¤¦¤È»×¤¤¤Þ¤¹¡£

¡¡¤Ä¤Þ¤ê¡¢Îò»ËŪ¤ËµÕ½ç¤È¤¤¤¦¤ï¤±¤Ç¤¹¡£

¡¡¤Á¤Ê¤ß¤Ë¡¢¤³¤Î Object.create ¥á¥½¥Ã¥É¤Ï¡¢¥â¥À¥ó¤Ê¥Ö¥é¥¦¥¶¤Ê¤é´û¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢¼ÂºÝ¤Ë¼Â¹Ô¤·¤Æ»î¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¡Êº£²ó¼«Ê¬¤Ï¡¢Chrome 9.0¤Çưºî³Îǧ¤ò¤·¤Þ¤·¤¿¡£¡Ë

¤½¤â¤½¤â¥×¥í¥È¥¿¥¤¥×¤Ã¤Æ¤Ê¤ó¤Ê¤ó¡©

¡¡¾å¤Î¥³¡¼¥É¤ò¸«¤Æ¡¢¡ÖObject.create ¤ÎÃæ¤Ç¤Ï¿·¤·¤¤¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¤Æ mam ¤Î¥×¥í¥Ñ¥Æ¥£¤ò¥³¥Ô¤Ã¤Æ¤ë¤ó¤À¤Ê¡¢¤³¤ó¤Ê¤Õ¤¦¤Ë¢­¡×

Object.create = function ( o ) {
    var p = {};
    for ( var i in o ) {
        p[i] = o[i];
    }
    return p;
};

¡¡¤È»×¤Ã¤¿¥¢¥Ê¥¿¡ª¥¤¥¤Àþ¤¤¤Ã¤Æ¤Þ¤¹¡ª

¡¡¤Ç¤â¡¢»ö¤Ï¤½¤ì¤Û¤Éñ½ã¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¼¡¤Î¥³¡¼¥É¤ò³¤±¤Æ¼Â¹Ô¤·¤Æ¤ß¤Þ¤·¤ç¤¦:

mam.call = function(){ alert("¥«¥Ä¥ª¡ª"); };

mam.call();  // ¥«¥Ä¥ª¡ª
kid.call();  // ¥«¥Ä¥ª¡ª

¡¡call ¤Ï mam ¤Ë¤·¤«Äɲ䷤Ƥ¤¤Ê¤¤¤Î¤Ë¡¢kid ¤Î¤Û¤¦¤Ç¤â»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤è¡£

¡¡¼Â¤Ï mam ¤È kid ¤ÏƱ¤¸¥ª¥Ö¥¸¥§¥¯¥È¤ò»Ø¤·¤Æ¤¤¤ë¡©¤¤¤ä¤¤¤ä¡¢¾å¤Î¤Ç who_am_i ¤ò¸Æ¤ó¤À»þ¤Ë¤Ï¡¢¤Á¤ã¤ó¤ÈÊÌ¡¹¤Ë¤Ê¤Ã¤Æ¤Þ¤·¤¿¤è¤Í¡£

¡¡¼ïÌÀ¤«¤·¤ò¤¹¤ë¤È¡¢kid ¤Ï¼«¿È¤Ë¥»¥Ã¥È¤µ¤ì¤¿ given_name ¥×¥í¥Ñ¥Æ¥£°Ê³°¤Ï¤Ê¤ó¤Ë¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¡¢¤Û¤È¤ó¤É¶õ¤Ã¤Ý¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£

¡¡¤¿¤À¤·¡¢¼«Ê¬¤¬»ý¤Ã¤Æ¤¤¤Ê¤¤¥×¥í¥Ñ¥Æ¥£¤Ë¤Ä¤¤¤Æ¤Ï mam ¤ËÌ䤤¹ç¤ï¤»¤Æ¡¢mam ¤Î¤â¤Î¤ò¼«Ê¬¤Î¤â¤Î¤È¤·¤Æ»È¤ª¤¦¤È¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡¼Â¤Ï kid ¤Ï¥æ¡¼¥¶¤Îµ¤¤Å¤«¤Ê¤¤¤È¤³¤í¤Ç mam ¤Ø¤Î»²¾È¤ò±£¤·»ý¤Ã¤Æ¤¤¤Æ¡¢¼«Ê¬¤¬ÃΤé¤Ê¤¤¤³¤È¤Ïmam ¤Î¥Þ¥Í¤ò¤¹¤ë¤ï¤±¤Ê¤ó¤Ç¤¹¤Í¡£

¡¡¤³¤Î¤è¤¦¤ÊÆÃÊ̤ʴط¸¤¬¤¢¤ë¤È¤­¡¢mam ¤Ï kid ¤Î¥×¥í¥È¥¿¥¤¥×¤À¤È¸À¤¤¤Þ¤¹¡£

¡¡¤Þ¤¿¡¢kid ¤¬ mam ¤ËÌ䤤¹ç¤ï¤»¤¿¥×¥í¥Ñ¥Æ¥£¤ò mam ¤â»ý¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¤È¤·¤Þ¤·¤ç¤¦¡£

¡¡¤¹¤ë¤È mam ¤Ï¡¢¤ä¤Ï¤ê¼«Ê¬¤¬»ý¤Ã¤Æ¤¤¤ë±£¤·»²¾È¤ò»È¤Ã¤Æ¡¢¼«Ê¬¼«¿È¤Î¥×¥í¥È¥¿¥¤¥×¤Ø¤ÈÌ䤤¹ç¤ï¤»¤òÅÁȤµ¤»¤Þ¤¹¡£

¡¡¤³¤Î¤è¤¦¤Ë¥×¥í¥Ñ¥Æ¥£¤Îõº÷¤ò¤¿¤É¤Ã¤Æ¤¤¤¯¥ê¥ó¥¯¤ÎÏ¢¤Ê¤ê¤ò¡¢¥×¥í¥È¥¿¥¤¥×¥Á¥§¥¤¥ó¤È¸Æ¤ó¤À¤ê¤·¤Þ¤¹¡£

¡¡ºÇ½ªÅª¤Ë¡¢¤³¤Îº¿¤Î½ªÃ¼¤ÏÄ̾ï¤Ï Object.prototype ¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢½ªÃ¼¤Ë¤¿¤É¤ê¤Ä¤¤¤Æ¤â¤Þ¤À³ºÅö¤¹¤ë¥×¥í¥Ñ¥Æ¥£¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¡¢¥×¥í¥Ñ¥Æ¥£¤¬Ì¤ÄêµÁ¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¡¡Object.create ¤Ï¡¢¥ª¥Ö¥¸¥§¥¯¥È´Ö¤Ç¤³¤Î¤è¤¦¤ÊÆÃÊ̤ʴط¸¤òÃÛ¤¤¤Æ¤¯¤ì¤ë¤ï¤±¤Ç¤¹¤Í¡£

¥ª¡¼¥Ð¡¼¥é¥¤¥É¤Ï»Ò¶¡¤ÇÃͤòÀßÄꤹ¤ë¤À¤±

¡¡¤È¤³¤í¤Ç¡¢¾å¤Î call ¥á¥½¥Ã¥É¤Ç¤Ï¡¢kid ¤â mam ¤Î¥Þ¥Í¤ò¤·¤Æ¥«¥Ä¥ª¤ò¸Æ¤Ó¼Î¤Æ¤Ë¤·¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤·¤¿¡£

¡¡¤³¤³¤Ï¤Ò¤È¤Ä¡¢¤â¤¦¾¯¤·»Ò¶¡¤é¤·¤¯¸Æ¤Ö¤è¤¦¤Ë¤·¤Ä¤±¤ò¤·¤Æ¤¢¤²¤Þ¤·¤ç¤¦:

kid.call = function(){ alert("¥«¥Ä¥ª¤ª¤Ë¤¤¤Á¤ã¤ó"); };
kid.call();  // ¥«¥Ä¥ª¤ª¤Ë¤¤¤Á¤ã¤ó

¡¡¥×¥í¥Ñ¥Æ¥£Ãµº÷¤Îµóư¤¬¤ï¤«¤Ã¤Æ¤·¤Þ¤¨¤Ð¡¢µóư¤òÊѤ¨¤¿¤¤¾ì¹ç¤Ïñ¤ËÃͤòÂåÆþ¤·¤Æ¤·¤Þ¤¨¤ÐÎɤ¤¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¤Í¡£

¡¡¤â¤Á¤í¤ó¡¢¤³¤ÎÃʳ¬¤Ç¤â mam ¤Î call ¤ÎÃͤϸµ¤Î¤Þ¤Þ¤Ç¤¹¡£



¡¡µÕ¤Ë¡¢kid ÆÈ¼«¤Îµóư¤ò¸µ¤ËÌᤷ¤¿¤¤¤È»×¤Ã¤¿¤é¡¢¥×¥í¥Ñ¥Æ¥£¤òºï½ü¤·¤Æ¤ä¤ì¤ÐOK¤Ç¤¹:

delete kid.call;
kid.call();  // ¥«¥Ä¥ª¡ª

¡¡kid ¤«¤é¥×¥í¥Ñ¥Æ¥£¤ò¾Ã¤·¤Æ¤â¡¢mam ¤«¤é¤â¾Ã¤¨¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢¤Õ¤¿¤¿¤Ó¥Þ¥Í¤ò¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¤ï¤±¤Ç¤¹¤Í¡£

·Ñ¾µ¤ÈMixi-in

¡¡¤¿¤ÀƱ¤¸¿¶¤ëÉñ¤¤¤ò¤µ¤»¤¿¤¤¤À¤±¤Ç¤¢¤ì¤Ð¡¢Ã±½ã¤ËÊÒÊý¤Î¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¤â¤¦ÊÒÊý¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤È¤¹¤Ù¤Æ¤Î¥×¥í¥Ñ¥Æ¥£¤ò¥³¥Ô¡¼¤·¤Æ¤·¤Þ¤¨¤ÐÎɤ¤ÏäǤ¹¡£

¡¡¤³¤Î¤è¤¦¤Ë´û¸¤Î¼ÂÁõ¥³¡¼¥É¤ò¡¢¤Þ¤Ã¤¿¤¯´Ø·¸¤Î¤Ê¤¤¥ª¥Ö¥¸¥§¥¯¥È´Ö¤ÇºÆÍøÍѤ¹¤ë¤È¤¤¤¦¤Î¤Ï¡¢·Ñ¾µ¤Ç¤Ï¤Ê¤¯Mix-in¡ÊRuby¤Îinclude¤È¤«¡Ë¤Î¹Í¤¨Êý¤Ç¤¹¡£

¡¡ÍøÍÑ¥±¡¼¥¹¤Ë¤è¤Ã¤Æ¤Ï¡¢Mix-in¤È·Ñ¾µ¤Ï¤Þ¤Ã¤¿¤¯Æ±¤¸¤è¤¦¤Ê·ë²Ì¤ò¤â¤¿¤é¤·¤Þ¤¹¡£

¡¡¤·¤«¤·¥×¥í¥È¥¿¥¤¥×·Ñ¾µ¤ò»È¤¦¤È¡¢¿Æ¤Ø¤Îµ¡Ç½³ÈÄ¥¡Ê¥á¥½¥Ã¥É¤ÎÄɲáˤ¬¡¢¤¹¤°¤µ¤Þ»Ò¶¡¤«¤é¤â»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ë¤È¤¤¤¦ÅÀ¤¬Â礭¤Ê°ã¤¤¤Ç¤¹¡£

¡¡¼Â¹Ô»þ¤Ë¡¢¥×¥í¥È¥¿¥¤¥×¥Á¥§¥¤¥ó¤ËÏ¢¤Ê¤Ã¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ¡¢°ìÅÙ¤ÎÊѹ¹¤Çµ¡Ç½¤òÄɲá¦Êѹ¹¤Ç¤­¤Þ¤¹¡£

¡¡¤Þ¤¿¡¢¤É¤ì¤À¤±¤¿¤¯¤µ¤ó¤Î»Ò¥ª¥Ö¥¸¥§¥¯¥È¤¬ºî¤é¤ì¤Æ¤¤¤Æ¤â¡¢¤¿¤È¤¨»Ò¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¤È¤·¤Æ¤â¡¢Êѹ¹¤Î±Æ¶Á¤òµÚ¤Ü¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¡¡Mixi-in¤È¤Ï°ã¤Ã¤Æ¡¢¿Æ»Ò¥ª¥Ö¥¸¥§¥¯¥È´Ö¤ÇÆÃÊ̤Ê嫤¬¤Ç¤­¤Æ¤¤¤ë·Ñ¾µ¤Ç¤Ê¤¯¤Æ¤Ï¡¢¤³¤¦½ÀÆð¤Ë¤Ï¤¤¤­¤Þ¤»¤ó¤è¤Í¡£

¡¡¤·¤«¤·¡¢·Ñ¾µ¤¬¤«¤µ¤ó¤Ç¥×¥í¥È¥¿¥¤¥×¥Á¥§¥¤¥ó¤¬¤¢¤Þ¤ê¤ËŤ¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤È¡¢¤º¤Ã¤È¿Æ¤ÎÂå¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥×¥í¥Ñ¥Æ¥£¤òõº÷¤¹¤ë¤Î¤Ë¿¤¯¤Î»þ´Ö¤¬¤«¤«¤Ã¤Æ¤·¤Þ¤¦¤³¤È¤Ë¤â¤Ê¤ê¤Þ¤¹¡£¡Ê¤³¤Î¤¢¤¿¤ê¤Ï½èÍý·Ï¤ÎºÇŬ²½¤Ë¤âÂ礭¤¯°Í¸¤·¤Þ¤¹¤¬¡Ë

¡¡¤À¤«¤é¤È¤¤¤Ã¤Æ¡¢¤Ê¤ó¤Ç¤â¤«¤ó¤Ç¤â¤½¤ì¤¾¤ì¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬¼«Ê¬¤Ç»ý¤Ã¤Æ¤¤¤Æ¤Ï¡¢¥á¥â¥ê¸úΨ¤â°­¤¯¤Ê¤ë¤Ç¤·¤ç¤¦¤·¡¢·Ñ¾µ¤ò»È¤Ã¤¿½ÀÆð¤ÊµóưÊѹ¹¤â¤Ç¤­¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡£

¡¡·ë¶É¡¢·Ñ¾µ¤ÈMixi-in¤ÏŬºàŬ½ê¡£

¡¡¤½¤Î¾ì¤ÇÁê±þ¤·¤¤¤Û¤¦¤ò»È¤¤Ê¬¤±¤ë¤³¤È¤¬¤Ç¤­¤Æ¤³¤½¡¢¿¿¤ÎJavaScripter¤È¤¤¤¦¤â¤Î¤Ç¤¹¤è¤Í¡ª

¥×¥í¥È¥¿¥¤¥×´Ø·¸¤òºî¤ì¤ë¤Î¤Ïnew¤À¤±¡Ê¤À¤Ã¤¿¡Ë

¡¡¤³¤³¤«¤é¤Ï¡¢¾å¤Ç»È¤Ã¤¿ Object.create ¤Îµ¡Ç½¤ò¡¢½¾Íè¤ÎJavaScript¤À¤±¤Ç¼ÂÁõ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£

¡¡¤¤¤­¤Ê¤ê¥³¡¼¥É¤Ç½ñ¤¯¤È¡¢¤³¤¦¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹:

Object.create = function ( o ) {
    function dummy(){}
    dummy.prototype = o;
    return new dummy();
}

¡Ê¢¨¼ÂºÝ¤Î Object.create ¤Ï¡¢Êѹ¹ÉÔ²Äǽ¤Ê¥×¥í¥Ñ¥Æ¥£¤òÄêµÁ¤Ç¤­¤¿¤ê¤È¡¢3rd Edition¤ÎÈϰϤǤϷ褷¤Æ¼Â¸½¤Ç¤­¤Ê¤«¤Ã¤¿µ¡Ç½¤â´Þ¤à¹âµ¡Ç½¤Ê¤â¤Î¤Ç¤¹¡ª¤³¤³¤Ç¤Ï¤¢¤¯¤Þ¤Ç¡¢¥×¥í¥È¥¿¥¤¥×¤Î·Ñ¾µ´Ø·¸¤Î¹½ÃۤΤߤ˾ÇÅÀ¤òÅö¤Æ¤Æ¤¤¤Þ¤¹¡£¡Ë

¡¡¶õ¤Î´Ø¿ô¤Ç¤¢¤ë dummy ¤ò new ¤·¤ÆÊÖ¤¹Á°¤Ë¡¢dummy ¤Î prototype ¥×¥í¥Ñ¥Æ¥£¤Ë¥×¥í¥È¥¿¥¤¥×¤È¤Ê¤ë¥ª¥Ö¥¸¥§¥¯¥È¤òÀßÄꤷ¤Æ¤¤¤ë¤Î¤¬¥ß¥½¤Ç¤¹¡£

¡¡JavaScript¤Ç¤Ï¡¢ new F(ARGS) ¤È¤¤¤¦¼°¤Ï¡¢¼¡¤Î¤è¤¦¤Ë½èÍý¤µ¤ì¤Þ¤¹:

  1. ¿·¤·¤¤¶õ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤ë
  2. ¿·¤·¤¤¥ª¥Ö¥¸¥§¥¯¥È¤Î¥×¥í¥È¥¿¥¤¥×¤È¤·¤Æ F.prototype ¤òÀßÄꤹ¤ë
  3. F(ARGS) ¤ò¸Æ¤Ó½Ð¤¹¡£¤³¤Î»þ¡¢¸Æ¤Ó½Ð¤µ¤ì¦¤Î this ¤ÎÃͤȤ·¤Æ¿·¤·¤¯ºî¤Ã¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¦
  4. 3¤Î·ë²Ì¤¬¥ª¥Ö¥¸¥§¥¯¥È¤À¤Ã¤¿¤é¡¢¤³¤ì¤ò·ë²Ì¤È¤·¤ÆÊÖ¤¹¡£
  5. ¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢1¤Çºî¤Ã¤¿¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹ ¡¡µ¼»÷¥³¡¼¥ÉŪ¤Ë½ñ¤¯¤È¡¢¤³¤ó¤Ê¤«¤ó¤¸:

function new ( F, ARGS ) {
    var o = {};
    o.__proto__ = F.prototype;
    var r = F.apply(o, ARGS);
    return r != null && r instanceof Object ? r : o;
}

¡¡¤¢¤ì¡¢¤³¤³¤Ç»È¤Ã¤Æ¤ë __proto__ ¤Ã¤Æ¡¢¤É¤³¤«¤Ç¸«¤¿¤³¤È¤¢¤ê¤Þ¤»¤ó¤«¡©

¡¡¤½¤¦¤Ç¤¹¡£·Ñ¾µ¤¹¤ë¥³¡¼¥É¤Ç¤¿¤Þ¤Ë½Ð¤Æ¤¯¤ë¤ä¤Ä¤Ç¤¹¤Í¡£Firefox¤È¤«Chrome¤È¤«¡¢ÆÃÄê¤Î½èÍý·Ï¤À¤±¤Ç»È¤¨¤Þ¤¹¡£

¡¡¼Â¤Ï¤³¤ì¤¬¡¢¾å¤Ç¸À¤Ã¤Æ¤¤¤¿¡Ö¥æ¡¼¥¶¤¬µ¤¤Å¤«¤Ê¤¤¤È¤³¤í¤Ç»ý¤Ã¤Æ¤¤¤ë±£¤·»²¾È¡×¤Î¤³¤È¤Ç¤¹¡£

¡¡½èÍý·Ï¤Ë¤è¤Ã¤Æ¤Ï¡¢¤³¤ì¤¬¥æ¡¼¥¶¤«¤éľÀÜ¿¨¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¤Í¡£

¡¡Ä¾Àܤ¤¤¸¤ì¤Á¤ã¤¨¤Ð¡¢¤â¤Ã¤ÈºÙ¤«¤¤À©¸æ¤â¤ä¤êÊüÂê¤Ê¤Î¤Ç¡¢¤³¤ì¤ÏÊØÍø¡ª¤Ê¤Î¤Ç¤¹¤¬¡¢¤â¤Á¤í¤ó¡¢¥Ö¥é¥¦¥¶´Ö¤Î¸ß´¹À­¤¬Â»¤Ê¤ï¤ì¤ë¤Î¤Ç¡¢¤¢¤Þ¤ê¥ª¥¹¥¹¥á¤Ï¤·¤Þ¤»¤ó¡£

¡¡Èóɸ½à¤ÊAPI¤Ï¡¢¤Á¤ã¤ó¤È»È¤¨¤ë¾ì½ê¤È»È¤¤¤É¤³¤í¤È¤ò¤ï¤­¤Þ¤¨¤Æ»È¤¤¤Þ¤·¤ç¤¦¤Í¡£JavaScripter¤È¤ÎÌó«¤À¤è¡ª

new¤¤¤é¤Ê¤¤»Ò(¥§

¡¡¾å¤Ç new ¤ò¼ÂÁõ¤¹¤ë¤¿¤á¤Ë __proto__ ¥×¥í¥Ñ¥Æ¥£¤ò»È¤¤¤Þ¤·¤¿¤¬¡¢ Object.create ¤òɸ½à¤Ç¼ê¤ËÆþ¤ì¤¿²æ¡¹¤Ïº£¤ä¡¢__proto__ ¤ËÍê¤é¤º¤È¤â¥ª¥Ö¥¸¥§¥¯¥È¤Î¿Æ»Ò´Ø·¸¤òºî¤ì¤ëÎϤò¼ê¤Ë¤·¤¿¤Î¤Ç¤·¤¿¡£

¡¡¤Ä¤Þ¤ê¡¢new ¤ËÁêÅö¤¹¤ëµ¡Ç½¤òJavaScriptɸ½à¤Îµ¡Ç½¤À¤±¤Ç¼ÂÁõ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤Î¤Ç¤¹¡ª

¡¡¤³¤ó¤Ê¤Õ¤¦¤Ë¡§

function New ( F, ARGS ) {
    var o = Object.create(F.prototype);
    var r = F.apply(o, ARGS);
    return r != null && r instanceof Object ? r : o;
}

function Cat ( name ) {
    this.name = name;
}
Cat.prototype.caterwaul = function(){
    alert(this.name + "¡Ö¥Ë¥ã¡¼¥Ë¥ã¡¼¡×");
};

var cat = New(Cat, ["¥¿¥Þ"]);
cat.caterwaul();  // ¥¿¥Þ¡Ö¥Ë¥ã¡¼¥Ë¥ã¡¼¡×

¡¡¾å¤Ç¤Ï new ¤ò»È¤Ã¤Æ Object.create ¤ò¼ÂÁõ¤¹¤ëÎã¤ò¼¨¤·¤Þ¤·¤¿¤¬¡¢º£²ó¤Ï¤½¤ÎµÕ¤Ç¤¹¡£

¡¡¤Ä¤Þ¤ê¡¢Object.create ¤¬ºÇ½é¤«¤é¤¢¤ì¤Ð¡¢new ¤Ã¤Æ¤¤¤é¤Ê¤«¤Ã¤¿¤Ã¤Æ¤³¤È¤Ç¤¹¤Í(>_<)

¼ØÂ­¡§ ¤Ê¤ó¤Ç¤ï¤¶¤ï¤¶´Ø¿ô¤Î¥×¥í¥Ñ¥Æ¥£¤ò·Ðͳ¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤ë¤Î¡©

¡¡¤Ê¤ó¤Ç¤Ç¤·¤ç¤¦¤Í¡©

¡¡¤³¤³¤«¤é¤Ï¾¡¼ê¤Ë¿ä¬¤·¤Æ¤ß¤Þ¤¹¤¬¡¢¤¿¤Ö¤ó¡¢´Ø¿ô¤À¤±¤Ç¤Ê¤ó¤È¤«¤·¤ÆJava¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Î¸«¤¿Ìܤò¥Þ¥Í¤·¤¿¤«¤Ã¤¿¤ó¤¸¤ã¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡©

¡¡ÉáÄ̤ϡ¢°ìÏ¢¤Îµ¡Ç½¤ò¤â¤Ã¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò¤¿¤À¤Ò¤È¤Ä°ìÅÀʪ¤Çºî¤ë¡Ê¥·¥ó¥°¥ë¥È¥ó¥Ñ¥¿¡¼¥ó¤ß¤¿¤¤¤Ê¡Ë¥±¡¼¥¹¤è¤ê¤â¡¢Æ±¤¸µ¡Ç½¤ò¤â¤Ã¤¿¥ª¥Ö¥¸¥§¥¯¥È¤ò¤¿¤¯¤µ¤óÎÌ»º¤¹¤ë¥±¡¼¥¹¤Î¤Û¤¦¤¬Â¿¤¤¤È»×¤¤¤Þ¤¹¡£

¡¡¤¹¤ë¤ÈÅöÁ³¡¢¥ª¥Ö¥¸¥§¥¯¥È¤Î½é´ü²½¤ò¹Ô¤¦½èÍý¤ò¥µ¥Ö¥ë¡¼¥Á¥ó²½¤·¤Æ¤ª¤¤¤Æ¡¢¤½¤ÎÃæ¤Ç¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¤ÆÊÖ¤¹¤³¤È¤ò¹Í¤¨¤Þ¤¹¤è¤Í¡£

¡¡¤³¤ó¤Ê¤Õ¤¦¤Ë:

function bear ( name ) {
    var k = Object.create(mam);
    k.name = name;
    return k;
}

var kid = bear("¥¿¥é¥ª");

¡¡¤Ä¤Þ¤ë¤È¤³¤í¤³¤ì¤Ã¤Æ¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¤Ç¤¹¤è¤Í¡©

¡¡¤Þ¤¿°ìÊý¤Ç¡¢JavaScript¤Ï¤½¤Î½Ð¼«¤«¤é¡¢Java¤Ë¸«¤¿Ìܤò»÷¤»¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤È¤¤¤¦½ÉÌ¿¤ò»ý¤Ã¤ÆÀ¸¤Þ¤ì¤Æ¤­¤Þ¤·¤¿¡£¡Ê¤³¤Î¤¢¤¿¤ê¤Ï¡¢id:badatmath¤µ¤ó¤Î¥×¥ì¥¼¥ó»ñÎÁ ¤¬¤È¤Ã¤Æ¤â¤ï¤«¤ê¤ä¤¹¤¤¤Ç¤¹¡Ë

¡¡¤Ç¡¢Java¤Ã¤Æ¥³¥ó¥¹¥È¥é¥¯¥¿¤ò¸Æ¤Ó½Ð¤¹¤È¤­¤Ë¤Ï new ¤ò¤Ä¤±¤Þ¤¹¤è¤Í¡©

¡¡¤½¤³¤Ç¡¢new ¤ò¤Ä¤±¤Æ´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤¿¤È¤­¤ËÆÃÊ̤ʽèÍý¤ò»ý¤¿¤»¡¢´Ø¿ô¤Ë¥³¥ó¥¹¥È¥é¥¯¥¿¤È¥¯¥é¥¹¤Î£²¤Ä¤ÎÌò³ä¤ò²¡¤·ÉÕ¤±¤Æ¤·¤Þ¤ª¤¦¤È¹Í¤¨¤¿¤Î¤Ç¤Ï¤Ê¤¤¤«¤È»×¤¤¤Þ¤¹¡£

¡¡¤½¤¦¤Ê¤ë¤È¡¢Java¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Ã¤Ý¤¯¸«¤»¤ë¤¿¤á¤Ë¤Ï¡¢´Ø¿ô¤¬ new ¤ò¤Ä¤±¤Æ¸Æ¤Ó½Ð¤µ¤ì¤¿¤È¤­¤Ë¤Ï¡¢¿·¤·¤¤¥ª¥Ö¥¸¥§¥¯¥È¤¬Å¬Àڤˡʥץí¥È¥¿¥¤¥×¤«¤é·Ñ¾µ¤µ¤ì¤Æ¡Ëºî¤é¤ì¡¢this ¤Ë¥Ð¥¤¥ó¥É¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

¡¡¤½¤³¤Ç¡¢¤½¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¡Ê´Ø¿ô¡Ë¤¬¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤¹¤ëºÝ¤Ë°ÅÌÛŪ¤Ë»È¤¦¥×¥í¥È¥¿¥¤¥×¤ò¡¢¥³¥ó¥¹¥È¥é¥¯¥¿¼«¿È¤Ë»ý¤¿¤»¤Æ¤ª¤³¤¦¡£¤Ç¤â¡¢¤É¤Î´Ø¿ô¤¬¥³¥ó¥¹¥È¥é¥¯¥¿¤È¤·¤Æ¸Æ¤Ó½Ð¤µ¤ì¤ë¤«¤Ï¤ï¤«¤é¤Ê¤¤¤«¤é¡¢¤¹¤Ù¤Æ¤Î´Ø¿ô¤Ë¥×¥í¥Ñ¥Æ¥£¤Ç»ý¤¿¤»¤Æ¤ª¤³¤¦¡£

¡¡¤Ã¤Æ¤¤¤¦¤³¤È¤Ë¤Ê¤Ã¤¿¤ó¤¸¤ã¤Ê¤¤¤«¤È¡£

¡¡¤¨¤Ã¡¢JavaScript¤ÏºÇ½é¤«¤é¥×¥í¥È¥¿¥¤¥×¥Ù¡¼¥¹¤Î¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤òºÎÍѤ¹¤ë¤Ä¤â¤ê¤À¤Ã¤¿¤Î¤«¤Ã¤Æ¡©

¡¡¤½¤ì¤Ï¤ï¤«¤ê¤Þ¤»¤ó¡£Sun Microsystems¤¬¥×¥í¥È¥¿¥¤¥×¥Ù¡¼¥¹¤Î»ÏÁĤǤ¢¤ëSelf¤Î¸¦µæ¼Ô¤òÊú¤¨¤Æ¤¤¤¿¤Ã¤Æ¤³¤È°Ê³°¡¢»ä¤ÏÃΤê¤Þ¤»¤ó¡£

¡¡³«È¯¼Ô¤ÎEich»á¤Ï¡¢ºÇ½é¤«¤éScheme¤Î¤è¤¦¤Ê´Ø¿ô·¿¸À¸ì¤òºî¤ë¤Ä¤â¤ê¤À¤Ã¤¿¤è¤¦¤Ç¤¹¤±¤É¤Í¡£

½ñ¤¤¤¿¤¢¤È¤Ë°ì¸À

¡¡¤¦¤ó¡ª

¡¡Ä¹¡¹¤È½ñ¤¤¤¿¤ï¤ê¤Ë¤Ï¡¢Á´Á³¤ï¤«¤ê¤ä¤¹¤¯¤Ê¤Ã¤Æ¤Ê¤¤µ¤¤¬¤¹¤ë¤Í(¡­¡¦¦Ø¡¦¡®)

¢£Google Fonts¤¬ÆüËܸìWEB¥Õ¥©¥ó¥È¤òÀµ¼°¥µ¥Ý¡¼¥È – Dream Seed 00:03

<title>Google Fonts¤¬ÆüËܸìWEB¥Õ¥©¥ó¥È¤òÀµ¼°¥µ¥Ý¡¼¥È – Dream Seed</title>

Google Fonts¤¬ÆüËܸìWEB¥Õ¥©¥ó¥È¤òÀµ¼°¥µ¥Ý¡¼¥È

¥æ¡¼¥¶¡¼¤ÎüËö¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¥Õ¥©¥ó¥È¤òɽ¼¨¤Ç¤­¤ëWEB¥Õ¥©¥ó¥È¡£ÊØÍø¤ÊÈ¿ÌÌ¡¢ÆüËܸì¤Ê¤Éʸ»ú¿ô¤¬Â¿¤¤¥Õ¥©¥ó¥È¤Ç¤Ï¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤¬Â礭¤¯¤Ê¤ê¡¢ÄÌ¿®Î̤¬Áý¤¨¤Æ¤·¤Þ¤¦¤Î¤¬ÆñÅÀ¤Ç¤¹¡£

¤·¤«¤·¡¢¤½¤ó¤ÊÆüËܸì¥Õ¥©¥ó¥È¤òGoogle¤ÎWEB¥Õ¥©¥ó¥È¥µ¡¼¥Ó¥¹¡ÖGoogle Fonts¡×¤¬¥µ¥Ý¡¼¥È¤·¤Þ¤·¤¿¡£¤È¤¤¤Ã¤Æ¤â¡¢°ÊÁ°¤«¤éÁá´ü¥¢¥¯¥»¥¹¤È¤·¤ÆÄ󶡤Ϥµ¤ì¤Æ¤¤¤Þ¤·¤¿¤¬¡¢Àµ¼°ÈǤˤʤ俤Ȥ¤¤¦¤³¤È¤Î¤è¤¦¤Ç¤¹¡£

ÍøÍѲÄǽ¤Ê¤Î¤Ï¥´¥·¥Ã¥¯6¼ï + ÌÀÄ«2¼ï¤Î8½ñÂΡ£Áá´ü¥¢¥¯¥»¥¹¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë¤â¤Î¤È¤Ï½ñÂΤ¬°Û¤Ê¤ê¤Þ¤¹¡£

  • Noto Sans JP
  • Noto Serif JP
  • Sawarabi Mincho
  • Sawarabi Gothic
  • M PLUS 1p
  • M PLUS Rounded 1c
  • Kosugi
  • Kosugi Maru

·üǰ¤Î¥Õ¥¡¥¤¥ë¥µ¥¤¥º¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥Õ¥©¥ó¥È¥¹¥é¥¤¥·¥ó¥°¥·¥¹¥Æ¥à¤ÎºÇŬ²½¤ÇÂбþ¤·¤¿¤È¤Î¤³¤È¡£¤³¤ì¤Ï¡¢¥Õ¥©¥ó¥È¥Õ¥¡¥¤¥ë¤ò¤Þ¤È¤á¤Æ¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢´ö¤Ä¤«¤Î¥Õ¥¡¥¤¥ë¤Ëʬ¤±¡Ê¥¹¥é¥¤¥¹¡Ë¡¢É¬Íפ˱þ¤¸¤Æ¥À¥¦¥ó¥í¡¼¥É¤¹¤ë¤è¤¦¤Ë¤¹¤ë¤â¤Î¡£

ÆüËܸì¤Î¾ì¹ç¡¢ÉѽФ¹¤ë3000ʸ»ú¤ò20¤Î¥¹¥é¥¤¥¹¤Ëʬ³ä¤¹¤ë¤Î¤¬ºÇ¤â¸ú²ÌŪ¤À¤Ã¤¿¤È¤«¡£¤³¤ì¤Ë¤è¤ê¡¢¥¯¥é¥¤¥¢¥ó¥È¤Ï¥Õ¥©¥ó¥ÈÁ´ÂΤòÁ÷¿®¤·¤¿¾ì¹ç¤è¤ê¤â80%¾¯¤Ê¤¤¥Ð¥¤¥È¿ô¤ÎžÁ÷¤ÇºÑ¤à¤è¤¦¤Ë¤Ê¤ê¡¢·ë²Ì¤È¤·¤ÆÆüËܸì¥Õ¥©¥ó¥È¤ÎÀµ¼°Âбþ¤¬²Äǽ¤Ë¤Ê¤Ã¤¿¤È¤Î¤³¤È¤Ç¤¹¡£

¤½¤ó¤ÊÆñ¤·¤¤ÏäÏÃÖ¤¤¤Æ¤ª¤¤¤Æ¡¢ÆüËܸì¥Õ¥©¥ó¥È¤â¼ÂÍÑŪ¤Ê¥ì¥Ù¥ë¤ÇWEB¥Õ¥©¥ó¥È¤¬ÍøÍѲÄǽ¤Ë¤Ê¤Ã¤¿¤È»×¤Ã¤Æ¤ª¤±¤ÐÎɤµ¤½¤¦¤Ç¤¹¡£

¤Á¤Ê¤ß¤Ë¤³¤Î¥µ¥¤¥È¤Ç¤â¾¯¤·Á°¤«¤éKosugi Maru¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£

(source Google Developers Blog)

2018-09-29

¢£Python¤Ç³Ø¤Ö¡Ø¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç¡Ù¤¬Îɤ¹¤®¤¿Ïà - 🎃toricago🎃 15:08

<title>Python¤Ç³Ø¤Ö¡Ø¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç¡Ù¤¬Îɤ¹¤®¤¿Ïà - 🎃toricago🎃</title>

Python¤Ç³Ø¤Ö¡Ø¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç¡Ù¤¬Îɤ¹¤®¤¿ÏÃ

¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤Î¼Ò²ñ¼ÂÁõ¤ÎÀª¤¤¤¬»ß¤Þ¤é¤Ê¤¤¡£¥Æ¥Ã¥¯»Ô¾ì¤ËÆÃ²½¤·¤¿¥¤¥®¥ê¥¹¤ÎÄ´ºº²ñ¼ÒJuniper Research¤¬¡¢º£Ç¯¤Î²Æ¤Ëȯ¹Ô¤·¤¿Ä´ºº¥ì¥Ý¡¼¥È¤Î·ë²Ì¤Ë¤è¤ë¤È¡¢

¡ÊÂç´ë¶È¡á£±Ëü¿Í°Ê¾å¡Ë

¤È¤Î¤³¤È¤À¡£

¤¨¡ªÆ³ÆþÈæÎ¨¡¢°Õ³°¤Ë¹â¤¯¤Ê¤¤¡©¹ñÆâ¤Ç¤âÎ㤨¤Ð¡¢¤Ä¤¤ºòÆü¤ÏÆüËܷкѿ·Ê¹¤ÎÄ«´©¤ËLINE¤¬¥È¡¼¥¯¥ó¥¨¥³¥Î¥ß¡¼¹½Áۤξܺ٤òÌÀ¤é¤«¤Ë¤·¤¿¤³¤È¤¬ÏÃÂê¤Ë¤Ê¤Ã¤¿¤ê¤·¤Æ¡¢¤¿¤Þ¤Ë¸«¤«¤±¤ë¤±¤É¡¢¤Þ¤µ¤«¤³¤³¤Þ¤ÇÍè¤Æ¤¤¤¿¤È¤Ï¶Ã¤­¤À¡£¤³¤³¤Þ¤ÇÍè¤Æ¤·¤Þ¤¦¤È¡¢¤½¤í¤½¤í»ä¤Î¤è¤¦¤Ê°ì²ð¤Î¥µ¥é¥ê¡¼¥Þ¥ó¤Ç¤¢¤Ã¤Æ¤â¡¢¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤òÍý²ò¤·¤Æ¤ª¤«¤Ê¤¤¤È¤¤¤±¤Ê¤¤Ê·°Ïµ¤¤¬Éº¤Ã¤Æ¤­¤¿¤È¸À¤ï¤¶¤ë¤òÆÀ¤Ê¤¤¡£

¤À¤¬¡¢¤½¤ì¤¬·ë¹½Æñ¤·¤¤¡£°ì¶ÚÆì¤Ç¤Ï¤¤¤«¤Ê¤¤¡£¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤Î¥Ó¥¸¥Í¥¹½ñ¤ò²¿ºý¤«ÆÉ¤ó¤Ç¤ß¤Æ¤â¡¢¤ï¤«¤Ã¤¿¤è¤¦¤Ê¤ï¤«¤é¤Ê¤¤¤è¤¦¤Ê¡Ö¤È¤ê¤¢¤¨¤º¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤Ë¾è¤»¤ì¤Ð¤Ê¤ó¤«¥¹¥´¥¤¡×¤È¤¤¤¦¥ì¥Ù¥ë¤«¤éæ½Ð¤Ç¤­¤Ê¤¤¡£Íî¤Á¹þ¤à¡£

¤½¤ó¤Ê¤³¤È¤ò¹Í¤¨¤Æ¤¤¤¿¤é¡¢Codecademy¤È¤¤¤¦¡¢¥ª¥ó¥é¥¤¥ó¤Ç¥×¥í¥°¥é¥ß¥ó¥°¤ò̵ÎÁ¤ÇÊÙ¶¯¤Ç¤­¤ë¥µ¥¤¥È¤«¤é¡¢¥á¡¼¥ë¤¬ÆÏ¤¤¤¿¡£°ÊÁ°¡¢¤³¤³¤Î¥µ¥¤¥È¤Ç¿§¡¹¤ÈÊÙ¶¯¤·¤¿¤³¤È¤¬¤¢¤Ã¤¿¤Î¤Ç¡¢¥á¡¼¥ë¥¢¥É¥ì¥¹¤¬Subscribe¤µ¤ì¤Æ¤¤¤¿¤Î¤À¤í¤¦¡£¥á¡¼¥ë¤ò³«¤¤¤Æ¤ß¤¿¤é¡¢¡Ø¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç¡Ù¤È¤¤¤¦¥³¡¼¥¹¤¬¥ª¡¼¥×¥ó¤·¤¿¤È¤¤¤¦¤ªÃΤ餻¤À¤Ã¤¿¡£

Want to be able to talk intelligently about Blockchain and apply the fundamentals to your work? After this course you¡Çll be able to do that and more, including build a blockchain library in Python and create your own blocks through interactive simulations.

¥Ê¥¤¥¹¥¿¥¤¥ß¥ó¥°¡ª¡ªÁᮤÀ¤¬»î¤·¤Æ¤ß¤¿¡£¤¹¤ë¤È·ë¹½Îɤ«¤Ã¤¿¡£ÌµÎÁ¤Ç¡¢»þ´Ö¤Ï¤½¤ó¤Ê¤Ë¼è¤é¤ì¤Ê¤¤¤·¡¢¼ÂÁõ¤ÎÊ·°Ïµ¤¤â¤ï¤«¤ë¤·¡¢¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤ÎÍý²ò¤â¿¼¤Þ¤ë¤·¡¢Python¤Ç¤Ç¤­¤ë¤Î¤Ç¿·¤¿¤Ê¸À¸ì¤ò³Ð¤¨¤Ê¤¯¤Æ¤âÎɤ¤¡ª¤È¤¤¤¦¤³¤È¤Ç¥Ö¥í¥°¤Ç¤â¾Ò²ð¤·¤¿¤¤¤Ê¤¡¤È»×¤Ã¤¿¼¡Âè¤Ç¤¢¤ë¡££²£°£±£¸Ç¯£¹·î¤«¤é³«»Ï¤µ¤ì¤¿¤Ð¤«¤ê¤ÎºÇ¿·¥ª¥ó¥é¥¤¥ó¹ÖºÂ¡¢³§¤µ¤ó¤â¤¤¤«¤¬¤Ç¤·¤ç¤¦¡©

¤É¤¦¤¤¤¦ÆâÍÆ¤«¡©

Á°È¾¡¢¸åȾ¤Î£²Éô¹½À®¤È¤Ê¤Ã¤Æ¤¤¤ë¡£Á°È¾¤Ï¥ì¥¯¥Á¥ã¡¼·Á¼°¤Ç¥³¡¼¥Ç¥£¥ó¥°¤Ï°ìÀڽФƤ³¤Ê¤¤¡£¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤Î»ÅÁȤߤκÇÄã¸Â¤ò³Ø¤Ö¤È¤¤¤¦·Á¤Ç¡¢¥Ó¥¸¥å¥¢¥ë¤¬½¼¼Â¤·¤Æ¤¤¤Æ¤ï¤«¤ê¤ä¤¹¤¤¤·¡¢£²£°Ê¬¤°¤é¤¤¤Ç¥µ¥¯¥Ã¤È½ª¤ï¤ë¡£

¤¿¤À¡¢»öÁ°Ã챤¬¤Ê¤±¤ì¤Ð¡Ö¤ï¤«¤Ã¤¿¤è¤¦¤Ê¤ï¤«¤é¤Ê¤¤¤è¤¦¤Ê¡Ä¡×¤È¤¤¤¦¾õÂ֤˴٤äƤ·¤Þ¤¦¤Î¤Ç¤Ï¤Ê¤«¤í¤¦¤«¡£¼Â¤Ï¿ô½µ´ÖÁ°¤Ë»ä¤Ï¤Á¤ç¤¦¤É¡ØÅ°ÄìÍý²ò¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¡Ù¤òÆÉ¤ß½ª¤ï¤Ã¤¿¤È¤³¤í¤À¤Ã¤¿¤Î¤Ç¡¢Éü½¬¤Ë¤â¤Ê¤Ã¤Æ¤è¤«¤Ã¤¿¡£¤Á¤Ê¤ß¤Ë¡¢¤³¤ÎËܤϤ¹¤´¤¤¤ª´«¤á¤Ç¡¢¥ì¥Ó¥å¡¼¤Ï¤³¤Á¤é¡§

¤È¤Ï¤¤¤¨¡¢¤³¤Î¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤ÎÁ°È¾¤Ï¤ª¤Þ¤±¤Î¤è¤¦¤Ê¤â¤Î¤Ç¡¢¤à¤·¤í²ÁÃͤ¬¤¢¤ë¤Î¤Ï¸åȾ¤À¡£¸åȾ¤Ç¤Ï¡¢Python¤ÇBlockchain¤ò¼ÂÁõ¤·¤Æ¤¤¤¯¤È¤¤¤¦ÆâÍÆ¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Êή¤ì¡£

  • Representing Transactions
  • Creating Blocks
  • Hashing and SHA-256
  • Generating BLock Hashes
  • Creating the Blockchain Class
  • Adding Blocks to the Blockchain
  • Checking for a Broken Chain
  • Hacking the Chain
  • Nonce and Proof-of-Work
  • Implementing Proof-of-Work
  • Adding Blocks to the Chain Securely
  • Blockchain Summary

¼ÂºÝ¤Ë¤ä¤Ã¤Æ¤ß¤ë¤È¡¢£²»þ´Ö¡Á£³»þ´Ö¡ÊÍ×ÎΤÎÎɤ¤¿Í¤Ê¤é£²»þ´Ö°ÊÆâ¡Ë¤Ç½ª¤ï¤ë¥Ü¥ê¥å¡¼¥à´¶¤Ç¤¢¤ë¡£ºÇÄã¸Â¤Î¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤ò¼ÂÁõ¤·¤Æ¡¢Proof-of-Work¤ò¤·¤¿¤ê¡¢¿·¤¿¤Ê¥Ö¥í¥Ã¥¯¤òÄɲä·¤¿¤ê¡¢¤½¤¦¤¤¤¦¤Î¤ò°ìÄ̤êÂθ³¤Ç¤­¤ëή¤ì¤Ë¤Ê¤Ã¤Æ¤¤¤ÆÁÇÀ²¤é¤·¤¤¡£¡Ö¤³¤ó¤Ê¤Ë´Êñ¤Ê¤ó¤À¡Á¡ª¡×¤È»×¤¦¤È¤³¤í¤¬Â¿¤«¤Ã¤¿¡£Î㤨¤Ð¡¢¥Ï¥Ã¥·¥å´Ø¿ô¤ò»È¤¦¤¿¤á¤Ë¤Ï¡¢¤³¤Î°ì¹Ô¤À¤±¡£

from hashlib import sha256

¤½¤ì¤Ç¡¢²¿¤é¤«¤Î¥Ç¡¼¥¿¤ò¥Ï¥Ã¥·¥åÃͤËÊÑ´¹¤·¤¿¤±¤ì¤Ð¡¢

text = '¤³¤Î¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¥³¡¼¥¹¤Ï³Ú¤·¤¤¤Ê¤¡¡ª'
hash_result = sha256(text.encode())

¤Ç½ª¤ï¤ê¡ª¤³¤ó¤Ê´¶¤¸¤ÇÏ䬥ݥó¥Ý¥ó¿Ê¤ó¤Ç¤¤¤¯¤Î¤Ç³Ú¤·¤¤¡£¡Ê¤â¤Á¤í¤óËܳÊŪ¤Ë¤ä¤Ã¤Æ¤¤¤¯¤Ê¤é¤â¤Ã¤È¤â¤Ã¤ÈÂçÊѤʤó¤À¤í¤¦¤±¤É¡£¡Ë

¤³¤ì¤é¤ò¤¹¤Ù¤Æ¡¢¥¦¥§¥Ö¥Ö¥é¥¦¥¶¾å¤Ç¹Ô¤¦¤³¤È¤¬½ÐÍè¤ë¤Î¤Ç¡¢»þ´Ö¤Î¤«¤«¤ëPython´Ä¶­¹½ÃÛ¤âɬÍפʤ¤¤·¡¢¤Ê¤ó¤Ê¤é¥¹¥Þ¥Û¤ä¥¿¥Ö¥ì¥Ã¥È¤Ç¤â³Ø½¬¤ò¿Ê¤á¤é¤ì¤Æ¤·¤Þ¤¦¡£»È¤Ã¤¿¤³¤È¤Ê¤¤¤±¤ÉÀìÍÑ¥¢¥×¥ê¤â¤¢¤ë¡£¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤È¤¤¤¨¤ÐGPU¤ò»×¤¤É⤫¤Ù¤ë¿Í¤â¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¤¬¡¢ºÇÄã¸Â¤ò¼ÂÁõ¤¹¤ë¤À¤±¤Ê¤Î¤Ç¡¢¤½¤¦¤¤¤¦µ¡ºà¤â¤â¤Á¤í¤óɬÍפʤ¤¡£¤·¤«¤â¿ô»þ´Ö¤Ç½ª¤ï¤ë¤ªµ¤·Ú¥³¡¼¥¹¡£¥¦¥§¥Ö¤Ë·Ò¤¬¤ì¤Ðï¤Ç¤â¤Ç¤­¤ë¡£Ãë¿©¤ÎµÙ¤ß»þ´Ö¤ò²¿²ó¤«ÅêÆþ¤¹¤ë¤À¤±¤ÇºÇ¸å¤Þ¤ÇÄ̤»¤ë¡£

¤¢¤È¡¢ÀΤÎCodecademy¤ÏÅú¤¨¤ò¸«¤ë¤È¤¤¤¦µ¡Ç½¤¬¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢¤ï¤«¤é¤Ê¤¤¤È¤­¤ÏȾÆü¤òÄÙ¤·¤Æ¥Ð¥°¤ò¸«¤Ä¤±¤¿¤ê¤¹¤ëɬÍפ¬¤¢¤Ã¤Æ¥¹¥È¥ì¥¹¤¬Î¯¤Þ¤ë¤³¤È¤¬¤¢¤Ã¤¿¡£¤Ç¤âº£²ó¤Î¥³¡¼¥¹¤Ç¤Ï²¿²ó¤«¸í¤ë¤È¡¢"See the solution"¤È¤¤¤¦¹àÌܤ¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¤É¤¦¤·¤Æ¤â¤ï¤«¤é¤Ê¤¤¾ì¹ç¤ÏÅú¤¨¤ò¸«¤ì¤ë¤È¤¤¤¦°Â¿´´¶¤¬²Ã¤ï¤Ã¤¿¤Î¤â¤Ê¤ªÎɤ¤¡£È󥨥󥸥˥¢¤Ë¤âÍ¥¤·¤¤¡£

ɬÍפʤΤÏ¿¾¯¤Î±Ñ¸ìÎϤÈPythonÎϤÀ¤±

±Ñ¸ì¤Î¥µ¥¤¥È¤Ç¤¢¤ë¤Î¤Ç¡¢Â¿¾¯¤Î±Ñ¸ìÎϤϵá¤á¤é¤ì¤ë¡£¤È¸À¤Ã¤Æ¤â¡¢PythonÍѸì¤ÈBlockchainÍѸ줬¤ï¤«¤Ã¤Æ¤¤¤ì¤Ð¡¢ÌäÂê¤Ê¤¯¿Ê¤á¤é¤ì¤ëÄøÅÙ¤À¤È»×¤¦¡£Î㤨¤Ð¡¢

Call the datetime module's .now() method to print out the current date and time.

¤È¸À¤Ã¤¿Ê¸¾Ï¤¬ÆÉ¤á¤Æ¡¢¤ä¤ë¤Ù¤­¤³¤È¤¬¤ï¤«¤ì¤ÐOK¤À¡£Python¤Î¥ì¥Ù¥ë´¶¤È¤·¤Æ¤Ï¡¢¡Ö¥¯¥é¥¹¡×¤¬ÆÉ¤á¤ë¤·¼«Ê¬¤Ç¤â½ñ¤±¤ë¤È¤¤¤¦¥ì¥Ù¥ë¡£ÆþÌç½ñ¤ò£±¡Á£²ºýÆÉ¤ó¤À¤³¤È¤Î¤¢¤ë¿Í¤Ç¤¢¤ì¤ÐÌäÂê¤Ê¤¤¤Ï¤º¤À¡£Python¤ÎÊÙ¶¯¤«¤é»Ï¤á¤¿¤¤¿Í¤Ç¤¢¤ì¤Ð¡¢Codecademy¤ÎPython¥³¡¼¥¹¤â¤ª´«¤á¤Ç¤¢¤ë¡£

¡Ê¤¬¡¢Python¤Ê¤éCodecademy¤¸¤ã¤Ê¤¯¤Æ¤â¡¢ÆüËܸì¤Ç¤âÎɤ¤¥ª¥ó¥é¥¤¥ó¥³¡¼¥¹¤¬Â¿¤¤¤«¤â¤·¤ì¤Ê¤¤¡£¡Ë

ºÇ¸å¤Ë¡¢º£²ó¤Î¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¥×¥í¥°¥é¥ß¥ó¥°¤Î¥³¡¼¥¹¤Î¥ê¥ó¥¯¤òºÜ¤»¤Æ¡¢º£²ó¤Îµ­»ö¤ÏÄù¤á¤¯¤¯¤ë¤È¤·¤è¤¦¡£µ¤¤Ë¤Ê¤ë¿Í¤Ï¤¼¤Ò»î¤·¤Æ¤ß¤Æ¤Ï¡©

2018-09-28

¢£CSS Grid¤¬Å¬¤·¤Æ¤¤¤ë¥ì¥¤¥¢¥¦¥È¡¢Flexbox¤¬Å¬¤·¤Æ¤ë¥ì¥¤¥¢¥¦¥È¤ò¾Ü¤·¤¯²òÀâ | ¥³¥ê¥¹ 21:10

<title>CSS Grid¤¬Å¬¤·¤Æ¤¤¤ë¥ì¥¤¥¢¥¦¥È¡¢Flexbox¤¬Å¬¤·¤Æ¤ë¥ì¥¤¥¢¥¦¥È¤ò¾Ü¤·¤¯²òÀâ | ¥³¥ê¥¹</title>

CSS Grid¤¬Å¬¤·¤Æ¤¤¤ë¥ì¥¤¥¢¥¦¥È¡¢Flexbox¤¬Å¬¤·¤Æ¤ë¥ì¥¤¥¢¥¦¥È¤ò¾Ü¤·¤¯²òÀâ

UXÆ»¾ì -UX¥Ç¥¶¥¤¥ó¤Î´ðÁÃÃ챤«¤éUI/Web¥Ç¥¶¥¤¥ó¤ËÌòΩ¤Ä¾ðÊó¡¢Adobe XD¤ÎºÇ¿·¾ðÊó¤Þ¤Ç

CSS Grid¤ÈFlexbox¤Ï¡¢CSS¤Ç¸½ºß¼çή¤È¤Ê¤ë¥ì¥¤¥¢¥¦¥È¤Î¥Æ¥¯¥Î¥í¥¸¡¼¤Ç¤¹¡£

CSS Grid¤ÈFlexbox¤ÏɽÌÌŪ¤Ë¤Ï»÷¤Æ¤¤¤ë¤è¤¦¤Ë´¶¤¸¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤·¤«¤·¡¢¼ÂºÝ¤Ë¤Ï°Û¤Ê¤ë¥¿¥¹¥¯¤Ë»ÈÍѤµ¤ì¡¢¤½¤ì¤¾¤ì°Û¤Ê¤ë¥ì¥¤¥¢¥¦¥È¤ÎÌäÂê¤ò²ò·è¤·¤Þ¤¹¡£

Flexbox¤¬Å¬¤·¤Æ¤ë¾ì¹ç¡¢CSS Grid¤¬Å¬¤·¤Æ¤¤¤ë¾ì¹ç¡¢¤Þ¤¿Î¾Êý¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢¤µ¤Þ¤¶¤Þ¤Ê¥ì¥¤¥¢¥¦¥È¤ÎÌäÂê¤òÀµ¤·¤¯²ò·è¤¹¤ëÊýË¡¤ò¾Ò²ð¤·¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

Grid vs. Flexbox: Which should you choose?

²¼µ­¤Ï³Æ¥Ý¥¤¥ó¥È¤ò°ÕÌõ¤·¤¿¤â¤Î¤Ç¤¹¡£

¢¨Åö¥Ö¥í¥°¤Ç¤ÎËÝÌõµ­»ö¤Ï¡¢¸µ¥µ¥¤¥ÈÍͤ˥饤¥»¥ó¥¹¤òÆÀ¤ÆËÝÌõ¤·¤Æ¤¤¤Þ¤¹¡£

¥Ú¡¼¥¸Á´ÂΤΥ쥤¥¢¥¦¥È

CSS Grid¤Ï¥³¥ó¥Æ¥Ê¥Ù¡¼¥¹¤Ç¡¢Flexbox¤Ï¥³¥ó¥Æ¥ó¥Ä¥Ù¡¼¥¹¤Ç¤¹¡£Flexbox¤Î¥ì¥¤¥¢¥¦¥È¤Ç¤Ï¥»¥ë¡ÊFlex¥¢¥¤¥Æ¥à¡Ë¤Î¥µ¥¤¥º¤ÏFlex¥¢¥¤¥Æ¥à¼«¿È¤ÇÄêµÁ¤µ¤ì¡¢CSS Grid¤Ç¤Ï¥»¥ë¡ÊGrid¥¢¥¤¥Æ¥à¡Ë¤Î¥µ¥¤¥º¤ÏGrid¥³¥ó¥Æ¥Ê¤ÇÄêµÁ¤µ¤ì¤Þ¤¹¡£

¼ÂºÝ¤Î¥³¡¼¥É¤ò¸«¤Ê¤¬¤é¡¢¾Ü¤·¤¯ÀâÌÀ¤·¤Þ¤¹¡£

¿åÊ¿Êý¸þ¤ËdivÍ×ÁǤòÇÛÃÖ¤¹¤ë¤¿¤á¤ÎHTML¤òÍѰդ·¤Þ¤·¤¿¡£


1

2

3

4

5

6

<div class="row">

<div>1</div>

<div>2</div>

<div>3</div>

<div>4</div>

</div>


Flexbox¤ò»ÈÍѤ·¤Æ¡¢¥¹¥¿¥¤¥ë¤·¤Æ¤ß¤Þ¤¹¡£


1

2

3

4

5

6

7

8

9

10

11

.row {

    margin: 20px auto;

    max-width: 300px;

    display: flex;

}

.row > div {

    border: 1px dashed gray;

    flex: 1 1 auto; /* Size of items defined inside items */

    text-align: center;

    padding: 12px;

}


¡Öflex: 1 1 auto;¡×¤Ç¡¢Flex¥¢¥¤¥Æ¥àÆâ¤Î¥»¥ë¤Î¥µ¥¤¥º¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£flex¥×¥í¥Ñ¥Æ¥£¤Ç¤Ï½ç¤Ëflex-grow¡¢flex-shrink¡¢flex-basis¥×¥í¥Ñ¥Æ¥£¤òÀßÄꤹ¤ë¤³¤È¤ò¾Êά¤·¤Æ¤ª¤ê¡¢¥Ç¥Õ¥©¥ë¥ÈÃͤϡÖ0 1 auto¡×¤Ç¤¹¡£

.row¤ÎdivÍ×ÁǤÏFlex¥³¥ó¥Æ¥Ê¤Ç¡¢¤½¤³¤Ç¥¢¥¤¥Æ¥à¤Î¥µ¥¤¥º¤òÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃíÌܤ·¤Æ¤¯¤À¤µ¤¤¡£Flex¥¢¥¤¥Æ¥à¤Ç¥µ¥¤¥º¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£

»²¹Í: CSS Flexbox ¤Î³Æ¥×¥í¥Ñ¥Æ¥£¤Î»È¤¤Êý¤ò¾Ü¤·¤¯²òÀâ

¾åµ­¤Î¥³¡¼¥É¤Ï¡¢²¼µ­¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£

¥Ö¥é¥¦¥¶¤Çɽ¼¨

¥Ö¥é¥¦¥¶¤Çɽ¼¨

º£Å٤ϡ¢CSS Grid¤Ç¥¹¥¿¥¤¥ë¤·¤Æ¤ß¤Þ¤¹¡£


1

2

3

4

5

6

7

8

9

10

11

.row {

    margin: 20px auto;

    max-width: 300px;

    display: grid;

    grid-template-columns: 1fr 1fr 1fr 1fr; /* Size of items defined inside container */

}

.row div {

    border: 1px dashed gray;

    text-align: center;

    padding: 12px;

}


¤³¤Î¥¹¥¿¥¤¥ë¥·¡¼¥È¤ÏFlexbox¤Ç¼ÂÁõ¤·¤¿¤Î¤ÈÁ´¤¯Æ±¤¸¸«¤¿Ìܤˤʤê¤Þ¤¹¡£

¤³¤³¤ÇÃíÌܤ¹¤Ù¤­¤Ï¡¢¥»¥ë¤Î¥µ¥¤¥º¤òÄêµÁ¤·¤Æ¤¤¤ë¤Î¤Ï.row¤ÎdivÍ×ÁÇ¡¢¤Ä¤Þ¤êGrid¥¢¥¤¥Æ¥à¤Ç¤Ï¤Ê¤¯¡¢Grid¥³¥ó¥Æ¥Ê¤Ç¤¢¤ë¤³¤È¤Ç¤¹¡£

¤³¤ì¤ÏÈó¾ï¤Ë½ÅÍפʰ㤤¤Ç¤¹¡£

Flexbox¤Î¥ì¥¤¥¢¥¦¥È¤Ç¤Ï¥³¥ó¥Æ¥ó¥Ä¤¬¥í¡¼¥É¤µ¤ì¤¿¸å¤Ë·×»»¤µ¤ì¤ë¤Î¤ËÂФ·¤Æ¡¢Grid¤Î¥ì¥¤¥¢¥¦¥È¤Ç¤Ï¥³¥ó¥Æ¥ó¥Ä¤Ë´Ø·¸¤Ê¤¯·×»»¤µ¤ì¤ë¤³¤È¤ò¼¨¤·¤Æ¤¤¤Þ¤¹¡£

¤Ä¤Þ¤ê¡¢Flexbox¤Ç¥Ú¡¼¥¸Á´ÂΤΥ쥤¥¢¥¦¥È¤ò¹½ÃÛ¤¹¤ë¤³¤È¤Ïɽ¼¨¤¬ÃÙ¤¯¤Ê¤ë¤¿¤á¡¢Èò¤±¤¿Êý¤¬¤è¤¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

·ä´Ö¤¬É¬Íפʥ쥤¥¢¥¦¥È

CSS Grid¤ÈFlexbox¤ÎÂ礭¤Ê°ã¤¤¤Ï¡¢CSS Grid¤Ë¤Ïgrid-column-gap¤ò»ÈÍѤ·¤ÆGrid¥¢¥¤¥Æ¥à¤Ë·ä´Ö¤òºî¤ë¤³¤È¤¬¤Ç¤­¤ë¤³¤È¤Ç¤¹¡£Flexbox¤Ë¤Ï·ä´Ö¤Î¤¿¤á¤Î¥×¥í¥Ñ¥Æ¥£¤Ï¤¢¤ê¤Þ¤»¤ó¡£

·ä´Ö¤ò»È¤Ã¤¿¥ì¥¤¥¢¥¦¥È

·ä´Ö¤ò»È¤Ã¤¿¥ì¥¤¥¢¥¦¥È

Flexbox¤ÇƱÍͤηë²Ì¤òÆÀ¤ë¤Ë¤Ï¡¢padding¤È¥Í¥¹¥È¤µ¤ì¤¿¥³¥ó¥Æ¥Ê¤ò»ÈÍѤ¹¤ë¤«¡¢Flex¥³¥ó¥Æ¥Ê¤ÎÉý¤ò¹­¤²¤Æjustify-content¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¤¤¤º¤ì¤Ï¡¢CSS Box Alignment Module 3¤ËÍѰդµ¤ì¤Æ¤¤¤ë¥Þ¥ë¥Á¥«¥é¥à¤Îcolumn-gap¥×¥í¥Ñ¥Æ¥£¤òÍøÍѤǤ­¤ë¤è¤¦¤Ë¤Ê¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£

1¼¡¸µ¤È2¼¡¸µ¤Î¥ì¥¤¥¢¥¦¥È

1¼¡¸µ¤È¤Ï°ìÊý¸þ¡Ê²£¹Ô¤«½ÄÎó¤Î¤¤¤º¤ì¤«¡Ë¤ËÇÛÃÖ¤¹¤ë¤³¤È¤Ç¡¢2¼¡¸µ¤È¤ÏÆóÊý¸þ¡Ê²£¹Ô¤È½ÄÎó¡Ë¤ËÇÛÃÖ¤¹¤ë¤³¤È¤Ç¤¹¡£¤³¤ì¤Ïtable¥ì¥¤¥¢¥¦¥È¤Î»þÂ夫¤é¤¢¤ë¥³¥ó¥»¥×¥È¤Ç¡¢CSS Grid¤âFlexbox¤â¤³¤Î¥³¥ó¥»¥×¥È¤Ë´ð¤Å¤¤¤Æ¤¤¤Þ¤¹¡£

1¼¡¸µ¤ËÍ×ÁǤòÇÛÃÖ¤¹¤ë¤Î¤ÏFlexbox¤¬Å¬¤·¤Æ¤¤¤Þ¤¹¡£¤½¤·¤Æ2¼¡¸µ¤ËÍ×ÁǤòÇÛÃÖ¤¹¤ë¤Î¤ÏCSS Grid¤¬Å¬¤·¤Æ¤¤¤Þ¤¹¡£

Flexbox¤Ï1¼¡¸µ¡¢CSS Grid¤Ï2¼¡¸µ¡¢¤È³Ð¤¨¤Æ¤ª¤¤¤Æ¤â¤è¤¤¤Ç¤·¤ç¤¦¡£¤è¤¯»ÈÍѤµ¤ì¤ë1¼¡¸µ¤Î¥ì¥¤¥¢¥¦¥È¤ò¸«¤Æ¤Þ¤·¤ç¤¦¡£

1¼¡¸µ¤Î¥ì¥¤¥¢¥¦¥È

1¼¡¸µ¤Î¥ì¥¤¥¢¥¦¥È

HTML¤Ï¥ê¥¹¥ÈÍ×ÁǤò»ÈÍѤ·¤Þ¤·¤¿¡£


1

2

3

4

5

6

7

8

<ul class="social-icons">

  <li><a href="#"><i class="fab fa-facebook-f"></i></a></li>

  <li><a href="#"><i class="fab fa-twitter"></i></a></li>

  <li><a href="#"><i class="fab fa-instagram"></i></a></li>

  <li><a href="#"><i class="fab fa-github"></i></a></li>

  <li><a href="#"><i class="fas fa-envelope"></i></a></li>

  <li><a href="#"><i class="fas fa-rss"></i></a></li>

</ul>


Flexbox¤Ç¥ê¥¹¥È¤Î³Æ¥¢¥¤¥Æ¥à¤ò1¼¡¸µ¡Ê²£¹Ô¡Ë¤ËÇÛÃÖ¤·¤Þ¤¹¡£


1

2

3

4

5

.social-icons {

  display: flex;

  list-style: none;

  justify-content: space-around;

}


justify-content¥×¥í¥Ñ¥Æ¥£¤Ï¡¢Flex¥³¥ó¥Æ¥Ê¤Î;ʬ¤Ê¥¹¥Ú¡¼¥¹¤¬Flex¥¢¥¤¥Æ¥à¤Ë¤É¤Î¤è¤¦¤ËʬÇÛ¤µ¤ì¤ë¤«¤ò·èÄꤷ¤Þ¤¹¡£space-around¤ÏFlex¥¢¥¤¥Æ¥à¤¬¶ÑÅù¤ËÇÛÃÖ¤µ¤ì¤ë¤è¤¦¤Ë¥¹¥Ú¡¼¥¹¤òʬÇÛ¤·¤Þ¤¹¡£

»²¹Í: CSS Flexbox ¤Î³Æ¥×¥í¥Ñ¥Æ¥£¤Î»È¤¤Êý¤ò¾Ü¤·¤¯²òÀâ

³¤¤¤Æ¡¢¤è¤¯»ÈÍѤµ¤ì¤ë2¼¡¸µ¤Î¥ì¥¤¥¢¥¦¥È¤ò¸«¤Æ¤Þ¤·¤ç¤¦¡£

2¼¡¸µ¤Î¥ì¥¤¥¢¥¦¥È

2¼¡¸µ¤Î¥ì¥¤¥¢¥¦¥È

¤³¤Î¥ì¥¤¥¢¥¦¥È¤Ï¡¢Ã±°ì¤Î¹Ô¤Þ¤¿¤Ïñ°ì¤ÎÎó¤Ç¼ÂÁõ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£Ê£¿ô¤Î¹Ô¤ÈÎó¤¬É¬ÍפǤ¹¡£2¼¡¸µ¤Î¥ì¥¤¥¢¥¦¥È¤Ê¤Î¤Ç¡¢CSS Grid¤Ç¼ÂÁõ¤·¤Þ¤¹¡£


1

2

3

4

5

6

<div class="container">

  <header>Header</header>

  <main>Main</main>

  <aside>Aside</aside>

  <footer>Footer</footer>

</div>


CSS¤Ï²¼µ­¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

.container {

  max-width: 800px;

  margin: 2em auto;

  display: grid;

  grid-template-columns: 3fr 1fr;

  grid-template-rows: repeat(3,auto);

  grid-gap: 1rem;

}

.container header {

  grid-area: 1/1/2/3;

}

.container main {

  grid-area: 2/1/3/2;

}

.container aside {

  grid-area: 2/2/3/3;

}

.container footer {

  grid-area: 3/1/4/3;

}

.container > * {

  background-color: #ddd;

  padding: 1rem;

}


grid-template-columns¥×¥í¥Ñ¥Æ¥£¤Ç2¤Ä¤ÎÎó¤òºîÀ®¤·¡¢grid-template-rows¥×¥í¥Ñ¥Æ¥£¤Ç3¤Ä¤Î¹Ô¤òºîÀ®¤·¤Æ¤¤¤Þ¤¹¡£repeat()´Ø¿ô¤Ç¡¢3¤Ä¤Î¹Ô¤Î¹â¤µ¤òºîÀ®¤·¤Þ¤¹¡£

Grid¥¢¥¤¥Æ¥à¡Êheader, main, aside, footer¡Ë¤ÎÆâÉô¤Ç¤Ï¡¢grid-area¥×¥í¥Ñ¥Æ¥£¤ò»ÈÍѤ·¤Æ¤½¤ì¤¾¤ì¤ÎGrid¥¢¥¤¥Æ¥à¤¬¥«¥Ð¡¼¤¹¤ëÎΰè¤ÎÂ礭¤µ¤òÄêµÁ¤·¤Þ¤¹¡£

»²¹Í: CSS Grid¤Î¼ÂÁõ¤ÇɬÍפʴðÁÃÃμ±¡¢¼çÍפʥץí¥Ñ¥Æ¥£¤ÈÍѸì¤ò¤¯¤ï¤·¤¯²òÀâ

¥é¥Ã¥Ñ¡¼

¥³¥ó¥Æ¥ÊÆâ¤Î¥¢¥¤¥Æ¥à¤ÎÉý¤Î¹ç·×¤¬¥³¥ó¥Æ¥Ê¤ÎÉý¤è¤êÂ礭¤¤¾ì¹ç¡¢¤É¤Á¤é¤Î¥ì¥¤¥¢¥¦¥È¥â¥Ç¥ë¤Ë¤â¥¢¥¤¥Æ¥à¤ò¿·¤·¤¤¹Ô¤Ë²¡¤·½Ð¤¹¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£¤·¤«¤·¡¢¤½¤ÎÊýË¡¤Ï¤½¤ì¤¾¤ì°Û¤Ê¤ê¤Þ¤¹¡£

¥µ¥ó¥×¥ë¤Î¥ì¥¤¥¢¥¦¥È¤Ç¤½¤Î°ã¤¤¤ò¸«¤Æ¤Þ¤·¤ç¤¦¡£

Flexbox¤ÈCSS Grid¤Ç¤½¤ì¤¾¤ì6¤Ä¤ÎdivÍ×ÁǤòÇÛÃÖ¤·¤Þ¤¹¡£


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<h2>Flexbox</h2>

<div class="row-flex">

    <div>1 2 3  4 5 6 7 8 9 0</div>

    <div>2</div>

    <div>3</div>

    <div>4</div>

    <div>5</div>

    <div>6</div>

</div>

<h2>Grid</h2>

<div class="row-grid">

    <div>1 2 3  4 5 6 7 8 9 0</div>

    <div>2</div>

    <div>3</div>

    <div>4</div>

    <div>5</div>

    <div>6</div>

</div>


Flexbox¤ÈCSS Grid¤Î¥³¡¼¥É¤Ï¡¢²¼µ­¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

/* Flexbox row styles */

.row-flex {

  margin: 40px auto;

  max-width: 600px;

  display: flex;

  flex-wrap: wrap;

2018-09-26

¢£Node.js¤Ç¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Î»ÅÁȤߤȥ¿¥¤¥Þ¡¼¤Ë¤Ä¤¤¤Æ - µ»½Ñõ¤· 18:55

<title>Node.js¤Ç¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Î»ÅÁȤߤȥ¿¥¤¥Þ¡¼¤Ë¤Ä¤¤¤Æ - µ»½Ñõ¤·</title>

Node.js¤Ç¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Î»ÅÁȤߤȥ¿¥¤¥Þ¡¼¤Ë¤Ä¤¤¤Æ - µ»½Ñõ¤·

  • ¥¤¥Ù¥ó¥È¥ë¡¼¥×
    • ¥¤¥Ù¥ó¥È¥ë¡¼¥×¤È¤Ï¡©
    • libuv
    • ¥¿¥¹¥¯
    • ¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Î»ÅÁȤß
      • ¥Õ¥§¡¼¥º
        • ¥¤¥Ù¥ó¥È¥­¥å¡¼
      • nextTickQueue / microTaskQueue
        • nextTickQueue
        • microTaskQueue
      • Timers Phase
      • Pending Callbacks Phase
      • Idle, Prepare Phase
      • Poll Phase
      • Check Phase
      • Close Callbacks Phase
    • Îã
      • Âè°ì¥é¥¦¥ó¥É
      • ÂèÆó¥é¥¦¥ó¥É
      • Âè»°¥é¥¦¥ó¥É
    • ¤Þ¤È¤á
  • Timer
    • setTimeout(() => {}, 0)
    • ½çÈÖ¤òÁàºî¤¹¤ë
  • ¤Þ¤È¤á
  • ¥ê¥Õ¥¡¥ì¥ó¥¹

¥¤¥Ù¥ó¥È¥ë¡¼¥×

f:id:about_hiroppy:20180925085430g:plain

¥¤¥Ù¥ó¥È¥ë¡¼¥×¤È¤Ï¡©

¥¤¥Ù¥ó¥È¥ë¡¼¥×¤È¤Ï¡¢JavaScript¤¬¥·¥ó¥°¥ë¥¹¥ì¥Ã¥É¤Ê¤Î¤Ë¤â¤«¤«¤ï¤é¤º¡¢¸úΨ¤è¤¯¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°I/O¤ò¼Â¹Ô¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë»ÅÁȤߤǤ¹¡£

¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Ï¥á¥¤¥ó¥¹¥ì¥Ã¥É¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

¥Ö¥é¥¦¥¶¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤È¤Ï°Û¤Ê¤ë¤Î¤ÇÃí°Õ¤¬É¬ÍפǤ¹¡£

Node.js¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Ïlibuv¤Ë´ð¤Å¤­¤Þ¤¹¡£

¥Ö¥é¥¦¥¶¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Ïhtml5¤Ë´ð¤Å¤­¤Þ¤¹¡£

libuv

Node.js¤ÎÈ󯱴ü¤Ï¥«¡¼¥Í¥ë¤È²ñÏ乤뤿¤á¤Ëlibuv¤ò»È¤¤¤Þ¤¹¡£

¤â¤È¤â¤È¡¢Node.js¤Î¤¿¤á¤Ëºî¤é¤ì¤¿¤â¤Î¤Ç¤¹¤¬¡¢º£¤ÏÍÍ¡¹¤Ê¤È¤³¤í¤Ç»È¤ï¤ì¤Æ¤¤¤Þ¤¹¡£

libuv¤È¤Ï¡¢È󯱴üI/O¤Ë¶¯¤¯¡¢¥¯¥í¥¹¥×¥é¥Ã¥È¥Õ¥©¡¼¥àÂбþ¤ÎÃê¾Ý²½¥é¥¤¥Ö¥é¥ê¤Ç¤¹¡£

´ðËÜŪ¤Ë¤Ï¡¢¥¤¥Ù¥ó¥È¥ë¡¼¥×¤ÈÈ󯱴ü½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£

f:id:about_hiroppy:20180926003353p:plain

libuv¤Ï¡¢Node.js¤Ë¥¤¥Ù¥ó¥È¥ë¡¼¥×µ¡Ç½Á´ÂΤòÄ󶡤·¤Æ¤¤¤Þ¤¹¡£

¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¥µ¥¤¥º¤¬4¤Î¥¹¥ì¥Ã¥É¥×¡¼¥ë¤òºî¤ê¤Þ¤¹¡£

Design overview — libuv documentation

¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Î¥³¡¼¥É¤Ï°Ê²¼¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

github.com

¥¿¥¹¥¯

¥¿¥¹¥¯¤Ï¡¢Æ±´ü¥¿¥¹¥¯¤ÈÈ󯱴ü¥¿¥¹¥¯¤Î2¼ïÎฺߤ·¤Þ¤¹¡£

setTimeout*1;setImmediate*2;process.nextTick*3;Promise.resolve().then*4;*5();



Ʊ´ü¥¿¥¹¥¯¤Ï¾ï¤ËÈ󯱴ü¥¿¥¹¥¯¤è¤ê¤âÁ᤯¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

¤Þ¤¿¡¢EventEmitter ¤ÇȯÀ¸¤¹¤ë¥¤¥Ù¥ó¥È¤Ï¥¿¥¹¥¯¤È¤Ï¸Æ¤Ó¤Þ¤»¤ó¡£

¤³¤Î¥³¡¼¥É¤Î½ÐÎϤϰʲ¼¤ÎÄ̤ê¤Ë¤Ê¤ê¤Þ¤¹¡£

5
3
4
1
2


¤Ê¤¼¤³¤Î¤è¤¦¤Ê½çÈ֤ǽÐÎϤµ¤ì¤ë¤«¤Ï¡¢¼¡¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤ÎÀâÌÀ¤Ç¤ï¤«¤ë¤Ï¤º¤Ç¤¹¡£

¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Î»ÅÁȤß

Node.js¤¬µ¯Æ°¤¹¤ë¤È°Ê²¼¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤¬½é´ü²½¤µ¤ì¤Þ¤¹¡£

f:id:about_hiroppy:20180925232715p:plain

http://voidcanvas.com/nodejs-event-loop

https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#event-loop-explained

½é´ü²½¤Ï¤µ¤ì¤Þ¤¹¤¬¡¢³«»ÏÁ°¤Ë¹Ô¤ï¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£

  • ¥¿¥¤¥Þ¡¼¤Î¥¹¥±¥¸¥å¡¼¥ëÀßÄê
  • process.nextTickÅù¤Î¼Â¹Ô
  • Ʊ´ü¥¿¥¹¥¯¤Î¼Â¹Ô
  • È󯱴üAPI¤Î¸Æ¤Ó½Ð¤·


¾åµ­¤¬½ª¤ï¤ê¼¡Âè¡¢¥¤¥Ù¥ó¥È¥ë¡¼¥×¤¬³«»Ï¤µ¤ì¤Þ¤¹¡£

Ãí°ÕÅÀ¤È¤·¤Æ¡¢¥¤¥Ù¥ó¥È¥ë¡¼¥×¤ÏÊ£¿ô¤Îtask¤òƱ»þ¤Ë½èÍý¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¤¿¤á¡¢¥­¥å¡¼¤ËÆþ¤ì¤é¤ì½ç¼¡½èÍý¤ò¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¤Ä¤Þ¤ê¡¢°ì¤Ä¤Î¥¿¥¹¥¯¤¬´°Î»¤¹¤ë»þ´Ö¤¬Ä¹¤¤¤È·òÁ´¤Ç¤Ï¤Ê¤¤(¥¤¥Ù¥ó¥È¥ë¡¼¥×¤ËÃٱ䤬½Ð¤ë)¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¤Þ¤¿¡¢Node.js¤Ç¤Ï¥¿¥¹¥¯¥­¥å¡¼¤Î½èÍý¤ËOS¤Î¥«¡¼¥Í¥ë¤¬°Í¸¤·¤Æ¤¤¤ë¤¿¤á¡¢¥¿¥¹¥¯¤ò¼õ¤±¼è¤Ã¤¿½Ö´Ö¤òȽÃǤ¹¤ë¤³¤È¤ÏÉÔ²Äǽ¤Ç¡¢½àÈ÷¤¬¤Ç¤­¤Æ¤¤¤ë¾ì¹ç¤Î¤ß¤òÃΤäƤ¤¤Þ¤¹¡£

¥Õ¥§¡¼¥º

¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Ë¤Ï6¤Ä¤Î¥Õ¥§¡¼¥º¤¬Â¸ºß¤·¤Þ¤¹¡£

  • timers
  • pending callbacks
  • idle, prepare
  • poll
  • check
  • close callbacks


JavaScript¤Î¼Â¹Ô¤Ï¡¢idle, prepare ¤ò½ü¤¯¤É¤³¤«¤Î¥Õ¥§¡¼¥º¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

¤½¤ì¤¾¤ì¥Õ¥§¡¼¥º¤Ë¤Ï¡¢¼Â¹Ô¤¹¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤ÎFIFO¥¸¥ç¥Ö¥­¥å¡¼¤ò»ý¤Á¤Þ¤¹¡£

¤½¤Î¥Õ¥§¡¼¥º¤ËÆþ¤ë¤È¤½¤Î¥Õ¥§¡¼¥º¤Î½èÍý¤¬¼Â¹Ô¤µ¤ì¡¢¥­¥å¡¼¤¬½èÍý¤µ¤ì¤Þ¤¹¡£

¤½¤·¤Æ¡¢¥­¥å¡¼¤¬empty¤Ë¤Ê¤ë¤«¥³¡¼¥ë¥Ð¥Ã¥¯¤Î¾å¸Â¤Ë㤷¤¿¤é¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Ï¼¡¤Î¥Õ¥§¡¼¥º¤ØÁ«°Ü¤·¤Þ¤¹¡£

libuv¤È¤Î´Ø·¸¿Þ¤Ç¤¹¡£

f:id:about_hiroppy:20180925214205j:plain

Handling IO — NodeJS Event Loop Part 4 – The JS Blog

libuv¤Ï¡¢³Æ¥Õ¥§¡¼¥ºËè¤Ë¥Õ¥§¡¼¥º¤Î·ë²Ì¤òNode¤ËÅÁ㤹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¤³¤Î¤È¤­¤ËnextTickQueue¤ÈmicroTaskQueue¤ËÆþ¤ì¤é¤ì¤¿¥¤¥Ù¥ó¥È¤Î¥­¥å¡¼¤ò¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£

¤â¤·¡¢¥­¥å¡¼¤¬¶õ¤Ç¤Ï¤Ê¤¤¾ì¹ç¤Ï¶õ¤Ë¤Ê¤ë¤Þ¤Ç¥­¥å¡¼¤Î½èÍý¤ò¹Ô¤¤¡¢¥á¥¤¥ó¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Î¥Õ¥§¡¼¥º¤Ø°Ü¹Ô¤·¤Þ¤¹¡£

¤Ä¤Þ¤ê¡¢³Æ¥Õ¥§¡¼¥º¸å(¥Õ¥§¡¼¥º¤¬°Ü¹Ô¤¹¤ëÁ°)¤ËnextTickQueue¤ÈmicroTaskQueue¤¬¼Â¹Ô¤µ¤ì¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

¥Õ¥í¡¼¤Ï°Ê²¼¤Î¿Þ¤Î¤è¤¦¤Ê´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£

f:id:about_hiroppy:20180925083813p:plain

What you should know to really understand the Node.js Event Loop




¥¤¥Ù¥ó¥È¥­¥å¡¼

libuv¤«¤éÄ󶡤µ¤ì¤ë¥­¥å¡¼¤ÈNode¤¬Ä󶡤¹¤ë¥­¥å¡¼¤Î6¼ïÎब¤¢¤ê¤Þ¤¹¡£

  • libuv
    • Expired timers / intervals queue 
    • IO Events Queue 
    • Immediates Queue 
    • Close Handlers Queue
  • Node
    • nextTick Queue
    • microTask Queue


nextTickQueue / microTaskQueue

code: ib/internal/bootstrap/node.js#L77-L78

code: lib/internal/process/next_tick.js

Àè¤ËnextTickQueue¤ÈmicroTaskQueue¤ÎÀâÌÀ¤ò¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

¤³¤Î2¤Ä¤Ïlibuv¤Ë¤è¤ëÄ󶡤ǤϤʤ¯¡¢Node¤Ë¤è¤ê¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÀèÄø¤ÎÀâÌÀ¤ÎÄ̤ꡢ¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Î³Æ¥Õ¥§¡¼¥º¤Î¸å¤ËnextTickQueue¤ÈmicroTaskQueue¤ËÆþ¤ì¤é¤ì¤¿¥¤¥Ù¥ó¥È¤Î¥­¥å¡¼¤ò¥Á¥§¥Ã¥¯¤·¡¢¶õ¤Ë¤Ê¤ë¤Þ¤Ç¼Â¹Ô¤·¤Þ¤¹¡£

¤Þ¤¿¡¢¤³¤Î£²¤Ä¤Ï¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Î¥Õ¥§¡¼¥º¤Î°ìÉô¤Ç¤Ï¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

nextTickQueue

process.nextTick¤ò»ÈÍѤ·¤ÆÅÐÏ¿¤µ¤ì¤¿¥³¡¼¥ë¥Ð¥Ã¥¯¤òÊÝ»ý¤·¤Þ¤¹¡£

¤¹¤Ù¤Æ¤ÎÈ󯱴ü¥¿¥¹¥¯¤ÎÃæ¤ÇºÇ®¤È¤Ê¤ê¤Þ¤¹¡£

nextTick¤ÏºÆµ¢Åª¤Ë¸Æ¤Ó½Ð¤¹¤ÈNode¤ò¥Ö¥í¥Ã¥¯¤¹¤ë²ÄǽÀ­¤¬¤¢¤ë¤¿¤áÃí°Õ¤Ç¤¹¡£

microTaskQueue

Promises¥ª¥Ö¥¸¥§¥¯¥È¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤Ï¤³¤³¤Ë½ê°¤·¤Þ¤¹¡£

microTaskQueue¤ËÆþ¤Ã¤Æ¤¤¤ëPromise¤ÏV8¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¤ë¥Í¥¤¥Æ¥£¥Ö¤Î¤ß¤¬Å¬ÍÑÂоݤȤµ¤ì¤Þ¤¹¡£

¥¤¥Ù¥ó¥È¥ë¡¼¥×¤ÈƱÍͤËnextTickQueue¤¬¶õ¤Ë¤Ê¤ê¼¡Âè¡¢¼Â¹Ô¤È¤Ê¤ê¤Þ¤¹¡£

process.nextTick*11;Promise.resolve().then*12;process.nextTick*13;Promise.resolve().then*14;process.nextTick*15;




1
3
5
2
4


Àè¤ËnextTickQueue¤¬¾ÃÈñ¤µ¤ì¤Æ¤¤¤ë¤Î¤¬¤ï¤«¤ê¤Þ¤¹¡£


¤³¤³¤Þ¤Ç¤ÎÀâÌÀ¤Ç¡¢°Ê²¼¤¬¤Ê¤¼¤³¤Î½çÈ֤ˤʤë¤Î¤«È¾Ê¬¤°¤é¤¤¤ï¤«¤ë¤«¤È»×¤¤¤Þ¤¹¡£

setTimeout*16;setImmediate*17;process.nextTick*18; // 2Promise.resolve().then*19;  // 3*20(); // 1


¼¡¤«¤é¤Ï³Æ¥Õ¥§¡¼¥º¤ÎÀâÌÀ¤ò¹Ô¤Ã¤Æ¤¤¤­¤Þ¤¹¡£

Timers Phase

code: src/timer.c#L147-L164

¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Î³«»Ï¥Õ¥§¡¼¥º¤Ç¤¹¡£

¤³¤Î¥Õ¥§¡¼¥º¤Ç¤Ï¡¢setTimeout ¤ä setInterval ¤Î¥¿¥¤¥Þ¡¼¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤ò¼Â¹Ô¤·¤Þ¤¹¡£

¥¿¥¤¥Þ¡¼¤òºÇ¾®¥Ò¡¼¥×¤ËÊÝ»ý¤·¡¢Node¤ÏÍ­¸ú´ü¸Â¤¬Àڤ줿¥¿¥¤¥Þ¡¼¤ò³Îǧ¤·¡¢¥³¡¼¥ë¥Ð¥Ã¥¯¤ò¸Æ¤Ó¤Þ¤¹¡£

Ê£¿ô¤ÎÍ­¸ú´ü¸Â¤¬Àڤ줿¥¿¥¤¥Þ¡¼¤¬Â¸ºß¤¹¤ë¾ì¹ç¡¢ÅÐÏ¿¤·¤¿½çÈ֤˼¹Ԥµ¤ì¤Þ¤¹¡£(FIFO)

OS¤Î¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤ä¾¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤Î¼Â¹Ô¤Ë¤è¤êÃٱ䤬ȯÀ¸¤¹¤ë²ÄǽÀ­¤¬¤¢¤ê¡¢Node.js¤Ç¤Ï¥³¡¼¥ë¥Ð¥Ã¥¯¤Î¼Â¹Ô¤¹¤ëÀµ³Î¤Ê¥¿¥¤¥ß¥ó¥°¤ä½ç½øÉÕ¤±¤ÏÊݾڤµ¤ì¤Þ¤»¤ó¡£

»ØÄꤵ¤ì¤¿»þ´Ö¤Î¤Ç¤­¤ë¤À¤±¶á¤¤»þ´Ö¤Ç¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£

https://nodejs.org/api/timers.html#timers_settimeout_callback_delay_args

const start = process.hrtime();

setTimeout(() => {
  const end = process.hrtime(start);

  console.log(`timeout callback executed after ${end[0]}s and ${end[1]/Math.pow(10,9)}ms`);
}, 1000);




# output
timeout callback executed after 1s and 0.0070209ms
timeout callback executed after 1s and 0.004651383ms
timeout callback executed after 1s and 0.001348922ms


Ëè²ó°Û¤Ê¤ë·ë²Ì¤È¤Ê¤ê¡¢0ms ¤È¤Ê¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£

Pending Callbacks Phase

code: src/unix/core.c#L765-L784

¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Îpending_queue¤Ë¸ºß¤¹¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤ò¼Â¹Ô¤¹¤ë¥Õ¥§¡¼¥º¤Ç¤¹¡£

´°Î»¡¢¥¨¥é¡¼¤ÎI/OÁàºî¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

poll¥Õ¥§¡¼¥º¤ÎºÇ¸å¤Î¥é¥¦¥ó¥É¤Ç¼Â¹Ô¤µ¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤Ï¼Â¹Ô¤Ç¤­¤º¡¢¤³¤Î¥é¥¦¥ó¥É¤Îpending callbacks¥Õ¥§¡¼¥º¤Þ¤Ç±ä´ü¤È¤Ê¤ê¤Þ¤¹¡£

Idle, Prepare Phase

code: src/unix/loop-watcher.c#L48-L60

libuv¤Ë¤è¤Ã¤ÆÆâÉôŪ¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¥Õ¥§¡¼¥º¤Ç¤¹¡£

¼¡¤Î¥Õ¥§¡¼¥º¤Ç¤¢¤ëPoll Phase¤¬³«»Ï¤µ¤ì¤ë¤¿¤Ó¤ËPrepare¤â¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

Poll Phase

code: src/unix/posix-poll.c#L134

¤³¤Î¥Õ¥§¡¼¥º¤Ï¡¢¥µ¡¼¥Ð¤Î±þÅú¡¢¤Þ¤ÀÊÖ¤µ¤ì¤Æ¤¤¤Ê¤¤I/O¥¤¥Ù¥ó¥È¤òÂÔµ¡¤¹¤ë¤¿¤á¤Ë»ÈÍѤµ¤ì¤ë¥Ý¡¼¥ê¥ó¥°»þ´Ö¤Ç¤¹¡£

¿·¤·¤¤¥½¥±¥Ã¥È¥³¥Í¥¯¥È¤ä¥Õ¥¡¥¤¥ë¤ÎÆÉ¤ß¹þ¤ß¤Ê¤É¤Î¿·¤·¤¤I/O¥¤¥Ù¥ó¥È¤ò¼èÆÀ¤·¡¢¼Â¹Ô¤·¤Þ¤¹¡£

¤³¤Î¥Õ¥§¡¼¥º¤Ç¤Ï¡¢°Ê²¼¤Î2¤Ä¤Î¤³¤È¤ò¹Ô¤¤¤Þ¤¹¡£

  • I / O¤ò¥Ö¥í¥Ã¥¯¤·¤Æ¥Ý¡¼¥ê¥ó¥°¤¹¤ë»þ´Ö¤ò·×»»¤¹¤ë
  • ¥­¥å¡¼Æâ¤Î¥¤¥Ù¥ó¥È¤ò½èÍý¤¹¤ë


¥Ý¡¼¥ê¥ó¥°¤¹¤ë»þ´Ö¤ò·×»»¤·¤Þ¤¹¡£(¤³¤ì¤ÏÍÍ¡¹¤Ê¾õÂ֤ˤè¤Ã¤Æ·ë²Ì¤¬ÊѤï¤ê¤Þ¤¹)

I/O¤Î½èÍý¤ò¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î epoll ¤Î¥­¥å¡¼¤ËÁ´¤ÆÅÐÏ¿¤·¤Þ¤¹¡£

epoll_wait¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò¸Æ¤Ó¡¢¥Ý¡¼¥ê¥ó¥°¤ò¹Ô¤¤¤Þ¤¹¡£

´°Î»¤·¤¿¤é¡¢¥³¡¼¥ë¥Ð¥Ã¥¯¤ò¸Æ¤Ó¤Þ¤¹¡£

¥­¥å¡¼¤Ë¤Ê¤Ë¤«Â¸ºß¤¹¤ë¾ì¹ç¡¢¥­¥å¡¼¤¬empty¤Ë¤Ê¤ë¤«¥·¥¹¥Æ¥à°Í¸¤Î¸ÂÅÙ¤Ë㤹¤ë¤Þ¤Ç½ç¼¡Æ±´ü¼Â¹Ô¤ò¹Ô¤¤¤Þ¤¹¡£

¥­¥å¡¼¤¬¶õ¤Î¾ì¹ç¡¢°Ê²¼¤Î2¤Ä¤Î¤¦¤Á1¤Ä¤¬¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

  • ¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Ï¤³¤Î¥Õ¥§¡¼¥º¤ò½ªÎ»¤·¡¢¼¡¤Îcheck¥Õ¥§¡¼¥º¤Ø¿Ê¤ß¥¹¥±¥¸¥å¡¼¥ë¤µ¤ì¤¿¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤¹¤ë
  • ¥¹¥±¥¸¥å¡¼¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Ï¥³¡¼¥ë¥Ð¥Ã¥¯¤¬¥­¥å¡¼¤ØÄɲ䵤ì¤ë¤Î¤òÂÔ¤Á¼Â¹Ô¤¹¤ë


Check Phase

setImmediate¤Î¥³¡¼¥ë¥Ð¥Ã¥¯ÀìÍÑ¥Õ¥§¡¼¥º¤Ç¤¹¡£

setImmediate¤ÇÅÐÏ¿¤µ¤ì¤¿¤¹¤Ù¤Æ¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤ò¼Â¹Ô¤·¤Þ¤¹¡£

timer¥Õ¥§¡¼¥º¤Î¤â¤Î¤È¤Ï°Û¤Ê¤ê¡¢ÀìÍѤΥե§¡¼¥º¤¬¤¢¤ë¤¿¤á¡¢É¬¤º¼Â¹Ô¤¬Êݾڤµ¤ì¤Þ¤¹¡£

¤Ä¤Þ¤ê¡¢poll¥Õ¥§¡¼¥º¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤¿¥³¡¼¥ë¥Ð¥Ã¥¯Æâ¤ËsetImmediate¤¬Â¸ºß¤¹¤ì¤Ð¡¢setTimeout¤è¤ê¤âÀè¤Ë¸Æ¤Ð¤ì¤ë¤³¤È¤¬Êݾڤµ¤ì¤Þ¤¹¡£

Close Callbacks Phase

code: src/unix/core.c#L293-L305

¤¹¤Ù¤Æ¤Î close ¥¤¥Ù¥ó¥È¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤¬½èÍý¤µ¤ì¤Þ¤¹¡£(e.g. readable.on('close', () => {}))

¤â¤·¡¢¥­¥å¡¼¤Ë½èÍý¤¹¤ë¤â¤Î¤¬¤Ê¤±¤ì¤Ð¡¢¥ë¡¼¥×¤¬½ªÎ»¤È¤Ê¤ê¤Þ¤¹¡£

¸ºß¤¹¤ì¤Ð¡¢timer¥Õ¥§¡¼¥º¤ØÁ«°Ü¤·¤Þ¤¹¡£

Îã

const { readFile } = require('fs');

const timeoutScheduled = Date.now();

setTimeout(() => {
  console.log(`delay: ${Date.now() - timeoutScheduled}ms`);
}, 100);

readFile(__filename, () => {
  const startCallback = Date.now();

  while (Date.now() - startCallback < 500) {}
});




# output
delay: 502ms


¤³¤Î¥³¡¼¥É¤ò¤Ñ¤Ã¤È¸«¤¿»þ¤Ë¡¢100ms¸å¤Ëdelay: 100ms¤È½ÐÎϤµ¤ì¤ë¤À¤í¤¦¤È»×¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡£

¤³¤Î¥³¡¼¥É¤Î¥Õ¥í¡¼¤òÀâÌÀ¤·¤Þ¤¹¡£

Âè°ì¥é¥¦¥ó¥É

¥¹¥¯¥ê¥×¥È¤¬ºÇ½é¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤ËÆþ¤Ã¤¿¤È¤­¤Ë¤Ï¡¢¤Þ¤ÀÍ­¸ú´ü¸Â¤¬Àڤ줿¥¿¥¤¥Þ¡¼¤¬Â¸ºß¤·¤Æ¤ª¤é¤º¡¢¼Â¹Ô²Äǽ¤ÊI/O¥³¡¼¥ë¥Ð¥Ã¥¯¤â¸ºß¤·¤Þ¤»¤ó¡£

¤Ä¤Þ¤ê¡¢¤³¤ÎÂè°ì¥é¥¦¥ó¥É¤Ï¥Ý¡¼¥ê¥ó¥°¥Õ¥§¡¼¥º¤ËÆþ¤ê¡¢¥«¡¼¥Í¥ë¤«¤é¤Î¥Õ¥¡¥¤¥ëÆÉ¤ß¹þ¤ß·ë²Ì¤òÂÔ¤Á¤Þ¤¹¡£

¤³¤Î¤È¤­¤Ï¡¢¥Õ¥¡¥¤¥ë¤ÎÆÉ¤ß¹þ¤ß¤¬·ÚÎ̤Ǥ¢¤ê¡¢¥¿¥¤¥Þ¡¼¤è¤ê¤âÁ᤯·ë²Ì¤ò¼èÆÀ¤·¤Þ¤¹¡£

Î㤨¤Ð¡¢setTimeout¤Ë»þ´Ö¤ò100¤Ç¤Ï¤Ê¤¯0¤ä1¤Ë¤·¤Æ¤¤¤¿¾ì¹ç¡¢¥Õ¥¡¥¤¥ë¤Î·ë²Ì¤è¤ê¤âÀè¤Ë¥¿¥¤¥Þ¡¼¤ÎÍ­¸ú´ü¸Â¤¬ÀÚ¤ì¤ë¤¿¤á¡¢¼¡¤Î¥ë¡¼¥×¤Ç·ë²Ì¤¬ÊѤï¤ê¤Þ¤¹¡£

ÂèÆó¥é¥¦¥ó¥É

º£²ó¤Ï¡¢100ms¤Ç¤ä¤Ã¤Æ¤¤¤Æ¡¢¥Õ¥¡¥¤¥ë¤ÎÆÉ¤ß¹þ¤ß¤Î¤Û¤¦¤¬Â®¤¯¡¢¤Þ¤Àtimer¤ÎÍ­¸ú´ü¸Â¤¬ÀÚ¤ì¤Æ¤Þ¤»¤ó¡£

¤â¤·¡¢0¤ä1¤Ç¤¢¤ì¤Ð¡¢delay¤¬½ÐÎϤµ¤ì¤Æ¤¤¤¿¤Ç¤·¤ç¤¦¡£

¤¹¤Ç¤Ë¡¢¥Õ¥¡¥¤¥ë¤Ï¼èÆÀ¤Ç¤­¤Æ¤¤¤ë¤¿¤á¡¢pending callbacks¥Õ¥§¡¼¥º¤ËÆþ¤ê¤Þ¤¹¡£

¤³¤Î¥³¡¼¥ë¥Ð¥Ã¥¯Æâ¤Ç¤Ï¡¢500ms¤ÎƱ´ü½èÍý¤ò¼Â¹Ô¤µ¤»¤Æ¤¤¤Þ¤¹¡£

¤½¤·¤Æ¡¢¤³¤Î¥³¡¼¥ë¥Ð¥Ã¥¯¤Ï¥¸¥ç¥Ö¥­¥å¡¼¤ËÆþ¤Ã¤Æ¤ª¤ê¡¢¼¡¤Î¥Õ¥§¡¼¥º¤Ø°Ü¹Ô¤¹¤ë¤Ë¤Ï¡¢¥­¥å¡¼¤ò¶õ¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¤Ê¤Î¤Ç¡¢¤³¤³¤Ç500ms¤ÎÃÙ±ä(500ms¤òÄä»ß¤µ¤»¤¿)¤¬È¯À¸¤·¤¿¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

̵»ö¡¢500ms¤Î¼Â¹Ô¤¬½ª¤ï¤Ã¤¿¤é¥­¥å¡¼¤¬¶õ¤Ë¤Ê¤ë¤¿¤á¡¢¼¡¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Ø°Ü¹Ô¤·¤Þ¤¹¡£

Âè»°¥é¥¦¥ó¥É

¤¹¤Ç¤ËÂèÆó¥é¥¦¥ó¥É¤ÎÃÙ±ä¤Ë¤è¤ê¡¢¥¿¥¤¥Þ¡¼¤ÎÍ­¸ú´ü¸Â¤¬ÀÚ¤ì¤ë¤¿¤á¡¢setTimeout¤Ï¥¿¥¤¥Þ¡¼¥Õ¥§¡¼¥ºÃæ¤Ë¼Â¹Ô¤µ¤ì¡¢delay¤ò½ÐÎϤ·½ªÎ»¤·¤Þ¤¹¡£

The Node.js Event Loop, Timers, and process.nextTick() | Node.js

¤Þ¤È¤á

setTimeout*21;setImmediate*22;process.nextTick*23;Promise.resolve().then*24;*25();




5
3
4
1
2


¤Ê¤¼¤³¤Î½çÈ֤νÐÎϤˤʤ뤫¤Ï¾åµ­¤Î¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Îή¤ì¤Ç¤ï¤«¤ë¤«¤È»×¤¤¤Þ¤¹¡£

1. Ʊ´ü¥¿¥¹¥¯: *26();2. È󯱴ü¥¿¥¹¥¯::nextTickQueue : process.nextTick*27;3. È󯱴ü¥¿¥¹¥¯::microTaskQueue: Promise.resolve().then*28;4. È󯱴ü¥¿¥¹¥¯::timers phase: setTimeout*29;5. È󯱴ü¥¿¥¹¥¯::check phase: setImmediate*30;



  • ¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Ï¥á¥¤¥ó¥¹¥ì¥Ã¥É¤Ç¼Â¹Ô¤µ¤ì¤ë
  • ¥¤¥Ù¥ó¥È¥ë¡¼¥×¤ÏÊ£¿ô¤Î¥¿¥¹¥¯¤ò¼Â¹Ô¤Ç¤­¤º¡¢¥­¥å¡¼¤ËÆþ¤ì¤é¤ì¤¿¤Î¤ò½ç¼¡½èÍý¤¹¤ë
  • ¥¤¥Ù¥ó¥È¥ë¡¼¥×¤Ë¤Ï6¤Ä¤Î¥Õ¥§¡¼¥º¤¬Â¸ºß¤¹¤ë
  • ¥Õ¥§¡¼¥º¤¬Á«°Ü¤¹¤ëÁ°¤ËnextTickQueue¤ÈmicroTaskQueue¤¬¼Â¹Ô¤µ¤ì¤ë


Timer

Node.js¤Ç»È¤¨¤ë¥¿¥¤¥Þ¡¼¤Ï°Ê²¼¤Î4¤Ä¤È¤Ê¤ê¤Þ¤¹¡£

setImmediate ¤È process.nextTick ¤ÏNode.js¸ÇÍ­¤Ç¤¢¤ê¥Ö¥é¥¦¥¶¤Ë¤Ï¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

setTimeout
setInterval
setImmediate
process.nextTick


setTimeout(() => {}, 0)

setTimeout*31;setImmediate*32;process.nextTick*33;


¾åµ­¤Î½ÐÎϤϰʲ¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

nextTick
setTimeout
setImmediate


nextTick¤¬°ìÈֺǽé¤ËÍè¤ë¤Î¤ÏºÇ½é¤ËÀâÌÀ¤·¤¿¤È¤ª¤ê¤Ç¤¹¡£

¤½¤·¤Æ¡¢timers¥Õ¥§¡¼¥º¤¬Íè¤Æ¡¢check¥Õ¥§¡¼¥º¤Ê¤Î¤Ç¤³¤Î¤è¤¦¤Ê½ÐÎϤȤʤê¤Þ¤¹¡£

¤·¤«¤·¡¢¤³¤Î½ÐÎϤÏÊݾڤµ¤ì¤¿½ÐÎϤǤϤ¢¤ê¤Þ¤»¤ó¡£

timer¥Õ¥§¡¼¥º¤ËÆþ¤Ã¤¿¤È¤­¤ËÍ­¸ú´ü¸Â¤¬Àڤ줿¤«¤ï¤«¤é¤Ê¤¤¤¿¤á¤Ç¤¹¡£

¤µ¤Æ¡¢setTimeout¤¬0¤Î»þ¤ÎÃÙ±ä¤Ï¤É¤ì¤°¤é¤¤¤Ê¤Î¤Ç¤·¤ç¤¦¤«¡©

ÂèÆó°ú¿ô¤ÎÈϰϤϡ¢1ms¤«¤é2147483647ms¤È·è¤á¤é¤ì¤Æ¤ª¤ê¡¢Èϰϳ°¤Î»ØÄê¤ò¤·¤¿¤È¤­¤Ë¤Ï¡¢1ms¤È¤Ê¤ë¤è¤¦¤Ëµ¬Äꤵ¤ì¤Æ¤¤¤Þ¤¹¡£

¤Ä¤Þ¤ê 0¤Î¤È¤­¤Ï1ms¤è¤êÂ礭¤¤ÃͤȤʤê¤Þ¤¹¡£

Timers | Node.js v10.11.0 Documentation

¤Á¤Ê¤ß¤Ë¡¢setTimeout ¤ò 4ms¤Ë»ØÄꤷ¤¿¤é¼«Ê¬¤ÎPC¤Ç¤ÏsetImmediate¤¬Àè¤Ë½ÐÎϤµ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

setImmediate ¤Ï¡¢poll¥Õ¥§¡¼¥º¸å¤ËÊݾڤµ¤ì¤¿¼Â¹Ô¤¬¤Ç¤­¤ë¤¿¤á¡¢»È¤¦¾ìÌ̤ˤè¤Ã¤Æ¤Ï¡¢Í­ÍѤʻȤ¤Êý¤¬²Äǽ¤È¤Ê¤ê¤Þ¤¹¡£

½çÈÖ¤òÁàºî¤¹¤ë

const { readFile } = require('fs');

readFile(__filename, () => {  setTimeout*34;  setImmediate*35;
});




setImmediate
setTimeout


¾å¤ÎÎã¤À¤Èɬ¤º setImmediate ¤¬Àè¤Ë½ÐÎϤµ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

¤½¤ì¤Ï¡¢ºÇ½é¤Ëpending callbacks¥Õ¥§¡¼¥º¤ËÆþ¤ê¡¢¤½¤Î¼¡¤¬check¥Õ¥§¡¼¥º¤À¤«¤é¤Ç¤¹¡£

timers¥Õ¥§¡¼¥º¤Ï²á¤®¤Æ¤·¤Þ¤Ã¤Æ¤ª¤ê¡¢¼¡¤Î¥ë¡¼¥×¤Ê¤¿¤á½ÐÎϤ¬ÃÙ¤ì¤ë¤Î¤Ç¤¹¡£

¤Þ¤È¤á

¥Ö¥é¥¦¥¶¤È¤Ï°ã¤¦Éôʬ¤¬¤¢¤ê¤Þ¤¹¤¬¡¢macroTasks¤ämicroTasks¤Î¹Í¤¨¤Ê¤É¤ÏƱ¤¸Éôʬ¤¬¤¢¤ê¤Þ¤¹¡£

¤Á¤Ê¤ß¤Ë¥Ö¥é¥¦¥¶¤Ï¤³¤Îµ­»ö¤¬¤ï¤«¤ê¤ä¤¹¤¤¤Ç¤¹¡£

jakearchibald.com

ư²è¤Ï¤³¤Á¤é

Philip Roberts: What the heck is the event loop anyway? | JSConf EU - YouTube

¥¤¥Ù¥ó¥È¥ë¡¼¥×¤ÏÍý²ò¤¹¤ë¤Þ¤ÇÆñ¤·¤¤¥³¥ó¥»¥ó¥È¤Ç¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢°ìÅÙÍý²ò¤¹¤ì¤Ð¥³¡¼¥É¤ÎÍý²ò¤¬¿¼¤Þ¤Ã¤¿¤ê¡¢ºÇŬ²½¤Ç¤­¤¿¤ê¤·¤Þ¤¹¡£

(¤è¤¯¸À¤ï¤ì¤ë¡Ö¤ï¤«¤é¤Ê¤¤¤ÇnextTick¤ò»È¤¦¤Î¤Ï´í¸±¡×¤Ã¤Æ¤¤¤¦ÏäȤ«)

¤Ê¤Ë¤«¤¢¤ì¤Ð¡¢Twitter¤Þ¤Ç¤É¤¦¤¾¡ª

¥ê¥Õ¥¡¥ì¥ó¥¹


¢£¼¡¤Ë¥½¥Õ¥È¥¦¥§¥¢¥¨¥ó¥¸¥Ë¥¢ºÎÍѤ·¤¿ºÝ¤Ë¶µºà¤Ë¤·¤¿¤¤ËܡʴðÁöµÍÜÉôʬ¡Ë - terurou¥á¥â 13:15

<title>¼¡¤Ë¥½¥Õ¥È¥¦¥§¥¢¥¨¥ó¥¸¥Ë¥¢ºÎÍѤ·¤¿ºÝ¤Ë¶µºà¤Ë¤·¤¿¤¤ËܡʴðÁöµÍÜÉôʬ¡Ë - terurou¥á¥â</title>

¼¡¤Ë¥½¥Õ¥È¥¦¥§¥¢¥¨¥ó¥¸¥Ë¥¢ºÎÍѤ·¤¿ºÝ¤Ë¶µºà¤Ë¤·¤¿¤¤ËܡʴðÁöµÍÜÉôʬ¡Ë

¼õÂ÷¤Î»Å»ö¤¬¤Ò¤ÈÃÊÍ¤¿¤Î¤Ç¡¢¸½¼ÂƨÈò¤¬¤Æ¤éÆâÍÆ¤¬¸Å¤¤¡¦Îɤ¯¤Ê¤¤¼ÒÆâ¿Þ½ñ¤ÎÀ°Íý¤ò¹Ô¤Ã¤Æ¤¤¤¿¡£À°Íý¤·¤Ê¤¬¤é¡Ö¤½¤¦¤¤¤¨¤Ð´ðÁöµÍÜÉôʬ¤Î¼Ò°÷¶µ°é¥«¥ê¥­¥å¥é¥à¤¬¤Þ¤Ã¤¿¤¯½àÈ÷¤Ç¤­¤Æ¤Ê¤¤¤Ê¤¡¡×¤È»×¤¤¡¢¼ÒÆâ¿Þ½ñ¤ò¥Ù¡¼¥¹¤Ë¶µ°éÍѤ˲ݤ¹Ëܤò¹Í¤¨¤Æ¤ß¤¿¡£

°ÊÁ°¤«¤é¡ÖÆüËܸìºîʸǽÎϤ¬Â­¤ê¤Ê¤¤¡Á¡×¤È¸À¤Ã¤Æ¤­¤Æ¤¤¤¿¤Î¤À¤¬¡¢¤½¤ì¤ËÂФ·¤Æ¤Î¸½»þÅÀ¤Î»ÃÄê²ò¤¬¤³¤ì¤«¤Ê¤¡¤È»×¤Ã¤Æ¤¤¤ë¡£

À¤³¦°ì¤ä¤µ¤·¤¤²ÝÂê²ò·è¤Î¼ø¶È


¤È¤ê¤¢¤¨¤ººÇ½é¤ËÆÉ¤àËÜ¡£¤´¤¯Åö¤¿¤êÁ°¤ÎÏ䬥µ¥¯¤Ã¤È½ñ¤¤¤Æ¤¢¤ë¤¬¡¢°Õ¼±¤¬¤Ê¤¤¤ÈÁ´¤¯¿È¤Ë¤Ä¤¤¤Æ¤Ê¤¤ÏäǤ⤢¤ë¡£

ÆÉ¤à¤À¤±¤Ê¤é¿ô»þ´Ö¡ÊÆÉ¤à¤Î¤¬Áᤤ¿Í¤Ç¤¢¤ì¤Ð¡¢30ʬ¤â¤¢¤ì¤ÐÆÉ¤á¤ë¡Ë¡¢±é½¬¤â¤ä¤ë¤Ê¤é1Æü¡Á1.5ÆüÄøÅÙ¡£

¥Ç¥­¤ëÂç¿Í¤Îʸ¾ÏÎ϶µ¼¼¡Ê»ÃÄê¡¢¾Êά²Ä¡Ë

¥Ç¥­¤ëÂç¿Í¤Îʸ¾ÏÎ϶µ¼¼
¾®ÎÓ Íβð
ÆüËÜʸ·Ý¼Ò
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥°: 118,760


Îà½ñ¤Ï¿¤¤¤Î¤Ç¡¢Ê̤ˤ³¤ì¤Ç¤Ê¤¯¤Æ¤â¤è¤¤¡£·Ú¤¯¿ô»þ´Ö¡ÁȾÆüÆÉ¤ó¤Ç¡¢¼ê¸µ¤ËÃÖ¤¤¤ÆÉ¬Í×»þ¤ËÆÉ¤ßÊÖ¤»¤ì¤Ð½½Ê¬¡£

¿·Â´ºÎÍѤνé¤Ãü¤Ë¤è¤¯¸«¤ë¡Ö³ØÀ¸¤Ã¤Ý¤¤ÍÄÃÕ¤Êʸ¾Ïɽ¸½¡×¤ò¶ºÀµ¤¹¤ë¡ÊǧÃΤµ¤»¤ë¡Ë¤¿¤á¤Ë»È¤¦¡£ÀÚ¤ê¸ý¤Ï°ã¤¦¤Î¤À¤¬¡¢¸å½Ò¤Î¡Ö¿ô³ØÊ¸¾ÏºîË¡¡×¤ÈÈï¤ëÆâÍÆ¤â¿¤¤¤Î¤Ç¡¢¶µ°é»þ´Ö¤¬¤Ê¤«¤Ã¤¿¤ê¡¢2ǯ¤°¤é¤¤¤Î¶È̳·Ð¸³¤¬¤¢¤ë¿Í¤Ê¤é¾Êά¤·¤Æ¤â¤¤¤¤¤«¤â¤·¤ì¤Ê¤¤¡£

¿ô³ØÊ¸¾ÏºîË¡ ´ðÁÃÊÔ¡¦¿äÚÊÊÔ

¿ô³ØÊ¸¾ÏºîË¡ ´ðÁÃÊÔ (¤Á¤¯¤Þ³Ø·Ýʸ¸Ë)
·ë¾ë ¹À
ÃÞËà½ñ˼
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥°: 25,822




¿ô³ØÊ¸¾ÏºîË¡ ¿äÚÊÊÔ (¤Á¤¯¤Þ³Ø·Ýʸ¸Ë)
·ë¾ë ¹À
ÃÞËà½ñ˼
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥°: 28,004


THE ´ðÁöµÍÜ¡£»Å»ö¤ÇÆüËܸìʸ¾Ï¤ò½ñ¤¯Á´¤Æ¤Î¿Í´Ö¤ÏÆÉ¤à¤Ù¤­¡£

¥Ú¡¼¥¸¿ô¤¬¾¯¤Ê¤¤ËܤǤϤ¢¤ë¤¬¡¢1Æü¡Á2ÆüÄøÅÙ¤«¤±¤Æ¤¸¤Ã¤¯¤êÆÉ¤ó¤ÀÊý¤¬¤¤¤¤¡£»þ´ÖŪ¤ËÁ᤯ÆÉ¤ß½ª¤ï¤Ã¤Æ¤·¤Þ¤Ã¤¿¾ì¹ç¤Ï¡¢µÙ·Æ¤ò¶´¤ó¤ÇÆÉ¤ßľ¤·¤µ¤»¤ë¤Î¤â¤¤¤¤¤°¤é¤¤¡£

Îà½ñ¤Ëͭ̾¤Ê¡ÖÍý²Ê·Ï¤Îºîʸµ»½Ñ¡×¤¬¤¢¤ë¤¬¡¢º£¤Ê¤é¡Ö¿ô³ØÊ¸¾ÏºîË¡¡×¤À¤±¤Ç½½Ê¬¤À¤È»×¤¦¡£¡ÖÍý²Ê·Ï¤Îºîʸµ»½Ñ¡×¤ÏÌ¾Ãø¤Ç¤¢¤ë¤³¤È¤Ï´Ö°ã¤¤¤Ê¤¤¤Î¤À¤¬¡¢¥¨¥Ô¥½¡¼¥É¥È¡¼¥¯¤ß¤¿¤¤¤Ê¤â¤Î¤¬¼ã´³Â¿¤¤¤»¤¤¤ÇÆâÍÆ¤¬Ê¬¤«¤ê¤Å¤é¤¯¤Ê¤Ã¤Æ¤¤¤ëÌ̤⤢¤ê¡¢¡Ö¿ô³ØÊ¸¾ÏºîË¡¡×¤ÎÅоì¤Ë¤è¤Ã¤ÆÌòÌܤϲ̤¿¤·¤¿¤Î¤«¤Ê¤È»×¤¦¡£

¡Öʹ¤¯µ»½Ñ¡×¤¬¿Í¤òư¤«¤¹¡Ê»ÃÄê¡¢¾Êά²Ä¡Ë


üŪ¤Ë¤Ï¡ÖÁê¼ê¤òÅܤ餻¤Ê¤¤¡×¡ÖÁê¼ê¤Î¥â¥Á¥Ù¡¼¥·¥ç¥ó¤ò²¼¤²¤Ê¤¤¡×¼õ¤±Åú¤¨¤Î»ÅÊý¤¬½ñ¤«¤ì¤¿ËÜ¡£¶µ°é¦¤¬¡Ö¾¿Í¤È¤Î²ñÏ乤뤳¤È¤¬ÆÀ°Õ¤Ç¤Ï¤Ê¤¤¤Ê¡×¤È´¶¤¸¤¿¾ì¹ç¤ÏÆÉ¤Þ¤»¤¿Êý¤¬¤è¤¤¡£Ï乤Τ¬ÆÀ°Õ¤Ê¥¿¥¤¥×¤Ç¤¢¤ì¤Ð¾Êά¤·¤Æ¤â¹½¤ï¤Ê¤¤¡£

¿ô»þ´Ö¡ÁȾÆüÄøÅÙ¤ÇÆÉ¤ó¤À¤é¡¢¼ê¸µ¤ËÃÖ¤¤¤Æ¤ª¤¤¤Æ²¿Å٤⸫ÊÖ¤¹¥¿¥¤¥×¤ÎËÜ¡£¤¿¤À¡¢¤³¤ÎËܤϼ㴳ÆÉ¤ß¤Å¤é¤¤¤Ê¤È¤Ï»×¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢¤â¤Ã¤ÈÎɤ¤Îà½ñ¤¬¸«¤Ä¤«¤ì¤Ðº¹¤·Âؤ¨¤ë¤È»×¤¦¡£

¥á¡¼¥ëʸ¾ÏÎϤδðËÜ ÂçÀÚ¤À¤±¤É¡¢¤À¤ì¤â¶µ¤¨¤Æ¤¯¤ì¤Ê¤¤77¤Î¥ë¡¼¥ë¡Ê»ÃÄê¡¢¾Êά²Ä¡Ë


Îà½ñ¤Ï¿¤¤¤Î¤Ç¡¢¤³¤ì¤âÊ̤ˤ³¤ÎËܤǤʤ¯¤Æ¤â¹½¤ï¤Ê¤¤¡£¤³¤ì¤â¿ô»þ´Ö¡ÁȾÆüÄøÅÙÆÉ¤ó¤Ç¡¢¼ê¸µ¤ËÃÖ¤¤¤ÆÉ¬Í×»þ¤ËÆÉ¤ßľ¤¹¥¿¥¤¥×¤ÎËÜ¡£

¿·Â´ºÎÍѤξì¹ç¤ÏɬÆÉ¤È¤·¤Æ¡¢ÃæÅÓºÎÍѤǤâ¥á¡¼¥ëʸ¾Ï¤ò½ñ¤¯¤Î¤¬¶ì¼ê¤Ê¿Í¡Ê¤â¤·¤¯¤Ï¤¢¤Þ¤ê½ñ¤¤¤Æ¤­¤Æ¤Ê¤¤¿Í¡Ë¤Ï³ä¤È¸«¤«¤±¤ë¤Î¤Ç¡¢Ç°¤Î¤¿¤áÆÉ¤ó¤Ç¤â¤é¤Ã¤¿Êý¤¬¤¤¤¤¡£»Å»ö¤Ç½Ð¤¹¥á¡¼¥ë¤Ê¤ó¤Æ¤Û¤È¤ó¤É¤Î¥±¡¼¥¹¤¬Äê·¿¤Ê¤Î¤À¤±¤É¡¢Ä귿ʸ¤ò¤Á¤ã¤ó¤È³Ø½¬¤Ç¤­¤Æ¤Ê¤¤¤³¤È¤Ç¡¢¥á¡¼¥ë¤Î±ýÉü²ó¿ô¤¬ÌµÂ̤Ë¿¤¯¤Ê¤Ã¤Æ»þ´Ö¤ò̵Â̤ˤ·¤¿¤ê¡¢¡Ö¤ªÁ°¤½¤ì·ö²ÞÇä¤Ã¤Æ¤ë¤è¤Í¡×¤ß¤¿¤¤¤Êʸ¾Ï¤òÊ¿µ¤¤Ç½Ð¤·¤Æ¤·¤Þ¤Ã¤Æ¥È¥é¥Ö¥ë¤Ë¤Ê¤Ã¤¿¤ê¤ò̤Á³¤ËËɤ°¤³¤È¤¬¤Ç¤­¤ë¡£

¸ÜµÒÀ޾פò¥¬¥ó¥¬¥ó¤ä¤Ã¤Æ¤­¤Þ¤·¤¿¤ß¤¿¤¤¤Ê¿Í¤Î¾ì¹ç¤Ï¡¢ÅöÁ³ÆÉ¤Þ¤Ê¤¯¤Æ¤è¤¤¡£

¹Í¤¨¤ëµ»½Ñ¡¦½ñ¤¯µ»½Ñ


¥í¥¸¥«¥ë¥·¥ó¥­¥ó¥°¡¦¥í¥¸¥«¥ë¥é¥¤¥Æ¥£¥ó¥°¤ÎÌ¾Ãø¡£Á°½Ò¤Þ¤Ç¤ÎËܤȤϰã¤Ã¤Æ¡¢°ìµ¤¤ËÆñ°×ÅÙ¤¬¾å¤¬¤ë¤Î¤À¤¬¡¢À¤¤ÎÃæ¤Î¥í¥¸¥«¥ë¥·¥ó¥­¥ó¥°¡¦¥í¥¸¥«¥ë¥é¥¤¥Æ¥£¥ó¥°ËܤÏÂçÂΤ³¤ì¤ÎÇÉÀ¸¤ß¤¿¤¤¤Ê´¶¤¸¤¬¤¢¤ë¤Î¤Ç¡¢ºÇ½é¤«¤é¤³¤ì¤òÆÉ¤ó¤ÀÊý¤¬¤è¤¤¡£

¤Ç¤­¤ì¤Ð1½µ´Ö¤°¤é¤¤¤«¤±¤Æ¡¢Í×Ì󤷤ʤ¬¤éÆÉ¤à¤È¤¤¤¦´¶¤¸¤Ç¿Ê¤á¤¿¤¤¡£

¥×¥í¥°¥é¥à¤Ïµ»½Ñ¤À¤±¤Ç¤Ïư¤«¤Ê¤¤ ~¥×¥í¥°¥é¥ß¥ó¥°¤Ç¿©¤Ù¤Æ¤¤¤¯¤¿¤á¤ËÃΤäƤª¤¯¤Ù¤­¤³¤È¡Ê¾Êά²Ä¡Ë


¤³¤ì¤Ï¸·Ì©¤Ë¤Ï´ðÁöµÍܤȤ¤¤¦¤è¤ê¤«¤Ï¡¢¤ª¤Ã¤µ¤ó¤¬Ï乡֤ä¤é¤«¤µ¤Ê¤¤¤è¤¦¤Ë¤³¤¦¤·¤¿Êý¤¬¤¨¤¨¤Ç¡×¤È¤«¡Ö¶È³¦¤Ç¿©¤Ã¤Æ¤¯¤Ê¤é¤³¤¦¤¤¤¦Î©¤Á¿¶¤ëÉñ¤¤¤ò¤·¤¿¤Û¤¦¤¬¤¨¤¨¤Ç¡×Ū¤Ê·Ð¸³Â§¤Ë±è¤Ã¤¿ÆâÍÆ¤òÂηÏΩ¤Æ¤Æ1ºý¤Ë¤Þ¤È¤á¤¿ËܤȤ¤¤¦¤Ù¤­¤«¡£¼õÂ÷³«È¯¤¢¤ê¤­¤ÊÆâÍÆ¤Ë¼ã´³ÊФäƤ¤¤ë¤È¤³¤í¤

*1¡§) => console.log(1

*2¡§) => console.log(2

*3¡§) => console.log(3

*4¡§) => console.log(4

*5¡§) => console.log(5

*6¡§) => console.log(5

*7¡§) => console.log(1

*8¡§) => console.log(2

*9¡§) => console.log(3

*10¡§) => console.log(4

*11¡§) => console.log(1

*12¡§) => console.log(2

*13¡§) => console.log(3

*14¡§) => console.log(4

*15¡§) => console.log(5

*16¡§) => console.log(1

*17¡§) => console.log(2

*18¡§) => console.log(3

*19¡§) => console.log(4

*20¡§) => console.log(5

*21¡§) => console.log(1

*22¡§) => console.log(2

*23¡§) => console.log(3

*24¡§) => console.log(4

*25¡§) => console.log(5

*26¡§) => console.log(5

*27¡§) => console.log(3

*28¡§) => console.log(4

*29¡§) => console.log(1

*30¡§) => console.log(2

*31¡§) => console.log('setTimeout'

*32¡§) => console.log('setImmediate'

*33¡§) => console.log('nextTick'

*34¡§) => console.log('setTimeout'

*35¡§) => console.log('setImmediate'

2018-09-25

¢£¤³¤ì¤òÆÉ¤ó¤Ç²Ô¤²¤Ê¤¤¿Í¤Ï¤ä¤á¤¿Êý¤¬Îɤ¤¤È»×¤¦¡ª¥¢¥Õ¥£¥ê¥¨¥¤¥È½é¿´¼Ô¸þ¤±Îɵ­»ö¤Þ¤È¤á | ¥¢¥Õ¥£¥ê¥¨¥¤¥È¥Ü¥ó¥Ð¡¼ 07:37

<title>¤³¤ì¤òÆÉ¤ó¤Ç²Ô¤²¤Ê¤¤¿Í¤Ï¤ä¤á¤¿Êý¤¬Îɤ¤¤È»×¤¦¡ª¥¢¥Õ¥£¥ê¥¨¥¤¥È½é¿´¼Ô¸þ¤±Îɵ­»ö¤Þ¤È¤á | ¥¢¥Õ¥£¥ê¥¨¥¤¥È¥Ü¥ó¥Ð¡¼</title>

¤³¤ì¤òÆÉ¤ó¤Ç²Ô¤²¤Ê¤¤¿Í¤Ï¤ä¤á¤¿Êý¤¬Îɤ¤¤È»×¤¦¡ª¥¢¥Õ¥£¥ê¥¨¥¤¥È½é¿´¼Ô¸þ¤±Îɵ­»ö¤Þ¤È¤á

¤¤¤Ä¤â¤ªÀ¤ÏäˤʤäƤª¤ê¤Þ¤¹¡£

umi¤Ç¤¹¡£¥¨¥ë¥â¤È¸Æ¤Ð¤ì¤ë¤³¤È¤¬Â¿¤¤¤Ç¤¹¡£

¥¢¥Õ¥£¥ê¥¨¥¤¥¿¡¼¡¢¥Ö¥í¥¬¡¼³¦·¨¤Ç¤ÏÍ­ÎÁnote¤¬ÏÃÂê¤Ç¤¹¤Í¡£

¥¢¥Õ¥£¥ê¥¨¥¤¥È¡¢¥Ö¥í¥°¤Ç²Ô¤°¥Î¥¦¥Ï¥¦¤òÍ­ÎÁ¥³¥ó¥Æ¥ó¥Ä¤È¤·¤Ænote¤È¤¤¤¦¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤ÇÈÎÇ䤷¤ÆÌÙ¤±¤è¤¦¡¢¤È¤¤¤¦ÏäǤ¹¡£

¤³¤ì¤Ë´Ø¤·¤Æ»ä¤ÏÈÎÇ䤹¤ë¦¡¢ÌÙ¤±¤ë¦¤Ï¹¥¤­¤Ë¤¹¤ì¤ÐÎɤ¤¤ó¤¸¤ã¤Ê¤¤¤«¤È»×¤¤¤Þ¤¹¡£

¡Ö¾ð¼å¤«¤éºñ¼è¤·¤Æ¤¤¤ë¡×

¤È¤¤¤¦°Õ¸«¤â¿¡¹¸«¤é¤ì¤Þ¤¹¤¬¡¢¤ª¾®¸¯¤¤²Ô¤®¤¿¤¤¤È»×¤Ã¤Æ¤¤¤ë¼ã¼Ô¤Ë¿ôÀé±ß¤Înote¤òÇä¤Ã¤Æ¤¤¤ë¿Í¤è¤ê¤â¡¢ÄêǯÂ࿦¤·¤¿¿Íã¤Ë¿ôÀéËüñ°Ì¤Çº¾µ½¤Þ¤¬¤¤¤ÎÅê»ñ¿®Â÷¤È¤«Çä¤Ã¤Æ¤ë¶âÍ»²ñ¼Ò¤Î¿Í¤¿¤Á¤ÎÊý¤¬È¾¿ÍƻŪ¤Ê¾¦Çä¤ò¤·¤Æ¤¤¤ë¤«¤Ê¤È»ä¤Ï´¶¤¸¤Þ¤¹¡£

¤½¤ì¤è¤ê¤âÌäÂê¤ÏÇ㤦¦¤Î¥ê¥Æ¥é¥·¡¼¤ÎÄ㤵¤«¤Ê¤È»×¤¤¤Þ¤¹¡£

ÀµÄ¾»ä¤Ï¥Ö¥í¥°¥¢¥Õ¥£¥ê¥¨¥¤¥È¤Ç·î¿ôËü¡Á¿ô½½Ëü²Ô¤°¤¿¤á¤Î¥Î¥¦¥Ï¥¦¤Ï¥Í¥Ã¥È¤Ç̵ÎÁ¤ÇÆÉ¤á¤ë¾ðÊó¤Ç½½Ê¬Ã£À®½ÐÍè¤ë¤È»×¤¤¤Þ¤¹¡£¸å¤Ï¤ä¤ëµ¤¤ÎÌäÂ꤫¤È¡£

·î¿ôÉ´Ëü°Ê¾å¤Ë¤Ê¤Ã¤Æ¤¯¤ë¤È¡¢ÂоݼԤοô¤¬¾¯¤Ê¤¤¤Î¤Ç¡Ö̵ÎÁ¤Î¾ðÊó⇛°ìÉô¤Î¿Í¤«¤é¼ý±×¤òÆÀ¤ë¡×¤È¤¤¤¦¹­¹ð¥Ó¥¸¥Í¥¹¤¬Èó¾ï¤ËÆñ¤·¤¤¤¿¤á¡¢ÌµÎÁ¤Ç¤Î¾ðÊ󤬤ۤȤó¤É¤¢¤ê¤Þ¤»¤ó¡£

¤½¤¦¤¤¤Ã¤¿¿Í¡Ê·î¿ôÉ´Ëü°Ê¾å²Ô¤¤¤Ç¤¤¤ë¿Í¡Ë¤Ï¿®Íê½ÐÍè¤ë¤È¤³¤í¤Ç¤¢¤ì¤ÐÍ­ÎÁ¤Ç¤â¾ðÊó¤òÇ㤤¤¿¤¤¤È»×¤Ã¤Æ¤·¤Þ¤¦¤â¤ó¤Ç¤¹¡£¢¨µá¤á¤Æ¤¤¤ë¿Í¤Ï·ë¹½Â¿¤¤¤È»×¤¤¤Þ¤¹

¤¿¤À¡¢¤Þ¤À¤¢¤ó¤Þ¤ê¼ý±×¤ò¾å¤²¤é¤ì¤Æ¤¤¤Ê¤¤½é¿´¼Ô¤Ï¥Í¥Ã¥È¾å¤Ë¤¿¤¯¤µ¤ó¤¤¤ë¤¿¤á¡¢¡Ö̵ÎÁ¤Î¾ðÊó⇛°ìÉô¤Î¿Í¤«¤é¼ý±×¤òÆÀ¤ë¡×¤È¤¤¤¦¹­¹ð¥Ó¥¸¥Í¥¹¤Ç½½Ê¬¼ý±×¤òÆÀ¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£¤½¤Î¤¿¤á¸½ºß¥Í¥Ã¥È¾å¤Ë¤Ï¤½¤¦¤¤¤Ã¤¿¾ðÊ󤬤¿¤¯¤µ¤ó¤¢¤ê¤Þ¤¹¡£

¤·¤«¤·¤¿¤¯¤µ¤ó¤¢¤ê¤¹¤®¤Æ¤É¤ì¤¬Àµ¤·¤¤¤«¤ï¤«¤é¤Ê¤¤¡£

¤È¤¤¤¦ÌäÂ꤬¤¢¤ê¤Þ¤¹¤Í¡£¤À¤«¤énote¤òÇ㤦¤ó¤À¤È»×¤¤¤Þ¤¹¡£

Í­ÎÁ¤À¤«¤é¿®Íê½ÐÍè¤ë¾ðÊó¤À¤È»×¤Ã¤Æ¡£

»Äǰ¤Ê¤¬¤é¤½¤ì¤Ï¸¸ÁۤǤ¹¡£

ËͤÏÍ­ÎÁnote¤ò¤Û¤È¤ó¤ÉÇã¤Ã¤¿¤³¤È¤¬¤Ê¤¤¤Î¤Ç¤ï¤«¤ê¤Þ¤»¤ó¤¬¡¢¾¯¤Ê¤¯¤È¤â¥Í¥Ã¥È¾å¤Ëž¤¬¤Ã¤Æ¤¤¤ë̵ÎÁ¤Î¾ðÊó¤è¤êÍ­ÎÁ¤Î¾ðÊó¤¬Í¥¤ì¤Æ¤¤¤ë¤È¤¤¤¦¤³¤È¤ÏÀäÂФʤ¤¤È¸À¤¤ÀÚ¤ì¤Þ¤¹¡£

¤Ê¤¼¤Ê¤é̵ÎÁ¤ÇÆÉ¤á¤ë¾ðÊó¤Ë¤âÃæ¤Ë¤Ï¤³¤ì°Ê¾å¤Ê¤¤¤¯¤é¤¤Í­ÎϤʾðÊ󤬤¢¤ë¤«¤é¤Ç¤¹¡£

¤È¤¤¤¦¤ï¤±¤ÇËÜ¥Ú¡¼¥¸¤Ç¤Ï»ä¤¬¤È¤Æ¤â»²¹Í¤Ë¤Ê¤Ã¤¿¥Í¥Ã¥È¤Ç̵ÎÁ¤ÇÆÉ¤á¤ë¤Þ¤µ¤Ë¡ÖÍ­ÎÁµé¡×¤Î¥¦¥§¥Ö¥Ú¡¼¥¸¤ò¤Þ¤È¤á¤Æ¾Ò²ð¤·¤Þ¤¹¡£¥µ¥¤¥È¤Ç¤Ï¤Ê¤¯¥Ú¡¼¥¸¤Ç¾Ò²ð¤·¤Þ¤¹¡£¥µ¥¤¥È¤À¤È¤½¤³¤«¤éÎɤ¤¥Ú¡¼¥¸Ãµ¤¹ÎϤ¬¤Ê¤¤¤È¥À¥á¤À¤«¤é¤Í¡£

0¤«¤é1¸þ¤±¤Î¿Í¤Ë¶µ¤¨¤¿¤¤Í¥ÎÉ¥¦¥§¥Ö¥Ú¡¼¥¸

¤Þ¤ÀÁ´Á³²Ô¤²¤Æ¤Ê¤¤¡¢¼è¤êÁȤó¤Ç¤Ï¤¤¤ë¤±¤É²¿¤¬Àµ²ò¤«Á´Á³¤ï¤«¤é¤º±À¤òÄϤà¤è¤¦¤Ê»×¤¤¤Ç¼è¤êÁȤó¤Ç¤¤¤ë¿Í¤Ï°Ê²¼¤Î3¥Ú¡¼¥¸¡Ü1¤òÆÉ¤ß¤Þ¤·¤ç¤¦¡£

¥Ö¥í¥°¥¢¥Õ¥£¥ê¥¨¥¤¥È¤Ï¤Ï¤Æ¤Ê¥Ö¥í¥°¤Ê¤É̵ÎÁ¥Ö¥í¥°¤Ç´Êñ¤Ë»Ï¤á¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¤¬¡¢ÀµÄ¾Ì¤ä¿¤éWordPress¤Ç³«Àߤ·¤¿Êý¤¬Îɤ¤¤Ç¤¹¡£

¤È¤¤¤¦¤Î¤â̵ÎÁ¥Ö¥í¥°¤Ï±¿±Ä¼Ô¦¤Ëâˤޤì¤ë¤È¥Ö¥í¥°¤Î±¿±Ä¤¬¤Ç¤­¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¶²¤ì¤¬¤¢¤ë¤«¤é¤Ç¤¹¡£

Î㤨¤Ð¥Ö¥í¥°¥¢¥Õ¥£¥ê¥¨¥¤¥È¤Ç¿Íµ¤¤Î¤¢¤ë¤Ï¤Æ¤Ê¥Ö¥í¥°¤Ï¡¢¥¢¥Õ¥£¥ê¥¨¥¤¥È¹­¹ð¤½¤Î¤â¤Î¤ò¶Ø»ß¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¤¢¤ëÄøÅÙ¸·¤·¤¤¥¬¥¤¥É¥é¥¤¥ó¤¬¤¢¤ê¤Þ¤¹¡£

¤Ï¤Æ¤Ê¥Ö¥í¥°¤Î¥¬¥¤¥É¥é¥¤¥ó

WordPress¤Ç±¿±Ä¤¹¤ì¤Ð¹­¹ð¤ÎޤêÊý¤Ç¥Ö¥í¥°±¿±Ä¤¬¤Ç¤­¤Ê¤¯¤Ê¤ë¤Ê¤ó¤Æ¤³¤È¤Ï¤Ê¤¤¤Î¤Ç¡¢WordPress¤Ç»Ï¤á¤¿Êý¤¬Îɤ¤¤È¹Í¤¨¤Þ¤¹¡£

¥µ¡¼¥Ð¤Ë´Ø¤·¤Æ¤ÏÊ̤ˤɤ³¤Ç¤âÎɤ¤¤Ç¤¹¤¬¡¢°Â¤¯¤ÆÁ᤯¤Æ¿Íµ¤¤Î¤¢¤ë¥¨¥Ã¥¯¥¹¥µ¡¼¥Ð¤ÇÎɤ¤¤È»×¤¤¤Þ¤¹¡£ºÙ¤«¤¯Ä´¤Ù¤ë²Ë¤¬¤¢¤Ã¤¿¤é¤µ¤Ã¤µ¤È¤³¤ì¤Ç»Ï¤á¤Þ¤·¤ç¤¦¡£

ASP¤ÎÅÐÏ¿¤Ë̤äƤ¤¤ë²Ë¤¬¤¢¤Ã¤¿¤é¤³¤Î¥Ú¡¼¥¸¤ò»²¹Í¤ËÅÐÏ¿¤·¤Þ¤·¤ç¤¦¡£Á´Éô¤·¤Ê¤¯¤Æ¤âÌäÂꤢ¤ê¤Þ¤»¤ó¡£¤à¤·¤íÅÐÏ¿¤¹¤ëASP¤Ï½ÐÍè¤ë¸Â¤ê¹Ê¤Ã¤¿Êý¤¬Îɤ¤¤È»×¤¤¤Þ¤¹¡£

ºÇ½é¤Ï¤È¤ê¤¢¤¨¤º¡Öa8net¡×¡Ö¥Ð¥ê¥å¡¼¥³¥Þ¡¼¥¹¡×¡Ö¥¢¥¯¥»¥¹¥È¥ì¡¼¥É¡×¡Ö¥¢¥Õ¥£¥ê¥¨¥¤¥ÈB¡×ÊÕ¤ê¤òÅÐÏ¿¤·¤Æ¤ª¤¯¤³¤È¤ò¤ª¤¹¤¹¤á¤·¤Þ¤¹¡£

¥µ¥¤¥È¤Îºî¤êÊý¤Ë´Ø¤·¤Æ¤Ï¤³¤Îµ­»ö¤òÆÉ¤ó¤Ç¤ª¤±¤Ð¤À¤¤¤¿¤¤¤ï¤«¤ë¤È»×¤¤¤Þ¤¹¡£

¼ÂºÝ¤Ë±¿±Ä¤·¤Æ¤¤¤ë¥µ¥¤¥È¤â¾Ò²ð¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤È¤Æ¤â»²¹Í¤Ë¤Ê¤ê¤Þ¤¹¤è¡£

¤ï¤«¤é¤Ê¤¤ÍѸì¤Ê¤É¤¬¤¢¤ì¤Ð¼«Ê¬¤ÇÄ´¤Ù¤ÆÍý²ò¤·¤Þ¤·¤ç¤¦¡£¤½¤ì¤¬½ÐÍè¤Ê¤¤¿Í¤Ï¥¢¥Õ¥£¥ê¥¨¥¤¥È¤Ç²Ô¤°¤³¤È¤¬ÀäÂÐ̵Íý¤Ê¤Î¤ÇÊÌ¤ÎÆ»¤ò¹Í¤¨¤Þ¤·¤ç¤¦¡£

´ðËÜŪ¤Êµ­»ö¤Î¹½À®¡Ê¸«½Ð¤·¤È¤«µ­»ö¤ÎÊ·°Ïµ¤¤ß¤¿¤¤¤Ê¤ä¤Ä¡Ë¤äÁõ¾þ¡Êʸ»ú¤Î¿§¤äÂ礭¤µ¡Ë¤Ï¤³¤Î£²¤Ä¤Îµ­»ö¤ò¿¿»÷¤¹¤ì¤ÐÎɤ¤¤Ç¤¹¤è¡£

¥é¥¤¥Æ¥£¥ó¥°¤Ë´Ø¤¹¤ëµ­»ö¤Ç¤¹¡£¥é¥¤¥Æ¥£¥ó¥°¤Ë´Ø¤·¤Æ¤Ï¤³¤Îµ­»ö¤Ë½ñ¤¤¤Æ¤¢¤ë¤³¤È¤ò¼è¤êÆþ¤ì¤ì¤Ð¤À¤¤¤¿¤¤³°¤µ¤Ê¤¤¤È»×¤¤¤Þ¤¹¡£

¤¤¤­¤Ê¤ê¤¹¤Ù¤Æ¤ò¼è¤êÆþ¤ì¤ë¤³¤È¤Ï½ÐÍè¤Ê¤¤¤È»×¤¦¤Î¤Ç¡¢¾¯¤·¤º¤Ä¼è¤êÆþ¤ì¤Æ¹Ô¤­¤Þ¤·¤ç¤¦¡£

¤³¤Î¥Ö¥í¥°¤Îµ­»ö¤Ç¤¹¡£°Õ³°¤Èï¤â¶µ¤¨¤Æ¤¯¤ì¤Ê¤¤¤³¤È¤ò½ñ¤¤¤¿¤Ä¤â¤ê¤Ç¤¹¡£¤³¤ì¤«¤é»Ï¤á¤ë¿Í¤Ï±¦¤âº¸¤â¤ï¤«¤é¤Ê¤¤¤È»×¤¦¤Î¤Ç°ì±þ¤¤¤ì¤Æ¤ª¤­¤Þ¤·¤¿¡£

1¡Á10°Ê¾å¤òÌܻؤ¹¿Í¤Î¤¿¤á¤ÎÍ¥ÎÉ¥Ú¡¼¥¸

¾¯¤·¤º¤Ä¡¢¤Ê¤ó¤È¤Ê¤¯¤ï¤«¤Ã¤Æ¤­¤Æ¡¢½éÊ󽷤Ȥ«Æþ¤Ã¤Æ¤¯¤ë¤¯¤é¤¤¤Ë¤Ê¤Ã¤¿°Ê¾å¤Î¿Í¸þ¤±¡£

¤¤¤ï¤æ¤ë¥³¥ó¥Æ¥ó¥ÄSEO¤ÎÅú¤¨¤Î¤è¤¦¤Êµ­»ö¡£¤Þ¤¢¸«¤Æ¤ÎÄ̤ê¼ÂÁ©¤¹¤ë¤Î¤¬ÂçÊѤǤ¹¡£

¤·¤«¤·¶¥¹çÀ­¤Î¹â¤¤¥­¡¼¥ï¡¼¥É¤Ç¾å°Ìɽ¼¨¤¹¤ë¤Ë¤Ï¾¯¤Ê¤¯¤È¤â¤³¤ì¤¯¤é¤¤¤ÎÇ®Î̤¬É¬ÍפǤ¹¡£

¾¯¤Ê¤¯¤È¤â¤³¤ì¤¯¤é¤¤¤ä¤é¤Ê¤¤¤È¥¬¥Ã¥Ä¥ê²Ô¤°¤³¤È¤Ï½ÐÍè¤Þ¤»¤ó¡£

¥³¥ó¥Ð¡¼¥¸¥ç¥ó¤Ë´Ø¤¹¤ë¿ô¾¯¤Ê¤¤Í¥Îɵ­»ö¡£¥¢¥Õ¥£¥ê¥¨¥¤¥È¤Î¤ä¤êÊý¤¬¤ï¤«¤é¤Ê¤¤»þ¤Ë¤È¤Æ¤â»²¹Í¤Ë¤Ê¤ê¤Þ¤·¤¿¡£½ñ¤¤¤Æ¤¢¤ë¤³¤È¤Î°ÕÌ£¤¬¤ï¤«¤é¤Ê¤¤¤È¤¤¤¦¿Í¤Ï¤Þ¤À¤½¤Î¥ì¥Ù¥ë¤Þ¤Ç㤷¤Æ¤¤¤Ê¤¤¤Î¤«¤â¡£

¤³¤Î¥Ö¥í¥°¤Îµ­»ö¡£¥­¡¼¥ï¡¼¥ÉÁª¤Ó¤Ë¤Ä¤¤¤Æ·ë¹½¾Ü¤·¤¯¤Þ¤È¤á¤Þ¤·¤¿¡£½é¿´¼Ô¤Ë¤Ï¤Á¤ç¤Ã¤È¤ï¤«¤ê¤Ë¤¯¤¤¤È¤³¤í¤¬Â¿¤á¤«¤â¤·¤ì¤Þ¤»¤ó¡£

¥µ¡¼¥Á¥³¥ó¥½¡¼¥ë¤Î»È¤¤Êý¡¢²þÁ±ÊýË¡¤ò¤ï¤«¤ê¤ä¤¹¤¯¤Þ¤È¤á¤¿µ­»ö¡£¥µ¡¼¥Á¥³¥ó¥½¡¼¥ë¤Ï¤â¤Ï¤äɬ¿Ü¥Ä¡¼¥ë¤Ç¤¹¤¬¡¢¤¢¤ëÄøÅ٤Υ¢¥¯¥»¥¹¿ô¤¬É¬ÍפǤ¹¡£¤È¤¤¤¦¤ï¤±¤Ç¤¢¤ëÄøÅÙÊó½·¤¬¤¢¤ë¿Í¸þ¤±¤«¤Ê¡£

³°ÃíÀïά¤Ë´Ø¤¹¤ëÎɵ­»ö¡£

ÀµÄ¾¤³¤ì¤¬¼ÂÁ©½ÐÍè¤ë¥¢¥Õ¥£¥ê¥¨¥¤¥¿¡¼¤Ï¤¹¤Ç¤Ë·î100Ëü°Ê¾å¤Ï·Ú¤¯²Ô¤¤¤Ç¤¤¤ë¤Î¤Ç¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¤«¡£

¤È¤¤¤¦¤¯¤é¤¤¤ä¤Ï¤ê¼ÂÁ©¤¬Æñ¤·¤¯¡¢Ç®Î̤¬É¬ÍפǤ¹¡£

¤¿¤À¥¢¥Õ¥£¥ê¥¨¥¤¥È¤Ç²Ô¤°¤È¤¤¤¦¤Î¤Ï¤³¤¦¤¤¤Ã¤¿¥Ù¥Æ¥é¥ó¤ÎÁÈ¿¥¥¢¥Õ¥£¥ê¥¨¥¤¥¿¡¼¤ÈƱ¤¸ÅÚɶ¡Ê¸¡º÷¡Ë¤ÇÀ臘¤³¤È¤Ë¤Ê¤ë¤È¤¤¤¦¤³¤È¤À¤±¤ÏÃΤäƤª¤­¤Þ¤·¤ç¤¦¾Ð

¤Þ¤È¤á

º£²ó¡¢ºÇ¶á¤Ï¤¢¤Þ¤ê¥·¥§¥¢¤µ¤ì¤ë¤³¤È¤Î¤Ê¤¤¤ä¤ä¸Å¤á¤Îµ­»ö¡Ê¼ºÎé¡©¡Ë¤òÃæ¿´¤Ë¾Ò²ð¤·¤Þ¤·¤¿¡£

¸ø³«Æü¤¬2ǯ°Ê¾åÁ°¤Î¤â¤Î¤â¿¤¤¤Ç¤¹¤¬¡¢¤É¤ì¤â̤¤À¤ËÇѤì¤ë¤³¤È¤Ê¤¯¼ÂÁ©¤¹¤ì¤Ð²Ô¤°¤³¤È¤¬½ÐÍè¤ëºÆ¸½À­¤Î¤¢¤ë¤â¤Î¤Ð¤«¤ê¤À¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£

¤¿¤À¡¢ºÆ¸½À­¤Î¤¢¤ë¥Î¥¦¥Ï¥¦¤È¤¤¤¦¤Î¤Ï¿¿»÷¤µ¤ì¤ä¤¹¤¯¡¢¿¿»÷¤µ¤ì¤Ê¤¤Í¥ÎɤʺƸ½À­¤Î¤¢¤ë¥Î¥¦¥Ï¥¦¤È¤¤¤¦¤Î¤ÏÃæ¡¹¼ÂÁ©¤¬½ÐÍè¤Ê¤¤¤â¤Î¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¢¨µÕ¤Ë¸À¤¨¤Ðï¤Ç¤â½ÐÍè¤ëºÆ¸½À­¤Î¤¢¤ë¥Î¥¦¥Ï¥¦¤Ï¤¹¤°¤Ë¿¿»÷¤µ¤ì¤Æ»È¤¤Êª¤Ë¤Ê¤é¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹

¾åµ­¤Ï¤¤¤º¤ì¤â¼ÂÁ©¤¹¤ë¥Ï¡¼¥É¥ë¤¬¤ä¤ä¹â¤¤¤Ç¤¹¤¬¡¢¸Î¤ËÇѤì¤Ë¤¯¤¤¼êË¡¤Ç¤¢¤ë¤È¹Í¤¨¤Þ¤¹¡£

  • ¼ÂÁ©¤¹¤ë
  • ·Ñ³¤¹¤ë
  • ¤È¤Ë¤«¤¯µ­»ö¤ò½ñ¤¯

¤¬ºÇ½é¤Ï½ÅÍפǤ¹¤Í¡£

¤Þ¤¿¡¢¤³¤ì°Ê³°¤Ë¤â¤Þ¤À¤Þ¤À̵ÎÁ¤ÇÆÉ¤á¤ëÎɤ¤µ­»ö¤Ï¤¿¤¯¤µ¤ó¤¢¤ë¤È»×¤¤¤Þ¤¹¡£

¡Ö¤³¤ì¤ÏÆþ¤ì¤È¤±¤è¡ª¡×

¤Ã¤Æ¤¤¤¦¤Î¤¬¤¢¤ì¤Ð¶µ¤¨¤Æ¤¯¤À¤µ¤¤¡£

²Ã¤¨¤Æ¤â¤·¾å½Ò¤·¤¿µ­»ö¤è¤ê¤â°µÅÝŪ¤ËÁÇÀ²¤é¤·¤¤Í­ÎÁnote¤¬¤¢¤Ã¤¿¤é¶µ¤¨¤Æ¤¯¤À¤µ¤¤¡£

¢£SSH¤Ê¤ë¤â¤Î¤ò¤è¤¯¤ï¤«¤é¤º¤Ë»È¤Ã¤Æ¤¤¤ë¿Í¤Î¤¿¤á¤Î¼ê°ú½ñ 07:29

<title>SSH¤Ê¤ë¤â¤Î¤ò¤è¤¯¤ï¤«¤é¤º¤Ë»È¤Ã¤Æ¤¤¤ë¿Í¤Î¤¿¤á¤Î¼ê°ú½ñ</title>

SSH¤Ê¤ë¤â¤Î¤ò¤è¤¯¤ï¤«¤é¤º¤Ë»È¤Ã¤Æ¤¤¤ë¿Í¤Î¤¿¤á¤Î¼ê°ú½ñ


SSH¤È¤Ï

SSH¤È¤Ï¡¢¥»¥­¥å¥¢¤ÊÄÌ¿®¤ò¹Ô¤¦¤¿¤á¤Î¥×¥í¥È¥³¥ë¤Ç¤¹¡£

¤¿¤È¤¨¤Ð¡¢HTTP¡£HTTP¤òÄ̤·¤Æ¥Ö¥é¥¦¥¶¤«¤éWeb¥µ¥¤¥È¤Ë¥¢¥¯¥»¥¹¤·¡¢

¥³¥ó¥Æ¥ó¥Ä¤ò±ÜÍ÷¤·¤¿¤êWeb¥¢¥×¥ê¤òÍøÍѤ·¤¿¤ê¤·¤Þ¤¹¡£

¤³¤Î¡ÖHTTP¡×¤È¤¤¤¦¤Î¤â¥×¥í¥È¥³¥ë¤Î°ì¼ï¤Ç¤¹¡£

HTTP¤âSSH¤âOSI»²¾È¥â¥Ç¥ë¤È¸Æ¤Ð¤ì¤ëÁؤκǾå°Ì¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥ì¥¤¥ä¡¼¤Ë°ÌÃÖ¤·¤Æ¤¤¤Þ¤¹¡£

¤Ê¤ª¡¢¤è¤¯Ê¹¤¯¡ÖOpenSSH¡×¤È¤Ï¡¢¤³¤ÎSSH¤Î¥×¥í¥È¥³¥ë¤ò¼Â¸½¤¹¤ë¤¿¤á¤Î

ͭ̾¤Ê¥½¥Õ¥È¥¦¥§¥¢¡Ê¥×¥í¥°¥é¥à¡Ë¤Î¤Ò¤È¤Ä¤Ç¤¹¡£

FTP¤Î¥×¥í¥È¥³¥ë¤Ç¸À¤¦FileZilla¤È¤«¡¢¤½¤¦¤¤¤Ã¤¿¥¤¥á¡¼¥¸¤Ç¤¹¡£

¤³¤ÎSSH¤ò»È¤¦¤È¡¢¥ê¥â¡¼¥È¥µ¡¼¥Ð¤Ë°ÂÁ´¤Ë¥í¥°¥¤¥ó¤Ç¤­¤¿¤ê¡¢

¥Õ¥¡¥¤¥ë¤ò¥»¥­¥å¥¢¤ËÁ÷¼õ¿®¤¹¤ë¤³¤È¤¬¤Ç¤­¤¿¤ê¤·¤Þ¤¹¡£

SSH¤Ï¡ÖSecure Shell¡×¤ÎÌõ¤Ç¡¢¥ê¥â¡¼¥È¥·¥§¥ë¤ËÆÃ²½¤·¤Æ¤¤¤Þ¤¹¡£

¸ø³«¸°Ç§¾Ú¤È¤¤¤¦»ÅÁȤߤòÍѤ¤¤Æ¡¢¥»¥­¥å¥¢¤ÊÄÌ¿®¤ò¼Â¸½¤·¤Æ¤¤¤Þ¤¹¡£

Ʊ¤¸¸ø³«¸°Ç§¾Ú¤òÍѤ¤¤ë»ÅÁȤߤˡ¢¡ÖSSL¡×¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£

SSL¤òʹ¤¤¤¿¤³¤È¤¬¤Ê¤¯¤Æ¤â¡¢¡ÖHTTPS¡×¤òʹ¤¤¤¿¤³¤È¤¬¤¢¤ë¿Í¤Ï¿¤¤¤Ç¤¹¤è¤Í¡£

¡ÖHTTPS¡×¤Ï¡¢¡ÖHTTP over SSL/TLS¡×¤È¸Æ¤Ð¤ì¡¢SSL¤È¤¤¤¦»ÅÁȤߤòÍѤ¤¤Æ

HTTPÄÌ¿®¤ò¹Ô¤¦¡¢¤È¤¤¤¦¤â¤Î¤Ç¤¹¡£

¤µ¤Æ¡¢SSH¤ÎÀâÌÀ¤ËÌá¤ê¤Þ¤¹¡£

ºÇ¶á¤Ç¸À¤¦¤È¡¢AWS¤Î¿Íµ¤¤äGithub¤Î¥æ¡¼¥¶¿ôÁý²Ã¤Ê¤É¤Ë¤è¤Ã¤Æ¡¢

¤¢¤Þ¤ê¥»¥­¥å¥ê¥Æ¥£¤ä¤½¤â¤½¤âUnix·Ï¤Î¥³¥Þ¥ó¥É¤Ë¾Ü¤·¤¯¤Ê¤¤Êý¤Ç¤â

¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ë¤·¤¿¤¬¤Ã¤Æ¡Össh-keygen¡×¤Ê¤ë¥³¥Þ¥ó¥É¤ò¥¿¡¼¥ß¥Ê¥ë¤Ë¤ª¤½¤ë¤ª¤½¤ë

ÆþÎϤ·¤Æ¤ß¤¿¤ê¡¢¤Ê¤ó¤«¤ï¤±¤ï¤«¤é¤Ê¤¤Ê¸»úÎó¤ò¥³¥Ô¡¼¤·¤ÆGithub¤ÎÀßÄê²èÌ̤Ë

¥³¥Ô¡¼¤·¤Æ¤ß¤¿¤ê¡£¡£¡£¤Ç¤â¤³¤ìËÜÅö¤Ë°ÂÁ´¤Ê¤Î¤«¡¢´Ö°ã¤Ã¤ÆÂç»ö¤Ê¤â¤Î¡ÊÈëÌ©¸°¡Ë¤ò

¸ø³«¤·¤Æ¤·¤Þ¤Ã¤Æ¤Ê¤¤¤«¤È¤«¡£¡£¡£

¤½¤ó¤ÊÇØ·Ê¤â¤¢¤Ã¤Æ¡¢SSH¤¬¤è¤¯¤ï¤«¤é¤Ê¤¤¿Í¤Î¤¿¤á¤Ë¡¢

SSHÄÌ¿®¤ÎÀßÄê¤òÄ̤·¤Æ¡¢¤Ê¤ë¤Ù¤¯¤ï¤«¤ë¤è¤¦¤ËÀâÌÀ¤·¤Æ¤ß¤Þ¤¹¡£

´Ö°ã¤Ã¤Æ¤¤¤ë²Õ½ê¤äÀâÌÀ¤¬Â­¤ê¤Ê¤¤²Õ½ê¤¬¤¢¤ì¤Ð¤¼¤Ò¶µ¤¨¤Æ²¼¤µ¤¤¡£

SSH¤Î¥í¥°¥¤¥óǧ¾Ú¤Ë¤Ï¡¢°Ê²¼¤ÎÊýË¡¤¬¤¢¤ê¤Þ¤¹¡£

1. ¥Ñ¥¹¥ï¡¼¥Éǧ¾Ú

¥æ¡¼¥¶Ì¾¤È¥Ñ¥¹¥ï¡¼¥É¤¬Ê¬¤«¤ì¤Ðï¤Ë¤Ç¤â¥í¥°¥¤¥ó¤µ¤ì¤ë¤Î¤Ç¡¢

SSH¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤ÆÌµ¸ú¤Ë¤¹¤ë¤Î¤¬É¸½à¤Ç¤¹¡£

2. ¸ø³«¸°Ç§¾Ú¤Ë¤è¤ëÀܳ

»öÁ°¤Ë¥í¡¼¥«¥ë¦¤ÇºîÀ®¤·¤¿¸ø³«¸°¤ò¡¢¥í¥°¥¤¥óÀè¤Î¥µ¡¼¥Ð¤ËÅÐÏ¿¤¹¤ë¤³¤È¤Ç¡¢

ÅÐÏ¿¤µ¤ì¤¿¸ø³«¸°¤ËÂбþ¤·¤¿ÈëÌ©¸°¤ò»ý¤Ã¤Æ¤¤¤ë¥¯¥é¥¤¥¢¥ó¥È¤Î¤ß¤¬Àܳ¤Ç¤­¤Þ¤¹¡£

¡Ö¥Ñ¥¹¥ï¡¼¥Éǧ¾Ú¡×¤ÈÈæ¤Ù»öÁ°¤Î½àÈ÷¤¬É¬ÍפȤʤê¤Þ¤¹¤¬¡¢¤è¤ê°ÂÁ´¤Êǧ¾Ú¤Ç¤¹¡£

¾ÜºÙ¤Ê¼ê½ç¤Ë¤Ä¤¤¤Æ¤Ï¡¢¸å½Ò¤·¤Þ¤¹¡£

SSH¤³¤È¤Ï¤¸¤á

¾õÂÖ³Îǧ:

# sshd¡ÊSSH¥Ç¡¼¥â¥ó¡Ë¤¬Æ°¤¤¤Æ¤¤¤ë¤³¤È¤ò³Îǧ¡ÊCentOS¤Ê¤É¡Ë
$ lsof -i:22
$ lsof | grep sshd

# ¤â¤·¤¯¤Ïssh-agent¡ÊMac¤Ê¤É¡Ë
$ lsof | grep ssh-agend

~/.ssh/known_hosts

°ìÅÙÀܳ¤·¤¿¤³¤È¤Î¤¢¤ë¥µ¡¼¥Ð¤ÎSSH¥µ¡¼¥Ð¾ÚÌÀ½ñ¤Ï¡¢

¥¯¥é¥¤¥¢¥ó¥È¦¤Î¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¡¢~/.ssh/known_hosts¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£

# known_hosts¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤òɽ¼¨
$ cat ~/.ssh/known_hosts

¸ø³«¸°Ç§¾Ú¤Ë¤Ä¤¤¤Æ

  1. ¡Ê¥¯¥é¥¤¥¢¥ó¥È¦¡Ë¸ø³«¸°¤ÈÈëÌ©¸°¤òÀ¸À®
  2. ¡Ê¥¯¥é¥¤¥¢¥ó¥È¦¢ª¥µ¡¼¥Ð¦¡Ë¸ø³«¸°¤ò¥³¥Ô¡¼¡¦¥µ¡¼¥Ð¦¤ËÀßÃÖ

1. ¡Ê¥¯¥é¥¤¥¢¥ó¥È¦¡Ë¸ø³«¸°¤ÈÈëÌ©¸°¤òÀ¸À®

# ¸ø³«¸°¤ÈÈëÌ©¸°¤òÀ¸À®
$ ssh-keygen

...

¾åµ­¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢~/.ssh¥Ç¥£¥ì¥¯¥È¥ê¤¬¤Þ¤ººîÀ®¤µ¤ì¡¢

¤½¤ÎÃæ¤Ë¸ø³«¸°¡Êid_rsa.pub¡Ë¤ÈÈëÌ©¸°¡Êid_rsa¡Ë¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£

¤³¤ÎÈëÌ©¸°¤Ïï¤Ë¤âÅϤµ¤Ê¤¤¡¦¸ø³«¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤

¸ø³«¸°¤ÎÊý¤Ï¡¢¥µ¡¼¥Ð¤ËÅÐÏ¿¤·¤Þ¤¹¡£¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ê¤Î¤Ç

Ãæ¿È¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£

$ cat ~/.ssh/id_rsa.pub

¤Ê¤ª¡¢ssh-keygen¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëºÝ¤Ë¡¢°Å¹æ¤Î¥¿¥¤¥×¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

°Å¹æ¤Î¼ïÎà¤Ë¤Ï¡¢¡Örsa1¡×¡Örsa¡×¡Ödsa¡×¤«¤éÁªÂò¤Ç¤­¤Þ¤¹¡£

Q. ¡Örsa1¡×¡Örsa¡×¡Ödsa¡×¡£¡£¡£¤Ê¤Ë¤¬°ã¤¦¤Î¡©

Type Merit Demerit
RSA1 SSH£±¤Ç»È¤¨¤ë SSH1¤Ë¤ÏÀȼåÀ­¤¬¤¢¤ë
DSA SSH2¤Ç»È¤¨¤ë ¸°Ä¹¤¬1024bit¤Èû¤á
RSA ¸°Ä¹¤¬ºÇĹ4096bit¤ÈĹ¤á ÆÃ¤Ë̵¤·

SSH1¤ò¥µ¥Ý¡¼¥È¤¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ê¤É¤¬¤¢¤ì¤Ð¡¢RSA1¤Ê¤É¤¬¸¡Æ¤¸õÊä¤ÈÆþ¤Ã¤Æ¤¯¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢

ÂçÄñ¤Î¾ì¹ç¤ÏRSA¤Ç»ö­¤ê¤ë¤È»×¤¤¤Þ¤¹¤·¡¢¤³¤ÎÁªÂò»è¤ÎÃæ¤Ç¤Ï°ìÈÌÍøÍѤǤ¢¤ì¤ÐRSA¤¬ºÇÁ±ºö¤À¤È¤À¤È»×¤ï¤ì¤Þ¤¹¡£

¡Ê¤â¤Á¤í¤ó²ÃÌ£¤¹¤Ù¤­Í×°ø¤Ï¿¡¹¤¢¤ë¤«¤È»×¤¤¤Þ¤¹¤¬¡£¡£¡£¡Ë

http://security.stackexchange.com/questions/23383/ssh-key-type-rsa-dsa-ecdsa-are-there-easy-answers-for-which-to-choose-when

Q. ¡Ö¥Ñ¥¹¥Õ¥ì¡¼¥º¡×¤òµá¤á¤é¤ì¤ë¤Î¤Ï¤Ê¤¼¡©

¥Ñ¥¹¥Õ¥ì¡¼¥º¤Ï¡¢ÈëÌ©¸°¤ò»È¤¦ºÝ¤ËɬÍפʥѥ¹¥ï¡¼¥É¤Ç¤¹¡£

Ëü¤¬°ìÈëÌ©¸°¤¬Åð¤Þ¤ì¤Æ¤·¤Þ¤Ã¤¿¤êϳ±Ì¤·¤Æ¤·¤Þ¤Ã¤¿¤ê¤·¤¿¤È¤·¤Æ¤â¡¢

¤½¤ÎÈëÌ©¸°¤ò»È¤¦¤¿¤á¤Ë¤Ï¥Ñ¥¹¥Õ¥ì¡¼¥º¤¬É¬ÍפʤΤǡ¢

¤Ê¤ê¤¹¤Þ¤·¤òËɤ°¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

ǰ¤Ë¤Ïǰ¤òÆþ¤ì¤ë¡¢¤È¤¤¤¦¤³¤È¤Ç¤¹¤Í¡£

¤Ê¤ª¡¢¥Ñ¥¹¥Õ¥ì¡¼¥º¤Ï¤Î¤Á¤Î¤ÁÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

Êѹ¹¤·¤¿¤¤¾ì¹ç¤Ï¡¢ssh-keygen -p¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£

man ssh-keygen¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¥Þ¥Ë¥å¥¢¥ë¤ò³«¤¯¤È¡¢

¿ä¾©¤µ¤ì¤ë¥Ñ¥¹¥Õ¥ì¡¼¥º¤Ë¤Ä¤¤¤Æ¡¢°Ê²¼¤ÎÍͤʵ­½Ò¤¬¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

A passphrase is similar to a password, except it

can be a phrase with a series of words, punctuation, numbers, whitespace, or any string of characters you want. Good passphrases are

10-30 characters long, are not simple sentences or otherwise easily guessable (English prose has only 1-2 bits of entropy per character,

and provides very bad passphrases), and contain a mix of upper and lowercase letters, numbers, and non-alphanumeric characters.

  • 10~30ʸ»úÄøÅÙ
  • ¿ä¬¤·¤ä¤¹¤¤Ê¸¾Ï¤òÈò¤±¤ë
  • Âçʸ»ú¾®Ê¸»ú¡¢¿ô»ú¡¢µ­¹æ¤òº®¤¼¤ë

Q. ¡Örandomart¡×¤Ã¤Æ¤Ê¤Ë¡©

ssh-keygen¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æ¡¢²èÌ̤λؼ¨¤Ë¤·¤¿¤¬¤Ã¤Æ¥Ñ¥¹¥Õ¥ì¡¼¥º¤òÆþÎϤ¹¤ë¤È¡¢

²¼µ­¤Î¤è¤¦¤ÊÆæ¤Îµ­¹æ³¨¿Þ¤¬¤¤¤­¤Ê¤ê½Ð¸½¤·¤Þ¤¹¡£¤³¤Îµ­¹æ³¨¿Þ¤Ï¤Ê¤ó¤Î¤¿¤á¤Ë¤¢¤ë¤Î¤Ç¤·¤ç¤¦¡©

The key's randomart image is:

			
      • [ RSA 2048]----+
| o=. | | o o++E | | + . Ooo. | | + O B.. | | = *S. | | o | | | | | | | +-----------------+

¤¿¤È¤¨¤Ð¡¢¤¢¤ëÆü¥í¡¼¥«¥ë¥Û¥¹¥È¾å¤Î¸°¤¬¾¡¼ê¤ËÊѹ¹¤µ¤ì¤Æ¤¤¤¿¤È¤·¤Þ¤·¤ç¤¦¡£

¤·¤«¤·¡¢cat ~/.ssh/id_rsa¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤¿¤È¤³¤í¤Ç¡¢

°ÊÁ°¤ÈÊѹ¹¤µ¤ì¤Æ¤¤¤¿¤«¤É¤¦¤«¡¢È½ÃǤǤ­¤ë¤Ç¤·¤ç¤¦¤«¡©

¸°¤Î¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ï¡¢µ­¹æ¤À¤é¤±¤Ç¤Û¤È¤ó¤É¤Î¿Í´Ö¤Ë¤È¤Ã¤Æ¤Ï

°ìÌܸ«¤¿¤À¤±¤Ç¤ÏÊѹ¹¤µ¤ì¤¿¤«¤É¤¦¤«¤¬È½ÃǤǤ­¤Þ¤»¤ó¡£

¤½¤³¤ÇƳÆþ¤µ¤ì¤¿¤Î¤¬¡¢¤³¤Î¡Örandomart¡×¤È¤¤¤¦»ÅÁȤߤǤ¹¡£

¸°¤ò¡Ö¿Í´Ö¤¬¤ß¤ä¤¹¤¤¤è¤¦¤Ëµ­¹æ³¨¿Þ¤Ë¤¹¤ë¡×¤³¤È¤Ë¤è¤Ã¤Æ¡¢

¤¢¤ëÆüÆÍÁ³¸°¤ÎÃæ¿È¤¬½ñ¤­´¹¤¨¤é¤ì¤¿¤È¤·¤Æ¤âȽÊ̤·¤ä¤¹¤¯¤¹¤ë¡×

¤³¤È¤òÌÜŪ¤È¤·¤Æ¤¤¤Þ¤¹¡£

¤Ê¤ª¡¢¤³¤Îrandomart¤ò¥í¥°¥¤¥ó»þ¤ËËè²óɽ¼¨¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢ÀßÄêÊѹ¹¤¬É¬ÍפǤ¹¡£

¥³¥Þ¥ó¥É¥é¥¤¥ó¤Çssh¤ò¼Â¹Ô¤¹¤ë¤¿¤Ó¤Ë-o VisualHostKey=yes¥ª¥×¥·¥ç¥ó¤òÉÕÍ¿¤¹¤ë¤«¡¢

~/.ssh/config¥Õ¥¡¥¤¥ë¤ËVisualHostKey=yes¤È¤¤¤¦¹Ô¤òÄɲ䷤Ƥ¯¤À¤µ¤¤¡£

¤Ê¤ª¡¢~/.ssh/config¥Õ¥¡¥¤¥ë¤ÏºîÀ®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£

¤½¤Î¾ì¹ç¤ÏŬµ¹¿·¤·¤¯ºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£ºîÀ®¤·¤ÆÊݸ¤¹¤ë¤ÈÀßÄê¤Ï¼«Æ°¤ÇÈ¿±Ç¤µ¤ì¤Þ¤¹¡£

¤½¤¦¤¹¤ë¤È¡¢Ëè²óssh¤Ç¥í¥°¥¤¥ó¤¹¤ë¤¿¤Ó¤Ërandomart¤¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

2. ¡Ê¥¯¥é¥¤¥¢¥ó¥È¦¢ª¥µ¡¼¥Ð¦¡Ë¸ø³«¸°¤ò¥³¥Ô¡¼¡¦¥µ¡¼¥Ð¦¤ËÀßÃÖ

¼¡¤Ë¡¢¥¯¥é¥¤¥¢¥ó¥È¦¤ÇÀ¸À®¤µ¤ì¤¿¸ø³«¸°¤ò¥µ¡¼¥Ð¦¤ËÀßÃÖ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¤³¤Î¼ê½ç¤Îή¤ì¤ÎÄêÀФϡ¢°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£

  1. scp¥³¥Þ¥ó¥É¤ò»È¤¤¥»¥­¥å¥¢¤Ë¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼
  2. ~/.ssh/authorized_keys¥Õ¥¡¥¤¥ë¤Ë¥³¥Ô¡¼¤·¤¿¸ø³«¸°¤ÎÆâÍÆ¤òÄɲÃ
  3. ¥í¥°¥¤¥ó

1. scp¥³¥Þ¥ó¥É¤ò»È¤¤¥»¥­¥å¥¢¤Ë¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼

¤Þ¤º¡¢¡Ö¥¯¥é¥¤¥¢¥ó¥È¦¤«¤é¥µ¡¼¥Ð¦¤Ë¸ø³«¸°¤ò¥³¥Ô¡¼¡×¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¤¬¡¢

¤É¤Î¤è¤¦¤Ë¥³¥Ô¡¼¤¹¤ì¤Ð¤¤¤¤¤Ç¤·¤ç¤¦¤«¡©¥á¡¼¥ë¤òÁ÷¤ë¤ï¤±¤Ë¤â¹Ô¤­¤Þ¤»¤ó¤·¡¢

¥³¥Ô¡¼¥Ú¡¼¥¹¥È¤Ç¤Ç¤­¤ë¤ï¤±¤Ç¤â¤¢¤ê¤Þ¤»¤ó¡£

¤³¤³¤Ç¤Ï¡¢scp¥³¥Þ¥ó¥É¤È¤¤¤¦¡¢SSH¥×¥í¥È¥³¥ë¤òÍѤ¤¤¿¥Õ¥¡¥¤¥ë¥³¥Ô¡¼¤Î¤¿¤á¤Î

¥³¥Þ¥ó¥É¤ò»È¤¤¤Þ¤¹¡£

# ¥¯¥é¥¤¥¢¥ó¥È¦¤Ç
# remote-user-name@server-address:~ ¤È¤Ï¡¢
# ¡Öremote-user-name¤È¤¤¤¦¥æ¡¼¥¶¡¼Ì¾¤Çserver-address¥µ¡¼¥Ð¤Ë¥í¥°¥¤¥ó¤·¡¢
# ¥Û¡¼¥à¥Ç¥£¥ì¥¯¥È¥ê¡Ê~¡Ë¤Ë³ºÅö¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼¤¹¤ë¡×¤È¤¤¤¦°ÕÌ£¤Ç¤¹¡£
$ scp ~/.ssh/id_rsa.pub remote-user-name@server-address:~

2. ~/.ssh/authorized_keys¥Õ¥¡¥¤¥ë¤Ë¥³¥Ô¡¼¤·¤¿¸ø³«¸°¤ÎÆâÍÆ¤òÄɲÃ

¥³¥Ô¡¼¤Ç¤­¤¿¤é¡¢¼¡¤Ï¥µ¡¼¥Ð¦¤Ç¤Îºî¶È¤Ç¤¹¡£

¤Þ¤º¤ÏSSH¥³¥Þ¥ó¥É¤Ç¥í¥°¥¤¥ó¤·¡¢¸ø³«¸°¤òÀßÃÖ¤·¤Æ¤¤¤­¤Þ¤¹¡£

# 2.1. SSH¥í¥°¥¤¥ó
$ ssh remote-user-name@server-address

# ¡Ê°Ê²¼½èÍý¤Ï¥µ¡¼¥Ð¦¡Ë
# 2.2. ¸ø³«¸°¤¬¥³¥Ô¡¼¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò³Îǧ
$ cd ~ && cat id_rsa.pub

# 2.3. ¡Ö.ssh¡×¥Ç¥£¥ì¥¯¥È¥ê¤òºîÀ®¡¦¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤òÊѹ¹
$ mkdir ~/.ssh
$ chmod 700 .ssh

# 2.4. ¡Ö~/.ssh/authorized_keys¡×¤òºîÀ®¡¦¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤òÊѹ¹
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

# 2.5. ¸ø³«¸°¤ò¡Ö~/.ssh/authorized_keys¡×¤ËÄɲÃ
# ¡Ê">>"¥ê¥À¥¤¥ì¥¯¥È¤Ç¡¢¾å½ñ¤­¤Ç¤Ï¤Ê¤¯¥Õ¥¡¥¤¥ëÆâÍÆ¤òÄɲä·¤Þ¤¹¡Ë
$ cat ~/id_rsa.pub >> .ssh/authorized_keys

3. ¥í¥°¥¤¥ó

ºÇ¸å¤Ë¡¢¸ø³«¸°Ç§¾Ú¤Ç¥í¥°¥¤¥ó¤Ç¤­¤ë¤³¤È¤ò³Îǧ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£

¤Þ¤º¤Ï¡¢¥µ¡¼¥Ð¦¤Ë¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢¥í¥°¥¢¥¦¥È¤·¤Þ¤¹¡£



¼¡¤Ë¡¢¥¯¥é¥¤¥¢¥ó¥È¦¤«¤éSSHǧ¾Ú¤Ç¥í¥°¥¤¥ó¤·¤Æ¤ß¤Þ¤¹¡£

# ¥Ñ¥¹¥ï¡¼¥Éǧ¾Ú¤Ç¤Ï¤Ê¤¯¸ø³«¸°Ç§¾Ú¤Ç¥í¥°¥¤¥ó¤Ç¤­¤ë¤³¤È¤ò³Îǧ
$ ssh remote-user-name@server-address

°Ê¾å¤¬SSHǧ¾Ú¤Î¤¿¤á¤Î½àÈ÷¤Ç¤¹¡£

¼Â¤Ï¡¢ssh-copy-id¤È¤¤¤¦ÊØÍø¤Ê¥³¥Þ¥ó¥É¤ò»È¤¦¤È¡¢

¥µ¡¼¥Ð¦¤Ø¤Îauthrorized_keys¤ÎºîÀ®¤ä¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ÎÀßÄê¤Ê¤É

¼«Æ°¤Ç¹Ô¤Ã¤Æ¤¯¤ì¡¢Èó¾ï¤ËÊØÍø¤Ç¤¹¡£

¤Ç¤¹¤¬¡¢»ÅÁȤߤòÃΤé¤Ê¤¤Êý¤Ï¡¢¤¼¤Ò¾å¤Î¼ê½ç¤Ç¤Ò¤È¤Ä¤Ò¤È¤Äºî¶È¤ò³Îǧ¤·¤Ê¤¬¤é

SSHǧ¾Ú¤Ë¤Ä¤¤¤ÆÍý²ò¤ò¿¼¤á¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡£

¤ª¤Þ¤±¡§SSH¥³¥Þ¥ó¥É´ØÏ¢µÕ°ú¥ì¥·¥Ô

# ¥³¥Þ¥ó¥É¤Î°ìÉô¤ò¾Êά¤·¤Æ¤¤¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹
# ¤Þ¤¿¡¢SSH¼þ¤ê¤Çºî¶È¤¹¤ë¤È¤­¤Ë»È¤¨¤ë¥³¥Þ¥ó¥É¤â¾Ò²ð¤·¤Æ¤¤¤Þ¤¹

# IP¥¢¥É¥ì¥¹¤ò³Îǧ¤¹¤ë
$ ifconfig

# ¸°¥Õ¥¡¥¤¥ë¡ÊIdentification¡Ë¤ò»ØÄꤷ¤Æ¥ê¥â¡¼¥È¥í¥°¥¤¥ó
$ ssh -i ~/.ssh/id_rsa.pub remote-user-name@XX.XX.XX.XX

# ¥Ç¥Ð¥Ã¥°¤¹¤ë¡Êverbose¥â¡¼¥É¤Ç¥í¥°¤ò½ÐÎϤ¹¤ë¡Ë
$ ssh -v -i ...



2018-09-23

¢£¤³¤Ó¤È³ô.com¤Î±¿±Ä¥á¥ó¥Ð¡¼ - ¤³¤Ó¤È³ô.com 14:59

<title>¤³¤Ó¤È³ô.com¤Î±¿±Ä¥á¥ó¥Ð¡¼ - ¤³¤Ó¤È³ô.com</title>

¤³¤Ó¤È³ô.com¤Î±¿±Ä¥á¥ó¥Ð¡¼

<header style="max-width: 100%;">

<figure style="max-width: 100%; font-size: 0.75em; line-height: 1.5em; font-family: -apple-system-font; color: rgba(0, 0, 0, 0.65098); margin: 1.4em 0px;">

</figure>

</header>

<section style="max-width: 100%;">

¤³¤Ó¤È³ô.com¤Ï¡¢¾å¾ì´ë¶È¤Î·ÐÍý¥Þ¥ó¤Ç¤¢¤ë¥·¡¼¥¦¥£¡¼¥É¤È¡¢Èà¤Ë´¬¤­¹þ¤Þ¤ì¤¿¸åÇÚ¤¿¤Á¤Ë¤è¤Ã¤Æ±¿±Ä¤µ¤ì¤Æ¤¤¤Þ¤¹¡£


¥·¡¼¥¦¥£¡¼¥É¡Ê´ÉÍý¿Í¡Ë

¤³¤Ó¤È³ô.com¤ÎÀßΩ¼Ô¡£

°ìÉô¾å¾ì´ë¶È¤ÎËܼҤÇ10ǯ´Ö¡¢·ÐÍý¡¿ºâ̳¿¦¤Ë½¢¤¤¤Æ¤¤¤ë²ñ·×¤ÎÀìÌç²È¡£

ÊÝÍ­»ñ³Ê¤Ê¤É

¼ñÌ£

  • ¥²¡¼¥à
  • ¹ñÆâ¡¦³¤³°Î¹¹Ô¡ÊÆÃ¤Ë¡¢ÅżÖι¡Ë
  • ¥É¥é¥¤¥Ö
  • »ñ³Ê¤ÎÊÙ¶¯
  • ÆÉ½ñ

²ÁÃʹѤˤĤ¤¤Æ¤´¾Ò²ð¤·¤Þ¤¹¡£

?¾®¤µ¤ÊÀ®¸ù¤ò¤«¤­½¸¤á¤Æ¡¢¼«Ê¬¤é¤·¤¤Êë¤é¤·¤ò³ð¤¨¤¿¤¤

¼ÒŤòÌܻؤ¹¤È¤«¡¢²¯ËüĹ¼Ô¤ÎÅê»ñ²È¤òÌܻؤ¹¤È¤«¡¢¤½¤¦¤¤¤¦·×²è¤Ï¤¢¤ê¤Þ¤»¤ó¡££´¤Ä¤ÎºâÉÛ¤ò¥Ð¥é¥ó¥¹¤è¤¯°é¤Æ¤¿¤¤¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£

?¥µ¥é¥ê¡¼¥Þ¥ó¤ÇÂçÀ®¸ù¢ªÌµÍý
?³ô¼°Åê»ñ¤ÇÂçÀ®¸ù¢ªÌµÍý
?ÉÔÆ°»ºÅê»ñ¤ÇÂçÀ®¸ù¢ªÌµÍý
?¥µ¥¤¥È±¿±Ä¤ÇÂçÀ®¸ù¢ªÌµÍý

¤³¤¦¤¤¤¦¼«Ê¬¤Î¸ÇÄê´Ñǰ¤Ë¹³¤¨¤º¤Ë¤­¤Æ¤ë¤ó¤Ç¤¹¤¬¡¢¤½¤ì¤¾¤ì¤ÎʬÌî¤ÇÌÜΩ¤¿¤º¤³¤Ã¤½¤ê¾¯³Û¤º¤Ä²Ô¤¤¤Ç¡¢¡Ø¤«¤­½¸¤á¤Æ¤ß¤¿¤é¤Ê¤«¤Ê¤«°­¤¯¤Ê¤¤¡Ù¤Ï²Äǽ¤Êµ¤¤¬¤·¤Æ¤¤¤Þ¤¹¡£

— ¤³¤Ó¤È³ô.com (@kobito_kabu)








<time datetime="2017-07-16T13:34:58+0000" pubdate="" style="max-width: 100%;" title="Åê¹Æ»þ¹ï: 2017ǯ7·î16Æü 13:34:58 (UTC)">22:34 - 2017ǯ7·î16Æü</time>

40ºÐ¤Ç¤³¤Î·×²è¡£Ç¯Îð¤ò½Å¤Í¤ì¤Ð½Å¤Í¤ë¤Û¤É¡¢³ÆÊ¬Ìî¤Î¶â³Û¤ÏÁý¤¨¤Æ¤¤¤­¤Þ¤¹¡£¤¤¤¤¤Ç¤¹¤Í¡Á¡ª

³ÆÊ¬Ìî¤Ç¤Î¼ýÆþ¤Î°é¤ÆÊý¤Ï¼¡¤Îµ­»ö¤ò¤´»²¹Í¤Ë¡£

?£³¤Ä¤Î»ñËܤò°é¤ÆÂ³¤±¤Æ¡¢¾®¤µ¤ÊÀ®Ä¹¥¹¥Ñ¥¤¥é¥ë¤Î¤Ê¤«¤ÇÊë¤é¤·¤¿¤¤

¡»¡»ºÐ¤Ç¥ê¥¿¥¤¥¢¤·¤Æ¤Î¤ó¤Ó¤êÊë¤é¤·¤¿¤¤¡ª¤È¤¤¤¦´ê˾¤Ï¤¢¤ê¤Þ¤»¤ó¡£¿ÍŪ»ñËܤò¼º¤¦¤«¤é¤Ç¤¹¡£»ý³²Äǽ¤ÊȯŸ¤òµá¤á¤Æ¤¤¤Þ¤¹¡£¹ÓÇȤˤâ¤Þ¤ì³¤±¤ëÊѲ½¤Î·ã¤·¤¤¿ÍÀ¸¤Ï¤Á¤ç¤Ã¤È±óθ¤·¤Þ¤¹£÷

£³¤Ä¤Î»ñËܤȤϡ¢

¤Î¤³¤È¤ò¸À¤¤¤Þ¤¹¡£¹¬Ê¡¤Ë¤Ê¤ë¤Ë¤Ï¡¢¤³¤Î£³¤Ä¤Î»ñËܤò¥Ð¥é¥ó¥¹¤è¤¯°é¤Æ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

ͭ̾¤Êºî²È¡¢µÌÎè¡Ê¤¢¤­¤é¡Ë»á¤Î¡Ö¹¬Ê¡¤Î»ñËÜÏÀ¡×¤òÆÉ¤à¤È¡¢Ç¯¼ý¤¬¹â¤¤¤Î¤Ë¹¬¤»¤Ë¤Ê¤ì¤Ê¤¤¡¢»ñ»º²È¤Ê¤Î¤Ë¹¬¤»¤Ë¤Ê¤ì¤Ê¤¤Íýͳ¤¬Îɤ¯Ê¬¤«¤ê¤Þ¤¹¡£

¤³¤Ó¤È³ô.com¥á¥ó¥Ð¡¼¤Ï¡¢

  • ¼ýÆþ¤òʬ»¶¤·¡Ê£´¤Ä¤ÎºâÉÛ¤òºî¤ë¡Ë
  • »ñËܤòʬ»¶¤·¡Ê£³¤Ä¤Î»ñËܤò°é¤Æ¤ë¡Ë

¼«Ê¬¤é¤·¤¤³Ú¤·¤¤À¸³è¤òÁ÷¤ê¤¿¤¤¤È¹Í¤¨¤Æ¤¤¤Þ¤¹¡£

?ÇÛÅö¶â¤ä¥µ¥¤¥È¼ýÆþ¤Ï¡¢¤¹¤Ù¤ÆÀ¸³è¤òË­¤«¤Ë¤¹¤ë¤¿¤á¤Ë»È¤¦

³ô¼°Åê»ñ¤Î¥¹¥¿¥¤¥ë¤Ï¡¢¹âÇÛÅö³ô¤ÎĹ´ü¥Û¡¼¥ë¥É¤Ç¤¹¡£³ô¼°Åê»ñ¤ò»Ï¤á¤Æ¤«¤é¿ôǯ´Ö¡¢³ô¼°¤ò°ìÅÙ¤âÇä¤Ã¤¿¤³¤È¤¬¤¢¤ê¤Þ¤»¤ó¡£ËèǯËèǯ¡¢ÇÛÅö¶â¤ÏÁý¤¨Â³¤±¤Æ¤¤¤Þ¤¹¡£

Ëèǯ5¡Á10Ëü±ß¤Û¤ÉÇÛÅö¶â¤¬Áý¤¨¤Æ¤¤¤­¤Þ¤¹¤«¤é¡¢50ºÐ¤ò²á¤®¤¿¤¢¤¿¤ê¤ÇÇÛÅö¶â¤À¤±¤Çǯ³Û240Ëü±ß¤Î¥­¥ã¥Ã¥·¥å¥Õ¥í¡¼¤Ë¤Ê¤ë¤Ç¤·¤ç¤¦¡¢

2018ǯ7·î¸½ºß¡¢¤³¤Î¥µ¥¤¥È¤Ï·î´Ö12ËüPV¡¢·î³Û¼ýÆþ20Ëü±ßÄøÅ٤ˤʤäƤ¤¤Þ¤¹¡£ºÇ½ªÅª¤Ë¤Ï¡¢¤³¤Î¥µ¥¤¥ÈñÂΤǡ¢Ç¯´ÖÇä¾å300Ëü±ß¤òÌܻؤ·¤Æ¤¤¤Þ¤¹¡£·î³Û25Ëü±ß¤Ç¤¹¡£

¤³¤ì¤é¤Ï¤¹¤Ù¤Æ¼ñÌ£¤Ë½¼¤Æ¡¢À¸³è¤òË­¤«¤Ë¤¹¤ë¤¿¤á¤Ë»È¤¤¤Þ¤¹¡£¤¿¤¯¤µ¤ó¤Î³Ú¤·¤¤·Ð¸³¤ò¤·¤Ê¤¬¤é¡¢¼ñÌ£Ãç´Ö¤òÁý¤ä¤·¤Æ¤¤¤­¤¿¤¤¤Ç¤¹¤Í¡ª

¤Þ¤È¤á¡§£´¤Ä¤ÎºâÉÛ¡õ£³¤Ä¤Î»ñËܤò°é¤Æ¤Ê¤¬¤é¡¢¼«Ê¬¤é¤·¤¤À¸³è¤ò¼Â¸½¤¹¤ë

¤³¤¦¤¤¤¦²ÁÃÍ´Ñ¤Ç³èÆ°¤·¤Æ¤¤¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

¼ýÆþ¤ò£´¤Ä¤Ëʬ»¶¤·¡¢²ñ¼Ò¤À¤±¤Ë°Í¸¤¹¤ëŵ·¿Åª¤Ê¥µ¥é¥ê¡¼¥Þ¥ó¤Î¥â¥Ç¥ë¤«¤éæµÑ¤·¤Þ¤¹¡£

  1. µëÍ¿
  2. ÇÛÅö
  3. ÉÔÆ°»º
  4. »ö¶È

Ʊ»þ¤Ë¡¢£³¤Ä¤Î»ñËܤò¥Ð¥é¥ó¥¹¤è¤¯°é¤Æ¤Æ¡¢¶¯¸Ç¤Ê¿ÍÀ¸´ðÈפòÃÛ¤­¤Þ¤¹¡£

  1. ¿ÍŪ»ñËܡʼ«Ê¬¤Î¶ÐÏ«¤ò¶âÁ¬¤ËÊѤ¨¤ëÎÏ¡Ë
  2. ¶âÍ»»ñËܡʳô¼°¡¢ÉÔÆ°»º¡Ë
  3. ¼Ò²ñ»ñËܡʲȲ¡¢Í§¿Í¡¢Æ±Î½¡¢¼ñÌ£Ãç´Ö¤È¤Îå«¡Ë

»ä¤Ë¤È¤Ã¤Æ¡¢¤³¤Î¥µ¥¤¥È¡Ê¤³¤Ó¤È³ô.com¡Ë¤ÎÌò³ä¤Ï¡¢¡Ö¥µ¥¤¥È¼ýÆþ¤òÆÀ¤ë¤³¤È¡×¤È¡Ö»Ö¤òƱ¤¸¤¯¤¹¤ë¿Íã¤È¤Î·Ò¤¬¤ê¤òÆÀ¤ë¤³¤È¡×¤Ç¤¹¡£

ÆÃ¤Ë¡¢¼ã¤¤¿Íã¤È¤Î·Ò¤¬¤ê¤òºî¤ê¤¿¤¤¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£¤Ê¤¼¤Ê¤é¡¢Ä¶¾¯»Ò¹âÎ𲽡¦¿Í¸ý¸º¤ÎÆüËܤˤª¤¤¤Æ¡¢¶âÍ»¥ê¥Æ¥é¥·¡¼¤ò¹â¤á¤ë¤³¤È¤Ï¤â¤Ï¤äɬ¿Ü¤À¤«¤é¤Ç¤¹¡£Àè¤Û¤É¾Ò²ð¤·¤¿µÌ»á¤â¡¢¤³¤Î¤è¤¦¤Ë¸À¤Ã¤Æ¤¤¤Þ¤¹¡£

¥µ¥é¥ê¡¼¥Þ¥ó¤¬¿·Â´¤«¤é¤Ò¤È¤Ä¤Î²ñ¼Ò¤ËÄêǯ¤Þ¤Ç¶Ð¤á¤Æ¡¢Â࿦¶â¤Èǯ¶â¤Çͪ¡¹¼«Å¬¤ÇÊë¤é¤¹¤È¤«¡¢ºÊ¤¬²È»ö¤È»Ò°é¤Æ¤ËÀìǰ¤·¤Æ¡¢ÉפÎǯ¶â¤À¤±¤ÇÏ·¸å¤ò°Â¿´¤·¤ÆÊë¤é¤»¤ë¤È¤«¡¢¤½¤¦¤¤¤¦¹âÅÙÀ®Ä¹´ü¤Î¥é¥¤¥Õ¥¹¥¿¥¤¥ë¤Ï´°Á´¤Ë¹Ô¤­µÍ¤Þ¤ê¤Þ¤·¤¿¡£

— µÌ¡¡Îè (@ak_tch)








<time datetime="2017-12-29T09:29:41+0000" pubdate="" style="max-width: 100%;" title="Åê¹Æ»þ¹ï: 2017ǯ12·î29Æü 9:29:41 (UTC)">18:29 - 2017ǯ12·î29Æü</time>

¤³¤Ó¤È³ô.com¥á¥ó¥Ð¡¼¤Ï¡¢£´¿ÍÁ´°÷¤¬¡Ö30ºÐ¤Ç1,000Ëü±ß¤Î±¿ÍÑ»ñ»º¡×¤òÃÛ¤¯¤³¤È¤ËÀ®¸ù¤·¤Æ¤¤¤Þ¤¹¡£ÂçÀ®¸ù¤À¤È¼«Ëý¤Ç¤­¤ë¤Û¤É¤Î¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

¤½¤ì¤Ç¤â»ä¤¿¤Á¤¬»ý¤Ä¥Î¥¦¥Ï¥¦¤Ï¡¢Â¿¤¯¤Î°ìÈÌŪ¤Ê¥µ¥é¥ê¡¼¥Þ¥ó¤Ë¤È¤Ã¤Æ¤Ï½½Ê¬Ìò¤ËΩ¤Ä¤â¤Î¤Ç¤·¤ç¤¦¡£Âç³ØÀ¸¤ä¿·Â´¡¦ÂèÆó¿·Â´¤ÎÊý¤Ç¡¢»ñ»º±¿ÍѤ˶½Ì£¤Î¤¢¤ëÊý¤Î¥µ¥Ý¡¼¥È¤ò¤·¤Æ¤¤¤±¤¿¤é´ò¤·¤¤¤Ê¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£

¼ã¤¤¿Í¤¿¤Á¤ÎÌò¤ËΩ¤Ä¾ðÊó¤òȯ¿®¤·¤Æ¤¤¤±¤ë¤è¤¦¡¢¥µ¥¤¥È±¿±Ä¤ò´èÄ¥¤Ã¤Æ¤¤¤­¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

¤É¤¦¤¾¡¢¤³¤Ó¤È³ô.com¤ò¤è¤í¤·¤¯¤ª´ê¤¤¤·¤Þ¤¹¡ª

¥Õ¥ë¡¼¥Ä¡ÊÊÔ½¸¥á¥ó¥Ð¡¼¡Ë

<figure class="auxiliary float left" style="width: 18%; max-width: 100%; display: block; clear: both; font-size: 0.75em; line-height: 1.4em; text-align: start; font-family: -apple-system-font; color: rgba(0, 0, 0, 0.65098); margin: 1.4em 0px; float: none;"><figcaption style="max-width: 100%; width: 100%; -webkit-margin-start: 0px; margin-top: 0.5em; margin-bottom: 0.5em; font-size: 0.75rem; color: rgba(0, 0, 0, 0.8);">¥Õ¥ë¡¼¥Ä</figcaption></figure>

¥·¡¼¥¦¥£¡¼¥É¤Î¿¦¾ì¤Î¸åÇÚ3̾¤ÎÁí¾Î¡£ÉÔ±¿¤Ë¤âÆü¾¦Êíµ­1µé¤ÈË­É٤ʳ«¼¨¼Â̳·Ð¸³¤òÍ­¤·¤Æ¤·¤Þ¤Ã¤¿¤¬¤¿¤á¤Ë¡¢¡Ö¤³¤Ó¤È³ô¡×¤Î¸¦µæ¥á¥ó¥Ð¡¼¤Ë²ÃÆþ¤µ¤»¤é¤ì¤¿¡£

Á´°÷¤Ç¾ðÊ󡦰ո«¸ò´¹¤·¤Ê¤¬¤é¡¢¥¤¥ó¥«¥à¥²¥¤¥ó³ÈÂç¤Î¤¿¤á¤ÎĹ´üÅê»ñ¤ò¼ÂÁ©Ãæ¡£3¿Í¤È¤â¡Ö30ºÐ¤Ç1,000Ëü±ß¡×¤Î±¿ÍÑ»ñ»º¤òãÀ®¤·¤¿·ø¼ÂÇÉ¡£Ã»´ü¥È¥ì¡¼¥É¤Ç¤Ï¤Ê¤¯¡¢·ø¼Â¤Ê²È·×´ÉÍý¡¦Åê»ñ¥¹¥¿¥¤¥ë¤Ç»ñ»º¤òÃå¼Â¤ËÁý¤ä¤·¤Æ¤¤¤ë¡£

¤Ê¤ª¡¢¤³¤Ó¤È³ô.com¤Îµ­»ö¤ò½ñ¤¤¤Æ¤ë¥Õ¥ë¡¼¥Ä¤Ï°ì¿Í¡Ê¡ê¡Ë¤À¤±¡£¥·¡¼¤µ¤ó¤ÎÊÒÏӤȤ·¤Æ¡¢½÷À­¤Ê¤é¤Ç¤Ï¤Î»ëÅÀ¤òÀ¸¤«¤·¤¿µ­»ö¤ò¼¹É®¤·¤Æ¤¤¤Þ¤¹¡£

<figure class="auxiliary float left" style="width: 18%; max-width: 100%; display: block; clear: both; font-size: 0.75em; line-height: 1.4em; text-align: start; font-family: -apple-system-font; color: rgba(0, 0, 0, 0.65098); margin: 1.4em 0px; float: none;"><figcaption style="max-width: 100%; width: 100%; -webkit-margin-start: 0px; margin-top: 0.5em; margin-bottom: 0.5em; font-size: 0.75rem; color: rgba(0, 0, 0, 0.8);">¥Õ¥ë¡¼¥Ä</figcaption></figure>

</section>


¢£ÉÔ¶þ¤ÎÀº¿À¤Ç·î20Ëü±ß¤ÎÉû¼ýÆþ¤ò°é¤Æ¤ë¤È¡¢·î20Ëü±ß¤Î¼ýÆþ¤ò¼º¤¦ÏáڤĤ餤¡Û - ¤³¤Ó¤È³ô.com 14:55

<title>ÉÔ¶þ¤ÎÀº¿À¤Ç·î20Ëü±ß¤ÎÉû¼ýÆþ¤ò°é¤Æ¤ë¤È¡¢·î20Ëü±ß¤Î¼ýÆþ¤ò¼º¤¦ÏáڤĤ餤¡Û - ¤³¤Ó¤È³ô.com</title>

ÉÔ¶þ¤ÎÀº¿À¤Ç·î20Ëü±ß¤ÎÉû¼ýÆþ¤ò°é¤Æ¤ë¤È¡¢·î20Ëü±ß¤Î¼ýÆþ¤ò¼º¤¦ÏáڤĤ餤¡Û

<header style="max-width: 100%;">




<figure style="max-width: 100%; font-size: 0.75em; line-height: 1.5em; font-family: -apple-system-font; color: rgba(0, 0, 0, 0.65098); margin: 1.4em 0px;">

</figure>

</header>




<section style="max-width: 100%;">


¤³¤ó¤Ë¤Á¤Ï¡¢¥·¡¼¥¦¥£¡¼¥É¡÷¤³¤Ó¤È¤¬¸«¤¨¤ë·ÐÍý¥Þ¥ó¤Ç¤¹¡£

40ºÐ¤Þ¤Ç¤Ë¡¢µëÍ¿°Ê³°¤Ë·î20Ëü±ß¤Î¼ýÆþ¤òºî¤ë¡ª¤È¤¤¤¦¥³¥ó¥»¥×¥È¤Î¤â¤È¡¢ÆüÌë³èư¤ËÎå¤ó¤Ç¤ª¤ê¤Þ¤¹¡£

  • ÇÛÅö¶â¡¡·î£µËü±ß¡ÊÀǰú¸å¡Ë
  • ÉÔÆ°»º¡¡·î£µËü±ß¡ÊÀǶ⡢·ÐÈñ¹Íθ¸å¤Î¼ê¼è¤ê¡Ë
  • ¥µ¥¤¥È¡¡·î£±£°Ëü±ß

ǯ´Ö¤Ç240Ëü±ß¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì¤Ë¥×¥é¥¹¤·¤Æ·î10Ëüʬ¤°¤é¤¤Æ¯¤±¤Ð¡¢²È²£²¿Í¤Ê¤é½½Ê¬¤ËÊë¤é¤»¤ë¤Ç¤·¤ç¤¦¡£»Ò¶¡¤¬¤¤¤Æ¤â¡¢ºÊ¤¬·î10Ëü±ß²Ô¤²¤ÐÁ´Á³OK¤Ç¤¹¡£Ì´¤Î½µ£²¡Á£³Ï«Æ¯¤À¡ª

ºÇ¶á¤Ç¤Ï¶âÍ»»ñËܤÎÃßÀÑ¡áÇÛÅö¶â¤Î¿­¤Ó¤¬½çÄ´¤Ê¤Î¤Ç¡¢40ºÐ»þÅÀ¤Ç·î10Ëü±ß¤°¤é¤¤¤ÎÇÛÅö¤ËÅþ㤷¤½¤¦¤Ê´¶¤¸¤Ç¤¹¡£

¥µ¥¤¥È¼ýÆþ¤Ë´Ø¤·¤Æ¤Ï¡¢¸½»þÅÀ¤Ç·î15¡Á20Ëü±ß¤°¤é¤¤¤Î¼ý±×¤¬¤¢¤ë¤Î¤Ç¤â¤¦¥´¡¼¥ë¤·¤Æ¤Þ¤¹¤Í¡£¤¢¤È¤Ï¤³¤ì¤ò¤¤¤«¤ËŤ¯°ÂÄꤵ¤»¤Æ¥­¡¼¥×¤¹¤ë¤«¡£

¤³¤Î¥Ö¥í¥°¤ò³«Àߤ·¤¿2016ǯ10·î»þÅÀ¤ÈÈæ³Ó¤¹¤ë¤È¡¢£²Ç¯¤Ç¤º¤¤¤Ö¤ó¤È·×²è¤¬¿ÊĽ¤·¤¿¤è¤¦¤Ë»×¤¤¤Þ¤¹¡£¤¤¤¿¤Ã¤Æ½çÄ´¡ª²¿»ö¤â¤ä¤Ã¤Æ¤ß¤ë¤â¤Î¤Ç¤¹¤Í¡£

¤È¤³¤í¤¬¡£

Îɤ¤¤³¤È¤¬¤¢¤ì¤Ð¡¢°­¤¤¤³¤È¤â¤¢¤ë¤Î¤¬À¤¤Î¾ï¤Ç¤¹¡£

½çÄ´¤Ë°é¤ÄÉû¼ýÆþ¤ò²£Ìܤˡ¢ºÊ¤Á¤ã¤ó¤¬¤³¤ó¤Ê¤³¤È¤ò¸À¤¤»Ï¤á¤Þ¤·¤¿¡£

ºÊ¡Ö·î20Ëü±ß¤ÎÉû¼ýÆþ¤¬¤Ç¤­¤¿¤é¡¢»ä¤Ï¤â¤¦Æ¯¤«¤Ê¤¯¤ÆÎɤ¯¤Ê¤ë¤Í¢ö¡×


¤Á¤ç¤Ã¤ÈÂԤäƤ¤¤¿¤À¤­¤¿¤¤¡£You¤¬Æ¯¤«¤Ê¤¯¤Ê¤ë¤È¡¢Me¤Ï¥Õ¥ë¥¿¥¤¥à¤ÇƯ¤­Â³¤±¤Ê¤­¤ã¤¤¤±¤Ê¤¤²ÄǽÀ­¤¬¤¢¤ë¤ó¤Ç¤¹¤¬¡©

ºÊ¡Ö»ä¤Î·îµë¤Ï¼ê¼è¤ê20Ëü±ß¤°¤é¤¤¤À¤«¤é¡¼¡¢·î20Ëü±ß¤ÎÇÛÅö¡¦¥Ö¥í¥°¼ý±×¤¬¤Ç¤­¤ì¤Ð¥×¥é¥Þ¥¤¥¼¥í¤À¤è¡ª¡×



ºÊ¡ÖÁ᤯Éû¼ýÆþ¤¬20Ëü±ß¤Ë¤Ê¤ë¤È¤¤¤¤¤Ê¡¼¡£¥À¥é¥À¥é²á¤´¤·¤¿¤Ê¡¼¢ö¡×

¥À¥á¤ÀÏä¬Ä̤¸¤Ê¤¤¡Ä

ºÇ¶á¡¢½ãÀµ¤Î¥À¥á¾å»Ê¤¬°Ûư¤·¤Æ¤­¤¿¤é¤·¤¯¡¢Ï«Æ¯°ÕÍߤòÃø¤·¤¯ºï¤¬¤ì¤Æ¤¤¤ë¤è¤¦¤Ç¤¹¡£

¥ê¥¿¥¤¥¢¤òÌ´¸«»Ï¤á¤¿ºÊ¡£¤³¤¦¤Ê¤ë¤È¡¢¸½¼Â¤ÎÀ¤³¦¤ËÏ¢¤ìÌ᤹¤Î¤ÏÊÂÂçÄñ¤ÎÅØÎϤǤÏÉÔ²Äǽ¤Ç¤¹¡£

¤¢¤¡¡¢¤·¤Ã¤«¤ê¤ÈµÄ»öÏ¿¤ò¤È¤Ã¤Æ¤ª¤¯¤Ù¤­¤À¤Ã¤¿¡Ä

  • ¤Ê¤¼»ä¤¬¤³¤Î¤è¤¦¤Ê¼è¤êÁȤߡʣ´¤Ä¤ÎºâÉ۷ײè¡Ë¤ò»Ï¤á¤¿¤«¡©
  • »ä¤¿¤Á¥Õ¥¡¥ß¥ê¡¼¤Ï¤É¤³¤«¤é¤­¤Æ¡¢¤É¤³¤Ø¤æ¤¯¤Î¤«¡©

¼«Í³¤Ø¤È¸þ¤±¤¿»ä¤Î¼è¤êÁȤߤϡ¢º£¤ä¡ÖºÊ¤òϫƯ¤«¤é²òÊü¤¹¤ë¤¿¤á¡×¤Î¿ò¹â¤ÊÀ襤¤Ø¤È·Á¤òÊѤ¨¤Æ¤·¤Þ¤Ã¤¿¤è¤¦¤Ç¤¹¡£

¤¨¡¢¤³¤ì¤µ¤¡¡£·î20Ëü±ß¤ÎÉû¼ýÆþ¤ò°é¤Æ¤ë¡áºÊ¤Î·îµë20Ëü±ß¤¬¤Ê¤¯¤Ê¤ë¤Ê¤é¡¢ËͤδèÄ¥¤ê°ÕÌ£¤Ê¤¯¤Ê¤¯¤Ê¤¯¤Ê¤¤¡©²¿¤â¤·¤Ê¤¤¤Î¤¬Àµ²ò¤¸¤ã¤Ê¤¤¤«¡ª

¤³¤ì¤ò¡ÖÀ¤ÂÓǯ¼ýÊݸ¤Îˡ§¡×¤È¸À¤¤¤Þ¤¹¡£

¤È¤ê¤¢¤¨¤º¡¢º£ÈÕ¡¢¥±¡¼¥­¤òÇã¤Ã¤Æµ¢¤Ã¤Æ¸ª¤òÙæ¤ß¤Ê¤¬¤é¥Í¥´¥·¥¨¡¼¥·¥ç¥ó¤ò¤·¤è¤¦¤È»×¤¤¤Þ¤¹¡£

É餱¤Ê¤¤¤è¡ª

¤â¤·¥Ö¥í¥°¤Î¹¹¿·¤¬»ß¤Þ¤Ã¤¿¤é¡¢¤Ä¤Þ¤ê¤½¤¦¤¤¤¦¤³¤È¤Ç¤¹¡£

¤½¤ì¤Ç¤Ï¤Þ¤¿¤Ã¡ª


</section>













2018-09-22

¢£¡Ø¤ª¶â¤ÎPDCA¡Ù¤òÆÉ¤ó¤Ç¡¢Â®¹¶¤Ç¼è¤êÁȤó¤À¤³¤È¤Î¾ÜºÙÊó¹ð - toricago 00:37

<title>¡Ø¤ª¶â¤ÎPDCA¡Ù¤òÆÉ¤ó¤Ç¡¢Â®¹¶¤Ç¼è¤êÁȤó¤À¤³¤È¤Î¾ÜºÙÊó¹ð - toricago</title>

¡Ø¤ª¶â¤ÎPDCA¡Ù¤òÆÉ¤ó¤Ç¡¢Â®¹¶¤Ç¼è¤êÁȤó¤À¤³¤È¤Î¾ÜºÙÊó¹ð

¡Ø²Ô¤°¿Í¤¬¼ÂÁ©¤·¤Æ¤¤¤ë ¤ª¶â¤ÎPDCA¡Ù¤òÆÉ¤ó¤À¡£¤³¤ÎËÜ¡¢¤Ê¤ó¤ÈÃø¼Ô¤¬¤¢¤Î¥Ï¥¤¥Ñ¡¼¥Ù¥¹¥È¥»¥é¡¼Ëܡص´Â®PDCA¡Ù¤ÎÉÚÅÄÏÂÀ®¤µ¤ó¤Ç¤¢¤ë¡£¡Øµ´Â®PDCA¡Ù¤Ë¤Ä¤¤¤Æ¤Ï¤³¤Î¥Ö¥í¥°¤Ç¤â¿ô¡¹¤ÎÂθ³µ­¤òÅê¹Æ¤·¤Æ¤­¤¿¡£º£¤Ç¤â¡Øµ´Â®PDCA¡Ù¤Îήµ·¤Ë§¤ê¡¢ËèÆü´Ê°×¤Ê¿¶¤êÊÖ¤ê¤ò¹Ô¤¤¡¢ÅÚÍËÆü¤ÎÁáÄ«¤Ë¤Ï£±»þ´ÖͽÄê¤ò¥Ö¥í¥Ã¥¯¤·¤Æ¡¢¥Ç¥£¡¼¥×¤Ê¿¶¤êÊÖ¤ê¤ò¹Ô¤Ã¤Æ¤¤¤ë¡£È¯Çäľ¸å¤«¤é¡Øµ´Â®PDCA¡Ù¤ÎÆâÍÆ¤ò¼ÂÁ©¤·¡¢È¾Ç¯¸å¡¢£±Ç¯¸å¤Î·Ð²á¤â¥Ö¥í¥°¤ÇÊó¹ð¤·¤Æ¤­¤¿¡£

¤µ¤é¤Ë¤Ï¡Øµ´Â®PDCA¡Ù¤Ç¾Ò²ð¤µ¤ì¤Æ¤¤¤¿¡Ö¤Ê¤ë¤Û¤É¥·¡¼¥È¡×¤ò¥Ù¡¼¥¹¤Ë¤·¤¿¡Ö¤Ê¤ë¤Û¤É¶¦Í­²ñ¡×¤òΩ¤Á¾å¤²¡¢Åö½é¤ÎNaruhodo Sheets¡ÊGoogle sheets¾å¡Ë¤Ï¸å¤ËNaruhodo Plus¡ÊGoogle Plus¾å¡Ë¤Ë¿Ê²½¤ò¿ë¤²¡¢¤µ¤é¤Ë¸½ºß¤ÏNaruhodo Server¡ÊDiscord Server¾å¡Ë¤Ø¤È·Á¤òÊѤ¨¥ì¥Ù¥ë¤ò¾å¤²¤Æ¤¤¤ë¡£Naruhodo Server¤Î¥á¥ó¥Ð¡¼¤¿¤Á¤Ï¥é¥¤¥Õ¥Ï¥Ã¥¯¹¥¤­¤ÊÊý¡¹¤Ð¤«¤ê¤Ç¡¢¥á¥ó¥Ð¡¼¤«¤é³Ø¤Ö¤³¤È¤¬Â¿¤¤ËèÆü¤ò²á¤´¤·¤Æ¤¤¤ë¡£¤½¤·¤Æ»ä¼«¿È¤âËèÆü¡Ö¤Ê¤ë¤Û¤É¡×¤È»×¤¦¤³¤È¤ò£²Ç¯¶á¤¯Åê¹Æ¤·Â³¤±¤Æ¤­¤¿¡£

¤Á¤Ê¤ß¤Ëº£¤Þ¤Ç¤Î¥Ö¥í¥°¾å¤Ç¤Î¡Øµ´Â®PDCA¡Ù´ØÏ¢¤Îµ­»ö¤Ï¤¹¤Ù¤Æ¼¡¤Îµ­»ö¤Ë¤Þ¤È¤á¤¿¡£

¤³¤Î¤è¤¦¤Ë»ä¤Ï¡Øµ´Â®PDCA¡Ù¤Ë¤Ï¤À¤¤¤Ö¤ªÀ¤Ïäˤʤ俤Τǡ¢¤½¤Î¡Ö¤ª¶âÈǡפȤâ¸À¤¨¤ë¡Ø¤ª¶â¤ÎPDCA¡Ù¤¬½Ð¤¿¤ÈÃΤêÁá®ÆÉ¤ó¤Ç¤ß¤¿¡£¼Â¤Ï£µ·îȯÇä¤ÎËܤǡ¢¿ïʬ¤ÈÁ°¤ËÆÉ¤ó¤Ç¤¤¤¿¤Î¤À¤¬¡¢ºÇ¶á¤Ë¤Ê¤Ã¤Æ¤è¤¦¤ä¤¯¼è¤êÁȤ߻Ϥá¤ë¤³¤È¤¬½ÐÍ褿¡£¿ô¥ö·î´ÖÊüÃÖ¤·¤Æ¤¤¤¿¤³¤È¤Ë¤Ê¤ê¡¢Á´Á³¡Öµ´Â®¡×¤¸¤ã¤Ê¤¯¤ÆÃѤº¤«¤·¤¤¾Ð¡£¤½¤ì¤Ï¾¤ÎKGI/KPI/KDI¤ò²ó¤·¤Æ¤¤¤¿¤È¤¤¤¦¤³¤È¤ÇÂçÌܤ˸«¤Æ¤Û¤·¤¤¡Ä¾Ð¡£

¤È¤¤¤¦¤³¤È¤Ç¡¢¤³¤ì¤«¤é¥Ö¥í¥°¤Ç¤â¡Ø¤ª¶â¤ÎPDCA¡Ù¤Ë¤Ä¤¤¤Æ¾¯¤·¤º¤ÄÂθ³µ­¤Î¤è¤¦¤Ê¤â¤Î¤òÅê¹Æ¤·¤Æ¤¤¤­¤¿¤¤¤È»×¤Ã¤Æ¤¤¤ë¡£¤Þ¤º¤Ï¥¢¥Þ¥¾¥ó¤Î¾Ò²ðʸ¾Ï¤ò°úÍѤ·¤Æ¤ß¤ë¡£

PDCA¤ÇºÇÂç¤Î²ÝÂ꡽¡½¡Ö¤ª¶â¡×¤òư¤«¤¹!

¤ª¶â¤Ë¤Ä¤¤¤ÆµÞ·ã¤Ë¹Ôư¤ä¥Þ¥¤¥ó¥É¤¬ÊѤï¤Ã¤Æ¤­¤Æ¤¤¤Þ¤¹¡£

¥¯¥é¥¦¥É¥Õ¥¡¥ó¥Ç¥£¥ó¥°¡¢Ì±Çñ¡¢¥«¡¼¥·¥§¥¢¥ê¥ó¥°¡¢¥¹¥­¥ë¥·¥§¥¢¤Ê¤É¡¢¤ª¶â¤òÀ¸¤ß½Ð¤¹ÁªÂò»è¤¬¹­¤¬¤Ã¤¿¤³¤È¤Ç¡¢¤ª¶â¤Î¤³¤È¤ò¿¿·õ¤Ë¹Í¤¨¡¢¹Ôư¤·¤¿¤³¤È¤Ë¤è¤ë¥ê¥¿¡¼¥ó¤Î²ÄǽÀ­¤ÏÃʰ㤤¤ËÂ礭¤¯¤Ê¤ê¤Þ¤·¤¿¡£

¿ÍÀ¸100ǯ»þÂå¤ÎÃæ¡¢¤³¤ÎÊѲ½¤ÎÇȤ˾è¤Ã¤Æ°ìµ¤¤ËÁ°¿Ê¤¹¤ë¤Î¤â¡¢¤½¤ÎÇȤ˲¡¤·Î®¤µ¤ì¤Æ¤·¤Þ¤¦¤Î¤â¡¢ÇȤ˾è¤é¤º¤Ë˵´Ñ¤·¤Æ¤¤¤ë¤Î¤â¡¢¡Ö¾ðÊó¤ÎÈóÂоÎÀ­¡×¤¬¤Þ¤¹¤Þ¤¹¹­¤¬¤ë¡Ö¤ª¶â¤Î¥ê¥Æ¥é¥·¡¼¡×¤ò¤É¤ì¤À¤±¿È¤Ë¤Ä¤±¤Æ¤¤¤ë¤«¤Ë¤è¤ê¤Þ¤¹¡£

Ëܽñ¤Ï¡Ö¤½¤ó¤ÊÊýË¡¤¬¤¢¤ë¤ó¤À¡×¤È¤¤¤¦È¯¸«¤È¡¢¡Ö¼«Ê¬¤â¤ä¤Ã¤Æ¤ß¤è¤¦¤«¤Ê¡×¤È»×¤Ã¤Æ¤â¤é¤¨¤ë¤­¤Ã¤«¤±¤òÄ󶡤¹¤ë¤¿¤á¤Ë¤Þ¤È¤á¤¿¤â¤Î¤Ç¤¹¡£

ĶÉÙ͵Áؤλñ»º´ÉÍý¤òÃΤꡢ¥Õ¥£¥ó¥Æ¥Ã¥¯´ë¶È¤ÎCEO¤ÎÃø¼Ô¤¬¶µ¤¨¤ë¿·¤·¤¤¤ª¶â¤Î¶µ²Ê½ñ

²¾ÁÛÄ̲ߡ¢¥·¥§¥¢¥¨¥³¥Î¥ß¡¼¡¢É¾²Á·ÐºÑ¡¢¥Õ¥£¥ó¥Æ¥Ã¥¯¡£¤ª¶â¤ò¤á¤°¤ë´Ä¶­¤¬Â礭¤¯ÊѤï¤ê»Ï¤á¤Þ¤·¤¿¡£·ÐºÑ¤Îή¤ì¤Ï¡¢¤ª¶â¤È¤È¤â¤Ë¡¢¤¢¤Ê¤¿¤Î»þ´Ö¡¢»Å»ö¡¢¿ÍÀ¸¤Ë¤âÂ礭¤Ê±Æ¶Á¤òµÚ¤Ü¤·¤Þ¤¹¡£¤³¤Î¾õ¶·¤ÎÃæ¡¢ÀáÌó¡¦Ãù¶â¤È¤¤¤Ã¤¿½¾Íè¤Î¤ä¤êÊý¤À¤±¤Ç¤ÏÂбþ¤Ç¤­¤Þ¤»¤ó¡£¤·¤«¤·¡¢µÕ¤Ë¿·¤·¤¤Î®¤ì¤òª¤¨¤Æ»Å»ö¡¢»þ´Ö¡¢¿ÍÀ¸¤Î¥×¥é¥ó¤òΩ¤Æ¤ì¤Ðï¤è¤ê¤âÁ᤯¥Á¥ã¥ó¥¹¤¬¤Ä¤«¤á¤Þ¤¹¡£Íý²ò¤À¤±¤Ç¤Ê¤¯¼Â¹ÔÊýË¡¤Ë¾ÇÅÀ¤òÅö¤Æ¡¢¡Ö¤ª¶â¤ÎÉ԰¤òÂǤÁ¾Ã¤·¡¢ÍýÁۤοÍÀ¸¤òÁ÷¤ë¡×¤¿¤á¤Î1ºý¡£

ÆâÍÆ¤Ï¤³¤ó¤Ê´¶¤¸¡£¤½¤·¤Æº£²ó¤Î»ä¤Îµ­»ö¤Ï½ñɾ¤È¤¤¤¦¤è¤ê¡¢¤³¤ÎËܤòÆÉ¤ó¤Ç¤«¤é»ä¤¬Â®¹¶¤Ç¼Â»Ü¤·¤¿¤³¤È¤Î°ìÍ÷¤ò¾Ò²ð¤·¤Æ¤¤¤­¤¿¤¤¡£ÀáÌó¥Á¥Ã¥¯¤ÊÏä¬Â¿¤¤¤¬¡¢¤³¤ì¤é¤Ï¤³¤ÎËܤο¿¿ñ¤È¤¤¤¦¤è¤ê½àÈ÷¤Ë²á¤®¤Ê¤¤¡£¼¡²ó°Ê¹ß¤Ë¡¢ËÜÂê¤Î¸Ä¿ÍÈǥХé¥ó¥¹¥·¡¼¥È¤ä¸Ä¿ÍÈÇ¥×¥í¥Õ¥£¥Ã¥È¥í¥¹ºî¤ê¤ÎÏäò¤·¤Æ¤¤¤­¤¿¤¤¡£

¡Ø¤ª¶â¤ÎPDCA¡Ù¤òÆÉ¤ó¤Ç¡¢Â®¹¶¤Ç¼è¤êÁȤó¤À¤³¤È¤Î°ìÍ÷

ANA¥Þ¥¤¥ì¡¼¥¸¥«¡¼¥ÉºÆÀßÄê

ANA¥Þ¥¤¥ì¡¼¥¸¥«¡¼¥É¤Î¥Ñ¥¹¥ï¡¼¥É¤¬ÉÔÌÀ¤Ë¤Ê¤Ã¤Æ¤¤¤¿¤Î¤Ç¡¢ºÆÈ¯¹Ô¤¹¤ë¤¿¤á¤Ë¥³¡¼¥ë¥»¥ó¥¿¡¼¤ËÅÅÏäò¤¹¤ë¡££²½µ´Ö¤â¤·¤Ê¤¤¤¦¤Á¤Ë¥Ñ¥¹¥ï¡¼¥É¤È¥«¡¼¥É¤¬¼«Âð¤ËÆÏ¤¤¤Æ¼ê³¤­¤ò¹Ô¤Ã¤¿¡£²áµîȾǯÁ°¤Þ¤Ç¤Î¹Ò¶õ·ô¤Ê¤É¤ò¼è¤ê½Ð¤·¤Æ¡¢¥Þ¥¤¥ë¤òÅÐÏ¿¤·¤Æ¤¤¤¯ºî¶È¤ò¹Ô¤Ã¤¿¡£»Äǰ¤Ê¤¬¤é¡¢¤½¤ì¤è¤ê¤âÁ°¤Î¤â¤Î¤ÏÅÐÏ¿¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤Î¤Ç¡¢µã¤¯µã¤¯Äü¤á¤ë¡£¤â¤Ã¤¿¤¤¤Ê¤¤¡ª¤Ç¤â¾¯¤Ê¤¯¤È¤âȾǯʬ¤ÏÅÐÏ¿¤Ç¤­¤Æ¥Û¥Ã¤È¤·¤¿¡£¤¹¤Ç¤Ë·ë¹½¥Þ¥¤¥ì¡¼¥¸¤¬Î¯¤Þ¤Ã¤¿¡£

Amazon Classic CardÅÐÏ¿

¼«Ê¬¤ÏAmazon¤Ç·ë¹½Ç㤤ʪ¤ò¤¹¤ë¾å¤Ë¡¢ºÇ¶á¤Ï¡Ø¿©»ö¥Ï¥Ã¥¯¡Ù¡ÊÃø¡§¾¡´ÖÏÂÂ夵¤ó¡Ë¤â¼ÂÁ©¤·¤Æ¤¤¤ë´Ø·¸¤ÇAmazon Fresh¤òËè½µ¤Î¤è¤¦¤ËÍê¤ó¤Ç¤¤¤ë¡£¤½¤ì¤Ë¤è¤Ã¤Æ·ë¹½¤Ê³Û¤òAmazon¤ÇÍøÍѤ·¤Æ¤¤¤ë¤Î¤Ç¡¢Amazon¤Î¥¯¥ì¥¸¥Ã¥È¥«¡¼¥É¤Ë¤Ä¤¤¤ÆÄ´¤Ù¤Æ¤ß¤¿¡£»ä¤¬´Ñ¤¿¤È¤­¤Ï¡¢5000¥Ý¥¤¥ó¥È¤Î¥­¥ã¥ó¥Ú¡¼¥ó¤ò¹Ô¤Ã¤Æ¤¤¤ë¡Ö¥¯¥é¥·¥Ã¥¯¥«¡¼¥É¡×¤Ë¤·¤¿¡£Amazon Heavy User¤ËÂФ·¤Æ¤Ï¼Â¼Áǯ²ñÈñ¤Ï¥¿¥À¤Î¤è¤¦¤Ê¤â¤Î¤À¤·¡¢¥×¥é¥¤¥à²ñ°÷¤Ê¤éAmazon¤Ç¤Î¥Ý¥¤¥ó¥È¤¬2%¤â¤Ä¤¯¡£Amazon¥Ý¥¤¥ó¥È¤Ï¤½¤Î¤Þ¤Þ¥Ý¥¤¥ó¥È¤È¤·¤Æ²Ã»»¤µ¤ì¡¢Amazon¥®¥Õ¥È·ô¤ËÊÑ´¹¤¹¤ë¤Ê¤É¤È¸À¤Ã¤¿ÌÌÅݤʺî¶È¤¬È¯À¸¤·¤Ê¤¤¤Î¤Ç¡¢¸ò´¹Ëº¤ì¤¬µ¯¤­¤ë¿´ÇÛ¤â¤Ê¤¤¤Î¤ÇÎɤ¤¡£

¤½¤Î¤¦¤Á¡¢¥´¡¼¥ë¥É¥«¡¼¥É¤Ë¥°¥ì¡¼¥É¥¢¥Ã¥×¤¹¤ë¤Î¤Ï¥¢¥ê¡£¸å¤Ç¤Þ¤¿¸¡Æ¤¤·¤¿¤¤¡£

bitFlyer¤Î¸ýºÂ¤ò¥¢¥Ã¥×¥Ç¡¼¥È

¡Ø¤ª¶â¤ÎPDCA¡Ù¤ÎÂ裵¾Ï¡Ê¤ª¶â¤ËƯ¤¤¤Æ¤â¤é¤¦²Ô¤®ÎÏ--¶âÍ»»ñËܡˤòÆÉ¤ó¤Ç¡¢»ñ»º±¿ÍѤâËܳʲ½¤µ¤»¤¿¤¤µ¤»ý¤Á¤¬Í¯¤¤¤Æ¤­¤¿¡£¤½¤³¤Ç¡¢Ê¬»¶Åê»ñ¤Î°ì´Ó¤È¤·¤Æ¡¢²¾ÁÛÄ̲ߤâ¤Á¤ã¤ó¤ÈÄ¥¤Ã¤Æ¤ª¤­¤¿¤¤¤È¤³¤í¡£

²¾ÁÛÄ̲ߤÎÂåɽŪ¥µ¡¼¥Ó¥¹bitFlyer¤Î¸ýºÂ¤òºÆÅÙ²ÔÆ¯¤µ¤»¤ë¤¿¤á¤Ë¡¢¤«¤Ê¤êµ×¤·¤Ö¤ê¤Ë¥í¥°¥¤¥ó¤·¤¿¤é¡¢¤¹¤´¤¤¸·¤·¤¯¤Ê¤Ã¤Æ¤¤¤Æ¤Ó¤Ã¤¯¤ê¡£ËܿͳÎǧ½ñÎà¤ÎÄó½Ð¡¢¿§¡¹¤ÈÄɲ䵤줿Ʊ°Õ½ñ¤Ø¤ÎƱ°Õ¡¢¤µ¤é¤Ë¤Ï¼«Âð¤Ø¤Î½ñÎàÁ÷Éդˤè¤ë½»½ê¾ÚÌÀ¤Ê¤É¡¢°ÊÁ°»È¤Ã¤Æ¤¤¤¿¤È¤­¤Ë¤ÏɬÍפΤʤ«¤Ã¤¿¤â¤Î¤¬¿§¡¹¤ÈµÁ̳²½¤µ¤ì¤Æ¤¤¤¿¡£

¤½¤ì¤é¤Î¼ê³¤­¤òÁ´Éô¹Ô¤¤¡¢ºÆÅÙÍøÍѤǤ­¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£¼«Ê¬¤¬¥ê¥¹¥¯»ñ»º¤ËÅêÆþ¤Ç¤­¤ë³Û¤ò¤Þ¤º¤Ï·è¤á¤Æ¡¢¤µ¤é¤Ë¥ê¥¹¥¯»ñ»º¤ÎÆâÌõ¤È¤·¤Æ²¾ÁÛÄ̲ߤγä¹ç¤ò·è¤á¤¿¡£¤½¤Îʬ¤À¤±¤òbitFlyer¤Î»ØÄꤵ¤ì¤Æ¤¤¤¿¸ýºÂ¤Ë¿¶¤ê¹þ¤ó¤Ç¡¢bitFlyer¥¢¥×¥ê¤Ç²¾ÁÛÄ̲ߤËÀÚ¤êÂØ¤¨¤¿¡£

¥Õ¥£¥Ã¥È¥Í¥¹¥¸¥à¤òÂà²ñ

¤â¤È¤â¤È»ä¤Ï³°¤ÇÁö¤Ã¤Æ¤¤¤¿¤¬¡¢±«¤¬¹ß¤Ã¤Æ¤¤¤¿¤éÁö¤ì¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ë·ùµ¤¤¬º¹¤·¡¢¤É¤ó¤ÊÅ·¸õ¤Ç¤â±¿Æ°¤Î¥¹¥±¥¸¥å¡¼¥ë¤¬¶¸¤ï¤Ê¤¤¥Õ¥£¥Ã¥È¥Í¥¹¥¸¥à¤ËÀÚ¤êÂØ¤¨¤¿¡£¥Õ¥£¥Ã¥È¥Í¥¹¥¸¥à¤ËÆÃ²½¤·¤¿¥é¥¤¥Õ¥Ï¥Ã¥¯¤â¿ô¡¹³«Â󤷤Ƥ­¤Æ¡¢Î㤨¤Ð¤³¤ì¤é¤Îµ­»ö¤Ç¤â¾Ò²ð¤·¤¿¡£

¤â¤Á¤í¤ó¡¢³°¤ÇÁö¤ë¤Î¤âµ¤»ý¤Á¤¬Îɤ¤¤Î¤Ç¡¢³°¤ÇÁö¤Ã¤¿¤ê¡¢¥¸¥à¤Ç±¿Æ°¤·¤¿¤ê¤È¤¤¤¦¥Ï¥¤¥Ö¥ê¥Ã¥É·¿¤Ç±¿ÍѤ·¤Æ¤¤¤¿»þ´ü¤¬Ä¹¤«¤Ã¤¿¡£³°¤ÇÁö¤ë¤¿¤á¤Îµ­»ö¤â¤¿¤¯¤µ¤ó½ñ¤¤¤Æ¤­¤¿¡£

¤·¤«¤·ºÇ¶á¤Ï¡¢²Æ¤Ç¤âÅߤǤ⡢À²¤ì¤Ç¤â±«¤Ç¤â¡¢³°¤òÁö¤ì¤ë¥¦¥§¥¢¤äÁõÈ÷¤òÀ°¤¨¤ë¤³¤È¤¬¤Ç¤­¤¿¡£¤Ê¤Î¤Ç¡¢³ä¹ç¤È¤·¤Æ¤â¥¸¥à¤¬¾¯¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿¤È¤³¤í¡£¤½¤í¤½¤í¤ä¤á¤è¤¦¤«¡¢¤É¤¦¤·¤è¤¦¤«¡¢¤È·èÃǤΥ¨¥Í¥ë¥®¡¼¤ò¹Ê¤ì¤º¤Ë¤º¤Ã¤È¸å¤íÅݤ·¤·¤Æ¤¤¤¿¤È¤­¤Ë¡Ø¤ª¶â¤ÎPDCA¡Ù¤òÆÉ¤ß¡¢¤è¤·¡¢¤ä¤á¤è¤¦¡¢¤È»×¤Ã¤Æ¼­¤á¤ë¤³¤È¤¬½ÐÍ褿¡£

¥¸¥à¤Î·î²ñÈñ¤Ï¥Ð¥«¤Ë¤Ê¤é¤Ê¤¤¤Î¤Ç¡¢Îɤ¤·èÃǤò¤·¤¿µ¤Ê¬¡£¼Â¤Ï¥¸¥à¤Ç¶Ú¥È¥ì¤Ï¤·¤Ê¤¤¤·¡¢¿å±Ë¤â¤·¤Ê¤¤¤·¡¢¥µ¥¦¥Ê¤âÆþ¤é¤Ê¤¤¡£¥é¥ó¥Ë¥ó¥°¥Þ¥·¡¼¥ó¤·¤«ÍøÍѤ·¤Æ¤¤¤Ê¤«¤Ã¤¿¼«Ê¬¤È¤·¤Æ¤Ï¡¢¥ª¡¼¥Ð¡¼¥¹¥Ú¥Ã¥¯¤À¤Ã¤¿¡£¤â¤Á¤í¤ó¥¸¥à¤òÈÝÄꤹ¤ë¤Ä¤â¤ê¤Ï¤Ê¤¯¡¢¶Ú¥È¥ì¤ò¤¹¤ë¿Í¤Ë¤È¤Ã¤Æ¤Ï¥¸¥à¤Î´Ä¶­¤Ï¥Þ¥¹¥È¤À¤È»×¤¦¤·¡¢¿Í¤½¤ì¤¾¤ì¾õ¶·¤Ï°ã¤¦¤È»×¤¦¡£

¥¸¥à¤ò¼­¤á¤Æ»×¤¦¤Î¤Ï¡¢¥¸¥à¤Þ¤Ç¤Î±ýÉü¤Î»þ´Ö¡¢¥¸¥à¤ËÃ夤¤Æ¤«¤é¼õÉÕ¤òºÑ¤Þ¤»¤Æ¡¢¹¹°á¼¼¤Ë°Üư¤·ÃåÂØ¤¨¤Æ¡¢¥Õ¥£¥Ã¥È¥Í¥¹¥ë¡¼¥à¤Ë¤Þ¤¿°Üư¤·¤¿¤ê¤È¡¢¥¿¥¤¥à¥í¥¹¤¬»×¤¤¤Î¤Û¤«Â¿¤¤¡£°ìÊý¥é¥ó¥Ë¥ó¥°¤Î¾ì¹ç¤Ï¡¢ÃåÂØ¤¨¤Æ²È¤ò½Ð¤¿¤½¤Î°ìÊâÌܤ«¤é¥é¥ó¥Ë¥ó¥°½ÐÍè¤ë¤Î¤ÇÁÇÀ²¤é¤·¤¤¡£¥Æ¥ó¥Ý¤¬Îɤ¤¡£²ñ¼Ò¤«¤éµ¢Â𤷤ƥѥѥäȿô¥­¥íÁö¤ê¡¢¤¹¤°¥·¥ã¥ï¡¼¤òÍá¤Ó¡¢¤¹¤°Í¼¿©¤ò¤È¤ê¡¢¤¹¤°Á°Åݤ·¥·¡¼¥È¤òÄ̤·¡¢¡Øµ´Â®PDCA¡ÙÍѤδʰ׿¶¤êÊÖ¤ê¤ò¹Ô¤¦¡£¤½¤Î¥Æ¥ó¥Ý¤ÎÎɤµ¤¬µ¤»ý¤Á¤è¤¯¤Ê¤êºÇ¶á¤Ï¤Û¤ÜËèÆüÁö¤Ã¤Æ¤¤¤ë¡£¤Á¤Ê¤ß¤ËÁ°Åݤ·¥·¡¼¥È¤È¤Ï¡¢¤³¤¦¤¤¤¦¤â¤Î¡§

ÆÉ½ñ¥¢¥×¥ê¡ÖKindle¡×ÆÉ¤ß¾å¤²µ¡Ç½¤ÎŰÄì³èÍÑ

¥¸¥à¤Ç¤ÏÁö¤ê¤Ê¤¬¤é¡¢¤â¤·¤¯¤Ï¥Ú¥À¥ë¤òÁ椮¤Ê¤¬¤éËܤò³«¤¤¤ÆÊÙ¶¯¤¹¤ë¤³¤È¤¬Â¿¤«¤Ã¤¿¤¬¡¢³°¤Ç¥é¥ó¥Ë¥ó¥°¤¹¤ë¤È¤­¤Ë¤Ï¡Ø¤ª¶â¤ÎPDCA¡Ù¤Ç¾Ò²ð¤µ¤ì¤Æ¤¤¤¿¿À¥Ï¥Ã¥¯¡ÖKindle¤ÎÆÉ¤ß¾å¤²µ¡Ç½¡×¤ò»È¤¤¤Ï¤¸¤á¤Æ¤¤¤ë¡£

¤³¤ì¤ÏiPhone¤Î¾ì¹ç¤Ç¤¢¤ì¤Ð¡¢£²ËܤλؤDzèÌ̤κǾ夫¤é²¼¤Ë¸þ¤«¤Ã¤Æ³ê¤é¤»¤ë¤È¡¢³«¤¤¤Æ¤¤¤ë¥Ú¡¼¥¸¤«¤éKindle¤¬ËÜ¤ÎÆâÍÆ¤òÆÉ¤ß¾å¤²¤Æ¤¯¤ì¤ë¤È¤¤¤¦ºÇ¶¯¥Ï¥Ã¥¯¤À¡£¤·¤«¤â¥¹¥Ô¡¼¥É¤Ï®¤á¤¿¤ê´Ë¤á¤¿¤ê¤Ç¤­¤ë¤Î¤Ç¡¢»ä¤Ïʹ¤­¼è¤ì¤ëºÇ®¤Î¥¹¥Ô¡¼¥É¤ËÀßÄꤷ¤Æ¤¤¤ë¡£¤¹¤ë¤È°ìºý¤ÎËܤ¬£±»þ´Ö¤°¤é¤¤¤Î¥é¥ó¥Ë¥ó¥°¤Çʹ¤­½ª¤ï¤ë¤è¤¦¤Ë¤Ê¤ë¤Î¤Ç¡¢¥¤¥ó¥×¥Ã¥È¤Ç¤­¤ëÎ̤¬¤É¤ó¤É¤óÁý¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£ËܤË˰¤­¤¿¤éPodcast¤òÇÜ®¤Çʹ¤¤¤¿¤ê¤·¤Æ¤¤¤ë¡£

¼ª¤¬¤É¤ó¤É¤ó®¤¤ÆÉ¤ß¾å¤²¤Ë¤âÂбþ¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¤³¤È¤ËÂФ·¤Æ¡¢¶½Ê³¤¹¤ë¤â¤Î¤¬¤¢¤ë¡£¤³¤Î¤Þ¤Þ3Çܤ°¤é¤¤¤Þ¤ÇÃ䨤ì¤Ð1»þ´Ö¤ÎÏä¬20ʬ¤Çʹ¤­½ª¤ï¤Ã¤Á¤ã¤¦¤«¤é¤Í¡£

¤Á¤Ê¤ß¤Ëº£¤Ï2.25Çܤ°¤é¤¤¤Þ¤Ç¤Ïʹ¤­¼è¤ì¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£Kindle¤À¤Èº£¤Î®ÅÙ¤òÃΤ뵡ǽ¤¬¤Ê¤¤¤¬¡¢YouTube¤Ë¤¤¤ì¤Æ¤¤¤ëextension¤ÇºÇÂç16ÇܤޤÇÁá¤á¤é¤ì¤ë¤Î¤À¤¬¡¢¤À¤¤¤¿¤¤2.25¤¬º£¤Î½ê¸ÂÅÙ¡£¼¡¤ÎÌÜɸ¤Ï3ÇܤޤÇÁá¤á¤ë¤³¤È¡£

¤³¤ÎÏäϾ¤Ë¤â½ñ¤­¤¿¤¤¤³¤È¤¬¤¢¤ë¤Î¤Ç¡¢¤Þ¤¿Ê̤ε­»ö¤È¤·¤Æ½ñ¤¯Í½Äê¡£

¥Þ¥¤¥ó¥É¥Þ¥Ã¥×¥¢¥×¥ê¡ÖMindNode¡×¤ÎŰÄì³èÍÑ

¡Ø¤ª¶â¤ÎPDCA¡Ù¤Ç¤Ï¥Þ¥¤¥ó¥É¥Þ¥Ã¥×¥Ä¡¼¥ë¤ÎÏäâÅо줹¤ë¤¬¡¢iThoughts¤ÈMindNode¤¬¿ä¾©¤µ¤ì¤Æ¤¤¤¿¡£»ä¤Ï¤³¤Î¤¦¤Á¡¢MindNode¤Î¥È¥é¥¤¥¢¥ëÈǤò»î¤·¤Æ¤ß¤¿¤Î¤À¤¬¡¢¤½¤Î¥·¥ó¥×¥ë¤ÊUI¤ä¡¢PC¤Î¤ß¤Ê¤é¤º¥¿¥Ö¥ì¥Ã¥È¡¦¥¹¥Þ¥Û¤Ç¤â¿Æ»Ø¤À¤±¤Ç¤É¤ó¤É¤ó¥Þ¥Ã¥×¤ò³ÈÄ¥¤·¤Æ¤¤¤±¤ë¤³¤È¤¬µ¤¤ËÆþ¤Ã¤Æ¡¢PCÈÇ¡¢¥â¥Ð¥¤¥ëÈÇξÊý¤ÎÍ­ÎÁ¥¢¥×¥ê¤ò¹ØÆþ¤·¤Æ¤·¤Þ¤Ã¤¿¡£º£¤Ç¤ÏMindNode¤òPC¡¢¥¿¥Ö¥ì¥Ã¥È¡¢¥¹¥Þ¥Û¤ÇƱ´ü¤µ¤»¤Æ¡¢²Ë¤Ê»þ´Ö¤Ëį¤á¤Æ¥Þ¥¤¥ó¥É¥Þ¥Ã¥×¤Ë¹àÌܤòÉÕ¤±Â­¤·¤¿¤ê¤·¤Æ¤¤¤ë¡£¹ç¤ï¤»¤Æ¿ôÀé±ß°Ê¾å¤·¤¿¤Èµ­²±¤·¤Æ¤¤¤ë¤¬¡¢Ç㤤ÀÚ¤ê¤Ê¤Î¤Ç¤½¤ì°Ê¾å¤Ï¤«¤«¤é¤Ê¤¤¡£¤Ê¤«¤Ê¤«¥ª¥¹¥¹¥á¤À¡£

ºÇ¶áµ¤¤Å¤¤¤¿¤Î¤¬¡¢MindNode¤Çºî¤Ã¤¿¥Þ¥Ã¥×¤ò¥³¥Ô¡¼¤·¤Æ¡¢¥ï¡¼¥É¤ä¥¨¥Ç¥£¥¿¡¼¤ËޤêÉÕ¤±¤ë¤È¡¢¥Þ¥¤¥ó¥É¥Þ¥Ã¥×¤Î¥Ä¥ê¡¼¹½Â¤¤ò°Ý»ý¤·¤¿·Á¤Ç¥³¥Ô¥Ú¤µ¤ì¤ë¤Î¤À¡£¤³¤Îµ¡Ç½¤Ë¤Ï¿´Äì¶Ã¤¤¤¿¤¬¡¢¤«¤Ê¤êÊØÍø¡£Î㤨¤Ð¥Ö¥í¥°µ­»ö¤ò¥»¥¯¥·¥ç¥óËè¤Ë»Þʬ¤«¤ì¤·¤Æ¤¤¤¯¥á¥â¤òMindNode¤ÇºîÀ®¤·¤Æ¤«¤é¡¢¤½¤ì¤ò¥¨¥Ç¥£¥¿¡¼¤Ë¥³¥Ô¡¼¤·¤¿¤é¥»¥¯¥·¥ç¥óËè¤Ë¤Þ¤È¤Þ¤Ã¤Æ¥³¥Ô¥Ú¤µ¤ì¤ë¤Î¤ÇÊÔ½¸¤·¤ä¤¹¤¤¡£

¥»¥«¥ó¥À¥ê¡¼»Ô¾ì¡Ö¥á¥ë¥«¥ê¡×¤ÎŰÄì³èÍÑ

¤¤¤Ä¤«½èʬ¤·¤¿¤¤¤È»×¤Ã¤Æ¤¤¤¿¤â¤Î¤ò¤¹¤Ù¤Æ¥á¥ë¥«¥ê¤Ë½ÐÉʤ·¤¿¡£Î㤨¤Ð¸Å¤¤¥¹¥Ë¡¼¥«¡¼¤È¤«¡¢Çã¤¤ÂØ¤¨¤Æ»Ä¤Ã¤Æ¤¤¤¿ÅŻҥì¥ó¥¸¤È¤«¡¢¿ô¥ö·î¤Ë°ì²ó¤·¤«ÍøÍѤ·¤Æ¤¤¤Ê¤¤¥×¥ê¥ó¥¿¡¼¤È¤«¡¢¥µ¥¤¥º¤¬¹ç¤ï¤Ê¤¯¤Ê¤Ã¤¿5ǯ¡Á10ǯÁ°¤Î¥Ó¥¸¥Í¥¹¥¹¡¼¥Ä¡¢Ä̾ï¤Ê¤é¼Î¤Æ¤ë¤·¤«¤Ê¤¤¥Ó¥¸¥Í¥¹»¨»ï¡£¡Ö郎¤É¤¦¹Í¤¨¤Æ¤âÀäÂФËÍפé¤Ê¤¤¤â¤Î¡×¤Ï¤â¤Á¤í¤ó¼Î¤Æ¤ë¤±¤É¡¢¡Ö郎¤É¤¦¹Í¤¨¤Æ¤âÍפé¤Ê¤¤¤±¤É¡¢¤â¤·¤«¤·¤¿¤éÍߤ·¤¤¿Í¤¬¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¤Ê¡×¤È¤¤¤¦¥ì¥Ù¥ë¤Î¤â¤Î¤Ï¤¹¤Ù¤Æ½ÐÉʤ¹¤ë¡£¤¹¤ë¤È¤À¤¤¤¿¤¤Çä¤ì¤ë¡£¤½¤ì¤¬¥á¥ë¥«¥ê¤Î¤¹¤´¤¤¤È¤³¤í¡£´ðËÜŪ¤Ë¡Ö¼Î¤Æ¤ë¡×¤È¤¤¤¦³µÇ°¤¬»ä¤ÎÃæ¤Ç¾Ã¤¨¤Ä¤Ä¤¢¤ë¡£

¥á¥ë¥«¥ê³èÍѤνÅÍ×À­¤Ï¡Ø¤ª¶â¤ÎPDCA¡Ù¤Ç¤â¶¯Ä´¤µ¤ì¤Æ¤¤¤Æ¡¢¤ª¶â¤Ë´Ø¤¹¤ë¾ï¼±¤¬¤¹¤´¤¤ÊѲ½¤¹¤ë¤­¤Ã¤«¤±¤òÍ¿¤¨¤Æ¤¤¤ë¸½¾Ý¤À¤È»×¤¦¡£¾ÜºÙ¤Ï¡Ø¤ª¶â¤ÎPDCA¡Ù¤ò¤´Í÷夭¤¿¤¤¡£¤â¤·¤¯¤Ï»ä¤Î°ÊÁ°¤Î¥Ö¥í¥°µ­»ö¤â¤¼¤Ò¡§

º£¤Ç¤ÏÀ¸³è¥³¥¹¥È¤ò¤É¤³¤Þ¤Ç²¼¤²¤é¤ì¤ë¤«¡¢¤È¤¤¤¦¤Î¤ò¥á¥ë¥«¥ê¤òÄ̤·¤Æ¼Â¸³¤·¤Æ¤¤¤ëÃʳ¬¡£¼ÁÁǤÊÀ¸³è¤ò¤¹¤ë¤È¤¤¤¦°ÕÌ£¤Ç¤Ï¤Ê¤¯¤Æ¡¢¤â¤Î¤òÇã¤Ã¤Æ¤â¼«Ê¬¤Ë¹ç¤ï¤Ê¤±¤ì¤ÐÄê²Á¤«¤é£µ¡ó¥ª¥Õ¤È¤«¤Ç¤¹¤°¤Ë½ÐÉʤ¹¤ì¤Ð¤è¤¤¤·¡¢¿ôǯ»È¤¤¹þ¤ó¤Ç¤â¡¢¤â¤Î¤Ë¤è¤Ã¤Æ¤Ï30¡ó¡Á50¡ó¥ª¥Õ¤ÇÇäµÑ¤Ç¤­¤ë¡£¤â¤Î¤òÇ㤦¤È¤­¤â¤Þ¤º¤Ï¥á¥ë¥«¥ê¤ò¥Á¥§¥Ã¥¯¤¹¤ëÊʤ¬ÉÕ¤¤¤¿¡£¡Ø¤ª¶â¤ÎPDCA¡Ù¤Ë¤â¥é¥ó¥Ü¥ë¥®¡¼¥Ë¤ä¥í¥ì¥Ã¥¯¥¹¤ÎÏ䬽ФƤ¤¤ë¤·¡¢¤à¤·¤íÀ¸³è¤¬Ë­¤«¤Ë¤Ê¤ë¤ó¤¸¤ã¤Ê¤¤¤«¤Ê¡©¤È¼«Ê¬¤Ï»×¤Ã¤Æ¤¤¤ë¡£

»ä¤Ï¼Ö¤ä»þ·×¤Ë¤Ï´Ø¿´¤¬Çö¤¤¤¬¡¢¥é¥¤¥Õ¥Ï¥Ã¥«¡¼¤È¤·¤Æ¹â²Á¤Ê¥¬¥¸¥§¥Ã¥È¤òÇ㤦¤³¤È¤¬Â¿¤¤¡£¤½¤ì¤é¤ÎÃÍÃʤÏÀѤâ¤ì¤ÐÇϼ¯¤Ë¤Ê¤é¤Ê¤¤¡£¤·¤«¤·¼«Ê¬¤Ë¹ç¤ï¤Ê¤¤¾ì¹ç¤â¨ÇäµÑ¤Ç¤­¤ë¤Î¤Ç¡¢¥À¥á¡¼¥¸¤òÍÞ¤¨¤ë¤³¤È¤¬½ÐÍè¤ë¤Î¤ÇÎɤ¤¡£

¤½¤â¤½¤â¡¢¤ª¶â¤ò¿´ÇÛ¤·¤Æ²¿¤«¤ËÄ©Àï¤Ç¤­¤Ê¤¤¾õÂÖ¤òÈ´¤±½Ð¤¹¤¿¤á¤Ë¤³¤½¡Ø¤ª¶â¤ÎPDCA¡Ù¤ò²ó¤·¤Æ¤¤¤ë¤ï¤±¤À¡£ÍÍ¡¹¤Ê¥­¥ã¥ê¥¢¥Ñ¥¹¤¬Â¸ºß¤¹¤ëÃæ¤Ç¡¢Îɤ¤·èÃǤò¤·¤Æ¤¤¤¯¾å¤Ç ¡¢

  • ¡ÖµëÎÁ¤¬¡ü¡ü¡ó²¼¤¬¤Ã¤Æ¤â²¿¤ÎÌäÂê¤â¤Ê¤¤¤Í¡×
  • ¡Öº£¤ÎÀ¸³è¿å½à¤Ï³Î¼Â¤Ë°Ý»ý¤Ç¤­¤ë¤Í¡×

¤È¼«Ê¬¤ÎBS¤äPL¤ò¸«¤Ê¤¬¤é¸À¤¨¤ë´Ä¶­¤òºî¤ê½Ð¤»¤ì¤ÐÁÇŨ¤À¤Ê¤¡¤È»×¤¦¤·¡¢¤½¤Î¤¿¤á¤Ë¥á¥ë¥«¥ê¤ò»È¤¤¹þ¤à¤Î¤Ï°­¤¯¤Ê¤¤¡£»ä¤Ï¥·¥§¥¢¥ê¥ó¥°¥¨¥³¥Î¥ß¡¼¤ä¥ê¥æ¡¼¥¹¤ËÂФ¹¤ë¹Í¤¨Êý¤¬¤³¤³È¾Ç¯¤°¤é¤¤¤ÇÂ礭¤¯ÊѲ½¤·¤¿¤Î¤ÏÎɤ«¤Ã¤¿¤Ê¤¡¤È»×¤Ã¤Æ¤¤¤ë¡£¡Ê¼«Ê¬¤ÎBS¤äPL¤òºî¤ëÏäϤ³¤ì¤«¤é¼è¤êÁȤà¤Î¤Ç¡¢¼¡²ó°Ê¹ß¾ÜºÙ¤òÊó¹ð¤·¤Æ¤¤¤¯Í½Äê¡£¡Ë

¸ø¶¦ÎÁ¶â¤ò¤¹¤Ù¤Æ¥¯¥ì¥¸¥Ã¥È¥«¡¼¥Éʧ¤¤¤ËÊѹ¹

Åŵ¤¡¢¥¬¥¹¡¢¿åÆ»Âå¤ò¤¹¤Ù¤Æ¥¯¥ì¥¸¥Ã¥È¥«¡¼¥É¤Ç¤Î»Ùʧ¤¤¤ËÊѹ¹¤·¤Æ¡¢¥³¥ó¥Ó¥Ë¤Ë¹Ô¤Ã¤Æ»Ùʧ¤¦¼ê´Ö¤ò¾Ê¤¤¤¿¤ÈƱ»þ¤Ë¡¢ÅÐÏ¿¤·¤¿¥¯¥ì¥¸¥Ã¥È¥«¡¼¥É¤Î¥Ý¥¤¥ó¥È¤¬¾¯¤·¤Ç¤â¿¤¯Ãù¤Þ¤ë¤è¤¦¤Ë¤·¤¿¡£¤³¤ì¤â¡Ø¤ª¶â¤ÎPDCA¡Ù¤Ç¾Ò²ð¤µ¤ì¤Æ¤¤¤¿»÷¤¿¤è¤¦¤ÊÏä˥¤¥ó¥¹¥Ñ¥¤¥¢¤µ¤ì¤Æ¤¤¤ë¡£

Í­ÎÁ¥¢¥×¥ê¤Î²ò½ü

TODOIST PREMIUM¤ò²ò½ü¤·¤¿¡£¼«Æ°¹¹¿·¤À¤Ã¤¿¤Î¤Ç¡Ä¡£¤½¤Î¤«¤ï¤êTODOIST¤Î¥Õ¥ê¡¼¥×¥é¥ó¤Ç¤ä¤Ã¤Æ¤¤¤¯¤³¤È¤Ë¤·¤Æ¡¢¡Øµ´Â®PDCA¡Ùή¤Î¥¢¥¤¥Ç¥¢¥á¥â¤ä¥¢¥¤¥¹¥Ü¥Ã¥¯¥¹¤È¤ÎÏ¢·È¤Ê¤É¤ÏTODOIST¤Ç°ú¤­Â³¤­¹Ô¤¦¤³¤È¤Ë¤·¤¿¡£Æü¡¹¤ÎTODOŪ¤Ê¤â¤Î¤ÏWunderlist¤Ç´ÉÍý¤¹¤ë¤è¤¦¤ËÊѹ¹¤·¤¿¡£¤Á¤Ê¤ß¤Ë¡¢TODOIST¤Î»È¤¤Êý¤Ï¡Øµ´Â®PDCA¡Ù¤Ë¤â¾¯¤·½Ð¤Æ¤¤¤ë¤Î¤Ç¾Ü¤·¤¯ÃΤꤿ¤¤¿Í¤Ï»²¾È¤µ¤ì¤¿¤¤¡£

²È·×Êí¥¢¥×¥ê¡Ö¥Þ¥Í¡¼¥Õ¥©¡¼¥ï¡¼¥É¡×¤Ë¾ðÊó½¸Ìó

¤¹¤Ù¤Æ¤Î¥¯¥ì¥«¡¢¾Ú·ô¡¦¶ä¹Ô¸ýºÂ¤Ê¤É¤ò¥Þ¥Í¡¼¥Õ¥©¥ï¡¼¥É¤ËÅÐÏ¿¤·¤¿¡£¤¹¤Ç¤Ë¤Û¤È¤ó¤ÉÅÐÏ¿¤µ¤ì¤Æ¤¤¤¿¤¬¡¢È´¤±¤¬¤Ê¤¤¤è¤¦¤Ëµ¤¤ò¤Ä¤±¤¿¡£¤³¤³¤Ë¤¹¤Ù¤Æ¤Î¾ðÊó¤ò½¸Ì󤵤»¤Æ¡¢º£¸å¤Ï¼«Ê¬¤Î¥Ð¥é¥ó¥¹¥·¡¼¥È¤ä¥×¥í¥Õ¥£¥Ã¥È¥í¥¹¤òºî¤Ã¤Æ¤¤¤­¤¿¤¤¡£¤à¤·¤í¡¢¼«Ê¬¤Î¥Ð¥é¥ó¥¹¥·¡¼¥È¤ä¥×¥í¥Õ¥£¥Ã¥È¥í¥¹¤òºî¤ë¤³¤È¤Ç¼¨º¶¤òÆÀ¤ë¤È¤¤¤¦¤Î¤¬¡Ø¤ª¶â¤ÎPDCA¡Ù¤Î¥á¥¤¥ó¥á¥Ã¥»¡¼¥¸¤Î°ì¤Ä¤Ê¤Î¤Ç¡¢¤³¤ì¤Ï¼¡¤Ë¤ä¤ëͽÄê¡£

¥¯¥é¥¦¥É¥³¥ó¥Ô¥å¡¼¥Æ¥£¥ó¥°ÍøÍÑ·ÀÌó¤ò²òÌ󤹤ë

¥Þ¥Í¡¼¥Õ¥©¥ï¡¼¥É¤Î²áµî¿ô¥ö·îʬ¤Î»Ùʧ¤¤¤ò1·ï1·ï¿¶¤êÊ֤äƤ¤¤Ã¤¿¡£¤¹¤ë¤È¡¢Àλ¤¿¥¯¥é¥¦¥É¥³¥ó¥Ô¥å¡¼¥Æ¥£¥ó¥°´Ä¶­¤Î¥¢¥«¥¦¥ó¥È¤¬¤º¤Ã¤È²ÔƯ¤·¤Æ¤¤¤¿¾õÂÖ¤À¤Ã¤¿¤³¤È¤Ëµ¤¤Å¤­¡¢ÂçÊÑ¥·¥ç¥Ã¥¯¤ò¼õ¤±¤¿¡£³Îǧ¤¹¤ë¤ÈËè·î1000±ß°Ê¾å²Ý¶â¤µ¤ì¤Æ¤¤¤Æ¡¢¥·¥ç¥Ã¥¯¤À¤±¤É¤È¤ó¤Ç¤â¤Ê¤¤³Û¤¸¤ã¤Ê¤¯¤Æ¤è¤«¤Ã¤¿¡£ÉÔ¹¬Ãæ¤Î¹¬¤¤¡£µ¤¤Å¤¤¤Æ¤è¤«¤Ã¤¿¡£

ÆÉ½ñÊýË¡¤ÎºÆ¹Í

ÆÉ½ñ¤ò»æ¤ÎËܤˤ¹¤ë¤Î¤«Kindle¤Ë¤¹¤ë¤Î¤«¤ÏÈó¾ï¤ËǺ¤Þ¤·¤¤¡£Kindle¤Ç¤¢¤ì¤Ð¡Ø¤ª¶â¤ÎPDCA¡Ù¤Ë¤â¾Ò²ð¤µ¤ì¤Æ¤¤¤¿¿À¥Ï¥Ã¥¯¡Ö²»À¼ÆÉ¤ß¾å¤²¡×¤ò»È¤¦¤³¤È¤¬½ÐÍè¤ë¤·¡¢¸úΨŪ¤Ê¥¤¥ó¥×¥Ã¥È¤ËÌò¤ËΩ¤Ä¡£¥é¥ó¥Ë¥ó¥°Ãæ¤Ë¤âʹ¤±¤ë¡£¤·¤«¤·¥á¥ë¥«¥ê¤Ê¤É¤Î¥»¥«¥ó¥À¥ê¡¼¥Þ¡¼¥±¥Ã¥È¤ÇÇäµÑ¤¹¤ë¤³¤È¤¬ÉÔ²Äǽ¤Ç¤¢¤ë¡£»æ¤Ë¤¹¤ë¤È¥á¥ë¥«¥ê¤Ç¤âÇäµÑ¤Ç¤­¤ë¤·¡¢¤½¤â¤½¤âÇ㤦¤È¤­¤Ë¤â¥á¥ë¥«¥ê¤ÇÇ㤦¤È¤¤¤¦¥ª¥×¥·¥ç¥ó¤¬¤¢¤ë¡£¥ê¥æ¡¼¥¹»Ô¾ì¤«¤éĴ㤷¥ê¥æ¡¼¥¹»Ô¾ì¤ËºÆÅÙÇäµÑ¤¹¤ë¡£¥Ù¥¹¥È¥»¥é¡¼¤ÎËܤǤ¢¤ì¤ÐÄê²Á¤Î£µ¡ó¥ª¥Õ¤°¤é¤¤¤ÇÇä¤ì¤ë¤Î¤Ç¡¢»æ¤ÎËܤÏÌ¥ÎÏŪ¤Ë¤Ê¤ë¡£¡Ê¤¿¤À¤·Í¹Á÷ÎÁ¤ä¼ê¿ôÎÁ¤â¼è¤é¤ì¤ë¤Î¤Ç¡¢¼è¤êʬ¤Ï¤â¤¦¾¯¤·¾¯¤Ê¤¤¡£¡Ë

±Ñ¸ì¤ÎËܤǤ¢¤ì¤Ð̤鷺Kindle¡£¤Ê¤¼¤Ê¤é¡¢¥á¥ë¥«¥ê¤Ê¤É¤Ç¤Ï±Ñ¸ì¤ÎËܤòÇä¤ë¿Í¤âÇ㤦¿Í¤â¤Û¤È¤ó¤É¤¤¤Ê¤¤¤«¤é¤À¡£ÆüËܸì¤ÎËܤξì¹ç¤ÏËè²ó¾¯¤·Çº¤ó¤À¾å¤Ç·è¤á¤Æ¤¤¤ë¡£

¥¯¥ì¥¸¥Ã¥È¥«¡¼¥É¤Î¥Ý¥¤¥ó¥È¤ò¥®¥Õ¥È·ô¤ËÊÑ´¹

¥¯¥ì¥«¤Î¥Ý¥¤¥ó¥È¤òÁ´ÉôÄ´¤Ù¤Æ¡¢¤¹¤Ù¤ÆAmazon¥®¥Õ¥È·ô¤ËÊÑ´¹¤·¤Æ¡¢Amazon¸ýºÂ¤ËÅÐÏ¿¤·¤¿¡£¤³¤ì¤ÏÍ­¸ú´ü¸Â¤¬¤¢¤ë¤â¤Î¤Ê¤Î¤Ç¡¢Èó¾ï¤ËÌÌÅÝ¡£¾­ÍèŪ¤Ë¤Ï¥¯¥ì¥«¿ô¤ò¤Ø¤é¤¹É¬Íפ¬¤¢¤ë¤È´¶¤¸¤¿¡£ÉáÃʻȤ¤ÍѤÈAmazonÍѤΣ²¼ïÎà¤À¤±¤Ç¤¤¤¤¤ó¤¸¤ã¤Ê¤¤¤«¤Ê¡£¿§¡¹¤Ê¥«¡¼¥É¤Î¥Ý¥¤¥ó¥È¤òÄê´üŪ¤Ë¸ò´¹¤·¤¿¤ê¡¢Ç¯²ñÈñ¤Ê¤É¤¬¤«¤«¤Ã¤Æ¤¤¤Ê¤¤¤«³Îǧ¤·¤¿¤ê¡¢ÉÔÀµ¤Ê¹ØÆþ¤¬¤Ê¤¤¤«¤âÌܤò¸÷¤é¤»¤Æ¤ª¤¯¤Î¤ÏÂçÊѤÀ¡££²Ë礢¤ì¤ÐÊÒÊý¤¬¾å¸Â¤Ë㤷¤Æ¤â²¿¤È¤«¤Ê¤ë¤·¡¢³¤³°½ÐÄ¥¤ä³¤³°Î¹¹Ô¤âÌäÂê¤Ê¤µ¤½¤¦¤À¡£

·ÈÂÓÎÁ¶â¥×¥é¥ó¤Î¸«Ä¾¤·

¤³¤ì¤Ï¤Þ¤À½ÐÍè¤Æ¤¤¤Ê¤¤¤±¤Éº£¸å¤ä¤ê¤¿¤¤¤³¤È¡£·ÈÂÓÎÁ¶â¤Î¸«Ä¾¤·¤Ï¤ä¤é¤Ê¤­¤ã¤È»×¤¤¤Ä¤ÄÁ´Á³¤Ç¤­¤Æ¤¤¤Ê¤¤¡£·ë¹½¤Ê³Û¤ò¼è¤é¤ì¤Æ¤¤¤Æ¡¢¤º¤Ã¤ÈƬ¤ÎÊÒ¶ù¤Ë¤¢¤ë¤Î¤Ç¥¹¥È¥ì¥¹¤ò´¶¤¸¤Æ¤¤¤ë¡£¤³¤ì¤â¶á¤¤¤¦¤Á¤Ë¼ÂÁ©¤·¤Æ¤Þ¤¿Êó¹ð¤·¤¿¤¤¤È»×¤¦¡£

¥·¥§¥¢¥ê¥ó¥°¥¨¥³¥Î¥ß¡¼¤ÎŰÄìŪ³èÍÑ

¤³¤ì¤Ï¤Þ¤À½ÐÍè¤Æ¤¤¤Ê¤¤¤±¤Éº£¸å¤ä¤ê¤¿¤¤¤³¤È¡£¥á¥ë¥«¥ê¤ò»È¤¤¹þ¤ó¤Ç¿§¡¹¤È²ÁÃʹѤ¬¥¢¥Ã¥×¥Ç¡¼¥È¤µ¤ì¤¿µ¤¤¬¤¹¤ë¤Î¤Ç¡¢¡Ø¤ª¶â¤ÎPDCA¡Ù¤Ë½Ð¤Æ¤¯¤ë¾¤Î¥·¥§¥¢¥ê¥ó¥°¥µ¡¼¥Ó¥¹¤â¥¬¥ó¥¬¥ó»È¤Ã¤Æ¤¤¤­¤¿¤¤¡£¤Á¤Ê¤ß¤ËËܤÎÃæ¤Ë¤Ï£´£±¸Ä¤Î¿ʬÌî¤Ë¤ï¤¿¤ë¥·¥§¥¢¥ê¥ó¥°¥µ¡¼¥Ó¥¹¤¬¾Ò²ð¤µ¤ì¤ëɽ¤¬¤¢¤ê¡¢ÂçÊÑÊØÍø¤À¡£¤³¤ÎÃæ¤«¤é»î¤·¤Æ¤¤¤­¤¿¤¤¡£

¸Ä¿ÍÈÇBS/PL¤ÎºîÀ®

¤³¤ì¤Ï¤Þ¤À½ÐÍè¤Æ¤¤¤Ê¤¤¤±¤Éº£¸å¤ä¤ê¤¿¤¤¤³¤È¡£¤½¤â¤½¤â¡¢¸Ä¿ÍÈÇBS/PL¤òºî¤ë¤¿¤á¤Î¾ðÊó¤ÎÀ°Íý¡¢½àÈ÷ÊÔ¤¬º£²ó¤Îµ­»ö¤À¤Ã¤¿¡£¤³¤ì¤«¤éBS/PL¤Å¤¯¤ê¤Ë¼è¤êÁȤó¤Ç¤¤¤¯¤Î¤Ç¡¢ºîÀ®¡¦Ê¬ÀϤ¬½ª¤ï¤ì¤Ð¡¢¤Þ¤¿µ­»ö¤ÇÊó¹ð¤·¤Æ¤¤¤­¤¿¤¤¡£

¢£Åìµþ¤ÎIT´ë¶È£·¼Ò¤Ç¥¤¥ó¥¿¡¼¥ó¥·¥Ã¥×¤ò¤·¤Æ´¶¤¸¤¿¤³¤È¤ò¥á¥¿Åª¤Ë¤Þ¤È¤á¤Æ¸«¤¿¡£ - ¤¯¤¦¤ÈÅÌÁ³¤Ê¤ë¤Þ¤Þ¤Ë 00:05

<title>Åìµþ¤ÎIT´ë¶È£·¼Ò¤Ç¥¤¥ó¥¿¡¼¥ó¥·¥Ã¥×¤ò¤·¤Æ´¶¤¸¤¿¤³¤È¤ò¥á¥¿Åª¤Ë¤Þ¤È¤á¤Æ¸«¤¿¡£ - ¤¯¤¦¤ÈÅÌÁ³¤Ê¤ë¤Þ¤Þ¤Ë</title>

Åìµþ¤ÎIT´ë¶È£·¼Ò¤Ç¥¤¥ó¥¿¡¼¥ó¥·¥Ã¥×¤ò¤·¤Æ´¶¤¸¤¿¤³¤È¤ò¥á¥¿Åª¤Ë¤Þ¤È¤á¤Æ¸«¤¿¡£

º£¤Þ¤Ç¤Î¿ÍÀ¸¤ÎÃæ¤Ç£·¼Ò¤°¤é¤¤¤Î²ñ¼Ò¤Ë¥¤¥ó¥¿¡¼¥ó¥·¥Ã¥×¤·¤Æ¤Þ¤·¤¿¡£¡Ê2017¤Ë£±¼Ò2018¤Ë£¶¼Ò¡Ë

¤»¤Ã¤«¤¯¤Ê¤Î¤Ç´¶¤¸¤¿¤³¤È¤ò¤Þ¤È¤á¤Æ¸«¤Þ¤·¤¿¡£¤Ê¤ª¡¢²ñ¼Ò̾¤Ï´ðËÜŪ¤Ë½Ð¤µ¤Ê¤¤Êý¿Ë¤Ç¤¹¡£

¤Û¤ÜÁ´¤Æ¤Î²ñ¼Ò¤ËÅö¤Æ¤Ï¤Þ¤Ã¤Æ¤¿¤â¤Î

Âç³Ø±¡Â´¤Î¿Í¤¬IT¥¨¥ó¥¸¥Ë¥¢¤Ç¤Ï¿¤¤

È©´¶¤Ç¤¹¤¬¡¢Âç³Ø±¡Â´¤Î¿Í¤¬Â¿¤¤¤È´¶¤¸¤Þ¤·¤¿¡£

ÆÃ¤Ë¡¢¼ã¤¤¿Í¤Ï·ë¹½¤Ê³ä¹ç¤ÇÂç³Ø±¡Â´¤¬Â¿¤«¤Ã¤¿¤È»×¤¤¤Þ¤¹¡£

¤Þ¤¿¡¢¥¤¥ó¥¿¡¼¥ó¥·¥Ã¥×¤Ë»²²Ã¤·¤Æ¤¿¿Í¤âȾ¿ô¡Á²áȾ¿ô¤¬Âç³Ø±¡À¸¤À¤Ã¤¿µ¤¤¬¤·¤Þ¤¹¡£

¡ÊÅò¤±¤à¤ê¥Ï¥Ã¥«¥½¥ó¤Ç¤Ï¼«Ê¬°Ê³°¤Î¿ÍÁ´°÷¤¬Âç³Ø±¡À¸¤À¤Ã¤¿¤·....

²ñ¼Ò¤ÇÇñ¤Þ¤ë¿Í¤¬¤Û¤È¤ó¤É¤¤¤Ê¤«¤Ã¤¿

¡Ö¤Ê¤ì¤ëSE!¡× ¤òÆÉ¤ó¤À¤³¤È¤¬¤¢¤ë¤Î¤ÇÅìµþ¤ÎIT´ë¶È¤Ç¤Ï¤¢¤ó¤Ê´¶¤¸¤Ê¤Î¤«¤Ê¡¼¤È¤«¤º¤Ã¤È»×¤Ã¤Æ¤Þ¤·¤¿¡£

¤·¤«¤·¡¢¸½¼Â¤Ï¤«¤Ê¤ê¥Û¥ï¥¤¥È¤Ã¤Ý¤µ¤ò´¶¤¸¤Þ¤·¤¿¡£

¤Ê¤ì¤ëSE ¤Ï°ìÅÙ¸«¤È¤¯¤ÈÎɤ¤¤«¤â¡£




Excel»ÅÍͽñ¤Ï¤Û¤È¤ó¤É¤Ê¤«¤Ã¤¿

»ö¶È²ñ¼Ò¤Ð¤«¤ê¸«¤Æ¤¿¤Î¤Ç Japanese traditional company ¤È¤Ï»ö¾ð¤¬°ã¤¦¤È¤Ï»×¤¤¤Þ¤¹¤¬¡¢´ðËÜŪ¤ËExcel¤òÍ­¸ú³èÍѤ·¤Æ¤¤¤ë²ñ¼Ò¤Ï¤¢¤Þ¤ê¤Ê¤«¤Ã¤¿¤Ç¤¹¡£

¤½¤ì¤è¤ê¤â¡¢Slack ¤ä ¥³¥ó¥Õ¥ë¡¢kibela¡¢zepplin ¤Ê¤É¤Î¥Ä¡¼¥ë¤òÊ£¿ôÁȤ߹ç¤ï¤»¤ÆÀ¸»ºÀ­¤ò¹â¤á¤Æ¤¤¤ë²ñ¼Ò¤¬Â¿¤«¤Ã¤¿¤Ç¤¹¡£

¸Ä¿ÍŪ¤Ë¤Ï¥³¥ó¥Õ¥ë¹¥¤­¡Êľµå

PC ¤Ï Mac or ¹âÀ­Ç½WIndows

¥¤¥±¥¤¥±¤Ê´ë¶È¤¬¤è¤¯»È¤Ã¤Æ¤¤¤ëMac¡¢¤â¤Á¤í¤ó¿·¤·¤á¤Ê¹âÀ­Ç½¥â¥Ç¥ë¤Ç¤·¤¿¡£

Windows ¤ò»È¤Ã¤¿¾ì¹ç¤Ç¤â¡¢Intel Corei7 ¤òÅëºÜ¤·¤Æ¤ë¥Þ¥·¥ó¤À¤Ã¤¿¤ê¤·¤Æ²÷Ŭ¤Ê³«È¯¤¬¤Ç¤­¤½¤¦¤ÊÊ·°Ïµ¤¤Ç¤·¤¿¡£

·ëº§¤·¤Æ¤ë¿Í¤¬Â¿¤«¤Ã¤¿

IT ¥¨¥ó¥¸¥Ë¥¢¤Ï·ëº§¤Ç¤­¤Ê¤¤¤È¤«Twitter¤Ç¤è¤¯¸À¤ï¤ì¤Æ¤Þ¤¹¡£

¤±¤É¡¢·ëº§¤·¤Æ¤ë¿Í¤¬°Õ³°¤Ë¿¤«¤Ã¤¿¡ª¡ª

Git/Github ¤¬Æ³Æþ¤µ¤ì¤Æ¤¿¡£CI ¤¬Æ³Æþ¤µ¤ì¤Æ¤¿

Git/Github ¤¬Æ³Æþ¤µ¤ì¤Æ¤ë¤Î¤Ï¤Û¤È¤ó¤É¤«¤Ê¡¼¤È¤«»×¤Ã¤Æ¤Þ¤·¤¿¤¬¡¢¤Ï¤Æ¥Ö¤ÎÈ¿±þ¤Æ¤­¤Ë¤½¤¦¤Ç¤Ï¤Ê¤¤¤é¤·¤¤¤Î¤Ç°ì±þ¡¢

¤Þ¤¿¡¢Github ¤ÈÏ¢·È¤·CI ¤¬Æ°¤¤¤Æ¤ë¤Î¤¬¤Û¤È¤ó¤É¤Ç¤·¤¿¡£

CI ¤Ç lint ¤âư¤¤¤Æ¤¤¤ë²ñ¼Ò¤¬¤¤¤ë¤Î¤¬²Ä°¦¤«¤Ã¤¿¡Ê·ë²ÌÄÌÃΤ¬Slack ¤Ç¤«¤ï¤¤¤¤¥­¥ã¥é¥¯¥¿¡¼¤¬¶µ¤¨¤Æ¤¯¤ì¤ë¤Î¤Ç¡ª

Ⱦ¿ô¤Î²ñ¼Ò¤ËÅö¤Æ¤Ï¤Þ¤Ã¤Æ¤¿¤â¤Î

¥Õ¥ë¥Õ¥ì¥Ã¥¯¥¹

¥Õ¥ë¥Õ¥ì¥Ã¥¯¥¹¤ÇÀ¸»ºÀ­¹â¤á¤ËƯ¤³¤¦¤È¤·¤Æ¤ë²ñ¼Ò¤¬Â¿¤¤¤È´¶¤¸¤Þ¤·¤¿¡£

¸½ºß¤Ï¤Ê¤Ã¤Æ¤Ê¤¯¤Æ¤â¤Ê¤ó¤È¤«Æ³Æþ¤·¤è¤¦¤È¥Á¥ã¥ì¥ó¥¸¤·¤Æ¤¿¤ê»ö¶ÈÉô¤´¤È¤ËƳÆþ¤·¤Æ¤¿¤ê¤·¤Ê¤«¤Ã¤¿¤ê¡£

¥ê¥â¡¼¥È¥ï¡¼¥¯

¤Ç¤­¤ë²ñ¼Ò¤È¤Ç¤­¤Ê¤¤²ñ¼Ò¤¬È¾¿ô¤°¤é¤¤¤Ç¤·¤¿¡£

¸Ä¿ÍŪ¤Ë¤Ï¡¢À¸»ºÀ­¤¬°ìÈÖ½Ð¤ëÆ¯¤­Êý¤ò¤Ç¤­¤ì¤Ð¤¤¤¤¤«¤Ê¡¼¤È¤«»×¤Ã¤Æ¤ë¤Î¤Çɬ¿Ü¤Ç¤Ï¤Ê¤¤¤È»×¤Ã¤Æ¤Þ¤¹¡£

°ìÉô¤Î²ñ¼Ò¤ËÆÃÍ­¤Ê¤â¤Î

ʬΥ¥­¡¼¥Ü¡¼¥É¤ª¤¸¤µ¤ó

ÉÛ¶µ¤µ¤ì¤Þ¤·¤¿¡£

·ë¶É´·¤ì¤ë¤³¤È¤Ï¤Ç¤­¤º...

COMP ¤ª¤¸¤µ¤ó

COMP ¥°¥ß¤ò¤Ò¤¿¤¹¤éÇۤäƤ륤¥±¥á¥ó¤Ê¤ª¤¸¤µ¤ó

¿©»ö¤·¤Ê¤¯¤Æ¤âÂç¾æÉפˤʤë¤Î¤ÇÎɤ¤¤â¤Î¤Ç¤¹¤è🌟

¤Þ¤È¤á

¼«Ê¬¤Îµ¤»ý¤Á¤òÀ°Íý¤¹¤ë¤¿¤á¤Ë¤È¤ê¤¢¤¨¤º¤Þ¤È¤á¤Æ¸«¤Þ¤·¤¿¡£

ÆÉ¼Ô¤Ë¤è¤ê¤½¤ì¤¾¤ì´¶ÁۤϤ¢¤ë¤È»×¤¤¤Þ¤¹¡£¤½¤ó¤Ê¿Í¤Ï¤³¤Îµ­»ö¤ò°úÍѤ·¤Æ¤½¤Î¿Í¤Ê¤ê¤ÎÁÛ¤¤¤ò½ñ¤¤¤ÆÍߤ·¤¤¤È»×¤¤¤Þ¤¹✨

¢£iPhone¤«¤éSSH¥³¥Þ¥ó¥É¼Â¹Ô¡¦WebhookÏ¢·È¤â¤Ç¤­¤ë¸ø¼°¥¢¥×¥ê¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¤ò³èÍѤ¹¤ë - yuu26's memo 22:57

<title>iPhone¤«¤éSSH¥³¥Þ¥ó¥É¼Â¹Ô¡¦WebhookÏ¢·È¤â¤Ç¤­¤ë¸ø¼°¥¢¥×¥ê¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¤ò³èÍѤ¹¤ë - yuu26's memo</title>

iPhone¤«¤éSSH¥³¥Þ¥ó¥É¼Â¹Ô¡¦WebhookÏ¢·È¤â¤Ç¤­¤ë¸ø¼°¥¢¥×¥ê¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¤ò³èÍѤ¹¤ë

³µÍ×

iPhone ¤Ç SSH ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤¿¤ê¡¢Webhook Ï¢·È¤òÁȤßΩ¤Æ¤ë¤³¤È¤¬²Äǽ¤È¤Ê¤ê¤Þ¤·¤¿¡£Apple ¸ø¼°¥¢¥×¥ê¤Î¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¤ò»È¤Ã¤Æ¼Â¸½¤Ç¤­¤Þ¤¹¡£

¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¥¢¥×¥ê¤Î³µÍפȡ¢´Êñ¤Ê³èÍÑ»öÎã¤ò¤Þ¤È¤á¤Þ¤·¤¿¡£

iPhone ¤«¤é SSH ¤ä curl ¤¬¼Â¹Ô¤Ç¤­¤ë

¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¥¢¥×¥ê¤Ç¤Ï¡¢Â¿¤¯¤Î¥¢¥¯¥·¥ç¥ó¤¬ÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤ÎÃæ¤Ë¤Ï¡ÖSSH¡×¤ä¡ÖURL ¼èÆÀ¡×¤Ê¤É¤¬´Þ¤Þ¤ì¤Æ¤ª¤ê¡¢¤«¤Ê¤êÍ·¤Ù¤ë¥¢¥×¥ê¤Ë¤Ê¤ê¤½¤¦¤Ç¤¹¡£

URL ¼èÆÀ¤Ï GET ¤Ë¸Â¤é¤º POST ¤ä PUT ¤â²Äǽ¤Ç¡¢´Êñ¤Ê¥ê¥¯¥¨¥¹¥È¤Ç¤¢¤ì¤Ð iPhone ¤«¤é¥µ¥¯¥Ã¤È¼Â¹Ô¤Ç¤­¤Þ¤¹¡£´Ê°× curl ¤Î¤è¤¦¤Ë»È¤¨¤Þ¤¹¡£

SSH ¤Ç¤ÏÊ£¿ô¤Î¥³¥Þ¥ó¥É¤ò°ìÅ٤˼¹ԤǤ­¤ë¤Û¤«¡¢Â¾¥¢¥¯¥·¥ç¥ó¤È¤ÎÏ¢·È¤â²Äǽ¤Ç¤¹¡£

f:id:yuu2634:20180920222607p:plain

iOS 12 ¤Ç Apple ¸ø¼°¥¢¥×¥ê¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¤ò»ÈÍÑ

¤³¤ì¤é¤ÎÁàºî¤Ë¤Ï¡¢iOS 12 °Ê¹ß¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë Apple Ä󶡤Î̵ÎÁ¥¢¥×¥ê¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¤ò»ÈÍѤ·¤Þ¤¹¡£

¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¥¢¥×¥ê¤Ç¼Â¹Ô¤Ç¤­¤ë¥¢¥¯¥·¥ç¥ó¤Ï¿¿ô¤¢¤ê¤Þ¤¹¤¬¡¢ÆÃ¤ËÌÌÇò¤½¤¦¤Ê¤â¤Î¤ò¥Ô¥Ã¥¯¥¢¥Ã¥×¤·¤Æ¤ß¤Þ¤·¤¿¡£

  • »ØÄꤷ¤¿ URL ¤Ë¥ê¥¯¥¨¥¹¥È¤òÁ÷¿®¤¹¤ë¡ÊPOST ¤â²Ä¡Ë
  • SSH ·Ðͳ¤Ç¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë
  • iPhone ¤Î¥Ç¥Ð¥¤¥¹¾õÂÖ¤òÊѹ¹¤¹¤ë


f:id:yuu2634:20180920215904p:plain

¥×¥í¥°¥é¥ß¥ó¥°¤Î¤è¤¦¤Ë¡¢¥æ¡¼¥¶ÆþÎϤò¼õ¤±ÉÕ¤±¤¿¤ê¡¢ÊÑ¿ôÁàºî¤ä¥ë¡¼¥×½èÍý¤â¼Â¹Ô¤Ç¤­¤Þ¤¹¡£¡Ê¾®¤µ¤¤²èÌ̤ǥݥÁ¥Ý¥ÁÁȤà¤Î¤Ï¿É¤¤¤«¤â¤Ç¤¹¤¬¡Ë

f:id:yuu2634:20180920215906p:plain

¤³¤ì¤é¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤Ç¡¢Éý¹­¤¤¥¢¥¯¥·¥ç¥ó¤¬²Äǽ¤È¤Ê¤ê¤Þ¤¹¡£

iPhone ¤«¤é SSH ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë

App Store ¤«¤é¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¥¢¥×¥ê¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤­¤Þ¤¹¡£

¥¢¥×¥ê¤òµ¯Æ°¸å¡¢¥·¥ç¡¼¥È¥«¥Ã¥È¤òºîÀ® ¤ò¥¿¥Ã¥×¡£

f:id:yuu2634:20180922110550p:plain

¥¢¥¯¥·¥ç¥ó¤Î¸¡º÷Í󤬽ФƤ¯¤ë¤Î¤Ç ssh ¤ò¸¡º÷¤·¤ÆÁªÂò¡£

f:id:yuu2634:20180920224702j:plain

Àܳ¾ðÊó¤È¥³¥Þ¥ó¥É¤òÆþÎϤ·¡¢¾åÉôÃæ±û¤Ë¤¢¤ë¼Â¹Ô¥Ü¥¿¥ó¤Ç³«»Ï¡£

f:id:yuu2634:20180920225219j:plain

·ë²Ì¤¬½ÐÎϤµ¤ì¤Þ¤·¤¿¡£¥¢¥¯¥·¥ç¥ó¤ò¸å¤í¤Ë·Ò¤²¤ë¤È¡¢¤³¤Îʸ»úÎ󤬥ѥ¤¥×¤Î¤è¤¦¤ËÅϤµ¤ì¤Æ¤¤¤­¤Þ¤¹¡£

±¦¾å¤ÎÊѤʥܥ¿¥ó¤«¤é¡¢Êݸ¤¹¤ëºÝ¤Î̾¾Î¤ä¥¢¥¤¥³¥ó¤¬ÀßÄê²Äǽ¤Ç¤¹¡£










¥Û¡¼¥à²èÌ̤䥦¥£¥¸¥§¥Ã¥È¤«¤é¥ï¥ó¥¿¥Ã¥×¼Â¹Ô

ºîÀ®¤·¤¿½èÍý¤Ï¡¢¥Û¡¼¥à²èÌ̤䥦¥£¥¸¥§¥Ã¥È¤ËÄɲäǤ­¤Þ¤¹¡£

¥¢¥¤¥³¥ó¿§¤ä¥í¥´¤â¼«Í³¤ËÀßÄê²Äǽ¤Ç¤¹¡£

f:id:yuu2634:20180920224157p:plain

ÆÃ¤Ë¥¦¥£¥¸¥§¥Ã¥È¤ÏÊØÍø¤Ç¡¢¥¢¥×¥ê¤òΩ¤Á¾å¤²¤º¤Ë¥µ¥¯¥Ã¤È¼Â¹Ô¤Ç¤­¤Þ¤¹¡£²ÈÅÅÁàºî·Ï¤Î¥³¥Þ¥ó¥É¤ÈÆÃ¤ËÁêÀ­¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£

iPhone ¤Ç REST API ¤òᤤ¤Æ JSON ¤ò¥Ñ¡¼¥¹¤¹¤ë

¤»¤Ã¤«¤¯¤Ê¤Î¤Ç¡¢°ì¤ÄÎã¤òºî¤Ã¤Æ¤ß¤Þ¤·¤¿¡£

°Ê²¼¤Î URL ¤Ë¥ê¥¯¥¨¥¹¥È¤òÅꤲ¡¢¥¹¥×¥é¥È¥¥¡¼¥ó2¤Î¸½ºß¤Î¥¹¥Æ¡¼¥¸¾ðÊó¤ò JSON ¤Ç¼èÆÀ¡¢JSON ¤ò¥Ñ¡¼¥¹¤·¤Æ¥¹¥Æ¡¼¥¸¾ðÊó¤À¤±¤òÈ´¤­½Ð¤·¤Æ¤ß¤Þ¤¹¡£


º£²ó¤ÎÍ×·ï¤ò¼Â¸½¤¹¤ë¤¿¤á¤Ë¤Ï¡¢5¼ïÎà¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¤òÍѤ¤¤Þ¤¹¡£


f:id:yuu2634:20180920221526p:plain

º£²ó¼èÆÀ¤·¤¿¤¤¥Ç¡¼¥¿¤Ï¡¢JSON Æâ¤Î .result.maps[] ¤È¤Ê¤ê¤Þ¤¹¡£


f:id:yuu2634:20180920222123p:plain

¥Æ¥­¥¹¥È¤Î¤ßÃê½Ð¤Ç¤­¤Þ¤·¤¿¡£¼èÆÀ·ë²Ì¤¬2·ï¤¢¤ë¤¿¤á¡¢²£¥Õ¥ê¥Ã¥¯¤Ç³Îǧ¤Ç¤­¤Þ¤¹¡£

»Å¾å¤²¤È¤·¤Æ¡¢ÄÌÃÎ¥á¥Ã¥»¡¼¥¸¤Ë½ÐÎϤ·¤Þ¤¹¡£


f:id:yuu2634:20180922010359p:plain

¤³¤ì¤Ç´°À®¤Ç¤¹¡£¡Êºî¶ÈÃæ¤Ë¥¹¥Æ¡¼¥¸¤¬ÊѤï¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬¡Ë

¥¦¥£¥¸¥§¥Ã¥È¤«¤é¸Æ¤Ó½Ð¤¹¤È¡¢¥ï¥ó¥¿¥Ã¥×¤Ç¥¹¥Æ¡¼¥¸¾ðÊó¤ò³Îǧ¤Ç¤­¤Þ¤¹¡£

f:id:yuu2634:20180922010751p:plain

¤Ê¤ª¡¢¤³¤³¤Ç»ÈÍѤ·¤¿ REST API ¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¥¤¥«¤Îµ­»ö¤Ë½ñ¤¤¤Æ¤¢¤ê¤Þ¤¹¡£

blog.yuu26.com

¤Á¤Ê¤ß¤Ë User-Agent ¤Ï°Ê²¼¤ÎÃͤǤ·¤¿¡£URL¥¨¥ó¥³¡¼¥É¤Ç¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¤Ç¤¹¤Í¡£

%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88/700 CFNetwork/974.2.1 Darwin/18.0.0


¥®¥ã¥é¥ê¡¼¤Ç¸ø³«¤µ¤ì¤Æ¤¤¤ë¥·¥ç¡¼¥È¥«¥Ã¥È¤ò»È¤¦

¼«Ê¬¤ÇºîÀ®¤¹¤ë¤À¤±¤Ç¤Ê¤¯¡¢¸ø³«¤µ¤ì¤Æ¤¤¤ë¥·¥ç¡¼¥È¥«¥Ã¥È¤âÍøÍѤǤ­¤Þ¤¹¡£

¡Ö»ØÄꤷ¤¿ URL ¤ò iCloud ¤Ë¥À¥¦¥ó¥í¡¼¥É¡×¤È¤¤¤¦¥µ¥ó¥×¥ë¤â¡£

f:id:yuu2634:20180922105544p:plain

ºîÀ®¤·¤¿¥·¥ç¡¼¥È¥«¥Ã¥È¤ò¶¦Í­¤¹¤ë

¥®¥ã¥é¥ê¡¼¤Ø¤ÎÅê¹Æµ¡Ç½¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢ºîÀ®¤·¤¿¥·¥ç¡¼¥È¥«¥Ã¥È¤ÏÊ̤Υ桼¥¶¤Ë¶¦Í­¤Ç¤­¤Þ¤¹¡£¤¿¤À¤Î¥ê¥ó¥¯¤Ê¤Î¤Ç SNS ¤Ç¥·¥§¥¢¤¹¤ë¤³¤È¤âÍÆ°×¤Ç¤¹¡£

f:id:yuu2634:20180922110830j:plain

»²¹Í¤È¤·¤Æ¡¢¥Ê¥ï¥Ð¥ê¥Ð¥È¥ë¤Î¥ê¥ó¥¯¤òÄ¥¤Ã¤Æ¤ª¤­¤Þ¤¹¡£

https://www.icloud.com/shortcuts/0e4cc2619d3740509faed8d0826a3a40

¤Þ¤È¤á

iPhone ¤ÇÍøÍѤǤ­¤ë¸ø¼°¥¢¥×¥ê¡Ö¥·¥ç¡¼¥È¥«¥Ã¥È¡×¤ò¾Ò²ð¤·¤Þ¤·¤¿¡£

ÍøÍѤǤ­¤ë¥¢¥¯¥·¥ç¥ó¤¬Ë­É٤ʤ¿¤á¡¢³°Éô¤Î¥·¥¹¥Æ¥à¤ä API ¤ÈÏ¢·È¤µ¤»¤ÆÍ·¤Ù¤ëÌÌÇò¤¤¥¢¥×¥ê¤Ç¤¹¡£

iOS 12 ¤òÍøÍѤ·¤Æ¤¤¤ëÊý¤Ï¡¢¤¼¤Ò¤ª»î¤·¤¯¤À¤µ¤¤¡£

blog.yuu26.com

2018-09-20

¢£ÀÅŪ¥µ¥¤¥È¤ò¸ø³«¤¹¤ë¤Ê¤é¤É¤³¤¬¤¤¤¤¤Î¡© #µ»½Ñ½ñŵ - ¥Õ¥í¥ó¥È¥¨¥ó¥É¤ÎÃϹö 13:00

<title>ÀÅŪ¥µ¥¤¥È¤ò¸ø³«¤¹¤ë¤Ê¤é¤É¤³¤¬¤¤¤¤¤Î¡© #µ»½Ñ½ñŵ - ¥Õ¥í¥ó¥È¥¨¥ó¥É¤ÎÃϹö</title>

ÀÅŪ¥µ¥¤¥È¤ò¸ø³«¤¹¤ë¤Ê¤é¤É¤³¤¬¤¤¤¤¤Î¡© #µ»½Ñ½ñŵ

SPA¤Ê¤É¤ÎÀÅŪ¥µ¥¤¥È¡ÊPHP¤äRuby¤Ê¤É¤Î¥µ¡¼¥Ð¡¼¥×¥í¥°¥é¥à¤òÁö¤é¤»¤Ê¤¤´Ä¶­¤Ç¤ÎWeb¥µ¥¤¥È¡Ë¤Î¤ò¸ø³«¤¹¤ë¤Ë¤¢¤¿¤Ã¤Æ¡¢±¿ÍÑ¡¦ÇÛ¿®¡Ê¥Û¥¹¥Æ¥£¥ó¥°¡Ë¤¹¤ë¤Ê¤é¤É¤³¤¬¤¤¤¤¤«¤Èʹ¤«¤ì¤¿¤Î¤Ç¤¹¤¬¡¢¤½¤Î¤È¤­¤Î²óÅú¤òµ»½Ñ½ñŵ¤ÎÀëÅÁ¤â·ó¤Í¤Æ¥Ö¥í¥°¤Ë¤·¤¿¤¿¤á¤Þ¤¹¡£

º£²ó¤Ï¼¡¤Î£´¤Ä¤ÇÈæ³Ó¤·¤Æ¤¤¤Þ¤¹¡£

  • GitHub Pages
  • Firebase Hosting
  • GitLab Pages
  • Netlify


¾åµ­£´¤Ä¤Ï¤É¤ì¤âÆÈ¼«¥É¥á¥¤¥ó¤ÎÀßÄê¤Ï̵ÎÁ¤Ç¹Ô¤¦¤³¤È¤¬½ÐÍè¤Þ¤¹¡£

¢¨Èæ³ÓŪ½é¿´¼Ô¤Ë¸þ¤±¤Æ½ñ¤¤¤Æ¤¤¤ëÁ°Äó¤Ç¤¹¡£¤½¤Î¤¿¤áAWS S3¤ä¥ì¥ó¥¿¥ë¥µ¡¼¥Ð¡¼¤Ï¥¢¥«¥¦¥ó¥È¤¬¤Ê¤±¤ì¤ÐÀßÄê¤âÌÌÅݤǤ¹¤·º£²ó¤Ï½ü³°¤·¤Æ¤¤¤Þ¤¹¡£

¾¯¤·µ¡Ç½¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¬É¬ÍפÊÉôʬ¤¬¤¢¤ë¤Î¤Ç¡¢Àè¤ËÀâÌÀ¤ò½ñ¤­¤Þ¤¹¡£

RewriteÀßÄê¤Ë¤Ä¤¤¤Æ

SPA¤ÇÀÅŪ¥µ¥¤¥È¤ò¸ø³«¤¹¤ëºÝ¤Ë¤¢¤ê¤¬¤Á¤Ê¥ß¥¹¤Ê¤Î¤Ç¤¹¤¬¡¢URL¤òÊѹ¹¤·¤Æ¥µ¥Ö¥Ç¥£¥ì¥¯¥È¤Ë¿Ê¤ó¤Ç¤«¤é¥ê¥í¡¼¥É¤¹¤ë¤È404¥Ú¡¼¥¸¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤È¤¤¤¦¤â¤Î¤Ç¤¹¡£

¤³¤ì¤Ï¸ø³«¥µ¥¤¥È¤Ç¥Ú¡¼¥¸¤Î404¤ÎRewriteÀßÄ꤬½ÐÍè¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ëµ¯¤³¤Ã¤Æ¤·¤Þ¤¦»ö¾Ý¤Ç¤¹¡£

¡Ö¥Õ¥¡¥¤¥ë¤ÎÆÉ¤ß¹þ¤ß»þ¤Ë404¤À¤Ã¤¿¤é index.html ¤òÊÖ¤¹ÀßÄê¡×¤ò¤¹¤ë¤³¤È¤Ç¡¢¥ê¥í¡¼¥É¤·¤Æ¤â·Ñ³¤·¤Æ¥µ¥¤¥È±ÜÍ÷¤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¡£(¤½¤Î¾ì¹ç¤ÏJavaScript¤Ç404¥Ú¡¼¥¸¤«¤É¤¦¤«¤òȽÄꤷ¤Þ¤¹¡£)

ÀßÄ꤬½ÐÍè¤Ê¤¤´Ä¶­¤ÇSPA¤Î¥ë¡¼¥Æ¥£¥ó¥°¤òÍøÍѤ¹¤ë¾ì¹ç¤Ï¥Ï¥Ã¥·¥å¥ë¡¼¥¿¡¼¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¥Ó¥ë¥Éµ¡Ç½¤Ë¤Ä¤¤¤Æ

¥×¥í¥¸¥§¥¯¥È¤Ë¤è¤Ã¤Æ¤ÏWebpack¤Ê¤É¤òÍøÍѤ·¤Æ¡¢html,css,js¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¡Ê¥È¥é¥ó¥¹¥Ñ¥¤¥ë¡Ë¤·¤Æ¤«¤é¸ø³«¤¹¤ë¤È»×¤¤¤Þ¤¹¡£

¤½¤Î¤È¤­¤Ë¥Ó¥ë¥Éµ¡Ç½¤¬¤Ä¤¤¤Æ¤¤¤ë´Ä¶­¤Î¾ì¹ç¤Ï¡¢¡Ö¼ê¸µ¤Ç¥Ó¥ë¥É¤·¤¿¤â¤Î¤ògit¤Ç´ÉÍý¤·¤¿¤ê¡¢¥Ó¥ë¥É¤·¤Æ¤«¤édeploy¤¹¤ë¡×Åù¤Î¼ê´Ö¤¬¾Ê¤±¤Þ¤¹¡£

¥Æ¥¹¥È¤ò½ñ¤¤¤Æ¤¤¤¿¤é¥Æ¥¹¥È¤¬Ä̤뤫¤É¤¦¤«¤Ê¤É¤â¤½¤³¤Ç¥Á¥§¥Ã¥¯¤·¤Æ¡¢¥Ç¥×¥í¥¤¤¹¤ë¤«¤É¤¦¤«¤òÁªÂò¤Ç¤­¤¿¤ê¤â¤·¤Þ¤¹¡£

³Æ¥µ¡¼¥Ó¥¹¤Îµ¡Ç½¤ò¾Ò²ð

GitHub Pages

  • ¤È¤Ë¤«¤¯¥¿¥À¤Ç»È¤¨¤Þ¤¹¡ª
  • »È¤¨¤Þ¤¹¤¬¡¢²¼µ­¤Îµ­»ö¤Î¤è¤¦¤ÊÀ©¸Â¤¬¤¢¤ê¤Þ¤¹


GitHub Pages¤Ç¥Û¥¹¥È¤¹¤ë¥µ¥¤¥È¤Î¥¢¥¯¥»¥¹¾å¸Â¤Ï·î10Ëü¥ê¥¯¥¨¥¹¥È¤¬ÌܰÂ

  • ÀßÄꤷ¤¿ÆÃÄê¤Î¥Ö¥é¥ó¥Á¤¬¼«Æ°¤Ç¸ø³«¤µ¤ì¤ë¤Î¤Ç´ÉÍý¤¬³Ú¡£
  • ¡ß: SPAÍѤÎRewriteÀßÄêÉÔ²Ä
  • ¡ß: ¥Ó¥ë¥Éµ¡Ç½Ìµ¤·


Firebase Hosting

  • ¢¤: ¤¿¤¯¤µ¤ó¥¢¥¯¥»¥¹¤¬¤¢¤ë¤È¥Ç¡¼¥¿ÍÆÎ̤˱þ¤¸¤Æ²Ý¶â¤¬É¬Íפˤʤê¤Þ¤¹


(̵ÎÁÏȤÇÍøÍѤ·¤Æ¤¤¤ÆÀ©¸Â¤Þ¤Ç¹Ô¤Ã¤¿¤é¡¢ÄÌÃΤ¬Íè¤ë¤Î¤ß¤Ç¾¡¼ê¤Ë²Ý¶â¤µ¤ì¤ë¤è¤¦¤Ê¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£)

  • SPAÍѤÎRewriteÀßÄê²Äǽ
  • ÆÃÄê¤Î¥Ñ¥¹¤òFirebase Functions¤Ë·Ò¤°¤³¤È¤¬¤Ç¤­¤ë
  • ¡ß: ¥Ó¥ë¥Éµ¡Ç½Ìµ¤·


GitLab Pages

  • ¤È¤Ë¤«¤¯¥¿¥À¤Ç»È¤¨¤ë
  • SPAÍѤÎRewriteÀßÄê²Äǽ
  • ÆÃÄê¤Î¥Ö¥é¥ó¥Á¤¬¼«Æ°¸ø³«¤Ç¤­¤Æ´ÉÍý¤¬³Ú
  • ¥Ó¥ë¥Éµ¡Ç½¥¢¥ê


Netlify

  • ¤È¤Ë¤«¤¯¥¿¥À¤Ç»È¤¨¤ë
  • SPAÍѤÎRewriteÀßÄê²Äǽ
  • GitHub¤äGitLab¤ÈÏ¢·È¤·¤Æ¡¢ÀÅŪ¥µ¥¤¥È¤ò¼«Æ°¤Ç¸ø³«²Äǽ
  • ¥Ó¥ë¥Éµ¡Ç½¥¢¥ê
  • ÆÃÄê¤Î¥Ñ¥¹¤ËAWS lambda(Netlify Functions)Àܳ²Äǽ


¤Þ¤È¤á

¤¹¤Ç¤ËGitHub¡¢GitLab¤Ç¥½¡¼¥¹¤ò´ÉÍý¤·¤Æ¤¤¤ë¤È¤·¤Æ¡¢¥é¥¤¥Ö¥é¥ê¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤Ê¤É¤Î¤Á¤ç¤Ã¤È¤·¤¿¥µ¥¤¥È¤Ê¤é¤½¤ì¤¾¤ì¤ÎPagesµ¡Ç½¤ò»È¤¦¤È¼ê·Ú¤Ç¤¹¡£

Firebase¤òÍøÍѤ·¤Æ¤¤¤Æ¡¢Functions¤È¥Ñ¥¹¤ò¤Ä¤Ê¤®¤¿¤¤¤Ê¤éFirebase Hosting¤òÍøÍѤ·¤Þ¤·¤ç¤¦¡£¤·¤«¤·¥Ó¥ë¥Éµ¡Ç½¤¬¤Ê¤¤¤Î¤ÇɬÍפʾì¹ç¤ÏCircle CI¤Ê¤É¤ÈÊ»ÍѤ¬É¬ÍפǤ¹¡£

¾¡¢Firebase Functions¤È¤Ä¤Ê¤®¤¿¤¤¾ì¹ç¤ò½ü¤¤¤ÆÊØÍø¤Êµ¡Ç½¤¬Â·¤Ã¤Æ¤¤¤ëNetlify¤ò¤ª¤¹¤¹¤á¤·¤Æ¤¤¤Þ¤¹¡£Netlify¤Ë¤Ï¾¤Ë¤â¤¿¤¯¤µ¤ó¤ÎÊØÍø¤Êµ¡Ç½¤¬È÷¤ï¤Ã¤Æ¤¤¤Þ¤¹¡£

Netlify¤Î¾åµ­°Ê³°ÊØÍøµ¡Ç½¾Ò²ð

  • ¥Ö¥é¥ó¥ÁËè¤Ë¼«Æ°¤Ç¥µ¥¤¥È¤ò¸ø³«¤Ç¤­¤ë¡Ê¥×¥ë¥ê¥¯¤ò³Îǧ¤¹¤ë¤È¤­¤Ê¤ÉÊØÍø¡Ë
  • Webhook¤Ç¥Ó¥ë¥É¤·¤¿¤ê¡¢¥Ó¥ë¥É¤·¤Æ¥Ç¥×¥í¥¤¤·¤¿¤éSlack¤ËÄÌÃΤ¹¤ë¡ÊGitLab¤â²Äǽ¡Ë
  • ¥Ö¥é¥ó¥Á¤´¤È¤ÎA/B¥Æ¥¹¥ÈÍѤ˽Ф·Ê¬¤±¤¬¤Ç¤­¤ë
  • ¥µ¡¼¥Ð¡¼¥µ¥¤¥É¥ì¥ó¥À¥ê¥ó¥°¤·¤Ê¤¤SPA¤À¤±¤É¡¢¥³¥ó¥Æ¥ó¥Ä¤Ë±þ¤¸¤ÆOGP²èÁü¤Ê¤É¤Îmeta¾ðÊó¤ò½Ð¤·Ê¬¤±¤é¤ì¤ë(Prerenderingµ¡Ç½)
  • ÀÅŪ¥µ¥¤¥È¤Ç¤¢¤ë¤¢¤ë¤Ê¡Ö¥Õ¥©¡¼¥à¤À¤±ÀßÃÖ¤·¤¿¤¤¡×¾ì¹ç¤âNetlify Form¤¬ÍøÍѤǤ­¤ë
  • ¥Ö¥í¥°¤Ê¤É¤òºî¤ê¤¿¤¤¾ì¹ç¤Ë¥³¥ó¥Æ¥ó¥Ä¤ò´ÉÍý¤Ç¤­¤ëNetlify CMS¤â¤¢¤ê¤Þ¤¹


¾¤Ë¤â¥Á¡¼¥à³«È¯¤ÇɬÍפʵ¡Ç½¤ä¡¢BASICǧ¾Ú¤ÎÀßÄê(Í­ÎÁ)¤Ê¤ÉÍÍ¡¹¤ÊÀÅŪ¥µ¥¤¥È¸ø³«¤ËÊØÍø¤Êµ¡Ç½¤¬È÷¤ï¤Ã¤Æ¤¤¤Þ¤¹¡ª

¤È¤¤¤¦¤³¤È¤ÇÀëÅÁ

¤½¤ó¤ÊNetlify¤ÎÍÍ¡¹¤Êµ¡Ç½¤ò£±¤«¤é£±£°¤Þ¤Ç¤Û¤ÜÁ´¤Æ¼ÂÎã¤ò»È¤Ã¤Æ²òÀ⤹¤ëËܤòº£ÅÙ¤Î10·î8Æü¤Ë³«ºÅ¤µ¤ì¤ëµ»½Ñ½ñŵ¤ÇÈÎÇ䤷¤Þ¤¹¤Î¤Ç¡¢¤¤¤é¤Ã¤·¤ã¤ëÊý¤Ï¥í¥°¥¤¥ó¤·¤Æ²¼µ­¤Î¥Ú¡¼¥¸¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¼¤Ò¤¼¤ÒÇ㤤¤ËÍè¤Æ¤¯¤À¤µ¤¤¡ª¡ª¡ª

techbookfest.org

°Ê¾å¤Ç¤¹¤¬¡¢ËÜÇã¤ï¤Ê¤¯¤È¤âNetlify¤Ï¤á¤Ã¤Á¤ãÊØÍø¤Ê¤Î¤Ç°ìÅٻȤäƤߤƲ¼¤µ¤¤¡ª

2018-09-19

¢£ReactÀ½¤ÎSPA¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¥Á¥å¡¼¥Ë¥ó¥°¼ÂÎã | ¥ê¥¯¥ë¡¼¥È¥Æ¥¯¥Î¥í¥¸¡¼¥º¡¡¥á¥ó¥Ð¡¼¥º¥Ö¥í¥° 18:56

<title>ReactÀ½¤ÎSPA¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¥Á¥å¡¼¥Ë¥ó¥°¼ÂÎã | ¥ê¥¯¥ë¡¼¥È¥Æ¥¯¥Î¥í¥¸¡¼¥º¡¡¥á¥ó¥Ð¡¼¥º¥Ö¥í¥°</title>

ReactÀ½¤ÎSPA¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¥Á¥å¡¼¥Ë¥ó¥°¼ÂÎã

¤³¤ó¤Ë¤Á¤Ï.¥¨¥ó¥¸¥Ë¥¢¥ê¥ó¥°¥Þ¥Í¡¼¥¸¥ã¡¼¤Î¸ÞÌ£¤Ç¤¹.

º£²ó¤«¤é 11 ·îËö¤Þ¤Ç,18Æþ¼Ò¿·¿Í¤Î¤¦¤Á9̾¤Ë¤è¤ë¥Ö¥í¥°¥ê¥ì¡¼¤ò³«ºÅ¤·¤Þ¤¹.

ÇÛ°Á°¸¦½¤ ) ¤ò½ª¤¨¤¿Èà¤é¤Ï¡¢¤½¤ì¤¾¤ì¤Î¥¹¥Ú¥·¥ã¥ê¥Æ¥£¤¬ºÇ¤â³è¤«¤»¤ë¤Ç¤¢¤í¤¦¥°¥ë¡¼¥×¤ËÇÛ°¤µ¤ì¤Þ¤·¤¿.

Åö¼Ò¤Î¼ã¼ê¥¨¥ó¥¸¥Ë¥¢¤¬¤É¤Î¤è¤¦¤Ê»Å»ö¤Ë¼è¤êÁȤß,²¿¤ò´¶¤¸,²¿¤ò¤·¤Æ¤¤¤ë¤Î¤«.ËÜÏ¢ºÜ¤Ç¤Ï,¤½¤Î°ìü¤ò¾Ò²ð¤·¤Æ¤¤¤­¤¿¤¤¤È»×¤¤¤Þ¤¹.

SPA ³«È¯,¥»¥­¥å¥ê¥Æ¥£¿ÇÃÇ,¥×¥í¥À¥¯¥È³«È¯¤Ë¤ª¤±¤ë¥×¥í¥»¥¹±¿ÍÑ¡¦µ¡Ç½²þÁ±»öÎã¤Ê¤É¤òͽÄꤷ¤Æ¤¤¤Þ¤¹¤Î¤Ç,¤É¤¦¤¾³Ú¤·¤ß¤Ë¤·¤Æ¤¤¤Æ¤¯¤À¤µ¤¤.

½é²ó¤Ï¥Õ¥í¥ó¥È¥¨¥ó¥É¥¨¥ó¥¸¥Ë¥¢ ÄÔ ·ò¿Í ¤«¤é¤Î¥¨¥ó¥È¥ê¡¼¤Ç¤¹.

¤Ï¤¸¤á¤Ë

¤Ï¤¸¤á¤Þ¤·¤Æ¡ª¥ê¥¯¥ë¡¼¥È¥Æ¥¯¥Î¥í¥¸¡¼¥º¤Ë4·î¤Ë¿·Â´Æþ¼Ò¤·¤¿ ÄÔ ·ò¿Í¤Ç¤¹¡ªGitHub¤Ç¤Ïmaxmellon¤Ç³èư¤·¤Æ¤¤¤Þ¤¹¡¥

º£²ó¤Ï¡¤»ä¤¬Ã´Åö¤·¤Æ¤¤¤ëAir¥·¥Õ¥È¤È¤¤¤¦¥·¥Õ¥È´ÉÍý¥µ¡¼¥Ó¥¹¤Ç¼Â»Ü¤·¤¿ÆâÍÆ¤ò¾Ò²ð¤·¤Þ¤¹¡¥

Ëܵ­»ö¤Ç¤Ï¡¤React¤Ë¤ª¤±¤ëºÆ¥ì¥ó¥À¥ê¥ó¥°¤Î¥á¥«¥Ë¥º¥à¤ò´ðËÜŪ¤ÊÉôʬ¤«¤é°·¤¤¡¤ SPA¤Ë¤ª¤±¤ëºÆ¥ì¥ó¥À¥ê¥ó¥°¤ÎºÇŬ²½¤Ç¤ÎÃå´ãÅÀ¤ä²þÁ±ÊýË¡¤ò¾Ò²ð¤·¤Þ¤¹¡¥

Air¥·¥Õ¥È¤È¤Ï

Air¥·¥Õ¥È¤Ï¡¤¥·¥Õ¥Èɽ¤ÎºîÀ®¤Ï¤â¤Á¤í¤ó¡¤¥¹¥¿¥Ã¥Õ¤È¤Î¤ä¤ê¤È¤ê¤äºÙ¤«¤ÊÄ´À°¶È̳¤â¥é¥¯¤Ë¤Ê¤ë¥·¥Õ¥È´ÉÍý¥µ¡¼¥Ó¥¹¤Ç¤¹¡¥

ľ´¶Åª¤ËÁàºî¤Ç¤­¤ë¥·¥ó¥×¥ë¤Ê²èÌ̤ǡ¤´Êñ¤Ë¥·¥Õ¥ÈºîÀ®¤¬¹Ô¤¨¤Þ¤¹¡¥¥·¥Õ¥Èɽ¤È°ìÂΤȤʤä¿¥Á¥ã¥Ã¥È¤ò»È¤Ã¤Æ¥¹¥¿¥Ã¥Õ¤È¤ä¤ê¤È¤ê¤¬¤Ç¤­¤ë¤Î¤Ç¡¤¥·¥Õ¥È¤ÎºîÀ®¤Ï¤â¤Á¤í¤ó¡¤µÞ¤ÊÄ´À°¤äÏ¢Íí¤¬¤Ç¤­¤Þ¤¹¡¥

µ»½Ñ¥¹¥¿¥Ã¥¯¤È¤·¤Æ¤Ï¡¤React/Redux¡¤¥Á¥ã¥Ã¥Èµ¡Ç½¤ËWebSocket¡¤ SSR¤ä¥æ¡¼¥¶Ç§¾Ú¡¤¥Õ¥¡¥¤¥ë¥À¥¦¥ó¥í¡¼¥É¤ËBFF¥¢¡¼¥­¥Æ¥¯¥Á¥ã¤òºÎÍѤ·¤Æ¤¤¤Þ¤¹¡¥

ÇØ·Ê

Air¥·¥Õ¥È¤Î¥æ¡¼¥¶¤òˬÌ䤹¤ëµ¡²ñ¤¬¤¢¤ê¡¤¥Ò¥¢¥ê¥ó¥°¤ò¹Ô¤Ã¤¿·ë²Ì¡¤Air¥·¥Õ¥È¤Îưºî¤¬½Å¤¤¤È¤¤¤¦À¼¤¬¤¢¤¬¤ê¤Þ¤·¤¿¡¥ ¥·¥Õ¥Èɽ¤Îɽ¼¨´ü´Ö¤òÀÚ¤êÂØ¤¨¤ë¤È¡¤¼¡¤Î²èÌ̤¬É½¼¨¤µ¤ì¤ë¤Þ¤Ç¤Ë¿ôÉ䫤«¤Ã¤Æ¤¤¤ë¤è¤¦¤Ç¤·¤¿¡¥ ¥æ¡¼¥¶¤ÎÍøÍѴĶ­¤Ïɬ¤º¤·¤â¥Ï¥¤¥¹¥Ú¥Ã¥¯¤ÊPC¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¤¿¤á¡¤¤è¤ê¿¤¯¤Î´Ä¶­¤Ç²÷Ŭ¤ËÍøÍѤ·¤Æ¤â¤é¤¨¤ë¤è¤¦¡¤¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹²þÁ±¤ò¼Â»Ü¤¹¤ë¤³¤È¤Ë¤·¤Þ¤·¤¿¡¥

¤½¤ì¤Ë¤¢¤¿¤Ã¤ÆÄ´ºº¤·¤¿µ»½Ñ¤ä¡¤¼ÂºÝ¤Ë¥×¥í¥À¥¯¥È¤ËƳÆþ¤·¤¿µ»½Ñ¤ò¾Ò²ð¤·¤Þ¤¹¡¥

²ÝÂê

º£²ó¡¤React¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤Ë¤Ä¤¤¤Æ¿¨¤ì¤ë¤Î¤Ï¡¤Air¥·¥Õ¥È¤Ë¤ª¤¤¤Æ¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤Î²ÝÂ꤬¤¢¤Ã¤¿¤«¤é¤Ç¤¹¡¥ ¤É¤Î¤è¤¦¤Ê²ÝÂ꤫¤È¤¤¤¦¤È¡¤¤¿¤¯¤µ¤ó»È¤Ã¤Æ¤¯¤ì¤Æ¤¤¤ë¥æ¡¼¥¶¡¼¤Û¤É½Å¤¯¤Ê¤ê¡¤·ë²Ì¤È¤·¤ÆÁ«°Ü¤Ë¿ô½½É䫤«¤Ã¤Æ¤¤¤ë¤È¤¤¤¦²ÝÂ꤬¤¢¤ê¤Þ¤·¤¿¡¥ ÆÃ¤Ë¡¤º£²ó¥Ò¥¢¥ê¥ó¥°¤Ë¹Ô¤Ã¤¿Å¹ÊޤǤϡ¤¥Þ¥·¥ó¥ê¥½¡¼¥¹¤¬½áÂô¤Ç¤Ï¤Ê¤¤´Ä¶­¤ÇÁàºî¸å¤ËÂԤĻþ´ÖÈó¾ï¤Ë¤¬Ä¹¤¯¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Þ¤·¤¿¡¥

¼ÂºÝ¤Ë¤É¤ì¤°¤é¤¤ÃÙ¤¤¤Î¤«¤ò¡¤Ä㥹¥Ú¥Ã¥¯¤ÊPC¤ò¥¨¥ß¥å¥ì¡¼¥È¤·¤Æ·×¬¤·¤Æ¤ß¤Þ¤·¤¿¡¥

  • ·×¬´Ä¶­

MacBook Pro (13-inch, 2017)

¹àÌÜ ¾ÜºÙ
OS macOS High Sierra
CPU 3.1GHz Intel Core i5
¥á¥â¥ê 16GB 2133 MHz LPDDR3
¥°¥é¥Õ¥£¥¯¥¹ Intel Iris Plus Graphics 650 1536MB
¥Ö¥é¥¦¥¶ Google Chrome 68.0.3440 (64bit)
Äɲþò·ï CPU x4 Slow Down (¥¹¥Ú¥Ã¥¯¤ÎÄ㤤PC¤ÇÃÙ¤¤ÌäÂê¤òºÆ¸½¤¹¤ë¤¿¤á)
¥Ç¡¼¥¿¿ô 15¿Í 2¥°¥ë¡¼¥× 150¥·¥Õ¥È/·î (¸½¼ÂŪ¤Ê¥Ç¡¼¥¿¿ô)

º£²ó¡¤¥Ò¥¢¥ê¥ó¥°¤Ç¥¹¥Ú¥Ã¥¯¤ÎÄ㤤PC¤ÇÃø¤·¤¯¤³¤ÎÌäÂ꤬¸²Ãø¤Ë¸½¤ì¤¿¤Î¤Ç¡¤¤½¤Î´Ä¶­¤òºÆ¸½¤¹¤ë¤¿¤á¤Ë¡¤ Google Developer Tools ¤Îµ¡Ç½¤Ç¡¤CPU¤ÎÀ­Ç½¤ò4ÇÜÄ㮤ˤ·¤Þ¤¹¡¥

¸·Ì©¤ÊºÆ¸½¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¤¬¡¤Ä㥹¥Ú¥Ã¥¯»þ¤Ë¤É¤¦Æ°¤¤¤Æ¤¤¤ë¤«¤òµ¤·Ú¤ËºÆ¸½¤Ç¤­¤ë¤Î¤Ç¡¤º£²ó¤Ï¤³¤Îµ¡Ç½¤ò»È¤¤¤Þ¤·¤¿¡¥

·×¬·ë²Ì

  • ·×¬ÂоݤÎÁàºî

½µ¤«¤é·î¤ØÊѹ¹¤¹¤ë¤È¤¤¤¦Áàºî

  • API¥ê¥¯¥¨¥¹¥È/¥ì¥¹¥Ý¥ó¥¹»þ´Ö

API¤â900msec¤È¤½¤ì¤Ê¤ê¤Ë»þ´Ö¤¬¤«¤«¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¤¤½¤ì°Ê¾å¤ËScripting (JavaScript ¤ò¼Â¹Ô¤·¤Æ¤¤¤ë»þ´Ö) ¤Ë»þ´Ö¤¬¤«¤«¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡¥¤½¤Î»þ´Ö¹ç·×¤¹¤ë¤È¤Ê¤ó¤È 15sec¤Ë¤â¤Ê¤ê¤Þ¤¹¡¥

¤³¤ì¤ò²ò·è¤¹¤ë¤Ë¤¢¤¿¤Ã¤Æ»È¤Ã¤¿¼êË¡¤ä²ò·èºö¤ò¾Ò²ð¤·¤Þ¤¹¡¥

»ÅÁȤߤÎÍý²ò

¥Þ¥¦¥ó¥È¤ÈºÆ¥ì¥ó¥À¥ê¥ó¥°

¤Þ¤º¡¤Ä´ºº¤ä²þÁ±¤ò¹Ô¤¦Á°¤Ë¡¤React ¤È¤Ï¤É¤¦¤¤¤¦»ÅÁÈ¤ß¤ÇÆ°¤¤¤Æ¤¤¤ë¤«¤òÍý²ò¤¹¤ë¤³¤È¤¬½ÅÍפǤ¹¡¥ ¤Ê¤Î¤Ç¡¤React¤Î¥é¥¤¥Õ¥µ¥¤¥¯¥ë¤ä¥ì¥ó¥À¥ê¥ó¥°¼þÊդνèÍý¤Ë¤Ä¤¤¤ÆÃåÌܤ·¤Þ¤¹¡¥

React¤Ë¤ª¤±¤ëComponent ¤¬ ¥ì¥ó¥À¥ê¥ó¥° ¤¹¤ë¾ìÌ̤ϡ¤2¤Ä¤¢¤ê¤Þ¤¹¡¥ ¤½¤ì¤¾¤ì¡¤¥Þ¥¦¥ó¥È¤ÈºÆ¥ì¥ó¥À¥ê¥ó¥°¤Ç¤¹¡¥

°ã¤¤¤È¤·¤Æ¤Ï¡¤¥Þ¥¦¥ó¥È¤Ç¤Ï¡¤¥Õ¥ë¤ËDOM¤òÀ¸À®¤·¡¤¿ÆÍ×ÁǤ˥ޥ¦¥ó¥È¤¹¤ë¤Î¤ËÂФ·¤Æ¡¤ ºÆ¥ì¥ó¥À¥ê¥ó¥°¤Ç¤Ïº¹Ê¬¤ò·×¬¤·¡¤ºÆ¥ì¥ó¥À¥ê¥ó¥°¤ÎɬÍפ¬¤¢¤ë¤â¤Î¤ËÂФ·¤Æ¡¤ºÇ¾®¸Â¤Î¹¹¿·¤ò¹Ô¤¤¤Þ¤¹¡¥

Tips:

¥Þ¥¦¥ó¥È¤Ï¡¤¸ø¼°¥É¥­¥å¥á¥ó¥È¤Ç¤Ï Mounting ¤ä Mount ¤Èɽµ­¤µ¤ì¤Æ¤¤¤Þ¤¹

ºÆ¥ì¥ó¥À¥ê¥ó¥°¤Î¤³¤È¤Ï Updating ¤ä Update ¤Èɽµ­¤µ¤ì¤Æ¤¤¤Þ¤¹

¥Þ¥¦¥ó¥È»þ¤Î¥é¥¤¥Õ¥µ¥¤¥¯¥ë

¥Þ¥¦¥ó¥È»þ¤Ë¤Ï¡¤Component ¤Ë¼ÂÁõ¤µ¤ì¤¿¼¡¤Î´Ø¿ô¤¬½ç¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡¥

ºÆ¥ì¥ó¥À¥ê¥ó¥°»þ¤Î¥é¥¤¥Õ¥µ¥¤¥¯¥ë

ºÆ¥ì¥ó¥À¥ê¥ó¥°»þ¤Ë¤Ï¡¤Component ¤Ë¼ÂÁõ¤µ¤ì¤¿¼¡¤Î´Ø¿ô¤¬½ç¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡¥

¤³¤³¤Ç¡¤½ÅÍפˤʤë¤Î¤¬¡¤ shouldComponentUpdate ¤Ç¤¹¡¥

shouldComponentUpdate ´Ø¿ô¤Ï¡¤prevProps, prevState ¤ò¼õ¤±¼è¤ê¡¤¸½ºß¤Î props, state ¤òÈæ³Ó¤·¤Æ¹¹¿·¤¹¤ëɬÍפ¬¤¢¤ë¤«¤É¤¦¤«¤òȽÄꤷ¡¤¤½¤Î·ë²Ì¤òboolean¤ÇÊÖ¤¹´Ø¿ô¤Ç¤¹¡¥ ¹¹¿·¤ÎɬÍפ¬¤¢¤ê¤È¤·¤¿¾ì¹ç¤Ï¡¤ true ¤òÊÖ¤·¤Þ¤¹¡¥ ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¤¾ï¤Ë true  ¤Ç¤¹¡¥ ¤Ä¤Þ¤ê¡¤props¤Î¥¤¥ó¥¹¥¿¥ó¥¹¡¤state¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬ÊѲ½¤·¤¿¤È¤­¡¤¤½¤ÎÃæ¿È¤ÎÃͤ¬Á´¤¯Æ±¤¸¤Ç¤âºÆ¥ì¥ó¥À¥ê¥ó¥°¤µ¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡¥

ºÆ¥ì¥ó¥À¥ê¥ó¥°¤ò¥Á¥å¡¼¥Ë¥ó¥°¤¹¤ëºÝ¤Ë¤Ï¡¤shouldComponentUpdate ¤ËÃåÌܤ¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

React ¤Ë¤ª¤±¤ë List ¤È key

¥ê¥¹¥È¤Ë¤ª¤¤¤Æ¤Ï¡¤µ¤¤ò¤Ä¤±¤Æ¤ª¤¯¤³¤È¤¬¥é¥¤¥Õ¥µ¥¤¥¯¥ë¤Ë²Ã¤¨¤Æ¤â¤¦°ì¤Ä¤¢¤ê¤Þ¤¹¡¥ ¤½¤ì¤Ïkey ¤Ç¤¹¡¥ key¤Ï¡¤·«¤êÊÖ¤·¤ÎÍ×ÁǤˤª¤¤¤ÆÆ±¤¸Í×ÁǤ«¤É¤¦¤«¤òȽÄꤷ¡¤Í×ÁǤòÁý¸º¤µ¤»¤ë¤¿¤á¤Î¼±Ê̻ҤǤ¹¡¥

ŬÀÚ¤Êkey¤È¤½¤¦¤Ç¤Ê¤¤key¤Ç²¿¤¬ÊѤï¤ë¤«¤ò¶ñÂÎŪ¤Ë¸«¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡¥

¼¡¤Î¤è¤¦¤Ê¥¢¥¤¥Æ¥à¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¥ê¥¹¥È¤Çɽ¼¨¤¹¤ë¤È¤·¤Þ¤¹


1

2

3

4

5

6

7

8

9

10

type ItemType = {

  id: string,

  content: string,

}

function Item({ item }: { item: ItemType }) {

  return (

    <li>{item.content}</li>

  )

}


¼¡¤Î¤è¤¦¤Ë2¤Ä¤Îkey¤ÎÉÕ¤±Êý¤Ç¼ÂÁõ¤·¤¿¤È¤·¤Þ¤¹

  • °­¤¤key¤ÎÉÕ¤±Êý


1

2

3

4

5

6

7

8

9

10

function List({ items }: { items: Array<ItemType> }) {

  return (

    <div>

      <h1>ÉÔŬÀÚ¤Êkey</h1>

      <ul>

        {items.map((item) => <Item key={Math.random() + ''} item={item} />)}

      </ul>

    </div>

  )

}


  • Îɤ¤key¤ÎÉÕ¤±Êý


1

2

3

4

5

6

7

8

9

10

function List({ items }: { items: Array<ItemType> }) {

  return (

    <div style={{ display: 'inline-block', width: '25vw' }}>

      <h1>ŬÀÚ¤Êkey</h1>

      <ul>

        {items.map((item) => <Item key={item.id} item={item} />)}

      </ul>

    </div>

  )

}


¤³¤ì¤é¤ò¥ì¥ó¥À¥ê¥ó¥°¤¹¤ë¤È¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥(props¤ÎÊѲ½¤¬¤ï¤«¤ê¤ä¤¹¤¤¤è¤¦¤Ë1É䴤ȤËitems¤òÄɲä·¤Þ¤¹)

Îп§¤Ë¸÷¤Ã¤Æ¤¤¤ë²Õ½ê¤¬¿·¤·¤¤DOM¤¬À¸À®¤µ¤ì¤Æ¤¤¤ë²Õ½ê¤Ë¤Ê¤ê¤Þ¤¹¡¥¥Ç¡¼¥¿¤Èkey¤¬Âбþ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤¾ï¤Ë¥Þ¥¦¥ó¥È¤¬È¯À¸¤·¤Æ¤¤¤Þ¤¹¡¥ ²Ã¤¨¤Æ¡¤ºÆ¥ì¥ó¥À¥ê¥ó¥°¤Ç¤Ï¤Ê¤¯¡¤¥Þ¥¦¥ó¥È¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Î¤Ç¡¤shouldComponentUpdate¤Ë¤è¤ëÀ©¸æ¤â¤Ç¤­¤Þ¤»¤ó¡¥ Èó¾ï¤Ë¥³¥¹¥È¤¬¹â¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤¹¡¥

°ìÈÌŪ¤Ë¡¤API¤¬DB¤ÎÆâÍÆ¤òjson¤ÇÊÖ¤·¤¿¤â¤Î¤òÉÁ²è¤¹¤ë¤È¤­¡¤¤½¤Î¥Ç¡¼¥¿¤Î¼ç¥­¡¼¤äÂåÍÑ¥­¡¼¤òReact ¤Î key ¤Ë¤¹¤ë¤ÈÎɤ¤¤Ç¤·¤ç¤¦¡¥

key¤ò»ØÄꤷ¤Ê¤«¤Ã¤¿¤È¤­¤É¤¦¤Ê¤ë¤«

key¤¬Â¸ºß¤¹¤ë¤«¤É¤¦¤«¡¤¤¢¤ë¤¤¤Ïunique¤Ç¤¢¤ë¤«¤É¤¦¤«¤Îvalidation¤Ï³«È¯´Ä¶­¤Ç¤Î¤ßReact¦¤¬¤·¤Æ¤¯¤ì¤Þ¤¹¡¥

¤½¤·¤Æ¡¤key¤¬Â¸ºß¤·¤Ê¤«¤Ã¤¿¤È¤­¤Ï¡¤ÇÛÎó¤Îindex¤¬key¤È¤·¤Æ¼«Æ°Åª¤Ë»È¤ï¤ì¤Þ¤¹¡¥ ¤·¤«¤·¡¤index¤òkey¤È¤¹¤ë¾ì¹ç¤Ç¤â¡¤map((item, key) => <Component key={key} />) ¤Î¤è¤¦¤Ë¡¤¤­¤Á¤ó¤ÈÌÀµ­¤·¤Þ¤·¤ç¤¦¡¥

List¤Ë¤ª¤±¤ëºÆ¥ì¥ó¥À¥ê¥ó¥°

¥Ç¡¼¥¿¤Ë¤è¤Ã¤Æ°ì°Õ¤ËÄê¤Þ¤ëkey¤òÀßÄꤹ¤ë¤³¤È¤Ç¡¤¥Þ¥¦¥ó¥È¤òÀ©¸æ¤Ç¤­¤ë¤³¤È¤ò¤³¤³¤Þ¤Ç¤Ç¸«¤Æ¤­¤Þ¤·¤¿¡¥ ¤¿¤À¡¤List¤Ç¤Ï¹¹¤Ë櫤¬¤¢¤ê¤Þ¤¹¡¥ÆÃ¤Ë¥Ç¡¼¥¿¿ô¤¬Â¿¤¤¤â¤Î¤ä¹¹¿·¤ÎÉÑÅÙ¤¬¹â¤¤¤â¤Î¤ÏÃí°Õ¤¬É¬ÍפǤ¹¡¥

¾¯¤·Á°¤Ë¿¨¤ì¤Þ¤·¤¿¤¬¡¤shouldComponentUpdate¤Ï¾ï¤Ëtrue¤òÊÖ¤¹ ¤È¤¤¤¦¤³¤È¤ò°Õ¼±¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡¥ ÆÃ¤ËshouldComponentUpdate¤òµ¤¤ò¤Ä¤±¤º¤Ë¥ê¥¹¥È¤òÉÁ²è¤¹¤ë¤È¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥

key¤Ë¤è¤Ã¤Æ¡¤¥Þ¥¦¥ó¥È/ºÆ¥ì¥ó¥À¥ê¥ó¥°¤òÀ©¸æ¤Ç¤­¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤·¤¿¡¥ÉÔÍפʥޥ¦¥ó¥È¤òºÆ¥ì¥ó¥À¥ê¥ó¥°¤Ë¤·¡¤¤¢¤ëÄøÅÙ²þÁ±¤¬¤Ç¤­¤¿¤È»×¤¤¤Þ¤¹¡¥ ¤¿¤À¡¤¤³¤³¤Çµ¤¤ò¤Ä¤±¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤¤Î¤¬¡¤shouldComponentUpdate¤ò¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤default¤Ç¾ï¤Ëtrue¤òÊÖ¤¹ ¤È¤¤¤¦ÅÀ¤Ç¤¹¡¥ ¥Ç¥â¤Ç¤ß¤Æ¤¤¤­¤Þ¤·¤ç¤¦¡¥

¿å¿§¤Î»Í³Ñ¤Ï¡¤ºÆ¥ì¥ó¥À¥ê¥ó¥°¤¬È¯À¸¤·¤Æ¤¤¤ë²Õ½ê¤Ç¤¹¡¥ shouldComponentUpdate¤¬true¤òÊÖ¤·¤Æ¤¤¤ë¤Î¤Ç¡¤ÌµÂ̤˺ƥì¥ó¥À¥ê¥ó¥°¤·¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ë¤È»×¤¤¤Þ¤¹¡¥

¼ÂºÝ¤Î¥³¡¼¥É¤ò¸«¤Æ¤É¤¦Âкö¤¹¤ë¤Î¤«¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡¥ ¥ê¥¹¥È¤Î¼ÂÁõ¤ÏÀèÄø¤È´ðËÜŪ¤ËƱ¤¸¤Ç¤¹¡¥


1

2

3

4

5

6

7

function List({ items }: { items: Array<ItemType> }) {

  return (

    <ul>

      {items.map((item) => <Item key={Math.random() + ''} item={item} />)}

    </ul>

  )

}



1

2

3

4

5

6

7

8

9

10

11

import { Component } from 'react'

class Item extends Component<ItemType> {

  render() {

    const { item } = this.props

    return (

      <li>{item.content}</li>

    )

  }

}


¤³¤Î¤è¤¦¤Ê¡¤List¤ÈItem¤Î´Ø·¸¤Ë¤ª¤¤¤Æ¡¤º¹Ê¬¥ì¥ó¥À¥ê¥ó¥°¤òÀ©¸æ¤¹¤ë¤Ë¤¢¤¿¤ê¡¤Item¤ËÃåÌܤ·¤Þ¤¹¡¥ ÈÆÍÑŪ¤Ê¡¤shouldComponentUpdate ¤Î¼ÂÁõ¤È¤·¤Æ¡¤PureComponent ¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡¥

PureComponent¤¬¶ñÂÎŪ¤Ë¤·¤Æ¤¤¤ë¤³¤È¤Ï¡¤props¤ËÂФ·¤ÆshallowCompare¤·¤Æº¹Ê¬¤ò¸«¤Æ¤¤¤Þ¤¹¡¥¤³¤Î¤È¤­Ãí°Õ¤Ê¤Î¤¬shallow ¤Ê¤Î¤Ç¡¤ Ǥ°Õ¤Î props[key] ¤¬ object ¤À¤Ã¤¿¾ì¹ç¤½¤ÎObject¤ÎÃæ¿È¤ÎÃͤ¬Æ±¤¸¤«¤É¤¦¤«¤Ç¤Ï¤Ê¤¯¡¤ Æ±¤¸¥¤¥ó¥¹¥¿¥ó¥¹¤Ç¤¢¤ë¤«¤É¤¦¤« (Ä̾ï¤Îstrict equal¤ÈƱ¤¸µóư)¤ò¸«¤Þ¤¹¡¥

¤Ê¤Î¤Ç¡¤¤¿¤È¤¨Object¤¬Á´¤ÆÆ±¤¸ÃͤǤ⡤Rest parameters ¤ä Object.assign ¤Ê¤É¤Ç ¥³¥Ô¡¼¤·¤Æ¤¤¤ë¤È°Û¤Ê¤ë¥¤¥ó¥¹¥¿¥ó¥¹°·¤¤¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤È¤¤¤¦¤³¤È¤Ëµ¤¤ò¤Ä¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

¤Á¤Ê¤ß¤Ë¡¤shallowCompare ¤Î¶ñÂÎŪ¤Ê¼ÂÁõ¤Ï¡¤fbjs/shallowEqual ¤Ç¤¹¡¥


1

2

3

4

5

6

7

8

9

10

11

import { PureComponent } from 'react'

class PureItem extends PureComponent<ItemType> {

  render() {

    const { item } = this.props

    return (

      <li>{item.content}</li>

    )

  }

}


¤³¤ì¤ò¼ÂºÝ¤Ë¥ì¥ó¥À¥ê¥ó¥°¤¹¤ë¤È¤É¤¦¤Ê¤ë¤«¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡¥

¼ÂºÝ¤Ëº¹Ê¬¥ì¥ó¥À¥ê¥ó¥°¤¬¤µ¤ì¤Æ¤¤¤ë²Õ½ê¤ò¸«¤Æ¤ß¤ë¤È¡¤state¤¬½ñ¤­´¹¤ï¤Ã¤Æ¤¤¤ëList¤Î¤ßºÆ¥ì¥ó¥À¥ê¥ó¥°¤µ¤ì¡¤ ³ÆItem¤ÏºÆ¥ì¥ó¥À¥ê¥ó¥°¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡¥

¤³¤³¤Ç¤Ï PureComponent ¤òÍѤ¤¤¿Îã¤ò¾Ò²ð¤·¤Þ¤·¤¿¤¬¡¤ Stateles Functional Component ¤òÍѤ¤¤Æ¤¤¤ë¾ì¹ç¤Ïrecompose/pure ¤È¤¤¤¦¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡¥ ¤â¤·¡¤Functional Component ¤ò¼´¤Ë³«È¯¤ò¿Ê¤á¤ë¤Î¤Ç¤¢¤ì¤Ð¡¤PureComponent ¤ò·Ñ¾µ¤¹¤ëÂå¤ï¤ê¤Ë recompose/pure ¤òÍøÍѤ¹¤ë¤³¤È¤ÇƱ¤¸¸ú²Ì¤¬ÆÀ¤é¤ì¤Þ¤¹¡¥


1

2

3

4

5

6

7

8

9

import { pure } from 'recompose'

function Item({ item }: { item: ItemType }) {

  return (

    <li>{item}</li>

  )

}

const PureItem = pure(Item)


¥Ü¥È¥ë¥Í¥Ã¥¯¤òÄ´ºº¡¦·×¬

chrome developer tools

React¤Îversion 16¤«¤é¡¤react-addons-perf ¤Î¥µ¥Ý¡¼¥È¤¬¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡¥ ¤½¤ÎÂå¤ï¤ê¤Ë¡¤Chrome ¤Î devtools ¤ò»È¤Ã¤Æ·×¬¤¹¤ëÊýË¡¤ò¾Ò²ð¤·¤Æ¤¤¤­¤Þ¤¹¡¥

¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¥È¥ì¡¼¥¹¤ò±ÜÍ÷¤¹¤ë

Chrome ¤Îµ¡Ç½¤òÍѤ¤¤Æ React ¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¥È¥ì¡¼¥¹¤ò¸«¤é¤ì¤Þ¤¹¡¥ ReactÆâÉô¤ÇUserTiming API ¤òÍøÍѤ·¤Æ¡¤¤½¤ì¤¾¤ì¤Î½èÍý»þ´Ö¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥ (React¤ÎÆâÉô½èÍý»þ´Ö¤Ï³«È¯´Ä¶­¤Î¤ß±ÜÍ÷²Äǽ)

ÀÖÏȤΥܥ¿¥ó²¡²¼¤¹¤ë¤³¤È¤Ç¡¤Ç¤°Õ¤ÎÁàºî¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¥Ä¥ê¡¼¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥ ÀÄÏȤΥܥ¿¥ó¤Ï¡¤¥Õ¥ë¥ê¥í¡¼¥É¤«¤éDOMContentLoaded ¤ò¥Ï¥ó¥É¥ë¤·¤Æ¼Â¹Ô¤µ¤ì¤¿scripting¤¬½ª¤ï¤ë¤Þ¤Ç¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¥Ä¥ê¡¼¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡¥

2018-09-16

¢£Google¥¹¥È¥ê¡¼¥È¥Ó¥å¡¼¤Ç3ǯ¤«¤±¤ÆÊƹñ¤ò¡È²£Ãǡɡ¢²¾ÁÛ¤ÎĹ餫¤é¸«¤¨¤Æ¤­¤¿¤³¤È¡ÃWIRED.jp 20:24

<title>Google¥¹¥È¥ê¡¼¥È¥Ó¥å¡¼¤Ç3ǯ¤«¤±¤ÆÊƹñ¤ò¡È²£Ãǡɡ¢²¾ÁÛ¤ÎĹ餫¤é¸«¤¨¤Æ¤­¤¿¤³¤È¡ÃWIRED.jp</title>

Google¥¹¥È¥ê¡¼¥È¥Ó¥å¡¼¤Ç3ǯ¤«¤±¤ÆÊƹñ¤ò¡È²£Ãǡɡ¢²¾ÁÛ¤ÎĹ餫¤é¸«¤¨¤Æ¤­¤¿¤³¤È

<header style="max-width: 100%;">

¥¢¥Õ¥ê¥«¤Ë½»¤àÊÆ¹ñ¿Í¤¬¡ÖGoogle ¥¹¥È¥ê¡¼¥È¥Ó¥å¡¼¡×¤ò»È¤Ã¤Æ¡¢Êƹñ¤ÎÅ쳤´ß¤«¤éÀ¾³¤´ß¤Þ¤Ç3ǯ¤â¤«¤±¤Æ¡È²£Ãǡɤ·¤¿¡£Î¢Ï©ÃÏ¤ËÆþ¤ê¹þ¤ß¡¢¤È¤­¤Ë¤Ï̤¤¤Ê¤¬¤é¤ÎĹ餫¤é¸«¤¨¤Æ¤­¤¿¤Î¤Ï¡¢Ê󯻤䥽¡¼¥·¥ã¥ë¥á¥Ç¥£¥¢¤Ç¤ÏÆÀ¤é¤ì¤Ê¤¤ËÜÅö¤Ë¥ê¥¢¥ë¤ÊÊÆ¹ñ¤Î»Ñ¤À¤Ã¤¿¡£¤¤¤Ã¤¿¤¤¤É¤ó¤Ê¡Öι¡×¤À¤Ã¤¿¤Î¤«¡£

TEXT BY LAURA MALLONEE

TRANSLATION BY MAYUMI HIRAI/GALILEO

WIRED(US)

</header>


¥ô¥£¥ó¥Æ¡¼¥¸¡¦¥«¡¼¤¬ÎФΤʤ«¤òÁö¤êÈ´¤±¤ë¡£¥ô¥¡¡¼¥â¥ó¥È½£¥Ô¥Ã¥Ä¥Õ¥£¡¼¥ë¥É¤Ë¤Æ¡£IMAGE CAPTURE COURTESY OF ©2018 GOOGLE

¥È¥é¥ó¥×ÂçÅýÎΤΥĥ¤¡¼¥È¤«¤é¥­¥à¡¦¥«¡¼¥À¥·¥¢¥ó¤ÎInstagram¤Þ¤Ç¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤ÏÊÆ¹ñ¤Ë¤Ä¤¤¤ÆÂ¿¤¯¤Î¤³¤È¤ò¶µ¤¨¤Æ¤¯¤ì¤ë¡£¤¿¤À¤·¡¢¤³¤Î¹ñ¤òËÜÅö¤ËÍý²ò¤¹¤ë¤Ë¤Ï¡¢¥½¡¼¥·¥ã¥ë¥á¥Ç¥£¥¢¤«¤é¥í¥°¥ª¥Õ¤·¤Æ¡¢Æ»Ï©¤òÁö¤ë¤Û¤¦¤¬¤¤¤¤¡£¤·¤«¤â¡¢¤½¤ì¤Ë¤Ï¼«Âð¤Î¥½¥Õ¥¡¡¼¤«¤éÎ¥¤ì¤ëɬÍפϤʤ¤¡£

¥Þ¥·¥å¡¼¡¦¥Þ¥¹¥×¥é¥Ã¥È¤Ï¡¢Á´ÊƳÆÃϤò½ä¤ë3,700¥Þ¥¤¥ë¡ÊÌó6,000km¡Ë¤Îι¤ò¤·¤¿¡£¤À¤¬¡¢¤½¤Î¤¹¤Ù¤Æ¤Ï¡ÖGoogle¥¹¥È¥ê¡¼¥È¥Ó¥å¡¼¡×¤ò»È¤Ã¤¿¤â¤Î¤Ç¤¢¤ë¡£

¤·¤«¤â¥Þ¥¹¥×¥é¥Ã¥È¤Ï¡¢¥ë¥ï¥ó¥À¤Î¥­¥¬¥ê¤Ë½»¤ó¤Ç¤¤¤ë¡£¤½¤ì¤Ç¤¤¤Æ¡¢ÊƹñºÇÅìü¤Ç¤¢¤ë¥á¥¤¥ó½£¥¦¥¨¥¹¥È¡¦¥³¥Ç¥£¡¦¥Ø¥Ã¥É¤«¤é¥ï¥·¥ó¥È¥ó½£¥ª¥¼¥Ã¥È¤Þ¤Ç¡¢16½£¤òÄ̤äÆÊƹñ¤òÅ줫¤éÀ¾¤Ø²£ÃǤ¹¤ëÊüϲ¤Îι¤ò»Ï¤á¤¿¤Î¤À¡£

¡Ö¤³¤ì¤Ï¼Â¸³¤Ç¤¢¤ê¡¢±é½¬¤Ç¤·¤¿¡×¤È¥Þ¥¹¥×¥é¥Ã¥È¤Ï¸ì¤ë¡£¡Ö¥Ç¥¸¥¿¥ë¥Ä¡¼¥ë¤òĹ´ü¤Ë¤ï¤¿¤Ã¤Æ»È¤¦¤³¤È¤Ë¤è¤Ã¤Æ¡¢Êƹñ¤Ë¤Ä¤¤¤Æ¡¢¤½¤·¤ÆÊƹñÆâ¤Ç²¿¤ò¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¤«¤ò»î¤·¤¿¤Î¤Ç¤¹¡×

¥Þ¥¹¥×¥é¥Ã¥È¤Ï¡¢¤½¤ì¤ò¼Â¹Ô¤·¤¿½é¤á¤Æ¤Î¿Íʪ¤«¤â¤·¤ì¤Ê¤¤¡£¤â¤Á¤í¤ó¡¢¥¯¥ê¥Ã¥¯¤Î®¤µ¤ò¶¥¤Ã¤Æ¡¢¥µ¥ó¥Õ¥é¥ó¥·¥¹¥³¤«¤é¥Ë¥å¡¼¥è¡¼¥¯¤Þ¤Ç¤ò90»þ´Ö¤ÇÁö¤êÈ´¤±¤¿¼ã¼Ô¤¿¤Á¤â¤¤¤ë¡£¤·¤«¤·¡¢ËÜʪ¤Î¡Öƻϩ¤Îι¡×¤È¤Ï¥ì¡¼¥¹¤Ç¤Ï¤Ê¤¤¡£¼Â¤Î¤È¤³¤í¡¢¤½¤ÎÂжˤˤ¢¤ë¤â¤Î¤À¡£

¤æ¤Ã¤¯¤ê¤È΢³¹Æ»¤ò¤æ¤¯Î¹Ï©

®ÅÙ¤òÍî¤È¤·¤Æ¡¢Î¢Ä̤ê¤ò¤æ¤Ã¤¯¤ê¿Ê¤à¡£¤¿¤Ö¤ó¡¢¾¯¤·Æ»¤Ë̤¦¤³¤È¤â¤¢¤ë¡£¡Ö¥ê¥º¥ß¥«¥ë¤Ê¥Ú¡¼¥¹¤Ç¥¯¥ê¥Ã¥¯¤·¤ÆÆ»¤ò¿Ê¤ß¤Ê¤¬¤é¡¢¥ô¥¡¡¼¥Á¥ã¥ë¤ÊÀ¤³¦¤ËËׯ¬¤·¤Æ¤¤¤Þ¤·¤¿¡×¤È¥Þ¥¹¥×¥é¥Ã¥È¤Ï¸ì¤ë¡£¡Ö¤Ò¤È¤Ä¤Î¾ì½ê¤¬¼¡¤Î¾ì½ê¤ËÊѤï¤Ã¤Æ¤¤¤­¡¢¤¹¤Ù¤Æ¤ÎÉ÷·Ê¤¬¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤¯¤Î¤ò´¶¤¸¤ë¤³¤È¤¬¤Ç¤­¤Þ¤·¤¿¡£¤Þ¤ë¤ÇËÜʪ¤Îι¤Î¤è¤¦¤Ë¡×

ÊÆ¹ñ½Ð¿È¤Î¥Þ¥¹¥×¥é¥Ã¥È¤¬¤³¤Î¥¢¥¤¥Ç¥¢¤ò»×¤¤ÉÕ¤¤¤¿¤Î¤Ï¡¢¥­¥¬¥ê¤Ç³«È¯¥³¥ó¥µ¥ë¥¿¥ó¥È¤È¤·¤ÆÆ¯¤¤¤Æ¤¤¤¿2015ǯ2·î¤Î¤³¤È¤À¤Ã¤¿¡£¥Û¡¼¥à¥·¥Ã¥¯¤Ë¤Ê¤Ã¤¿¥Þ¥¹¥×¥é¥Ã¥È¤Ï¡¢Google¥¹¥È¥ê¡¼¥È¥Ó¥å¡¼¤ò³«¤¤¤¿¡£

¥Þ¥¹¥×¥é¥Ã¥È¤Ï°ÊÁ°¡¢¥¸¥ã¥Ã¥¯¡¦¥±¥ë¥¢¥Ã¥¯¤Î¾®Àâ¡Ø¥ª¥ó¡¦¥¶¡¦¥í¡¼¥É¡Ù¤òÆÉ¤ó¤À¤³¤È¤¬¤¢¤Ã¤¿¡£¤µ¤é¤Ë¡¢¡Ø¥Ê¥·¥ç¥Ê¥ë¡¦¥¸¥ª¥°¥é¥Õ¥£¥Ã¥¯¡Ù»ï¤Îõ¸¡²È¤Ç¤¢¤ë¥Þ¥¤¥±¥ë¡¦¥Õ¥§¥¤¤¬1999ǯ¤ËÃæ±û¥¢¥Õ¥ê¥«¤Ç¹Ô¤Ê¤Ã¤¿¡¢¡Ö¥á¥¬¡¦¥È¥é¥ó¥»¥¯¥ÈÄ´ºº¡×¤Ë¤â¶½Ì£¤ò¤½¤½¤é¤ì¤Æ¤¤¤¿¡£¤³¤ì¤Ï¥³¥ó¥´Àîή°è¤òÄ̤ë2,000¥Þ¥¤¥ë¡ÊÌó3,200km¡Ë¤ÎľÀþ¤òÅÌÊâ¤Ç¿Ê¤ß¡¢Ãϰè¤ÎÌîÀ¸Æ°¿¢Êª¤òÄ´ºº¤·¤¿Î¹¤À¡£Æ±¤¸¤è¤¦¤Ê¤³¤È¤ò¥ª¥ó¥é¥¤¥ó¤Ç¤ä¤Ã¤Æ¤ß¤¿¤é¤É¤¦¤À¤í¤¦¤«¡©

Google¥Þ¥Ã¥×¤Î¥ë¡¼¥È¸¡º÷¤Ë¤è¤ë¤È¡¢Êƹñ¤ÎÅ쳤´ß¤«¤éÀ¾³¤´ß¤Þ¤Ç¤Îƻϩ¤ò¥¯¥ë¥Þ¤Ç¤¿¤É¤ëι¤Ï¡¢¥Î¥ó¥¹¥È¥Ã¥×¤Ç¤¢¤ì¤Ð2Æü¶¯¤Ç´°Î»¤¹¤ë¡£¤·¤«¤·¡¢¥Þ¥¹¥×¥é¥Ã¥È¤Îι¤Ï3ǯ¤«¤«¤Ã¤¿¡£Ê¿¶Ñ»þ®20¡Á30¥Þ¥¤¥ë¡ÊÌó32¡Á48km¡Ë¤Ç°Üư¤·¤¿¤³¤È¤Ë¤Ê¤ë¡£

²÷Ŭ¤Ê¼«Âð¤Î¥ª¥Õ¥£¥¹¤Ë¤¤¤ë¾õÂ֤ǡ¢¤¹¤Ù¤Æ¤ÎÆ»¤ò¤æ¤Ã¤¯¤ê¤È¤¿¤É¤Ã¤¿¡£Îã³°¤Ï¡¢¥ï¥¤¥ª¥ß¥ó¥°½£¤Î´ä»³¡Ö¥Ç¥ô¥£¥ë¥¹¥¿¥ï¡¼¡×¤Î¶á¤¯¤òÄ̤ä¿¿ôʬ´Ö¤Ç¡¢¤³¤Î¤È¤­¤Ï»þ®150¥Þ¥¤¥ë¡ÊÌó240km¡Ë¤Þ¤Ç²Ã®¤·¤¿¡£

Íýͳ¤Î¤Ò¤È¤Ä¤Ï¡¢·ÀÌ󤷤Ƥ¤¤¿¥ë¥ï¥ó¥À¤Î¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥×¥é¥ó¤ÎÀ©Ìó¤À¡£ÄÌ¿®Î̤¬1Æü¤Ë1GB¤òͤ¨¤ë¤È¡¢ÉáÃʤǤâ¤É¤¦¤Ë¤«²æËý¤·¤Æ¤¤¤ë1.5MB¡¿ÉäήÅÙ¤¬¡¢¥¼¥í¶á¤¯¤Þ¤ÇµÞ·ã¤Ë²¼¤¬¤Ã¤Æ¤·¤Þ¤¦¤Î¤À¡£

°ìÊý¤Ç¥Þ¥¹¥×¥é¥Ã¥È¤Ï¡¢¼çÍפʥϥ¤¥¦¥§¥¤¤òÈò¤±¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤ï¤¶¤ï¤¶Î¹¤òÆñ¤·¤¤¤â¤Î¤Ë¤·¤Æ¤¤¤¿¡£Æ»Ï©¤¬¥¹¥È¥ê¡¼¥È¥Ó¥å¡¼¤ÎÂоݤˤʤäƤ¤¤ë¤«¤É¤¦¤«¤Ï»öÁ°¤Ë³Îǧ¤·¤Æ¤¤¤ë¤¬¡¢¤ä¤à¤Ê¤¯°ú¤­ÊÖ¤¹¤³¤È¤â¤¢¤ë¡£ÃϿ޾å¤òÈô¤Ó±Û¤¨¤ë¤³¤È¤ò¼«¤é¶Ø¤¸¤Æ¤¤¤ë¤«¤é¤À¡£

¥Þ¥¹¥×¥é¥Ã¥È¤ÏÉÑÈˤËÄä¤Þ¤Ã¤Æ¤Ï¡¢¼«Ê¬¤Î¼þ°Ï¤Ë¤¢¤ë¤â¤Î¤Ë´Ø¤¹¤ë¾ðÊó¤òWikipedia¤Ç¸¡º÷¤·¤¿¤ê¡¢¥¹¥¯¥ê¡¼¥ó¥·¥ç¥Ã¥È¤Î¤«¤¿¤Á¤Ç¥¹¥Ê¥Ã¥×¼Ì¿¿¤ò»£±Æ¤·¤¿¤ê¤·¤¿¡£

¥á¥¤¥ó½£¤Ë¤¢¤Ã¤¿¥È¥¦¥â¥í¥³¥·¤òÀëÅÁ¤¹¤ë´ÇÈĤ䡢¥ô¥¡¡¼¥â¥ó¥È½£¤ÎÎФλ³¡¹¤òÁö¤êÈ´¤±¤ë¥ô¥£¥ó¥Æ¡¼¥¸¡¦¥«¡¼¤Ê¤É¡¢Ãϸµ¤ÎÆÃ¿§¤òÈ¿±Ç¤¹¤ëÉ÷·Ê¤ò»£±Æ¤·¤¿¡Ê¼Ì¿¿²È¤Î¥¸¥ã¥Ã¥­¡¦¥±¥Ë¡¼¡¢¥¸¥ç¥ó¡¦¥é¥Õ¥Þ¥ó¡¢¥Þ¥¤¥±¥ë¡¦¥¦¥ë¥Õ¤Ê¤É¤â¡¢Æ±¤¸ÌÜŪ¤ÇGoogle¥¹¥È¥ê¡¼¥È¥Ó¥å¡¼¤òÍøÍѤ·¤Æ¤¤¤ë¡Ë¡£¥Þ¥¹¥×¥é¥Ã¥È¤Ï¤³¤ì¤é¤Î²èÁü¤ò¡¢Æ»Ãæ¤Ç´¶¤¸¤¿¤µ¤Þ¤¶¤Þ¤ÊÁÛ¤¤¤È¤È¤â¤Ë¡¢¡ÖMedium¡×¤ËÄê´üŪ¤ËÅê¹Æ¤·¤¿¡£

¹ÓÇѤ·¤¿³¹¤¬Â³¤¯¤È¤¤¤¦¸½¼Â

¥Þ¥¹¥×¥é¥Ã¥È¤Îι¤Ï2018ǯ8·î¤Ç½ªÎ»¤·¤¿¡£Èà¤Ï¤³¤Îι¤Ë¤è¤Ã¤Æ¡¢¸Î¶¿¤Ç¤¢¤ë¥Ü¥¹¥È¥ó¤È¤ÏÂ礭¤¯°Û¤Ê¤ëÊÆ¹ñ¤Î³ÆÃϤËÂФ·¤ÆÌܤò¸þ¤±¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤È¤¤¤¦¡£¤½¤ì¤é¤Ï¡¢¼«Ê¬¤¬¤³¤ì¤Þ¤Ç½»¤ó¤À¤³¤È¤Î¤¢¤ë¤¹¤Ù¤Æ¤Î¾ì½ê¤È¤â°ã¤¦À¤³¦¤À¡£

ÌǤӤĤĤ¢¤ëÃæÀ¾Éô¤ÎÄ®¤Ë¤Ä¤¤¤Æ¤Ï¤â¤Á¤í¤óʹ¤¤¤¿¤³¤È¤¬¤¢¤ê¡¢¿ô¥«½ê¤òˬ¤ì¤Æ¤­¤¿¡£¤·¤«¤·ÉԻ׵Ĥʤ³¤È¤Ë¡¢²¿»þ´Ö¤âÈñ¤ä¤·¤Æ¡¢¤Ò¤È¤Ä¤Î¹ÓÇѤ·¤¿Ä®¤«¤éÊ̤ιÓÇѤ·¤¿Ä®¤Ø¤È¥¯¥ê¥Ã¥¯¤ò³¤±¤Æ¤¤¤ë¤È¡¢¤½¤Î¤³¤È¤¬ÄËÀڤ˴¶¤¸¤é¤ì¤¿¤È¤¤¤¦¡£

¡Ö¥¹¥È¥ê¡¼¥È¥Ó¥å¡¼¤ÎÃÏÊ¿Àþ¤Ë¸«¤¨¤ëδµ¯¤¬¡¢¤µ¤é¤ËÊ̤ιÓÇѤ·¤¿Ä®¤Ë¤Ê¤ë¤³¤È¤¬ÀäÂгμ¤À¤È¤ï¤«¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢¤È¤Æ¤â¤à¤´¤¤¤³¤È¤Ç¤¹¡×¤È¥Þ¥¹¥×¥é¥Ã¥È¤Ï¸À¤¦¡£

¥Þ¥¹¥×¥é¥Ã¥È¤Î»î¤ß¤Ï¡¢¥½¡¼¥·¥ã¥ë¥á¥Ç¥£¥¢¤ä¥ª¥ó¥é¥¤¥ó¥Ë¥å¡¼¥¹¤ËÆÃÍ­¤Î¡¢À䤨´Ö¤Î¤Ê¤¤¾éÃ̤䤪¤¶¤Ê¤ê¤ÊÈ¿±þ¤È¤Ï°ã¤¦¿·Á¯¤Ê¤ä¥êÊý¤Ç¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤ò»È¤¦ÊýË¡¤òɽ¤·¤Æ¤¤¤ë¡£¤â¤Ã¤È¤â¤Ã¤È¥¹¥í¡¼¥À¥¦¥ó¤¹¤ì¤Ð¡¢Í­°ÕµÁ¤Ê½Ð²ñ¤¤¤¬¤¢¤ë¤³¤È¤ò¼¨¤·¤Æ¤¤¤ë¤Î¤À¡£

¡Ö³°¹ñ¤Ë½»¤ó¤Ç¤¤¤ë¤È¤­¤Ë¡¢¤³¤ì¤Û¤ÉÊÆ¹ñ¤Î»Ñ¤ò¸«¤»¤Æ¤¯¤ì¤ë¤â¤Î¤Ï¤Û¤«¤Ë¤¢¤ê¤Þ¤»¤ó¡×¤È¥Þ¥¹¥×¥é¥Ã¥È¤Ï½Ò¤Ù¤ë¡£¡ÖCNN¤Ç¤â¤Ê¤¯¡¢¡Ø¥Ë¥å¡¼¥è¡¼¥¯¡¦¥¿¥¤¥à¥º¡Ù»æ¤Ç¤â¤Ê¤¯¡¢Fox¤Ç¤â¡¢Facebook¤Ç¤â¡¢Twitter¤Ç¤â¤Ê¤¤¤Î¤Ç¤¹¡×

<section style="max-width: 100%;">

SHARE

</section>

¢£¡Ö Javascript / Node.js ¤Ç»Å»ö¼«Æ°²½¡×µ­»ö¤Þ¤È¤á - ¤Û¤ó¤¸¤ã¤éƲ 20:22

<title>¡Ö Javascript / Node.js ¤Ç»Å»ö¼«Æ°²½¡×µ­»ö¤Þ¤È¤á - ¤Û¤ó¤¸¤ã¤éƲ</title>

¡Ö Javascript / Node.js ¤Ç»Å»ö¼«Æ°²½¡×µ­»ö¤Þ¤È¤á

<header data-brand="hatenablog" style="max-width: 100%;">

¤Û¤ó¤¸¤ã¤éƲ

¤á¤ó¤É¤¯¤µ¤¤»Å»ö¤ò¥é¥¯¤Ë¤¹¤ëºî¶È¼«Æ°²½¥ì¥·¥Ô½¸


</header>

<header style="max-width: 100%;">






</header>

piro_suke (id:piro_suke)

<time data-relative="" datetime="2018-09-15T06:29:00Z" pubdate="" style="max-width: 100%;" title="2018-09-15T06:29:00Z">1ÆüÁ°</time>



2018-09-15

¢£async/await ÆþÌç¡ÊJavaScript¡Ë 10:26

<title>async/await ÆþÌç¡ÊJavaScript¡Ë</title>

async/await ÆþÌç¡ÊJavaScript¡Ë

¤Ï¤¸¤á¤Ë

º£¹¹¤Ç¤¹¤¬¡¢JavaScript¤Îasync/await¤Ë´Ø¤¹¤ëÈ÷˺Ͽ¤Ë¤Ê¤ê¤Þ¤¹¡£

  • ¡Öº£¤Þ¤Ç$.Deferred()¤äPromise¤Ê¤É¤ÇÈ󯱴ü½èÍý¤Ï½ñ¤¤¤¿¤³¤È¤¬¤¢¤ë¤¬¡¢async/await¤Ï¤ï¤«¤é¤Ê¤¤¡×
  • ¡Ö$.Deferred()¤äPromise¤Ê¤É¤ÎÈ󯱴ü½èÍý¤Î½ñ¤­Êý¤è¤ê¡¢¤â¤Ã¤È´Ê·é¤Ë½ñ¤±¤ë½ñ¤­Êý¤¬¤¢¤ì¤ÐÃΤꤿ¤¤¡×
  • ¡Öº£¤Þ¤Ç¤ÎÈ󯱴ü½èÍý¤Î½ñ¤­Êý¤ÈÈæ¤Ù¤Æ²¿¤¬Îɤ¤¤Î¤«¤ï¤«¤é¤Ê¤¤¡×

¤È¤¤¤Ã¤¿¿Íã¸þ¤±¤Îµ­»ö¤Ç¤¹¡£

$.Deferred()¤äPromise¤Ê¤É¤ÇÈ󯱴ü½èÍý¤ò½ñ¤¤¤¿¤³¤È¤¬¤¢¤ëÁ°Äó¤Î¤¿¤á¡¢È󯱴ü½èÍý¼«ÂΤ˴ؤ¹¤ëÀâÌÀ¤Ïµ­ºÜ¤·¤Æ¤ª¤ê¤Þ¤»¤ó¡£

µ­ºÜ¤·¤Æ¤¤¤ëÍøÍÑÎã¤Î¥³¡¼¥É¤ÏChrome¡ÊºÇ¿·¡Ë¤Î¥³¥ó¥½¡¼¥ë¾å¤Çư¤­¤Þ¤¹¤Î¤Ç¡¢¥³¥ó¥½¡¼¥ë¾å¤Ç¼Â¹Ô¤·¤ÆÆ°ºî¤ò³Îǧ¤·¤Æ¤ß¤ë¤ÈÍý²ò¤¬¿¼¤Þ¤ê¤ä¤¹¤¤¤È»×¤¤¤Þ¤¹¡£

Ëܵ­»ö¤ÇÍѤ¤¤Æ¤¤¤ëÍѸì

Promise¤òÊÖ¤¹

Promise¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹¤³¤È¡£

// Promise¤òÊÖ¤¹
return new Promise((resolve, reject) => {

});

Promise¤Î·ë²Ì¤òÊÖ¤¹

Promise¤Îresolve¤â¤·¤¯¤Ïreject¤ò¼Â¹Ô¤¹¤ë¤³¤È¡£

return new Promise((resolve, reject) => {
    // Promise¤Î·ë²Ì¤òÊÖ¤¹
    resolve('resolve!!');
});

resolve¤¹¤ë

Promise¤Îresolve¤ò¼Â¹Ô¤¹¤ë¤³¤È¡£

return new Promise((resolve, reject) => {
    // succes!!¤òresolve¤¹¤ë
    resolve('succes!!');
});

reject¤¹¤ë

Promise¤Îreject¤ò¼Â¹Ô¤¹¤ë¤³¤È¡£

return new Promise((resolve, reject) => {
    // err!!¤òreject¤¹¤ë
    reject('err!!');
});

async/await¤È¤Ï

async¤Èawait¤òÍøÍѤ·¤¿¡¢È󯱴ü½èÍý¤Î¹½Ê¸¤Î¤³¤È¡£

²¿¸Îasync/await¤òÍøÍѤ¹¤ë¤Î¤«

Promise¤òÍøÍѤ·¤¿¹½Ê¸¤è¤ê¤â¡¢´Ê·é¤ËÈ󯱴ü½èÍý¤¬½ñ¤±¤ë¤«¤é¡£

async/await¤ÎÂбþ¾õ¶·

°Ê²¼¤Ï³Æ¥Ö¥é¥¦¥¶¤Îasync/await¤ÎÂбþ¾õ¶·¡£

ECMAScript 2016+ compatibility table

async-await.jpg

Á´¤Æ¤Î¥Ö¥é¥¦¥¶¤ÇÂбþ¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¤¿¤á¡¢ÍøÍѤ¹¤ë¤Ê¤éBabelÅù¤Ç¥È¥é¥ó¥¹¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¡£

async¤È¤Ï

È󯱴ü´Ø¿ô¤òÄêµÁ¤¹¤ë´Ø¿ôÀë¸À¤Î¤³¤È¡£

°Ê²¼¤Î¤è¤¦¤Ë´Ø¿ô¤ÎÁ°¤Ëasync¤òÀë¸À¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢È󯱴ü´Ø¿ô¡Êasync function¡Ë¤òÄêµÁ¤Ç¤­¤ë¡£

async function sample() {}

async function¡Êasync¤ÇÀë¸À¤·¤¿´Ø¿ô¡Ë¤Ï²¿¤ò¤¹¤ë¤Î¤«

  • async function¤Ï¸Æ¤Ó½Ð¤µ¤ì¤ë¤ÈPromise¤òÊÖ¤¹¡£
  • async function¤¬Ãͤòreturn¤·¤¿¾ì¹ç¡¢Promise¤ÏÌá¤êÃͤòresolve¤¹¤ë¡£
  • async function¤¬Îã³°¤ä²¿¤é¤«¤ÎÃͤòthrow¤·¤¿¾ì¹ç¤Ï¤½¤ÎÃͤòreject¤¹¤ë¡£

¸ÀÍÕ¤À¤±¤À¤È¤ï¤«¤ê¤Å¤é¤¤¤¿¤á¡¢ÍøÍÑÎã¤ò¸«¤Æ¤ß¤ë¡£

async function¤ÎÍøÍÑÎã

°Ê²¼¤Ïasync function¤¬Promise¤òÊÖ¤·¡¢Ãͤòresolve¡¢¤â¤·¤¯¤Ïreject¤·¤Æ¤¤¤ë¤«³Îǧ¤¹¤ë¤¿¤á¤ÎÍøÍÑÎã¡£

¢¨¤³¤Î¤è¤¦¤ËÍøÍѤ¹¤ë¤³¤È¤Ï¤Û¤È¤ó¤É¤Ê¤¤¤È»×¤¤¤Þ¤¹¤¬¡¢async function¤¬¤É¤Î¤è¤¦¤Êư¤­¤ò¤·¤Æ¤¤¤ë¤Î¤«¤ò³Îǧ¤¹¤ë¤¿¤á¤Ëµ­ºÜ¤·¤Æ¤ª¤ê¤Þ¤¹¡£

// resolve1!!¤òreturn¤·¤Æ¤¤¤ë¤¿¤á¡¢¤³¤ÎÃͤ¬resolve¤µ¤ì¤ë
async function resolveSample() {
    return 'resolve!!';
}

// resolveSample¤¬Promise¤òÊÖ¤·¡¢resolve!!¤¬resolve¤µ¤ì¤ë¤¿¤á
// then()¤¬¼Â¹Ô¤µ¤ì¥³¥ó¥½¡¼¥ë¤Ëresolve!!¤¬É½¼¨¤µ¤ì¤ë
resolveSample().then(value => {
    console.log(value); // => resolve!!
});


// reject!!¤òthrow¤·¤Æ¤¤¤ë¤¿¤á¡¢¤³¤ÎÃͤ¬reject¤µ¤ì¤ë
async function rejectSample() {
    throw new Error('reject!!');
}

// resolveSample¤¬Promise¤òÊÖ¤·¡¢reject!!¤¬reject¤µ¤ì¤ë¤¿¤á
// catch()¤¬¼Â¹Ô¤µ¤ì¥³¥ó¥½¡¼¥ë¤Ëreject!!¤¬É½¼¨¤µ¤ì¤ë
rejectSample().catch(err => {
    console.log(err); // => reject!!
});


// resolveError¤Ïasync function¤Ç¤Ï¤Ê¤¤¤¿¤á¡¢Promise¤òÊÖ¤µ¤Ê¤¤
function resolveError() {
    return 'resolveError!!';
}

// resolveError¤ÏPromise¤òÊÖ¤µ¤Ê¤¤¤¿¤á¡¢¥¨¥é¡¼¤¬È¯À¸¤·¤ÆÆ°¤«¤Ê¤¤
// Uncaught TypeError: resolveError(...).then is not a function
resolveError().then(value => {
    console.log(value);
});

¾åµ­¤ÎÄ̤ꡢasync function¤¬Promise¤òÊÖ¤·¡¢Ãͤòresolve¡¢¤â¤·¤¯¤Ïreject¤·¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤Ã¤¿¡£

¾åµ­¤Ïasync functionñÂΤÎÍøÍÑÎã¤À¤¬¡¢await¤ÈÊ»ÍѤ·¤ÆÍøÍѤ¹¤ë¤³¤È¤¬Â¿¤¯¡¢¡Öasync¤òÍøÍѤ¹¤ë¤Ê¤éawait¤âɬ¤ºÍøÍѤ¹¤Ù¤­¡×¤È½ñ¤«¤ì¤Æ¤¤¤ëµ­»ö¤â¤¢¤Ã¤¿¡£

await¤È¤Ï

async functionÆâ¤ÇPromise¤Î·ë²Ì¡Êresolve¡¢reject¡Ë¤¬ÊÖ¤µ¤ì¤ë¤Þ¤ÇÂÔµ¡¤¹¤ë¡Ê½èÍý¤ò°ì»þÄä»ß¤¹¤ë¡Ë±é»»»Ò¤Î¤³¤È¡£

°Ê²¼¤Î¤è¤¦¤Ë¡¢´Ø¿ô¤ÎÁ°¤Ëawait¤ò»ØÄꤹ¤ë¤È¡¢¤½¤Î´Ø¿ô¤ÎPromise¤Î·ë²Ì¤¬ÊÖ¤µ¤ì¤ë¤Þ¤ÇÂÔµ¡¤¹¤ë¡£

async function sample() {
    const result = await sampleResolve();

    // sampleResolve()¤ÎPromise¤Î·ë²Ì¤¬Ê֤äƤ¯¤ë¤Þ¤Ç°Ê²¼¤Ï¼Â¹Ô¤µ¤ì¤Ê¤¤
    console.log(result);
}

await¤Ï²¿¤ò¤¹¤ë¤Î¤«

  • await¤ò»ØÄꤷ¤¿´Ø¿ô¤ÎPromise¤Î·ë²Ì¤¬ÊÖ¤µ¤ì¤ë¤Þ¤Ç¡¢async functionÆâ¤Î½èÍý¤ò°ì»þÄä»ß¤¹¤ë¡£
  • ·ë²Ì¤¬ÊÖ¤µ¤ì¤¿¤éasync functionÆâ¤Î½èÍý¤òºÆ³«¤¹¤ë¡£

await¤Ïasync functionÆâ¤Ç¤Ê¤¤¤ÈÍøÍѤǤ­¤Ê¤¤¤¿¤á¡¢async/await¤ÎÍøÍÑÎã¤ò¸«¤Æ¤¤¤¯¡£

async/await¤ÎÍøÍÑÎã

°Ê²¼¤Ïñ½ã¤Êasync/await¤ÎÍøÍÑÎã¡£

function sampleResolve(value) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(value * 2);
        }, 2000);
    })
}

/**
 * sampleResolve()¤òawait¤·¤Æ¤¤¤ë¤¿¤á¡¢Promise¤Î·ë²Ì¤¬ÊÖ¤µ¤ì¤ë¤Þ¤Ç½èÍý¤¬°ì»þÄä»ß¤µ¤ì¤ë
 * º£²ó¤Î¾ì¹ç¡¢2Éøå¤Ëresolve(10)¤¬Ê֤äƤ­¤Æ¤½¤Î¸å¤Î½èÍý¡Êreturn result + 5;¡Ë¤¬ºÆ³«¤µ¤ì¤ë
 * result¤Ë¤Ïresolve¤µ¤ì¤¿10¤¬³ÊǼ¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢result + 5 = 15¤¬return¤µ¤ì¤ë
 */
async function sample() {
    const result = await sampleResolve(5);
    return result + 5;
}

sample().then(result => {
    console.log(result); // => 15
});

¾åµ­¤Î½èÍý¤òPromise¤Î¹½Ê¸¤Ç½ñ¤¯¤È°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£

function sampleResolve(value) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(value * 2);
        }, 2000);
    })
}

function sample() {
    return sampleResolve(5).then(result => {
        return result + 5;
    });
}

sample().then(result => {
    console.log(result); // => 15
});

2¤Ä¤ò¸«Èæ¤Ù¤Æ¤ß¤ë¤È¡¢async/await¤ÎÊý¤¬´Ê·é¤Ë½ñ¤±¤ë¤³¤È¤¬¤ï¤«¤ë¡£

¤è¤êÊ£»¨¤Ê½èÍý¤Î¾ì¹ç¤Ç¤âasync/await¤òÍøÍѤ·¤¿Êý¤¬´Ê·é¤Ë½ñ¤±¤ë¤¿¤á¡¢¤¤¤¯¤Ä¤«Îã¤ò¾Ò²ð¤·¤Æ¤¤¤¯¡£

Ϣ³¤·¤¿È󯱴ü½èÍý

Ϣ³¤·¤¿È󯱴ü½èÍý¡ÊPromise¹½Ê¸¡Ë

function sampleResolve(value) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(value);
        }, 1000);
    })
}

function sample() {
    let result = 0;

    return sampleResolve(5)
        .then(val => {
            result += val;
            return sampleResolve(10);
        })
        .then(val => {
            result *= val;
            return sampleResolve(20);
        })
        .then(val => {
            result += val;
            return result;
        });
}

sample().then((v) => {
    console.log(v); // => 70
});

Ϣ³¤·¤¿È󯱴ü½èÍý¡Êasync/await¹½Ê¸¡Ë

await¤òÍøÍѤ¹¤ì¤Ð¡¢then()¤Ç½èÍý¤ò·Ò¤²¤Ê¤¯¤Æ¤âϢ³¤·¤¿È󯱴ü½èÍý¤¬½ñ¤±¤ë¡£

function sampleResolve(value) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(value);
        }, 1000);
    })
}

async function sample() {
    return await sampleResolve(5) * await sampleResolve(10) + await sampleResolve(20);
}

async function sample2() {
    const a = await sampleResolve(5);
    const b = await sampleResolve(10);
    const c = await sampleResolve(20);
    return a * b + c;
}

sample().then((v) => {
    console.log(v); // => 70
});

sample2().then((v) => {
    console.log(v); // => 70
});

for¤òÍøÍѤ·¤¿·«¤êÊÖ¤·¤ÎÈ󯱴ü½èÍý¤â½ñ¤±¤ë¡£

function sampleResolve(value) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(value);
        }, 1000);
    })
}

async function sample() {
    for (let i = 0; i < 5; i += 1) {
        const result = await sampleResolve(i);
        console.log(result);
    }

    return '¥ë¡¼¥×½ª¤ï¤Ã¤¿¡£'
}

sample().then((v) => {
    console.log(v); // => 0
                    // => 1
                    // => 2
                    // => 3
                    // => 4
                    // => ¥ë¡¼¥×½ª¤ï¤Ã¤¿¡£
});

array.reduce()¤âÍøÍѤǤ­¤ë¡£

function sampleResolve(value) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(value);
        }, 1000);
    })
}

async function sample() {
    const array = [5, 10, 20];
    const sum = await array.reduce(async (sum, value) => {
      return await sum + await sampleResolve(value) * 2;
    }, 0);

    return sum;
}

sample().then((v) => {
    console.log(v); // => 70
});

Ϣ³¤ÎÈ󯱴ü½èÍý¤Ï¡¢½èÍý¤ò½çÈ֤˹Ԥ¦É¬Íפ¬¤Ê¤¤¸Â¤êÍøÍѤ¹¤Ù¤­¤Ç¤Ï¤Ê¤¤¤¿¤áÃí°Õ¡£

Î㤨¤Ð¡¢²èÁü¤òÈ󯱴üÆÉ¤ß¹þ¤ß¤ò¤¹¤ë¾ì¹ç¡¢¾åµ­¤Î¤è¤¦¤Ê½èÍý¤À¤È1¤Ä¤Î²èÁü¤òÆÉ¤ß¹þ¤ß¤¬´°Î»¤¹¤ë¤Þ¤Ç¡¢¼¡¤Î²èÁü¤ÎÆÉ¤ß¹þ¤ß¤¬»Ï¤Þ¤é¤Ê¤¤¡£

¤½¤Î¤¿¤á¡¢Á´¤Æ¤Î²èÁü¤ÎÆÉ¤ß¹þ¤ß¤Ë¤«¤Ê¤ê¤Î»þ´Ö¤¬¤«¤«¤ë¡£²èÁü¤ÏϢ³¤·¤ÆÆÉ¤ß¹þ¤àɬÍפϤʤ¤¤¿¤á¡¢¸å½Ò¤¹¤ëÊÂÎó¤ÎÈ󯱴ü½èÍý¤ÇÆÉ¤ß¹þ¤à¤Ù¤­¡£

ÊÂÎó¤ÎÈ󯱴ü½èÍý

ÊÂÎó¤ÎÈ󯱴ü½èÍý¡ÊPromise¹½Ê¸¡Ë

function sampleResolve(value) {
  return new Promise(resolve => {
        setTimeout(() => {
            resolve(value);
        }, 2000);
    })
}

function sampleResolve2(value) {
  return new Promise(resolve => {
        setTimeout(() => {
            resolve(value * 2);
        }, 1000);
    })
}

function sample() {
    const promiseA = sampleResolve(5);
    const promiseB = sampleResolve(10);
    const promiseC = promiseB.then(value => {
        return sampleResolve2(value);
    });

    return Promise.all([promiseA, promiseB, promiseC])
        .then(([a, b, c]) => {
            return [a, b, c];
        });
}

sample().then(([a, b, c]) => {
    console.log(a, b, c); // => 5 10 20
});

ÊÂÎó¤ÎÈ󯱴ü½èÍý¡Êasync/await¹½Ê¸¡Ë

Promise.all¤Ë¤âawait¤òÍøÍѤǤ­¤ë¤¿¤á¡¢°Ê²¼¤Î¤è¤¦¤Ëµ­½Ò¤Ç¤­¤ë¡£

function sampleResolve(value) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(value);
        }, 2000);
    })
}

function sampleResolve2(value) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(value * 2);
        }, 1000);
    })
}

async function sample() {
    const [a, b] = await Promise.all([sampleResolve(5), sampleResolve(10)]);
    const c = await sampleResolve2(b);

    return [a, b, c];
}

sample().then(([a, b, c]) => {
    console.log(a, b, c); // => 5 10 20
});

array.map()¤âÍøÍѤǤ­¤ë¡£

function sampleResolve(value) {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(value);
        }, 2000);
    })
}

async function sample() {
    const array =[5, 10, 15];
    const promiseAll = await Promise.all(array.map(async (value) => {
        return await sampleResolve(value) * 2;
  }));

    return promiseAll;
}

sample().then(([a, b, c
		

2018-09-14

¢£¼ÂºÝ¤Î¤È¤³¤í¡Ö¥Ö¥é¥¦¥¶¤òΩ¤Á¾å¤²¤Æ¥Ú¡¼¥¸¤¬É½¼¨¤µ¤ì¤ë¤Þ¤Ç¡×¤Ë¤Ï²¿¤¬µ¯¤­¤ë¤Î¤« 14:12

<title>¼ÂºÝ¤Î¤È¤³¤í¡Ö¥Ö¥é¥¦¥¶¤òΩ¤Á¾å¤²¤Æ¥Ú¡¼¥¸¤¬É½¼¨¤µ¤ì¤ë¤Þ¤Ç¡×¤Ë¤Ï²¿¤¬µ¯¤­¤ë¤Î¤«</title>

¼ÂºÝ¤Î¤È¤³¤í¡Ö¥Ö¥é¥¦¥¶¤òΩ¤Á¾å¤²¤Æ¥Ú¡¼¥¸¤¬É½¼¨¤µ¤ì¤ë¤Þ¤Ç¡×¤Ë¤Ï²¿¤¬µ¯¤­¤ë¤Î¤«

ÌäÂê¤Î¥Ä¥¤¡¼¥È

ÌÌÀܤμÁÌä¤Ç¡Ö¥Ö¥é¥¦¥¶¤òΩ¤Á¾å¤²¤Æ¥Ú¡¼¥¸¤¬É½¼¨¤µ¤ì¤ë¤Þ¤Ç¤Î»ÅÁȤߤòÁ´¤ÆÃΤäƤë¸Â¤êÀâÌÀ¤·¤Æ¤¯¤À¤µ¤¤¡×¤Ã¤Æ¤Î¤ò¤ä¤ë¤È·ë¹½Web·Ï¤ÎÃμ±¤É¤ì¤À¤±¤¢¤ë¤«Ê¬¤«¤ë¤È»×¤Ã¤Æ¤ë

— (@tan_go238)








<time datetime="2018-09-10T10:35:58+0000" pubdate="" style="max-width: 100%;" title="Time posted: September 10, 2018 10:35:58 (UTC)">7:35 PM - Sep 10, 2018</time>

²ò¼á

º£²ó¤Ï¡ÖChrome¤ÎURLÍó¤ËÆþÎϤ·¤Æ¤«¤é¥Ú¡¼¥¸¤¬É½¼¨¤µ¤ì¤ë¤Þ¤Ç¡×¤ò¤ä¤ê¤Þ¤¹¡£¥Ö¥é¥¦¥¶¤Îµ¯Æ°±¾¡¹¤ÏWeb·Ï¤ÎÏ两ã¤Ê¤¤¤È¿®¤¸¤Æ¤Þ¤¹¡£

1. HTTP¥ê¥¯¥¨¥¹¥È¤¬Èô¤Ö

HTTP2¤Î¥Ø¥Ã¥À°µ½Ìµ»½Ñ¤ËÁ´¤Æ½ñ¤¤¤Æ¤¢¤ê¤Þ¤·¤¿¡£

¼ÂºÝ¤Î¥ê¥¯¥¨¥¹¥È¥Ø¥Ã¥À

:authority: www.google.co.jp
method
GET
path
/
scheme
https
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 accept-encoding: gzip, deflate, br accept-language: ja,en-US;q=0.9,en;q=0.8 cache-control: max-age=0 cookie: 🤫 upgrade-insecure-requests: 1 user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36 x-client-data: CJW2yQEIpbbJAQjBtskBCKmdygEI2J3KAQjancoBCKijygEIh6fKAQ==

º£²ó¤Ï¥ê¥¯¥¨¥¹¥È¥á¥½¥Ã¥É¤¬GET¤Ê¤Î¤Ç¥Ø¥Ã¥À¤Î¤ß¤Ç¤¹¤¬¡¢POST¤äPUT¤Î¾ì¹ç¤Ï¥Ç¡¼¥¿¤¬¥ê¥¯¥¨¥¹¥È¥Ü¥Ç¥£¤ÇÁ÷¤é¤ì¤Þ¤¹¡£¾Ü¤·¤¯¤ÏHTTP¥á¥½¥Ã¥É(CRUD)¤Ë¤Ä¤¤¤Æ¤Þ¤È¤á¤¿¤Ê¤É¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

;Ã̤Ǥ¹¤¬¡¢²¿Ç¯¤«Á°¤Ë¡Ú¥Ñ¥º¥ë£±¡Û¤Û¤È¤ó¤É¤Î¥¨¥ó¥¸¥Ë¥¢¤Ë¤Ï²ò¤±¤ë¤¬¡¢²¼°Ì10¡ó¤Î¥À¥á¤Ê¥¨¥ó¥¸¥Ë¥¢¤Ë¤À¤±²ò¤±¤Ê¤¤¥Ñ¥º¥ë?¤ÇÍ·¤ó¤À¤Î¤ò»×¤¤½Ð¤·¤Þ¤·¤¿¡£³Ú¤·¤¯HTTP¥á¥½¥Ã¥É¤Ë¤Ä¤¤¤Æ³Ø¤Ù¤ë¥Ñ¥º¥ë¤Ê¤Î¤Ç²ò¤¤¤Æ¤¤¤Ê¤¤¿Í¤Ï¤¼¤Ò²ò¤¤¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£

¼ÂºÝ¤Î¥ì¥¹¥Ý¥ó¥¹¥Ø¥Ã¥À

HTTP/1.1 200
status: 200
date: Tue, 11 Sep 2018 09:36:30 GMT
expires: -1
cache-control: private, max-age=0
content-type: text/html; charset=UTF-8
strict-transport-security: max-age=3600
content-encoding: br
server: gws
x-xss-protection: 1; mode=block
x-frame-options: SAMEORIGIN
set-cookie: 1P_JAR=2018-09-11-09; expires=Thu, 11-Oct-2018 09:36:30 GMT; path=/; domain=.google.co.jp
alt-svc: quic=":443"; ma=2592000; v="44,43,39,35"

¥ì¥¹¥Ý¥ó¥¹¥Ø¥Ã¥À¤Ï¾å¤ß¤¿¤¤¤Ê´¶¤¸¤Ç¡¢¤³¤Î¥Ø¥Ã¥À¤È°ì½ï¤ËÆÏ¤¯¥ì¥¹¥Ý¥ó¥¹¥Ü¥Ç¥£¤¬<!doctype html>¡Á¡Á¤È¤¤¤¦html¥É¥­¥å¥á¥ó¥È¤Ç¤¹¡£

¤â¤Ã¤ÈÄã¥ì¥¤¥ä¡¼¤Ë¤Ä¤¤¤Æ¤ÏOSI»²¾È¥â¥Ç¥ë¤Þ¤È¤á¤¬Ê¬¤«¤ê¤ä¤¹¤¤¤Ç¤¹¡£

DNS¡©²¿¤Ç¤¹¤«¤½¤ì¤Ï¡£

DNS¥×¥í¥È¥³¥ë¤Ã¤Æ¤è¤¯Ê¬¤«¤ê¤Þ¤»¤ó¤·HTTPS¤Ç̾Á°²ò·è¤Ç¤­¤¿¤é³Ú¤Ç¤¤¤¤¤Ç¤¹¤è¤Í¡£

2. ¥ì¥ó¥À¥ê¥ó¥°¥¨¥ó¥¸¥ó¤¬ÉÁ²è¤ò¹Ô¤¦

¥ì¥¹¥Ý¥ó¥¹¥Ü¥Ç¥£¤ÇÊ֤äƤ­¤¿html¥É¥­¥å¥á¥ó¥È¤ò¸µ¤Ë¥Ö¥é¥¦¥¶¤ËÅëºÜ¤µ¤ì¤Æ¤¤¤ë¥ì¥ó¥À¥ê¥ó¥°¥¨¥ó¥¸¥ó¤¬²èÌ̤òÉÁ²è¤·¤Þ¤¹¡£

Chrome¤Î¾ì¹ç¤ÏBlink¤È¤¤¤¦¥¨¥ó¥¸¥ó¤¬ÅëºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

¥ì¥¤¥ä¡¼¿Þ

(image from How Blink works by Kentaro Hara)

¤Ç¡¢¤³¤ÎBlink¤Ç¹Ô¤ï¤ì¤Æ¤¤¤ë¥ì¥ó¥À¥ê¥ó¥°¥×¥í¥»¥¹¤¬²¼¿Þ¤Ç¤¹¡£

¥ì¥ó¥À¡¼¥Ñ¥¤¥×¥é¥¤¥ó

(image from How Blink works by Kentaro Hara)

html¥É¥­¥å¥á¥ó¥È¤ò²ò¼á¤·¤ÆDOM¤ò¹½ÃÛ¤·¡¢style¤òÅö¤Æ¤Ï¤á¤Æ¥ì¥¤¥¢¥¦¥È¤·¤Æ¤«¤éÉÁ²è¤Ç¤¹¡£¤¢¤È¤ÏLife of a Pixel 2018¤ò¸«¤Æ¤¯¤À¤µ¤¤¡£¥Þ¥¸¤Çʬ¤«¤ê¤ä¤¹¤¤¤Î¤Ç¥ª¥¹¥¹¥á¤Ç¤¹¡£¤³¤ì¤ò¸«¤¿¸å¤¸¤ã¤¢¼«Ê¬¤Ç½ñ¤­Ä¾¤½¤¦¤È¤¤¤¦µ¤¤Ë¤Ï¤Ê¤ì¤Þ¤»¤ó¤Í¡£

¤Ç¤â¡Ö¤É¤¦¤·¤Æ¤â¤ªÁ°¤¬½ñ¤¤¤¿²òÀ⤬ÆÉ¤ß¤¿¤¤¤ó¤À¡ª¡ª¡ª¡×¤È¤¤¤¦¿Í¤Î°Ù¤Ë½ñ¤­¤Þ¤¹¡£ÀµÄ¾¤³¤ì°Ê¹ß¤ÎÉôʬ¤Ï¼Á¤¬Èù̯¤Ç¤¹¡£¥×¥í¤Î¤¢¤Ê¤¿¤Î½õ¤±¤òµá¤á¤Æ¤¤¤Þ¤¹¡£¥³¥á¥ó¥È¡¦ÊÔ½¸¥ê¥¯¥¨¥¹¥È¤ªÂÔ¤Á¤·¤Æ¤¤¤Þ¤¹¡£

DOM¤È¤Ï

Document Object Model¤Îά¤Ç¤¹¡£chromium¤ÎDOM¤Î¥Ú¡¼¥¸¤Ë¼ÂÁõ¤Ê¤É¤Î¾ðÊ󤬤ޤȤޤäƤ¤¤Þ¤¹¡£

¡Ö¤¤¤äDocument Object Model¤Ã¤Æ²¿¤ä¤Í¤ó¡×¤È¤Ê¤ë¤È»×¤¦¤Î¤Ç¤¹¤¬¡¢Ã¼Åª¤Ë¤¤¤¦¤ÈÌڤǤ¹¡£tree¡£

DOM¤ÏChrome¤Ç¡Ö⌘+⌥+i¡×¤ò²¡¤¹¤È½Ð¸½¤¹¤ë¸¡¾Ú¥â¡¼¥É¤Î¡Öelement¡×¤Î¹àÌܤËʤó¤Ç¤¤¤ë¥¢¥¤¥Ä¤Ç¤¹¡£¥­¡¼¥Ü¡¼¥É¤Ë⌘¥­¡¼¤ä⌥¥­¡¼¤¬Ìµ¤¤¾ì¹ç¤Ï¤³¤Á¤é¤Ø¤É¤¦¤¾¡£

(Îã)google.co.jp¤ÎDOM

DOCUMENT (always the root)
 ¨¦¨¡HTML
   ¨§¨¡HEAD
   ¨¢  ¨¦¨¡...
   ¨¦¨¡BODY
      ¨§¨¡DIV
      ¨¢  ¨¦¨¡...
      ¨§¨¡SCRIPT
      ¨¦¨¡SCRIPT

¤½¤ì¤¾¤ì¤Înode¤Î¼ÂÁõ

container node graph

(image from core/dom/README.md by ¤­¤é¤­¤é¡ù¤Ï¤ä¤È¤¿¤ó)

¿Æ¤ÏfirstChild¤ÈlastChild¤Î¾ðÊó¤·¤«»ý¤Ã¤Æ¤Ê¤¤¤½¤¦¤Ç¤¹¡£Ï¢·ë¥ê¥¹¥È¤Ã¤Æ¥ä¥Ä¤Ç¤¹¤Í¡£

¥ì¥ó¥À¥ê¥ó¥°¥¨¥ó¥¸¥ó¤ÏHTMLʸ¾Ï¤ò²òÀϤ·¡¢¾åµ­¤Î¤è¤¦¤ÊDOM¥Ä¥ê¡¼¤ò¹½ÃÛ¤·¤Þ¤¹¡£

Style

¥ì¥ó¥À¥ê¥ó¥°¥¨¥ó¥¸¥ó¤ÏCSS¤ò²òÀϤ·¤ÆCSS Object Model¥Ä¥ê¡¼¤ò¹½ÃÛ¤·¤Þ¤¹¡£

¸µ¤ÎCSS

body { font-size: 16px }
p { font-weight: bold }
span { color: red }
p span { display: none }
img { float: right }

⬇️CSSOM

CSSOM

(image from ¥ª¥Ö¥¸¥§¥¯¥È ¥â¥Ç¥ë¤Î¹½ÃÛ by Ilya Grigorik)

DOM¤ÈCSSOM¤òÁȤ߹ç¤ï¤»¤ë¤ÈRender Tree¤¬´°À®¤·¤Þ¤¹¡£

render tree

(image from ¥ì¥ó¥À¥ê¥ó¥° ¥Ä¥ê¡¼¤Î¹½ÃÛ¡¢¥ì¥¤¥¢¥¦¥È¡¢¥Ú¥¤¥ó¥È by Ilya Grigorik)

¤Á¤Ê¤ß¤Ë¤³¤ÎCSSOM¤ÏJavascript¤Ëexpose(ÆüËܸìÌõµá¤à)¤µ¤ì¤Æ¤¤¤ë¤Î¤Çwindow.getComputedStyle() ¤ÇÍ×ÁǤΥ¹¥¿¥¤¥ë¤ò¼èÆÀ¤¹¤ë»ö¤¬¤Ç¤­¤Þ¤¹¡£

Layout

¥ì¥ó¥À¥ê¥ó¥°¥Ä¥ê¡¼¤ò¸µ¤Ë¡¢¸Ä¡¹¤ÎÍ×ÁǤ¬¥¦¥£¥ó¥É¥¦Æâ¤Î¤É¤³¤ËÇÛÃÖ¤µ¤ì¤ë¤«¤ò·è¤á¤Æ¤¤¤­¤Þ¤¹¡£

css box model

(image from CSS Box Model Module Level 3)

¾å¤Î²èÁü¤ß¤¿¤¤¤ÊCSS Box Model¤ò»È¤Ã¤Æ¡¢¿Æ¤«¤é»Ò¤Ø¤ÈºÆµ¢Åª¤Ë¡¢¤Ä¤Þ¤ê»Ò¤Ï¿Æ¤ÎcontentÆâ¤Ë¥ì¥¤¥¢¥¦¥È¤µ¤ì¤Æ¤¤¤­¤Þ¤¹¡£CSS¤Ç¤Ï¿ÆÍ×ÁǤȤÎÁêÂÐŪ¤Ê°ÌÃÖ´Ø·¸¤Çµ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¥ì¥¤¥¢¥¦¥È½èÍý¤Î½ÐÎÏÃʳ¬¤Ç¤Ï²èÌ̾å¤ÎÀäÂÐŪ¤Ê°ÌÃ֤ˤʤê¤Þ¤¹¡£

Life of a Pixel 2018 (1).png

(image from Life of a Pixel 2018)

Life of a Pixel 2018.png

(image from Life of a Pixel 2018)

Ãæ¤Î¥³¥ó¥Æ¥ó¥Ä¤¬¥¹¥Ú¡¼¥¹¤ò¥ª¡¼¥Ð¡¼¤·¤Æ¤âOK¤Ç¡¢¤½¤Î»þ¤ÎÁªÂò»è¤ÏÁ´¤ÆÉ½¼¨¤¹¤ë¡Övisible¡×¡¢¥ª¡¼¥Ð¡¼¤·¤¿Éôʬ¤òɽ¼¨¤·¤Ê¤¤¡Öhidden¡×¡¢¤½¤·¤Æ¥¹¥¯¥í¡¼¥ë¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡Öscroll¡×¤Î3¤Ä¤Ç¤¹¡£

  • SCROLLING IN BLINK | ¥¹¥¯¥í¡¼¥ë¤Î»ÅÁȤߤˤĤ¤¤Æ¡£position: sticky¤Ã¤Æ½é¤á¤ÆÃΤ俤±¤É¤á¤Ã¤Á¤ãÊØÍø¤¸¤ã¤Ê¤¤¤Ç¤¹¤«¡©¤â¤Ã¤ÈÁ᤯ÃΤꤿ¤«¤Ã¤¿¡Ä¡Ä

¸åLayoutNG¤Ê¤ë¿·¤·¤¤¥ì¥¤¥¢¥¦¥È¥·¥¹¥Æ¥à¤¬³«È¯Ãæ¤é¤·¤¤¡£

Paint

ɽ¼¨¤µ¤ì¤ë¤Ù¤­Í×ÁǤȤ½¤Î¥¹¥¿¥¤¥ë¤¬·×»»¤Ç¤­¤¿¤Î¤Ç¡¢ºÇ¸å¤Ë¤½¤ì¤¾¤ì¤ÎÍ×ÁǤò¼ÂºÝ¤Î¥Ô¥¯¥»¥ë¤ËÍî¤È¤·¹þ¤ó¤Ç¤¤¤­¤Þ¤¹¡£

Life of a Pixel 2018 (2).png

(image from Life of a Pixel 2018)

DOM¥Ä¥ê¡¼¤È¤Ï´Ø·¸¤Ê¤¯¡¢ÉÁ²è¥ê¥¹¥È¤Î½çÈÖ¤ÇÉÁ²è¤µ¤ì¤Æ¤¤¤­¤Þ¤¹¡£CSS¤Îz-index¤òÀßÄꤹ¤ë»ö¤Ç½çÈÖ¤òÌÀ¼¨Åª¤Ë»ØÄê¤Ç¤­¤Þ¤¹¡£

Life of a Pixel 2018 (3).png

(image from Life of a Pixel 2018)

¤Þ¤¿¡¢background¤äfloat¤Ê¤É¤ÎÍ×ÁǤˤè¤Ã¤Æ¤É¤ì¤¬¾å¤ËÍè¤ë¤Î¤«¤¬ÊѤï¤ë¤Î¤Ç¡¢Çظå¤ÎÍ×ÁǤ¬ÉôʬŪ¤ËÁ°¤Ë½Ð¤ÆÍè¤ë¤³¤È¤â¤¢¤ë¤é¤·¤¤¤Ç¤¹¡£

¤³¤ÎÉÁ²è¹©Äø¤¬½ª¤ï¤ë¤È²èÌ̤˥ڡ¼¥¸¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

Compositor thread

¥Ö¥é¥¦¥¶¤Î¥ì¥ó¥À¥ê¥ó¥°½èÍý¤ÏÁ´¤Æmain¥¹¥ì¥Ã¥É¤È¤¤¤¦°ì¤Ä¤Î¥¹¥ì¥Ã¥É¤Ç¹Ô¤ï¤ì¤Þ¤¹¡£¥¹¥ì¥Ã¥É¤¬°ì¤Ä¤·¤«Ìµ¤¤¤È¤¤¤¦¤Î¤Ï¡¢javascript¤Ê¤É¤Ç²¿¤«½Å¤¿¤¤½èÍý¤ò¼Â¹Ô¤·¤Æ¤·¤Þ¤¤¥¹¥ì¥Ã¥É¤òËä¤á¤Æ¤·¤Þ¤Ã¤¿¾ì¹ç¤Ë¥¹¥¯¥í¡¼¥ë¤Ê¤É´ðËÜŪ¤ÊÁàºî¤¹¤é¤ª¤Ü¤Ä¤«¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦´í¸±¤¬¤¢¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£

¤½¤³¤Ç¡¢¥¹¥¯¥í¡¼¥ë¤ä¥¢¥Ë¥á¡¼¥·¥ç¥ó¡¢¥º¡¼¥à¤Ê¤É¡Ö¥ì¥¤¥ä¡¼¤Î°Üư¡¦¥¹¥±¡¼¥ë¤ÎÊѹ¹¡×¤ÇÂнè¤Ç¤­¤ë¤â¤Î¤Ë´Ø¤·¤Æ¤Ï¡¢¥ì¥ó¥À¥ê¥ó¥°¤¬½ª¤ï¤Ã¤¿¸å¤ËÊÌ¥¹¥ì¥Ã¥É¤Ø¤È°Üư¤µ¤»¡¢¥¹¥à¡¼¥º¤ÊÁàºî¤ò²Äǽ¤Ë¤·¤è¤¦¤È¤¤¤¦¤Î¤¬¡ÖCompositor Thread Architecture¡×¤Ç¤¹¡£

Life of a Pixel 2018 (4).png

(image from Life of a Pixel 2018)

½ª

¥×¥í¤ÎÊý¡¹¤Î¥³¥á¥ó¥È¤äÊÔ½¸¥ê¥¯¥¨¥¹¥È¤ò¤ªÂÔ¤Á¤·¤Æ¤¤¤Þ¤¹¡£¤è¤í¤·¤¯¤ª´ê¤¤¤·¤Þ¤¹¡£

¤³¤Îµ­»ö¤è¤ê¤âLife of a Pixel 2018¤òÆÉ¤ß¤Þ¤·¤ç¤¦¡£¥Ö¥é¥¦¥¶¤Î¥ì¥ó¥À¥ê¥ó¥°¤Ë¤Ä¤¤¤Æ³Ø¤Ö¤Ê¤éºÇ¹â¤Ë¥ª¥¹¥¹¥á¤Î¥¹¥é¥¤¥É¤Ç¤¹¡£

2018-09-12

¢£M¼Ò¤ÎºÎÍѤˤĤ¤¤Æ · GitHub 07:27

<title>M¼Ò¤ÎºÎÍѤˤĤ¤¤Æ · GitHub</title>

M¼Ò¤Î¥¨¥ó¥¸¥Ë¥¢ºÎÍѤˤĤ¤¤Æ

¼«Ê¬¤¬¤ä¤á¤¿»þÅÀ¤Ç¤Î¥Ð¥Ã¥¯¥¨¥ó¥É¥¨¥ó¥¸¥Ë¥¢ºÎÍÑ¥Õ¥í¡¼

  1. ³Æ¥×¥í¥À¥¯¥È¤Î³«È¯ÀÕǤ¼Ô1̾¡Êµ¬ÌϤ¬Â礭¤¤²È·×Êí¡¦²ñ·×¤Ï +1̾¡Ë¤¬ºÎÍÑôÅö¼Ô
  2. ±þÊ礬Í褿¤é³ÆºÎÍÑôÅö¼Ô¤¬¼«Ê¬¤Î¥Á¡¼¥à¤Ë¤Û¤·¤¤¤«¤É¤¦¤«¡Ê²ñ¤¤¤¿¤¤¤«²ñ¤¤¤¿¤¯¤Ê¤¤¤«¡Ë¤ò·è¤á¤ë
  3. ²ñ¤¤¤¿¤¤°Õ»×¤ò½Ð¤·¤¿¥á¥ó¥Ð¡¼¤«¤éMAX4̾¤Þ¤Ç¤òÌÌÀÜ´±¤È¤¹¤ë¡£4̾°Ê¾å¤¤¤¿¤é¥é¥ó¥À¥à¤Ç4̾Áª½Ð¤¹¤ë
  4. 1̾¤Ë¤Ä¤­15 - 30ʬÌÌÀܤ¹¤ë¡Ê¤Î¤ÇºÎÍÑ´õ˾¼Ô¤Ï2»þ´Ö¤¯¤é¤¤ÌÌÀܤò¼õ¤±¤ë¡£¡£¡Ë
  5. ÌÌÀÜ´±¤ÏÁ´°÷¤¬ÌÌÀܤò½ª¤¨¤ë¤Þ¤Ç¡¢¸¶Â§¡¢É¾²Á¤ò¶¦Í­¤·¤Æ¤Ï¤¤¤±¤Ê¤¤¡£Á´°÷¤¬½ª¤ï¤Ã¤¿¤é¡¢¼è¤ë¡¢Â¾¤Î¥Á¡¼¥à¤Ê¤é¤¢¤ê¤¨¤ë¡¢¼è¤é¤Ê¤¤¤Î3Âò¤Çɾ²Á¤ò¶¦Í­¤¹¤ë
  6. ¾¤Î¥Á¡¼¥à¤Ê¤é¤Î°Õ¸«¤¬ÌÌÀÜ´±¤Ç°ìÃפ·¤Æ¤¤¤Æ¡¢¤½¤Î¥Á¡¼¥à¤ÎôÅö¼Ô¤¬ÌÌÀÜ´±¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¤È¤­¤À¤±¥¨¥ó¥¸¥Ë¥¢2¼¡ÌÌÀܤ¬¤¢¤ë¡£¤½¤ì°Ê³°¤Ç¤¢¤ì¤Ð¤½¤Î¤Þ¤ÞCTOÌÌÀÜ
  7. CTOÌÌÀܤϥ«¥ë¥Á¥ã¡¼¤Î¥Õ¥£¥Ã¥È¤¯¤é¤¤¤·¤«¤ß¤Ê¤¤¡£¤Î¤Ç¼Â¼Á¼è¤ë¤«¼è¤é¤Ê¤¤¤«¤Ï³Æ¥Á¡¼¥à¤ÎÀÕǤ¼Ô¤Ë°Ñ¤Í¤é¤ì¤Æ¤¤¤ë

¢¬¤Î¥Õ¥í¡¼¤Ë¤Ê¤Ã¤¿·Ð°Þ¤È¤«

  • ÀΡ¢¿Í»ö¤¬ÌÌÀܤ˽ФƤ­¤Æ¡Á¡Á¤ß¤¿¤¤¤Êµ­»ö¤¬¥Í¥Ã¥È¤Ç¥Ð¥º¤Ã¤¿¤Î¤Ç¡¢´ðËÜŪ¤Ë¥¨¥ó¥¸¥Ë¥¢¤À¤±¤Ç¹çÈݤò·è¤á¤ë¤³¤È¤Ë¤Ê¤Ã¤¿
  • °ÊÁ°¤Ï°ìÉô¤Î¥¨¥ó¥¸¥Ë¥¢¤¬ÌÌÀܤò¤·¤Æ¤¤¤¿¤¿¤á´ð½à¤¬ÉÔÌÀ³Î¤À¤Ã¤¿¤Î¤Ç¡¢¤É¤¦¤¤¤¦É¾²Á¤ò½Ð¤¹¤«¥ë¡¼¥ë²½¤·¤¿
  • ¥Á¡¼¥à¤Ë¤è¤Ã¤Æµá¤á¤ë¿ÍºàÁü¤ò½Ð¤·¤Æ¤ß¤ë¤È¡¢°Õ³°¤Èµá¤á¤ë¤³¤È¤¬Á´Á³°ã¤Ã¤¿¤Î¤Ç³Æ¥Á¡¼¥à¤ÇÂåɽ¼Ô¤ò½Ð¤¹¤³¤È¤Ë¤Ê¤Ã¤¿
  • °ÊÁ°¤Ï4¿ÍÃæ°ì¿Í¤Ç¤â¡Ö¼è¤é¤Ê¤¤¡×¤Îɾ²Á¤ò½Ð¤·¤¿¤é¼è¤é¤Ê¤¤À©ÅÙ¤À¤Ã¤¿¤¬¡¢¤È¤¢¤ë¥Á¡¼¥à¤¬Îã³°¤ÇºÎÍѤ·¤¿¿Í¤¬¥Á¡¼¥à¤Ë¥Þ¥Ã¥Á¤·¤Æ¤è¤¯µ¡Ç½¤·¤Æ¤¤¤¿¤Î¤Ç¡¢Ã¯¤«¤¬¡Ö¼è¤é¤Ê¤¤¡×¤Ë¤·¤¿¤éɬ¤ºÍî¤È¤¹¥ë¡¼¥ë¤ÏÇѻߤµ¤ì¤¿

M¼Ò¤¬Áø¶ø¤·¤¿¼ºÇԥѥ¿¡¼¥ó

¿Í¤¬Â­¤ê¤Ê¤¤¤«¤é¡¢¤È¤¤¤¦ÂŶ¨

ÀѶËŪ¤ËÍè¤Æ¤Û¤·¤¤¤È¤Þ¤Ç¤Ï»×¤ï¤Ê¤¤¤¬¡¢°­¤¯¤Ï¤Ê¤¤¤Î¤ÇºÎÍÑ¡¢¤È¤¤¤¦È½ÃǤò¤·¤Æ¤¤¤¿·ë²Ì¡¢

¥¨¥ó¥¸¥Ë¥¢¥ì¥Ù¥ë¤Ë³Êº¹¤¬À¸¤Þ¤ì¡¢¤¢¤È¤«¤éÆþ¤Ã¤Æ¤­¤¿Í¥½¨¤Ê¥¨¥ó¥¸¥Ë¥¢¤ÈíÂíबÀ¸¤Þ¤ì¤¿

ºÇ½ªÅª¤Ë¥¨¥ó¥¸¥Ë¥¢Ê¸²½¤Î°ã¤¤¤ËÂѤ¨¤é¤ì¤Ê¤¯¤Ê¤ê¡¢¤ä¤á¤Æ¤·¤Þ¤Ã¤¿

  • ¤É¤¦¤¤¤¦Ê¸²½¤Ë¤·¤¿¤¤¤«¤ÎÌÀ³Î²½¤Ïɬ¿Ü
  • ¿Í¤¬Â­¤ê¤Ê¤¤¤È¤¤¤¦Í¶ÏǤËÉ餱¤Ê¤¤¡£°­¤¯¤Ê¤¤¤«¤é¼è¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢Íè¤Æ¤Û¤·¤¤¤«¤é¼è¤ë¤ÎŰÄì

Ãμ±¤Ï¤¢¤ë¤¬¥³¡¼¥É¤ò½ñ¤¤¤Æ¤ß¤ë¤È¡¢¡¢

ÌÌÀܤǤϹâɾ²Á¤À¤Ã¤¿¤¬¡¢¤¤¤¶»Å»ö¤Ë¤Ä¤¤¤Æ¤â¤é¤¦¤È¥ª¥ì¥ª¥ì¥³¡¼¥É¤ò½ñ¤¯¿Í¤À¤Ã¤¿

ºÇ½ªÅª¤Ë¥³¡¼¥É¥ì¥Ó¥å¡¼¤ò̵»ë¤·¤Æ¥Þ¡¼¥¸¤¹¤ë¤Ê¤É¤Î²£Ë½¤¬¸«¤é¤ì¤¿¤Î¤ÇÌÌÃ̤¬³«¤«¤ì¤¿¤¬¡¢

ºÇ½ªÅª¤Ëʸ²½¤Î°ã¤¤¤Ç¤ä¤á¤Æ¤·¤Þ¤Ã¤¿

  • ï¤â¥³¡¼¥É¤ò³Îǧ¤·¤Æ¤¤¤Ê¤«¤Ã¤¿
  • ²ñÏäÎÊ·°Ïµ¤¤À¤±¤Ç²ñ¼Ò¤Îʸ²½¤Ë¥Þ¥Ã¥Á¤·¤Æ¤¤¤ë¤ÈȽÃǤ·¤Æ¤¤¤Ê¤¤¤«³Îǧ¤¬É¬Í×

ɾȽ¤À¤±¤Ç¹âɾ²ÁºÎÍÑ

ruby¤Î½ñÀÒ¤ò½Ð¤·¤¿¤³¤È¤â¤¢¤ë¤È¤¤¤¦Ïäǡ¢ÌÌÀܤǤâÆÃ¤ËÌäÂêÅÀ¤Ï¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¤Î¤ÇÅö»þ¤Î¥¨¥ó¥¸¥Ë¥¢µëÎÁÊ¿¶Ñ¤Î2Çܶ᤯¤ÎÊ󽷤ǺÎÍѤ·¤¿

¼ÂºÝ¤Ë»Å»ö¤ò¤·¤Æ¤ß¤ë¤È¡Ê¿½¤·Ìõ¤Ê¤¤¤¬¡¢¡¢¡Ë¥¹¥­¥ë¤ÎÄ㤤¿Í¤À¤Ã¤¿

¿ôǯ¸å¡¢¿Í»ö»Üºö¤ÇµëÍ¿¥ì¥ó¥¸¤òÄê¤á¤ë¤³¤È¤Ë¤Ê¤Ã¤¿ºÝ¤Ë¥ì¥ó¥¸¤«¤éÂçÉý¤Ë³°¤ì¤Æ¤¤¤ë¤Ë¤â¤«¤«¤ï¤é¤º¡¢É¾²Á¤¬Á´¤¯È¼¤Ã¤Æ¤¤¤Ê¤¤¤È¤¤¤¦¼«ÂΤˤʤä¿¡£

Ä̾ï¤ÎµëÍ¿¥ì¥ó¥¸¤Þ¤Ç¸ºµë¤¹¤ë¤«¤ä¤á¤Æ¤â¤é¤¦¤«¤·¤«¤Ê¤¤¤È¤¤¤¦¸·¤·¤¤ÌÌÃ̤ò¤¹¤ë¤³¤È¤Ë¤Ê¤ê¡¢·ë¶É¤ä¤á¤Æ¤·¤Þ¤Ã¤¿¡£

¤½¤Î±½¤¬¹­¤Þ¤ê¡¢µëÎÁ¤ò¸ø³«¤¹¤Ù¤­/¤·¤Ê¤¤¤Ù¤­ÏÀÁè¤Þ¤ÇȯŸ¤·¤ÆÂç±ê¾å¤·¤¿

  • ¥¹¥­¥ë¥ì¥ó¥¸¤ÈµëÍ¿¥ì¥ó¥¸¤ò¤¢¤ëÄøÅÙ·è¤á¤Æ¤ª¤¯¤Ù¤­¤À¤Ã¤¿
  • Ëܤò½ñ¤¤¤Æ¤ë¤«¤éÍ¥½¨¡¢¤È¤¤¤Ã¤¿¤¦¤ï¤Ù¤Îɾ²Á¤Ç¤Ï¤Ê¤¯¡¢¼ÂºÝ¤Î¥¹¥­¥ë¤ò³Îǧ¤¹¤ë¤Ù¤­¤À¤Ã¤¿
  • Í¥½¨¤Ê¿Í¤ò¶â¤ÎÎϤǺÎÍѤ¹¤ë¼êÃʤϲ¿¤«¤¬²õ¤ì¤ëµ¤¤¬¤¹¤ë¡£¥¨¥ó¥¸¥Ë¥¢µëÎÁ¤¬¥¤¥ó¥Õ¥ì¤·¤Æ¤¤¤ë¤Î¤Ç¸«Îô¤ê¤·¤Ê¤¤³Û¤ÏɬÍפÀ¤¬¡¢Ä̾ï¤Ç¤Ï¤¢¤ê¤¨¤Ê¤¤³Û¤Ï¾ºµë¤Ç½Ð¤¹¤Û¤¦¤¬Äã¥ê¥¹¥¯
  • ¤Á¤Ê¤ß¤ËM¼Ò¤Ç¤ÏµëÍ¿³Û¤ÏCTO°Ê¾å¤¬·è¤á¤Æ¤¤¤¿¤Î¤Ç¡¢ºÎÍѤò·è¤á¤Æ¤â¤¤¤¯¤é¤Ë¤Ê¤Ã¤¿¤Î¤«¤ÏÉÔÆ©ÌÀ¤Ê¤Þ¤Þ¤À¤Ã¤¿

ºÎÍÑ´ØÏ¢¤Ç¤ä¤Ã¤Æ¤¤¤¿¤³¤È

ÆâÉô¸þ¤±¤Ë¤ä¤Ã¤Æ¤¤¤¿¤³¤È

²ñ¼Ò¤È¤·¤Æ¤É¤¦¤¤¤¦¥¨¥ó¥¸¥Ë¥¢¤¬¤Û¤·¤¤¤Î¤«¥Ö¥ì¥¹¥È

  • »²²Ã¼Ô¤Ï³Æ¥Á¡¼¥à¤Î³«È¯ÀÕǤ¼Ô¤¬must¤Ç¤½¤Î¾´õ˾¼Ô
  • ¤Þ¤º¤Ï¤É¤¦¤¤¤¦¥¨¥ó¥¸¥Ë¥¢Ê¸²½¤Ë¤·¤¿¤¤¤Î¤«¤ò¶¦Í­¤·¤¿
    • ¤³¤¦¤¤¤¦¤Î¤Ï¤¤¤¤¡¢¤³¤¦¤¤¤¦¤Î¤Ï·ù¤À¤È¤«¤¶¤Ã¤¯¤ê
  • ¤½¤Î¤¿¤á¤Ë¤Ï¤É¤¦¤¤¤¦¿Í¤¬Íè¤Æ¤¯¤ì¤ë¤È¤¢¤ê¤¬¤¿¤¤¤«¤ò¶¦Í­

¥Á¡¼¥à¤´¤È¤ËÍߤ·¤¤¿ÍÁü¤ò·è¤á¤ë

  • ¥Á¡¼¥àÆâ¤Î¥¨¥ó¥¸¥Ë¥¢Á´°÷¤ÇÏ䷹礦
  • ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤·¤¿¤¬¤Ã¤Æ¶ñÂÎŪ¤Ë¤É¤¦¤¤¤¦¾ò·ï¤¬É¬Íפ«¤ò¤Þ¤È¤á¤Æµ­»ö¤ò¶¦Í­

Ëܯɤà

¤³¤ÎÊÕ¤òÆÉ¤ó¤Ç¤¤¤ëÁ°Äó¤Ç¤¤¤í¤¤¤í²ñÏäµ¤ì¤Æ¤¤¤¿¤È»×¤¦...

³°Éô¸þ¤±¤Ë¤ä¤Ã¤Æ¤¤¤¿¤³¤È

¥¨¥ó¥¸¥Ë¥¢¥Ö¥í¥°

  • ÅöÈÖÀ©¤ÇË轵郎½ñ¤¯¤«¥í¡¼¥Æ¤µ¤ì¤Æ¤¤¤¿
  • ¥í¡¼¥Æ°Ê³°¤Ç¤â½ñ¤­¤¿¤¤¿Í¤¬½ñ¤¯¤Î¤ÏOK
  • ¤À¤ó¤À¤ó¥Í¥¿¤¬¤Ê¤¯¤Ê¤Ã¤Æ½ñ¤«¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤Ã¤¿...
  • ºÎÍѼõ¤±¤ë¦¤«¤é¤·¤¿¤é¤¢¤Ã¤¿¤Û¤¦¤¬°õ¾Ý¤¬Îɤ¤¡£½ñ¤¯°ÕÍߤ¬¤¢¤ë¿Í¤¬¤¤¤ë¤Ê¤é¤ä¤ë¤Ù¤­

¥Á¡¼¥à¾Ò²ð¡¢¥¨¥ó¥¸¥Ë¥¢¾Ò²ð¤Îµ­»ö¤òºî¤ë

Ruby¤Î¥³¥ß¥Ã¥¿¡¼ºÎÍÑ

  • ÃÎ̾ÅÙ¤äϪ½Ðµ¡²ñ¤ÎÁý²Ã¤Ë¤ÏÁêÅö¸ú²Ì¤¬¤¢¤Ã¤¿
  • µ»½Ñ¤Ë¶¯¤¯¤Ê¤¤´ë¶ÈÁê¼ê¤Ê¤éµ»½ÑÎϤξÚÌÀ¤È¤·¤Æ¤Î¥»¡¼¥ë¥¹¥È¡¼¥¯¤Ë¤â»È¤¨¤¿
  • ¥³¥ß¥Ã¥¿¡¼¤ÎÊý¤¬¤¤¤¤¿Í¤À¤Ã¤¿¤Î¤ÇRuby°Ê³°¤Ç¤âµ»½ÑŪÁêÃ̤˾è¤Ã¤Æ¤¯¤ì¤¿¤ê¤·¤Æ¤¤¤¿
  • Ruby¤Ø¤Î¥í¥Ã¥¯¥¤¥ó´¶¤ÏÈݤ᤺

¥«¥ó¥Õ¥¡¥ì¥ó¥¹Åù¤Î¥Ö¡¼¥¹Å¸³«¡¢¶¨»¿

FAQ

²¿¿Í¤¯¤é¤¤¼õ¤±¤ËÍè¤Æ²¿¿Í¤¯¤é¤¤Ä̤俤«

·î¤Ë5 - 20¤¯¤é¤¤¤ÏÍè¤Æ¤¤¤¿

¿ʬ30¿Í¤Ë1¿Í¤¯¤é¤¤¤·¤«¹ç³Ê¤·¤Æ¤¤¤Ê¤¤¡£Ç¯´Ö¤Ç10¿Í¤¯¤é¤¤

¤É¤³¤«¤éÍè¤Æ¤¤¤¿¤«

¼ç¤Ë¥¨¡¼¥¸¥§¥ó¥È¡¢wantedly¡¢¾Ò²ð

¥¨¡¼¥¸¥§¥ó¥È¤Ï¹â¤¤³ä¤Ë¼Á¤¬Èù̯¤À¤Ã¤¿

¾Ò²ð¤¬°µÅÝŪ¤Ë¼Á¤¬¹â¤¤¤Î¤Ç¡¢¤½¤â¤½¤â¥¨¥ó¥¸¥Ë¥¢¥Í¥Ã¥È¥ï¡¼¥¯¤¬¹­¤¤¿Í¤òºÎÍѤ¹¤ë¤Î¤¬¤è¤¤

¥Õ¥í¥ó¥È¥¨¥ó¥É¡¢¥¹¥Þ¥Û¡¢¥¤¥ó¥Õ¥é¥¨¥ó¥¸¥Ë¥¢¡¢¥Ç¥¶¥¤¥Ê¡¼¤Ï¤É¤¦¤·¤Æ¤¤¤¿¤«

´ðËÜŪ¤Ë¤É¤¦¤¤¤¦¿Í¤¬¤Û¤·¤¤¤«¥Á¡¼¥à¤ÇµÄÏÀ¤·¤Æµ­»ö¤ò½ñ¤¯¤È¤³¤í¤Þ¤Ç¤Ï¶¦ÄÌ

¤É¤¦¤¤¤¦ÌÌÀÜ¥Õ¥í¡¼¤Ë¤¹¤ë¤«¤Ï¤½¤ì¤¾¤ì¥Ð¥é¥Ð¥é

¡ÊÎ㤨¤Ð¥¤¥ó¥Õ¥é¥¨¥ó¥¸¥Ë¥¢¤Ï1Âп¥á¥ó¥Ð¡¼¤Ç1»þ´ÖÌÌÀÜÅù¡Ë

2018-09-10

¢£Google Apps Scripts¤ÇTypescript¤¬Ä¶´Êñ¤Ë»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡ª - ¥¢¥¯¥È¥¤¥ó¥Ç¥£³«È¯¼Ô¥Ö¥í¥° 18:47

<title>Google Apps Scripts¤ÇTypescript¤¬Ä¶´Êñ¤Ë»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡ª - ¥¢¥¯¥È¥¤¥ó¥Ç¥£³«È¯¼Ô¥Ö¥í¥°</title>

Google Apps Scripts¤ÇTypescript¤¬Ä¶´Êñ¤Ë»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡ª

morishita¤Ç¤¹¡£

Cloud Functions ¤ÈʤÖ(?)Google ¤Î¥µ¡¼¥Ð¥ì¥¹¤Ê JavaScript ¼Â¹Ô´Ä¶­¤È¤¤¤¨¤Ð Google Apps Scripts¡ÊGAS¡Ë¤Ç¤¹¡£

GAS ¤Ã¤Æ¤¢¤Î Excel ¤Ç¸À¤¦ VB ¥¹¥¯¥ê¥×¥È´Ä¶­¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤·¤ç¤¦¡©¡¡¤È»×¤Ã¤¿¤¢¤Ê¤¿¡ª

¤³¤Î¥¨¥ó¥È¥ê¤Ç¤½¤Îǧ¼±¤¬ÊѤï¤ë¤È»×¤¤¤Þ¤¹¡£

°ÊÁ°¤Ï»È¤¤¤ä¤¹¤¤¤È¤Ï¸À¤¤Æñ¤«¤Ã¤¿GAS¤Ç¤¹¤¬¡¢ºÇ¶á¤Ï»È¤¤¤ä¤¹¤¯¤Ê¤Ã¤Æ¤­¤Þ¤·¤¿¡£

¤È¤¤¤Ã¤Æ¤â¡¢GAS ¼«ÂΤ¬¥¢¥Ã¥×¥Ç¡¼¥È¤µ¤ì¤¿¤Î¤Ç¤Ï¤Ê¤¯¼þÊեġ¼¥ë¤¬À°È÷¤¬¿Ê¤ß³«È¯¡¦±¿ÍѤ·¤ä¤¹¤¤¾õ¶·¤¬À°¤Ã¤Æ¤­¤¿¤«¤é¤Ç¤¹¡£

¤½¤·¤Æ¡¢¤Ê¤ó¤ÈºÇ¶áTypescript ¤Ç¤È¤Æ¤â¼ÂÁõ¤·¤ä¤¹¤¯¤Ê¤Ã¤¿¤Î¤Ç¡¢¤½¤ì¤ò¤´¾Ò²ð¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

google/clasp

°ÊÁ°¤Î GAS ¤Ï Web ¥¨¥Ç¥£¥¿¾å¤Ç¤·¤«¼ÂÁõ¤Ç¤­¤º¡¢¥³¡¼¥É¤ò VCS ¤Ç´ÉÍý¤¹¤ë¤³¤È¤â¤Þ¤Þ¤Ê¤é¤Ê¤¤¾õ¶·¤Ç¤·¤¿¤¬¡¢Google ¤«¤égoogle/clasp¤¬¥ê¥ê¡¼¥¹¤µ¤ì¡¢¾õ¶·¤¬²þÁ±¤µ¤ì¤Þ¤·¤¿¡£

¤³¤ì¤Ï GAS ¤ò´ÉÍý¤¹¤ë¤¿¤á¤Î CLI ¥Ä¡¼¥ë¤Ç¡¢Google Drive ¾å¤Î GAS ¤Î¥³¡¼¥É¤ò¥í¡¼¥«¥ë¤Ë pull ¤·¤¿¤ê¡¢µÕ¤Ë Google Drive ¾å¤Î GAS ¤Î¥×¥í¥¸¥§¥¯¥È¤Ë push ¤·¤¿¤ê¤Ç¤­¤Þ¤¹¡£

¤È¤¤¤¦¤³¤È¤Ï¡¢Git ¤Ç´ÉÍý¤·¤Ê¤¬¤é¥í¡¼¥«¥ë¤Î»È¤¤´·¤ì¤¿¥¨¥Ç¥£¥¿¤Ç¥³¡¼¥É¤ò½ñ¤¤¤Æ¡¢GAS ¤Ë push ¤·¤Æ¼Â¹Ô¤¹¤ë¤È¤¤¤¦³«È¯¤¬¤Ç¤­¤ë¤Î¤Ç¤¹1¡£

google/clasp ¤¬¡¢¤³¤ÎÊ¿À®ºÇ¸å¤Î²Æ¤Ë¥ê¥ê¡¼¥¹¤µ¤ì¤¿ v1.5.0 ¤Ç¤Ê¤ó¤È Typescript ¤ò¥µ¥Ý¡¼¥È¤·¤¿¤Î¤Ç¤¹¡£

¤³¤ì¤Þ¤Ç¤â Webpack ¤ä Babel ¤ò»È¤Ã¤Æ¥È¥é¥ó¥¹¥Ñ¥¤¥ë¤·¤Æ ES6 ¤ä Typescript ¤Ç GAS ¤Î³«È¯¤Ï¤Ç¤­¤Þ¤·¤¿¡£

¤·¤«¤·¡¢¤É¤ó¤É¤ó¥Ð¡¼¥¸¥ç¥ó¥¢¥Ã¥×¤¹¤ë Webpack ¤ä Babel ¤ËÄɽ¾¤·¤è¤¦¤È¤·¤Æ¥¢¥Ã¥×¥Ç¡¼¥È¤¹¤ë¤È¥Ó¥ë¥É¤Ç¤­¤Ê¤¯¤Ê¤ë¤è¤¦¤Ê¥È¥é¥Ö¥ë¤âµ¯¤³¤ê¤¬¤Á¤Ç¤·¤¿¡£

¤Ç¤â¡¢¤½¤Î¶ìÏ«¤«¤é²òÊü¤µ¤ì¤¿¤Î¤Ç¤¹¡£

¾¯¡¹¡¢Á°ÃÖ¤­¤¬Ä¹¤¯¤Ê¤ê¤Þ¤·¤¿¤¬¡¢¼ÂºÝ¤Ë»È¤Ã¤Æ¤ß¤Þ¤·¤ç¤¦¡£

@google/clasp ¤Î¥¤¥ó¥¹¥È¡¼¥ë¤È¥í¡¼¥«¥ë´Ä¶­¤Î½é´ü²½

google/clasp ¤Ï Node.js ¤Î¥â¥¸¥å¡¼¥ë¤Ç¤¹¡£Node.js 4.7.4 °Ê¾å¤¬É¬ÍפʤΤǡ¢ÍѰդ·¤Æ¤¯¤À¤µ¤¤¡£

Node.js¤Î½àÈ÷¤¬¤Ç¤­¤¿¤é¡¢¼¡¤Î¥³¥Þ¥ó¥É¤Ç¡¢¥í¡¼¥«¥ë´Ä¶­¤òºî¤ê¤Þ¤¹2¡£

$ mkdir clasp-ts-sample
$ cd clasp-ts-sample
$ npm init -y
$ npm install @google/clasp tslint -D
$ npm install @types/google-apps-script -S
$ tslint --init # tslint ¤Ïɬ¿Ü¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢Âç¿Í¤Î¤¿¤·¤Ê¤ß¤È¤·¤ÆÆ³Æþ¤·¤Þ¤·¤ç¤¦¡£


Typescript ¤ÏÌÀ¼¨Åª¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Ê¤¯¤Æ¤â@google/clasp¤¬°Í¸¤·¤Æ¤¤¤ë¤Î¤Ç¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£2018/09/10»þÅÀ¤Ç¤Ï Typescript 2.9.2¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£

@types/google-apps-script ¤âƳÆþ¤¹¤ë¤³¤È¤Ë¤è¤ê VSCode Åù¤Ç¤Ï¥³¡¼¥ÉÊä´°¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

SpreadsheetApp¤Ê¤É¡¢GAS ¸ÇÍ­¤Î¥¯¥é¥¹·²¤âÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÁÇÀ²¤é¤·¤¤!!

GAS ¥×¥í¥¸¥§¥¯¥È¤ÎºîÀ®

¼¡¤Î¥³¥Þ¥ó¥É¤Ç¡¢GAS ¥×¥í¥¸¥§¥¯¥È¤Î¥Õ¥¡¥¤¥ë¤ò Google Drive ¤ËºîÀ®¤·¤Þ¤¹¡£¤½¤Î¸å¡¢À¸À®¤µ¤ì¤¿¥³¡¼¥É¤ò¥í¡¼¥«¥ë¤Ë pull ¤·¤Þ¤¹3¡£

$ clasp create clasp-ts-sample
$ clasp pull


¤³¤³¤Þ¤Ç¤Ç¤Ç¤­¤¿¥Õ¥¡¥¤¥ë¹½À®¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£

clasp-ts-sample/
¨§¨¡¨¡ .clasp.json
¨§¨¡¨¡ node_modules/
¨§¨¡¨¡ package-lock.json
¨§¨¡¨¡ package.json
¨§¨¡¨¡ Code.js
¨§¨¡¨¡ appsscript.json
¨¦¨¡¨¡ tslint.json


rootDir¤òÀßÄꤷ¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤ò src ¤Ë°Üư¤¹¤ë

¼ÂÁõ¤ò³«»Ï¤¹¤ëÁ°¤Ë¡¢´Ä¶­½àÈ÷¤Ë¤â¤¦¤Ò¤È¼ê´Ö¤«¤±¤Þ¤¹¡£

¤È¤¤¤¦¤Î¤â¡¢¤³¤Î¤Þ¤Þ¡¢ clasp push¤ò¼Â¹Ô¤¹¤ë¤È¡¢node_modules°Ê²¼¤Î¤¹¤Ù¤Æ¤Î JS ¤òÆÉ¤ß¹þ¤â¤¦¤È¤·¤Æ¼ºÇÔ¤·¤Þ¤¹¡£

.claspignore ¤òºî¤Ã¤ÆÌµ»ë¤·¤Æ¤ä¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¤¬¡¢¥ª¥¹¥¹¥á¤Ï .clasp.json ¤Ë rootDir¤òÄêµÁ¤¹¤ëÊýË¡¤Ç¤¹¡£

¼¡¤ÎÍͤË.clasp.json¤ËrootDir¤òÄɲä·¤Þ¤¹¡£

{
  "scriptId": "******-***************************************************",
  "rootDir": "src"
}


¤½¤·¤Æ¡¢src ¥Ç¥£¥ì¥¯¥È¥ê¤òºî¤Ã¤Æ¡¢clasp push¤ÎÂоݤȤʤë¥Õ¥¡¥¤¥ë¤ò°Üư¤·¤Þ¤¹¡£

$ mkdir src
$ mv appsscript.json src/
$ mv Code.js src/Code.ts


¤³¤ì¤Ç½àÈ÷¤Ï½ªÎ»¡£¼¡¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¹½À®¤Ë¤Ê¤ê¤Þ¤¹¡£

clasp-ts-sample/
¨§¨¡¨¡ .clasp.json
¨§¨¡¨¡ node_modules/
¨§¨¡¨¡ package-lock.json
¨§¨¡¨¡ package.json
¨§¨¡¨¡ src/
¨¢   ¨§¨¡¨¡ Code.ts
¨¢   ¨¦¨¡¨¡ appsscript.json
¨¦¨¡¨¡ tslint.json


Typescript ¤Î¥³¡¼¥É¤ò PUSH ¤·¤Æ¤ß¤ë

clasp ¤Î¥ê¥Ý¥¸¥È¥ê¤Ë¤¢¤ë¥µ¥ó¥×¥ë¤ò¥³¥Ô¡¼¤·¤Æ»î¤·¤Æ¤ß¤Þ¤¹¡£

¤½¤ì¤¬¼¡¤ÎCode.ts ¤Ç¤¹¡£alert ¤ò»È¤Ã¤Æ¤¤¤¿Éôʬ¤Ï¡¢GAS ¤Ç¤Ïư¤«¤Ê¤¤¤Î¤Ç½¤Àµ¤·¤Æ¤¤¤Þ¤¹¡£

// ·¿ÄêµÁ
const isDone: boolean = false;
const height: number = 6;
const bob: string = "bob";
const list1: number[] = [1, 2, 3];
const list2: number[] = [1, 2, 3];

enum Color {
  Red,
  Green,
  Blue
}

const c: Color = Color.Green;
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

function showMessage(data: string): void {
  // Void
  Logger.log(data);
}
showMessage("hello");

// ¥¯¥é¥¹
class Hamburger {
  constructor() {
    // ¥³¥ó¥¹¥È¥é¥¯¥¿
  }
  public listToppings() {
    // ¥á¥½¥Ã¥É
  }
}

// ¥Æ¥ó¥×¥ì¡¼¥Èʸ»úÎó
const name = "Sam";
const age = 42;
console.log(`hello my name is ${name}, and I am ${age} years old`);

// Rest arguments
const add = (a: number, b: number) => a + b;
const args = [3, 5];
add(...args); // same as `add(args[0], args[1])`, or `add.apply(null, args)`

// ¥¹¥×¥ì¥Ã¥É¹½Ê¸ (array)
const cde = ["c", "d", "e"];
const scale = ["a", "b", ...cde, "f", "g"]; // ['a', 'b', 'c', 'd', 'e', 'f', 'g']

// ¥¹¥×¥ì¥Ã¥É¹½Ê¸ (map)
const mapABC = { a: 5, b: 6, c: 3 };
const mapABCD = { ...mapABC, d: 7 }; // { a: 5, b: 6, c: 3, d: 7 }

// ʬ³äÂåÆþ
const jane = { firstName: "Jane", lastName: "Doe" };
const john = { firstName: "John", lastName: "Doe", middleName: "Smith" };
function sayName({ firstName, lastName, middleName = "N/A" }) {
  console.log(`Hello ${firstName} ${middleName} ${lastName}`);
}
sayName(jane); // -> Hello Jane N/A Doe
sayName(john); // -> Helo John Smith Doe

// Export (The export keyword is ignored)
export const pi = 3.141592;

// Google Apps Script ¤ÎÆÈ¼«¥µ¡¼¥Ó¥¹¤ÎÍøÍÑ
const doc = DocumentApp.create("Hello, world!");
doc
  .getBody()
  .appendParagraph("This document was created by Google Apps Script.");

// ¥Ç¥³¥ì¡¼¥¿¡Ê¹â³¬´Ø¿ô¡Ë
function Override(label: string) {
  return (target: any, key: string) => {
    Object.defineProperty(target, key, {
      configurable: false,
      get: () => label
    });
  };
}
class Test {
  @Override("test") // invokes Override, which returns the decorator
  public name: string = "pat";
}
const t = new Test();
console.log(t.name); // 'test'


¤É¤¦¤Ç¤·¤ç¤¦¡¢¼¡¤Î¤è¤¦¤Ê Typescript ¤Ê¤é¤Ç¤Ï¤Î¤â¤Î¤ò´Þ¤à¥â¥À¥ó¤Ê¼ÂÁõ¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£


¤½¤·¤Æ¡¢Google Docs ¤ò°·¤¦ DocumentApp¤òÍøÍѤ¹¤ë¥³¡¼¥É¤â´Þ¤ó¤Ç¤¤¤Þ¤¹¡£

¤Ç¤Ï¡¢Google Drive ¾å¤Î GAS ¥×¥í¥¸¥§¥¯¥È¤Ë push ¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£

¼¡¤Î¥³¥Þ¥ó¥É¤À¤±¤Ç¡¢¼«Æ°Åª¤Ë¥È¥é¥ó¥¹¥Ñ¥¤¥ë¤·¤Æ¡¢GAS ¤Ë push ¤·¤Æ¤¯¤ì¤Þ¤¹¡£

$ clasp push


tsc¤Ê¤É¤ò»È¤Ã¤Æ»öÁ°¤Ë¥È¥é¥ó¥¹¥Ñ¥¤¥ë¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£

tsconfig.json¤¹¤éÍѰÕÉÔÍפǤ¹4¡£

Javascript ¤Î¥³¡¼¥É¤ò push ¤¹¤ë¤è¤¦¤Ë Typescript ¤Î¥³¡¼¥É¤â push ¤Ç¤­¤Þ¤¹¡£

³¤¤¤Æ GAS ¥×¥í¥¸¥§¥¯¥È¤Ë push ¤µ¤ì¤¿¥³¡¼¥É¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£

clasp open ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È Google Drive ¾å¤Î GAS ¥×¥í¥¸¥§¥¯¥È¤¬¥Ö¥é¥¦¥¶¤Ç³«¤­¤Þ¤¹¡£

¼¡¤ÎÍͤ˥ե¡¥¤¥ë Code.gs ¤È¤·¤Æ¥È¥é¥ó¥¹¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

var exports = exports || {};
var module = module || { exports: exports };
var __assign =
  (this && this.__assign) ||
  Object.assign ||
  function(t) {
    for (var s, i = 1, n = arguments.length; i < n; i++) {
      s = arguments[i];
      for (var p in s)
        if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
    }
    return t;
  };
var __decorate =
  (this && this.__decorate) ||
  function(decorators, target, key, desc) {
    var c = arguments.length,
      r =
        c < 3
          ? target
          : desc === null
            ? (desc = Object.getOwnPropertyDescriptor(target, key))
            : desc,
      d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
      r = Reflect.decorate(decorators, target, key, desc);
    else
      for (var i = decorators.length - 1; i >= 0; i--)        if *1
          r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
  };

// ·¿ÄêµÁ
var isDone = false;
var height = 6;
var bob = "bob";
var list1 = [1, 2, 3];
var list2 = [1, 2, 3];
var Color;
(function(Color) {
  Color[(Color["Red"] = 0)] = "Red";
  Color[(Color["Green"] = 1)] = "Green";
  Color[(Color["Blue"] = 2)] = "Blue";
})(Color || (Color = {}));
var c = Color.Green;
var notSure = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean
function showMessage(data) {
  Logger.log(data);
}
showMessage("hello");
// Classes
var Hamburger = /** @class */ (function() {
  function Hamburger() {
    // ¥³¥ó¥¹¥È¥é¥¯¥¿
  }
  Hamburger.prototype.listToppings = function() {
    // ¥á¥½¥Ã¥É
  };
  return Hamburger;
})();
// ¥Æ¥ó¥×¥ì¡¼¥Èʸ»úÎó
var name = "Sam";
var age = 42;
console.log("hello my name is " + name + ", and I am " + age + " years old");
// Rest arguments
var add = function(a, b) {
  return a + b;
};
var args = [3, 5];
add.apply(void 0, args); // same as `add(args[0], args[1])`, or `add.apply(null, args)`
// ¥¹¥×¥ì¥Ã¥É¹½Ê¸ (array)
var cde = ["c", "d", "e"];
var scale = ["a", "b"].concat(cde, ["f", "g"]); // ['a', 'b', 'c', 'd', 'e', 'f', 'g']
// ¥¹¥×¥ì¥Ã¥É¹½Ê¸  (map)
var mapABC = { a: 5, b: 6, c: 3 };
var mapABCD = __assign({}, mapABC, { d: 7 }); // { a: 5, b: 6, c: 3, d: 7 }
// ÉôʬÂåÆþ
var jane = { firstName: "Jane", lastName: "Doe" };
var john = { firstName: "John", lastName: "Doe", middleName: "Smith" };
function sayName(_a) {
  var firstName = _a.firstName,
    lastName = _a.lastName,
    _b = _a.middleName,
    middleName = _b === void 0 ? "N/A" : _b;
  console.log("Hello " + firstName + " " + middleName + " " + lastName);
}
sayName(jane); // -> Hello Jane N/A Doe
sayName(john); // -> Helo John Smith Doe
// Export (The export keyword is ignored)
exports.pi = 3.141592;
// Google Apps Script ¤ÎÆÈ¼«¥µ¡¼¥Ó¥¹¤ÎÍøÍÑ
var doc = DocumentApp.create("Hello, world!");
doc
  .getBody()
  .appendParagraph("This document was created by Google Apps Script.");
// ¥Ç¥³¥ì¡¼¥¿¡Ê¹â³¬´Ø¿ô¡Ë
function Override(label) {
  return function(target, key) {
    Object.defineProperty(target, key, {
      configurable: false,
      get: function() {
        return label;
      }
    });
  };
}
var Test = /** @class */ (function() {
  function Test() {
    this.name = "pat";
  }
  __decorate(
    [
      Override("test") // invokes Override, which returns the decorator
    ],
    Test.prototype,
    "name"
  );
  return Test;
})();
var t = new Test();
console.log(t.name); // 'test'


ưºî³Îǧ

GAS ¤Î Web ¥¨¥Ç¥£¥¿¡¼¤Ç¤Ï 3 ¤Ä¤Î´Ø¿ô¤¬¼Â¹ÔÂоݤȤ·¤ÆÁªÂò¤Ç¤­¤ë¤È»×¤¤¤Þ¤¹¡£

¤½¤ÎÃæ¤«¤é»î¤·¤ËOverride¤ò¼Â¹Ô¤·¤Æ¤ß¤Þ¤¹¡£

Override°Ê³°¤Î´Ø¿ô¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¤¬¡¢´Ø¿ô³°¤ÎÉôʬ¤Ï¼Â¹Ô¤µ¤ì¤Þ¤¹¡£

¤â¤Á¤í¤ó¤Á¤ã¤ó¤Èư¤­¤Þ¤¹¡£

console.log¤Î½ÐÎϤÏStackdriver Logging¤Ë¼¡¤Î¤è¤¦¤Ë½ÐÎϤµ¤ì¤Þ¤¹¡£

f:id:HeRo:20180908100232p:plain

¤Þ¤¿¡¢DocumentApp.create¤·¤Æ¡¢Ãæ¤Ëʸ»úÎó¤ò½ñ¤­¹þ¤ó¤Ç¤¤¤ëÉôʬ¤¬¤¢¤ê¤Þ¤¹¤¬¡¢

¤½¤Î½ÐÎϤȤ·¤Æ¼¡¤Î¤è¤¦¤ÊGoogle Doc¤Î¥Õ¥¡¥¤¥ë¤¬ Google Drive¤ÎÃæ¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£

f:id:HeRo:20180908100329p:plain

¤È¤Æ¤â´Êñ¤Ç¤¹¡£

¤Þ¤¿¡¢clasp push¤Ë¤Ïwatch¥â¡¼¥É¤Þ¤Ç¤¢¤ê¤Þ¤¹¡£

¼¡¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤Æ¤ª¤±¤Ð¡¢¥³¡¼¥É¤ÎÊѹ¹¤ò¸¡ÃΤ¹¤ë¤È¼«Æ°Åª¤ËºÆ push ¤·¤Æ¤¯¤ì¤Þ¤¹¡£

$ clasp push --watch


¤³¤ì¤Ç¼ÂÁõ->¼Â¹Ô->¤Þ¤¿¼ÂÁõ ¤Î¥µ¥¤¥¯¥ë¤¬¾¯¤·³Ú¤Ë¤Ê¤ê¤Þ¤¹¤Í¡£

¤Þ¤È¤á

¤É¤¦¤Ç¤·¤ç¤¦¡¢¤³¤ì¤Þ¤Ç GAS ¤ò»È¤Ã¤Æ¤­¤¿Êý¤Ë¤Ï¡¢º£¤Þ¤Ç¤Î¤ä¤êÊý¤¬¥Ð¥«¥Ð¥«¤·¤¯¤Ê¤ë¤Û¤É´Êñ¤Ë Typescript ¤Ç¼ÂÁõ¤Ç¤­¤ë¤³¤È¤¬¤ª¤ï¤«¤ê¤¤¤¿¤À¤±¤¿¤È»×¤¤¤Þ¤¹¡£

¤â¤¦ Typescript ¤Ç GAS ¤ò¼ÂÁõ¤·¤Ê¤¤Íýͳ¤¬¸«Åö¤é¤Ê¤¤¤Ç¤·¤ç¤¦¡©

GAS ¤Ï Cloud Functions ¤ËÈæ¤Ù¤ë¤ÈÀ©Ìó¤¬Â¿¤¯¡¢Google Drive ¾å¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î³ÈÄ¥ÍѤȻפï¤ì¤¬¤Á¤Ç¤¹¡£

¤·¤«¤·¼¡¤Î¤è¤¦¤ÊÆÃħ¤òÈ÷¤¨¤Æ¤ª¤ê¡¢¥æ¡¼¥¹¥±¡¼¥¹¼¡Âè¤Ç¤ÏÂçÊÑÊØÍø¤Ë»È¤¨¤ë¥µ¡¼¥Ó¥¹¤Ç¤¹¡£


ÆÃ¤Ë¡¢BigQuery ¤ä Analytics ¤Î¥Ç¡¼¥¿¤ò½¸·×¤·¤Æ¡¢¥ì¥Ý¡¼¥È¤òºîÀ®¤¹¤ëºî¶È¤ò¼«Æ°²½¤¹¤ë¤Ë¤ÏºÇ¤âÊØÍø¤Ê´Ä¶­¤À¤È»×¤¤¤Þ¤¹¡£

Sheets¤äSlides¤Î¥Õ¥¡¥¤¥ë¤È¤·¤ÆGoogle Drive¾å¤Ë½ÐÎϤ¹¤ë¤Î¤¬´Êñ¤Ç¤¹¤·¡¢Gmail·Ðͳ¤Ç¥á¡¼¥ë¤â½Ð¤»¤Þ¤¹¤·¡¢Äê´ü¼Â¹Ô¤Ç¤­¤Þ¤¹¤·¡£

¤Þ¤¿¡¢µîǯ¼¡¤Î 2 ¤Ä¤¬»È¤¨¤ë¤è¤¦¤Ë¤Ê¤ê¡¢¤Þ¤¹¤Þ¤¹±¿ÍѤ·¤ä¤¹¤¯¤Ê¤ê¤Þ¤·¤¿¡£

  • Apps Script dashboard
    • GAS ÀìÍѤδÉÍý¥À¥Ã¥·¥å¥Ü¡¼¥É¡£
    • Google Drive ¤Ë»¶¤é¤«¤ê¤¬¤Á¤Ê GAS ¥×¥í¥¸¥§¥¯¥È¤ò°ì¸µ´ÉÍý¤Ç¤­¤Þ¤¹¡£
    • Sheets ¥Õ¥¡¥¤¥ë¤Ê¤É¤Ë´Þ¤Þ¤ì¤ë container-bound ¤Ê GAS ¥×¥í¥¸¥§¥¯¥È¤â´ÉÍý¤Ç¤­¤Þ¤¹¡£
  • Stackdriver Logging
    • ÈÆÍÑ¤Î¥í¥®¥ó¥°¥µ¡¼¥Ó¥¹¡£
    • console.logÅù¤Î½ÐÎϤ¬¥í¥°¤È¤·¤Æµ­Ï¿¤µ¤ì¤Þ¤¹¡£
    • ¥Ç¥Ð¥Ã¥°¤ä¼Â¹Ô¾õ¶·¤Î³Îǧ¤¬³ÊÃʤˤä¤ê¤ä¤¹¤¯¤Ê¤ê¤Þ¤·¤¿¡£


¤¦¤Þ¤¯»È¤¨¤Ð¶È̳¤Î¸úΨ²½¤ËÂ礤¤ËÌòΩ¤Ã¤Æ¤¯¤ì¤ë GAS ¤ò Typescript ¤Ç¥â¥À¥ó¤Ë³«È¯¤·¤Þ¤·¤ç¤¦¡£

»²¹Í


ºÇ¸å¤Ë

¥¢¥¯¥È¥¤¥ó¥Ç¥£¤Ç¤Ï ¥¨¥ó¥¸¥Ë¥¢¤òÊ罸¤·¤Æ¤¤¤Þ¤¹¡£

actindi.net


  1. ¤³¤Î¤è¤¦¤Ê³«È¯¥¹¥¿¥¤¥ë¤òºÇ½é¤Ë¼Â¸½¤·¡¢¥¨¥Ý¥Ã¥¯¥á¥¤¥­¥ó¥°¤Ê¥Ä¡¼¥ë¤À¤Ã¤¿node-google-apps-script¤Ï¤¹¤Ç¤Ë¥Ç¥£¥¹¥³¥ó¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

  2. clasp ¤Ï npm install -g @google/clasp¤Ç¥°¥í¡¼¥Ð¥ë¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤â¤¤¤¤¤Î¤Ç¤¹¤¬¡¢»ä¤Ï ndenv ¤ÇÊ£¿ô¥Ð¡¼¥¸¥ç¥ó¤Î Node.js ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤ê¡¢¥×¥í¥¸¥§¥¯¥È¤´¤È¤Ë Node.js ¤Î¥Ð¡¼¥¸¥ç¥ó¤¬°Û¤Ê¤Ã¤¿¤ê¤·¤Þ¤¹¡£¤½¤ì¤Ç¡¢¥°¥í¡¼¥Ð¥ë¤Ê¥¤¥ó¥¹¥È¡¼¥ë¤ÏÈò¤±¤Æ¤¤¤Þ¤¹¡£Âå¤ï¤ê¤Ë¡¢./node_module/.bin¤ò PATH ¤ËÄɲä·¤Æ¥×¥í¥¸¥§¥¯¥È¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£

  3. ¤³¤ì¤Þ¤Ç¡¢clasp¤ò»È¤Ã¤¿¤³¤È¤¬¤Ê¤±¤ì¤Ð¡¢¥í¥°¥¤¥ó¤È¡¢API ¤ÎÍ­¸ú²½¤¬É¬Íפˤʤê¤Þ¤¹¡£»²¹Í¡§GAS ¤Î Google ¶àÀ½ CLI ¥Ä¡¼¥ë clasp

  4. clasp¤Ïts2gas¤òÍøÍѤ·¤Æ¥È¥é¥ó¥¹¥Ñ¥¤¥ë¤·¤Æ¤¤¤Þ¤¹¡£¥³¥ó¥Ñ¥¤¥ë¥ª¥×¥·¥ç¥ó¤Ï¤³¤Á¤é =>compilerOptions¡£

  5. GAS ¤Î¥¹¥¯¥ê¥×¥È¤Î¼Â¹Ô¼«ÂΤÏ̵ÎÁ¤Ç¤¹¤¬¡¢Í­ÎÁ¥µ¡¼¥Ó¥¹¤Î API ¸Æ¤Ó½Ð¤¿¾ì¹ç¡¢ÊÌÅӲݶ⤵¤ì¤Þ¤¹¡£


*1¡§d = decorators[i]

2018-09-08

¢£Vue.js¤ÈFirebase¤ÇºÇ®¤Ç¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤òºî¤ë¤¿¤á¤Î³Ø½¬¶µºà£³¥¹¥Æ¥Ã¥×¡Ú´°Á´ÆÈ³Ø¡Û - katonobo¡Çs blog 14:45

<title>Vue.js¤ÈFirebase¤ÇºÇ®¤Ç¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤òºî¤ë¤¿¤á¤Î³Ø½¬¶µºà£³¥¹¥Æ¥Ã¥×¡Ú´°Á´ÆÈ³Ø¡Û - katonobo¡Çs blog</title>

Vue.js¤ÈFirebase¤ÇºÇ®¤Ç¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤òºî¤ë¤¿¤á¤Î³Ø½¬¶µºà£³¥¹¥Æ¥Ã¥×¡Ú´°Á´ÆÈ³Ø¡Û

¤³¤Îµ­»ö¤Ï¡¢

¡¦¼ÂºÝ¤Ë²¿¤«¼«Ê¬¤Ç¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤òºî¤Ã¤Æ¸«¤¿¤¤¤±¤É¤É¤¦¤¹¤ì¤Ð¤¤¤¤¤«¤ï¤«¤é¤Ê¤¤¡£

¡¦Vue.js¤ò»È¤Ã¤Æ²¿¤«ºî¤Ã¤Æ¸«¤¿¤¤

¤È¤¤¤¦Êý¸þ¤±¤Îµ­»ö¤Ç¤¹¡£

»ä¤Ï¡¢²¿¤«¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤òºî¤Ã¤Æ¸«¤¿¤¤¤È¹Í¤¨¤Æ¤¤¤ë¿Í¤Ë¤Ï¡¢Vue.js¤ÈFirebase¤òÍøÍѤ·¤¿¥µ¡¼¥Ó¥¹¤ÎºîÀ®¤ò¥ª¥¹¥¹¥á¤·¤Æ¤¤¤Þ¤¹¡£

¤Ê¤¼¤Ê¤é¡¢¤³¤ÎÆó¤Ä¤ò½¬ÆÀ¤¹¤ë¤È¤¹¤´¤¯´Êñ¤Ë¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤òºî¤ë¤³¤È¤¬¤Ç¤­¤ë¤«¤é¤Ç¤¹¡ª¥·¥ó¥×¥ë¤ÊÍýͳ¤Ç¤¹¤·¡¢¤³¤ì¤¬°ìÈÖÂç»ö¤Ç¤¹¤è¤Í¡£

»ä¤Î¥Ö¥í¥°¤Ë¤Ï¿¤¯¤Î¥×¥í¥°¥é¥ß¥ó¥°½é¿´¼Ô¤äVue.js¤òÊÙ¶¯¤·¤Æ¤¤¤ëÊý¤¬Ë¬Ì䤷¤Æ¤¯¤À¤µ¤Ã¤Æ¤¤¤Þ¤¹¡£

¤½¤ÎÊý¡¹¤Î»²¹Í¤Ë¤Ê¤ë¤è¤¦¡¢¼«Ê¬¤Îº£¤Þ¤Ç¤Î³Ø½¬¤·¤¿¶µºà¤äÆâÍÆ¤ò½ñ¤­½Ð¤·¡¢ËÜÅö¤ËɬÍפǡ¢¤½¤·¤ÆºÇû¤Çµ»½Ñ¤ò¿È¤ËÉÕ¤±¤ë¤Ë¤Ï¤É¤Î¤è¤¦¤Ê¶µºà¤ò¤É¤Î½ç½ø¤Ç¤ä¤ë¤Î¤¬°ìÈÖ¸ú²Ì¤¬¤¢¤ë¤«¤ò½ñ¤­½Ð¤·¤Þ¤È¤á¤Þ¤·¤¿¡£

¤³¤Î¶µºà¤Ë¤¿¤É¤êÃ夯¤Þ¤Ç¤Ë¡¢»ä¤Ï¤«¤Ê¤ê¿¤¯¤Î½ñÀÒ¤ä³Ø½¬Æ°²è¤ò¹ØÆþ¤·¼ÂºÝ¤Ë»î¤·¤Æ¤¤¤Þ¤¹¡£¤½¤ÎÃæ¤ÇÀäÂФ˳°¤»¤Ê¤¤3¤Ä¤Î¶µºà¤ò¸·Áª¤·¤Þ¤·¤¿¡£¤³¤Îµ­»ö¤Ï¡¢µ®½Å¤Ê¤ª¶â¤È»þ´Ö¤òÀáÌó¤Ç¤­¤ë¡¢¤«¤Ê¤ê²ÁÃͤΤ¢¤ë¾ðÊó¤Ç¤¢¤ë¤È¼«É餷¤Æ¤¤¤Þ¤¹¡£ ¤Ê¤ó¤«Àú¤ê¤ß¤¿¤¤¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤Ã¤Æ¤¹¤ß¤Þ¤»¤ó¡£¤±¤É¡¢¤½¤ì¤°¤é¤¤¼«¿®¤¬¤¢¤ê¤Þ¤¹¡£

ÂоݤÎÊý¤Ï¡¢HTML¤ÈCSS¤ÈJavascript¤Î·Ð¸³¤¬¤¢¤ëÊý¤Ç¤¹¡£¤Ç¤­¤ì¤ÐPHP¤Ê¤É¤Î¥µ¡¼¥Ð¥µ¥¤¥É¸À¸ì¤Î·Ð¸³¤¬¤¢¤ì¤Ð¤Ê¤ªÎɤ¤¤Ç¤¹¡£¤¿¤À¤·¡¢»ä¼«¿È¤âPHP¤Î·Ð¸³¤Ï¤¢¤Ã¤¿¤â¤Î¤Î¡¢Javascript¤Ï¤ä¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢¤³¤ì¤«¤éÊÙ¶¯¤¹¤ëͽÄê¤ÎÊý¤Ê¤éÅö¤Æ¤Ï¤Þ¤é¤Ê¤¯¤Æ¤âÂç¾æÉפȻפ¤¤Þ¤¹¡£

¥¹¥Æ¥Ã¥×£±¡§Vue.js¤ÈFirebase¤Çºî¤ë¥ß¥ËWeb¥µ¡¼¥Ó¥¹


Vue.js¤ÈFirebase¤Çºî¤ë¥ß¥ËWeb¥µ¡¼¥Ó¥¹ (µ»½Ñ½ñŵ¥·¥ê¡¼¥º(NextPublishing))

¤³¤Î¶µºà¤Ç¿È¤ËÉÕ¤±¤ë¤³¤È

¡¦Vue.js¤ÎÀßÄêÊýË¡

¡¦Vue.js¤Î´ðËÜŪ¤Ê°·¤¤Êý

¡¦Firebase¤ÎÀßÄêÊýË¡

¡¦Vue.js¤ÈFirebase¤ÎÏ¢·ÈÊýË¡

¡¦¥µ¡¼¥Ó¥¹¤ò¥Ç¥×¥í¥¤¤Þ¤Ç»ý¤Ã¤Æ¤¤¤¯ÊýË¡

Vue.js¤ÈFirebase¤ò»È¤Ã¤Æ¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤òºî¤í¤¦¤È»×¤Ã¤¿¤È¤­¡¢ºÇ½é¤ËÆÉ¤à¤Î¤ÏËܽñ°ìÂò¤Ç¤·¤ç¤¦¡ª¤½¤ì¤°¤é¤¤Îɤ¯¹½À®¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

¤³¤ÎËܤÎÁÇÀ²¤é¤·¤¤¤È¤³¤í¤Ï¡¢Ëܽñ¤Ë¤·¤¿¤¬¤Ã¤Æ¿Ê¤á¤Æ¤¤¤±¤Ð¡¢¤¢¤Ã¤È¤¤¤¦´Ö¤Ë¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤ò¸ø³«¤¹¤ë¤È¤³¤í¤Þ¤Ç¤Ç¤­¤Æ¤·¤Þ¤¦¤³¤È¤Ç¤¹¡£

¼ÂºÝ¤Ë¼«Ê¬¤Ç¥µ¡¼¥Ó¥¹¤òºî¤ê¡¢¤½¤ì¤òÀ¤¤Ë½Ð¤¹¡Ê¥Ç¥×¥í¥¤¡Ë¤¹¤ë¤È¤³¤í¤Þ¤ÇÀâÌÀ¤·¤Æ¤¯¤ì¤ëËܤϤ½¤¦¤½¤¦¤¢¤ê¤Þ¤»¤ó¡£

½é¿´¼Ô¤ÎΩ¾ì¤Ë¤·¤Ã¤«¤êΩ¤Ã¤Æ½ñ¤«¤ì¤Æ¤ª¤ê¡¢¤Ä¤Þ¤º¤¯¤³¤È¤â¤Û¤Ü¤Ê¤¯ºÇ¸å¤Þ¤Ç³Ø½¬¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤È»×¤¤¤Þ¤¹¡£

¤·¤«¤·¡¢¤³¤ÎËܤǤϥµ¡¼¥Ó¥¹¤òºî¤ê¤Ê¤¬¤é³Ø¤Ö¤¿¤á¡¢Vue.js¤Î±þÍÑŪ¤ÊÉôʬ¤Þ¤Ç¤Ï¤µ¤¹¤¬¤Ë¥«¥Ð¡¼¤Ç¤­¤Æ¤¤¤Þ¤»¤ó¡£¡ÖVue-router¡×¤ä¡ÖVuex¡×¤È¹Ô¤Ã¤¿¡¢Vue.js¤Î¼ÂÁ©¥ì¥Ù¥ë¤ÎÃ챤òÂηÏŪ¤Ë½¬ÆÀ¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤½¤³¤Ç¥¹¥Æ¥Ã¥×£²¤Ç¤¹¡£

¥¹¥Æ¥Ã¥×£²¡§´ðÁ䫤鳨¤Ö Vue.js


´ðÁ䫤鳨¤Ö Vue.js

¤³¤Î¶µºà¤Ç¿È¤ËÉÕ¤±¤ë¤³¤È

¡¦Vue.js¤Î´ðÁäòÂηÏŪ¤Ë³Ø½¬¤¹¤ë

¡¦Vue-router¤äVuex¤È¤¤¤¦µ¡Ç½¤ò¿È¤ËÉÕ¤±¤ë

¡¦¤Ê¤ó¤«¤ï¤«¤é¤Ê¤¤¤³¤È¤¬¤¢¤Ã¤¿¤È¤­¤Ë¼­½ñŪ¤Ê»È¤¤Êý¤ò¤¹¤ë

Ëܽñ¤Ï¡Ö´ðÁ䫤鳨¤Ö¡Á¡×¤ÈÂê̾¤Ë¤¢¤ë¤è¤¦¤Ë³Ø½¬¤Ï´ðÁ䫤é»Ï¤Þ¤ê¤Þ¤¹¤¬¡¢¤½¤ì¤Ç¤¤¤Æ¡¢¤¹¤´¤¯¾Ü¤·¤¤Éôʬ¤Þ¤Ç²òÀ⤵¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤³¤Ç¡¢°ìµ¤¤ËVue.js¤Ë¤Ä¤¤¤Æ¤ÎÁ´ÂÎÁü¤ò²¡¤µ¤¨¤Æ¤ª¤­¤Þ¤·¤ç¤¦¡£

¤¿¤À¤·¡¢¤³¤ÎËÜ¤ÎÆâÍÆ¤òÁ´¤Æ¤·¤Ã¤«¤ê³Ø½¬¤¹¤ë¤Î¤Ï¤«¤Ê¤ê¹ü¤¬ÀÞ¤ì¤ë¤Î¤Ç¡¢¤Þ¤º¤Ï¤¶¤Ã¤ÈÌܤòÄ̤·¡¢¥µ¥ó¥×¥ë¤Ê¤É¤ò¤¤¤¸¤ê¤Ê¤¬¤é¡¢Á´ÂΤòÇİ®¤·²¿¤«¥µ¡¼¥Ó¥¹¤òºî¤Ã¤Æ¤¤¤ë¤È¤­¤Ê¤ÉɬÍפ¬½Ð¤Æ¤­¤¿¤È¤­¤ËÅÔÅÙËܽñ¤ò³«¤¯¤È¹Ô¤Ã¤¿¼­½ñŪ¤Ê»È¤¤Êý¤¬¤¤¤¤¤È»×¤¤¤Þ¤¹¡£

¥µ¥Ý¡¼¥È¥Ú¡¼¥¸¤¬¤¢¤ê¡¢¤³¤³¤¬¤¹¤´¤¯³Ø½¬¤Î¼ê½õ¤±¤ò¤·¤Æ¤¯¤ì¤ë¤Î¤Ç¡¢Ëܽñ¤òÇã¤Ã¤¿¤é¤³¤Á¤é¤Î¥Ú¡¼¥¸¤ò»È¤¤Åݤ·¤Þ¤·¤ç¤¦¡£

cr-vue.mio3io.com


¥¹¥Æ¥Ã¥×£³¡§Build Web Apps with Vue JS 2 & Firebase

f:id:katonobo:20180905111819j:plain 

Build Web Apps with Vue JS 2 & Firebase

¤³¤Î¶µºà¤Ç¿È¤ËÉÕ¤±¤ë¤³¤È

¡¦Vue.js¤Î¤ª¤µ¤é¤¤

¡¦¼ÂºÝ¤Ë¥ì¥Ù¥ë¤Î¹â¤¤¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤òºîÀ®¤¹¤ë

¥¹¥Æ¥Ã¥×£²¤Þ¤Ç¤Ç´ðËÜŪ¤Ë¤ÏVue.js¤ÈFirebase¤Ï»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£´Êñ¤Ê¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤Ê¤é¤¹¤Ç¤Ëºî¤ì¤ë´ðÁÃÎϤϤĤ¤¤Æ¤¤¤Þ¤¹¡£

¥¹¥Æ¥Ã¥×£³¤Ç¡¢ËܳÊŪ¤Ê¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤òºî¤ì¤ë¼ÂÎϤò¿È¤Ë¤Ä¤±¤Þ¤¹¡£

¤³¤Î¡ÖBuild Web Apps with Vue JS 2 & Firebase¡×¤Ï¡¢Udemy¤È¤¤¤¦Æ°²è³Ø½¬¥µ¥¤¥È¤Î¶µºà¤Ç¤¹¡£¤Ê¤Î¤Ç¡¢½ñÀҤǤϤʤ¯¡¢Æ°²è¤Ç¤Î³Ø½¬¤È¤Ê¤ê¤Þ¤¹¡£

ÆâÍÆ¤Ï±Ñ¸ì¤Ê¤Î¤Ç¡¢¤Á¤ç¤Ã¤ÈÄñ¹³¤¬¤¢¤ë¿Í¤â¤¤¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢Æ°²è¤Ê¤Î¤Ç²¿¤ò¤·¤Æ¤¤¤ë¤«¤ÏÌܤdzÎǧ¤Ç¤­¤ë¤Î¤Ç±Ñ¸ì¤¬¤ï¤«¤é¤Ê¤¯¤ÆÆ°²è¤ò¤·¤Ã¤«¤ê¸«¤Æ¿¿»÷¤ò¤¹¤ì¤ÐÌäÂꤢ¤ê¤Þ¤»¤ó¡£

¤³¤Îư²è¤ò¤ä¤ê½ª¤¨¤ì¤Ð¡¢

¡¦LINE¤Î¤è¤¦¤Ê¥Á¥ã¥Ã¥È¥µ¡¼¥Ó¥¹

¡¦°ÌÃÖ¾ðÊó¤òÍøÍѤ·¥°¡¼¥°¥ë¥Þ¥Ã¥×¤ò»È¤Ã¤¿ÅÁ¸ÀÈÄ¥µ¡¼¥Ó¥¹

¤¬ºî¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ÂçÂΤÎWeb¥µ¡¼¥Ó¥¹¤¬ºî¤ì¤ë¼ÂÎϤ¬¤Ä¤¯¤Ç¤·¤ç¤¦¡£

¤Þ¤È¤á

¤³¤Î£³¥¹¥Æ¥Ã¥×¤ò¤³¤Ê¤»¤Ð¡¢¤¢¤Ê¤¿¤Ï¤â¤¦ÁêÅö¤Êµ»½Ñ¤ò¿È¤Ë¤Ä¤±¤Æ¤¤¤ë¤Ï¤º¤Ç¤¹¡£

¤³¤Î3¤Ä¤Î¶µºà¤ò¥Ù¡¼¥¹¤Ë¡¢¥°¡¼¥°¥ë¤Î¸¡º÷¤äQiita¤ò³èÍѤ·¡¢¼«Ê¬¤¬ºî¤ê¤¿¤¤¥¦¥§¥Ö¥µ¡¼¥Ó¥¹¤òºî¤Ã¤Æ¤¯¤À¤µ¤¤¡ª 

2018-09-07

¢£¡Ö5²¯±ß²Ô¤¤¤À¤é¼­¤á¤ë¤È·è¤á¤Æ¤¤¤¿¡×¥«¥«¥¯¥³¥à¤òÁ϶Ȥ·¡¢28ºÐ¤Ç¥ê¥¿¥¤¥¢¤·¤¿Ãˤκ£¡Ã¿·R25 - 20Âå¥Ó¥¸¥Í¥¹¥Þ¥ó¤Î¥Ð¥¤¥Ö¥ë 12:56

https://r25.jp/article/586737603776383066

2018-09-06

¢£React¤ÈVue¤Ã¤Æ¤É¤¦°ã¤¦¡©Á´¤¯Æ±¤¸¥¢¥×¥ê¤òReact¤ÈVue¤ÇºîÀ®¤·¤Æ¤ß¤ÆÊ¬¤«¤Ã¤¿Áê°ãÅÀ | ¥³¥ê¥¹ 11:51

<title>React¤ÈVue¤Ã¤Æ¤É¤¦°ã¤¦¡©Á´¤¯Æ±¤¸¥¢¥×¥ê¤òReact¤ÈVue¤ÇºîÀ®¤·¤Æ¤ß¤ÆÊ¬¤«¤Ã¤¿Áê°ãÅÀ | ¥³¥ê¥¹</title>

React¤ÈVue¤Ã¤Æ¤É¤¦°ã¤¦¡©Á´¤¯Æ±¤¸¥¢¥×¥ê¤òReact¤ÈVue¤ÇºîÀ®¤·¤Æ¤ß¤ÆÊ¬¤«¤Ã¤¿Áê°ãÅÀ

UXÆ»¾ì -UX¥Ç¥¶¥¤¥ó¤Î´ðÁÃÃ챤«¤éUI/Web¥Ç¥¶¥¤¥ó¤ËÌòΩ¤Ä¾ðÊó¡¢Adobe XD¤ÎºÇ¿·¾ðÊó¤Þ¤Ç

Æü¾ïŪ¤ËVue¤ò»ÈÍѤ·¤Æ¤¤¤ë³«È¯¼Ô¤¬¡¢React¤Ï¤É¤¦¤Ê¤Î¤À¤í¤¦¤È»×¤¤¡¢React¤ÈVue¤ÇÁ´¤¯Æ±¤¸¥¢¥×¥ê¤òºîÀ®¤·¤¿»þ¤Î¤½¤ì¤¾¤ì¤Î¹©Äø¤òÈæ³Ó¤·¤ÆÊ¬¤«¤Ã¤¿Áê°ãÅÀ¤ò¾Ò²ð¤·¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

I created the exact same app in React and Vue. Here are the differences.

²¼µ­¤Ï³Æ¥Ý¥¤¥ó¥È¤ò°ÕÌõ¤·¤¿¤â¤Î¤Ç¤¹¡£

¢¨Åö¥Ö¥í¥°¤Ç¤ÎËÝÌõµ­»ö¤Ï¡¢¸µ¥µ¥¤¥ÈÍͤ˥饤¥»¥ó¥¹¤òÆÀ¤ÆËÝÌõ¤·¤Æ¤¤¤Þ¤¹¡£

  • Î٤βȤμÇÀ¸¤ÏÀĤ¯¸«¤¨¤ë
  • Vue¤ÈReact¤ÇºîÀ®¤·¤¿¥¢¥×¥ê¤Î¸«¤¿ÌܤòÈæ³Ó
  • Vue¤ÈReact¤Ï¥Ç¡¼¥¿¤ò¤É¤Î¤è¤¦¤ËÊѹ¹¤µ¤»¤ë¤«
  • ¥¢¥¤¥Æ¥à¤Î¿·µ¬ºîÀ®
  • ¥¢¥¤¥Æ¥à¤Îºï½ü
  • ¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤òÅϤ¹
  • »Ò¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë¥Ç¡¼¥¿¤òÅϤ¹
  • ¿Æ¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë¥Ç¡¼¥¿¤òÌ᤹
  • ½ª¤ï¤ê¤Ë

Î٤βȤμÇÀ¸¤ÏÀĤ¯¸«¤¨¤ë

»ä¤Ï¸½ºß¤Î¿¦¾ì¤ÇVue¤ò»ÈÍѤ·¤Æ¤ª¤ê¡¢Vue¤¬¤É¤Î¤è¤¦¤Ëµ¡Ç½¤¹¤ë¤«¤«¤Ê¤êÍý²ò¤·¤Æ¤¤¤ë¤È»×¤¤¤Þ¤¹¡£¤·¤«¤·¡¢Î٤βȤμÇÀ¸¤Ï¤É¤ó¤Ê¤â¤Î¤Ê¤Î¤«Èó¾ï¤Ë¶½Ì£¤¬¤¢¤ê¤Þ¤¹¡¢¤½¤Î¼ÇÀ¸¤È¤ÏReact¤Î¤³¤È¤Ç¤¹¡£

React¤Î¥É¥­¥å¥á¥ó¥È¤òÆÉ¤ó¤Ç¡¢¥Á¥å¡¼¥È¥ê¥¢¥ë¤Î¥Ó¥Ç¥ª¤ò¤¤¤¯¤Ä¤«¸«¤Æ¤ß¤Þ¤·¤¿¡£¤½¤ì¤Ï»²¹Í¤Ë¤Ê¤Ã¤¿¤Î¤Ç¤¹¤¬¡¢»ä¤¬ËÜÅö¤ËÃΤꤿ¤«¤Ã¤¿¤Î¤Ï¡¢React¤ÈVue¤¬¤É¤Î¤è¤¦¤Ë°Û¤Ê¤ë¤Î¤«¤È¤¤¤¦¤³¤È¤Ç¤·¤¿¡£°Û¤Ê¤ë¤È¤¤¤¦¤Î¤Ï¡¢²¾ÁÛDOM¤È¤«¥ì¥ó¥À¥ê¥ó¥°¤Ê¤É¤Î¤³¤È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥³¡¼¥É¥ì¥Ù¥ë¤Ç¶ñÂÎŪ¤Ë¤É¤¦°ã¤¦¤Î¤«¤¬ÃΤꤿ¤¤¤Î¤Ç¤¹¡£

¤·¤«¤·¡¢¤¤¤¯¤éõ¤·¤Æ¤â¸«¤Ä¤±¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¤Ç¤·¤¿¡£¤½¤³¤Ç»ä¤Ï¡¢Îà»÷ÅÀ¤ÈÁê°ãÅÀ¤òÃΤ뤿¤á¤Ë¤Ï¡¢¼«Ê¬¼«¿È¤Çµ­»ö¤ò½ñ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤òǧ¼±¤·¤Þ¤·¤¿¡£¤³¤Îµ­»ö¤¬¤³¤³¤Ë¸ºß¤¹¤ë¤è¤¦¤Ë¡¢»ä¤Ï¥×¥í¥»¥¹Á´ÂΤò¥É¥­¥å¥á¥ó¥È²½¤·¤Þ¤·¤¿¡£

Vue¤ÈReact

Vue¤ÈReact

¥É¥­¥å¥á¥ó¥È¤ò½ñ¤¯¤Ë¤¢¤¿¤ê¡¢TODO¥ê¥¹¥È¤Î¥¢¥×¥ê¤òºîÀ®¤·¤Þ¤·¤¿¡£µ¡Ç½¤Ï¡¢¥¢¥¤¥Æ¥à¤ò²Ã¤¨¤¿¤ê¡¢ºï½ü¤Ç¤­¤ë¤À¤±¤Î´Êñ¤Ê¥¢¥×¥ê¤Ç¤¹¡£¤É¤Á¤é¤â¥Ç¥Õ¥©¥ë¥È¤ÎCLI¡ÊReact¤Ç¤Ïcreate-react-app¡¢Vue¤Ç¤Ïvue-cli¡Ë¤ò»ÈÍѤ·¤Þ¤·¤¿¡£

¢¨CLI¤È¤Ï¡¢Command Line Interface¡Ê¥³¥Þ¥ó¥É¡¦¥é¥¤¥ó¡¦¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¡Ë¤Îά¡£

Vue¤ÈReact¤ÇºîÀ®¤·¤¿¥¢¥×¥ê¤Î¸«¤¿ÌܤòÈæ³Ó

TODO¥ê¥¹¥È¤Î¥¢¥×¥ê

º¸: Vue¤ÇºîÀ®¤·¤¿¥¢¥×¥ê¡¢±¦: React¤ÇºîÀ®¤·¤¿¥¢¥×¥ê

CSS¤Î¥³¡¼¥É¤ÏξÊý¤È¤âÁ´¤¯Æ±¤¸¤Ç¤¹¤¬¡¢ÃÖ¤­¾ì½ê¤¬°Û¤Ê¤ê¤Þ¤¹¡£¤½¤Î¤³¤È¤òǰƬ¤Ë¤ª¤¤¤Æ¡¢¥¢¥×¥ê¤Î¥Õ¥¡¥¤¥ë¹½Â¤¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£

¥¢¥×¥ê¤Î¥Õ¥¡¥¤¥ë¹½À®

º¸: Vue¤Î¥Õ¥¡¥¤¥ë¹½Â¤¡¢±¦: React¤Î¥Õ¥¡¥¤¥ë¹½Â¤

Vue¤ÈReact¤Ç¡¢¥Õ¥¡¥¤¥ë¹½Â¤¤Ï¤Û¤È¤ó¤ÉƱ¤¸¤Ç¤¹¡£Í£°ì°ã¤¦¤Î¤Ï¡¢React¤Ë¤Ï3¤Ä¤ÎCSS¥Õ¥¡¥¤¥ë¤¬¤¢¤ë¤³¤È¤Ç¤¹¡£Vue¤Ë¤ÏCSS¥Õ¥¡¥¤¥ë¤¬°ì¤Ä¤â¤¢¤ê¤Þ¤»¤ó¡£¤½¤ÎÍýͳ¤Ï¡¢create-react-app¤Ç¤ÏReact¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬¥¹¥¿¥¤¥ë¤òÊÝ»ý¤¹¤ë¤¿¤á¤Î¥Õ¥¡¥¤¥ë¤ò»ý¤Á¡¢Vue CLI¤Ç¤Ï¼ÂºÝ¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È¥Õ¥¡¥¤¥ëÆâ¤Ç¥¹¥¿¥¤¥ë¤¬Àë¸À¤µ¤ì¤Æ¤¤¤ëÊñ³çŪ¤Ê¥¢¥×¥í¡¼¥Á¤òºÎÍѤ·¤Æ¤¤¤ë¤«¤é¤Ç¤¹¡£

2¤Ä¤Ï¶¦¤ËƱ¤¸¤³¤È¤òãÀ®¤·¤Æ¤ª¤ê¡¢React¤ÈVue¤Ç¤¢¤Ê¤¿¤ÎCSS¤ò°ã¤Ã¤¿ÊýË¡¤Ç¹½ÃÛ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤³¤ì¤Ï´°Á´¤Ë¸Ä¿Í¤Î¹¥¤ß¤Ç¤·¤ç¤¦¡¢CSS¤ò¤É¤Î¤è¤¦¤Ë¹½Â¤²½¤¹¤ë¤Ù¤­¤«¤Ï¡¢³«È¯¼Ô¥³¥ß¥å¥Ë¥Æ¥£¤Ç³èȯ¤ËµÄÏÀ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¸½»þÅÀ¤Ç¤Ï¡¢Î¾Êý¤ÎCLI¤ËÇÛÃÖ¤µ¤ì¤¿¹½Â¤¤Ë½¾¤¤¤Þ¤¹¡£

Àè¤Ë¿Ê¤àÁ°¤Ë¡¢Vue¤ÈReact¤Îŵ·¿Åª¤Ê¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ò¸«¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£

Vue¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È

Vue¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È

React¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È

React¤Î¥³¥ó¥Ý¡¼¥Í¥ó¥È

Vue¤ÈReact¤Ï¥Ç¡¼¥¿¤ò¤É¤Î¤è¤¦¤ËÊѹ¹¤µ¤»¤ë¤«

¤Þ¤º¤Ï¡Ö¥Ç¡¼¥¿¤ÎÊѹ¹¡×¤È¤Ï¡¢²¿¤ò°ÕÌ£¤¹¤ë¤Ç¤·¤ç¤¦¤«¡© Êѹ¹¤È¤Ï¡¢Êݸ¤·¤¿¥Ç¡¼¥¿¤òÊѤ¨¤ë¤³¤È¤Ç¤¹¡£Î㤨¤Ð¡¢Ì¾Á°¤ÎÃͤòJohn¤«¤éMark¤ËÊѤ¨¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢¡Ö¥Ç¡¼¥¿¤òÊѹ¹¤µ¤»¤ë¡×¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¤ä¤êÊý¤¬¡¢React¤ÈVue¤Ç¤ÏÂ礭¤¯°Û¤Ê¤ê¤Þ¤¹¡£

Vue¤Ç¤Ï´ðËÜŪ¤Ëdata¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹¤¬¡¢¥Ç¡¼¥¿¤ò¼«Í³¤Ë¹¹¿·¤Ç¤­¤Þ¤¹¡£React¤Ç¤Ïstate¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¡¢¤½¤ì¤ò¹¹¿·¤¹¤ë¤Ë¤Ï¾¯¤·ºî¶È¤¬É¬ÍפȤʤê¤Þ¤¹¡£React¤Î¤³¤Î¾¯¤·¤Îºî¶È¤Ë¤Ï¡¢ÀµÅö¤ÊÍýͳ¤¬¤¢¤ê¤Þ¤¹¡£¤Þ¤º¤Ï¡¢Vue¤Îdata¥ª¥Ö¥¸¥§¥¯¥È¤ÈReact¤Îstate¥ª¥Ö¥¸¥§¥¯¥È¤ò¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡£

º¸: Vue¤Îdata¥ª¥Ö¥¸¥§¥¯¥È¡¢±¦: React¤Îstate¥ª¥Ö¥¸¥§¥¯¥È

º¸: Vue¤Îdata¥ª¥Ö¥¸¥§¥¯¥È¡¢±¦: React¤Îstate¥ª¥Ö¥¸¥§¥¯¥È

¥é¥Ù¥ë¤Ï°Û¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢Æ±¤¸¥Ç¡¼¥¿¤òÅϤ·¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢ºÇ½é¤Î¥Ç¡¼¥¿¤ò¥³¥ó¥Ý¡¼¥Í¥ó¥È¤ËÅϤ¹¤³¤È¤ÏÈó¾ï¤Ë¤è¤¯»÷¤Æ¤¤¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡£¤·¤«¤·¡¢Á°½Ò¤·¤¿¤è¤¦¤Ë¡¢¤³¤Î¥Ç¡¼¥¿¤ò¤É¤Î¤è¤¦¤ËÊѤ¨¤ë¤«¤Ï¡¢Î¾Êý¤Î¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£

Î㤨¤Ð¡¢Ì¾Á°¤¬¡ÖSunil¡×¤È¤¤¤¦¥Ç¡¼¥¿Í×ÁǤ¬¤¢¤ë¤È¤·¤Þ¤¹¡£

Vue¤Ç¤Ï¡¢¡Öthis.name¡×¤Ç»²¾È¤Ç¤­¤Þ¤¹¡£¡Öthis.name = 'John'¡×¤È¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢¹¹¿·¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ç̾Á°¤Ï¡ÖJohn¡×¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿¡£

React¤Ç¤Ï¡¢¡Öthis.state.name¡×¤ÇƱ¤¸¥Ç¡¼¥¿¤ò»²¾È¤·¤Þ¤¹¡£¤³¤³¤Ç¤Î¼ç¤Ê°ã¤¤¤Ï¡¢React¤Ë¤ÏÀ©¸Â¤¬¤¢¤ë¤¿¤á¡¢Ã±¤Ë¡Öthis.state.name = 'John'¡×¤È½ñ¤¯¤³¤È¤¬¤Ç¤­¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£React¤Ç¤Ï¡Öthis.setState({name: 'John'})¡×¤È½ñ¤­¤Þ¤¹¡£

¤³¤ì¤ÏVue¤ÇãÀ®¤·¤¿¤³¤È¤ÈƱ¤¸¤Ç¤¹¤¬¡¢Vue¤Ï¥Ç¡¼¥¿¤¬¹¹¿·¤µ¤ì¤ë¤¿¤Ó¤ËsetState¤Î¼«¿È¤Î¥Ð¡¼¥¸¥ç¥ó¤òÁȤ߹ç¤ï¤»¤Æ¤¤¤ë¤¿¤á¡¢Äɲäνñ¤­¹þ¤ß¤¬¤¢¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¡¢React¤Ç¤ÏsetState¤È¤½¤ÎÆâÉô¤Î¹¹¿·¥Ç¡¼¥¿¤òɬÍפȤ·¤Þ¤¹¤¬¡¢Vue¤Ç¤Ïdata¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤ÎÃͤò¹¹¿·¤¹¤ë¤È²¾Äꤷ¤Æ¼Â¹Ô¤·¤Þ¤¹¡£¤Ê¤¼React¤Ç¤ÏVue¤ÈƱ¤¸¤Ë¤·¤Ê¤¤¤Î¤Ç¤·¤ç¤¦¤«¡© ¤½¤·¤Æ¤Ê¤¼setState¤¬É¬ÍפʤΤǤ·¤ç¤¦¤«¡© ¤³¤ÎÀâÌÀ¤ÏRevanth Kumar¤Ë°Ñ¤Í¤Þ¤¹¡£

¤½¤ì¤Ï¡¢React¤¬state¤¬ÊѤï¤ë¤¿¤Ó¤ËÆÃÄê¤Î¥Õ¥Ã¥¯¤òºÆ¼Â¹Ô¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤¿¤á¤Ç¤¹¡£Î㤨¤Ð¡¢componentWillReceiveProps, shouldComponentUpdate, componentWillUpdate, render, componentDidUpdate, whenever state changes ¤Ê¤É¡£setState´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤È¡¢state¤¬Êѹ¹¤µ¤ì¤¿¤³¤È¤¬Ê¬¤«¤ë¤Ç¤·¤ç¤¦¡£¤â¤·¡¢state¤òľÀÜŪ¤ËÊѹ¹¤µ¤»¤¿¾ì¹ç¡¢React¤ÏÊѹ¹¤òÄÉÀפ·¡¢¥Õ¥Ã¥¯¤ò¼Â¹Ô¤¹¤ë¤Ê¤É¡¢¤â¤Ã¤È¿¤¯¤Îºî¶È¤ò¹Ô¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤½¤ì¤ò´Êñ¤Ë¤¹¤ë¤¿¤á¤Ë¡¢React¤ÏsetState¤ò»ÈÍѤ·¤Þ¤¹¡£

Vue¤Ç¤Ï¡Öthis.name¡×¤ò»ÈÍѤ¹¤ë

°ìÊý¤Ï¥·¥ó¥×¥ë¤¸¤ã¤Ê¤¤¤Í

¥Ç¡¼¥¿¤ÎÊѹ¹¤Ë¤Ä¤¤¤Æ¡¢Vue¤ÈReact¤ÎÁê°ã¤òÍý²ò¤Ç¤­¤¿¤Î¤Ç¡¢¥¢¥×¥êºîÀ®¤ËÌá¤ê¤Þ¤¹¡£

¥¢¥¤¥Æ¥à¤Î¿·µ¬ºîÀ®

React¤Î¾ì¹ç


1

2

3

4

5

6

7

8

9

10

11

12

createNewToDoItem = () => {

    this.setState( ({ list, todo }) => ({

      list: [

          ...list,

        {

          todo

        }

      ],

      todo: ''

    })

  );

};


React¤Î¾ì¹ç¤Ç¤Ï¡¢input¥Õ¥£¡¼¥ë¥É¤Ëvalue¤È¤¤¤¦Â°À­¤¬¤¢¤ê¡¢¤³¤Îvalue¤ÏÁÐÊý¸þ¥Ð¥¤¥ó¥Ç¥£¥ó¥°¡ÊÀâÌÀ¤Ï¸å½Ò¡Ë¤òºîÀ®¤¹¤ë¤¿¤á¤Ë·ë¹ç¤µ¤ì¤¿2¤Ä¤Î´Ø¿ô¤ò»ÈÍѤ·¤Æ¼«Æ°Åª¤Ë¹¹¿·¤µ¤ì¤Þ¤¹¡£onChange¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¤òinput¥Õ¥£¡¼¥ë¥É¤Ë²Ã¤¨¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ÁÐÊý¸þ¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤òºîÀ®¤·¤Þ¤¹¡£¤É¤Î¤è¤¦¤Ë¤Ê¤ë¤«¡¢input¥Õ¥£¡¼¥ë¥É¤Î¥³¡¼¥É¤ò¸«¤Æ¤Þ¤·¤ç¤¦¡£


1

2

3

<input type="text"

       value={this.state.todo}

       onChange={this.handleInput}/>


handleInput´Ø¿ô¤Ï¡¢input¥Õ¥£¡¼¥ë¥É¤Îvalue¤¬Êѹ¹¤µ¤ì¤ë¤¿¤Ó¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¡¢input¥Õ¥£¡¼¥ë¥É¤Ë²¿¤«¤¬ÆþÎϤµ¤ì¤ë¤È¡¢state¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤Ë¤¢¤ëtodo¤ò¹¹¿·¤·¤Þ¤¹¡£´Ø¿ô¤Ï¡¢²¼µ­¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£


1

2

3

4

5

handleInput = e => {

  this.setState({

    todo: e.target.value

  });

};


¥æ¡¼¥¶¡¼¤¬+¥Ü¥¿¥ó¤ò²¡¤·¤Æ¿·¤·¤¤¥¢¥¤¥Æ¥à¤òÄɲ乤ë¤È¡¢createNewToDoItem´Ø¿ô¤¬this.setState¤ò¼Â¹Ô¤·¡¢´Ø¿ô¤ËÅϤ·¤Þ¤¹¡£¤³¤Î´Ø¿ô¤Ï2¤Ä¤Î¥Ñ¥é¥á¡¼¥¿¤ò¼õ¤±¼è¤ê¡¢1¤ÄÌܤÏstate¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ê¥¹¥ÈÇÛÎóÁ´ÂΡ¢2¤ÄÌܤÏtodo¡ÊhandleInput´Ø¿ô¤Ç¹¹¿·¡Ë¤Ç¤¹¡£¤³¤Î´Ø¿ô¤Ï¿·¤·¤¤¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤·¡¢¿·¤·¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ÏÁ°¤Î¥ê¥¹¥ÈÁ´ÂΤò´Þ¤ß¡¢ºÇ¸å¤Ëtodo¤òÄɲä·¤Þ¤¹¡£¥ê¥¹¥ÈÁ´ÂΤϡ¢¥¹¥×¥ì¥Ã¥É±é»»»Ò¤ò»ÈÍѤ·¤ÆÄɲ䵤ì¤Þ¤¹¡£

ºÇ½ªÅª¤Ë¤Ï¡¢todo¤ò¶õ¤Îʸ»úÎó¤ËÀßÄꤷ¤Æ¡¢input¥Õ¥£¡¼¥ë¥ÉÆâ¤Îvalue¤ò¼«Æ°Åª¤Ë¹¹¿·¤·¤Þ¤¹¡£

Vue¤Î¾ì¹ç


1

2

3

4

5

6

7

8

createNewToDoItem() {

    this.list.push(

        {

            'todo': this.todo

        }

    );

    this.todo = '';

}


Vue¤Î¾ì¹ç¤Ç¤Ï¡¢input¥Õ¥£¡¼¥ë¥É¤Ëv-model¤È¸Æ¤Ð¤ì¤ë¥Ï¥ó¥É¥ë¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¥Ï¥ó¥É¥ë¤Ë¤è¤ê¡¢ÁÐÊý¸þ¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£input¥Õ¥£¡¼¥ë¥É¤Î¥³¡¼¥É¤ò¸«¤Æ¤Þ¤·¤ç¤¦¡£


1

<input type="text" v-model="todo"/>


v-model¤Ï¡¢¤³¤Î¥Õ¥£¡¼¥ë¥É¤ËÆþÎϤµ¤ì¤¿ÃͤòtoDoItem¤È¤¤¤¦data¥ª¥Ö¥¸¥§¥¯¥È¤Î¥­¡¼¤Ë·ë¤Ó¤Ä¤±¤é¤ì¤Þ¤¹¡£¥Ú¡¼¥¸¤¬ÆÉ¤ß¹þ¤Þ¤ì¤ë¤È¡¢toDoItem¤Ë¤Ï¡Ötodo: ''¡×¤Î¤è¤¦¤Ê¶õ¤Îʸ»úÎó¤¬ÀßÄꤵ¤ì¡¢¡Ötodo: 'add some text here'¡×¤Î¤è¤¦¤Ê¥Ç¡¼¥¿¤¬´û¤Ë¤¢¤ë¾ì¹ç¤Ï¡¢input¥Õ¥£¡¼¥ë¥É¤Ë¥Æ¥­¥¹¥È¤òÄɲä·¤ÆÆÉ¤ß¹þ¤ß¤Þ¤¹¡£¶õ¤Îʸ»úÎó¤ËÌá¤ë¤È¡¢input¥Õ¥£¡¼¥ë¥ÉÆâ¤ËÆþÎϤ·¤¿¥Æ¥­¥¹¥È¤Ïtodo¤ÎÃͤ˥Х¤¥ó¥É¤µ¤ì¤Þ¤¹¡£¤³¤ì¤Ï¼Â¼ÁŪ¤Ë¡¢ÁÐÊý¸þ¥Ð¥¤¥ó¥Ç¥£¥ó¥°¤ÈƱ¤¸¤Ç¤¹¡Êinput¥Õ¥£¡¼¥ë¥É¤Ïdata¥ª¥Ö¥¸¥§¥¯¥È¤ò¹¹¿·¤Ç¤­¡¢data¥ª¥Ö¥¸¥§¥¯¥È¤Ïinput¥Õ¥£¡¼¥ë¥É¤ò¹¹¿·¤Ç¤­¤Þ¤¹¡Ë¡£

createNewToDoItem()¥³¡¼¥É¥Ö¥í¥Ã¥¯¤Ç¤Ï¡¢todo¤ÎÆâÍÆ¤Ïlist¤ÎÇÛÎó¤Ë¥×¥Ã¥·¥å¤µ¤ì¡¢todo¤ò¶õ¤Îʸ»úÎó¤Ë¹¹¿·¤¹¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£

¥¢¥¤¥Æ¥à¤Îºï½ü

React¤Î¾ì¹ç


1

2

3

4

5

deleteItem = indexToDelete => {

    this.setState(({ list }) => ({

      list: list.filter((toDo, index) => index !== indexToDelete)

    }));

};


deleteItem´Ø¿ô¤ÏToDo.js¤ÎÃæ¤Ë¤¢¤ê¤Þ¤¹¤¬¡¢ToDoItem.jsÆâ¤Î»²¾È¤òºÇ½é¤ËºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£deleteItem´Ø¿ô¤ò<ToDoItem/>¤Îprop¤È¤·¤ÆÅϤ¹¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë½ñ¤­¤Þ¤¹¡£


1

<ToDoItem deleteItem={this.deleteItem.bind(this, key)}/>


¤³¤Î¥³¡¼¥É¤Ç¤Ï¤Þ¤º¡¢»Ò¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë´Ø¿ô¤òÅϤ·¤Þ¤¹¡£¤³¤³¤Ç¤Ïkey¤Î¥Ñ¥é¥á¡¼¥¿¤òÅϤ¹¤À¤±¤Ç¤Ê¤¯¡¢this¤â¥Ð¥¤¥ó¥É¤·¤Æ¤¤¤ë¤³¤È¤¬Ê¬¤«¤ê¤Þ¤¹¡£key¤È¤·¤Æ¡¢¤É¤ÎToDoItem¤¬¥¯¥ê¥Ã¥¯¤µ¤ì¤¿¤È¤­¤Ëºï½ü¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤«¤ò¶èÊ̤¹¤ë¤¿¤á¤Ë´Ø¿ô¤¬»ÈÍѤ¹¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£¼¡¤Ë¡¢ToDoItem¥³¥ó¥Ý¡¼¥Í¥ó¥ÈÆâ¤Ç¡¢¼¡¤Î½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£


1

<div className=¡ÉToDoItem-Delete¡É onClick={this.props.deleteItem}>-</div>


¿Æ¥³¥ó¥Ý¡¼¥Í¥ó¥ÈÆâ¤Ë¤¢¤ë´Ø¿ô¤ò»²¾È¤¹¤ë¤¿¤á¤ËɬÍפʤΤϡ¢this.props.deleteItem¤ò»²¾È¤¹¤ë¤À¤±¤Ç¤·¤¿¡£

Vue¤Î¾ì¹ç


1

2

3

onDeleteItem(todo){

  this.list = this.list.filter(item => item !== todo);

}


Vue¤Î¾ì¹ç¤Ç¤Ï¡¢¾¯¤·°ã¤Ã¤¿¥¢¥×¥í¡¼¥Á¤¬É¬ÍפǤ¹¡£¥Ý¥¤¥ó¥È¤Ï¡¢3¤Ä¤¢¤ê¤Þ¤¹¡£

Âè1¤Ë¡¢´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹Í×ÁǤòÍѰդ·¤Þ¤¹¡£


1

<div class=¡ÉToDoItem-Delete¡É @click=¡ÉdeleteItem(todo)¡É>-</div>


¼¡¤Ë¡¢»Ò¥³¥ó¥Ý¡¼¥Í¥ó¥È¡Ê¤³¤Î¾ì¹ç¤ÏToDoItem.vue¡ËÆâ¤Î¥á¥½¥Ã¥É¤È¤·¤Æemit´Ø¿ô¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£


1

2

3

deleteItem(todo) {

    this.$emit('delete', todo)

}


¤³¤ì¤Ë²Ã¤¨¤Æ¡¢ToDo.vueÆâ¤ËToDoItem.vue¤òÄɲ乤ë¤È¡¢¼ÂºÝ¤Ë´Ø¿ô¤ò»²¾È¤¹¤ë¤³¤È¤Ëµ¤¤Å¤¯¤Ç¤·¤ç¤¦


1

2

3

4

<ToDoItem v-for="todo in list"

          :todo="todo"

          @delete="onDeleteItem" // <-- this :)

          :key="todo.id" />


¤³¤ì¤Ï¡¢¥«¥¹¥¿¥à¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¤¹¡Ödelete¡×¤Îʸ»úÎó¤Çemit¤¬¥È¥ê¥¬¤µ¤ì¤ë¤¢¤é¤æ¤ë¾õ¶·¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£¥¤¥Ù¥ó¥È¤¬µ¯¤­¤ë¤È¡¢onDeleteItem¤È¤¤¤¦´Ø¿ô¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£¤³¤Î´Ø¿ô¤Ï¡¢ToDoItem.vue¤Ç¤Ï¤Ê¤¯ToDo.vueÆâ¤Ë¤¢¤ê¤Þ¤¹¡£¤³¤Î´Ø¿ô¤ÏÁ°½Ò¤Î¤è¤¦¤Ë¡¢data¥ª¥Ö¥¸¥§¥¯¥ÈÆâ¤ÎtodoÇÛÎó¤ò¥Õ¥£¥ë¥¿¥ê¥ó¥°¤·¤Æ¡¢¥¯¥ê¥Ã¥¯¤µ¤ì¤¿¥¢¥¤¥Æ¥à¤òºï½ü¤·¤Þ¤¹¡£

¤Þ¤¿Vue¤Î¾ì¹ç¤Ç¤Ï¡¢@click¤Ë$emit()¤ò½ñ¤¯¤À¤±¤Ç¤âÂç¾æÉפǤ¹¡£


1

<div class=¡ÉToDoItem-Delete¡É @click=¡É$emit(¡Ædelete¡Ç, todo)¡É>-</div>


¤³¤Îµ­½Ò¤Ç¹©Äø¤ò¸º¤é¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¤¬¡¢¤É¤Á¤é¤òºÎÍѤ¹¤ë¤«¤Ï¸Ä¿Í¤Î¹¥¤ß¤Ç¤¹¡£

¤Þ¤È¤á¤ë¤È¡¢React¤Ç¤Ï»Ò¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ïthis.props¤ò²ð¤·¤Æ¿Æ¤Î´Ø¿ô¤Ë¥¢¥¯¥»¥¹¤·¤Þ¤¹¡Ê¤«¤Ê¤ê°ìÈÌŪ¤ÊÊýË¡¡Ë¡£Vue¤Ç¤Ï¿Æ¥³¥ó¥Ý¡¼¥Í¥ó¥ÈÆâ¤ÇÄ̾ï¼ý½¸¤µ¤ì¤ë¥¤¥Ù¥ó¥È¤ò»Ò¤«¤éÁ÷½Ð¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤òÅϤ¹

React¤Î¾ì¹ç

¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤Ê¤É¤Î¥·¥ó¥×¥ë¤Ê¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤Ï´Êñ¤Ç¤¹¡£¤³¤³¤Ç¤Ï¡¢TODO¥ê¥¹¥È¤Ë¿·¤·¤¤¥¢¥¤¥Æ¥à¤òºîÀ®¤¹¤ë¥Ü¥¿¥ó¤Î¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤òÎã¤Ë¼è¤ê¤Þ¤¹¡£


1

<div className=¡ÉToDo-Add¡É onClick={this.createNewToDoItem}>+</div>.


¥³¡¼¥É¤ÏÈó¾ï¤Ë´Êñ¤Ç¡¢onClick¤Ë¥¤¥ó¥é¥¤¥ó¤ÎJavaScript¤Ç½èÍý¤·¤Æ¤¤¤ë¤«¤Î¤è¤¦¤Ë¸«¤¨¤Þ¤¹¡£Vue¤ÇÀâÌÀ¤·¤¿¤è¤¦¤Ë¡¢enter¥­¡¼¤¬²¡¤µ¤ì¤ë¤¿¤Ó¤Ë¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤òÀßÄꤹ¤ë¤Î¤Ë¤Ï¾¯¤·»þ´Ö¤¬¤«¤«¤ê¤Þ¤·¤¿¡£²¼µ­¤Î¤è¤¦¤Ë¡¢inputÍ×ÁǤ˵­½Ò¤µ¤ì¤¿onKeyPress¥¤¥Ù¥ó¥È¤¬½èÍý¤µ¤ì¤ë¤³¤È¤òɬÍפȤ·¤Æ¤¤¤Þ¤·¤¿¡£


1

<input type=¡Étext¡É onKeyPress={this.handleKeyPress}/>.


¤³¤Î´Ø¿ô¤Ïenter¥­¡¼¤¬²¡¤µ¤ì¤¿¤³¤È¤òǧ¼±¤¹¤ë¤¿¤Ó¤Ë¡¢createNewToDoItem´Ø¿ô¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£


1

2

3

4

5

handleKeyPress = (e) => {

if (e.key === ¡ÆEnter¡Ç) {

this.createNewToDoItem();

}

};


Vue¤Î¾ì¹ç

Vue¤Ç¤Ï¡¢Èó¾ï¤Ë´Êñ¤Ç¤¹¡£@¤ò»ÈÍѤ·¤Æ¡¢¼¡¤Ë¼Â¹Ô¤¹¤ë¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤Î¥¿¥¤¥×¤òµ­½Ò¤¹¤ë¤À¤±¤Ç¤¹¡£Î㤨¤Ð¡¢¥¯¥ê¥Ã¥¯¥¤¥Ù¥ó¥È¤ò²Ã¤¨¤ë¤Ë¤Ï¡¢²¼µ­¤Î¤è¤¦¤Ë½ñ¤­¤Þ¤¹¡£


1

<div class=¡ÉToDo-Add¡É @click=¡ÉcreateNewToDoItem()¡É>+</div>


Ãí: @click¤Ï¡¢¡Öv-on:click¡×¤Î¾Êά·Á¤Ç¤¹¡£

Vue¤Î¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤ÎÎɤ¤ÅÀ¤Ï¡¢¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤¬Ê£¿ô²ó¥È¥ê¥¬¡¼¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë.once¤Ê¤É¡¢Ï¢º¿¤Ç¤­¤ë¤³¤È¤Ç¤¹¡£¤Þ¤¿¡¢¥­¡¼¥¹¥È¥í¡¼¥¯¤ò½èÍý¤¹¤ë¤¿¤á¤ËÆÃÄê¤Î¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤òºîÀ®¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¤¤¤¯¤Ä¤«¤Î¥·¥ç¡¼¥È¥«¥Ã¥È¤¬¤¢¤ê¤Þ¤¹¡£

enter¥­¡¼¤¬²¡¤µ¤ì¤¿¤È¤­¤Ë¡¢React¤Ç¥¤¥Ù¥ó¥È¥ê¥¹¥Ê¡¼¤òºîÀ®¤·¤Æ¿·¤·¤¤¥¢¥¤¥Æ¥à¤òºîÀ®¤¹¤ë¤Î¤Ë¤Ï¤«¤Ê¤ê»þ´Ö¤¬¤«¤«¤ê¤Þ¤·¤¿¡£Vue¤Ç¤Ï¡¢Èó¾ï¤Ë´Êñ¤Ë½ñ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£


1

<input type=¡Étext¡É v-on:keyup.enter=¡ÉcreateNewToDoItem¡É/>


»Ò¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë¥Ç¡¼¥¿¤òÅϤ¹

React¤Î¾ì¹ç

React¤Î¾ì¹ç¤Ç¤Ï¡¢ºîÀ®¤µ¤ì¤¿¥Ý¥¤¥ó¥È¤Ç»Ò¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ëprops¤òÅϤ·¤Þ¤¹¡£


1

<ToDoItem key={key} item={todo} />


¤³¤Î¥³¡¼¥É¤Ç¤Ï¡¢ToDoItem¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ë2¤Ä¤Îprops¤¬ÅϤµ¤ì¤Æ¤¤¤ë¤Î¤ò³Îǧ¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢this.props¤ò²ð¤·¤Æ»Ò¥³¥ó¥Ý¡¼¥Í¥ó¥È¤Ç¤½¤ì¤é¤ò»²¾È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£item.todo prop¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤Ë¤Ï¡¢Ã±¤Ëthis.props.item¤ò¸Æ¤Ó½Ð¤¹¤À¤±¤Ç¤¹¡£

Vue¤Î¾ì¹ç

Vue¤Î¾ì¹ç¤Ç¤Ï¡¢»Ò¥³¥ó¥Ý¡¼¥Í¥ó¥È¤¬ºîÀ®¤µ¤ì¤¿»þÅÀ¤Çprops¤òÅϤ·¤Þ¤¹¡£


2018-09-05

¢£¡ÚÈáÊó¡ÛE-girls¤µ¤ó¡¢¿·ÂÎÀ©¤Ë¤Ê¤Ã¤Æ¿Íµ¤µÞ¹ß²¼ ¥é¥¤¥Ö¤â¥¬¥é¥¬¥é£÷£÷£÷£÷£÷£÷£÷£÷£÷£÷£÷£÷£÷ : ¥é¥Ó¥Ã¥È®Êó 19:52

http://rabitsokuhou.2chblog.jp/archives/68732608.html

¢£30ºÐ¤ÇÌ¡²è¤òÉÁ¤­»Ï¤á¡¢Ï¢ºÜ¤Î¤¿¤á¤Ë¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤òÍí¤á¤¿¥µ¡¼¥Ó¥¹¤ò¸Ä¿Í¤Ç³«È¯¤·¤¿Ïà | Leth -¥ì¥¹- 19:04

<title>30ºÐ¤ÇÌ¡²è¤òÉÁ¤­»Ï¤á¡¢Ï¢ºÜ¤Î¤¿¤á¤Ë¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤òÍí¤á¤¿¥µ¡¼¥Ó¥¹¤ò¸Ä¿Í¤Ç³«È¯¤·¤¿Ïà | Leth -¥ì¥¹-</title>

30ºÐ¤ÇÌ¡²è¤òÉÁ¤­»Ï¤á¡¢Ï¢ºÜ¤Î¤¿¤á¤Ë¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤òÍí¤á¤¿¥µ¡¼¥Ó¥¹¤ò¸Ä¿Í¤Ç³«È¯¤·¤¿ÏÃ


SYNTHESIZE¤È¤¤¤¦Ì¡²è¤ÎÏ¢ºÜ¤ò¡¢¼«Ê¬¤Çºî¤Ã¤¿¥µ¡¼¥Ó¥¹Leth¡Ê¤³¤Î¥¨¥ó¥È¥ê¡¼¤ò·ÇºÜ¤·¤Æ¤¤¤ë¥µ¡¼¥Ó¥¹¤½¤Î¤â¤Î¡Ë¤Ç»Ï¤á¤Þ¤·¤¿¡£

ÉáÃʤÏÉáÄ̤Υµ¥é¥ê¡¼¥Þ¥ó¤ò¤·¤¿¤ê¤·¤Æ¤¤¤Þ¤¹¡£3ǯ¤¯¤é¤¤Á°¤Þ¤Ç¤Ï¥¨¥ó¥¸¥Ë¥¢¤ò¤ä¤Ã¤Æ¤¤¤¿µ¤¤¬¤·¤Þ¤¹¤¬¡¢¿§¡¹¤¢¤Ã¤Æº£¤Ï»Å»ö¤Ç¥³¡¼¥É¤Ï½ñ¤¤¤Æ¤¤¤Þ¤»¤ó¡£

º£¡Ê2018/9·î»þÅÀ¡Ë»ä¤Ï33ºÐ¤Ê¤Î¤Ç¤¹¤¬¡¢29ºÐ¤Î½ª¤ï¤êº¢¤Ç¤·¤ç¤¦¤«¡¢¤Õ¤È¡ÖÌ¡²è¤Ç¤âÉÁ¤¤¤Æ¤ß¤ë¤«¡×¤È»×¤¤Î©¤Ã¤Æ¤«¤éº£Æü¤³¤¦¤·¤ÆÌµ»ö¸ø³«¤Ç¤­¤ë¤Ë»ê¤ë¤Þ¤Ç¤ÎÏäȡ¢º£¸å¤ÎŸ˾¤ÎÏäò½ñ¤­»Ä¤·¤Æ¤ª¤­¤Þ¤¹¡£

ưµ¡¤ÎÏÃ

»ä¤Ï20Âå¤ÎÈ¾Ê¬Äø¤ò¥¨¥ó¥¸¥Ë¥¢¤È¤·¤Æ²á¤´¤·¤Æ¤¤¤Þ¤·¤¿¡£¹¬¤¤¥Ç¥¶¥¤¥ó¤â¹¥¤­¤À¤Ã¤¿»ö¤â¤¢¤ê¡¢ÀΤ«¤é;²Ë¤Î»þ´Ö¤òÍøÍѤ·¤Æ¤¤¤¯¤Ä¤«¸Ä¿Í¤Ç¥µ¡¼¥Ó¥¹¤ò¥ê¥ê¡¼¥¹¤·¤¿¤ê¤·¤Æ¤¤¤Þ¤·¤¿¡£¤½¤ì¤Þ¤Ç¤Î¿ÍÀ¸¤Ï²»³Ú¤Å¤¯¤·¤Ç¤¢¤Ã¤¿¤·¡¢¡ÖÁϺî¡×¤½¤Î¤â¤Î¤¬¹¥¤­¤Ê¤ó¤À¤È¼«¸ÊʬÀϤ·¤Æ¤¤¤Þ¤¹¡£¥×¥í¥°¥é¥ß¥ó¥°¤âÁϺî¤Î°ì¤Ä¤À¤Èª¤¨¤Æ¤¤¤Þ¤¹¤·¡£³¨¤òÉÁ¤¯¤Î¤â¹¥¤­¤Ç¤·¤¿¡£

»×¤¤ÊÖ¤»¤Ð»ä¤Î¿ÍÀ¸¤Ï¤º¤Ã¤È°ú¤­¤³¤â¤ê¤Ç¡£ÅÚÆü¤äĹ´üµÙ²Ë¤Çι¹Ô¤ä³°¤Ë½Ð¤«¤±¤ë¤³¤È¤ÏËØ¤É¤Ê¤¯¡¢¾®¤µ¤¤º¢¤«¤é°ì´Ó¤·¤Æ¤º¤Ã¤È²È¤Ç²¿¤«¤òºî¤Ã¤¿¤ê¡¢ËܤòÆÉ¤ó¤À¤ê¡¢²»³Ú¤òݤ¤¤¿¤ê¤·¤Ê¤¬¤é²á¤´¤·¤Æ¤¤¤Þ¤·¤¿¡£Âç¿Í¤Ë¤Ê¤Ã¤Æ¤«¤é¤Ï¡¢»ÍÏ»»þÃæ¥×¥í¥°¥é¥ß¥ó¥°¤·¤Æ¤¤¤¿¤È»×¤¤¤Þ¤¹¡£

30ºÐ¤¬ÌÜÁ°¤ËÇ÷¤Ã¤Æ¤¯¤ëº¢¤Ë¡¢ Áí¹ç·Ý½Ñ¤Ø¤ÎÆ´¤ì ¤ò¼«³Ð¤·¤Þ¤¹¡£²»³Ú¤â¡¢³¨¤â¡¢¥×¥í¥°¥é¥ß¥ó¥°¤â¡¢¥µ¡¼¥Ó¥¹³«È¯¤â¡¢¥²¡¼¥à¤â¡¢ÆÉ½ñ¤â¡¢¤É¤ì¤âÌ´Ãæ¤Ç¤ä¤Ã¤Æ¤­¤¿¼«Ê¬¤À¤«¤é¤³¤½¡¢Á´¤Æ¤òÁí¹ç¤·¤Æ¥æ¥Ë¡¼¥¯¤Ê²ÁÃͤ˾º²Ú¤¹¤ë¤Î¤âÌÌÇò¤¤¤Î¤Ç¤Ï¤Ê¤¤¤«¡©¤È»×¤¦¤ï¤±¤Ç¤¹¡£¤½¤³¤«¤éÀè¤Ï³ä¤ÈûÍíŪ¤Ç¤·¤Æ¡¢¡ÖÌ¡²è¤Ã¤ÆÁí¹ç·Ý½Ñ¤À¤è¤Ê¡©¤ä¤Ã¤Æ¤ß¤ë¤«¡×¤¯¤é¤¤¤Î´¶¤¸¤ÇÄ©À路»Ï¤á¤Þ¤·¤¿¡£

¤½¤ì¤Þ¤Ç¤Î¿ÍÀ¸¤Ç¡¢°ìÅÙ¤¿¤ê¤È¤âÌ¡²è¤òÌܻؤ·¤¿»ö¤¬¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢¤Þ¤¡¤ä¤ê¤Ï¤¸¤á¤Æ¤«¤é²¿ÅÙ¤«¡Ö̵ËŤÊÄ©Àï¤ä¤Ã¤¿¤Ê¡Ä¡×¤È¤¤¤¦»×¤¤¤¬Ç¾Î¢¤ò¤è¤®¤ê¤Ê¤¬¤é¤â¡¢¤Ê¤ó¤È¤«¤³¤¦¤·¤ÆÈ¯É½¤Ç¤­¤ë¤Þ¤Ç»ê¤ë»ö¤¬¤Ç¤­¤Þ¤·¤¿¡£

ÁϺ¤Î¤â¤Î¤ÎÂçÊѤµ¤â¤¢¤Ã¤¿¤Î¤Ç¤¹¤¬¡¢30ºÐÁ°¸å¤Î¿ÍÀ¸¤Ã¤Æ¿§¡¹¤¢¤ë¤¸¤ã¤Ê¤¤¤Ç¤¹¤«¡£Â¿Ê¬¡£»ä¤Î¾ì¹ç¤Ï¡¢Å¾¿¦¡¢Éµ¤¡¢·ëº§¡¢¹õ¤¤º½Çù¤È¤¤¤¦MMO¤Ë¥É¥Ï¥Þ¥ê¡¢¤Ê¤É¤Î¥¤¥Ù¥ó¥È¤¬¥Ñ¥é¥ì¥ë¤ÇÁö¤ê¤Ê¤¬¤é¤ÎÁϺî¤À¤Ã¤¿»ö¤â¤¢¤ê¡¢ÂçÊѤÀ¤Ã¤¿¤è¤¦¤Êµ¤¤â¤·¤Þ¤¹¡£ÌÞÏÀ¤½¤ì¤ò¾å²ó¤Ã¤Æ³Ú¤·¤¤¤ó¤Ç¤¹¤¬¤Í¡£

Ì¡²è¥ê¥ê¡¼¥¹¤Þ¤Ç¤ÎÆ»¤Î¤ê

¥ÉÁǿͤ¬¤É¤¦¤ä¤Ã¤ÆÌ¡²è¤ò³Ø¤ó¤ÇÉÁ¤­»Ï¤á¤¿¤Î¤«¡¢¤ß¤¿¤¤¤ÊÏäÏÊÌ¥¨¥ó¥È¥ê¡¼¤ËÀÚ¤ê½Ð¤·¤Æ½ñ¤¤¤Æ¤¤¤Þ¤¹¡£Ê¸»ú¿ô¤¬Â¿¤¹¤®¤ë¤Î¤Ç¡Ä¡£

¤Þ¤¿º£¸å¤â°ìÏ÷Ǻܤ¹¤ëËè¤Ë¡¢¡Ö²¿¤ËÄ©À路¤Æ²¿¤ò³Ø¤ó¤À¤Î¤«¡×¡¢¤òÁϺî¥í¥°¤È¤¤¤¦·Á¤Ç»Ä¤·¤Æ¤¤¤³¤¦¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£¸Ä¿ÍŪ¤Ë²¿»ö¤âÂηϲ½¤·¤Æ¤¤¤¯ºî¶È¤¬¹¥¤­¤Ê¤Î¤â¤¢¤Ã¤Æ¡¢¶²¤é¤¯Ì¡²è¤òÉÁ¤¯¤È¤¤¤¦¹Ô°Ù¤âÂηϲ½½ÐÍè¤ë¤Î¤Ç¤Ï¤Ê¤¤¤«¤È¹Í¤¨¤Æ¤¤¤ë°Ù¤Ç¤¹¡£

¤³¤¦¤·¤Æ½ñ¤­»Ä¤·¤¿»ö¤¬¤¤¤Ä¤«Ã¯¤«¤Î°Ù¤Ë¤Ê¤ì¤Ð¤È»×¤¤¤Þ¤¹¡£

SYNTHESIZE 1ÏÃÌܤÎÁϺî¥í¥°

¾åµ­¥¨¥ó¥È¥ê¡¼¤Ç¤â¿¨¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¤ä¤Ï¤ê1ÏÃÌܤȤ¤¤¦¤Î¤ÏÆñ°×ÅÙ¤¬¹â¤¯ºÇ¸å¤ÎºÇ¸å¤Þ¤Ç¶ìÀ路¤Þ¤·¤¿¡£¤½¤ì¤Ç¤âǼÆÀ¤Ç¤­¤Ê¤¤½ê¤â¿¤¤¤Î¤Ç¡¢¤½¤Î¤¦¤Á½¤ÀµÈǤò¥¢¥Ã¥×¤·Ä¾¤·¤¿¤ê¤¹¤ë¤È»×¤¤¤Þ¤¹¡£

Leth¥ê¥ê¡¼¥¹¤Þ¤Ç¤ÎÆ»¤Î¤ê

ºÇ½é¤ÏÌ¡²è¤òÉÁ¤¯»ö¤·¤«¹Í¤¨¤Æ¤Ê¤«¤Ã¤¿¤Î¤Ç¤¹¤¬¡¢ÉÁ¤¤¤¿Ì¡²è¤ò¥¹¥È¥Ã¥¯¤·¤¿¤êȯɽ¤·¤¿¤ê¤¹¤ë¾ì¤¬Íߤ·¤¤¡¢¤È»×¤¤»Ï¤á¤Þ¤·¤¿¡£

»ä¤Ï¡ÖÄê´üÏ¢ºÜ¤ò¤·¤¿¤¤¡×¤È¤«¡Ö¥×¥í¤Ë¤Ê¤ê¤¿¤¤¡×¤È¤¤¤¦¥â¥Á¥Ù¡¼¥·¥ç¥ó¤¬¤¢¤ë¤ï¤±¤Ç¤Ï̵¤«¤Ã¤¿¤Î¤Ç¡¢½ÐÈǼҤ˻ý¤Á¹þ¤ó¤À¤êwebÌ¡²è¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç·ÇºÜ¤·¤¿¤ê¤¹¤ë¤Î¤Ï¾¯¤·°ã¤¦¤Ê¡Ä¤È¡£¤É¤Á¤é¤«¤È¸À¤¦¤È´¶³Ð¤È¤·¤Æ¤Ï ¼«Ê¬¤Î¥Û¡¼¥à¥Ú¡¼¥¸¤¬¤Û¤·¤¤ ¤À¤Ã¤¿¤ó¤Ç¤¹¤Í¡£¤Ç¡¢¤É¤¦¤»ºî¤ë¤Ê¤éï¤Ç¤â»È¤¨¤ë¤è¤¦¤Ê·Á¤Ë¤·¤Æ¥ê¥ê¡¼¥¹¤·¤è¤¦¡¢¤È¥Ü¥ó¥ä¥êÌÑÁÛ¤·¤Æ¤¤¤Þ¤·¤¿¡£

Ì¡²è¤òÉÁ¤­¤Ê¤¬¤é¡¢¾åµ­¤Î¤è¤¦¤Ê»ö¤ò¤Õ¤ó¤ï¤ê¤È¹Í¤¨¤Æ²á¤´¤·¤Æ¤ëÃæ¤Ç¡¢¤Õ¤È¡Ö¤½¤³¤Ë¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥óÍí¤á¤ë¤ÈÌÌÇò¤¤¤Î¤Ç¤Ï¡©¡×¤È»×¤¤¤Ä¤­¤Þ¤¹¡£

º£»×¤¦¤È¥³¥ì¤Ë¤·¤Æ¤â¡¢¶öÁ³Åª¤ËÀ¸¤ß½Ð¤µ¤ì¤¿¥¢¥¤¥Ç¥¢¤È¤¤¤¦¤â¤Î¤Ç¤â¤Ê¤«¤Ã¤¿¤ê¤·¤Þ¤¹¡£·ë¶É¤Î½ê¡¢¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤òÍí¤á¤è¤¦¤È¤¤¤¦¤½¤Î¥¢¥¤¥Ç¥¢¤â»ä¤Ë¤È¤Ã¤Æ¤Ï Áí¹ç·Ý½ÑŪ¤À ¤È¸À¤¨¤ë¥ï¥±¤Ç¤¹¡£

¤È¤¤¤¦¤Î¤â»ä¤Ï°ÊÁ°¤«¤é¡¢¥Ê¥«¥â¥È¥µ¥È¥·»á¤Î¡ÖBitcoin: A Peer-to-Peer Electronic Cash System¡×¤òÆÉ¤ó¤À¤ê¡¢OReilly¤«¤é½Ð¤Æ¤¤¤ë¡ÖBlockchain: Blueprint for a New Economy¡×¤òÆÉ¤ó¤À¤ê¤¹¤ëÃæ¤Ç¡¢¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤½¤Î¤â¤ËÂçÊѶ½Ì£¤ò»ý¤Á¡¢¥µ¥ó¥×¥ëÄøÅ٤Ǥ¹¤¬Ethereum¤Ç¥³¥ó¥È¥é¥¯¥È¤ò½ñ¤¤¤ÆÍ·¤ó¤À¤ê¤·¤Æ¤¤¤Þ¤·¤¿¡£Ãæ¤Ç¤âBlockchain: Blueprint for a New Economy¤Ç¸ì¤é¤ì¤Æ¤¤¤ë¡Ê³Î¤«¡Ä¡Ë¡¢¡Ö¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤¬¤¢¤ì¤Ð¹ñ¤¬ÁϤì¤ë¤¾¡ª¡ª¡×¤ß¤¿¤¤¤ÊȯÁۤ˶¯¤¯´¶Ìäò¼õ¤±¤Æ¤¤¤Þ¤·¤¿¡£

¤¿¤À¡¢ºÇ½é¤Ï¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤Ç¤Ê¤Ë¤«¥×¥í¥À¥¯¥È¤òºî¤ê¤¿¤¤¡ª¤È¤¤¤¦µ¤»ý¤Á¤è¤ê¤â¡¢Ã±¤Ê¤ëÃÎŪ¹¥´ñ¿´¤«¤éµ»½Ñ¤Ë¿¨¤ì¤Æ¤¤¤¿¤Î¤Ç¡¢¡ÖÌ¡²è¤òÉÁ¤³¤¦¡×¡Ö¥Û¡¼¥à¥Ú¡¼¥¸¤òºî¤í¤¦¡×¡Ö¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥óÌÌÇò¤¤¡×¤È¤¤¤¦£³¤Ä¤ÎÍ×ÁǤδØÏ¢¤ò°Õ¼±¤·¤¿»ö¤Ï̵¤«¤Ã¤¿¤Î¤Ç¤¹¡£

¤È¤³¤í¤¬¡¢Á°½Ò¤·¤¿Ä̤ê¡Ö¤Õ¤È¡×3¤Ä¤¬·ë¤Ó¤Ä¤¤¤¿½Ö´Ö¤¬¤¢¤Ã¤¿¤ó¤Ç¤¹¤è¤Í¡£¤Û¤ó¤È¤Ë¡¢¤Õ¤È¡£¤½¤ì¤¬2018ǯ3·î¤À¤Ã¤¿»ö¤È¡¢¥ê¥Ó¥ó¥°¤ÇYoutube¤ò´Ñ¤Æ¤¤¤¿½Ö´Ö¤À¤Ã¤¿»ö¤À¤±¤ò³Ð¤¨¤Æ¤¤¤Þ¤¹¡£

¤½¤Î»þ¤Î¥¢¥¤¥Ç¥¢¤ò®¹¶¤ÇKeynote¤ËÅ»¤á¡¢¥Ç¥¶¥¤¥ó¤òµ¯¤³¤·¡¢¥É¥á¥¤¥ó¤ò¼èÆÀ¤·¡¢²ñ¼Ò¤Ë°ì½µ´Ö¤ÎµÙ²Ë¤ò¿½¤·Æþ¤ì¡¢°ì¥ö·îÄø¤Ç¥×¥í¥È¥¿¥¤¥×¤ò´°À®¤µ¤»¤Þ¤·¤¿¡£

¤½¤Î¸å¡¢¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤Ë´Ø¤¹¤ëµ»½ÑµÚ¤ÓˡΧ¼þ¤ê¡¢¥×¥í¥À¥¯¥È¤ÎºÙÉô¤Ë´Ø¤¹¤ë¥Ç¥¶¥¤¥ó¡¢¥¤¥ó¥Õ¥é¼þ¤ê¡¢¤Ê¤É¤ò¼þ°Ï¤ÎÃç´Ö¤ò´¬¤­¹þ¤ó¤Ç°ì½ï¤Ë¥ï¥¤¥ï¥¤¤·¤Ê¤¬¤é¡¢º£¤Ë»ê¤ê¤Þ¤¹¡£

ÅÓÃæ¡¢react native¤Ç¥¢¥×¥ê¤òºî¤í¤¦¤È»î¤ß¡¢expo¤ò»î¤·¤¿¤ê¼Î¤Æ¤¿¤ê¤·¤Ê¤¬¤é¡¢ºÇ½ªÅª¤Ë¡Ö¥¢¥×¥ê¤¤¤é¤Ê¤¯¤Í¡©¡×¤È»×¤Ã¤ÆÁ´¤Æ¤ò¼Î¤Æµî¤Ã¤¿¤ê¡¢¤¢¡¼¤Ç¤â¤Ê¤¤¤³¡¼¤Ç¤â¤Ê¤¤¤È³Ú¤·¤¯²á¤´¤·¤Æ¤¤¤ë¤È¡¢µ¤¤Å¤±¤Ð9·î¤È¤¤¤¦´¶¤¸¤Ç¤·¤¿¡£

°ì¤ÄÁÛÄê³°¤À¤Ã¤¿¤È¤¤¤¦¤«¡¢Æñ¤·¤«¤Ã¤¿¥Ý¥¤¥ó¥È¤È¤·¤Æ¡¢½é´ü¥ê¥ê¡¼¥¹¤«¤é¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤ò¤·¤Ã¤«¤êÁȤ߹þ¤ó¤À¥µ¡¼¥Ó¥¹¤ò¥ê¥ê¡¼¥¹¤·¤è¤¦¤È¹Í¤¨¤Æ¤¤¤¿¤Î¤Ç¤¹¤¬¡¢¼ç¤ËˡΧ¼þ¤ê¤ÎÀ©¸Â¤¬¸·¤·¤¯ÃÇǰ¤·¤Æ¤¤¤Þ¤¹¡£¤¿¤À¡¢¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥óÍ×ÁÇ0¤À¤È¤Ä¤Þ¤é¤Ê¤¤¤Ê¡Á¤È»×¤¤¡¢¡ÖETH¤òÁ÷¶â¤¹¤ë¡×¤È¤¤¤¦µ¡Ç½¡Ä¡¢¤Þ¤¡ÅꤲÁ¬¤Î¤è¤¦¤Ê¥â¥Î¤À¤±¤òµ¡Ç½¤È¤·¤ÆÉÕ¤±¤Æ¡¢¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤ò¤ä¤Ã¤Æ¤¤¤¯µ¤»ý¤Á¤òɽÌÀ¤¹¤ë·Á¤Ç¥ê¥ê¡¼¥¹¤·¤Æ¤¤¤Þ¤¹¡£

º£¸å¡¢Ë¡Î§ÌÌ¡¢µ»½ÑÌ̤⥯¥ê¥¢¤·¤Ê¤¬¤é¡¢¤·¤Ã¤«¤ê¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó¤ò¼è¤êÆþ¤ì¤¿¥µ¡¼¥Ó¥¹¤È¤·¤Æ¡¢¥¢¥Ã¥×¥Ç¡¼¥È¤·¤Æ¤¤¤­¤¿¤¤¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£

º£¸å¤ÎÏÃ

¤µ¤Æº£¸å¤ÎÏäǤ¹¤¬¡¢SYNTHESIZE ¤ÎÊý¤Ïµ¤Ä¹¤ËÏ¢ºÜ¤ò³¤±¤Æ¤¤¤­¤¿¤¤¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£´èÄ¥¤Ã¤Æ¥¢¥Ë¥á²½¤µ¤»¤¿¤¤¤Ç¤¹¡£

ÉÁ¤±¤ÐÉÁ¤¯¤Û¤ÉÀ®Ä¹¤ò¼Â´¶¤Ç¤­¤ë¥Õ¥§¡¼¥º¤Ê¤Î¤Ç¡¢Ìµ¸Â¤ËÌÌÇò¤¯¤Æ¡£¹¹¤Ë¡Ö¤É¤¦¤·¤ÆÀ®Ä¹¤·¤¿¤È»×¤¨¤ë¤Î¤«¡¢²¿¤ò¹©Éפ·¤¿¤Î¤«¡×¡Ö¼ºÇÔ¤·¤¿¥Ý¥¤¥ó¥È¤Ï¤Ê¤Ë¤«¡×¤Ê¤É¤ÎÃ諤â;¤¹¤³¤È̵¤¯Á´¤Æ¤òʸ¾Ï¤Ë¤·¤Æ¥¢¥¦¥È¥×¥Ã¥È¤·Â³¤±¤¿¤¤¤È¤â»×¤Ã¤Æ¤¤¤Þ¤¹¡£

¹¹¤Ë¡¢¤â¤¦¤Á¤ç¤Ã¤ÈÏ¢ºÜ¤¬¿Ê¤ó¤Àº¢¤Ë¡¢SYNTHESIZE¤Çºî¤Ã¤¿ÀßÄ꽸¤òÁ´¤ÆÃ¯¤Ç¤âºÆÍøÍѲÄǽ¤Ê¥é¥¤¥»¥ó¥¹¤Ç¸ø³«¤·¤Æ¤¤¤­¤¿¤¤¤È¤â¹Í¤¨¤Æ¤¤¤Þ¤¹¡£¤Þ¡¢ºÆÍøÍѤ·¤¿¤¯¤Ê¤ë¤¯¤é¤¤¤Î²ÁÃͤ¬¤¢¤ë¤Î¡©¤Ã¤ÆÏäϤ¢¤ê¤Þ¤¹¤¬¤Í¡£¤½¤ÎÏäÏÄÉ¡¹¡£

¹¹¿·ÉÑÅÙ¤Ï1.5¥ö·î¤Ë°ìËÜÄøÅ٤ˤʤꤽ¤¦¤Ç¤¹¡£20¥Ú¡¼¥¸Á°¸å¤Ç¤·¤ç¤¦¤«¡£³«È¯¡¢Ï«Æ¯¡¢¼¹É®¤Î»°Â­¤ÎÁððޤǤä¤Ã¤Æ¤¤¤ë¤È¡¢¤É¤¦¤Ë¤â¤½¤ì¤¯¤é¤¤¤¬´Ø¤Î»³¤Ã¤Ý¤¯¤Æ¡£¤½¤Î¤¦¤Á¡ÖϫƯ¡×¤Î»þ´Ö¤òÁ´¤Æ³«È¯¤È¼¹É®¤Ë½¼¤Æ¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¤Î¤¬ÍýÁۤǤ¹¤¬¡¢¤½¤ì¤â¤Ê¤«¤Ê¤«Æñ¤·¤¤¡£

Leth¤Ë´Ø¤·¤Æ¤Ï¡¢¡Ö API¤Î¸ø³« ¡×¤È¡Ö ¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥óµ¡Ç½¤Î¥ê¥ê¡¼¥¹ ¡×¤òÌÜɸ¤È¤·¤Æ³«È¯¤·¤Æ¤¤¤­¤Þ¤¹¡£

¤Þ¤À³ÎÄê¤Ç¤Ï¤Ê¤¤¤Ç¤¹¤¬¡¢¥×¥í¥À¥¯¥È¤Î¥¤¥·¥å¡¼¤ä¥í¡¼¥É¥Þ¥Ã¥×¤Ê¤É¤â¸ø³«¤·¤Ê¤¬¤é³«È¯¤ò¿Ê¤á¤Æ¤¤¤±¤¿¤é¤È¤â»×¤Ã¤Æ¤¤¤Þ¤¹¡£²Äǽ¤Ê¸Â¤êÈóÃæ±û½¸¸¢Åª¤Ë±¿±Ä¤·¤Æ¤¤¤­¤¿¤¤¤Ç¤¹¤Í¡£

ºÇ¸å¤Ë

»ä¤ÏÊ¿ÆüƯ¤¤¤¿¸å¤Î¿²¤ë¤Þ¤Ç¤Î»þ´Ö¡¢ÅÚÆü¤ÎÁ´¤Æ¤ò¼¹É®¤È³«È¯¤Ë½¼¤Æ¤Æ¤¤¤Þ¤¹¡Ê»þ¡¹¥²¡¼¥à¤ò¤·¤¿¤ê¤Ï¤·¤Þ¤¹¤¬¡¢¤½¤ì¤âËܵ¤¤Ç¤¹¡Ë¡£°û¤ß¤Ë¤¤¤¯»ö¤â¾¯¤Ê¤¤¤·¡¢¹Ô¤Ã¤¿¤È¤·¤Æ¤âɬ¤º¥¿¥¯¥·¡¼¤Çµ¢¤ê¡¢¾¯¤·¤Ç¤âÁϺî¤Ë½¼¤Æ¤é¤ì¤ë»þ´Ö¤ÈÂÎÎϤò³ÎÊݤ¹¤ë¤è¤¦¤Ë¤·¤Æ¤¤¤Þ¤¹¡£

²¿»ö¤â¡Ö²¿¤«¤ò»Ï¤á¤ë¤Î¤Ë¡¢ÃÙ¤¹¤®¤ë¤È¤¤¤¦¤³¤È¤Ï̵¤¤¡×¤È¤¤¤¦¤³¤È¤òÂ轤·¤Ê¤¬¤éÀ¸¤­¤Æ¤¤¤±¤¿¤é¤È´ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡Ö30ºÐ¤«¤éÌ¡²è¤òÉÁ¤­»Ï¤á¤ë¡ª¡×¤È¤¤¤Ã¤¿ÌµËŤ˻פ¨¤ëÄ©Àï¤Ç¤â¡¢¤·¤Ã¤«¤ê¶õ¤¤¤¿»þ´Ö¤ò¤½¤ÎÌÜɸ¤ËÂФ·¤ÆÊû¤²¤Æ¡¢³î¤Ä¸úΨ¤è¤¯³Ø¤ó¤Ç¤¤¤­¡¢¤½¤ì¤ò·Ñ³¤¹¤ë¤³¤È¤¬½ÐÍè¤ë¤È¡¢°Æ³°¤¢¤ëÄøÅ٤Υ¢¥¦¥È¥×¥Ã¥È¤ÏDZ¤ê½Ð¤»¤ë¤Î¤Ç¤Ï¤Ê¤¤¤«¤È¡¢´õ˾Ū´Ñ¬¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡Ä»ä¤Ï¤½¤¦¹Í¤¨¤Æ¤¤¤Þ¤¹¡£

̵°ÇÌðí¤ËÅØÎϤ¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢¼«Ê¬¤ÎƬ¤Ç¹Í¤¨¤Æ¸úΨŪ¤Ë¼ºÇÔ¤ò·«¤êÊÖ¤¹¥¹¥­¥ë¤µ¤¨¿È¤Ë¤Ä¤±¤Ð¡¢¸åŷŪ¤Ë²¿¤Ë¤Ç¤â¤Ê¤ì¤ë¤Î¤Ç¤Ï¤Ê¤¤¤«¡¢¤È¡£

¤½¤ó¤Ê»ä¤äLeth¤Î»ö¤ò±þ±ç¤¹¤ë¤è¡ª¤È¤¤¤¦¿´Í¥¤·¤¤Êý¤¬¤¤¤Þ¤·¤¿¤é¡¢¡ÖETH¤òÁ÷¶â¤¹¤ë¡×¥Ü¥¿¥ó¤«¤éETH¤òÁ÷¤Ã¤ÆÄº¤¤¤¿¤ê¡¢¾¯¤·¤Ç¤â¿¤¯¤ÎÊý¤Ë¤³¤Î¥¨¥ó¥È¥ê¡¼¤òÆÉ¤ó¤ÇÌ㤨¤ë¤È´ò¤·¤¤¤Î¤Ç¡¢SNSÅù¤Ç¥·¥§¥¢¤·¤ÆÄº¤±¤¿¤é¡¢»à¤Ì¤Û¤É´î¤Ó¤Þ¤¹¡£

ºÇ¸å¤Þ¤ÇÆÉ¤ó¤Ç夭¡¢¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£

¤Ê¤Ë¤«Ï¢Íí¤·¤¿¤¤»ö¤¬¤´¤¶¤¤¤Þ¤·¤¿¤é aohige1979@gmail.com ¤Þ¤Ç¥á¡¼¥ë²¼¤µ¤¤¡£


´ØÏ¢µ­»ö¡§

SYNTHESIZE 1ÏÃÌܤÎÁϺî¥í¥°

#¥Ö¥í¥Ã¥¯¥Á¥§¡¼¥ó #webÌ¡²è #SYNTHESIZE #leth

¢£ÆüËܤÎWeb¥Ç¥¶¥¤¥ó¤Ç¸«¤«¤±¤ë10¸Ä¤ÎÆÃħ | ¥³¥ê¥¹ 18:54

<title>ÆüËܤÎWeb¥Ç¥¶¥¤¥ó¤Ç¸«¤«¤±¤ë10¸Ä¤ÎÆÃħ | ¥³¥ê¥¹</title>

ÆüËܤÎWeb¥Ç¥¶¥¤¥ó¤Ç¸«¤«¤±¤ë10¸Ä¤ÎÆÃħ

UXÆ»¾ì -UX¥Ç¥¶¥¤¥ó¤Î´ðÁÃÃ챤«¤éUI/Web¥Ç¥¶¥¤¥ó¤ËÌòΩ¤Ä¾ðÊó¡¢Adobe XD¤ÎºÇ¿·¾ðÊó¤Þ¤Ç

¤³¤³¿ôǯ¤Ç¡¢ÆüËܤÎWeb¥Ç¥¶¥¤¥ó¤ÏÂ礭¤¯¿Ê²½¤·¤Þ¤·¤¿¡£

ÀöÎý¤µ¤ì¤¿¥Ç¥¶¥¤¥ó¤È¤¤¤¨¤Ð¡¢³¤³°¤Î¤â¤Î¤Ç¤·¤¿¤¬¡¢º£¤Ç¤ÏÆüËܤǤâ¿ô¿¤¯¸«¤é¤ì¤Þ¤¹¡£

¥Ç¥¶¥¤¥ó¤Î¥¹¥¿¥¤¥ë¡¢·Ý½ÑŪ¥¢¥×¥í¡¼¥Á¡¢¹âÅ٤ʥ½¥ê¥å¡¼¥·¥ç¥ó¡¢¤½¤·¤Æ´Á»ú¤ä½Ä½ñ¤­¤Îʸ»ú¤ò»È¤Ã¤¿¥Ç¥¶¥¤¥ó¤Ê¤É¡¢ÆüËܤÎWeb¥Ç¥¶¥¤¥ó¤Ç¸«¤«¤±¤ë10¸Ä¤ÎÆÃħ¤ò¾Ò²ð¤·¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

10 Distinctive Features of Japanese-Style Web Design

²¼µ­¤Ï³Æ¥Ý¥¤¥ó¥È¤ò°ÕÌõ¤·¤¿¤â¤Î¤Ç¤¹¡£

¢¨Åö¥Ö¥í¥°¤Ç¤ÎËÝÌõµ­»ö¤Ï¡¢¸µ¥µ¥¤¥ÈÍͤ˥饤¥»¥ó¥¹¤òÆÀ¤ÆËÝÌõ¤·¤Æ¤¤¤Þ¤¹¡£

01. ¥Ï¥¤¥Æ¥¯¤Ê±é½Ð

WebGL¡¢GLSL¡¢GSAP¥¢¥Ë¥á¡¼¥·¥ç¥ó¡¢Three.js¡¢Nginx¤Ê¤É¡¢¤³¤ì¤é¤Î¥é¥¤¥Ö¥é¥ê¤ÏÆüËܤdz«È¯¤µ¤ì¤¿¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢Èó¾ï¤Ë¸ú²ÌŪ¤Ë¤³¤ì¤é¤Î¥é¥¤¥Ö¥é¥ê¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤Ï¥Ú¡¼¥¸¤ò³«¤¯¤È´üÂԤ˶»¤ò¤È¤­¤á¤«¤»¡¢°µÅݤµ¤ì¤¿¤ê¥·¥¹¥Æ¥à¤ò¥¯¥é¥Ã¥·¥å¤µ¤ì¤¿¤ê¤¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£

ÂçÀڤʤΤϰõ¾Ý¤òºî¤ë¤³¤È¤Ç¡¢¥æ¡¼¥¶¡¼¤¬·Ð¸³¤ò³Ú¤·¤à¤³¤È¤È¤Î´Ö¤ËÀä̯¤Ê¥Ð¥é¥ó¥¹¤¬Êݤ¿¤ì¤Æ¤¤¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

Masayuki Daijima

¥Ï¥¤¥Æ¥¯¤ÎÍ×ÁǤϡ¢ºÇ½é¤ÎˬÌä¥Ú¡¼¥¸¤À¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Blues Design¤Ç¤Ï¡¢¥×¥í¥¸¥§¥¯¥È¤òÄ̤·¤ÆÀöÎý¤µ¤ì¤¿¥Æ¥¯¥Î¤ÎÊ·°Ïµ¤¤¬¾ú¤·½Ð¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥¹¥¯¥í¡¼¥ëÁ«°Ü¡¢¥Ê¥Ó¥²¡¼¥·¥ç¥ó¸ú²Ì¡¢3D²óž¥á¥Ë¥å¡¼¡¢¥É¥é¥Ã¥°Áàºî¤Ê¤É¡¢»î¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

Blues Design

02. ¾¤È¤Ï°Û¤Ê¤ë¥½¥ê¥å¡¼¥·¥ç¥ó

¾¤È¤Ï°Û¤Ê¤ë¥½¥ê¥å¡¼¥·¥ç¥ó¤ò¸«¤«¤±¤ë¤È¡¢¤½¤ì¤¬¤É¤¦¤¤¤Ã¤¿¤â¤Î¤Ê¤Î¤«´üÂÔ¤¹¤ë¿Í¤Ï¿¤¤¤Ç¤·¤ç¤¦¡£¤³¤³¤Ç¼è¤ê¾å¤²¤¿Web¥µ¥¤¥È¤Ï¡¢Â¾¤ËÎà¤ò¸«¤Ê¤¤ÁÇÀ²¤é¤·¤¤¥¢¥¤¥Ç¥¢¤Ç¥Ó¥¸¥¿¡¼¤ò¼æ¤­¤Ä¤±¤Æ¤¤¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

Final Fantasy XV

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

History of the Internet

03. ÆüËÜÆÈ¼«¤ÎÇÛ¿§

¿§¤ÏÆüËÜʸ²½¤Ë¤È¤Ã¤Æ¡¢ÉԲķç¤ÊÍ×ÁǤǤ¹¡£²¿À¤µª¤â¤Î´Ö¡¢¿È¤Ë¤Ä¤±¤é¤ì¤¿¹ë²Ú¤ÊÃåʪ¤ò»×¤¤É⤫¤Ù¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£Ãåʪ¤Ë¤Ï¿®¤¸¤é¤ì¤Ê¤¤¤Û¤É¡¢Èþ¤·¤¤¿§¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£

¥Ç¥¶¥¤¥ó¤ÇÆÈÆÃ¤ÊÇÛ¿§¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¿§Ä´¤È¿§Áê¤òÁȤ߹ç¤ï¤»¤ë¤Î¤¬¥Ý¥¤¥ó¥È¤Ç¤¹¡£ice cream parlour cosmetics¤Ç¤Ï¥°¥ì¡¼¤¬¤«¤Ã¤¿¥Ô¥ó¥¯¤ÈÇɼê¤Ê¥Í¥ª¥ó¤Î¥°¥ê¡¼¥ó¤Ç¡¢¤½¤ÎÈþ¤·¤µ¤òÆÀ¤Æ¤¤¤Þ¤¹¡£Republic¤Ç¤ÏÌÀ¤ë¤¤¥°¥ê¡¼¥ó¡¢¥Ö¥ë¡¼¡¢¥¤¥¨¥í¡¼¡¢¥Ô¥ó¥¯¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

ice cream parlour cosmetics

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

Republic

04. ½Ä½ñ¤­

½ÄÊý¸þ¤Î¥ê¥º¥à¤Ï¡¢ÆüËܸì¤Î¸À¸ìɽµ­¤Ç¤¢¤ë½Ä½ñ¤­¤Ë¥¤¥ó¥¹¥Ñ¥¤¥¢¤µ¤ì¤Æ¤¤¤Þ¤¹¡£½Ä½ñ¤­¤ÏÅÁÅýŪ¤Ê¥¹¥¿¥¤¥ë¤Ç¡¢½ÄÊý¸þ¤Ëʸ»ú¤¬½ñ¤«¤ì¤ë¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤¹¡£´¨Àî¿À¼Ò¤äò¿ ¤ß¤ÄÀî¤Î¥µ¥¤¥È¤Ç¡¢¤³¤Î½ÄÊý¸þ¤Î¥ê¥º¥à¤¬¸ú²ÌŪ¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£¤Þ¤¿¡¢¤³¤Î½Ä½ñ¤­¤Îʸ»ú¤ÏÀ¤³¦Åª¤Ë¤â¥È¥ì¥ó¥É¤ÎÃû¤·¤¬¤¢¤ê¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

´¨Àî¿À¼Ò

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

ò¿ ¤ß¤ÄÀî

05. ¼«Á³¤ÎÉ÷·Ê

ÆüËܤÎWeb¥µ¥¤¥È¤Î¿¤¯¤Ç¡¢¼«Á³¤¬»ÈÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£Ê¡ÅÄÃã²°¤Ç¤Ï¼«Á³¤¬³¨²è¤Î¤è¤¦¤ËÈþ¤·¤¯»ÈÍѤµ¤ì¤Æ¤ª¤ê¡¢¥¯¥ê¥Ã¥¯¤·¤¿¤¯¤Ê¤ë¿Í¤â¿¤¤¤Ç¤·¤ç¤¦¡£TAJI MAJI¤Î¥È¥Ã¥×¤Ë¤¢¤ëÁÇÀ²¤é¤·¤¤²Ö¤Î¥¤¥é¥¹¥È¤â¥Ó¥¸¥¿¡¼¤ÎÌܤò¼æ¤­¤Ä¤±¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

Ê¡ÅÄÃã²°

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

TAJI MAJI

06. ¹ªÌ¯¤Ê¥Ò¡¼¥í¡¼¥¨¥ê¥¢

¤³¤³¤Þ¤Ç¼è¤ê¾å¤²¤Æ¤­¤¿ÆüËܤÎWeb¥Ç¥¶¥¤¥ó¤Ç¤Ï¡¢¥Ò¡¼¥í¡¼¥¨¥ê¥¢¤¬ËÜÅö¤ËÌ¥ÎÏŪ¤Ç¤¢¤ë¤³¤È¤òÌÀ¤é¤«¤Ë¤·¤Þ¤·¤¿¡£¤³¤³¤Ç¾Ò²ð¤¹¤ë¤Î¤Ï¡¢¼«Á³¤ÎÈþ¤·¤µ¤Èµ»½Ñ¤Î¶¥±é¤ÇÀ¸¤ß½Ð¤µ¤ì¤Æ¤ª¤ê¡¢¥¯¥ê¥¨¥¤¥Æ¥£¥Ó¥Æ¥£¤ò»É·ã¤·¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

Yuto Takahashi

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

CRAZY

07. ¥¢¥Ë¥á¤Ë±Æ¶Á¤ò¼õ¤±¤¿¥¤¥é¥¹¥È

¥¢¥Ë¥á¤Ë±Æ¶Á¤ò¼õ¤±¤¿¥¤¥é¥¹¥È¤Ë¿¨¤ì¤Ê¤¤Ìõ¤Ë¤Ï¤¤¤­¤Þ¤»¤ó¡£¥¹¥¿¥¸¥ª¥¸¥Ö¥ê¤Î¿®¤¸¤é¤ì¤Ê¤¤¤Û¤ÉºÍǽ¤Î¤¢¤ë¥¢¥Ë¥á¡¼¥¿¡¼¤Ë¤è¤Ã¤ÆºÆ¸½¤µ¤ì¤¿¥Õ¥¡¥ó¥¿¥¸¡¼¤ÎÀ¤³¦¤ò̥λ¤¹¤ë¤¹¤Ù¤Æ¤ò³Ð¤¨¤Æ¤¤¤Þ¤¹¤«¡© ¥¢¥Ë¥á¤À¤±¤Ç¤Ê¤¯¡¢¥Þ¥ó¥¬¡¢¥³¥ß¥Ã¥¯¤Ï¡¢ÆüËܤΥݥåץ«¥ë¥Á¥ã¡¼¤ÎÆÃħŪ¤ÊÍ×ÁǤǤ¹¡£

ʸ»ú¤ä²»³Ú¤â˺¤ì¤Ê¤¤¤è¤¦¤Ë¤·¤Þ¤·¤ç¤¦¡£Â¾¤Î¥¢¥¸¥¢·÷Æâ¤È¶èÊ̤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

Kuon Yagi

08. ¥­¥ã¥é¥¯¥¿¡¼

ºÇ½é¤ËƬ¤ËÉ⤫¤Ö¤Î¤Ï¡¢Ä¹¤¤È±¤ÈÂ礭¤ÊÌܤò»ý¤Ä½÷¤Î»Ò¤¬Åо줹¤ë¸ÅŵŪ¤Ê¥Þ¥ó¥¬¤Ç¤¹¤¬¡¢¥Ç¥¶¥¤¥ó¥¹¥¿¥¤¥ë¤Ï¤Ï¤ë¤«¤Ë¿ÍͤǤ¹¡£¥¬¥é¥Õ¥ë¤Ç¤Ï¡¢¤«¤ï¤¤¤¤½÷À­¥­¥ã¥é¥¯¥¿¡¼¤¬¤¤¤¯¤Ä¤«¸«¤Ä¤«¤ê¡¢¥»¡¼¥é¡¼¥à¡¼¥ó¤È¤Ï²¿¤Î¶¦ÄÌÅÀ¤â¤¢¤ê¤Þ¤»¤ó¡£¥Ý¥±¥â¥ó¤¬¹¥¤­¤Ê¿Í¤Ë¤Ï¡¢SHAKE DE Ê¡¾Ð¤¤¤ÎÇØ·Ê¤Ë¤¤¤ë¥­¥ã¥é¥¯¥¿¡¼¤â¹¥¤­¤Ë¤Ê¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

¥¬¥é¥Õ¥ë

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

SHAKE DE Ê¡¾Ð¤¤

09. ÆüËܤδÁ»ú

´Á»ú¤Ê¤·¤Ç¡¢ÆüËܤÎWeb¥µ¥¤¥È¤ò¥¤¥á¡¼¥¸¤¹¤ë¤Î¤ÏÆñ¤·¤¤¤È¸À¤¨¤ë¤Ç¤·¤ç¤¦¡£¥ª¥«¥­¥ó¤Ç¤Ï¡¢¸À¸ì¤ò±Ñ¸ì¤ËÀÚ¤êÂØ¤¨¤ë»þ¤Ç¤µ¤¨¡¢ÆüËܸì¤Îʸ»ú¤ËÁø¶ø¤¹¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£Ê¸»ú¤Ï¾ðÊó¤òÅÁ㤹¤ë¤¿¤á¤À¤±¤Ç¤Ï¤Ê¤¯¡¢±¿¤äÈ˱ɤ乬ʡ¤ò¤â¤¿¤é¤¹¤È¹Í¤¨¤é¤ì¤ë¤Î¤Ç¡¢¥×¥í¥¸¥§¥¯¥È¤Î¤è¤êÀº¿ÀŪ¤Ê¦Ì̤òÈ¿±Ç¤·¤Þ¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

¥ª¥«¥­¥ó

10. ÆüËܤÎÅÁÅýŪ¤Ê²»

²»¡¦¥µ¥¦¥ó¥É¤ò»ÈÍѤ·¤¿Web¥µ¥¤¥È¤Ï¡¢¤â¤¦ÄÁ¤·¤¤¤â¤Î¤Ç¤Ï¤Ê¤¯¤Ê¤ê¤Þ¤·¤¿¡£¿ôǯ´Ö¤Ë¤Ï²»³Ú¤òή¤·¤Æ¤¤¤ë¥µ¥¤¥È¤¬¤¢¤ê¡¢¤½¤ì¤é¤Ï¸½ºß¤Ç¤â¤Þ¤À¼ûÍפ¬¤¢¤ê¤Þ¤¹¡£

Omikuji Machine¤Ç¤ÏÆüËܤÎÅÁÅýŪ¤Ê²»¤ò¥æ¡¼¥¶¥¨¥¯¥¹¥Ú¥ê¥¨¥ó¥¹¤Î¤¿¤á¤Ë»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£Èþ¤·¤¤²»¤Ï¡¢Web¥µ¥¤¥È¤ËÉԲķç¤Ê¤â¤Î¤Ç¤¹¡£

¥µ¥¤¥È¤Î¥­¥ã¥×¥Á¥ã

Omikuji Machine

¢£½é¿´¼Ô¤Ç¤âDBÀ߷פä¥Ç¡¼¥¿¥â¥Ç¥ê¥ó¥°¤Ë¤Ä¤¤¤Æ³Ø¤Ù¤ë7¤Ä¤Î¥µ¥¤¥È¤ÈËÜ - paiza³«È¯Æü»ï 07:35

<title>½é¿´¼Ô¤Ç¤âDBÀ߷פä¥Ç¡¼¥¿¥â¥Ç¥ê¥ó¥°¤Ë¤Ä¤¤¤Æ³Ø¤Ù¤ë7¤Ä¤Î¥µ¥¤¥È¤ÈËÜ - paiza³«È¯Æü»ï</title>

¢£¿·Æþ¼Ò°÷ɬÆÉ¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î´ðËܤòÍý²ò¤·¤è¤¦

<header style="max-width: 100%;">

½é¿´¼Ô¤Ç¤âDBÀ߷פä¥Ç¡¼¥¿¥â¥Ç¥ê¥ó¥°¤Ë¤Ä¤¤¤Æ³Ø¤Ù¤ë7¤Ä¤Î¥µ¥¤¥È¤ÈËÜ






</header>

f:id:paiza:20180903185841j:plain

Photo by

¤³¤ó¤Ë¤Á¤Ï¡£Ã«¸ý¤Ç¤¹¡£

¡ÖSQL¤Ï²¿¤È¤Ê¤¯½ñ¤±¤ë¤±¤É¡¢DBÀ߷פϤ·¤¿¤³¤È¤Ê¤¤¡Ä¡×¡ÖDBÀ߷פˤĤ¤¤Æ°ìÅÙ¤Á¤ã¤ó¤È³Ø¤ó¤Ç¤ª¤­¤¿¤¤¡Ä¡×¤È¤¤¤¦¿Í¤Ï¿¤¤¤Ç¤¹¤è¤Í¡£

DBÀ߷פȤϡ¢DB¤Î¥Ç¡¼¥¿¥â¥Ç¥ë¡ÊDB¤Î¹½À®¤Ê¤É¡Ë¤òºîÀ®¤¹¤ëºî¶È¤Ç¤¹¡£

DB¤ò°ì¤«¤éºî¤Ã¤¿¤ê¡¢¥Æ¡¼¥Ö¥ë¤òÄɲä·¤¿¤ê¤¹¤ëºÝ¤Ï¡¢ÅöÁ³¤Ç¤¹¤¬¡Öº£¤¢¤ë¥Ç¡¼¥¿¤¬²¿¤È¤Ê¤¯³ÊǼ¤Ç¤­¤ì¤Ð¤½¤ì¤ÇOK¡×¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

¥Æ¡¼¥Ö¥ë¤ÏÀµµ¬²½¤Ç¤­¤Æ¤¤¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¤·¡¢¥Ç¡¼¥¿¤ÎÀ°¹çÀ­¤â¼è¤ì¤Ê¤¤¤È¤¤¤±¤Þ¤»¤ó¡£¤Þ¤¿¡¢¸úΨ¤è¤¯¥Ç¡¼¥¿¤¬¼è¤ì¤ë¹½Â¤¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤É¤¦¤«¤â½ÅÍפǤ¹¡£

°ì¤«¤éÀ߷פ˼è¤ê¤«¤«¤ë¤è¤¦¤Ê¥±¡¼¥¹¤Ï¾¯¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢DB¤ò¼è¤ê°·¤¦¤³¤È¤¬¤¢¤ë¤Ê¤é¡¢¤³¤¦¤·¤¿DBÀ߷פδðËܤÏÃΤäƤª¤¤¤ÆÂ»¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤à¤·¤í¼«Ê¬¤¬°·¤¦DB¤Î¹½Â¤¤Ï¤­¤Á¤ó¤ÈÃΤäƤª¤«¤Ê¤¤¤È¡¢¡Ö¤Ê¤ó¤«Å¬Åö¤ËSQLÅꤲ¤¿¤é¥Ç¡¼¥¿¼è¤ì¤¿¤±¤É¡¢Àµ¤·¤¯¼è¤ì¤Æ¤ë¤Î¤«¤É¤¦¤«¤è¤¯¤ï¤«¤ó¤Ê¤¤¤Ê¡×¤È¤¤¤¦¤Õ¤¦¤Ë¥Ö¥é¥Ã¥¯¥Ü¥Ã¥¯¥¹²½¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£

DBÀ߷פδðËܤò³Ø¤ó¤Ç¤ª¤¯¤È¡¢¥µ¡¼¥Ó¥¹ÆâÍÆ¤ä³«È¯¸À¸ì¤Ë¤«¤«¤ï¤é¤º¡¢Ìò¤ËΩ¤ÄÃμ±¤È¤Ê¤ë¤Ï¤º¤Ç¤¹¡£

¤½¤³¤Çº£²ó¤Ï¡¢DBÀ߷פˤĤ¤¤Æ³Ø¤Ù¤ë¥µ¥¤¥È¤È½ñÀÒ¤ò¤´¾Ò²ð¤·¤Þ¤¹¡£

f:id:paiza:20180903152125j:plain

¡Ø½ñ¤­¹þ¤ß¼°SQL¤Î¥É¥ê¥ë ¡Ù¤Îºî¼Ô¤ÎÊý¤Ë¤è¤ëÆü·ÐXTECH¤ÎÏ¢ºÜµ­»ö¤Ç¤¹¡£DBÆþÌç¼Ô¸þ¤±¤Ë¡¢½ñÀÒ¤«¤éÈ´¿è¤µ¤ì¤¿ÆâÍÆ¤¬·ÇºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

¤â¤Á¤í¤óDB¤Ë¤Ä¤¤¤Æ¤µ¤é¤Ë¾Ü¤·¤¯ÃΤꤿ¤¤¿Í¤äSQL¤ÎÎý½¬¤ò¤·¤¿¤¤¿Í¤Ï¡¢¡Ø½ñ¤­¹þ¤ß¼°SQL¤Î¥É¥ê¥ë ¡Ù¤òÆÉ¤ó¤Ç¤ß¤ë¤Î¤â¤ª¤¹¤¹¤á¤Ç¤¹¡£

¢£½é¤á¤Æ¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹Àß·×

f:id:paiza:20180903152838j:plain

¤³¤Á¤é¤âDBÆþÌç¼Ô¸þ¤±¤Êµ»½ÑɾÏÀ¼Ò¤ÎÏ¢ºÜµ­»ö¤Ç¤¹¡£¥Ç¡¼¥¿¥Ù¡¼¥¹À߷פÎÁ´ÂÎŪ¤Êή¤ì¤«¤éÀâÌÀ¤¬¤¢¤ê¤Þ¤¹¡£

¢£Ã£¿Í¤Ë³Ø¤ÖSQL

f:id:paiza:20180903184444j:plain

CodeZine¤ÎÏ¢ºÜµ­»ö¤Ç¤¹¡£µ­»ö¼«ÂΤÏ̵ÎÁ¤ÇÆÉ¤á¤Þ¤¹¤¬¡¢²ÃÉ®¡¦ºÆÊÔ½¸¤µ¤ì¤¿½ñÀÒ¡ØÃ£¿Í¤Ë³Ø¤Ö SQLŰÄì»ØÆî½ñ¡Ù¤Î¤Û¤¦¤¬¼ÂÎãË­É٤Ǥ狼¤ê¤ä¤¹¤¯¤Æ¤ª¤¹¤¹¤á¤Ç¤¹¡£

¢£Ã£¿Í¤Ë³Ø¤Ö SQLŰÄì»ØÆî½ñ

ã¿Í¤Ë³Ø¤Ö SQLŰÄì»ØÆî½ñ (CodeZine BOOKS)

¤Ê¤ª¡¢½é¿´¼Ô¤òÈ´¤±½Ð¤·¤¿¤¤¿Í¤äÃæµé¼Ô¸þ¤±¤ÎÆâÍÆ¤Ë¤Ê¤Ã¤Æ¤Ï¤¤¤Þ¤¹¤¬¡¢¤µ¤é¤Ë¾Ü¤·¤¯DB¤Ë¤Ä¤¤¤Æ³Ø¤Ó¤¿¤¤¿Í¤Ë¤Ï¡¢Â³ÊԤΡØÃ£¿Í¤Ë³Ø¤ÖDBÀß·× Å°Äì»ØÆî½ñ ½éµé¼Ô¤Ç½ª¤ï¤ê¤¿¤¯¤Ê¤¤¤¢¤Ê¤¿¤Ø¡Ù¤â¤ª¤¹¤¹¤á¤Ç¤¹¡£

¢£SQL¥¢¥ó¥Á¥Ñ¥¿¡¼¥ó

SQL¥¢¥ó¥Á¥Ñ¥¿¡¼¥ó

SQL¤Îµ­½ÒÊýË¡¤À¤±¤Ç¤Ê¤¯¡¢DBÀ߷פÎÃʳ¬¤«¤é¡¢ÍÍ¡¹¤Ê¾ìÌ̤Ǵ٤ê¤ä¤¹¤¤¥¢¥ó¥Á¥Ñ¥¿¡¼¥ó¤Ë¤Ä¤¤¤Æ²òÀ⤵¤ì¤Æ¤¤¤Þ¤¹¡£¥¢¥ó¥Á¥Ñ¥¿¡¼¥ó¤È¤¤¤¦¤Î¤Ï¡Ö¤ä¤Ã¤Æ¤Ï¤¤¤±¤Ê¤¤¡¢Èò¤±¤¿¤¤¥Ñ¥¿¡¼¥ó¡×¤È¤¤¤¦¤³¤È¤Ç¤¹¡£ÃΤé¤Ê¤¤¤È¤Ä¤¤¤Ä¤¤¤ä¤Ã¤Æ¤·¤Þ¤¦¥¢¥ó¥Á¥Ñ¥¿¡¼¥ó¤Ç¤¹¤¬¡¢¡Ö¤Ê¤¼¤ä¤Ã¤Æ¤·¤Þ¤¦¤Î¤«¡¢¤É¤¦¤¹¤ì¤ÐËɤ²¤ë¤Î¤«¡×¤¬¤ï¤«¤ê¤ä¤¹¤¯½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£

DBÀ߷פηи³¤¬¤¢¤ë¿Í¸þ¤±¤Î½ñÀÒ¤À¤È¤Ï»×¤¤¤Þ¤¹¤¬¡¢DB¤ò»È¤¦¤³¤È¤Ë¤Ê¤Ã¤¿¿·¿Í¤Î¿Í¤Ë¤â¤ª¤¹¤¹¤á¤Ç¤¹¡£

¢£¤Þ¤È¤á

Á°½Ò¤ÎÄ̤ꡢDBÀ߷פδðËܤϥµ¡¼¥Ó¥¹ÆâÍÆ¤ä³«È¯¸À¸ì¤Ë¤«¤«¤ï¤é¤ºÌò¤ËΩ¤ÄÃμ±¤Ç¤¹¡£

DB¤ò¼è¤ê°·¤¦¤è¤¦¤Ë¤Ê¤ë¤È¡Ö¤½¤¦¤À¡¢SQL³Ø¤Ü¤¦¡×¤È¤Ï¤Ê¤ë¤È»×¤¤¤Þ¤¹¤¬¡¢DBÀ߷פˤĤ¤¤Æ¤âÊÙ¶¯¤·¤Æ¤ª¤¤¤ÆÂ»¤Ï¤¢¤ê¤Þ¤»¤ó¡£

¤Á¤Ê¤ß¤ËSQL¤Ë´Ø¤·¤Æ¤Ï¡¢paiza¥é¡¼¥Ë¥ó¥°¤Ç¡ÖDB/SQLÆþÌçÊԡפȤ¤¤¦¥ì¥Ã¥¹¥ó¤â¸ø³«¤·¤Æ¤¤¤Þ¤¹¡£

SQL¤Î¥ª¥ó¥é¥¤¥ó¼Â¹Ô´Ä¶­¤È¹½ÃۺѤߤΥǡ¼¥¿¥Ù¡¼¥¹¤¬ÍѰդµ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ÌÌÅݤʴĶ­¹½ÃÛ¤ä¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î½àÈ÷¤Ê¤É¤ò¤·¤Ê¤¯¤Æ¤â¡¢Æ°²è¤È±é½¬ÌäÂê¤òÄ̤·¤Æ³Ú¤·¤¯SQL¤Î»È¤¤Êý¤¬³Ø¤Ù¤Þ¤¹¡£

¤³¤Î¤è¤¦¤Ë¡¢¼«Ê¬¤Ç¼ê¤òư¤«¤·¤Æ¼ÂºÝ¤ÎSQLʸ¤òÂǤÁ¹þ¤ó¤Ç¤ß¤¿¤ê¡¢·ë²Ì¤ò³Îǧ¤·¤¿¤ê¤Ç¤­¤Þ¤¹¡£

paiza¥é¡¼¥Ë¥ó¥°¤Î¡ÖDB/SQLÆþÌçÊԡפˤĤ¤¤Æ¡¢¾Ü¤·¤¯¤Ï¤³¤Á¤é





¡Öpaiza¥é¡¼¥Ë¥ó¥°¡×¤Ç¤Ï¡¢Ì¤·Ð¸³¼Ô¤Ç¤â¥Ö¥é¥¦¥¶¤µ¤¨¤¢¤ì¤Ð¡¢º£¤¹¤°¥×¥í¥°¥é¥ß¥ó¥°¤Î´ðÁ䬯°²è¤Ç³Ø¤Ù¤ë¥ì¥Ã¥¹¥ó¤ò¿¿ô¸ø³«¤·¤Æ¤ª¤ê¤Þ¤¹¡£

¾Ü¤·¤¯¤Ï¤³¤Á¤é

paiza¥é¡¼¥Ë¥ó¥°

¤½¤·¤Æpaiza¤Ç¤Ï¡¢Web¥µ¡¼¥Ó¥¹³«È¯´ë¶È¤Ê¤É¤Çµá¤á¤é¤ì¤ë¥³¡¼¥Ç¥£¥ó¥°ÎϤ䡢¥Æ¥¹¥È¥±¡¼¥¹¤òÁÛÄꤹ¤ëÎϤʤɤ¬Ìä¤ï¤ì¤ë¥×¥í¥°¥é¥ß¥ó¥°¥¹¥­¥ë¥Á¥§¥Ã¥¯ÌäÂê¤âÄ󶡤·¤Æ¤¤¤Þ¤¹¡£

¥¹¥­¥ë¥Á¥§¥Ã¥¯¤ËÄ©À路¤¿¿Í¤Ï¡¢¤½¤Î·ë²Ì¤Ë¤è¤Ã¤ÆS¡¦A¡¦B¡¦C¡¦D¡¦E¤Î6Ãʳ¬¤Î¥é¥ó¥¯¤ò¼èÆÀ¤Ç¤­¤Þ¤¹¡£É¬Íפʥ¹¥­¥ë¥é¥ó¥¯¤ò¼èÆÀ¤¹¤ì¤Ð¡¢½ñÎàÁª¹Í¤Ê¤·¤Ç´ë¶È¤Îµá¿Í¤Ë±þÊ礹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¡Ö¼«Ê¬¤Î¥×¥í¥°¥é¥ß¥ó¥°¥¹¥­¥ë¤òµÒ´ÑŪ¤ËÃΤꤿ¤¤¡×¡Ö¥¹¥­¥ë¤ò»È¤Ã¤ÆÅ¾¿¦¤·¤¿¤¤¡×¤È¤¤¤¦Êý¤Ï¡¢¤¼¤Ò¥Á¥ã¥ì¥ó¥¸¤·¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡£

¾Ü¤·¤¯¤Ï¤³¤Á¤é

paiza¤Î¥¹¥­¥ë¥Á¥§¥Ã¥¯

2018-09-03

¢£Basics_of_DNS_that_application_engineers_should_know - Speaker Deck 07:46

https://speakerdeck.com/mamy1326/basics-of-dns-that-application-engineers-should-know-1

¢£°æ¸Í¡¢Íî¤È¤··ê¡¢²È¡¢²Ì¤Æ¤Ï¡È³¤¡É¤Þ¤Ç¡¡¤Ê¤ó¤Ç¤âÉð´ï¤Ë¤Ê¤ëRPG¡Ö¤Ö¤­¤¢¤Ä¤á¡×¤¬¤Ê¤ó¤Ç¤â²á¤®¤ÆÊ¢¶ÚÊø²õ - ¤Í¤È¤é¤Ü 07:46

<title>°æ¸Í¡¢Íî¤È¤··ê¡¢²È¡¢²Ì¤Æ¤Ï¡È³¤¡É¤Þ¤Ç¡¡¤Ê¤ó¤Ç¤âÉð´ï¤Ë¤Ê¤ëRPG¡Ö¤Ö¤­¤¢¤Ä¤á¡×¤¬¤Ê¤ó¤Ç¤â²á¤®¤ÆÊ¢¶ÚÊø²õ - ¤Í¤È¤é¤Ü</title>

°æ¸Í¡¢Íî¤È¤··ê¡¢²È¡¢²Ì¤Æ¤Ï¡È³¤¡É¤Þ¤Ç¡¡¤Ê¤ó¤Ç¤âÉð´ï¤Ë¤Ê¤ëRPG¡Ö¤Ö¤­¤¢¤Ä¤á¡×¤¬¤Ê¤ó¤Ç¤â²á¤®¤ÆÊ¢¶ÚÊø²õ

RPG»Ë¾å¶þ»Ø¤Î¥«¥ª¥¹ÅÙ¡£²¿¤¬µ¯¤­¤Æ¤âư¤¸¤Ê¤¤¿´»ý¤Á¤Ç¤É¤¦¤¾¡£

¥Ë¥å¡¼¥¹






¡¡niconico¤ÎRPG¥¢¥Ä¥Þ¡¼¥ë¤Ç¸ø³«¤µ¤ì¤¿¥Õ¥ê¡¼¥²¡¼¥à¡¢¡Ö¤Ö¤­¤¢¤Ä¤á ¡Á¤Ê¤ó¤Ç¤âÉð´ï¤Ë¤Ê¤ëRPG¡Á¡×¤¬¥·¥ó¥×¥ë¤Ê¥¿¥¤¥È¥ë¤ËÈ¿¤·¤ÆÆâÍÆ¤¬¶¸¤¤¤Ë¶¸¤Ã¤Æ¤¤¤ë¤È¤µ¤Þ¤¶¤Þ¤Ê¥¸¥ã¥ó¥ë¤Î¥²¡¼¥à¥Õ¥¡¥ó¤«¤éÃíÌܤò½¸¤á¤Æ¤¤¤Þ¤¹¡£¡Ö¤Ê¤ó¤Ç¤â¤È¤¤¤Ã¤¿¤Ê¡©¡¡¤Ç¤â¤³¤ì¤Ï̵Íý¤À¤í¡×¤È»×¤Ã¤Æ¥²¡¼¥à¤ò»Ï¤á¤ë¤È¡¢¤½¤Î¡È¤Ê¤ó¤Ç¤â¡É¤Ö¤ê¤ËÅÚ²¼ºÂ¤·¤Æµö¤·¤òÀÁ¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£´ÇÈĤ˵¶¤ê¤Ê¤·¡Ä¡Ä¡£




¡¡¥¹¥È¡¼¥ê¡¼¤Ï¡¢Éð´ï²°¤Î¼ç¿Í¸ø¤¬À¤³¦¤Î¤É¤³¤«¤Ë¸ºß¤¹¤ë¤È¤¤¤¦ºÇ¶¯¤ÎÉð´ï¡Ö¥Ä¥è¥¹¥®¥Æ¡á¥¯¥µ¥Ï¥¨¥ë¡¦¥½¡¼¥É¡×¤òõ¤¹¤¿¤Ó¤Ë½Ð¤ë¤È¤¤¤¦ÂçÊÑ¥·¥ó¥×¥ë¤Ê¤â¤Î¡£¤·¤«¤·¡¢¥²¡¼¥à³«»Ï¤ÈƱ»þ¤Ë¡¢¤³¤Î¥²¡¼¥à¤Î¶¸µ¤¤¬°ìü¤ò¤Î¤¾¤«¤»¤Þ¤¹¡£

¡¡¥¹¥é¥¤¥à¤Ë°Ï¤Þ¤ì¤Æ¤·¤Þ¤Ã¤¿¼ç¿Í¸ø¡Ö¤¦¤§»Ò¡×¤Ï¡¢¡Ö²¿¤Ç¤âÉð´ï¤Ë¤·¤ÆÀ臘¡Ä¡Ä¤½¤ì¤¬¿¿¤ÎÉð´ï¾¦¿Í¤À!!¡×¤È¤¤¤¦Ë´¤­Éã¤Î¸ÀÍÕ¤ò»×¤¤½Ð¤·¡¢¼è¤ê¤¢¤¨¤º¼þÊդˤ¢¤ë¤â¤Î¤òÉð´ï¤Ë¤·¤ÆÀ襤¤Þ¤¹¡£¤Þ¤º¤Ïƻü¤ËÍî¤Á¤Æ¤¤¤ë¥¹¥³¥Ã¥×¤ÎÁ°¤ÇÉð´ï¤ò½¦¤¦¥Ü¥¿¥ó²¡¤¹¤È¡¢Éð´ï¤Ë¤Ç¤­¤Þ¤·¤¿¡£¤µ¤é¤Ë¡¢¶á¤¯¤Ë¤¢¤Ã¤¿¡Ö¥Ä¥Ü¡×¤âÉð´ï¤Ë¤Ç¤­¤ë¤â¤è¤¦¡£
























¡¡¤Ê¤ë¤Û¤É¤³¤ì¤ÏÌÌÇò¤¤¡¢¤È»×¤¤¤µ¤é¤ËÌФߤˤ¢¤ëÆæ¤ÎÇò¹ü»àÂΤòÄ´¤Ù¤Æ¤ß¤ë¤È¡¢¡Ö¤·¤«¤Ð¤Í¡×¤¬¡ÈÉð´ï¡É¤È¤·¤Æ½¦¤¨¤Þ¤·¤¿¡£¤ó¤ó¡Ä¡Ä¡©




¡¡¤Ê¤«¤Ê¤«ÂçÃÀ¤À¤Ê¡Ä¡Ä¤È»×¤¤¤½¤Î¤Ø¤ó¤ËÀ¸¤¨¤Æ¤¤¤ëÌÚ¤òÄ´¤Ù¤Æ¤ß¤ë¤È¡¢ÌÚ¤ò°ú¤Ã¤³È´¤¤¤ÆÉð´ï¤È¤·¤Æ¼èÆÀ¡£¤¤¤ä¤¤¤ä¤¤¤ä¡£




¡¡Í½Á۰ʾå¤Ë²¿¤Ç¤â½¦¤¨¤ë¤Î¤ÇÉð´ï¤ò½¦¤¦¥Ü¥¿¥ó¤òÏ¢ÂǤ·¤Ê¤¬¤éÊ⤤¤Æ¤ß¤ë¤È¡¢ÌÐ¤ß¤ËÆþ¤Ã¤¿½Ö´Ö¡ÖÁð¤à¤é¡×¤ò½¦¤¤¤Þ¤·¤¿¡£¤¤¤ä¤½¤ì°ì¸Ä¤ÎʪÂΤ¸¤ã¤Í¤¨¤¾¡ª








¡¡¤µ¤é¤ËÏ¢ÂǤ·¤Ê¤¬¤éÊ⤤¤Æ¤¤¤ë¤È¡¢¡ÖÆ»¡×¤ò¼èÆÀ¡£½¦¤Ã¤¿¤¢¤È¤Ë¤Ï»¨Áð¤¬À¸¤¤ÌФäƤ¤¤Þ¤·¤¿¡£µÕ¤¸¤ã¤Í!?




¡¡¤³¤¦¤Ê¤Ã¤Æ¤¯¤ë¤È¡¢ÉáÄ̤ϥ²¡¼¥àŪ¤Ë¡Ö¤³¤ÎÀè¤Ë¿Ê¤á¤Ê¤¤¡×¤³¤È¤ò¼¨¤¹¤¿¤á¤ËÃÖ¤«¤ì¤ë¹â¤¤³³¤ËÌܤ¬¹Ô¤­¤Þ¤¹¡£¤¤¤ä¡¢Î®ÀФˤ³¤ì¤Ï¡Ä¡Ä¤Þ¤µ¤«¤½¤ó¤Ê¡Ä¡Ä½¦¤¨¤Á¤ã¤Ã¤¿¤è¡£³³¡¢½¦¤¨¤Á¤ã¤Ã¤¿¤è¡£³³¤ò½¦¤¦¤Ã¤Æ¤Ê¤ó¤À¡Ä¡Ä¡©












¡¡¤¢¤Ã¤±¤Ë¤È¤é¤ì¤Ê¤¬¤é¥¹¥é¥¤¥à¤¿¤Á¤ÎÊý¤Ë¿Ê¤à¤È¡¢²èÌ̺¸¤ËÃÓ¤¬¸«¤¨¤Þ¤¹¡£¤³¤ì¤Ð¤Ã¤«¤ê¤Ï¡Ä¡Ä¤¤¤¯¤é¤Ê¤ó¤Ç¤â¡Ä¡Ä½¦¤¨¤¿¡£¡ÖÏ¡¤ÎÃӡפò¡ÈÉð´ï¡É¤È¤·¤Æ¼èÆÀ¡£¤µ¤Ã¤­¤Þ¤ÇÃÓ¤¬¤¢¤Ã¤¿¤Ï¤º¤Î¾ì½ê¤Ï¡¢»¨Áð¤¬À¸¤¤ÌФäƤ¤¤Þ¤¹¡£¤³¤Î¥²¡¼¥à¡¢ÁÛÁü¤Î3ËüÇܤ϶¸¤Ã¤Æ¤ä¤¬¤ë¡£








¡¡¤È¤ê¤¢¤¨¤ºÉð´ï¤Ï½½Ê¬¤¹¤®¤ë¤Û¤ÉÊä½¼¤Ç¤­¤¿¤Î¤Ç¡¢ÀïÆ®¤Ø¡£¥²¡¼¥à¥·¥¹¥Æ¥àŪ¤Ë¤Ï¤¤¤ï¤æ¤ë¡Ö¥í¡¼¥°¥é¥¤¥¯¡×¤ä¡ÖÉԻ׵ĤΥÀ¥ó¥¸¥ç¥ó¡×·Ï¤Ë¤Ê¤Ã¤Æ¤ª¤ê¡¢¤³¤Á¤é¤¬1ÊâÆ°¤¯¤ÈŨ¤â1ÊâÆ°¤¯¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

¡¡º£²ó¤Ï¡¢¤È¤ê¤¨¤¢¤º¡ÖÏ¡¤ÎÃӡפò»È¤Ã¤Æ¥¹¥é¥¤¥à¤ò¹¶·â¡£µðÂç¤ÊÃÓ¤ò¤½¤Î¤Þ¤Þ¿¶¤ê²ó¤¹¡Ö¤¦¤§»Ò¡×¡£»à¤Ì¤Û¤É²èÌ̤¬¸«¤Å¤é¤¤¤Ç¤¹¤¬¡¢¡ÖÁ°Êý6¥Þ¥¹Æ±»þ¹¶·â¤È¤¤¤¦¥í¡¼¥°¥é¥¤¥¯¥²¡¼¥à¤Ë¤¢¤ë¤Þ¤¸¤­¹¶·âÈϰϡסܡÖÃÓ¤ÎÈÅÍô¤ÇÁ°Êý3¥Þ¥¹¤ËÄɲåÀ¥á¡¼¥¸¡×¤Ë¤è¤ëĶÀ­Ç½¤Ç¥¹¥é¥¤¥à¤ò°µÅݤ·¤Æ¤¤¤­¤Þ¤¹¡£¡ÖÏ¡¤ÎÃӡפĤ¨¤¨¤§¤§¤Ã¡ª




¡¡¤¢¤Ã¤È¤¤¤¦´Ö¤Ë¥¹¥é¥¤¥à¤¿¤Á¤ò°µÅݤ·¤¿¡Ö¤¦¤§»Ò¡×¤Ï¡¢Ìµ»ö³¹¤Ëµ¢´Ô¡£¤³¤³¤«¤é¼«Í³¹Ôư¤Ë¤Ê¤ë¤Î¤Ç¤¹¤¬¡¢³«»Ï10Éäǥե꡼¥À¥à¤À¤Ã¤¿À¤³¦¤Ï¤µ¤é¤Ë̵ˡÃÏÂӤˡ£¤ª¼êÅÁ¤¤¤äÌôÁð¤ÎÈÎÇä¤ò¤·¤Æ¤¯¤ì¤ëËå¤Î¡Ö¤Ý¤óÈþ¡×¤Ë¸þ¤«¤Ã¤ÆÉð´ï¤ò¿¶¤ê²ó¤·¤Æ¤ß¤¿¤È¤³¤í¡¢ÉáÄ̤ËÌ¿Ãæ¡£Ëå¤Ï¥¢¥¤¥Æ¥à¤ò¥É¥í¥Ã¥×¤·¤Ê¤¬¤é¨»à¤·¤Þ¤·¤¿¡£¤Ý¡¢¤Ý¤óÈþ¤£¤£¡ª¡¡¡Ö¤¦¤§»Ò¤Ï3¤Î·Ð¸³Ãͤò¼ê¤ËÆþ¤ì¤¿¡ª¡×¤¸¤ã¤Í¤§¤§!!




¡¡¤µ¤é¤Ë¡¢²È¤ÎÃæ¤Ë¤¢¤ë²È¶ñ¤ä¡¢¾¦ÉʤÎÈÎÇä¤Ë»È¤¦Ä¹´ù¡¢¥­¥Ã¥Á¥ó¡¢°Ø»Ò¡¢ËÜê¤Ê¤ÉÁ´¤ÆÉð´ï¤È¤·¤Æ»ý¤Á½Ð¤·²Äǽ¡£¤½¤ì¤É¤³¤í¤«¡¢¼«Âð¤ä¤½¤³¤éÊդˤ¢¤ë̱²È¤½¤Î¤â¤Î¤ò¡ÈÉð´ï¡É¤È¤·¤Æ»ý¤Ã¤Æ¤¤¤±¤ëŰÄì¤Ö¤ê¤Ç¤¹¡£





RPG¥¢¥Ä¥Þ¡¼¥ë Éð´ï½¸¤á

¥¿¥Ã¥×¤Ç³ÈÂç

¡ÈÉð´ï¡É¤ò²ó¼ý¤·¤Æ¤¤¤¯¤È¤³¤ó¤Ê¤³¤È¤Ë¡£¾²¤âÇí¤¬¤»¤Þ¤¹






¡¡¤·¤«¤â²È¤ò»ý¤Á½Ð¤¹¤È¡¢ËÜÍèÈ⤫¤éÆþ¤ë¤ÈÊ̤ΥޥåפȤ·¤Æ¤Ä¤Ê¤¬¤Ã¤Æ¤¤¤ë²È¤ÎÃæ¤ä½»¿Í¤¬Ä®¥Þ¥Ã¥×¤Î°ìÉô¤È¤·¤ÆÉ½¼¨¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¤È¤¤¤¦¤³¤À¤ï¤ê¤Ö¤ê¡£¤³¤ÎÊդǤÀ¤ó¤À¤ó¤È¡¢¡Ö¤¢¤¢¡¢¤³¤Î¥²¡¼¥à¤ÏÁ´¤Æ¤¬¶¸¤Ã¤Æ¤¤¤ë¤ó¤À¤Ê¤¡¡×¤Èµ¤ÉÕ¤­»Ï¤á¤Æ¤¯¤ë¤Ï¤º¤Ç¤¹¡£








¡¡¤µ¤é¤Ë¡¢Ä®¤Î½»Ì±¤ÏÁ´°÷¹¶·â²Äǽ¤È¤Ê¤Ã¤Æ¤ª¤ê¡¢¤´¶á½ê¤µ¤ó¤¿¤Á¤ò¤Ö¤ÃÈô¤Ð¤·¤Æ¥ì¥Ù¥ë¾å¤²¤â²Äǽ¡£¤¿¤Þ¤Ëµ®½ÅÉʤâ¥É¥í¥Ã¥×¤¹¤ë¤è¤¦¤Ê¤Î¤Ç¡¢¤ä¤é¤Ê¤¤¼ê¤Ï¤¢¤ê¤Þ¤»¤ó¡£¶á½ê¤Î²È¤òÉð´ï¤È¤·¤Æ¤â¤®¼è¤ê¡¢Ãæ¤Î½»¿Í¤ò¤µ¤Ã¤­¤Þ¤Ç½»¤ó¤Ç¤¤¤¿²È¤Ç¤Ö¤ÃÈô¤Ð¤·¤Þ¤·¤ç¤¦¡£Â¾¿Í¤Î²È¤Î¥¿¥ó¥¹¤ò¾¡¼ê¤Ë¹Ó¤é¤¹¥É¥é¥¯¥¨¤Î¼ç¿Í¸ø¤¬À»¿Í¤Ë¸«¤¨¤Æ¤­¤Þ¤·¤¿¡£

¡¡¶¸µ¤¤Ï¤³¤ì¤À¤±¤Ë¤È¤É¤Þ¤é¤º¡¢¥â¥ó¥¹¥¿¡¼¤äÄ®¤Î½»Ì±¤ÏHP¤ò¸º¤é¤¹¤È¡ÈÉð´ï¡É¤È¤·¤Æ³ÍÆÀ¡£¤µ¤é¤Ë¡¢¤¢¤é¤æ¤ëÉð´ï¤ò¼«Âð¤Ç¾¦ÉʤȤ·¤ÆÊ¤٤é¤ì¤ë¤¿¤á¡¢½»¿Í¤òÇä¤Ã¤Æ¤ª¶â¤ËÊÑ´¹¤â¤Ç¤­¤Þ¤¹¡£¡Ö¤¦¤§»Ò¡×¤Ë½¦¤ï¤ì¤Æ¤·¤Þ¤Ã¤¿¤¬ºÇ¸å¡¢¤â¤Ï¤ä¤½¤³¤Ë¿Í³Ê¤Ïǧ¤á¤é¤ì¤º¡¢¡ÈÉð´ï¡É¤È¤¤¤¦µ­¹æ¤È¤·¤Æ°·¤ï¤ì¤ë¤Î¤ß¤Ç¤¹¡£












¡¡¤Ê¤ª¡¢¤´¶á½ê¤µ¤ó¤Ï°ìÅÙÄ®¤Ë½ÐÆþ¤ê¤¹¤ì¤ÐÉü³è¤·¤Þ¤¹¤·¡¢²È¤ä²È¶ñ¤Ê¤É¤ÏÂѵ×ÅÙ¤¬0¤Ë¤Ê¤Ã¤Æ²õ¤ì¤ë¤È¸µ¤Î¾ì½ê¤ËÉü³è¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢ÆÃ¤Ëµ¤¤Ë¤¹¤ëɬÍפ⤢¤ê¤Þ¤»¤ó¡£¹¥¤­ÊüÂêÄ®¤ò¹Ó¤é¤·²ó¤ê¤Þ¤·¤ç¤¦¡£¤¿¤À¡¢¾¦ÉʤȤ·¤ÆÇä¤ì¤¿¿Í¤Ï¾Ã¤¨¤¿¤Þ¤Þµ¢¤Ã¤Æ¤¯¤ëÍͻҤ¬¤¢¤ê¤Þ¤»¤ó¡£´°Á´¾ÃÌǤ·¤¿¡Ä¡Ä¡©

¡¡¤Þ¤¿¡¢½¦¤¨¤ëÉð´ï¤ÎÀ­Ç½¤âÌÌÇò¤¯¡¢¡Ö¥¬¥¹¥³¥ó¥í¡×¤Ê¤éʪÍý¥À¥á¡¼¥¸¡ÜÁ°Êý¤Ë±ê¤ÎÄɲù¶·âȽÄ꤬ȯÀ¸¤·¤¿¤ê¡¢¡Ö¤·¤«¤Ð¤Í¡×¤Ï5¡ó¤Î¨»à¸ú²Ì¤¬¤¢¤Ã¤¿¤ê¤È¡¢¤½¤ì¤¾¤ìÆâÍÆ¤Ë±è¤Ã¤¿¸ú²Ì¤¬ÉÕÍ¿¤µ¤ì¤Æ¤¤¤Þ¤¹¡£·õ¤äÉà¤È¤¤¤Ã¤¿ÉáÄ̤ÎÉð´ï¤â¸ºß¤·¤Þ¤¹¤¬¡¢¾¯¤Ê¤¯¤È¤â½øÈפϤ½¤ÎÊդΥª¥Ö¥¸¥§¤Ç²¥¤ë¤Û¤¦¤¬¸úΨŪ¤Ê¤â¤è¤¦¡£

RPG¥¢¥Ä¥Þ¡¼¥ë Éð´ï½¸¤á

¥¿¥Ã¥×¤Ç³ÈÂç

¡ÈÉð´ï¡É¤ÏÆâÍÆ¤Ë¨¤·¤¿ÆÃ¼ìǽÎϤ¬ÉÕÍ¿¤µ¤ì¤Æ¤¤¤Þ¤¹


¡¡¤¿¤À¤·¡¢½øÈפ«¤é¤³¤¦¤¤¤Ã¤¿¶¯ÎϤÊÉð´ï¤¬¼ê¤ËÆþ¤ë¤À¤±¤Ë¡¢Å¨¤âºÇ½é¤«¤é¶¯¤á¡£ÌýÃǤ·¤Æ¤¤¤ë¤È¡¢½øÈפǤ⥵¥¯¥µ¥¯»à¤Ë¤Þ¤¹¡£¤³¤Þ¤á¤Ê¥»¡¼¥Ö¤ò¿´¤¬¤±¤Þ¤·¤ç¤¦¡£

¡¡¤Ê¤ª¡¢¸½ºßTwitter¤Ç¤Ï¡¢¡Ö³¤¡×¤òÉð´ï¤È¤·¤Æ½¦¤¦¥·¡¼¥ó¤¬Â礭¤ÊÏÃÂê¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£É®¼Ô¤Ï¤Þ¤À¤½¤³¤Þ¤Ç¿Ê¤á¤Æ¤¤¤Þ¤»¤ó¤¬¡¢¿Ê¤à¤Û¤É¿®¤¸¤é¤ì¤Ê¤¤¤â¤Î¤¬½¦¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¯¤â¤è¤¦¡£


¡¡¤Ê¤ó¤Ç¤â¤¢¤ê¤Ê¥«¥ª¥¹¤Ö¤ê¡Ü¥í¡¼¥°¥é¥¤¥¯¤¬¹ç¤ï¤µ¤Ã¤¿¤³¤Î²øºî¡¢µ×¡¹¤Ë¡Ö¤¹¤´¤¤¥²¡¼¥à¤¬½Ð¤Æ¤­¤¿¤Ê¤¢¡×¤È»×¤ï¤»¤Æ¤¯¤ì¤Þ¤¹¡£¼ÂºÝ¤Ê¤«¤Ê¤«ÌÌÇò¤¤¤Î¤Ç¡¢°ìÅ٥ץ쥤¤·¤Æ¤ß¤Æ¤Û¤·¤¤°ìºî¤Ç¤·¤¿¡£


































Á°¤Îµ­»ö

¡Ö¤â¤¦20ǯÁ᤯ÃΤꤿ¤«¤Ã¤¿¡×¡¡´Êñ¤Ë¤Ç¤­¤ë¥Ô¡¼¥Þ¥ó¤Î¼ï¤Î¤È¤êÊý¤¬ÊØÍø¤À¤ÈÏÃÂê¤Ë

¼¡¤Îµ­»ö

¥¹¥Ñ¥¤¥é¥ë¥Î¡¼¥È¡Ö»È¤¤¤Ë¤¯¤¤¡×¤·¤º¤¯·¿¤Î¤ª¤¿¤Þ¡Ö¥à¥ê¥²¡¼¡×¡¡º¸Íø¤­¡È¤¢¤ë¤¢¤ë¡ÉÉÁ¤¤¤¿¥¤¥é¥¹¥È¤Ë¶¦´¶½¸¤Þ¤ë










Copyright © ITmedia, Inc. All Rights Reserved.