ēœŸé¢ē›®ćŖ惖惭悰ćÆć“ć£ć” šŸ‘‰ blog.s64.jp

å¤§ę™¦ę—„ć“ćØć—č²·ć£ć¦č‰Æć‹ć£ćŸćƒ¢ćƒŽć¾ćØ悁2018

2018å¹“ć‚‚ä»Šę—„ć§ēµ‚ć‚ć‚‹ć®ć§ć€ä»Šå¹“č²·ć£ć¦č‰Æć‹ć£ćŸćƒ¢ćƒŽć®ć¾ćØ悁怂
ć„ć¤č²·ć£ćŸć‹ć‚ˆćč¦šćˆć¦ćŖ恄悂恮ćÆę•°å¹“å‰ć ć‚ć†ćŒćŖć‚“ć§ć‚‚ä»Šå¹“č²·ć£ćŸć“ćØć«ć—ć¾ć™ć€‚

Philips Hue

ć‚¹ćƒžćƒ¼ćƒˆćƒ•ć‚©ćƒ³ć‚„éŸ³å£°ć‚¢ć‚·ć‚¹ć‚æćƒ³ćƒˆć€ć•ć‚‰ć«IFTTTćŖć‚“ć‹ć‹ć‚‰ć‚‚ć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ«ć§ćć‚‹é›»ēƒć€‚
č‰²ć‚“ćŖč‰²ć‚’å†ē¾ć§ćć‚‹č£½å“ć€ćØć„ć†ć‚¤ćƒ”ćƒ¼ć‚øćŒå¼·ć„ćŒć€ćƒ›ćƒÆć‚¤ćƒˆć‚°ćƒ©ćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ćØć„ć†ć®ć‚‚ć‚ć£ć¦ ć‚³ć‚¤ćƒ„ćŖ悉ꗄåøøēš„恫ä½æ恄恝恆ćŖč‰²å‘³ć ć‘ć«ćŖć‚‹ä»£ć‚ć‚Šå®‰ć„ć€‚å®Ÿéš›ä½æć£ć¦ć‚‹ć®ć‚‚ć“ć®ćć‚‰ć„ćŖć®ć§ååˆ†ć€‚

ä½æć£ć¦ć„ć‚‹ć®ćÆ态ćƒŖćƒ“ćƒ³ć‚°, ęµ“å®¤, ę“—é¢ę‰€ć€‚
恄恔恊恆ćƒŖćƒ“ćƒ³ć‚°ē”Ø恫ćÆć‚¹ć‚æćƒ³ćƒ€ćƒ¼ćƒ‰ćŖę–¹ć‚’ä½æć£ć¦ć„ć‚‹ć€‚ć‚²ćƒ¼ćƒ ć‚„å‹•ē”», éŸ³ę„½ć«ć‚ć‚ć›ć¦č‡Ŗå‹•ć§č‰²ć‚’å¤‰ćˆćŸć‚Šć§ćć‚‹ć®ć§é¢ē™½ć„怂

Philips Hue(ćƒ’ćƒ„ćƒ¼) ć‚·ćƒ³ć‚°ćƒ«ćƒ©ćƒ³ćƒ—v3 ć‚¹ćƒžćƒ¼ćƒˆLEDćƒ©ć‚¤ćƒˆ 怐Amazon Echo态Google Home态Apple HomeKit态LINEåƾåæœć€‘

Philips Hue(ćƒ’ćƒ„ćƒ¼) ć‚·ćƒ³ć‚°ćƒ«ćƒ©ćƒ³ćƒ—v3 ć‚¹ćƒžćƒ¼ćƒˆLEDćƒ©ć‚¤ćƒˆ 怐Amazon Echo态Google Home态Apple HomeKit态LINEåƾåæœć€‘

ęœčµ·åŗŠę™‚ć«å¾ć€…ć«ē…§ę˜Žć‚’ę˜Žć‚‹ćć§ćć‚‹ćØ恋态Ꙃ間åøÆć«ć‚ˆć£ć¦č‰²å‘³ć‚’å¤‰ćˆć¦ē›®ć®ē–²ć‚Œć‚’ęŠ‘ćˆć‚‹ćØ恋恌ä¾æåˆ©ć€‚
ć¾ćŸę“—é¢ę‰€ć§ćƒ”ć‚¤ć‚Æ恙悋ꙂćÆ č‰²å‘³ć‚’ć‚³ćƒ­ć‚³ćƒ­å¤‰ćˆćŸć‚Šć—ć¦č©¦ć›ć‚‹ć®ć§ć€ć‚ć”ć‚ƒćć”ć‚ƒé””ć‚’ä½œć‚Šć‚„ć™ććŖć£ćŸć€‚

ä½•ć‚ˆć‚Šć„ć”ć°ć‚“åŠ©ć‘ć‚‰ć‚Œć¦ć‚‹ć®ćÆć€ć‚„ć£ć±é›»ę°—ć®ę¶ˆć—åæ˜ć‚ŒćŒęø›ć£ćŸć“ćØ恋ćŖ...

åˆć‚ć¦čØ­ē½®ć™ć‚‹å “合ćÆ态Bridgeć®č³¼å…„ć‚’ćŠåæ˜ć‚ŒćŖ恏怂

Philips Hue(ćƒ’ćƒ„ćƒ¼) 惖ćƒŖ惃ć‚ø   929001180614

Philips Hue(ćƒ’ćƒ„ćƒ¼) 惖ćƒŖ惃ć‚ø 929001180614

恔ćŖćæć«ć‚¹ć‚æćƒ³ćƒ‰ćÆć‚³ćƒ¬ä½æć£ć¦ć¾ć™

ć‚¢ćƒƒćƒ‘ćƒ¼ćƒ•ćƒ­ć‚¢ć‚¹ć‚æćƒ³ćƒ‰ ćƒ–ćƒ©ćƒƒć‚Æ E26 YN10AW TF-YN10AW

ć‚¢ćƒƒćƒ‘ćƒ¼ćƒ•ćƒ­ć‚¢ć‚¹ć‚æćƒ³ćƒ‰ ćƒ–ćƒ©ćƒƒć‚Æ E26 YN10AW TF-YN10AW

Qrio Lock

ć‚¹ćƒžćƒ¼ćƒˆćƒ­ćƒƒć‚Æč£½å“ć€‚
ć„ć¤ć‚‚ć€Œéµć”ć‚ƒć‚“ćØē· ć‚ćŸć£ć‘ļ¼Ÿć€ćØ갗恫ćŖ悊ćÆ恘悁悋ćØäø€ę—„ć‚¹ćƒˆćƒ¬ć‚¹ē¶šćć§ć¤ć‚‰ć‹ć£ćŸć®ć ć‘恩态갗恫ćŖ悋ćŖć‚‰ć‚¢ćƒ—ćƒŖ開恑恰恄恄态ćØ恄恆ēŠ¶ę…‹ć«ćŖć£ćŸć®ćŒē²¾ē„žč”›ē”ŸäøŠćŸć„ćø悓č‰Æ恄怂
恂ćØćÆå®…é…ćƒœćƒƒć‚Æć‚¹ć®č·ē‰©ć‚’å‡ŗć—ć¦ććŸę™‚ć€ć‚«ć‚®å‡ŗ恙åæ…č¦ćŒćŖ恏ćŖć£ć¦ć‚¹ćƒ ćƒ¼ć‚ŗ恫ćŖć£ćŸć®ćØ恋怂

ć“ć®ę‰‹ć®ć‚¹ćƒžćƒ¼ćƒˆćƒ­ćƒƒć‚Æč£½å“ć®äø­ć§ć‚‚ē‰¹ć«ć‚¢ćƒ—ćƒŖ恮ć‚Æć‚ŖćƒŖćƒ†ć‚£ćŒé«˜ć„ć®ć‚‚ćƒć‚¤ćƒ³ćƒˆć€‚ä»–ć®ć‚ć‚‹č£½å“ćÆć”ć‚‡ć£ćØäøęŗ€ćŒć‚ć£ćŸć€‚

ć‚¦ćƒćÆ悈恏åø°å®…é›£ę°‘ć®å—ć‘å…„ć‚Œć‚’ć—ć¦ć„ć¦ć€ćć®ę™‚ć«åø°ć‚‹ć‚æć‚¤ćƒŸćƒ³ć‚°ćŒå…Øćé•ć£ć¦ć„ć¦ć‚‚ć€ŒćØć‚Šć‚ćˆćšåˆéµć®ęة限付äøŽć€ć§ęøˆć‚€ć‚ˆć†ć«ćŖć£ćŸć®ć‚‚ę„½ć€‚éµč‡Ŗä½“ć‚’ęø”恙恮ćÆē“›å¤±ę™‚ćŒę€–ć„ć‹ć‚‰ć­ć€‚

外å‡ŗå…ˆć‹ć‚‰ä½æć„ćŸć„å “åˆćÆ态Qrio Hubć®č³¼å…„ć‚’ćŠåæ˜ć‚ŒćŖ恏怂

Switch Bot

ć‚¹ćƒžćƒ¼ćƒˆćƒ•ć‚©ćƒ³ć‚„REST API恋悉ē‰©ē†ćƒœć‚æćƒ³ć‚’ä»£ć‚ć‚Šć«ęŠ¼ć—ć¦ćć‚Œć‚‹č£½å“ć€‚
前čæ°ć®ć€Œåø°ć£ć¦ćć‚‹ć‚æć‚¤ćƒŸćƒ³ć‚°ćŒć‚ć‹ć‚‰ćŖ恄怍ćØć„ć†å•é”ŒćŒć‚ć£ćŸę™‚ć€ć“ć“ć«ćƒŖć‚Æć‚Øć‚¹ćƒˆć‚’ęŠ•ć’ć¦ć‚‚ć‚‰ć£ć¦ć‚Ŗćƒ¼ćƒˆćƒ­ćƒƒć‚Æć‚’č§£éŒ ć—ć¦ć„ć‚‹ć€‚

外å‡ŗå…ˆć‹ć‚‰ä½æć„ćŸć„å “åˆćÆ态Switch Linkć®č³¼å…„ć‚’ćŠåæ˜ć‚ŒćŖ恏怂

Slack Standard

個äŗŗ恧ä½æć£ć¦ć‚‹Slackć®ćƒ—ćƒ©ćƒ³ć‚’StandardćøäøŠć’ć¾ć—ćŸć€‚
ćƒ•ć‚£ćƒ¼ćƒ‰ć®č³¼čŖ­ć ć£ćŸć‚Šå„ēخ通ēŸ„恧ä½æć£ć¦ć„ćŸć®ć ć‘ć©ć€ć“ć‚ŒćŒå¤ć„ć‚‚ć®ć¾ć§é”ć‚Œć‚‹ć‚ˆć†ć«ćŖć£ćŸć€‚

ä½•ć‚ˆć‚Šč‰Æć‹ć£ćŸć®ćÆć€ć‚·ćƒ³ć‚°ćƒ«ćƒćƒ£ćƒćƒ«ć‚²ć‚¹ćƒˆćŒä½æćˆć‚‹ć‚ˆć†ć«ćŖć£ćŸć“ćØć€‚å‰čæ°ć®åø°å®…é›£ę°‘å—ć‘å…„悌ꙂćŖć‚“ć‹ć«ć€å„ēØ®å®¶é›»ć®ć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ«ć‚’Slackć‚³ćƒžćƒ³ćƒ‰ēµŒē”±ćø集ē“„ć—ć¦ćŠććØę„½ćƒćƒ³ć€‚ć‚¢ćƒ—ćƒŖ恔ćØ恮ęة限ē®”ē†ćŒäøč¦ć«ćŖ悋恗态Audit Logć®ć‚ˆć†ć«čŖ°ćŒä½•ć‚’ć‚„ć£ćŸć‹å¾Œć‹ć‚‰ć§ć‚‚ē¢ŗčŖć§ćć‚‹ć€‚

Zapier Starter Plan

IFTTTć®ä»£ę›æćØ恗恦态Zapier悒Starter PlanćøäøŠć’ć¾ć—ćŸć€‚
ć‚ˆć‚Šé«˜åŗ¦ćŖć‚æć‚¹ć‚Æć‚’ć‚³ćƒ¼ćƒ‰äøč¦ć§ä½œć‚Œć‚‹ć®ć§ć€ćØć‚Šć‚ćˆćšć‚µć‚Æ惃ćØä½•ć‹å®Ÿē¾ć™ć‚‹ćŸć‚ć«ćÆę‰‹ę”¾ć›ćŖ恄怂

4Kćƒ¢ćƒ‹ć‚æ (ćƒ†ćƒ¬ćƒ“ć§ćÆćŖ恄)

å…ˆę—„ć®Amazonć‚µć‚¤ćƒćƒ¼ćƒžćƒ³ćƒ‡ćƒ¼ć‚»ćƒ¼ćƒ«ć§3äø‡å††å°ć§č²·ćˆć‚‹ć‚ˆć†ć«ćŖć£ć¦ć„ć¦ć€ę°—ēµ¶ć—ć¦čµ·ććŸć‚‰ä½•ę•…ć‹ę³Øꖇęøˆć ć£ćŸć€‚

