Slide 1

Slide 1 text

Git ϋϯζΦϯ Part 1 # גࣜձࣾΤΞʔΫϩʔθοτ ࣾ಺ษڧձ Vol.3 @takasp 2018೥9݄25೔

Slide 2

Slide 2 text

͜ͷࢿྉ͸ɺ ɾGit ͕ΠϯετʔϧࡁΈͰ͋Δ͜ͱ ɾGitHub ͷΞΧ΢ϯτΛ͍࣋ͬͯΔ͜ͱ Λલఏͱ͍ͯ͠·͢ɻ

Slide 3

Slide 3 text

࿩͢͜ͱ • Git ͷ֓ཁ • Git ͷίϚϯυ • Git ͷίϚϯυΛ࢖ͬͨϋϯζΦϯ

Slide 4

Slide 4 text

ຊ೔ѻ͏ Git ίϚϯυ • git add • git commit • git push • git branch • git status • git merge • git init • git log • git clone • git pull • git diff • git config • git checkout

Slide 5

Slide 5 text

Git ͷ֓ཁ

Slide 6

Slide 6 text

Git ͱ͸ • มߋཤྺΛه࿥ɾ௥੻͢ΔͨΊͷ
 ෼ࢄܕόʔδϣϯ؅ཧγεςϜʢVCSʣ • Linux Χʔωϧͷιʔείʔυ؅ཧʹ
 ༻͍ΔͨΊʹϦʔφεɾτʔόϧζʹΑͬͯ
 ։ൃ͞Εͨ

Slide 7

Slide 7 text

ϑΝΠϧΛ؅ཧ͢Δ • ԿΛ؅ཧ͍ͨ͠ͷ͔ʁ • ୭͕ʁ • ͍ͭʁ • ͲͷϑΝΠϧΛʁ • ԿΛมߋͨ͠ʁ JOEFY@࠷ऴ൛IUNM JOEFY@࠷ऴ൛IUNM JOEFY@OFXIUNM JOEFY@OFXIUNM JOEFY@IUNM JOEFY@IUNM JOEFY@IUNM JOEFYIUNM

Slide 8

Slide 8 text

Git Λ࢖ͬͨྲྀΕ 1 )5.-ϑΝΠϧ Λ௥Ճ commit1 HEAD ద੾ͳίϛοτ
 ϝοηʔδΛ͚ͭΔ HEAD:
 ݱࡏΛࢦࣔ͢͠࡞ۀঢ়ଶ commit:
 มߋͷཤྺΛه࿥ͨ͠΋ͷ

Slide 9

Slide 9 text

Git Λ࢖ͬͨྲྀΕ 1 2 )5.-ϑΝΠϧ Λ௥Ճ JNHλάΛ௥Ճ commit1 commit2 HEAD ίϛοτΛ௥Ճͨ͠ ίϛοτΛ௥Ճ͢Δͱ
 HEAD͕ਐΉ

Slide 10

Slide 10 text

Git Λ࢖ͬͨྲྀΕ 1 2 3 )5.-ϑΝΠϧ Λ௥Ճ JNHλάΛ௥Ճ UJUMFΛมߋ commit1 commit2 commit3 HEAD ίϛοτΛ௥Ճͨ͠ ߋʹHEAD͕ਐΉ

Slide 11

Slide 11 text

Git Λ࢖ͬͨྲྀΕ 1 2 3 4 )5.-ϑΝΠϧ Λ௥Ճ JNHλάΛ௥Ճ UJUMFΛมߋ DTTΛमਖ਼ HEAD commit1 commit2 commit3 commit4 ίϛοτΛաڈʹ ḪΔ͜ͱ΋Ͱ͖Δ

Slide 12

Slide 12 text

ϒϥϯν 1 2 3 4 merge merge:
 ϒϥϯνಉ࢜Λ ݁߹͢Δػೳ 2 5 feature ϒϥϯν΍ fix ϒϥϯν ϝΠϯͷϒϥϯν branch:
 ཤྺΛࢬ෼͔Εͤͯ͞ ه࿥͢Δػೳ

Slide 13

Slide 13 text

෼ࢄܕͱूதܕ தԝϦϙδτϦ ϦϞʔτϦϙδτϦ ूதܕ ෼ࢄܕ ొ࿥ ొ࿥ औಘ औಘ ొ࿥ औಘ ίϛοτ ొ࿥ औಘ ίϛοτ ϩʔΧϧ
 ϦϙδτϦ ϩʔΧϧ
 ϦϙδτϦ

