Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JavaScript Bootcamp
Search
Recruit Technologies
June 02, 2017
Technology
9
41k
JavaScript Bootcamp
2017年4~5月開催「ブートキャンプ特別講座」の資料になります。
Recruit Technologies
June 02, 2017
Tweet
Share
More Decks by Recruit Technologies
See All by Recruit Technologies
障害はチャンスだ! 障害を前向きに捉える
rtechkouhou
1
640
Flutter移行の苦労と、乗り越えた先に得られたもの
rtechkouhou
3
11k
ここ数年間のタウンワークiOSアプリのエンジニアのチャレンジ
rtechkouhou
1
1.5k
大規模環境をAWS Transit Gatewayで設計/移行する前に考える3つのポイントと移行への挑戦
rtechkouhou
1
1.9k
【61期 新人BootCamp】TOC入門
rtechkouhou
3
41k
【RTC新人研修 】 TPS
rtechkouhou
1
41k
Android Boot Camp 2020
rtechkouhou
0
41k
HTML/CSS
rtechkouhou
10
50k
TypeScript Bootcamp 2020
rtechkouhou
9
45k
Other Decks in Technology
See All in Technology
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
170
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
140
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
130
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
The Role of Developer Relations in AI Product Success.
giftojabu1
1
130
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
110
テストコード品質を高めるためにMutation Testingライブラリ・Strykerを実戦導入してみた話
ysknsid25
7
2.6k
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
160
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
What's new in Ruby 2.0
geeforr
343
31k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Producing Creativity
orderedlist
PRO
341
39k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Statistics for Hackers
jakevdp
796
220k
A Modern Web Designer's Workflow
chriscoyier
693
190k
RailsConf 2023
tenderlove
29
900
A Tale of Four Properties
chriscoyier
156
23k
Transcript
JavaScript Bootcamp 2017, 11th April @ Recruit Technologies
JavaScript Bootcamp • ࠓͰ JavaScript Λ͍͢ • JavaScript ΛΔ •
JavaScript ͰΫϥΠΞϯτΛ࡞Δ • JavaScript ͰαʔόΛ࡞Δ
ͷલʹ • ϦΫϧʔτςΫϊϩδʔζͷ "ϑϩϯτΤϯυΤϯ δχΞ" ͷఆٛͯ͘ਂ͍ • HTML/CSS/JSΛۦͯ͠ΫϥΠΞϯτΛ࡞Δ *͚ͩ Ͱͳ͍*
• ωοτϫʔΫͷࣝαʔόͷجૅࣝ༗͢Δ্ ʹͦΕΒΛ౿·͑ͯαΠτશମͷϢʔβϏϦςΟɾ ύϑΥʔϚϯεΛ্͛Δਓ
ϦΫϧʔτςΫϊϩδʔζͷ ϑϩϯτΤϯυΤϯδχΞ
None
None
ࠓճͷBootcampͰ
͜ͷ͋ͨΓΛڭ͑·͢ɻ
͜ͷ͋ͨΓগ͠ڭ͑·͢ɻ
JavaScriptΛΔ
JavaScriptΛΔ • JavaScript ΛͱΓ͋͑ͣͬͯΈΔ • JavaScript ʹ৮ΕΔ • JavaScript ࠓੲޠ
JavaScriptΛͱΓ͋͑ͣͬͯ ΈΔɻ // ͜͜Ͱ Node.js ͕ೖͬͯΔਓ terminal Λىಈͯ͠ԼهͷίϚϯυΛ࣮ߦ͍ͯͩ͘͠͞ɻ $ node
-v v7.8.0 REPLΛىಈ͠·͠ΐ͏ $ node > // ͜͜Ͱ͏ JavaScript ͕ಈ͖·͢ɺ৭ʑͬͯΈ·͠ΐ͏ɻ > 1 + 1; 2 > var test = "abc"; test > function test() { ... var num = 2; ... return num; ... } undefined > test(); 2
JavaScriptΛͱΓ͋͑ͣͬͯ ΈΔɻ • ࣮ࡍʹHelloWorldΞϓϦΛ࡞ͬͯΈ·͠ΐ ͏ɻҎԼͷϑΝΠϧΛ࡞ͯ͠ɺ helloworld.jsͱ͍͏໊લΛ͚͍ͭͯͩ͘͞ɻ console.log('Hello World'); $ node
helloworld.js Hello World
JavaScriptΛͱΓ͋͑ͣͬͯ ΈΔɻ • ͏গ͠ڽͬͨ͜ͱΛͯ͠Έ·͠ΐ͏ // ϑΝΠϧͷதͰɺ࣍ͷྻΛද͢ɺม pets Λఆٛ͠·͠ΐ͏ɻ const pets
= ['cat', 'dog', 'rat']; // forϧʔϓΛ࡞ͬͯɺྻͷ֤จࣈྻ͕ෳܗʹͳΔΑ͏ʹมߋ͠·͢ɻ // forϧʔϓͷத࣍ͷΑ͏ʹͳΔͰ͠ΐ͏... pets[i] = pets[i] + 's'; forϧʔϓ͕ऴΘͬͨΒɺ console.log() Λͬͯྻ pets Λλʔϛφϧʹදࣔ͠·͠ΐ͏ɻ
JavaScriptΛͱΓ͋͑ͣͬͯ ΈΔɻ • ͔͜͜ΒԋशͰ͢ɻ $ npm install @recruit-tech/javascripting -g $
javascripting ͜ΕΛ࣮ߦ͠·͠ΐ͏ɻ ࣮ߦ͕ऴΘͬͨΒຊޠઃఆʹ্ͨ͠Ͱ্͔Βղ͍ͯΈ·͠ΐ͏ɺͳ͓ Introduction ͱ for ϧʔϓʹ͍ͭͯطʹ্ͷͰͬͯ·͢ͷͰɺҎԼͷΛͱ͖·͠ΐ͏ɻ # ਖ਼نදݱΛ͑ɺϧʔΫ # Arrays more # fizzbuzz 1࣌ؒҐͰʂʂʂ
͍͍ͩͨղ͚ͨΒ࣍ͷߨٛʹ ҠΓ·͢ɻ
JavaScript ࠓੲޠ • JavaScript ʮੈքͰ࠷ޡղ͞Ε͍ͯΔݴ ޠͰ͋Δʯͱ͞Ε͖ͯͨաڈ͕͋Γ·͢ɻ • ʮJavaScript ᠘ʯͱ͔Ͱݕࡧ͢Δͱͨ͘͞Μ ώοτ͢Δͱࢥ͍·͢ɻ
• JavaScriptͲͷΑ͏ʹͯ͠Ͱ͖ͨͷ͔ɺ· ͨͲ͏ਐԽ͍ͯ͠Δͷ͔Λղઆ͠·͢ɻ
ΩοΫΦϑʹߦ͔ΕΔํΩο ΫΦϑʹߦ͖͍ͬͯͯͩ͘͞ɻ
JavaScript ࠓੲޠ • Before JS: 1990 ɺ World Wide Web
Λݩ ʹ্࢙ͨ͠ॳͷϒϥβ͕Ͱ͖Δ Tim Berners Lee શͯͷGod Father ͪͳΈʹ͜ͷલ νϡʔϦϯάΛड
JavaScript ࠓੲޠ • Before JS: 1993 ถࠃཱεʔύίϯϐϡʔλ ݚڀॴʢ௨শNCSAʣ͔ΒMosaicϒϥβ͕ ग़Δ ը૾ͱςΩετ͕Ұॹʹ
ग़Δͱ͍͏ըظతͳ ϒϥβ
JavaScript ࠓੲޠ • Before JS: 1994 Netscape 1.0 released ॳMozillaͱ͍͏ίʔυ
ωʔϜɺʮNetscape ͱॻ͍ ͯMozillaͱಡΉʯͱݴΘ Εͯͨɻ
JavaScript ࠓੲޠ • ͬͱϒϥβʹಈ͖Λʂʂ ݺΜͩʁʁ
JavaScript ࠓੲޠ • ͬͱϒϥβʹಈ͖Λʂʂ ݺΜͩʁʁ ݺΜͰͳ͍ʂʂʂ
JavaScript ࠓੲޠ • ͬͺΓεΫϦϓτݴޠͩΑͶʔʂ
JavaScript ࠓੲޠ • ୭͔ʔ୭͔ࢯʔʔʂʂʂʂϒϥβʹεΫϦ ϓτݴޠΛ࡞Γ͍ͨ୭͔ʔʔʔʂʂʂʂʂ ݺΜͩʁʁ
JavaScript ࠓੲޠ • 1995: Netscape 2.0 ʹ Script ݴޠϕʔεࡌͤ ΔతͰ։ൃ։࢝
SchemeϕʔεͰ͍͍ͷʁ ͍ɺɺɺ͏গ͠JavaͬΆ͘ɺObject ࢦͬΆ͘པΉ
JavaScript ࠓੲޠ • ৽εΫϦϓτݴޠ Scheme ͱ Self (Smalltalk༝དྷͷݴޠ)ΛࠞͥͯJavaͷॻ͖ຯ Λਅࣅͨͷ ໊લԿʹ͠Α͏ɻɻɻ
JavaScript ࠓੲޠ • ৽εΫϦϓτݴޠ Scheme ͱ Self (Smalltalk༝དྷͷݴޠ)ΛࠞͥͯJavaͷॻ͖ຯ Λਅࣅͨͷ ໊લԿʹ͠Α͏ɻɻɻ
JavaScript ࠓੲޠ • ৽εΫϦϓτݴޠ Scheme ͱ Self (Smalltalk༝དྷͷݴޠ)ΛࠞͥͯJavaͷॻ͖ຯ Λਅࣅͨͷ Java͔ΒདྷͯΔ͠ɺ
Mocha ʹ͠Α͏ɻ
JavaScript ࠓੲޠ • Mocha => LiveScript ɺެࣜͳ໊લͬ͜ ͪʹܾఆʂʂʂ ͏ͪΐͬͱScriptݴޠͬΆ͍ํ͕ྑ͍ ͔ɻ
JavaScript ࠓੲޠ • 1995 9݄: Netscape Navigator 2.0 beta ϦϦ
ʔε LiveScriptϦϦʔεͨͧ͠ʔʂʂʂʂ
JavaScript ࠓੲޠ • 1995 12݄: Netscape Navigator 2.0 beta 3
Ϧ Ϧʔε LiveScript JavaScript ʹվ໊͠·͢ʢओʹϚʔέ ςΟϯάతͰɺJavaͷ໊ར༻ʣ
JavaScript ࠓੲޠ • 1995 12݄: Netscape Navigator 2.0 beta 3
Ϧ Ϧʔε ͪͳΈʹಉ࣌ظʹ ServerSide JavaScript ॳϦϦʔ ε Netscape Enterprise Server ੈքॳͷServer SideͰಈ͘JavaScript
JavaScript ࠓੲޠ • 1996: Netscape Navigator 2.0 ϦϦʔε!!! ϦϦʔεͨͧ͠ʂʂʂʂʂ
ޙ
JavaScript ࠓੲޠ • 1996: Netscape Navigator 2.01 ϦϦʔε!!! ϦϦʔεͨͧ͠ʂʂʂʂʂ ͰJavaScript
σϑΥϧτͰແޮ
JavaScript ࠓੲޠ • 1996: Netscape Navigator 2.01 ϦϦʔε!!! ϦϦʔεͨͧ͠ʂʂʂʂʂ ͰJavaScript
σϑΥϧτͰແޮ JavaScript͕ϒϥβͰಈ͔ͤΔ͜ͱʹ
Ұํͦͷࠒ
JavaScript ࠓੲޠ • 1995: Microsoft ͕ Internet Explorer 1.0 ߏ
ங Netscapeܸͩʂʂʂʂʂ
JavaScript ࠓੲޠ • 1995: IE 3.0 Ͱ JScript Λ࣮ Scriptݴޠͬͪ͜࡞ͬͨͧʔ
ୈҰ࣍ϒϥβઓ૪
JavaScript ࠓੲޠ • Netscape vs IE vs
IEଆɿJScript࡞ͬͨͥɺ͜Ε ͔ΒNetscape͓͔͚ͬΔͥ ώϟοϋʔ
Netscapeଆɿ ͍ɺJavaScript͕ಠࣗߏ จͩΒ͚ʹͳΔ
MSͷͰӴઓΛషΔ Netscape
ඪ४Խ W3C Ͱͳ͘ɺ Ϥʔϩού ͷ ECMA ஂମͰنఆ
͔ͯ͘͠ 1997 ECMAScript version 1 ੜ
1998 ECMAScript version 2 جຊతʹͪΐͬͱͨ͠fix
1999/12 ECMAScript v3: ਖ਼نදݱɺจࣈྻؔɺ try- catchߏจɺࣈϑΥʔϚο τ etc
ES v4 2000͔Βࡦఆ
JavaScript ࠓੲޠ vs ํશ͘·ͱ·Βͣɾɾɾɾ
ES v4 2000͔Βࡦఆ => ࢮ
ES v5 => ES3 ͔Βͷ࠷খݶ ηοτͰ࠶ߏ
2009: ES v5 => ES3 ͔Βͷ࠷খݶ ηοτͰ࠶ߏ JSON, strict mode,
getter/ setter,
ES v6 (ίʔυωʔϜ harmony)
JavaScript ࠓੲޠ ΈΜͳͰௐΛऔΓ·͠ΐ͏ͱ͍͏ҙຯͰharmony
2015: ECMAScript 6 ൃץ
2015: ECMAScript 6 ൃץ ΫϥεɺϞδϡʔϧɺΠςϨʔλɺ for/ofϧʔϓɺPythonελΠϧͷδΣ ωϨʔλɺΞϩʔؔɺ2ਐ͓Αͼ 8ਐͷϦςϥϧɺMapɺSetɺ WeekMapɺWeekSetɺϓϩΩγɺς ϯϓϨʔτจࣈྻɺletɺconstɺܕ
͖ྻɺσϑΥϧτҾɺSymbolɺ PromiseɺׂೖɺՄมҾ
ΊͪΌଟ͍
ࠓޙؒͰversionΛ্͛ͯ ͘ɺࠓES2017
ಘΒΕΔࣄɿ harmonyΛେʹ͠·͠ΐ͏
͜ͷߨٛͰͬͨ͜ͱ
✔
ͦΖͦΖΩοΫΦϑऴΘͬ ͨࠒͩ͠ɺ࣍ߦ͖·͠ΐ͏
JavaScriptͰΫϥΠΞϯτΛ ࡞Δ
✔
͜Ε͔ΒTODOཧπʔϧͷ WebΫϥΠΞϯτΛHTML/ CSS/JSͰ࡞ͬͯΒ͍·͢ɻ
࠷ऴܗଶ https://todo-manager- server.now.sh
JavaScript ͰΫϥΠΞϯτΛ࡞ Δ • Todoͷ֎؍Λ࡞Δ(HTML/CSS) • Todoʹಈ͖Λ༩͑Δ(JavaScript/DOM) • ΫϥΠΞϯτͷςετΛॻ͘
·ͣڥߏங
ڥߏங $ git clone https://github.com/recruit- tech/todo-manager.git $ cd todo-manager $
npm install $ npm start
HTML/CSS
HTML • ͱΓ͋͑ͣ TODOཧ༻ͷHTMLΛ࡞ͬͯΈ ·͠ΐ͏ɻ $ cd public $ vim
index.html
ͷߏஙͨ͠HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Todo Manager</title> </head>
<body> <form method="POST" action="/todos"> <input type="text" > <input type="submit" > </form> <div> <ul> <li><input type="checkbox">test</li> <li><input type="checkbox">test</li> <li><input type="checkbox">test</li> <li><input type="checkbox">test</li> </ul> </div> </body> </html>
CSS • TODOཧ༻ͷCSSΛ࡞ͬͯΈ·͠ΐ͏ɻ • ࠷ॳʹϒϥβͰσϑΥϧτͰద༻͞ΕͯΔ cssΛ֎ͨ͢Ίͷreset.cssΛॻ͖·͢ɻ • ࣍ʹtodo.cssΛॻ͖·͢ɻ $ vim
public/css/reset.css $ vim public/css/todo.css
ͷߏஙͨ͠CSS $ git checkout css $ cat public/css/todo.css ֬ೝ͚ͨ͠Ε https://todo-manager-miiijpronq.now.sh
deployͷͨΊʹ $ npm run deploy ͰσϓϩΠͰ͖·͢ɻ ͠ϔϏʔʹ͍͍ͨ߹ $ npm install
now -g ͓ͬͯͬͯ͘ͱศརͰ͢ɻ
ΈΜͳ࡞্ͬͯ͛ͯΈ·͠ΐ ͏ɻ Ͱ͖ͨΒ npm run deploy Ͱ deployͰ͖·͢ɻ
͍Α͍Αຊ
JavaScript ͰΫϥΠΞϯτΛ ࡞Δɻ
JavaScriptͰΫϥΠΞϯτΛ࡞ Δɻ • Ұ୴ਖ਼ղݟͣʹɻී௨ʹ࡞ͬͯΈ·͠ΐ͏ • ͱ͍ͬͯํ͋ͬͨํ͕ྑ͍ͱࢥ͏ͷ Ͱํ͚ͩͰɻ • view ͱ
controller ͱ logic ͚·͠ΐ͏ɻ $ git checkout javascript // ਖ਼ղ
JavaScriptͰΫϥΠΞϯτΛ࡞ Δɻ • HTML͔ΒDOMΛͬͯlogicΛݺͼग़͢Λ ਖ਼֬ʹControllerͱݴͬͨΓ͢Δɻ • HTMLΛߏங͢ΔॴViewͱݺͿ͜ͱ͕ଟ ͍ɻ • Logic७ਮʹॲཧΛද͢ɺݟͨҎ֎ͷ෦
JavaScriptͰΫϥΠΞϯτΛ࡞ Δɻ • ཁݟͨʹؔ͢Δ෦ͱݟͨҎ֎ͷ෦ ʹ͖ͪΜͱ͚Δ͜ͱ͕ॏཁ • MVCͩͷMVVMͩͷFluxͩͷݴ͏ͷͦͷޙ • ԿͰ͜ΕΛ͚Δͷ͕ॏཁͳͷ͔ޙͰड़ Δ
ͱΓ͋͑ͣͬͯΈΑ͏ɻ
ΫϥΠΞϯτΛॻ͘ # public/js ҎԼʹԼهͷεΫϦϓτΛ࡞Δ controller.js - HTML͔ΒmodelͱviewΛܨ͙ͷ view.js - දࣔΛ࡞Δͷ
model.js - fetchͯ͠Λऔಘ͢Δͷ main.js - ΦϒδΣΫτཧɺىͱ࣮ͯ͠ߦ͞ΕΔͷ ίʔυΛͪΒݟ͠ͳ͕ΒҰॹʹॻ͍͍ͯ͜͏ɻ
https://todo-manager- mqcdoklvtw.now.sh
TestΛॻ͘
TestΛॻ͘ • ͖ͬ͞ݟͨͱݟͨҎ֎ͷ෦ʹ͚Ζͱ ݴͬͨͷςετͷͨΊ • ݟͨͷ෦ςετ͠ʹ͍͘ʢ͞Βʹසൟ ʹมߋ͕͋Δʣ • ݟͨͷςετϖΠ͠ͳ͍ࣄ͕ଟ͍ͷͰɺ ݟͨҎ֎Λςετ͢Δ
TestΛॻ͘ • ݟͨҎ֎ɺͭ·Γ model ͷςετͰ͖ Δɻ • ςετ͠ʹ͍͘ίʔυΛॻ͔ͳ͍Α͏ʹ͢Δɻ $ git
checkout test // ਖ਼ղ
TestΛॻ͘ • test Λॻ͘ʹͦͷ··ͰμϝͳͷͰAPI constantsͷ͕ࠩ͠ସ͑ΒΕΔΑ͏ʹ͢Δඞ ཁ͕͋Δɻ • ͜ΕΛ Test Double
ͱ͍͏ // globalͷͰࠩ͠ସ͑ΒΕΔΑ͏ʹ͓ͯ͘͠ɻ const TODO_URL = global.TODO_URL || '/todos'; const fetch = global.fetch;
ͱΓ͋͑ͣͬͯΈΑ͏ɻ
TestΛॻ͘ # test ϥϯφʔΛೖΕΔ $ npm install eater --save-dev #
mock ͷ fetch ΛೖΕΔ $ npm install node-fetch --save-dev # package.json ͷ scripts.test ͷͱ͜ΖΛҎԼͷΑ͏ʹ͢Δ ``` "test": "eater", ``` # test/client/todo.model.js Λॻ͍ͯதΛॻ͘
TestΛॻ͘ # test/client/todo.model.js Λॻ͍ͯதΛॻ͘ const assert = require('assert'); const test
= require('eater/runner').test; const agreedServer = require('agreed-server'); const fetch = require('node-fetch'); test('check todo instance', () => { global.todo = {}; require('../../public/js/model'); assert(global.todo.model) }); # npm test $ npm test
͜ͷߨٛͰͬͨ͜ͱ
✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔
✔
Կ͔࡞Δͷ͕Ұ൪ʹཱͭ
JavaScriptͰαʔόΛ࡞Δ
✔ Γ2ͭɺͪΌͬͪΌͱΓ·͠ΐ͏ɻ
TodoͰ࡞ͬͨMockͷαʔό Λຊʹม͑Δ
JavaScriptͰαʔόΛ࡞Δ • express ΛΠϯετʔϧͯ͠αʔόΛ࡞ͬͯ ΈΔ • npm install express —save
• express ͰstaticαʔόΛ࡞Δ • express ͰϦΫΤετΛॲཧ͢Δ
expressͱʁ • Web Application Framework ͷҰͭ • ॳظͷNode.jsͰҰੈΛ෩ᴆͨ͠ • ࠓͰ͔ͳΓݱͰΘΕͯΔ
expressͱʁ • جຊతʹϧʔλͷػೳͱmiddlewareͷػೳ • ࣮ϧʔλͷػೳmiddlewareͷػೳͷҰ෦ • పఈͨ͠middlewareϞσϧͱ͍͔ͭ͘ͷEasy ͳ͕ؔΈ߹Θͬͨ͞ͷ
JavaScriptͰαʔόΛ࡞Δ $ npm install express --save $ vim app.js ```
'use strict'; const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; app.use(express.static('./public/')); app.listen(PORT, () => { console.log(`Listening in ${PORT}`); }); ``` $ node app.js
JavaScriptͰαʔόΛ࡞Δ # APIͷΛฦ͢ $ npm install body-parser --save ``` 'use
strict'; const express = require('express'); const bodyParser = require('body-parser'); const todoRouter = require('./server/todo-router'); const app = express(); const PORT = process.env.PORT || 3000; app.use(bodyParser.json()); app.use(express.static('./public/')); app.use('/todos', todoRouter); app.listen(PORT, () => { console.log(`Listening in ${PORT}`); }); ```
࠷ऴܗଶ https://todo-manager- server.now.sh
͜ͷߨٛͰͬͨ͜ͱ
✔ ✔ ✔
૯ׅ
✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔
✔ ✔ ✔
͔ͳΓଟ͘ͷͱࠓҰͰ ॲཧ͖͠Εͳ͍͕ೖͬͨ ͣɻ
͜ͷࢿྉΈΜͳʹΔͷͱɺ githubͰ͍ͭͰݟΕΔΑ͏ ʹ͓ͯ͘͠ͷͰ֬ೝͯͩ͘͠ ͍͞ɻ
1 ໌ git ճͰ͢ɻ