å‰ęćØ恗恦ē‹¬ē«‹ć—ćŸćƒ†ćƒ¬ćƒ“ē”ØSTB (後čæ°) ć‚’ę—¢ć«ęŒć£ć¦ć„ć¦ć€ćƒćƒ„ćƒ¼ćƒŠäø€ä½“åž‹ć®ę¶²ę™¶ćƒ†ćƒ¬ćƒ“ćÆäøč¦ć ć£ćŸć€‚
4Kć‚³ćƒ³ćƒ†ćƒ³ćƒ„ć‚’é‘‘č³žć—ć¦ć‚‹ć‹ćØ恄恆ćØå…Øē„¶ćć‚“ćŖ恓ćØćÆćŖć„ć‘ć‚Œć©ć€ć™ć“ć—č·é›¢ć‚’å–ć£ć¦ę˜ åƒć‚’č¦‹ć‚‹éš›ć«ćÆć‚„ć£ć±ć‚ć‚‹ē؋åŗ¦ćƒ‡ć‚«ć‚¤ćƒ¢ćƒ‹ć‚æ恘悃ćŖ恄ćØę–‡å­—ćØć‹č¦‹ć„ć‚‰ć‹ć£ćŸć€‚ć ć„ć¶ć‚¹ćƒˆćƒ¬ć‚¹ęø›ć‚Šć¾ć—ćŸć€‚

Android TVę­č¼‰STB

ćƒćƒ„ćƒ¼ćƒŠå†…č”µćŖć®ć§ć€ćƒćƒ„ćƒ¼ćƒŠäø€ä½“åž‹ć®ę¶²ę™¶ćƒ†ćƒ¬ćƒ“ćØ恋恌恄悉ćŖć„ć€‚ä»ŠęŒć£ć¦ć‚‹PCē”Øćƒ¢ćƒ‹ć‚æćŒćć®ć¾ć¾ęµē”Ø恧恍悋怂
4Kå‡ŗåŠ›ć‚„BS/CS恮4Kę”¾é€ć«ć‚‚åƾåæœć—恦恄悋ļ¼ˆę“»ē”ØćÆ恗恦ćŖ恄ļ¼‰ć€‚ć¤ć„ć“ć®ć‚ć„ć ć®ć‚¢ćƒƒćƒ—ćƒ‡ćƒ¼ćƒˆć§éŒ²ē”»ć‚‚åÆčƒ½ć«ćŖć£ćŸć€‚

Android TVćØ恄恆ꀧč³ŖäøŠćć“ćć“hackablećŖć®ćŒćƒć‚¤ćƒ³ćƒˆć€‚č‡Ŗå‰ć§ć‚¢ćƒ—ćƒŖä½œć£ć¦é£Ÿć‚ć›ć‚‰ć‚Œć‚‹ć€‚
ć¾ćŸć‚¤ćƒ³ć‚æćƒ¼ćƒćƒƒćƒˆäøŠć®ć‚³ćƒ³ćƒ†ćƒ³ćƒ„ć‚’é‘‘č³žć™ć‚‹ę™‚ć«ć‚ć–ć‚ć–ćƒ¢ćƒ‹ć‚æć®å…„åŠ›åˆ‡ę›æ悒恛恚ćØć‚‚ć€ć‚·ćƒ¼ćƒ ćƒ¬ć‚¹ć«å¤‰ćˆć‚‰ć‚Œć‚‹ć®ćŒćØ恦悂č‰Æć„ć€‚ę“ä½œć®å­¦ēæ’ć‚³ć‚¹ćƒˆćŒäø‹ćŒć£ćŸć‚Šć€ę©Ÿå™Øē®”ē†ć®ę‰‹é–“ćŒęø›ć£ćŸć€‚

é›»ę°—ć‚±ćƒˆćƒ«

ć²ćØ悊ꚮ悉恗ćŖć®ć§é›»ę°—ćƒćƒƒćƒˆć ćØé‡ćŒå¤šćć¦ä½æć„åˆ‡ć‚ŒćŖć‹ć£ćŸć‚Šć€ēŒ«čˆŒć®č‡Ŗåˆ†ć§ćÆę²øéØ°ē›“å¾Œć ćØć‚ć¤ćć¦ä½æ恈ćŖć‹ć£ćŸć‚Šć€‚
é›»ę°—ć‚±ćƒˆćƒ«ć‚’ä½æć„å§‹ć‚ć¦ć€åæ…要ćŖꙂ恫åæ…要ćŖ量恠恑åæ…要ćŖęø©åŗ¦ć§ćŠę¹ÆćŒä½œć‚Œć‚‹ć‚ˆć†ć«ćŖć£ćŸć€‚ä½•ć‚ˆć‚Šę—©ć„ć€‚

恊ꎃ除悂恋ćŖć‚Šćƒ©ć‚ÆćŖ恮恧态åæ…č¦ååˆ†ćŖ悂恮悒ä½æ恆恮ćÆ大äŗ‹ć€‚

ćƒćƒ§ć‚³ćƒ©BB

ę˜Žć‚‰ć‹ć«čŖæå­ćŒč‰Æ恄怂

ć‚Øćƒ¼ć‚¶ć‚¤ ćƒćƒ§ć‚³ćƒ©BB ćƒć‚¤ćƒ‘ćƒ¼ 50mlƗ3ęœ¬ (åŒ»č–¬éƒØ外品)

ć‚Øćƒ¼ć‚¶ć‚¤ ćƒćƒ§ć‚³ćƒ©BB ćƒć‚¤ćƒ‘ćƒ¼ 50mlƗ3ęœ¬ (åŒ»č–¬éƒØ外品)

ESP32ē³»é–‹ē™ŗćƒœćƒ¼ćƒ‰

č‰Æ恄ꚇ恤恶恗恫ćŖć‚‹ć—ć€å‹‰å¼·ć«ć‚‚ćŖć‚‹ć—ć€ć”ć‚‡ć£ćØć—ćŸå®¶åŗ­ē”Ø恮č‡Ŗå‹•åŒ–ćƒ„ćƒ¼ćƒ«ć«ć‚‚ä¾æåˆ©ć€‚č¶£å‘³ćŖć‚‰å®‰ć„ć‚³ćƒ”ćƒ¼å“ć§ååˆ†ć€‚

ćƒ­ćƒ³ć‚°ē”Øć‚¦ć‚£ćƒƒć‚°ć‚¹ć‚æćƒ³ćƒ‰

ć„ć¾ć¾ć§é€šåøø悵悤ć‚ŗć®ć‚¦ć‚£ćƒƒć‚°ć‚¹ć‚æćƒ³ćƒ‰ć‚’ä½æć£ć¦ć„ć¦ć€ęÆ›å…ˆćŒåŗŠć«ē€ć„ć”ć‚ƒć†å•é”Œć§ę‚©ć‚“ć§ć„ćŸć€‚ć‚‚ć£ćØę—©ćč²·ćˆć°ć‚ˆć‹ć£ćŸć€‚

Qrio Smart Tag

MAMORIOć‚‚ć„ć„ć‚“ć ć‘ć©ć€ć“ć£ć”ć®ę–¹ćŒå¤šę©Ÿčƒ½ć§ē¢ŗå®Ÿć«é€šēŸ„ć‚’é€ć£ć¦ćć‚Œć¦ć„ć‚‹å°č±”ć€‚

VLANåƾåæœć‚¹ć‚¤ćƒƒćƒćƒ³ć‚°ćƒćƒ–

仕äŗ‹ć§ē“å“ć—ćŸć®ćæ恠恑恩怂ē”¬č³ŖꄟćØ恄恄重量ꄟćØć„ć„ć€å¤§å¤‰ē“ ę™“悉恗恄怂

ćƒć‚±ćƒƒćƒˆćƒ¢ćƒ³ć‚¹ć‚æćƒ¼ Let's Go! ć‚¤ćƒ¼ćƒ–ć‚¤

ć‚¤ćƒ¼ćƒ–ć‚¤ćŒć‹ć‚ć„ć„ć®ć§ć€‚

ćƒć‚±ćƒƒćƒˆćƒ¢ćƒ³ć‚¹ć‚æćƒ¼ Let's Go! ć‚¤ćƒ¼ćƒ–ć‚¤- Switch

ćƒć‚±ćƒƒćƒˆćƒ¢ćƒ³ć‚¹ć‚æćƒ¼ Let's Go! ć‚¤ćƒ¼ćƒ–ć‚¤- Switch

配äæ”恮ꙂćÆ AVerMedia恏悓 ć¤ć‹ć£ć¦ć¾ć™ć€‚

Switchē”ØProć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ©

Joy-Conć®ć‚¹ćƒˆćƒ¬ć‚¹ć‹ć‚‰é–‹ę”¾ć•ć‚ŒćŸć€‚

Nintendo Switch Proć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ©ćƒ¼

Nintendo Switch Proć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ©ćƒ¼

ē·č©•

ć¾ć‚ć¾ć‚ēµŒęøˆå›žć—ćŸć€‚

ä»Šć™ćć‚·ćƒ„ćƒƒćØć‚°ćƒ­ćƒ¼ćƒćƒ«IPć‚’å–ć‚‹snippet in Kotlin + Android

雑恠恑恩态ē¤¾å†…ē”Øć®ćƒ‡ćƒćƒƒć‚°ć‚¢ćƒ—ćƒŖ (ē”»é¢) ćŖ悉恓悓ćŖ悂悓恧恄恄ćØę€ć„ć¾ć™

findViewById<TextView>(R.id.your_ip_text_view).apply {
    Thread {
        URL("https://api.ipify.org")
                .openConnection()
                .apply { connect() }
                .getInputStream()
                .bufferedReader()
                .use { it.readText() }
                .let {
                    runOnUiThread {
                        text = it
                    }
                }
    }.start()
}

恄悍悓ćŖ `java -version` č”Øē¤ŗ

åæ…要恫ćŖć£ćŸć‚“ć ć‘ć©ć€ć„ć‚ć„ć‚ć‚ć‚Šć™ćŽć¦å›°ć£ćŸć®ć§ćƒ”ćƒ¢ć€‚ć”ćŖćæ恫Dockerå†…ć§ć‚„ć£ćŸć€‚

TL;DR

  • semver恘悃ćŖ恄恮ćÆåøø識
  • å®Ÿč”Œę–¹ę³•ę¬”ē¬¬ć§ćÆåæ…恚恗悂3č”Œć§ćÆćŖ恄
  • ćƒćƒ¼ć‚øćƒ§ćƒ³č”ØčؘćÆ3ć‚»ć‚°ćƒ”ćƒ³ćƒˆćØ悂限悉恚态4ć‚»ć‚°ć ć£ćŸć‚Š1ć‚»ć‚°ć ć£ćŸć‚Šć‚‚ć™ć‚‹
  • underscorećŒå…„ć£ćŸć‚ŠhyphenćŒå…„ć£ćŸć‚Šć„ć‚ć„ć‚ć‚ć‚‹
  • ćƒćƒ¼ć‚øćƒ§ćƒ³č”ØčØ˜ć®quotesć‚ˆć‚Šå¾Œć«ę—„ä»˜ćŒå…„ć‚‹ćƒ‘ć‚æćƒ¼ćƒ³ć‚‚ć‚ć‚‹

OpenJDK

6

java version "1.6.0_38"
OpenJDK Runtime Environment (IcedTea6 1.13.10) (6b38-1.13.10-1~deb7u1)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

7

java version "1.7.0_181"
OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-1~deb8u1)
OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)

8

openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

9

openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+12-Debian-4)
OpenJDK 64-Bit Server VM (build 9.0.4+12-Debian-4, mixed mode)

10

openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Debian-2)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Debian-2, mixed mode)

11

openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment (build 11.0.1+13-Debian-2)
OpenJDK 64-Bit Server VM (build 11.0.1+13-Debian-2, mixed mode, sharing)

12

openjdk version "12-ea" 2019-03-19
OpenJDK Runtime Environment (build 12-ea+19)
OpenJDK 64-Bit Server VM (build 12-ea+19, mixed mode, sharing)

Oracle JDK

7

java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

8

java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

9

java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

10

java version "10.0.1" 2018-04-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

AdoptOpenJDK

8

Picked up JAVA_TOOL_OPTIONS: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_192-b12)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.192-b12, mixed mode)

9

Picked up JAVA_TOOL_OPTIONS: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

10

Picked up JAVA_TOOL_OPTIONS: -XX:+UseContainerSupport
openjdk version "10.0.2-adoptopenjdk" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2-adoptopenjdk+13)
OpenJDK 64-Bit Server VM (build 10.0.2-adoptopenjdk+13, mixed mode)

11

Picked up JAVA_TOOL_OPTIONS: -XX:+UseContainerSupport
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.1+13, mixed mode)

Zulu

6

openjdk version "1.6.0-119"
OpenJDK Runtime Environment (Zulu 6.22.0.3-linux64) (build 1.6.0-119-b119)
OpenJDK 64-Bit Server VM (Zulu 6.22.0.3-linux64) (build 23.77-b119, mixed mode)

7

openjdk version "1.7.0_201"
OpenJDK Runtime Environment (Zulu 7.25.0.5-linux64) (build 1.7.0_201-b02)
OpenJDK 64-Bit Server VM (Zulu 7.25.0.5-linux64) (build 24.201-b02, mixed mode)

8