Slide 14

Slide 14 text

ϦϙδτϦ ϦϞʔτϦϙδτϦ ϩʔΧϧϦϙδτϦ ϩʔΧϧϦϙδτϦ ϩʔΧϧϦϙδτϦ ϦϞʔτϦϙδτϦʹ
 ࡞ۀऀ͕ΞΫηεͯ͠ɺ ϩʔΧϧϦϙδτϦΛ
 ௨ͯ͠΍ΓͱΓ͢Δ ϦϙδτϦ:
 όʔδϣϯ؅ཧΛ ߦ͏৔ॴ

Slide 15

Slide 15 text

ओཁͳ Git ϗεςΟϯάαʔϏε

Slide 16

Slide 16 text

ίϚϯυϥΠϯͰ֮͑Α͏ • ࠷ऴతʹ GUI Λ࢖ͬͯ΋ྑ͍͕ɺ
 ಺෦Ͱ࢖ΘΕΔίϚϯυͷҙຯ͕෼͔ͬͯ
 ࢖Θͳ͍ͱɺԿΛ͢Δͷ͔෼͔Γʹ͍͘ • ಺෦Ͱ࢖ΘΕΔίϚϯυͱ GUI ͷ໊শ͕
 ҟͳΔ͜ͱ͕͋Δ • ωοτͰௐ΂ΔͱίϚϯυ͕ग़ͯ͘Δ

Slide 17

Slide 17 text

࠷௿ݶ͓͖͍֮͑ͯͨ
 Linux ίϚϯυ • pwd (print working directory) : ݱࡏͷσΟϨΫτϦΛදࣔ͢Δ • cd (change directory) : ଞͷσΟϨΫτϦʹҠಈ͢Δ • ls (list) : ݱࡏͷσΟϨΫτϦͷσΟϨΫτϦ΍ϑΝΠϧΛදࣔ͢Δ • mkdir (make directory) : σΟϨΫτϦΛ࡞੒͢Δ • mv (move) : ϑΝΠϧΛҠಈ͢Δ • cp (copy) : ϑΝΠϧΛίϐʔ͢Δ • rm (remove) : ϑΝΠϧ΍σΟϨΫτϦΛ࡟আ͢Δ

Slide 18

Slide 18 text

ࣄલ४උ

Slide 19

Slide 19 text

git config Ͱઃఆ͠Α͏ • Ϣʔβʔ৘ใΛઃఆ͢Δ • editor ͷઃఆʢVisual Studio Code Ͱىಈ͢Δྫʣ • ઃఆΛ֬ೝ͢Δ
 git config --global user.name takasp
 git config --global user.email [email protected] git config --global core.editor "code --wait" git config --global --list

Slide 20

Slide 20 text

ϩʔΧϧϦϙδτϦΛ࡞੒͢Δ • λʔϛφϧ͔Β೚ҙͷσΟϨΫτϦΛ࡞੒͠ ͯҠಈ͢Δ
 
 • ϩʔΧϧϦϙδτϦΛ࡞੒͢Δ mkdir git-handson01
 cd git-handson01 git init

Slide 21

Slide 21 text

ίϛοτ͢ΔྲྀΕΛ֮͑Α͏

Slide 22

Slide 22 text

ίϛοτ͢ΔྲྀΕ ϩʔΧϧϦϙδτϦ ϩʔΧϧϦϙδτϦʹ ίϛοτ͢Δ εςʔδʹҠಈ͢Δ ϑΝΠϧΛมߋ͢Δ

Slide 23

Slide 23 text

ϑΝΠϧΛ࡞੒͢Δ • ҎԼͷςΩετΛؚΉ README.md ϑΝΠϧ Λ࡞੒͢Δ # Git
 ॳΊͯͷ Git ϑΝΠϧͰ͢ɻ ൒֯εϖʔε 2 ݸΛ
 ޙΖʹೖΕ͓ͯ͘ͱվߦʹͳΔ
 (markdown ه๏)

Slide 24

Slide 24 text

