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
ruby10
Search
MATSUOKA Kohei
June 11, 2014
Technology
0
330
ruby10
MATSUOKA Kohei
June 11, 2014
Tweet
Share
More Decks by MATSUOKA Kohei
See All by MATSUOKA Kohei
ゼロからわかるRuby超入門の歩き方
machu
2
4.4k
最近のtDiary
machu
1
1.7k
ruby15
machu
0
510
ruby13
machu
0
440
ruby12
machu
1
310
ruby11
machu
0
320
ruby09
machu
0
290
ruby08
machu
0
240
ruby07
machu
0
410
Other Decks in Technology
See All in Technology
グローバルなコンパウンド戦略を支えるモジュラーモノリスとドメイン駆動設計
kawauso
2
2.7k
なぜインフラコードのモジュール化は難しいのか - アプリケーションコードとの本質的な違いから考える
mizzy
59
20k
AIと自動化がもたらす業務効率化の実例: 反社チェック等の調査・業務プロセス自動化
enpipi
0
680
Progressive Deliveryで支える!スケールする衛星コンステレーションの地上システム運用 / Ground Station Operation for Scalable Satellite Constellation by Progressive Delivery
iselegant
1
200
リアーキテクティングのその先へ 〜品質と開発生産性の壁を越えるプラットフォーム戦略〜 / architecture-con2025
visional_engineering_and_design
0
980
Service Monitoring Platformについて
lycorptech_jp
PRO
0
310
単一Kubernetesクラスタで実現する AI/ML 向けクラウドサービス
pfn
PRO
1
300
[CV勉強会@関東 ICCV2025] WoTE: End-to-End Driving with Online Trajectory Evaluation via BEV World Model
shinkyoto
0
280
Moto: Latent Motion Token as the Bridging Language for Learning Robot Manipulation from Videos
peisuke
0
150
大規模モノレポの秩序管理 失速しない多言語化フロントエンドの運用 / JSConf JP 2025
shoota
0
270
はじめての OSS コントリビューション 〜小さな PR が世界を変える〜
chiroito
4
340
ABEMAのCM配信を支えるスケーラブルな分散カウンタの実装
hono0130
4
990
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
174
15k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
658
61k
Visualization
eitanlees
150
16k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
A designer walks into a library…
pauljervisheath
210
24k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
GitHub's CSS Performance
jonrohan
1032
470k
Practical Orchestrator
shlominoach
190
11k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Code Reviewing Like a Champion
maltzj
527
40k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Become a Pro
speakerdeck
PRO
29
5.6k
Transcript
3VCZߨٛୈճ ͡Ίͯͷ8FCΞϓϦ χϑςΟגࣜձࣾدෟߨٛ ࣾձՊֶʹ͓͚Δใٕज़ͱίϯςϯπ࡞***
দԬߒฏ ߨࢣ /55ίϜΣΞ᷂ UXJUUFS!NBDIV IUUQTHJUIVCDPNNBDIV IUUQXXXNBDIVKQEJBSZ
ຊͷߨٛ w ͜Ε·ͰֶΜͩϓϩάϥϛϯάͷࣝΛ׆͔͠ ͯɺ͜Ε͔ΒճͰ8FCΞϓϦΛ࡞Γ·͢ w 8FCΞϓϦಛ༗ͷઃఆ͋Γ·͕͢ɺϓϩάϥ ϛϯάͷجຊมΘΓ·ͤΜ w ݅ذɺ܁Γฦ͠ɺϋογϡɺྻʜ
8FCΞϓϦͱ
8FCͱ 8FCςΩετը૾Λެ։͢ΔΈ த)5.-ͱ͍͏ςΩετ
8FCΞϓϦͱ 8FCͷΈͷ্Ͱಈ͔͢ΞϓϦ
"NB[PO
$PPL1BE
8FCϑϨʔϜϫʔΫ 8FCͷੈք )551 )5.- 3VCZͷੈք 8FCΞϓϦ 8FCͷੈք )551 )5.-
3VCZͷੈք 8FCΞϓϦ 8FCϑϨʔϜϫʔΫ θϩ͔Β8FCΞϓϦΛ ࡞Δͷେม )551ͷղੳίʔυ ϑϨʔϜϫʔΫ͕ 8FCͷੈքͱͷڮ͠
3VCZͷ8FCϑϨʔϜϫʔΫ 3VCZPO3BJMT ɾશ෦ೖΓɺϓϩ༷ ɾ͍͜ͳ͢·Ͱେม 4JOBUSB ɾඞཁ࠷খݶɺγϯϓϧ ɾͪΐͬͱ͏ʹ࠷ద
͜ͷߨٛͰ 4JOBUSBΛͬͯ 8FCΞϓϦΛ࡞͠·͢ ʻݶͷߨٛΛडߨ͞Ε͍ͯΔํʼ ݶͰ3BJMTΛ͍ͬͯ·͕͢ɺ4JOBUSBΛ͏͜ͱͰ 8FCΞϓϦͷجຊΛཧղ͢Δʹཱͪ·͢
(FN 4JOBUSBαΠτʹ͔Γ͍͢νϡʔτϦΞϧ͕͋Γ·͢ɻ IUUQXXXTJOBUSBSCDPNJOUSPIUNM
4JOBUSBͷ Πϯετʔϧ
3VCZຊମ ίΞ 3VCZͷศརͳಓ۩ͨͪ ΈࠐΈϥΠϒϥϦ 4USJOH "SSBZ )BTI ඪ४ఴϥΠϒϥϦ
$(* QQ ͦͷଞͷϥΠϒϥϦ 3BJMT 4JOBUSB ɾ3VCZຊମʹΈࠐΈ ɾSFRVJSFͳ͠Ͱ͑Δ ɾ3VCZͱҰॹʹ ɾSFRVJSFͰ͑Δ ɾ3VCZͱผʹ͞ΕΔ ɾΠϯετʔϧͯ͠͏
3VCZ(FNTPSH ϥΠϒϥϦΛཧɾͯ͘͠ΕΔαΠτɻ ެ։͢ΔϥΠϒϥϦΛHFN ๅੴ ͱݺͿɻ "QQ4UPSF1MBZ4UPSFͷ3VCZ൛ɻ ͨͩ͠৹ࠪͳ͍ 1FSMͷ$1"/1)1ͷ1&"3ͳͲɺ ଞݴޠʹࣅͨΈ͕͋Γ·͢
3VCZ(FNTͰ ެ։͞Ε͍ͯΔϥΠϒϥϦ w ը૾ͷϦαΠζɺ&YDFMϑΝΠϧͷૢ࡞ɺ 5XJUUFSΫϥΠΞϯτͳͲͳͲ w ສछྨͷϥΠϒϥϦ͕ొ͞Ε͍ͯ·͢ w 3VCZ(FNTͷ͓͔͛ͰɺϥΠϒϥϦΛ؆୯ʹ ΠϯετʔϧͰ͖·͢
IUUQTXXXqJDLSDPNQIPUPTTIFFQJFT
4JOBUSBͷ Πϯετʔϧ
4JOBUSBHFNܗࣜͷϥΠ ϒϥϦͰ͞Ε͍ͯ·͢ɻ $4"ʹ4JOBUSBΛΠϯε τʔϧͯ͠Έ·͠ΐ͏ɻ
4JOBUSBͷΠϯετʔϧ $4"ͷը໘Ͱ࡞ۀ͠·͢ɻ IPNFQSPKFDUϑΥϧμʹ͋Δ(FNpMFͱ͍͏໊ લͷϑΝΠϧΛ։͖·͢ɻ
4JOBUSBͷΠϯετʔϧ (FNpMFʹ͍͍ͨϥΠϒϥϦͷ໊લΛॻ͖·͢ɻ 4JOBUSBΛ͍͍ͨͷͰɺHFNTJOBUSBΛهɻ TPVSDFIUUQTSVCZHFNTPSH HFNVOJDPSO HFNTJOBUSB (FNpMF 4JOBUSBΛ͍͍ͨͷͰՃ
4JOBUSBͷΠϯετʔϧ όϯυϧΠϯετʔϧΛ։͖ɺ࣮ߦΛબ͠·͢ ! ! ը໘্෦ʹʮCVOEMFJOTUBMM͕ྃ͠·ͨ͠ʯ ͱදࣔ͞ΕΕΠϯετʔϧྃͰ͢ɻ
ิCVOEMFJOTUBMM w (FNpMFʹॻ͍ͯ͋ΔϥΠϒϥϦ໊ HFN Λ ಡΈࠐΜͰɺ3VCZ(FNTPSH͔ΒϥΠϒϥϦ Λμϯϩʔυ͢ΔΈͰ͢ w $-*͔Β࣮ߦͰ͖·͢
DEQSPKFDU CVOEMFJOTUBMM CVOEMF HFNTJOBUSB TJOBUSB (FNpMF
ิCVOEMFJOTUBMM w μϯϩʔυͨ͠ϥΠϒϥϦQSPKFDU WFOEPSCVOEMFϑΥϧμʹอଘ͞Ε·͢
4JOBUSBͰ࡞Δ ͡Ίͯͷ8FCΞϓϦ
$4" w /JGUZͷ$4"ʹɺ8FCΞϓϦΛ؆୯ʹಈ͔ ͨ͢ΊͷΈ͕༻ҙ͞Ε͍ͯ·͢ 04 -JOVY $4" /JGUZͷαʔό 8FCαʔό
/HJOY 3VCZ
4JOBUSBΞϓϦͷߏ 6OJDPSO 3VCZαʔό DPOpHSV )FMMP 8PSMEΛදࣔ 6OJDPSO 3VCZαʔό DPOpHSV
4JOBUSBΛ࣮ߦ͢Δઃఆ 4JOBUSB BQQSC ͜͜ʹ8FCΞϓϦΛॻ͘ มߋલ มߋޙ 4JOBUSB͕ಈ͘Α͏ʹ ϑΝΠϧΛॻ͖͑·͢ˠᶃᶄ (FNpMF ͏ϥΠϒϥϦΛࢦఆ (FNpMF ͏ϥΠϒϥϦΛࢦఆ มߋࡁΈ
ᶃ8FCΞϓϦͷ࡞ QSPKFDUϑΥϧμʹBQQSCϑΝΠϧΛ࡞͠· ͢ɻ͜ͷϑΝΠϧ͕8FCΞϓϦຊମʹͳΓ·͢ɻ SFRVJSFTJOBUSB ! HFUEP )FMMPTJOBUSB FOE BQQSC
4JOBUSBϥΠϒϥϦΛಡΈࠐΉ τοϓϖʔδʹΞΫηε ͞ΕͨΒ HFU ɺ)FMMP TJOBUSBΛදࣔ͢Δ
ᶄDPOpHSVͷॻ͖͑ DPOpHSV8FCΞϓϦͷجຊઃఆΛॻ͘ϑΝΠϧ Ͱ͢ɻ4JOBUSBΛ࣮ߦ͢ΔΑ͏ʹॻ͖͑·͢ɻ DMBTT)FMMP EFGDBMM FOW < \$POUFOU5ZQF
UFYUIUNM^ <)FMMP 8PSME>> FOE FOE ! NBQEP SVO)FMMPOFX FOE SFRVJSFBQQ SVO4JOBUSB"QQMJDBUJPO 8FCΞϓϦ BQQSC ΛಡΈࠐΉ 4JOBUSBΛ࣮ߦ͢Δ DPOpHSV มߋલ DPOpHSV มߋޙ
VOJDPSOͷ࠶ىಈ w σʔϞϯཧΛ։͖ɺVOJDPSOϓϩηεΛ࠶ىಈ ʢϦελʔτʣ͠·͢ɻ w ࠶ىಈ͢Δ͜ͱͰɺमਖ਼ͨ͠BQQSCDPOpHSV ͷ༰͕ಡΈࠐ·Ε·͢ɻ
8FCΞϓϦʹΞΫηε w $4"ࠨ্ͷϦϯΫΛΫϦοΫ͢Δͱɺ࡞͠ ͨ8FCΞϓϦʹΞΫηεͰ͖·͢ɻ BQQSCʹॻ͍ͨ༰͕දࣔ͞ΕΔ
8FCΞϓϦͷղઆ
8FCαʔό 8FCͷΈ ϒϥβʹΞυϨεΛೖྗ 8FCϒϥβ 04 8JO .BD σʔλ͍ͩ͘͞ 04
-JOVYͳͲ XXXZBIPPDPKQ ϦΫΤετ͕ ඈͼ·͢
8FCαʔό 8FCͷΈ 8FCϒϥβ 04 8JO .BD 04 -JOVYͳͲ XXXZBIPPDPKQ
Ϩεϙϯε͕ ฦ͖ͬͯ·͢ σʔλ͍ͩ͘͞ ςΩετ )5.- ը૾ +1&( Ͳ͏ͧ ϨεϙϯεΛ ը໘ʹදࣔ͠·͢
8FCͷΈ w )551ͱ͍͏ܾ·Γ͝ͱΛͬͯɺαʔό্ͷ ը૾ςΩετΛऔಘ͠·͢ 8FCϒϥβ 04 8JO .BD 04
-JOVYͳͲ 8FCαʔό ͜ͷσʔλ͍ͩ͘͞ Ͳ͏ͧ )551 ʢͱ͍͏ܾ·Γ͝ͱʣ ςΩετ )5.- ը૾ +1&( ςΩετ )5.- ը૾ +1&(
8FCϒϥβ XXX ZBIPPDPKQ 8FCαʔό IUUQ͆͆͆ZBIPPDPKQ (&5)551 )PTUXXXZBIPPDPKQ $POOFDUJPOLFFQBMJWF )5510,
4FSWFSOHJOY %BUF4VO +VO(.5 IUUQEBJMZOFXTZBIPPDPKQ GDEPNFTUJDXFBUIFS EBJMZOFXT ZBIPPDPKQ (&5GDEPNFTUJDXFBUIFS)551 )PTUXXXZBIPPDPKQ $POOFDUJPOLFFQBMJWF )5510, 4FSWFSOHJOY %BUF4VO +VO(.5 τοϓϖʔδ͍ͩ͘͞ ఱؾͷϖʔδ͍ͩ͘͞ Ͳ͏ͧ Ͳ͏ͧ :BIPP+"1"/ͷྫ ϦϯΫΛΫϦοΫ
63-8FC্ͷॅॴ w 63-ϦιʔεʢςΩετը૾ʣͷॴΛද͢ IUUQEBJMZOFXTZBIPPDPKQGDEPNFTUJDXFBUIFS εΩʔϜ ϗετ ύε ௨৴ํࣜɻ҉߸Խ ͷ࣌IUUQTΛ
͏ɻଞʹGUQͳ Ͳ͕͋Δɻ ଓ͢Δαʔόͷ໊લ αʔό্ͷϦιʔεʢը ૾ςΩετʣͷॴ
࠷ۙͷϒϥβ63-Λলུ IUUQΛলུ 1$൛$ISPNF αʔό໊ͷΈදࣔ J04൛4BGBSJ
8FCαʔό ͖ͬ͞࡞ͬͨ8FCΞϓϦͰ HFUEP )FMMPTJOBUSB FOE ! ! ! !
YYYDTBOFU YYYDTBOFU )FMMPTJOBUSB 8FC ϒϥβ )FMMPTJOBUSB 6OJDPSO 4JOBUSB ύε͕ͷϦΫΤετʹରͯ͠ )FMMPTJOBUSBͱ͍͏Ϩεϙϯε Λฦ͢8FCΞϓϦͱͯ͠ಈ࡞͠·͢
ԋश
8FCαʔό 63-Λ૿ͯ͠ΈΑ͏ HFUEP )FMMPTJOBUSB FOE ! HFUCZFEP #ZFTJOBUSB FOE
YYYDTBOFU YYYDTBOFU )FMMPTJOBUSB 8FC ϒϥβ YYYDTBOFUCZF #ZFTJOBUSB )FMMPTJOBUSB #ZFTJOBUSB 6OJDPSO 4JOBUSB
ԋश w ΞΫηε͢Δͱ#ZFTJOBUSBͱදࣔ͢Δ 63-YYYDTBOFUCZFΛՃ͠·͢ BQQSCΛฤूͯ͠HFUCZFEPΛ Ճʢલϖʔδࢀরʣ VOJDPSOαʔόΛ࠶ىಈˡΕͣʹʂ w
8FCϒϥβͰՃͨ͠63-ʹΞΫηε
ԋश w ΞΫηε͢Δͱݱࡏ࣌ࠁΛදࣔ͢Δ63- YYYDTBOFUOPXΛՃ͠·͢ w ݱࡏ࣌ࠁ5JNFOPXͰऔಘͰ͖·͢ w ͍ํ3VCZϚχϡΞϧͳͲͰௐͯΈ·͠ΐ͏ w จࣈྻͷมΛΕͣʹʂ
ݱࡏ࣌ࠁͷऔಘ OPX5JNFOPX
·ͱΊ
8FCΞϓϦͱ 8FCͷΈͷ্Ͱಈ͔͢ΞϓϦ
8FCϑϨʔϜϫʔΫ 8FCͷੈք )551 )5.- 3VCZͷੈք 8FCΞϓϦ 8FCͷੈք )551 )5.-
3VCZͷੈք 8FCΞϓϦ 8FCϑϨʔϜϫʔΫ θϩ͔Β8FCΞϓϦΛ ࡞Δͷେม )551ͷղੳίʔυ ϑϨʔϜϫʔΫ͕ 8FCͷੈքͱͷڮ͠
3VCZͷ8FCϑϨʔϜϫʔΫ 3VCZPO3BJMT ɾશ෦ೖΓɺϓϩ༷ ɾ͍͜ͳ͢·Ͱେม 4JOBUSB ɾඞཁ࠷খݶɺγϯϓϧ ɾͪΐͬͱ͏ʹ࠷ద
(FN 4JOBUSBαΠτʹ͔Γ͍͢νϡʔτϦΞϧ͕͋Γ·͢ɻ IUUQXXXTJOBUSBSCDPNJOUSPIUNM
3VCZຊମ ίΞ 3VCZͷศརͳಓ۩ͨͪ ΈࠐΈϥΠϒϥϦ 4USJOH "SSBZ )BTI ඪ४ఴϥΠϒϥϦ
$(* QQ ͦͷଞͷϥΠϒϥϦ 3BJMT 4JOBUSB ɾ3VCZຊମʹΈࠐΈ ɾSFRVJSFͳ͠Ͱ͑Δ ɾ3VCZͱҰॹʹ ɾSFRVJSFͰ͑Δ ɾ3VCZͱผʹ͞ΕΔ ɾΠϯετʔϧͯ͠͏
(FNpMF (FNpMFʹ͍͍ͨϥΠϒϥϦͷ໊લΛॻ͖·͢ɻ 4JOBUSBΛ͍͍ͨͷͰɺHFNTJOBUSBΛهɻ TPVSDFIUUQTSVCZHFNTPSH HFNVOJDPSO HFNTJOBUSB (FNpMF 4JOBUSBΛ͍͍ͨͷͰՃ
ิCVOEMFJOTUBMM w (FNpMFʹॻ͍ͯ͋ΔϥΠϒϥϦ໊ HFN Λ ಡΈࠐΜͰɺ3VCZ(FNTPSH͔ΒϥΠϒϥϦ Λμϯϩʔυ͢ΔΈͰ͢ w $-*͔Β࣮ߦͰ͖·͢
DEQSPKFDU CVOEMFJOTUBMM CVOEMF HFNTJOBUSB TJOBUSB (FNpMF
4JOBUSBΞϓϦͷߏ 6OJDPSO 3VCZαʔό DPOpHSV )FMMP 8PSMEΛදࣔ 6OJDPSO 3VCZαʔό DPOpHSV
4JOBUSBΛ࣮ߦ͢Δઃఆ 4JOBUSB BQQSC ͜͜ʹ8FCΞϓϦΛॻ͘ มߋલ มߋޙ 4JOBUSB͕ಈ͘Α͏ʹ ϑΝΠϧΛॻ͖͑·͢ˠᶃᶄ (FNpMF ͏ϥΠϒϥϦΛࢦఆ (FNpMF ͏ϥΠϒϥϦΛࢦఆ มߋࡁΈ
8FCαʔό ͖ͬ͞࡞ͬͨ8FCΞϓϦͰ HFUEP )FMMPTJOBUSB FOE ! ! ! !
YYYDTBOFU YYYDTBOFU )FMMPTJOBUSB 8FC ϒϥβ )FMMPTJOBUSB 6OJDPSO 4JOBUSB
8FCͷΈ w )551ͱ͍͏ܾ·Γ͝ͱΛͬͯɺαʔό্ͷ ը૾ςΩετΛऔಘ͠·͢ 8FCϒϥβ 04 8JO .BD 04
-JOVYͳͲ 8FCαʔό ͜ͷσʔλ͍ͩ͘͞ Ͳ͏ͧ )551 ʢͱ͍͏ܾ·Γ͝ͱʣ ςΩετ )5.- ը૾ +1&( ςΩετ )5.- ը૾ +1&(
63-8FC্ͷॅॴ w 63-ϦιʔεʢςΩετը૾ʣͷॴΛද͢ IUUQEBJMZOFXTZBIPPDPKQGDEPNFTUJDXFBUIFS εΩʔϜ ϗετ ύε ௨৴ํࣜɻ҉߸Խ ͷ࣌IUUQTΛ
͏ɻଞʹGUQͳ Ͳ͕͋Δɻ ଓ͢Δαʔόͷ໊લ αʔό্ͷϦιʔεʢը ૾ςΩετʣͷॴ
ࢀߟࢿྉ
BCD ࣮ߦ݁Ռ QVUTBCD ॻࣜ 3VCZίʔυ ࣮ߦ݁Ռ TIFMMίϚϯυ MT
ࡶஊɾ࣭༻GBDFCPPLάϧʔϓ IUUQTXXXGBDFCPPLDPNHSPVQTIJUPUTVCBTIJSC ɾՃೖඇՃೖࣗ༝Ͱ͢ ɾՃೖඇՃೖʹؔ͠·ͤΜ ɾࢀՃऀҰཡެ։͞Ε·͢ ɾࢀՃऀελοϑͱҰࡢɺࡢɺࠓͷडߨऀͰ͢ ɾॻ͖ࠐΈࢀՃऀͷΈݟ͑·͢ ɾرऀΞΫηεͯ͠ࢀՃਃ͍ͯͩ͘͠͞ ɾࡶஊɺ࣭ɺٞͳͲԿͰؾʹͤͣͲ͏ͧʙ ɾ࣭ʹ͑ΒΕΔਓ͍͑ͯ͋͛ͯͩ͘͞
ɾߨࢣਞ͓͑͠·͢ ɾೖͬͨΒܰࣗ͘ݾհ͓Ͷ͕͍͠·͢