openjdk version "1.8.0_192"
OpenJDK Runtime Environment (Zulu 8.33.0.1-linux64) (build 1.8.0_192-b01)
OpenJDK 64-Bit Server VM (Zulu 8.33.0.1-linux64) (build 25.192-b01, mixed mode)

9

openjdk version "9.0.7.1"
OpenJDK Runtime Environment (Zulu build 9.0.7.1+1)
OpenJDK 64-Bit Server VM (Zulu build 9.0.7.1+1, mixed mode)

10

openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment Zulu10.3+5 (build 10.0.2+13)
OpenJDK 64-Bit Server VM Zulu10.3+5 (build 10.0.2+13, mixed mode)

11

openjdk version "11.0.1" 2018-10-16 LTS
OpenJDK Runtime Environment Zulu11.2+3 (build 11.0.1+13-LTS)
OpenJDK 64-Bit Server VM Zulu11.2+3 (build 11.0.1+13-LTS, mixed mode)

Amazon Corretto

8

openjdk version "1.8.0_192"
OpenJDK Runtime Environment (build 1.8.0_192-amazon-corretto-preview-b12)
OpenJDK 64-Bit Server VM (build 25.192-b12, mixed mode)

Android TVę­č¼‰ćƒćƒ„ćƒ¼ćƒŠå†…č”µSTB怌PIX-SMB400ć€ć®ćƒćƒžć‚Šć©ć“ć‚ćŖ恩

å¾…ć”ć«å¾…ć£ćŸćƒ”ć‚Æć‚»ćƒ©ć®Android TVę­č¼‰STB怌PIX-SMB400怍恌ē™ŗå£²ć•ć‚ŒćŸć€‚
ć“ć‚Œć®ē‰¹å¾“ćÆć€å›½å†…ć®Android TV恧ćÆēć—恏 地äøŠę³¢ / BS / CS ć®ćƒćƒ„ćƒ¼ćƒŠćƒ¼ćŒę­č¼‰ć•ć‚Œć¦ćŠć‚Šć€ć¾ćŸ4Kå‡ŗåŠ›ć‚„4Kę”¾é€ć«ć‚‚åƾåæœć—恦恄悋怂
å¾“ę„ć®Android TVć§ćƒćƒ„ćƒ¼ćƒŠćŒę­č¼‰ć•ć‚Œć¦ć„ć‚‹ć‚‚ć®ć®å¤šććÆę¶²ę™¶ćƒ†ćƒ¬ćƒ“ćØäø€ē·’恫ćŖć£ć¦ć„ćŸćŸć‚ć€ćƒ†ćƒ¬ćƒ“ć”ćØč²·ć„ę›æ恈恌åæ…č¦ć ć£ćŸäø­ć“ć‚ŒćÆå¬‰ć—ć„ć€‚

ć„ć‚ć„ć‚ćƒćƒžć‚Šć©ć“ć‚ć‚„ę³Øę„ć™ć¹ćć“ćØćŒć‚ć£ćŸć®ć§ć€ć“ć‚Œć‹ć‚‰č³¼å…„ć‚’ę¤œčØŽć•ć‚Œć‚‹ę–¹å‘ć‘ć«ćƒ”ćƒ¢ć€‚

ć‚¢ćƒ³ćƒ†ćƒŠć‚±ćƒ¼ćƒ–ćƒ«ćŒä»˜å±žć—ć¦ćŖ恄

ē®±ć®äø­ć«ć‚¢ćƒ³ćƒ†ćƒŠć‚±ćƒ¼ćƒ–ćƒ«ćŒå…„ć£ć¦ć„ćŖ恄怂恓悌ćÆćŠćć‚‰ćć€ć“ć®č£½å“ćŒć€Œę—¢å­˜ć®ćƒ†ćƒ¬ćƒ“ć‚’ē½®ćę›ćˆć‚‹ć€ćØ恄恆ē”Øé€”ć‚’ęƒ³å®šć—ć¦ć„ć‚‹ć‹ć‚‰ćØꀝ悏悌悋怂
悂恗ęœŖć ćƒ†ćƒ¬ćƒ“ć‚’åˆ©ē”Ø恗恟恓ćØ恌ćŖć„å “åˆć€äø€ē·’ć«ć‚¢ćƒ³ćƒ†ćƒŠć‚±ćƒ¼ćƒ–ćƒ«ć‚’č²·ć£ć¦ćŠćåæ…č¦ćŒć‚ć‚‹ć€‚

ē§ćÆ仄äø‹2ć¤ć‚’č²·ć£ć¦ēµ„ćæåˆć‚ć›ä½æć£ć¦ć„ć‚‹ć€‚

HORIC ć‚¢ćƒ³ćƒ†ćƒŠåˆ†ę³¢å™Ø BS/CS/åœ°ćƒ‡ć‚øåƾåæœ ē™½ć‚±ćƒ¼ćƒ–ćƒ«2ęœ¬ä»˜ć(S-4C-FB) 40cm BCUV-971

HORIC ć‚¢ćƒ³ćƒ†ćƒŠåˆ†ę³¢å™Ø BS/CS/åœ°ćƒ‡ć‚øåƾåæœ ē™½ć‚±ćƒ¼ćƒ–ćƒ«2ęœ¬ä»˜ć(S-4C-FB) 40cm BCUV-971

LANć‚±ćƒ¼ćƒ–ćƒ«ćŒä»˜å±žć—ć¦ć„ćŖ恄

同äøŠć€‚

ćƒŖćƒ¢ć‚³ćƒ³ćÆBluetoothꎄē¶š

恓悌ćÆAndroid TVå…Ø般恫čØ€ćˆć‚‹ć“ćØć ćŒć€čµ¤å¤–ē·šć§ćÆćŖ恄恮恧ę³Øꄏ怂Nature RemoćŖ恩恧ćƒŖćƒ¢ćƒ¼ćƒˆć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ«ćÆ恧恍ćŖ恄怂

電ęŗęŠ•å…„Ꙃ恫č‡Ŗå‹•ć§ćƒ†ćƒ¬ćƒ“ćŒē‚¹ć

äø€čˆ¬ēš„ćŖAndroid TVē«Æęœ«ćÆ電ęŗęŠ•å…„ꙂćÆLauncher恌č”Øē¤ŗć•ć‚Œć‚‹ćŒć€ć“ć®č£½å“ćÆ前回ē‚¹ć‘ć¦ć„ćŸćƒ†ćƒ¬ćƒ“ć®ćƒćƒ£ćƒ³ćƒćƒ«ćŒč‡Ŗå‹•ć§ē‚¹ćć€‚
ćŖćŠć€ć‚¹ćƒŖćƒ¼ćƒ—ć‹ć‚‰ć®å¾©åø°ę™‚ćÆ通åøøé€šć‚Šå‰å›žć®ć‚¢ćƒ—ćƒŖ / ē”»é¢ć€‚

ćƒ†ćƒ¬ćƒ“ć®č”Øē¤ŗ恌Live Channels恧ćÆćŖ恏ē‹¬č‡Ŗć‚¢ćƒ—ćƒŖ

恓悌ćÆå›½å†…ć®å¤šćć®Andorid TVćŒč©²å½“ć™ć‚‹ćŒć€ę”¾é€ć®č¦–č“ćÆLive Channels恋悉恧ćÆćŖćć€ę­č¼‰ć•ć‚Œć¦ć„ć‚‹ē‹¬č‡Ŗć‚¢ćƒ—ćƒŖć‹ć‚‰č”Œć†ć€‚

ćŠćć‚‰ćć“ć®ć‚¢ćƒ—ćƒŖćØć»ć¼åŒē­‰ć ćŒć€å¤–ä»˜ć‘ć§ćÆćŖćå†…č”µćƒćƒ„ćƒ¼ćƒŠē”Øć«ć‚«ć‚¹ć‚æ惞悤ć‚ŗć•ć‚Œć¦ć„ćŸć‚ŠćØćƒ‘ćƒƒć‚±ćƒ¼ć‚øč‡Ŗ体ćÆē•°ćŖ悋ęØ”ę§˜ļ¼Ÿ

ć‚¹ćƒžćƒ¼ćƒˆć‚¹ćƒ”ćƒ¼ć‚«ćƒ¼é€£ęŗ恮čح定動ē·šćŒäø€ę–¹ć®ćæä½æ恈ćŖ恄

å¤šåˆ†ć“ć‚ŒćÆē¾č”Œćƒ•ć‚”ćƒ¼ćƒ ć‚¦ć‚§ć‚¢ (Build OPR6.170623.013, Revision 4.4.1538216619) 恮äøå…·åˆć€‚

čح定 ā†’ 惇ć‚øć‚æćƒ«ę”¾é€ ā†’ ć‚«ć‚¹ć‚æ惠čح定 ā†’ ć‚¹ćƒžćƒ¼ćƒˆć‚¹ćƒ”ćƒ¼ć‚«ćƒ¼é€£ęŗ ć®å‹•ē·šć‹ć‚‰čØ­å®šć—ć‚ˆć†ćØ恙悋ćØ态途äø­ę°øé ć«ćƒ—ćƒ­ć‚°ćƒ¬ć‚¹ć«ćŖć£ć¦ć—ć¾ć„é€²ć¾ćŖ恄怂
TVć‚¢ćƒ—ćƒŖ ā†’ ćƒ”ćƒ‹ćƒ„ćƒ¼ ā†’ čح定 ā†’ ć‚«ć‚¹ć‚æ惠čح定 ā†’ ć‚¹ćƒžćƒ¼ćƒˆć‚¹ćƒ”ćƒ¼ć‚«ćƒ¼é€£ęŗ ć‹ć‚‰é€²ć‚ć‚‹ćØć€ę­£åøøć«ćƒ­ć‚°ć‚¤ćƒ³ē”»é¢ćŒč”Øē¤ŗ恕悌悋怂

外éƒØGoogle Assistant恋悉怌ē”»é¢ę¶ˆć—ć¦ć€ćŒć§ććŖ恄

ć¾ćšå‰ęēŸ„識ćØ恗恦态PIX-SMB400ćÆAndroid TVč£½å“ć§ćÆēć—ćć‚¹ćƒŖćƒ¼ćƒ—ļ¼ˆć‚±ćƒ¼ć‚æ悤恧čØ€ć†ćŖ悉ē”»é¢ćƒ­ćƒƒć‚Æļ¼‰ę©Ÿčƒ½ćŒć‚悋怂
恓悌ćÆ大変ä¾æåˆ©ć§ć€ćŸćØćˆć°å¤šćć®ćƒ¢ćƒ‹ć‚æ恫ćÆēœé›»åŠ›ę©Ÿčƒ½ćŒę­č¼‰ć•ć‚Œć¦ć„ć‚‹ćŸć‚ć€HDMI恋悉äæ”å·ćŒé€”åˆ‡ć‚ŒćŸę™‚ē‚¹ć§ćƒ¢ćƒ‹ć‚æ恮惐惃ć‚Æćƒ©ć‚¤ćƒˆćŒę¶ˆēÆ恗恟悊恙悋怂恙ćŖć‚ć”ć€PIX-SMB400å“ć‚’ć‚¹ćƒŖćƒ¼ćƒ—ć•ć›ć‚‹ć ć‘ć§ć‚ćŸć‹ć‚‚ćƒ¢ćƒ‹ć‚æč‡Ŗä½“ć®é›»ęŗćŒč½ć”ćŸć‹ć®ć‚ˆć†ćŖęŒ™å‹•ć‚’å®Ÿē¾ć™ć‚‹ć“ćØ恌恧恍悋怂

PIX-SMB400äøŠć®Google Assistant恫åÆ¾ć—ć€Œē”»é¢ę¶ˆć—ć¦ć€ćØčØ€ć†ćØ态ē”»é¢ć‚’ę¶ˆć™ļ¼ˆć‚¹ćƒŖćƒ¼ćƒ—ć•ć›ć‚‹ļ¼‰ć“ćØ恌恧恍悋怂
恌态Google Homeē­‰ć«åÆ¾ć—ć€Œ(čØ­å®šć—ćŸćƒ‡ćƒć‚¤ć‚¹å) 恮ē”»é¢ę¶ˆć—ć¦ć€ćŖ恩ćØčØ€ć£ć¦ć‚‚ē”»é¢ć‚’ę¶ˆć™ć“ćØćÆ恧恍ćŖ恄怂

恟恠恗态惔ć‚Æć‚»ćƒ©č£½ćƒ†ćƒ¬ćƒ“ć®ć‚¹ćƒžćƒ¼ćƒˆć‚¹ćƒ”ćƒ¼ć‚«ćƒ¼ć‚¢ćƒ—ćƒŖ悒ēµŒē”±ć—ć‚ˆć†ćØ怌惔ć‚Æć‚»ćƒ©ćƒ†ćƒ¬ćƒ“ć«ē¹‹ć„ć§ć€ć‹ć‚‰ć€Œćƒ†ćƒ¬ćƒ“ć‚’ę¶ˆć—ć¦ć€ćØć—ćŸå “åˆć€TVć‚¢ćƒ—ćƒŖ悒ēµ‚äŗ†ć•ć›ć‚‹ (= Launcher悒č”Øē¤ŗ恙悋) 恓ćØćÆ恧恍悋怂ē”»é¢ć‚’ć‚¹ćƒŖćƒ¼ćƒ—ć«ć•ć›ć‚‹ć“ćØćÆ恧恍ćŖ恄怂