ঢ়ଶΛ֬ೝ͢Δ • git status ίϚϯυͰݱࡏͷঢ়ଶΛ֬ೝ͢Δ • ͢ΔͱҎԼͷΑ͏ͳද͕ࣔ͞ΕΔ git status README.md ϑΝΠϧ͕௥੻͞Ε͍ͯͳ͍ ݱࡏ master ϒϥϯνʹ͍Δ ࠔͬͨΒ͙͢ʹHJUTUBUVTΛ͢Δ͜ͱʂ
 ݱࡏʹର͢Δඞཁͳ͜ͱΛڭ͑ͯ͘ΕΔ

Slide 25

Slide 25 text

௥Ճͨ͠ϑΝΠϧΛεςʔδʹ Ҡಈ͢Δ • git add ίϚϯυͰϑΝΠϧΛ௥Ճ͢Δ git add README.md εςʔδʹҠಈ͍ͨ͠ ϑΝΠϧ໊Λࢦఆ͢Δ

Slide 26

Slide 26 text

ঢ়ଶΛ֬ೝ͢Δ • ࠶ͼ git status ίϚϯυͰঢ়ଶΛ֬ೝ͢Δ • ͢ΔͱҎԼͷΑ͏ͳද͕ࣔ͞ΕΔ git status README.md ϑΝΠϧ͕ίϛοτର৅ʹͳͬͨ

Slide 27

Slide 27 text

ίϛοτ͢Δ • git commit ίϚϯυͰίϛοτ͢Δ git commit -m 'READMEΛ௥Ճͨ͠' NΦϓγϣϯ͸ίϛοτϝοηʔδΛࢦఆ͢Δ NΦϓγϣϯΛࢦఆ͠ͳ͍৔߹͸ɺ
 DPSFFEJUPSͰઃఆͨ͠ΤσΟλΛىಈ͢Δ ίϛοτ
 ϝοηʔδΛ
 ࢦఆ͢Δ

Slide 28

Slide 28 text

ঢ়ଶΛ֬ೝ͢Δ • ࠶ͼ git status ίϚϯυͰঢ়ଶΛ֬ೝ͢Δ • ͢ΔͱҎԼͷΑ͏ͳද͕ࣔ͞ΕΔ git status ίϛοτର৅͕ͳ͘ͳͬͨ͜ͱ͕Θ͔Δ

Slide 29

Slide 29 text

ίϛοτΛ֬ೝ͢Δ • git log ίϚϯυͰίϛοτϩάΛ֬ೝ͢Δ • ͢ΔͱҎԼͷΑ͏ͳද͕ࣔ͞ΕΔ git log ίϛοτϝοηʔδͱ
 ୭͕͍ͭίϛοτ͔͕ͨ͠Θ͔Δ

Slide 30

Slide 30 text

࠶౓ϑΝΠϧΛมߋ͢Δ • README.md ʹҎԼͷςΩετΛ௥Ճ͢Δ # Git
 ॳΊͯͷ Git ϑΝΠϧͰ͢ɻ 
 ଓ͍ͯ௥ՃͷίϛοτΛߦ͍·͢ɻ ௥ՃߦͷςΩετ ൒֯εϖʔε 2 ݸΛ
 ޙΖʹೖΕΔ

Slide 31

Slide 31 text

ࠩ෼Λ֬ೝ͢Δ • git diff ίϚϯυͰࠩ෼Λ֬ೝ͢Δ Ҏલͷ README.md ͱ ݱࡏมߋͨ͠ README.md ͷࠩ෼Λදࣔͯ͘͠ΕΔ

Slide 32

Slide 32 text

࠶౓εςʔδʹ௥Ճͯ͠
 ίϛοτ͢Δ • ࠶౓ git add ίϚϯυͰεςʔδʹ௥Ճ͠ɺ git commit ίϚϯυͰίϛοτ͢Δ git add README.md
 git commit -m 'READMEʹίϛοτจΛ௥Ճͨ͠'

Slide 33

Slide 33 text

ίϛοτΛ֬ೝ͢Δ • ࠶౓ git log ίϚϯυͰίϛοτϩάΛ
 ֬ೝ͢Δ • ͢ΔͱҎԼͷΑ͏ͳද͕ࣔ͞ΕΔ ίϛοτ͕௥Ճ͞Ε͍ͯΔ͜ͱ͕ Θ͔Δ

Slide 34

Slide 34 text

