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
ScalaMatsuri CFPひとめぐり / ScalaMatsuri CFP quick tour
Search
Taisuke Oe
January 08, 2020
Technology
0
370
ScalaMatsuri CFPひとめぐり / ScalaMatsuri CFP quick tour
Presented on January 8th 2020 at Pre ScalaMatsuri meetup.
Taisuke Oe
January 08, 2020
Tweet
Share
More Decks by Taisuke Oe
See All by Taisuke Oe
ScalaMatsuriの座長を募集するワケ / Why we're looking for new chairperson
taisukeoe
0
1.3k
なぜ Scala 3 で変わったのか / Why things are changed in Scala3?
taisukeoe
7
2.8k
実践Monix導入 / Monix in Action
taisukeoe
4
920
Scalaで関数型 再入門
taisukeoe
13
2.2k
Other Decks in Technology
See All in Technology
オーナーシップを持つ領域を明確にする
konifar
13
3.1k
開発パフォーマンスを最大化するための開発体制
ham0215
2
280
SPI原点回帰論:事業課題とFour Keysの結節点を見出す実践的ソフトウェアプロセス改善 / DevOpsDays Tokyo 2024
visional_engineering_and_design
4
1.9k
Hands-on Gemini, the Google DeepMind LLM
meteatamel
1
110
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
160
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.4k
DevOpsメトリクスとアウトカムの接続にトライ!開発プロセスを通して計測できるメトリクスの活用方法
ham0215
2
230
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
110
私が trocco を推す理由
__allllllllez__
1
210
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
3
12k
Java EE/Jakarta EEの現状と将来―クラウドネイティブ時代にJava EEは対応できるのか?―
takakiyo
1
140
DevOpsDays History and my DevOps story
kawaguti
PRO
9
2.5k
Featured
See All Featured
Design by the Numbers
sachag
274
18k
The Illustrated Children's Guide to Kubernetes
chrisshort
31
46k
Infographics Made Easy
chrislema
238
18k
Fireside Chat
paigeccino
21
2.6k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
14
1.6k
Raft: Consensus for Rubyists
vanstee
132
6.3k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
Done Done
chrislema
178
15k
Become a Pro
speakerdeck
PRO
11
4.5k
Optimizing for Happiness
mojombo
370
69k
Clear Off the Table
cherdarchuk
84
310k
The Art of Programming - Codeland 2020
erikaheidi
42
12k
Transcript
4DBMB.BUTVSJ $'1ͻͱΊ͙Γ ϓϨ4DBMB.BUTVSJ
ࣗݾհ w 5BJTVLF0F w 5XJUUFS!0&@VJB w 4DBMB.BUTVSJΛओ࠵͍ͯ͠·͢ɻ w εϐʔΧʔܦݧ w
4DBMB%BZT w +$$POG w 4DBMBؔαϛοτ w 4DBMB.BUTVSJͳͲ
ࠓ͍͑ͨ͜ͱ w εϐʔΧʔָ͍ͬͯ͠Α w εϐʔΧʔͱͯ͠ୈҰาΛ౿Έग़͢ಓ͠Δ
͑ΒΕͳ͍͜ͱ w ❌εϐʔΧʔͱͯ͠ͷϕετϓϥΫςΟε w ❌4DBMB.BUTVSJͰԠืηογϣϯ͕࠾༻͞ΕΔํ๏
ΞδΣϯμ w ͦͦɺͳͥΧϯϑΝϨϯεͰΔͷ͔ʁ w εϐʔΧʔʹͳΔʹɺͲ͏͢Ε͍͍ͷ͔ʁ
ͳͥΧϯϑΝϨϯεͰ Δͷ͔ʁ
ͳͥΧϯϑΝϨϯεͰ Δͷ͔ʁ ࢲͷ߹ w εϐʔΧʔʹͳΔͷ͕ɺҰ൪ָ͘͠աͤ͝Δɻ w ษڧ͢ΔϞνϕʔγϣϯʹͳΔɻ w ͕ࣗਪٕ͢ज़Λɺਖ਼͍͍͠ํͱͱʹΊΒΕΔɻ w
ࢀՃඅͷෛ୲͕ݮΔʢՄೳੑ͕ߴ͍ʣɻ
w ࣗΛͬͯ͘Β͏͖͔͚ͬʹͳΔɻ w ໘ന͍Πϕϯτʹ༠ͬͯΒ͑ͨΓɺظతʹࣗ ͷࣄʹܨ͕ͬͨΓ͢Δɻ w ॳର໘ͷਓɺࣗͷ͖ͳʢొஃωλʣͰ͔͠ ͚͖ͯͯ͘ΕΔ্͕͕֬Δɻ w ͦͷݶΓͷೱ͍ू·ΓʢεϐʔΧʔσΟφʔͳͲʣͰٞ
Ͱ͖Δɻ ͳͥΧϯϑΝϨϯεͰ Δͷ͔ʁ ࢲͷ߹
εϐʔΧʔʹͳΔʹ Ͳ͏͢Ε͍͍ͷʁ
εϐʔΧʔʹͳΔʹ Ͳ͏͢Ε͍͍ͷʁ w ηογϣϯެืܕͷΧϯϑΝϨϯεͰΑ͋͘ΔྲྀΕ ςʔϚΛܾΊΔ $'1ʹԠื͢Δ མ݁ՌΛΔ τʔΫͷ४උ͢ΔʢεϥΠυΛ࡞Δʣ ຊ൪ʹΔ
εϐʔΧʔʹͳΔʹ Ͳ͏͢Ε͍͍ͷʁ w 4DBMB.BUTVSJͷྲྀΕ ςʔϚΛܾΊΔΠϚίί $'1ʹԠื͢Δʜ"OZXIFSFPO&BSUIక མ݁ՌΛΔʜ݄த τʔΫͷ४උ͢ΔʢεϥΠυΛ࡞Δʣʜ݄ ຊ൪ʹΔʜ݄ɾ
ςʔϚΛܾΊΔ
ࠓ͕ͧ͘͞Μ ΑΖ͓͘͠ئ͍͠·͢ʂ ࢀߟϓϨ4DBMB.BUTVSJͷͱ͖ͷࢿྉ
$'1ʹԠื͢Δ
$'1ʹԠื͢Δ w ͜ͷ߹ɺ$'1$BMMGPS1SPQPTBMT1SFTFOUBUJPOTͷ ུɻ w ηογϣϯͷҰൠืूͷ͜ͱɻ w $'1ʹର͢ΔԠืͷ͏ͪɺ࠾༻͞Εͨͷ͕λΠϜςʔϒ ϧׂΓͯΒΕ·͢ɻ
4DBMB.BUTVSJ$'1 w ࠓͷΧϯϑΝϨϯε̐τϥοΫʂ w ৄࡉͪ͜Β w IUUQTTDBMBNBUTVSJPSHKBDGQ
Ԡืཁ߲ൈਮ Scala Scala 40 100 20 ) 200 300 (
) 3 1 Repository Pull Request
Ԡืཁ߲ൈਮ Scala Scala 40 100 20 ) 200 300 (
) 3 1 Repository Pull Request
4DBMBϏΪφʔͷఆٛ ͜ͷΧςΰϦɺScalaͰίʔυΛॻ͖࢝Ίͨਓ͕ΑΓScalaΛ͍͜ͳͯ͠ɺૉૣ͘σόοάͨ͠Γɺద ͳநԽΛ͍͜ͳͨ͠ΓɺΫϦʔϯͰ҆શͳίʔυΛॻ͚ΔΑ͏ʹͳΔͨΊͷηογϣϯͰ͢ɻ ྫ͑ ɺҎԼͷΑ͏ͳࢀՃऀΛରͱͨ͠ηογϣϯ͕֘͠·͢ɻ • ScalaͷίϨΫγϣϯૢ࡞Λ͢Δͱ͖ʹmap, flatMap, filter, findͳͲɺجຊతͳͷҎ֎͋·Γͬͨ
͜ͱ͕ͳ͍ɻ • forࣜͰॻ͚Δͷͱͦ͏Ͱͳ͍ͷͷ۠ɺॻ͚Δ͕݅Α͔͘Βͳ͍ɻ • OptionɺTryɺEitherͷ͍͚͕Α͔͘Βͳ͍ɻ͍ͭྫ֎Λ͛ͯ͠·͏ɻ • case classͱclassɺabstract classɺtraitͳͲͷҧ͍͕Α͔͘Βͳ͍ɻ • ύλʔϯϚονΛɺmatchࣜҎ֎Ͱͬͨ͜ͱ͕ͳ͍ɻෳͷύλʔϯΛΈ߹Θ͍ͤͯͬͯͳ͍ɻ • ܕύϥϝʔλʔimplicitͷ͍ॴ͕Α͔͘Βͳ͍ɻͦΕΒ͕ΘΕͨίʔυΛಡΊͳ͍ɻ ৽͍͠ΓޱͰ͜͏͍ͬͨجૅΛղઆ͢Δηογϣϯɺ࠶ೖ͢ΔηογϣϯͳͲɺ͞·͟·ͳΓޱ ͰͷηογϣϯΛืू͠·͢ɻͥͻ͝Ԡื͍ͩ͘͞ɻ
બߟํ๏ൈਮ ScalaMatsuri 2 w ͲͪΒͷબߟํ๏ʹ߹Θͤͨํ͕௨Γ͍͢ɺʢࠓ ಛʹʣͳ͍Ͱ͢ɻ w ԦಓͰมԽٿͰɺۀؔ࿈ͰझຯܥͰܴͰ͢ɻ
4DBMB.BUTVSJ$'1 w కΊΓ"OZXIFSFPO&BSUI w +45
4DBMB.BUTVSJམ w ηογϣϯืूͷకΊΓ͔Βɺि͔ؒΒϲ݄͙Β͍Ͱૹ ͞Ε·͢ɻ4DBMB.BUTVSJͰɺ݄ࠒʙ݄ॳ०Λ༧ఆ͍ͯ͠ ·͢ɻ w Α͋͘ΔޡղΑ͋͘Δޡղʮ࠾༻͞Εͳ͍࣭͕͍ʯͰ͋ Γ·ͤΜɻૉΒ͍͠ηογϣϯͰɺௌऺͷʹ͋Θͳ͔ͬ ͨΓɺΧςΰϦͷภΓʹΑͬͯ࠾༻͞Εͳ͔ͬͨΓ͠·͢ɻ ؾΛམͱ͞ͳ͍Ͱ͍ͩ͘͞ɻ
w 4DBMB.BUTVSJͰʹΞϯΧϯϑΝϨϯεΛ։࠵͠·͢ɻ ʹొஃ͕ܾఆ͞Ε·͢͠ɺଟ͍ͷͰɺͥͻͦͪΒ νϟϨϯδͯ͠Έ͍ͯͩ͘͞ɻ
εϥΠυ࡞ w εϥΠυ࡞͠͡ΊΔલʹɺࢫΛ໌֬ʹ͠·͠ΐ͏ʂ w ʮҰ൪͍͑ͨϝοηʔδʯͬͯͳΜͩΖʁࣗͷϝο ηʔδΛཧղͯ͠Β͏ʹɺͲΜͳࣝࠜڌ͕ඞཁ ͩΖ͏ʁͲ͏͓͖͍ͯ͑ͯͨ͠ࣄ࣮ͬͯɺͳΜͩΖ ͏ʁ
ٕज़తݕূ w ٕज़తͳهड़ʹؒҧ͍͕ͳ͍͔ɺࣗͰݕূ͢ΔบΛͭ ͚·͠ΐ͏ɻ w ݴ༿ͷఆ͕ٛਖ਼͔֬ओޠ͕దͳେ͖͔͞ w அݴ͍ͯ͠Δͷʹ͍ͭͯɺྫ֎ଘࡏ͠ͳ͍ͷ͔
ٕज़తݕূ w ίʔυΛॻ͍ͯಈ͔ͯ͠ݕূͯ͠ΈΔ w ΦϑΟγϟϧͷυΩϡϝϯτʢධͷྑ͍ʣॻ੶ͳͲ ͱɺໃ६͕ͳ͍͔ௐΔ w ʢ044ͳΒʣ֘͢ΔιʔείʔυΛಡΉ w ͦͷ্Ͱɺಉ྅ͳͲʹϨϏϡʔΛґཔ͢Δͷྑ͍ϓϥ
ΫςΟεͰ͢ʂ
࿅श w εϥΠυΛΑΓྑ͘͢ΔͨΊͷ࿅श w εϥΠυ͕Ұ௨ΓͰ͖ͨΒɺ·ͣεϥΠυͷϒϥο γϡΞοϓͷͨΊʹܰ͘࿅शͯ͠Έ·͠ΐ͏ɻ w ͻͱΓͰ࿅श w ·ͣҰਓͰ௨ͯͬͯ͠ΈΔͷ͕ΦεεϝͰ͢ɻ୯७
ʹ׳ΕΔ͚ͩͰͳ͘ɺͷےಓͷෆࣗવ͞ɺͳ ෦ͳͲʹؾ͖ͮ·͢ɻ
࿅श w εϥΠυͷϒϥογϡΞοϓ͕ਐΜͰ͖ͨΒɺࣾൃදձ ɺษڧձͳͲͷ࿅शॴΛͭ͘Γ·͠ΐ͏ɻ w ϑΟʔυόοΫΛੵۃతʹΒ͏ͱɺࢫͷෆ໌ྎͳ ɺٕज़తͳؒҧ͍ͳͲʹؾ͖͍ͮ͢Ͱ͢ɻ
εϥΠυఏग़ w ΧϯϑΝϨϯεʹΑͬͯඞཁͰ͢ɻ w 4DBMB.BUTVSJͰɺӳޠɾࣈນ$P$ͷ֬ೝͷͨΊɺ ݄ͷఏग़Λ͓ئ͍͍ͯ͠·͢ɻ w ͦͷޙඍमਖ਼ՄೳͰ͢ɻͦͷ߹ɺεϥΠυΛ ࠶ૹ͍ͯͩ͘͠͞ɻ
ຊ൪લͷ࿅श w ൃදʹ׳ΕΔͨΊʹɺ࿅श͍͖ͯ͠·͠ΐ͏ɻ࠷ॳͷ͏ͪ ɺࣗͷ͍ͯ͠Δ༷ࢠΛಈըͰࡱͬͯݟฦ͢ͱɺ͍Ζ͍ Ζͳؾ͖͕͋Γ·͢ɻ w ࿅श͢Ε͢Δ΄ͲɺྲྀெʹΕΔΑ͏ʹͳΓ·͢ɻྲྀெʹ ΕΔͱɺࣗ৴͕ੜ·Ε·͢ʂʢٯʹͯ͘͠࿅श͕ෆे ͩͱɺ͏·͘Εͣʹɺ༨ܭʹযͬͨΓ͠·͢ʜʣ w
࣭͞Εͦ͏ͳ͜ͱʹ͍ͭͯɺௐ͓͖ͯ·͠ΐ͏ɻΈΜͳ ͷલͰ࿅श͢ΔͱɺԿʹಥͬࠐ·ΕΔ͔ɺΑ͘Θ͔Γ·͢ɻ
ຊ൪ w εϥΠυΛ࡞ΓࠐΜͰɺ࿅शे͓͚ͯ͠ɺ͋ͱຊ ൪ͰΔ͚ͩͰ͢ɻલ͙ͬ͢Γ৸ͯɺΧϯϑΝϨϯ εָ͠Ή͜ͱʹूத͠·͠ΐ͏ʂ w εϐʔΧʔʹͳΔͷͬͯɺ༐ؾ͕͍Δ͜ͱͰ͢ΑͶɻΈ ͳ͞Μɺ·ͣୈҰาΛ౿Έग़͞Εͨ͜ͱ͕ɺૉΒ͠ ͍ͱࢥ͍·͢ɻ w
εϐʔΧʔʹͳΔ͜ͱͰɺΑΓָ͍࣌ؒ͠Λաͤͨ͝Γɺ ྑ͖ग़ձ͍͕͋Δ͜ͱΛف͍ͬͯ·͢ʂ