Amazon Prime VideoćŒč¦³ć‚ŒćŖ恄

恓悌悂Android TVč£½å“å…Ø般恫čØ€ćˆć‚‹ć“ćØ恠恌态Amazon Prime Videoć‚¢ćƒ—ćƒŖćŒåˆ©ē”Ø恧恍ćŖ恄怂

ć¾ć‚Œć«ćƒŖćƒ¢ć‚³ćƒ³ćŒéŸ³å£°ć‚’čŖč­˜ć—ćŖ恏ćŖ悋

恓悌ćÆćƒŖćƒ¢ć‚³ćƒ³å“ć®é›»ę± ć‚’ęŠœć„ć¦å†åŗ¦å…„悌悋ćØ悈恄

外éƒØē«Æęœ«ć‹ć‚‰Castć‚’å—ć‘ä»˜ć‘ćŖ恏ćŖ悋

čØ­å®šćƒ”ćƒ‹ćƒ„ćƒ¼å†…ć®ć‚¹ćƒˆćƒ¬ćƒ¼ć‚øćØćƒŖć‚»ćƒƒćƒˆ ā†’ ćƒ‡ćƒ¼ć‚æć®åˆęœŸåŒ–ć‚’č”Œć£ćŸćŒč§£ę±ŗ恗ćŖć‹ć£ćŸć€‚
ćŒć€č©¦ć—ć«ęœ¬ä½“č£å“ć®åˆęœŸåŒ–ć‚¹ć‚¤ćƒƒćƒć‹ć‚‰ćƒŖć‚»ćƒƒćƒˆć‚’č©¦ćæ恟ćØ恓悍态äøŠę‰‹ćå‹•ä½œć™ć‚‹ć‚ˆć†ć«ćŖć£ćŸć€‚ćŖ悓恠悍恆怂

Google Assistant恋悉Castäø­ć«ć€ŒéŸ³é‡äøŠć’ć¦ć€ćØ恄恆ćØéŸ³é‡ćŒäø‹ćŒć‚‹

恓悌恌恋ćŖć‚Šč‡“å‘½ēš„ćŖäøå…·åˆć€‚Google Homeē­‰ć®ē«Æęœ«ć‹ć‚‰ć€Œćƒ†ćƒ¬ćƒ“ć§Spotify再ē”Ÿć—ć¦ć€ćŖ恩ćØä¼ćˆć¦Cast悒恗恦恄悋ćØćć€ć€ŒéŸ³é‡äøŠć’ć¦ć€ćØčØ€ć†ćØéŸ³é‡ćŒäø‹ćŒć£ć¦ć—ć¾ć†å•é”ŒćŒć‚ć‚‹ć€‚ćŖćŠć€éŸ³é‡äø‹ć’恦ćØ恄恆ćØę­£åøøć«éŸ³ćŒå°ć•ććŖ悋怂

å®šęœŸēš„ć«ę”¾é€ćŒę­¢ć¾ć‚‹

č§£ę±ŗę–¹ę³•ć‚’čŖæęŸ»äø­

ꉀꄟ

ćØć‚Šć‚ćˆćšč³¼å…„å¾Œ23Ꙃ間ēØ‹ć§ę°—ä»˜ć„ćŸē‚¹ć«ć¤ć„恦ę›ø恄恟怂å…Ø体ćØ恗恦ćÆęŗ€č¶³åŗ¦ć®é«˜ć„商品ćŖć®ć ćŒć€ć„ć‹ć‚“ć›ć‚“Fire TVć‚’ćƒ”ć‚¤ćƒ³ć§åˆ©ē”Øć—ćŸå¾Œć§ćÆć‚³ćƒ³ćƒ†ćƒ³ćƒ„ć«ä¹ć—ćę„Ÿć˜ć¦ć—ć¾ć†ć€‚
他ćŖć«ć‹ę°—ä»˜ć„ćŸē‚¹ćŒć‚ć‚Œć°čæ½ć£ć¦čؘäŗ‹ć‚’å‡ŗ恗恟恄怂

高ē”°é¦¬å “ć§ć‚³ć‚Ŗćƒ­ć‚®ć‚’é£Ÿć¹ćŸ

é€£ę—„ć®40åŗ¦ć«ć‚‚達恙悋恋ćØć„ć†ę°—å€™ć®äø­ć§ćÆ态今ꗄćÆćšć„ć¶ć‚“ę¶¼ć—ć„ć€‚
都åŗć‚’é–“čæ‘恧ēœŗ悁悋恮ćÆåˆć‚ć¦ć§ć€č©¦ć—ć«å†™ēœŸć‚’ę’®ć£ć¦ćæćŸć‚‚ć®ć®ć€ć©ć†ć‚‚ć“ć®ę›‡ć‚Šē©ŗ恧ćÆć†ć™ć¼ć‚“ć‚„ć‚ŠćØć—ćŸå°č±”ć«ćŖć£ć¦ć—ć¾ć„ć€ēµå±€Twitterć§ć‚·ć‚§ć‚¢ć™ć‚‹ć“ćØ悂ćŖć‹ć£ćŸć€‚

å…ˆé€±ć€é«˜ę ”ę™‚ä»£ć‹ć‚‰ć®å‹äŗŗć‚ˆć‚Šä¹…ć€…ć«é€£ēµ”ćŒć‚ć£ćŸć€‚å½¼å„³ćŒé€£ēµ”悒åÆ„č¶Šć™ę™‚ćÆć€å¤§ę¦‚ćƒ‘ćƒ¼ćƒˆćƒŠćƒ¼ćØå–§å˜©ć—ćŸć ćØ恋恝恆恄恆Ꙃ恠怂
飲ćæć«č”Œć“ć†ćØć€å½¼å„³ćŒęę”ˆć—ćŸć®ćÆćƒŸćƒ£ćƒ³ćƒžćƒ¼ę–™ē†å°‚é–€åŗ—ć ć£ćŸć€‚

ćƒŸćƒ£ćƒ³ćƒžćƒ¼ę–™ē†ć«ćÆé¦“ęŸ“ćæ恌ē„”恄怂恩悓ćŖꖙē†ć‹ęƒ³åƒćŒä»˜ć‹ćŖć„ć€‚ćć—ć¦ć©ć†ć‚‚ćć®åŗ—ćÆę˜†č™«ę–™ē†ć‚’å‡ŗ恙悉恗恄怂
虫ćÆå¤§ć®č‹¦ę‰‹ćŖć®ć ćŒć€ä½•åŗ¦ć‹ćŸć‚ć‚‰ć„ć®ćƒ”ćƒƒć‚»ćƒ¼ć‚øć‚’ć‚„ć‚Šå–ć‚Šć—ćŸå¾Œć€čˆˆå‘³ć®ć»ć†ćŒå‹ć£ćŸē§ćÆę‰æč«¾ć—ćŸć€‚

å¾…ć”åˆć‚ć›ćÆå¤œć€‚ēæŒęœˆć«č¬›åø«ć®ę”ˆä»¶ćŒčæ«ć£ć¦ć„ćŸć®ć§ć€ę—„äø­ć«å–引先ćØć®ę‰“ć”åˆć‚ć›ć‚’å…„ć‚Œć‚‹ć€‚ćŖć‚“ć§ć‚‚å…ˆę–¹ćŒęŗ–å‚™ć™ć‚‹ćÆćšć ć£ćŸč³‡ę–™ćŒäøŠćŒć£ć¦ć„ćŖć„ć‚‰ć—ćć€å½“ę—„ć¾ć§ć«ęŗ–å‚™ć§ććŖ恄恋ćØ恄恆ē›øč«‡ć ć£ćŸć€‚ć¾ć‚ć€ć“ć‚ŒćŒē„”ć‘ć‚Œć°č¬›ē¾©ć‚‚ć¾ć¾ćŖ悉ćŖ恄恗态ē‰¹ę€„ꖙ金恧ē™ŗę³Ø頂恑悋恮ćŖ悉怂


18Ꙃ怂遅悌悋ćØčØ€ć„ć¤ć¤ę™‚é–“äøåŗ¦ć«ć‚„ć£ć¦ććŸå½¼å„³ćÆć€ęœ€å¾Œć«ä¼šć£ćŸę™‚ć‹ć‚‰ęÆ”ć¹ć¦ćšć„ć¶ć‚“ćØć»ć£ćć‚Šć—ć¦ć„ćŸć€‚ć‚·ćƒ§ćƒ¼ćƒˆć‚«ćƒƒćƒˆć€ćƒŽćƒ¼ć‚¹ćƒŖćƒ¼ćƒ–ć€č–„å”—ć‚Šć®ćƒ•ć‚”ćƒ³ćƒ‡ćƒ¼ć‚·ćƒ§ćƒ³ć€‚ć„ć¤ć®é–“ć«ć‹å¤§äŗŗć³ćŸå½¼å„³ć«åÆ¾ć—ć€é‡‘ć ć‘ę‰•ć£ć¦ć‚ø惠ćøć‚‚é€šć£ć¦ć„ćŖć„å°å¤Ŗ悊恮č‡Ŗåˆ†ćŒé€£ć‚Œē«‹ć£ć¦ę­©ćę§˜å­ćÆ껑ēØ½ć ć£ćŸć ć‚ć†ć€‚

高ē”°é¦¬å “駅恋悉恻恩čæ‘ć„ć€ćƒŽćƒ³ć‚°ć‚¤ćƒ³ćƒ¬ć‚¤ćØ恄恆åŗ—ć€‚ć„ć¤ć‚‚č¦‹ćˆć‚‹ćƒ“ćƒ«ć®1階恫态恓悓ćŖåŗ—ćŒć‚ć‚‹ćØćÆ怂

åŗ—ć«å…„悋ćØ态ē™½é«Ŗć®ćŠć˜ć„ć•ć‚“ćŒå®¢åø­ć«åŗ§ć£ć¦ä½•ć‹ä½œę„­ć‚’ć—ć¦ć„ć‚‹ć€‚å„³ę€§ć‚¹ć‚æćƒƒćƒ•ćŒćŸć©ćŸć©ć—ć„ę—„ęœ¬čŖžć§äŗŗꕰ悒聞恏怂
2äŗŗćØē­”ćˆć‚‹ćØć€å„„ć‹ć‚‰å‡ŗć¦ććŸć‚¹ć‚æćƒƒćƒ•ć‚„ę‰‹å‰ć®ćŠć˜ć„ć•ć‚“ćŒēŸ¢ē¶™ćŽę—©ć«å„„恮åø­ćøćØčØ€ć†ć€‚å¾Œć«čŖæć¹ćŸćØć“ć‚ć€ć“ć®ćŠć˜ć„ć•ć‚“ćÆć‚Ŗćƒ¼ćƒŠćƒ¼ćŖ恮恠ćØ恄恆怂

恏恙悓恠ē·‘č‰²ć®å†…č£…ć«ć€å£éš›ć«ćƒ†ćƒ¼ćƒ–ćƒ«ćŒē½®ć„恦恂悋怂äø‹ē”ŗć®å°ć•ćŖ食堂ćØć„ć£ćŸćØ恓悍恠怂
åŗ—恮äø­å¤®ćŒå£ć§é®ć‚‰ć‚Œć¦ć„ć‚‹ćŒć€ć‚«ć‚¦ćƒ³ć‚æćƒ¼ć‚­ćƒƒćƒćƒ³ć§ć‚‚ć‚ć£ćŸć®ć ć‚ć†ć‹ć€‚


恊ē›®å½“ć¦ć®ę˜†č™«ę–™ē†ćÆćƒ”ćƒ‹ćƒ„ćƒ¼ć®å¾ŒåŠć«ć‚ć£ćŸć€‚ć‚Øć‚­ć‚¾ćƒćƒƒć‚Æć‚¾ćƒ¼ćƒ³ćØ銘ꉓ恟悌恟ꖙē†ćŸć”ćÆć€å½“ē„¶ćŖćŒć‚‰č¦‹ę…£ć‚ŒćŖć„ć‚‚ć®ćŸć”ć€‚
写ēœŸć®ćØćŠć‚Šć€å°ć•ć‚ć«ęŽ²č¼‰ć•ć‚Œć¦ć„ć‚‹ćŸć‚ćƒ‡ć‚£ćƒ†ćƒ¼ćƒ«ć¾ć§ćÆ悏恋悉ćŖć„ćŒć€ćć‚Œć§ć‚‚ååˆ†ć«ć‚¤ćƒ³ćƒ‘ć‚Æ惈恌恂悋怂