git add ίϚϯυͷิ଍ • git add . ͰΧϨϯτσΟϨΫτϦҎԼͷϑΝΠϧશͯ ΛεςʔδʹҠಈ͢Δ
 • -A ·ͨ͸ --all ΦϓγϣϯͰมߋͨ͠ϑΝΠϧ΍৽نͰ ࡞੒ͨ͠ϑΝΠϧΛશͯεςʔδʹҠಈ͢Δ • εςʔδʹҠಈ͍ͨ͠ϑΝΠϧΛ֬ೝ͍ͨ͠৔߹͸ɺ git status Ͱ֬ೝ͠ͳ͕Β֤ϑΝΠϧΛҠಈ͢Δͱྑ͍ git add . ϐϦΦυ͸ΧϨϯτσΟϨΫτϦΛҙຯ͢Δ

Slide 35

Slide 35 text

git commit ίϚϯυͷิ଍ • git commit . ͰσΟϨΫτϦ഑Լͷط஌ͷ
 ϑΝΠϧΛશͯίϛοτ͢Δ 
 ※ ৽نϑΝΠϧ͸ؚ·ͳ͍ • git commit -a ط஌ͷϑΝΠϧΛશͯίϛοτ͢Δ
 ˞ ৽نϑΝΠϧ͸ؚ·ͳ͍ • git commit -am '' Ͱมߋͷ͋ΔϑΝΠϧΛίϛοτ ϝοηʔδ෇͖ͰίϛοτͰ͖Δ

Slide 36

Slide 36 text

͜Ε·Ͱͷ·ͱΊ ͦͷ1 • git init : ϩʔΧϧϦϙδτϦΛ࡞੒͢Δ • git add : εςʔδϯάʹϑΝΠϧΛ௥Ճ͢Δ • git commit : ͦͷ࣌఺Λه࿥͢Δ • git diff : ࠩ෼ΛݟΔ • git status : ݱࡏͷঢ়ଶΛݟΔ • git log : ݱࡏͷίϛοτϩάΛݟΔ

Slide 37

Slide 37 text

ϒϥϯνΛ࡞੒ͯ͠
 Ϛʔδͯ͠ΈΑ͏

Slide 38

Slide 38 text

ϒϥϯν࡞੒ͯ͠Ϛʔδ͢ΔྲྀΕ 1 2 3 merge 2 3 task ϒϥϯν master ϒϥϯν

Slide 39

Slide 39 text

ϒϥϯνΛ࡞੒͢Δ • git branch ίϚϯυͰϒϥϯνΛ࡞੒͢Δ git branch task1 ࡞੒͍ͨ͠ϒϥϯν໊Λ ࢦఆ͢Δ

Slide 40

Slide 40 text

• git branch ίϚϯυͰϒϥϯνΛ֬ೝ͢Δ • ͢ΔͱҎԼͷΑ͏ͳද͕ࣔ͞ΕΔ ࡞੒ͨ͠ϒϥϯνΛ֬ೝ͢Δ git branch task1 ϒϥϯν͕࡞੒͞Ε͍ͯΔ͜ͱ͕Θ͔Δ

Slide 41

Slide 41 text

࡞੒ͨ͠ϒϥϯνʹ੾Γସ͑Δ • git checkout ίϚϯυͰϒϥϯνΛ
 ੾Γସ͑Δ git checkout task1 ੾Γସ͍͑ͨϒϥϯν໊Λ ࢦఆ͢Δ

Slide 42

Slide 42 text

• git branch ίϚϯυͰϒϥϯνΛ֬ೝ͢Δ • ͢ΔͱҎԼͷΑ͏ͳද͕ࣔ͞ΕΔ • ΋͘͠͸ git status ίϚϯυͰ΋֬ೝͰ͖Δ
 ੾Γସ͑ͨϒϥϯνΛ֬ೝ͢Δ git branch task1 ϒϥϯν੾ΓସΘ͍ͬͯΔ͜ͱ͕Θ͔Δ task1 ϒϥϯνͰ͋Δ͜ͱ͕Θ͔Δ

Slide 43

Slide 43 text

master ϒϥϯνʹ໭Δ • git checkout ίϚϯυͰ master ϒϥϯνʹ
 ੾Γସ͑Δ git checkout master master ϒϥϯνΛࢦఆ͢Δ

Slide 44

Slide 44 text