"ć„ć”ć°ć‚“é£Ÿć¹ć‚„ć™ć„ć‹ć‚‚" ćØć„ć†ę–‡å„ć‹ć‚‰ć€Œē«¹čŸ²ć€ć‚’éø悓恠恌态聞恏ćØ今ꗄćÆē„”恄ćØ恄恆怂恓恮åŗ—ć®ćƒ”ćƒ‹ćƒ„ćƒ¼ćÆ原則ćØć—ć¦å…„č·ę™‚ć®ćæć®ęä¾›ćØćŖ悊态恓恮ꗄćÆ怌ē«¹čŸ²ć€ćØć€Œć‚»ćƒŸć®ē‚’ć‚ć€ćÆē„”ć„ć®ć ćć†ć€‚č©±ć§ćÆ恓恮2恤ćØć‚‚é£Ÿć¹ć‚„ć™ć„ćØčžć„ć¦ć„ćŸćŸć‚ć€å‡ŗé¼»ć‚’ćć˜ć‹ć‚ŒćŸę€ć„ć ć€‚
彼儳ćÆå®¶ć§ć‚«ć‚Øćƒ«ć‚’é£¼ć£ć¦ć„ć‚‹ć€‚ćć®ćŸć‚ć‚«ć‚Øćƒ«č‚‰ćÆéøć³ć„ć‚‰ć„ć€‚ć¾ćŸć€ć‚µćƒŠć‚®ćÆē‹¬ē‰¹ć®é£Ÿę„ŸćŒć—恦äøŠē“šč€…å‘ć‘ć ćØčžćć€‚å…„é–€ä»„å‰ć®ē§ć«ćÆåŽ³ć—ć„ć€‚

꜀ēµ‚ēš„ćŖć‚Ŗćƒ¼ćƒ€ćƒ¼ćÆ恓恆恠:

  • ć‚³ć‚Ŗćƒ­ć‚®ć®ē‚’悁
  • 恊肉ćØ恊ē±³ć®ēš®ćŖć—ć‚½ćƒ¼ć‚»ćƒ¼ć‚ø (豚)
  • ćƒ”ćƒ¼ć‚æćƒ³ć®ć‚µćƒ©ćƒ€ (ę­£å¼ćŖ名ē§°ćÆ失åæµ)

ćŖćŠć€ęœ€åˆ ēš®ćŖć—ć‚½ćƒ¼ć‚»ćƒ¼ć‚ø 悒ć‚Ŗćƒ¼ćƒ€ćƒ¼ć—ćŸćØć“ć‚ć€ć€Œä»Šę—„ćÆē‰›ć—恋ćŖ恄怍ćØčØ€č‘‰ć®č¶³ć‚ŠćŖć„ę—„ęœ¬čŖžć§ę•°åˆ†ęŽ›ć‘ć¦ä¼ćˆć‚‰ć‚ŒćŸć€‚ä»•ę–¹ćŖ恏ē‰›ć‚’ę³Øę–‡ć—ćŸć®ć ćŒć€ä½•ę•…ć‹å®Ÿéš›ć«ęä¾›ć•ć‚ŒćŸć®ćÆč±šć ć£ćŸć€‚


ć•ć¦ć€č‚åæƒć®ć‚³ć‚Ŗćƒ­ć‚®ćÆę˜Žć‚‰ć‹ć«ćƒ”ćƒ‹ćƒ„ćƒ¼ć‚’äøŠå›žć‚‹ćƒ“ć‚øćƒ„ć‚¢ćƒ«ć ć£ćŸć€‚

å½¼å„³ę›°ćć€ć‚³ć‚Ŗćƒ­ć‚®ć«ć‚‚č¤‡ę•°ć®ēØ®é”žćŒć‚ć‚‹ć‚‰ć—ć„ć€‚ę™®ę®µćƒšćƒƒćƒˆć«äøŽćˆć¦ć„悋悂恮ćÆć‚‚ć†å°‘ć—å°ć•ć„ćØčØ€ć†ć€‚
恓恮åŗ—ćÆé£Ÿę–™å“ć®č¼øå…„ć‚‚č”Œć£ć¦ć„ć‚‹ć‚‰ć—ć„ć€‚ć“ć‚ŒćÆꉀ謂 "ęœ¬å “" ć®ć‚³ć‚Ŗćƒ­ć‚®ćŖć®ć ć‚ć†ć‹ć€‚

å‹¢ć„ć‚ˆćé ¬å¼µć£ć¦ęˆ»ć—ć¦ć‚‚č‰Æ恏ćŖć„ćŸć‚ć€ć¾ćšćÆē‰‡č„šć‹ć‚‰é ‚ćć€‚
ć‚ć‚Œć€ę„å¤–ćØ恄恑悋怂悂恆ē‰‡č„šć€‚ę”ˆå¤–č–„å‘³ć ć€‚

ć©ć“ć‹ę‡ć‹ć—ć•ć‚’ę„Ÿć˜ć‚‹ć€‚é–“é•ć„ćŖćåˆć‚ć¦é£Ÿć¹ć‚‹ć®ć«ć€ä»„å‰é£Ÿć¹ćŸć“ćØćŒć‚ć‚‹ć‹ć®ć‚ˆć†ćŖę„Ÿč¦šć«ćŖ悋怂
恓悌ćÆ态悵ć‚Æ惩ć‚Ø惓恠怂惑ćƒŖ惃ćØć—ćŸę®»ćØ态äø­čŗ«ćÆē©ŗę“žć€‚å‘³ć«č‡³ć£ć¦ćÆćć®ć‚‚ć®ć€‚
č§¦č¦šć‚‚é£Ÿć¹ć¦ćæ悋怂恆悓态ē“ ęšć’ć—ćŸć‚Øćƒ“ć®č§¦č¦šćØćŖć‚“ć‚‰å¤‰ć‚ć‚‰ćŖ恄怂

問锌ćÆč…¹ć®éƒØåˆ†ć ćŒć€ć“ć“ć‚‚ę”ˆå¤–ę™®é€šć§ć‚ć‚‹ć€‚
ć‚¤ćƒ”ćƒ¼ć‚ø恙悋ćØ恗恟悉态č’øć—ćŸč‘‰ćŒč©°ć¾ć£ć¦ć„ć‚‹ę„Ÿć˜ć ć‚ć†ć‹ć€‚ćØćÆčØ€ć£ć¦ć‚‚č‡­ćæ恌恂悋悏恑恧悂ćŖć„ć€‚é£Ÿę„Ÿć ć‘ć§ć‚ć‚‹ć€‚
ē‹¬ē‰¹ć§ćÆć‚ć‚‹ćŒć€é£Ÿć¹ćŸć“ćØ恮ćŖć„ę„Ÿč¦šć§ćÆćŖ恄怂

ćØćÆć„ćˆć€ć“ć®ćƒ“ć‚øćƒ„ć‚¢ćƒ«ć ć€‚å‘³ć‚‚é£Ÿę„Ÿć‚‚é£Ÿć¹ę…£ć‚Œć¦ć„ć‚‹ćØćÆć„ćˆć€ä»Šč‡Ŗåˆ†ćŒé£Ÿć¹ć¦ć„ć‚‹ć‚‚ć®ć‚’ęƒ³åƒć™ć‚‹ćØ态äø€ēž¬ćˆćšććć†ć«ćŖ悋怂
äŗŗćÆč¦‹ćŸē›®ć‚„ć‚¤ćƒ”ćƒ¼ć‚ø恫ę”Æé…ć•ć‚Œć¦ć„ć‚‹ć®ć ćŖćØę”¹ć‚ć¦ę„Ÿć˜ć‚‹ć€‚ćć†ć„ć†ę™‚ćÆć€é£²ćæē‰©ć§ęµć—č¾¼ć‚€ć€‚ćƒŸćƒ£ćƒ³ćƒžćƒ¼ć®ćƒ‰ćƒŖćƒ³ć‚Æ悒äø€ē·’恫ć‚Ŗćƒ¼ćƒ€ćƒ¼ć—ć¦ćŠć„ć¦ć‚ˆć‹ć£ćŸć€‚
å¤šåˆ†ć€å†…å®¹ć‚’ēŸ„悉恕悌恚态ē›®éš ć—ć§ć‚‚ć•ć›ć‚‰ć‚Œć¦ć„ć‚Œć°ć€ē‰¹ę®µć®é•å’Œę„ŸćŖćé£Ÿć¹ć¦ć—ć¾ć†ć ć‚ć†ć€‚

ēš®ćŖć—ć‚½ćƒ¼ć‚»ćƒ¼ć‚ø态恓悌悂ē¾Žå‘³ć—ć„ć€‚ćŠćć‚‰ćęŽ›ć‘ć¦ć‚ć‚‹ć®ćÆå”č¾›å­ć®é…¢ę¼¬ć‘ć‹ä½•ć‹ć ć‚ć†ć€‚
ē§ćÆć™ć“ć¶ć‚‹č¾›ć„ć‚‚ć®ćŒč‹¦ę‰‹ć ć€‚ćƒ©ć‚¤ć‚¹ćŒę¬²ć—ććŖ悋怂

ćƒ”ćƒ¼ć‚æćƒ³ć®ä¹—ć£ćŸć‚µćƒ©ćƒ€ć ćŒć€ć“ć‚ŒćÆę—„ęœ¬ć®é£Ÿå“ć§ć‚‚ę—„åøøēš„恫äø¦ć¶å‘³ć ćØę€ć†ć€‚ćƒ”ćƒ¼ć‚æćƒ³ć“ćę—„åøøēš„恫ćÆé£Ÿć¹ćŖć„ćŒć€é¶åµć®ć‚†ć§åµć•ćˆä½æćˆć°åŒę§˜ć®å…·ęć§ć‚µćƒ©ćƒ€ć‚’ä½œć‚‹ć“ćØ悂恂悋恠悍恆怂
ćØć“ć‚ć§ćƒ”ćƒ¼ć‚æćƒ³ć®åÆ’å¤©ć®ć‚ˆć†ćŖå“é¢ć«ćÆ态ēµę™¶ć«ä¼¼ćŸęŸ„ćŒć‚ć‚‹ć€‚ć©ć‚“ćŖ反åæœć§ć“恆ćŖć‚‹ć®ć ć‚ć†ć€‚

ę°“ć‚’é ¼ć‚€ćØ态ē„ē€č‰²ć®ćŠčŒ¶ćŒęä¾›ć•ć‚Œć‚‹ć€‚ćƒćƒ‹ćƒ©ć®ć‚ˆć†ćŖē”˜ć„é¢Øå‘³ćŒć‚ć‚Šć€ē¾Žå‘³ć—恄怂ćŖ悓恦čØ€ć†ć®ć ć‚ć†ć€‚ć‚‚ć—ćŖć‚‰å®¶ć§é£²ćæ恟恄怂

f:id:S64:20180728161451j:plain

å½¼å„³ć®SNSć‚¢ć‚«ć‚¦ćƒ³ćƒˆć‹ć‚‰ę‹å€Ÿć—ćŸć€‚


3å“ć‚’é£Ÿć¹ēµ‚ćˆć€č…¹ć”ćŖć—ć«ęš—ććŖć£ćŸé«˜ē”°é¦¬å “ć‚’ę•£ē­–恙悋怂ē„žē”°å·ć‚ćŸć‚Šć‚’ę­©ćć ć‘ć§ć‚‚ć€č¤‡ę•°ć®ćƒŸćƒ£ćƒ³ćƒžćƒ¼ę–™ē†åŗ—悒見恋恑悋怂ćŖć‚“ć§ć‚‚é«˜ē”°é¦¬å “ćÆ怌ćƒŖćƒˆćƒ«ćƒ¤ćƒ³ć‚“ćƒ³ć€ćØå‘¼ć°ć‚Œć‚‹ć»ć©ć®å¤§ććŖćƒŸćƒ£ćƒ³ćƒžćƒ¼äŗŗć‚³ćƒŸćƒ„ćƒ‹ćƒ†ć‚£ćŒå½¢ęˆć•ć‚Œć¦ć„ć‚‹ć‚‰ć—ć„ć€‚

30åˆ†ć»ć©ę­©ćć€é§…å‰ć¾ć§ęˆ»ć‚Šå®‰ć„ćƒć‚§ćƒ¼ćƒ³ć®å±…é…’å±‹ćøå…„ć‚‹ć€‚ć•ćć»ć©ć¾ć§ć®ē•°å›½ęƒ…ē·’ćØćÆć†ć£ć¦å¤‰ć‚ć£ć¦ć€ē–²ć‚ŒćŸę—„ęœ¬äŗŗć‚µćƒ©ćƒŖćƒ¼ćƒžćƒ³ćŒć‚¹ćƒžćƒ›ē‰‡ę‰‹ć«é…’ć‚’é£²ć‚“ć ć‚Šć€ć‚¹ćƒ¼ćƒ„ć‚’ē€ćŸä»•äŗ‹ä»²é–“ćØäø‹äø–話ćŖ話恧éØ’ć„ć§ć„ć‚‹ć€‚ćć†ć„ćˆć°ć€ä»Šę—„ćÆćƒ—ćƒ¬ćƒŸć‚¢ćƒ ćƒ•ćƒ©ć‚¤ćƒ‡ćƒ¼ć‹ć€‚

ćØć‚Šć‚ćˆćšćƒ“ćƒ¼ćƒ«ć€ćØ恄恆悏恑恧悂ćŖ恏态äŗ’ć„ć«å„½ććŖé…’ć‚’å„½ććŖć‚ˆć†ć«ę³Øę–‡ć™ć‚‹ć€‚č…¹ćŒē©ŗć„ć¦ć„ć‚‹ć‚ć‘ć§ć‚‚ćŖ恄恮恧态ē°”単ćŖćƒŠć‚²ćƒƒćƒˆć ć‘2äŗŗć§ć¤ć¤ćåˆć†ć€‚ä½•ć®å¤‰å“²ć‚‚ćŖć„ć€ć‚¹ćƒƒćØē®øćŒć®ć³ć‚‹å‘³ć€‚

äø–é–“č©±ć€å…±é€šć®å‹äŗŗć®č©±ć€ć‚¢ć‚¤ćƒ‰ćƒ«ć®č©±ć€ćƒ‘ćƒ¼ćƒˆćƒŠćƒ¼ć®č©±ć€ä»•äŗ‹ć®č©±ć€2äŗŗ恍悊恠恋悉恧恍悋ć‚Ŗćƒ•ćƒ¬ć‚³ć®č©±ć€‚
꜀čæ‘ć€ŒLGBTć‚«ćƒƒćƒ—ćƒ«ć«ćÆē”Ÿē”£ę€§ćŒē„”恄怍ćŖć‚“ć¦č©±ćŒćƒć‚ŗć£ć¦ć„ćŸćŒć€å¤§ć—ćŸé‡‘é”ć‚’č½ćØ恙悏恑恧悂ćŖćé•·ę™‚é–“å±…åŗ§ć£ć¦ć€ć“ć‚Œć“ćē”Ÿē”£ę€§ćŒē„”恄悈ćŖ恁ćŖć‚“ć¦č€ƒćˆć¦ć„ćŸć€‚ćØćÆ恄恈态ē§ćÆä»£ć‚ć‚Šę˜ ćˆć®ć—ćŖ恄ćŖ悓ćØćŖćéŽćŽć‚‹ę™‚é–“ćŒå„½ćć ć€‚

彼儳ćÆ化ē²§ē›“恗恧åø­ć‚’ē«‹ć¤ć€‚å‰ć„ćŖćć€‚å­¦ē”Ÿć®é ƒć“ćåŒ–ē²§ē›“ć—ć«ę‰‹é–“ć‚’ęŽ›ć‘ć‚‹ę™‚ć‚‚ć‚ć£ćŸćŒć€ęœ€čæ‘ćÆć‚ć£ćć‚Šć‚„ć‚‰ćŖ恏ćŖć£ćŸć€‚å°é¼»ć®ęŗćŒēš®č„‚ć§ęµ®ć„ć¦ć‚ˆć†ćŒć€čŖ°ć‚‚갗恫恗ćŖ恄恠悍恆ćØćƒ‘ć‚¦ćƒ€ćƒ¼ć‚’ćÆ恟恍ē›“恙恓ćØ悂ćŖ恏ćŖć£ćŸć€‚ć“ć‚“ćŖć‚“ć ć‹ć‚‰ćƒ€ćƒ”ćŖ悓恠悍恆ćŖ恁怂
č‡Ŗē‚Šć‚‚恗ćŖ恄ē§ć«ć€å½¼å„³ćŒć‚Æ惃ć‚Æ惑惃惉恋悉ć‚Ŗć‚¹ć‚¹ćƒ”ć®ćƒ¬ć‚·ćƒ”ć‚’éøć‚“ć§é€ć£ć¦ćć‚Œć‚‹ć€‚ę—„åøøēš„恫ꖙē†ć§ć‚‚恗恦ćŖ恄ćØć€ć“ć†ć„ć£ćŸč”Œå‹•ćÆ恧恍ćŖ恄恠悍恆怂


怌恝悍恝悍å‡ŗ悈恆恋怍ćØć„ć£ć¦ć€åŗ—ć‚’å‡ŗ悋怂2äŗŗ恧3,000å††ć‚‚é£²ć¾ćŖć‹ć£ćŸć€‚
ć›ć£ć‹ćé«˜ē”°é¦¬å “ć«å±…ć¦ć‚‚ć€ć“ć®ę™‚é–“ć§ćÆę‹å³¶č”Œćć®č„æę­¦ē·šć‚‚å‡ŗ恦恄ćŖ恄怂ꖰå®æć¾ć§č”Œć£ć¦ć€äø­å¤®ē·šć§åø°ć‚‹ć‹ć€‚

怌ćŖć‚“ć ć‹åę®‹ęƒœć—ć„ćŖ怍ćŖ悓恦čØ€ć‚ć‚Œć¦ć‚‚ć€ę°—ć®åˆ©ć„ćŸć‚¢ć‚Æć‚·ćƒ§ćƒ³ćŒå–ć‚ŒćŖ恄怂äŗ’ć„ć«ååÆ¾ę–¹å‘ć®å±±ę‰‹ē·šćøä¹—ć£ć¦ć€åˆ„ć‚ŒćŸć€‚

恓恮Ꙃ間恫ꖰå®æć«å±…ć‚‹ćØć€é«˜ę ”ē”Ÿęœ€å¾Œć®ć‚ÆćƒŖć‚¹ćƒžć‚¹ć‚„ē¤¾ä¼šäŗŗ1幓ē›®ć®ę™‚ć‚’ę€ć„å‡ŗć—ć¦ć€č™šć—ććŖć‚‹ć€‚ęœ€å¾Œć«ćÆ恄恤悂1äŗŗ恫ćŖ悋恓ćØ恌åÆ‚ć—ć„ć€‚

ę°“åˆ†ć‚’å¤±ć„å¼µć‚Šä»˜ć„ćŸć‚«ćƒ©ć‚³ćƒ³ć«åæŒć€…ć—ć•ć‚’ę„Ÿć˜ćŖćŒć‚‰ć€ć„ć£ćä»Šę—„ć‚‚ę–°å®æć§ę³Šć¾ć£ć¦åø°ć‚ć†ć‹ćŖ恩ćØč€ƒćˆć¦ć„ćŸć€‚

怌åŸŗē¤Žć‹ć‚‰å­¦ć¶ Vue.jsć€ć®čŖ­ę›øę„Ÿęƒ³ę–‡

ꀄ恫ē‰‡ę‰‹é–“恧ēŸ„識恌åæ…要恫ćŖć£ćŸć‚‚ć®ć®ć€ćƒ—ćƒ©ć‚°ć‚¤ćƒ³ćØ恋悂開ē™ŗć—ć¦ć‚‹ćć›ć«å®Ÿéš›ć®ć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³é–‹ē™ŗćƒ¬ćƒ™ćƒ«ć®ēŸ„識恌ēš†ē„”ć ć£ćŸć®ć§ć€C&Rē ”ē©¶ę‰€ć‚ˆć‚Šå‡ŗē‰ˆć•ć‚Œć¦ć„ć‚‹åŸŗē¤Žć‹ć‚‰å­¦ć¶ Vue.js (著: mio갏)悒čŖ­ć‚“恠怂č”Øē“™ćŒć‹ć‚ć„恄怂

åŸŗē¤Žć‹ć‚‰å­¦ć¶ Vue.js

åŸŗē¤Žć‹ć‚‰å­¦ć¶ Vue.js

仄äø‹ć€čŖ­ę›øę„Ÿęƒ³ę–‡ć§ć™ć€‚

čŖ­ć‚€ćØ悈恕恝恆ćŖäŗŗ

  • Vue.jsć‚„ć»ć‹ćƒ•ćƒ­ćƒ³ćƒˆć‚Øćƒ³ćƒ‰ćƒ•ćƒ¬ćƒ¼ćƒ ćƒÆćƒ¼ć‚Æć‚’é›°å›²ę°—ć§ä½æć£ć¦ć„ć‚‹
  • ćØć‚Šć‚ćˆćšä»Šéøć‚“ć©ć‘ć°å®‰ę³°ćŖćƒ•ćƒ¬ćƒ¼ćƒ ćƒÆćƒ¼ć‚Æ悒ēŸ„悊恟恄
  • ćŖ悓恋Vue.js恤悉恄
  • ēŒ«ćŒć™ć

å‘ć„ć¦ć‚‹ē”Ø途

  • ę„­å‹™ć§Vue.js悒ä½æć†ćŸć‚ć«ę‰‹ę—©ćå…Ø体ēš„ćŖēŸ„識悒ę³Øå…„ć™ć‚‹
  • äø€čˆ¬ēš„ćŖē”Ø途ćØćć‚Œć«åƾåæœć™ć‚‹ć‚³ćƒ¼ćƒ‰ē‰‡ć‚„ć‚¢ć‚¤ćƒ‡ć‚¢ć‚’é›†ć‚ć‚‹
  • Vue.jsć§ä½•ćŒć§ćć‚‹ć®ć‹ēŸ„悋

ć§ćć‚‹ć‚ˆć†ć«ćŖ悋恓ćØ

  • ę„­å‹™ć§ćØ悊恂恈恚Vue.jså…„ć‚Œć‚‹
  • ē°”単ćŖć‚¢ćƒ—ćƒŖ悒ę›øć‘ć‚‹ć‚ˆć†ć«ćŖ悋 (恫ē›øå½“ć™ć‚‹ę©Ÿčƒ½ć‚’ē¶²ē¾…ć§ćć‚‹)

čŖ­ć‚ćŖ恄äŗŗ (å‰ęēŸ„識)

  • webpackćŖ恩悒ē”Øć„ćŸćƒ¢ćƒ€ćƒ³ćŖ開ē™ŗē¾å “恮åŸŗē¤Žć‚’ēŸ„悉ćŖ恄äŗŗ
  • ćƒ•ćƒ¬ćƒ¼ćƒ ćƒÆćƒ¼ć‚Æ恮ē™ŗęƒ³ćŒć‚ć‹ć‚‰ćŖ恄äŗŗ
  • HTML / CSS / JavaScriptć‚’ę„­å‹™ćƒ¬ćƒ™ćƒ«ć«ę›ø恑ćŖ恄äŗŗ (ES2015悒ē¶²ē¾…ć™ć‚‹ć¾ć§ćÆäøč¦)

恧恍ćŖ恄恓ćØ / čŗ«ć«ć¤ć‹ćŖ恄恓ćØ / å‘ć„ć¦ćŖ恄ē”Ø途

  • Vue.js恧高åŗ¦ćŖć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ć‚’ę›øććŸć‚ć®ćƒćƒžć‚Šć©ć“ć‚ć‚’ēŸ„悋
  • Nuxt.js恮ä½æć„ę–¹ć‚’ēŸ„悋 (åŸŗē¤ŽćÆēŸ„ć‚Œć‚‹ć®ć§ååˆ†ć ć‘ć©ć­)
  • Vue.jsć®ć‚½ćƒ¼ć‚¹ć‚³ćƒ¼ćƒ‰ć‚’čŖ­ć‚ć‚‹ć‚ˆć†ć«ćŖć‚‹ć€å…·ä½“ēš„ćŖ仕ēµ„ćæ悒ēŸ„悋
  • webpackē­‰ćƒ—ćƒ­ć‚ø悧ć‚Æ惈恫åæ…要ćŖčØ­å®šć‚’ēµ„ć‚ć‚‹ć‚ˆć†ć«ćŖ悋
  • TypeScriptć§åˆ©ē”Ø恙悋
  • Web APIć®åˆ©ē”Øę–¹ę³•ćŖć©ć€ćƒ“ć‚øćƒć‚¹ćƒ­ć‚ø惃ć‚Æć®ä½œć‚Šę–¹ć‚’ēŸ„悋

ę„Ÿęƒ³

ęœŸå¾…ä»„äøŠć®å¤§å¤‰ć‚ˆć„ęœ¬ć ć£ćŸć€‚

ęœ¬č‡Ŗ体ćÆēµ‚å§‹ć€ŒVue.jsć®ę©Ÿčƒ½ć‚’ć‚µćƒ³ćƒ—ćƒ«ć‚³ćƒ¼ćƒ‰ćØäø€ē·’恫ē“¹ä»‹ć€ćØć„ć†ćƒćƒ„ćƒ¼ćƒˆćƒŖć‚¢ćƒ«ēš„ćŖå½¢å¼ć ćŒć€ćØć“ć‚ć©ć“ć‚ć«å®Ÿéš›ć®é‹ē”Øć«ć‚ćŸć£ć¦ć®ć‚¢ćƒ‰ćƒć‚¤ć‚¹ćŒęŒæå…„ć•ć‚Œć¦ć„ćŸć‚Šć€ćŸćØ恈恰åŗē›¤ć§Vue.jsć®ćƒ©ć‚¤ćƒ•ć‚µć‚¤ć‚Æćƒ«ćŒē“¹ä»‹ć•ć‚Œć¦ć„ćŸć‚Šć€å„é …ē›®ć§é–¢é€£ć™ć‚‹ćƒ”ć‚½ćƒƒćƒ‰ē­‰API恌åæ…ćšå«ć¾ć‚Œć‚‹ćŖć©ć€ć“ć‚Œć‹ć‚‰å®Ÿéš›ć«ä½æ恄ćÆć˜ć‚ć€å¾Œć€…ć€Œć“ć†ć™ć‚Œć°ć‚ˆć‹ć£ćŸć®ć«ć€ćØć„ć†ę‰‹ęˆ»ć‚Šć‚„å¾Œę‚”ćŒē„”ć„ć‚ˆć†é…ę…®ć•ć‚Œć¦ć„ć‚‹ćØꄟ恘恟怂

Vuex, Vue Routerć®ę©Ÿčƒ½ē“¹ä»‹ć‚‚å«ć¾ć‚Œć¦ćŠć‚Šć€ć“ć®ęœ¬äø€å†Šć§ć‚¢ćƒ—ćƒŖć‚’ä½œć‚‹ć“ćØćŒååˆ†ć«åÆčƒ½ć ćØꄟ恘恟怂