ϒϥϯνΛ࡞੒ͯ͠੾Γସ͑Δ • git checkout ίϚϯυͰϒϥϯνΛ࡞੒ͯ͠
 ੾Γସ͑Δ git checkout -b task2 ࡞ۀΛ࢝ΊΔͱ͖͸ɺ
 checkout ίϚϯυͱ
 -b ΦϓγϣϯΛ
 Α͘࢖͏ Cࢦఆͨ͠ϒϥϯνΛ࡞੒ͯ͠੾Γସ͑Δ

Slide 45

Slide 45 text

ϑΝΠϧΛมߋ͢Δ • README.md ʹҎԼͷςΩετΛ௥Ճ͢Δ # Git
 ॳΊͯͷ Git ϑΝΠϧͰ͢ɻ 
 ଓ͍ͯ௥ՃͷίϛοτΛߦ͍·͢ɻ 
 ଓ͍ͯϚʔδΛߦ͍·͢ɻ ௥ՃߦͷςΩετ ൒֯εϖʔε 2 ݸΛ
 ޙΖʹೖΕΔ

Slide 46

Slide 46 text

εςʔδʹ௥Ճͯ͠ίϛοτ͢Δ • git commit -am ίϚϯυͰίϛοτ͢Δ git commit -am 'READMEʹϚʔδจΛ௥Ճͨ͠'

Slide 47

Slide 47 text

master ϒϥϯνʹ໭Δ • git checkout ίϚϯυͰ master ϒϥϯνʹ
 ੾Γସ͑Δ git checkout master

Slide 48

Slide 48 text

master ϒϥϯνʹมߋΛ
 Ϛʔδ͢Δ • git merge ίϚϯυͰ master ϒϥϯνʹ
 task2 ϒϥϯνΛ౷߹͢Δ git merge task2 ϚʔδݩͷϒϥϯνΛࢦఆ͢Δͱ ݱࡏͷϒϥϯνʹϚʔδ͞ΕΔ

Slide 49

Slide 49 text

ίϛοτΛ֬ೝ͢Δ • git log ίϚϯυͰίϛοτϩάΛ֬ೝ͢Δ • ͢ΔͱҎԼͷΑ͏ͳද͕ࣔ͞ΕΔ
 
 
 
 
 task2 ͷίϛοτ͕
 ௥Ճ͞Ε͍ͯΔ͜ͱ͕Θ͔Δ

Slide 50

Slide 50 text

͜Ε·Ͱͷ·ͱΊ ͦͷ2 • git branch : ϒϥϯνΛ࡞੒ͨ͠Γɺϒϥϯν Λ֬ೝͨ͠Γ͢Δ • git checkout : ϒϥϯνΛ੾Γସ͑Δ • git merge : ϒϥϯνಉ࢜ΛϚʔδ͢Δ

Slide 51

Slide 51 text

ϦϞʔτϦϙδτϦͱ
 ࿈ܞͯ͠ΈΑ͏

Slide 52

Slide 52 text

ϦϞʔτϦϙδτϦͱ࿈ܞ͢ΔྲྀΕ ϩʔΧϧϦϙδτϦ ϦϞʔτϦϙδτϦ ϓογϡ ϓϧ ϩʔΧϧϦϙδτϦʹ ίϛοτ͢Δ

Slide 53

Slide 53 text

ϦϞʔτϦϙδτϦΛ࡞੒͢Δ • GitHub ͷτοϓϖʔδʹΞΫηεͯ͠ɺNew repository ͔ΒϦϙδτϦΛ࡞੒͢Δ New repository Λ
 ΫϦοΫ

Slide 54

Slide 54 text

Create repository Λ
 ΫϦοΫ git-handson ͱ
 ೖྗ

Slide 55

Slide 55 text

push ίϚϯυΛ
 ίϐʔͯ͠λʔϛφϧ
 ͔Β࣮ߦ͢Δ


Slide 56

Slide 56 text

push ͯ͠ϒϥ΢βΛ ߋ৽͢Δͱϓογϡ͕ ׬͍ྃͯ͠Δ

Slide 57

Slide 57 text