äø€ę–¹ć€ćƒ—ćƒ­ć‚ø悧ć‚Æćƒˆć®ę§‹ēÆ‰ćŒVue CLIćø完å…Øć«ćŠä»»ć›ć ć£ćŸć‚ŠćØć€ć‚»ćƒƒćƒˆć‚¢ćƒƒćƒ—ć«é–¢ć™ć‚‹é¢ćŒę‰‹č–„ć„ć€‚
ć¾ćŸWeb APIć®å…·ä½“ēš„ćŖ利ē”Øę–¹ę³•ćŒć»ć¼ę›ø恋悌ćŖ恄 (axiosć®å­˜åœØćŒć•ć‚‰ć£ćØč©±ć•ć‚Œć¦å½“ćŸć‚Šå‰ć«ć‚µćƒ³ćƒ—ćƒ«ć‚³ćƒ¼ćƒ‰ć«å‡ŗ悋) ćŖć©ć€ćƒ“ć‚øćƒć‚¹ćƒ­ć‚ø惃ć‚Æćƒ¬ćƒ™ćƒ«ć®č©±ćÆć»ć¼ē„”恄怂
恓悌悉恋悉态恊恝悉恏恂悋ē؋åŗ¦ćƒ¢ćƒ€ćƒ³ćŖWebćƒ•ćƒ­ćƒ³ćƒˆć‚Øćƒ³ćƒ‰é–‹ē™ŗēµŒéØ“ćŒę—¢ć«ć‚ć‚Šć€ę–°ćŸć«Vue.jsć®å°Žå…„ć‚’ę¤œčØŽć—ć¦ć„ć‚‹é–‹ē™ŗč€…ć‚’ęƒ³å®šć—ć¦ć„ć‚‹ę›øē±ć ćØꄟ恘恟怂

悂恗ē¾å “ć®ę—¢å­˜ć‚·ć‚¹ćƒ†ćƒ ćøVue.jsć®å°Žå…„ć‚’ę¤œčØŽć—ć¦ć„ć‚‹ćŖć‚‰ć€ć¾ćšćÆę‰‹ć«å–ć‚‹ćØč‰Æ恄恋悂ēŸ„悌ćŖ恄怂
集äø­ć•ćˆć§ćć‚‹ćŖ悉态5Ꙃ間悂恂悌恰å„Ŗ恫čŖ­ćæåˆ‡ć‚Œć‚‹č»½ć„ęœ¬ć ć€‚

恔ćŖćæć«ć€åŒę™‚ć« Hello!! Vue.js ęœ€ę–°ćƒ—ćƒ­ć‚°ćƒ¬ćƒƒć‚·ćƒ–ćƒ•ćƒ¬ćƒ¼ćƒ ćƒÆćƒ¼ć‚Æå…„é–€ (著: 那須 ē†ä¹Ÿę°) ć‚’č²·ć£ćŸć€‚é‡č¤‡ć™ć‚‹éƒØåˆ†ćŒå¤§åŠćŖäø­ć§ē“°ć‹ć„éƒØåˆ†ć‚’č£œć„åˆćˆć‚‹ć ć‚ć†ć€ćØć„ć†ęƒ³å®šć€‚ę¬”å›žćÆ恓悌怂

ćØć‚Šć‚ćˆćšć‚µć‚Æ惃ćØAndroid JetPack 恮 Navigation Architecture Component 悒ä½æć£ć¦ćæ悋


ć„ć¾ć¾ć§ć®Android開ē™ŗ恧ćÆ态恟ćØćˆć°ćƒ‡ć‚£ćƒ¼ćƒ—ćƒŖćƒ³ć‚Æ恫ćÆGradle恋悉AndroidManifest悒ę›øćę›ćˆć‚‹é»’é­”č”“ć‚’ć€ćŸćØćˆć°ćƒ«ćƒ¼ćƒ†ć‚£ćƒ³ć‚°ć‚„ćƒŠćƒ“ć‚²ćƒ¼ć‚·ćƒ§ćƒ³ć«ćÆć‚Ŗ惬ć‚Ŗćƒ¬ćƒ•ćƒ¬ćƒ¼ćƒ ćƒÆćƒ¼ć‚Æć‚‚ć©ćć‚’ä½œć£ć¦ä½æć£ć¦ćć¾ć—ćŸćŒć€Google I/O 2018恧ē™ŗč”Ø恕悌恟 Navigation Architecture Component 悒ä½æ恆ćØ大変ä¾æåˆ©ć§ć—ćŸć€‚
ćØ悊恂恈恚ä½æć£ć¦ćæćŸćƒ”ćƒ¢ć§ć™ć€‚

č€ƒćˆę–¹ćØ恋꧋造

  • ć‚·ćƒ³ć‚°ćƒ«ć‚¢ć‚Æćƒ†ć‚£ćƒ“ćƒ†ć‚£ćƒ»ćƒžćƒ«ćƒćƒ•ćƒ©ć‚°ćƒ”ćƒ³ćƒˆ
  • ꜀äøŠä½ć® (å”Æäø€ć®) Activity恌Toolbar悄 ćƒŠćƒ“ć‚²ćƒ¼ć‚·ćƒ§ćƒ³ē”Øć‚³ćƒ³ćƒˆćƒ­ćƒ¼ćƒ«(BottomNavigation, NavigationDrawer ćŖ恩) 悒ꌁ恤
  • Activity恌NavHostFragmentćØć„ć†ć®ć‚’ęŒć”ć€ćć®ć•ć‚‰ć«å…„ć‚Œå­ć§ć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ćƒ‰ćƒ”ć‚¤ćƒ³ć®Fragment恌ē®”ē†ćƒ»č”Øē¤ŗ恕悌悋
  • NavHostFragmentćŒå†…åŒ…ć™ć‚‹NavControllerćØć„ć†ć‚„ć¤ćŒćƒ«ćƒ¼ćƒ†ć‚£ćƒ³ć‚°ć‚’ć—ć¦ć„ć‚‹
    • Fragment恮instantiatećŖ恩ćÆć“ć‚ŒćŒå†…éƒØć§ć‚„ć£ć¦ćć‚Œć‚‹
  • ćƒŠćƒ“ć‚²ćƒ¼ć‚·ćƒ§ćƒ³å®šē¾©ćÆXMLć§č”Œć„ć€ć©ć®ć‚¢ć‚Æć‚·ćƒ§ćƒ³ć‚’ć™ć‚‹ć‹ćÆR.id.*恧ꌇē¤ŗ恙悋
  • ćƒ‡ć‚£ćƒ¼ćƒ—ćƒŖćƒ³ć‚Æć‚‚åŒäøŠć€‚ęØ©å؁ActivityćŒć™ć¹ć¦å—ć‘å–ć‚Šć€NavController恌悈恗ćŖć«ćƒ«ćƒ¼ćƒ†ć‚£ćƒ³ć‚°ć™ć‚‹
    • ć‚’å®Ÿē¾ć™ć‚‹ćŸć‚ć«ć€navigation恮xml悒Manifest MergerćŒćƒ‘ćƒ¼ć‚¹ć—ć€intent-filter悒ę›ø恍ꏛ恈悋

ä½œć‚‹é †åŗć®ć‚³ćƒ„