git pull • νʔϜ։ൃ͍ͯ͠Δ৔߹ʹɺϦϞʔτϦϙδτϦ͕
 ߋ৽͞ΕΔͷͰมߋΛऔΓࠐΉͨΊʹ git pull ίϚϯυͰ ϦϞʔτϦϙδτϦ͔ΒϩʔΧϧϦϙδτϦʹมߋΛ
 औΓࠐΉ࣌ʹ࢖༻͢Δ
 ˞ checkout ͢Δͱ͖͸ݱࡏͷϒϥϯνΛݩʹϒϥϯνΛ ࡞੒͢ΔͷͰ git pull Λͯ͠࠷৽ʹ͓ͯ͘͠ඞཁ͕͋Δ
 
 git pull origin master origin : ϦϞʔτϦϙδτϦͷผ໊

Slide 58

Slide 58 text

git clone • ϦϞʔτϦϙδτϦ͕࡞੒͞Ε͍ͯΔ৔߹ʹ git clone ίϚϯυͰϦϞʔτϦϙδτϦΛ ϩʔΧϧʹऔಘ͢Δ࣌ʹ࢖༻͢Δ
 git clone https://github.com/takasp/example.git ϦϙδτϦͷ URL Λࢦఆ͢Δ

Slide 59

Slide 59 text

GitHub Ͱͷ࣮ࡍͷ࡞ۀϑϩʔ master ϒϥϯν feature ϒϥϯνͳͲ ᶃ pull ͯ͠
 ࠷৽ʹ͢Δ ᶅ ίϛοτ͢Δ ᶆ GitHub ʹ
 push ͢Δ ᶄ checkout ͢Δ ᶇ Pull Request Λ౤͛Δ NBTUFSϒϥϯνΛ
 ࠷৽ʹͨ͠ঢ়ଶͰ
 NBTUFSϒϥϯν͔Β
 DIFDLPVU͠ͳ͍ͱ
 ݹ͍··ͳͷͰ஫ҙ

Slide 60

Slide 60 text

͜Ε·Ͱͷ·ͱΊ ͦͷ3 • git push : ϦϞʔτϦϙδτϦʹϓογϡ͢Δ • git pull : ϦϞʔτϦϙδτϦ͔ΒมߋΛऔಘ ͢Δ • git clone : ϦϞʔτϦϙδτϦ͔ΒϩʔΧϧʹ ϦϙδτϦΛऔಘ͢Δ

Slide 61

Slide 61 text

ԋश

Slide 62

Slide 62 text

ԋश • άϧʔϓΛ࡞Γ·͢ • νʔϜ಺ͷҰਓ͕ GitHub ্ʹϦϙδτϦΛ
 ࡞੒ͯ͠ɺΫϩʔϯ͠·͢ • Git ͷίϚϯυͷҙຯΛҰͭͣͭௐ΂·ͱΊͯɺ
 ίϛοτɺϓογϡ͠߹͍·͠ΐ͏

Slide 63

Slide 63 text

͍͞͝ʹ

Slide 64

Slide 64 text

Git ͸։ൃ͢Δ্Ͱͷ
 σϑΝΫτελϯμʔυ

Slide 65

Slide 65 text

Կࣄ΋खΛಈ͔͞ͳ͍ͱ
 ֮͑ΒΕͳ͍ͷͰɺ
 ࣗ෼ͷखΛಈ͔֮ͯ͑͠Α͏

Slide 66

Slide 66 text

·ͱΊ

Slide 67

Slide 67 text

·ͱΊ • Git ͷ֓ཁ΍ Git Λ࢖ͬͨྲྀΕΛ཈͑ͨ • Git ͷίϚϯυʹ৮Εͨ • Git Λ࢖ͬͯखΛಈ͔ͯ͠Έͨ • ։ൃ͢Δ্Ͱ Git ͸σϑΝΫτελϯμʔυ

Slide 68

Slide 68 text

Part 1 ͓ΘΓ

Slide 69

Slide 69 text

Appendix

Slide 70

Slide 70 text

ࢀߟจݙ • Git͕ɺ͓΋͠Ζ͍΄ͲΘ͔Δجຊͷ࢖͍ํ33 • https://ja.wikipedia.org/wiki/Git • https://git-scm.com/book/ja/v1/࢖͍࢝ΊΔ-࠷ॳͷGitͷߏ੒ • https://qiita.com/uasi/items/69368c17c79e99aaddbf • https://qiita.com/takeo-asai/items/9bc7e25cd94cd8c9adee • http://www-creators.com/archives/2106 • http://kimromi.hatenablog.jp/entry/2015/08/04/082357