å„ć‚³ćƒ³ćƒćƒ¼ćƒćƒ³ćƒˆćŒč¤‡é›‘ć«ēµ”ćæåˆć£ć¦ć„ć‚‹ć®ć§ć€ć‚¼ćƒ­ć‹ć‚‰ä½œć£ć¦ć„ćę™‚ćÆ順åŗć«ć‚³ćƒ„ćŒć‚ć‚‹ę°—ćŒć—ć¾ć—ćŸć€‚
ē§ć®ę‰€ę„ŸćØ恗恦ćÆ态

  1. Gradleć«ä¾å­˜ę›ø恏
  2. å†…åŒ…ć•ć‚Œć‚‹Fragmentć‚Æćƒ©ć‚¹ćØå„ćƒ¬ć‚¤ć‚¢ć‚¦ćƒˆ
  3. res/navigation/*.xmlć®å®šē¾©
  4. Activityć‚’ä½œć‚‹
  5. Fragmentć®ć‚¤ćƒ³ć‚æ惩ć‚Æć‚·ćƒ§ćƒ³ć‚’ē¹‹ćŽć“ć‚€

ćŒć‚¹ćƒ ćƒ¼ć‚ŗ恧恙怂

ä½æć£ć¦ćæ悋

ä½æć£ć¦ćæ悋怂ćØć‚Šć‚ćˆćšć€Œå…„åŠ›ć•ć‚ŒćŸę–‡å­—ć‚’ćć®ć¾ć¾č”Øē¤ŗć™ć‚‹ć‚¢ćƒ—ćƒŖ怍悒ē›®ęŒ‡ć—ć¾ć™ć€‚

Gradleć«ä¾å­˜ę›ø恏

惗惭ć‚ø悧ć‚Æćƒˆćƒ«ćƒ¼ćƒˆć®build.gradlećø仄äø‹ć®ć‚ˆć†ć«ę›øćć¾ć™ć€‚

buildscript {
...
    ext.navigation_architecture_component_version = '1.0.0-alpha01'
...

åŒćƒ•ć‚”ć‚¤ćƒ«ć®dependenciesćø仄äø‹ć‚’čæ½åŠ ć—ć¾ć™ć€‚

buildscript {
    ...
    dependencies {
        ...
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:${navigation_architecture_component_version}"
        ...

ć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³ćƒ¢ć‚øćƒ„ćƒ¼ćƒ«ć®build.gradleå†’é ­ć«ä»„äø‹ćƒ—ćƒ©ć‚°ć‚¤ćƒ³ć‚’čæ½åŠ ć—ć¾ć™ć€‚

...
apply plugin: 'androidx.navigation.safeargs'
...

åŒć˜ćƒ•ć‚”ć‚¤ćƒ«ć«ä¾å­˜ć™ć‚‹ćƒ©ć‚¤ćƒ–ćƒ©ćƒŖ悒čæ½åŠ ć—ć¾ć™ć€‚

dependencies {
...
    implementation "android.arch.navigation:navigation-fragment:${navigation_architecture_component_version}"
    implementation "android.arch.navigation:navigation-ui:${navigation_architecture_component_version}"
...

ęœ¬č³Ŗć‹ć‚‰å¤–ć‚Œć‚‹ć‘ć‚Œć©RelativeLayoutćÆdon't use恧use ConstraintLayoutć‚‰ć—ć„ć®ć§ć€ć“ć®ć‚µćƒ³ćƒ—ćƒ«ć‚¢ćƒ—ćƒŖ恧ćÆConstraintLayoutć®ä¾å­˜ć‚‚åŠ ćˆć¾ć™ć€‚

...
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
...

å†…åŒ…ć•ć‚Œć‚‹Fragmentć‚’ä½œć‚‹

ć“ć®ć‚µćƒ³ćƒ—ćƒ«ć‚¢ćƒ—ćƒŖ恧ćÆ仄äø‹ć®ē”»é¢ć‚’ä½œć‚ć†ć‹ćŖ态

  • ć‚æć‚¤ćƒˆćƒ«ē”»é¢
  • ę–‡å­—å…„åŠ›ē”»é¢
  • ēµęžœē”»é¢ (ćć®ć¾ć¾ę–‡å­—ćŒč”Øē¤ŗ恕悌悋)
  • ćƒćƒ¼ć‚øćƒ§ćƒ³ęƒ…å ±ē”»é¢

恓悌悉ćÆäø€čˆ¬ēš„ćŖAndroidć‚¢ćƒ—ćƒŖć‚±ćƒ¼ć‚·ćƒ§ćƒ³é–‹ē™ŗćØćŖ悓悉違恄恌ē„”ć„ć®ć§ć€č©³ē“°ćŖč§£čŖ¬ćÆé£›ć°ć—ć¾ć™ć€‚
ć¾ćŸć€ē”»é¢é·ē§»ć«é–¢ć‚ć‚‹ćƒœć‚æćƒ³ć‚ÆćƒŖ惃ć‚Æę™‚ć®ć‚¤ćƒ³ć‚æ惩ć‚Æć‚·ćƒ§ćƒ³ē­‰ćÆ恓恮Ꙃē‚¹ć§ćÆå®Ÿč£…ć—ć¾ć›ć‚“ć€‚č¦ćÆ态

package jp.s64.android.prototype.myechoapplication

import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

class *Fragment : Fragment() {

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.*_fragment, container, false)
    }

}

ē؋åŗ¦ć®čؘčæ°ć®ćæ恧恙怂

TitleFragment InputFragment
f:id:S64:20180513121614p:plain f:id:S64:20180513121953p:plain
ResultFragment AboutFragment
f:id:S64:20180513122452p:plain f:id:S64:20180513123019p:plain

Google I/Oć®ć‚µćƒ³ćƒ—ćƒ«ć‚’č¦‹ć‚‹é™ć‚Šć€å‘½åč¦å‰‡ćŒå¾“ę„ć®fragment_*.xml悄layout_*.xml恧ćÆćŖ恏*_fragment.xmlćØćŖć£ć¦ć„ć‚‹ę–¹ćŒć“ć‚Œć‹ć‚‰ćÆ悤悱恦悋ćæ恟恄怂

res/navigation/*.xmlć®å®šē¾©

ć‚­ćƒ¢ć§ć™ć€‚resćƒ‡ć‚£ćƒ¬ć‚Æ惈ćƒŖ恧navigationćØć„ć†ćƒ‡ć‚£ćƒ¬ć‚Æ惈ćƒŖć‚’ä½œęˆć—ć€ćć®äø­ć«ä»»ę„ć®åå‰ć®xml悒čؘčæ°ć—ć¾ć™ć€‚ē§ć®å “åˆć€app_navigation.xmlćØć—ć¾ć—ćŸć€‚
ćƒŠćƒ“ć‚²ćƒ¼ć‚·ćƒ§ćƒ³ć®åÆ¾č±”ćØ恙悋Fragmentć‚’ć²ćØćØ恊悊čؘčæ°ć—ć¾ć™ć€‚

<navigation ... >
...
    <fragment
        android:id="@+id/launcher_title"
        android:name="jp.s64.android.prototype.myechoapplication.TitleFragment"
        android:label="@string/title"
        tools:layout="@layout/title_fragment" />

    <fragment
        android:id="@+id/flow_input"
        android:name="jp.s64.android.prototype.myechoapplication.InputFragment"
        android:label="@string/input"
        tools:layout="@layout/input_fragment" />

    <fragment
        android:id="@+id/flow_result"
        android:name="jp.s64.android.prototype.myechoapplication.ResultFragment"
        android:label="@string/result"
        tools:layout="@layout/result_fragment" />

    <fragment
        android:id="@+id/screen_about"
        android:name="jp.s64.android.prototype.myechoapplication.AboutFragment"
        android:label="@string/about"
        tools:layout="@layout/about_fragment" />
...

å„č¦ē“ ć®android:idćÆ遷ē§»å…ˆćØć—ć¦ęŒ‡å®šć•ć‚Œć‚‹ć‚‚ć®ćŖć®ć§ć€ćŸćØćˆć°čµ·å‹•ę™‚ć®ē”»é¢ćŖ悉launcher_*ćŖ恩ćØć™ć‚‹ć®ćŒč‰Æ恄恧恙怂
AboutćŒę“ä½œćƒ•ćƒ­ćƒ¼ć‹ć‚‰ē‹¬ē«‹ć—ćŸē”»é¢ćŖć®ć§ęš«å®šēš„恫screen_*ćØć—ć¾ć—ćŸćŒć€ćÆćŸć—ć¦å‘½åć®ćƒ™ć‚¹ćƒˆćƒ—ćƒ©ć‚Æćƒ†ć‚£ć‚¹ćÆćŖ悓恧恗悇恆恋...
android:label恫ćÆę–‡å­—åˆ—ć¾ćŸćÆstringćƒŖć‚½ćƒ¼ć‚¹ćŒä½æćˆć¾ć™ć€‚ć“ć‚ŒćÆToolbar恫č”Øē¤ŗ恕悌悋title恧恙怂

ę¬”ć«ćƒ«ćƒ¼ćƒˆč¦ē“ ć«čµ·å‹•ę™‚ć®åˆęœŸē”»é¢ć‚’ęŒ‡å®šć—ć¾ć™ć€‚

<navigation
    ....
    app:startDestination="@id/launcher_title">
...

Title恋悉Inputćø遷ē§»ć§ćć‚‹ć‚ˆć†ć«ć—ć¾ć™ć€‚@+id/launcher_title恮fragment要ē“ å†…恫action悒čæ½åŠ ć—ć¾ć™ć€‚

<fragment
        android:id="@+id/launcher_title"
        ... >
    <action
        android:id="@+id/action_launcher_title_to_flow_input"
        app:destination="@id/flow_input" />
</fragment>

åŒę§˜ć«ć€InputFragment恋悉ResultFragmentćø遷ē§»ć§ćć‚‹ć‚ˆć†ć«action悒čؘčæ°ć—ć¾ć™ć€‚

<fragment
        android:id="@+id/flow_input"
        ... >
    <action
        android:id="@+id/action_flow_input_to_flow_result"
        app:destination="@id/flow_result" />
</fragment>

ResultFragmentćŒå…„åŠ›ć•ć‚ŒćŸę–‡å­—ć‚’å—ć‘å–ć‚Œć‚‹ć‚ˆć†ć«ć€argumentć‚’å®šē¾©ć—ć¾ć™ć€‚

<fragment
    android:id="@+id/flow_result"
    ... >
    <argument
        android:name="input_text"
        android:defaultValue="No Input!"
        app:type="string" />
</fragment>

Activityć‚’ä½œć‚‹

MainActivityćØć§ć‚‚ć—ć¦ä½œęˆć—ć¾ć™ć€‚ćƒ¬ć‚¤ć‚¢ć‚¦ćƒˆćÆä¾‹ćˆć°ä»„äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć™ć€‚

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivityActivity">

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottomNavigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/menu_bottom_navigation" />

    <fragment
        android:id="@+id/navHost"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toTopOf="@+id/bottomNavigation"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navGraph="@navigation/app_navigation" />

</android.support.constraint.ConstraintLayout>

ćƒć‚¤ćƒ³ćƒˆćÆNavHostFragment恌ē”»é¢å…Øä½“ć‚’č¦†ć£ć¦ć„ć‚‹ć“ćØćØ态app:navGraphć§ć•ćć»ć©ć®xmlć‚’ęŒ‡å®šć—ć¦ć„ć‚‹ć“ćØ怂
BottomNavigationViewć¾ćŸćÆ (DrawerLayoutć§åŒ…ć‚“ć ) NavigationView 悒ä½æ恆ćØ态app:menuć§ęŒ‡å®šć—ćŸćƒ”ćƒ‹ćƒ„ćƒ¼ć‹ć‚‰ć‚ˆć—ćŖ恫遷ē§»ć‚’ć—ć¦ćć‚Œć¾ć™ć€‚

ä»Šå›žć¤ćć£ćŸres/menu/menu_bottom_navigation.xmlć®å†…å®¹ć§ć™ć€‚

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@id/launcher_title"
        android:icon="@drawable/ic_home"
        android:title="@string/title"/>

    <item
        android:id="@id/screen_about"
        android:icon="@drawable/ic_info"
        android:title="@string/about"/>

</menu>

ć“ć”ć‚‰ć®ćƒć‚¤ćƒ³ćƒˆćÆandroid:idć«ęŒ‡å®šć—ć¦ć„ć‚‹å†…å®¹ćŒapp_navigation.xmlć®å„fragment恮悂恮恧恂悋恓ćØć€‚ć“ć“ć«ęŒ‡å®šć—ćŸć‚‚ć®ć‚’å‘¼ć³å‡ŗć—ć¦ćć‚Œć¾ć™ć€‚

Activityć®ć‚³ćƒ¼ćƒ‰ć‚’ę›øć„ć¦ć„ćć¾ć™ć€‚ä»„äø‹ć®ć‚ˆć†ć«ćŖć‚Šć¾ć—ćŸć€‚

package jp.s64.android.prototype.myechoapplication

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.design.widget.BottomNavigationView
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.NavigationUI

class MainActivity : AppCompatActivity() {

    lateinit var navHost: NavHostFragment

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main_activity)

        navHost = supportFragmentManager
                .findFragmentById(R.id.navHost) as NavHostFragment

        val bottomNavigation = findViewById<BottomNavigationView>(R.id.bottomNavigation)

        NavigationUI.setupActionBarWithNavController(this, navHost.navController)
        NavigationUI.setupWithNavController(bottomNavigation, navHost.navController)
    }

    /*
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return NavigationUI.onNavDestinationSelected(item, navHost.navController) || super.onOptionsItemSelected(item)
    }
    */

    override fun onSupportNavigateUp(): Boolean {
        return navHost.navController.navigateUp() || super.onSupportNavigateUp()
        //return NavigationUI.navigateUp(drawer, navHost.navController) || super.onSupportNavigateUp()
    }

}

NavigationUI.setupActionBarWithNavController恧ć‚æć‚¤ćƒˆćƒ«ćŖ恩ActionBar悒态NavigationUI.setupWithNavController恧BottomNavigationView恮ć‚ÆćƒŖ惃ć‚Æć‚¤ćƒ™ćƒ³ćƒˆē­‰ć‚’NavHostFragmentć®å†…åŒ…ć™ć‚‹NavControllerćØē¹‹ćŽč¾¼ćæć¾ć™ć€‚
onOptionsItemSelectedćÆActionBar恮menu恋悉ē›“ꎄ遷ē§»ć•ć›ć‚‹ę™‚ē”Ø恮čؘčæ°ć§ć™ć€‚åæ…要恫åæœć˜ć¦ć‚³ćƒ”ćƒ³ćƒˆć‚¢ć‚¦ćƒˆć—ć¦ćć ć•ć„ć€‚
onSupportNavigateUpćÆActionBar恧upć—ćŸéš›ć«ē”»é¢ć‚¹ć‚æ惃ć‚Æ悒popć•ć›ć‚‹ćŸć‚ć«åæ…č¦ć§ć™ć€‚ć¾ćŸć€Drawerć‚’åˆ©ē”Øć™ć‚‹å “åˆćÆć‚³ćƒ”ćƒ³ćƒˆć‚¢ć‚¦ćƒˆć—ć¦ć‚ć‚‹ć‚ˆć†ćŖčؘčæ°ć‚’ē”Ø恄悋恓ćØ恧åÆčƒ½ć§ć™ć€‚

Fragmentć®ć‚¤ćƒ³ć‚æ惩ć‚Æć‚·ćƒ§ćƒ³ć‚’ē¹‹ćŽč¾¼ć‚€

各ē”»é¢ć®ćƒœć‚æćƒ³ć‚ÆćƒŖ惃ć‚Æē­‰ć‚’ē¹‹ćŽć¾ć™ć€‚
TitleFragmentćÆå˜ć«ä»„äø‹ć®ć‚ˆć†ćŖčؘčæ°ć‚’čæ½åŠ ć™ć‚Œć°ååˆ†ć§ć™ć€‚

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        view.findViewById<Button>(R.id.button).setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_launcher_title_to_flow_input))
    }

createNavigateOnClickListener恫ćÆ遷ē§»å…ˆfragment恮id恧ćÆćŖ恏态action恮idć‚’ęŒ‡å®šć—ć¦ć„ć‚‹ć®ćŒćƒć‚¤ćƒ³ćƒˆć§ć™ć€‚

åÆ¾ć—InputFragment恧ćÆꬔ恮ē”»é¢ćøå€¤ć‚’ęø”恙åæ…č¦ćŒć‚ć‚Šć¾ć™ć€‚ä»Šå›žć®å “合ćÆ仄äø‹ć®ć‚ˆć†ć«čؘčæ°ć§ćć¾ć™ć€‚

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        val editText = view.findViewById<EditText>(R.id.editText)

        view.findViewById<Button>(R.id.button2).setOnClickListener {
            Navigation.findNavController(it).navigate(
                    R.id.action_flow_input_to_flow_result,
                    ResultFragmentArgs.Builder()
                            .setInput_text(editText.text.toString())
                            .build()
                            .toBundle()
            )
        }
    }

ResultFragmentArgsćÆnavigation-safe-args-gradle-plugin恌č‡Ŗ動ē”Ÿęˆć—恦恄悋悂恮恧态navigation恮xml恫čؘčæ°ć—ćŸå†…å®¹ćŒå…ƒć«ćŖć£ć¦ć„ć¾ć™ć€‚
åŒę§˜ć«ć€ResultFragment恧悂ęø”ć•ć‚ŒćŸå€¤ć‚’č”Øē¤ŗć§ćć‚‹ć‚ˆć†ć«ć—ć¾ć™ć€‚

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        val args = ResultFragmentArgs.fromBundle(arguments)

        view.findViewById<TextView>(R.id.textView).text = args.input_text
    }

仄äøŠć§åŸŗęœ¬ēš„ćŖę©Ÿčƒ½ć®å®Ÿč£…ćÆ完äŗ†ć§ć™ć€‚

f:id:S64:20180513152738g:plain

ć‚‰ćć”ć‚“ļ¼

ćƒ‡ć‚£ćƒ¼ćƒ—ćƒŖćƒ³ć‚Æåƾåæœ

app_navigation.xmlå†…ć®fragment要ē“ ć«ć€ä»„äø‹ć®ć‚ˆć†ć«čؘčæ°ć—ć¾ć™ć€‚ä»Šå›žćÆabout恫åƾåæœć™ć‚‹ćƒŖćƒ³ć‚Æć«ć—ć¾ć—ćŸć€‚

<fragment
    android:id="@+id/screen_about"
    ... >

    <deepLink app:uri="http://example.com/about"/>

</fragment>

AndroidManifest.xml恮Activityå†…ć«ć€ä»„äø‹ć®ć‚ˆć†ć«čؘčæ°ć—ć¾ć™ć€‚

...
<activity android:name=".MainActivity">
    ...
    <nav-graph android:value="@navigation/app_navigation"/>
    ...
</activity>
...

仄äøŠć§å®Œäŗ†ć§ć™ć€‚

f:id:S64:20180513153800g:plain

ć‚‰ćć”ć‚“ļ¼

ꉀꄟ

悈恕恝恆

ā€» ä»Šå›žć®ć‚³ćƒ¼ćƒ‰ćÆ恓恔悉恫ē½®ćć¾ć—ćŸ