Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ScalaとKotlinを業務で使ってみた
Search
Kinoko
September 11, 2017
Technology
3.7k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ScalaとKotlinを業務で使ってみた
2017/9/9(土) Scala関西Summit 2017での登壇資料です。
Kinoko
September 11, 2017
More Decks by Kinoko
See All by Kinoko
自作キーボードにチャレンジしてみた。 ver 2.0
sammy7th
0
2.2k
私が考える理想の開発チーム
sammy7th
0
740
ビジネスルールを軸とした ソフトウェア開発手法 「CCSR」
sammy7th
7
2.7k
お家に居れなくなって 3週間ゲストハウス暮らしをしていた話
sammy7th
2
550
家で仕事中にインターフォンに気づかず困っているのでIoTでなんとかしたい
sammy7th
1
250
ホットサンドメーカーで作るスイーツ
sammy7th
0
340
JVM入門 -Javaプログラムが動く仕組み-
sammy7th
35
15k
Udemyでプログラミング の動画講座を販売してみた
sammy7th
1
950
Git運用基礎
sammy7th
1
330
Other Decks in Technology
See All in Technology
レガシーコードに対する loop engineering的なAI開発プロセス導入について
kubell_hr
0
170
攻撃 3 時間 vs 復旧 10 時間。アクセスキー流出の非対称性を体感するために CTF を作った話
kazzpapa3
1
140
クラウドエージェントの先駆け Devin。今も最先端を走る、他との違い
kinopeee
2
580
SLOを阻む不安
sraku2159
0
220
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
3
130
アクセラレーターで実現するServiceNow活用の高速化 / ServiceNow World Forum 2026
visional_engineering_and_design
0
130
Microsoft Entra Kerberos で実現するクラウド デバイス管理
tamaiyutaro
0
120
分析作業をどこまで任せるか自分で決められる AIネイティブBI『Golden Analytics』が 良さげな話 /golden-analytics-is-ai-native-bi
shinyaa31
0
110
eBPF 簡介 2026 版
shunghsiyu
0
170
試験勉強はGrokBotでやれ
maigo999
0
110
自律的なチームを作るためにTechPMがやらないこと
ny7760
1
500
Flutter Widget Previewerで始めるUIプレビューとVRTの自動化
sakusaku3939
0
210
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
340
My Coaching Mixtape
mlcsv
0
380
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
450
Product Roadmaps are Hard
iamctodd
55
13k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
How to build a perfect <img>
jonoalderson
1
6.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3.1k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
Discover your Explorer Soul
emna__ayadi
2
1.3k
Abbi's Birthday
coloredviolet
4
11k
Transcript
ScalaͱKotlinΛۀ ͰͬͯΈͨ Abe Asami
ࣗݾհ "CF"TBNJl͖ͷࢠz େࡕͷϑϦʔϥϯεϓϩάϥϚ IUUQOPDPOPOFU !BBUI 4DBMBɺ"OESPJE +BWB,PUMJO
ࠓͷ༰ • ݸਓͰScalaɾKotlinڞʹडୗҊ݅Ͱ࠾༻Λ͠ɺ྆Ҋ݅ͱେ ͖ͳͳ͘ೲ͢Δ͜ͱ͕Ͱ͖·ͨ͠ • ͦͷࡍ྆Ҋ݅Λख͍͍ͬͯͨͩͨ։ൃձࣾͷΤϯδχΞ͞ ΜʹScalaʹରͯ͠ʮ͍͠ʯͱ͍͏ҹΛ๊͔ͤͯ͠·ͬ ͨͷͰɺͳͥͦ͏ͳͬͯ͠·ͬͨͷ͔Λߟ͑ͯ·ͱΊͯΈ· ͨ͠ •
ʮScalaͱKotlinΛۀͰͬͯΈͨʯ݁Ռߟ͑ͯΈͨɺScala ΛۀͰಋೖ͢Δͱ͖ʹؾΛ͚ͭΔ͜ͱΛڞ༗͠·͢
• ޙʮScala͍͠ͱݴΘΕͳ͍Α͏ʹ͢Δ ʹʯͱ͍͏ํͷʹͳͬͯ͠·͍ɺScala ͱKotlinͷٕज़తͳઙ͍༰ʹͱͲ·ͬͯ ͠·͍·ͨ͠(͢Έ·ͤΜɾɾɾ) • ख͍͍ͬͯͨͩͨΤϯδχΞ͞ΜͷҙݟΛࡌ ͍ͤͯ·͕͢ɺ͋͘·Ͱ1ݸਓͷओ؍Ͱ͢ɻඞ ͣ͠શһʹͯ·ΔͷͰͳ͍͜ͱ͝ ྃঝ͍ͩ͘͞
Kotlinͱ
Kotlinͱ • JetBrains͕ࣾ։ൃͨ͠JVMݴޠ • ScalaͷӨڹΛ৭ೱ͘ड͚͍ͯΔ • Google I/O 2017 ʹͯAndroidͷެࣜ։ൃݴޠͱͯ͠
αϙʔτ͞ΕΔ͜ͱ͕ൃද͞Εͨ • ͱͱAndroid͚Λڧ͘ҙ༷ࣝͨ͠Ͱ͋ ΓɺެࣜԽલ͔Β࠾༻ࣄྫ͕૿Ճʹ͋ͬͨ
ScalaͱKotlinͷࣅ͍ͯΔͱ͜Ζ • JVM্Ͱಈ࡞͢Δ • JavaScriptͷτϥϯεύΠϧڥ NativeίϯύΠϧڥ͋Δ • ੩తܕ͚ͷΦϒδΣΫτࢦݴޠ
ྨࣅػೳͷྫ (͘͝Ұ෦) • var/val • ܕਪ • ηϛίϩϯෆཁ • ϓϦϛςΟϒܕ͕ଘࡏ͠ͳ͍
• case class ͱ data class • Ϋϥεϝιου • ΦϒδΣΫτίϯύχΦϯ ΦϒδΣΫτ͋Δ • ϥϜμࣜ • ߴ֊ؔ • ݕࠪྫ֎͕ͳ͍ etc.
ScalaͱKotlinͷ ҧ͏ͱ͜Ζ (※͜Εͨ͘͞Μ͋ΔͷͰҰ෦͚ͩ͝հ)
ϏϧυγεςϜ • Scalasbt͕ඪ४Ϗϧυπʔϧ • KoltinGradle͕ඪ४Ϗϧυπʔϧ • ScalaಠࣗͷΤίγεςϜΛߏங͓ͯ͠Γɺ KotlinJavaͷͦΕΛར༻͍ͯ͠Δ • Ͳ͕͍͍ͬͪͱ͔ͳ͍
Android։ൃ • KotlinAndroid։ൃͰར༻͍͢͠Α͏ʹ ҙࣝͯ͠࡞ΒΕ͍ͯΔ • JDK6ͱͷޓੑ͕อূ͞Ε͍ͯΔ • ϥϯλΠϜͷαΠζ͕খ͍͞ • ϝιου͕গͳ͍
• ScalaଟػೳͰ͋ΔͨΊɺαΠζ͕େ͖͍ • ։ൃڥͰ͋ΔAndroidStudio͕JetBrainsͷIntelliJ IDEAΛForkͯ͠։ൃ͞ Ε͍ͯΔͱ͍͏໘େ͖͔ͬͨͱࢥΘΕΔ
ؔܕݴޠཁૉ • ScalaؔܕϓϩάϥϛϯάͷελΠϧΛڧ͘औΓ͍Εɺ ৭ʑͳศརػೳΛఏڙ͍ͯ͠Δ • OptionɺEitherɺforࣜͳͲ • Kotlinߴ֊ؔϥϜμࣜͳͲͷؔܕϓϩάϥϛϯάͷཁ ૉΛ1෦ܰ͘औΓೖΕΔܗͰ৭ʑͳศརػೳΛఏڙ͍ͯ͠Δ •
είʔϓؔͳͲ
ͦͷଞҟͳΔػೳͷྫ • OptionͱNull҆શ • for • Scalaʹ͋ͬͯKotlinʹͳ͍ͷ • Implicit •
ύλʔϯϚον • Kotlinʹ͋ͬͯScalaʹͳ͍ͷ • είʔϓؔ • ֦ுؔ
ScalaͱKotlinͷจ๏ൺֱ Լهͷهࣄ͕ৄ͍͠Ͱ͢ • KotlinϓϩάϥϚͷͨΊͷScalaೖʢ̍ʣʙجຊฤʙ - Qiita http://qiita.com/kmizu/items/9d16360c4d383f3fa2aa • KotlinϓϩάϥϚͷͨΊͷScalaೖʢ̎ʣʙൃలฤʙ
- Qiita http://qiita.com/kmizu/items/ db6461485b9dd320de23
ίʔυྫ https://github.com/SAMMY7th/aws-lambda-scala https://github.com/SAMMY7th/aws-lambda-kotlin 2016/04ࠒɺAWS-lambdaͰಈ͘botίʔυΛ ScalaͱKotlinͰॻ͍ͨͷΛ͓ݟͤ͠·͢
࣮ࡍʹۀͰͬͨࡍͷ͓
ࡢडୗͨ͠Ҋ݅ • ։ൃձࣾTࣾ͞Μ͔ΒԼهͷҊ݅Λड • AndroidΞϓϦ։ൃ (2016/04) ظؒ 3ϲ݄ • API͔Βऔಘͨ͠Λάϥϑදࣔ͢ΔΞϓϦ
• WebΞϓϦ։ൃ (2016/10) ظؒ4ϲ݄ • Air̋NBΈ͍ͨͳΞϓϦ • AndroidͷํΛKotlinͰɺWebͷํΛPlay2/ScalaͰ։ൃ͠ɺແࣄೲ
։ൃମ੍ • Android/Kotlin • ։ൃɿࢲ ίʔυϨϏϡʔɿTࣾͷI͞Μ • Play2/Scala • ։ൃɿࢲ
ίʔυϨϏϡʔɿTࣾͷI͞ΜɺTech To Valueͷ͕ͧ͘ ͞Μ
ࣗͷײ • ScalaKotlinͲͪΒ͖ • ؆ܿͳίʔυΛॻ͖͍ͨͱ͍͏ཁͲͪΒຬͨͯ͘͠ΕΔ • ͨͩɺforࣜύλʔϯϚονͳͲScalaͷํ͕ศརͩͳʔͱײ͡Δ͜ͱ͋Δ • AndroidҊ݅ެࣜԽ͞ΕͨKotlinΛࠓޙੵۃతʹ͍͖͍ͬͯͨ •
ͲͪΒͰ͍͍߹׳Ε͍ͯΔScalaΛબ͍͕ͨ͠ɺϥΠϒϥϦϑϨʔϜϫʔΫࣄΛߟྀ ͯ͠બ͍͖͍ͯͨ͠ • WebͷํͰKotlinͰ͍͍ϑϨʔϜϫʔΫ͕Ͱͯ͘ΕɺScalaͰͳ͘KotlinΛબ͢Δ Α͏ʹͳΔ͔͠Εͳ͍ • Scala͢ͰʹScalaͷϥΠϒϥϦϑϨʔϜϫʔΫ͕ൃల͍ͯ͠Δ͕ɺKotlin·ͩ· ͩ͜Ε͔Βͱ͍͏ҹ
TࣾͷI͞Μʹ͍ͭͯิઆ໌ • I͞ΜKotlinScalaܦݧ͋Γ·ͤΜͰ͕ͨ͠ɺԼ هͷݴޠܦݧ͕͋Γ·͢ • PHPɺJavaɺSwiftɺRubyɺCɺC++ɺC#ɺ PerlɺPython • ࣮ࡍʹίʔυΛॻ͘͜ͱ͓ئ͍͓ͯ͠Βͣɺଞۀ ͷยखؒͰࣗྗͰௐͳ͕ΒϨϏϡʔΛͯ͘͠Ε·͠
ͨ
KotlinίʔυΛϨϏϡʔͨ͠ I͞ΜͷԠ • SwiftʹΑ͘ࣅ͍ͯΔ • ↑͜Εଞͷձࣾ͞ΜʹݴΘΕͨ • Java͕ग़དྷΔਓͳΒ͢ΜͳΓशಘͰ͖ͦ͏ • AndroidͰKotlinΛੵۃతʹ͍͖͍ͬͯͨ
ScalaίʔυΛϨϏϡʔͨ͠ I͞ΜͷԠ • ʮScala͜Θ͍ʯ • ࢲʮʂʁʯ
͜ͷɺKotlinͱScalaʹର͢Δ Ԡͷҧ͍ҰମԿ͕ ݪҼͳΜɾɾɾ
I͞Μʹ ώΞϦϯάΛͯ͠Έ·ͨ͠
ώΞϦϯά݁Ռ • KotlinJavaͷࣝͰԿͱͳ͘ಡΊͨ͠ॻ͚͚ͨͲɺScalaͦ͏ ͍͔ͳ͔ͬͨ • ͔Βͳ͍Ωʔϫʔυ͕ग़Δͨͼʹάά͕ͬͨɺҶͮΔࣜʹΘ ͔Βͳ͍Ωʔϫʔυ͕૿͑ͯ͠·ͬͯɺΊͪΌͪ͘Ό৭Μͳ͜ ͱΛௐͨ • Scalaಛ༗ͷΩʔϫʔυ͕͔ͳΓଟ͍Α͏ʹײͨ͡
• ௐͨ݁ՌཧղͰ͖ͳ͔ͬͨΩʔϫʔυ͋ͬͨ • Ϟφυͱ͔
ώΞϦϯά݁Ռ(ଓ͖) • AltJavaͩͱࢥ͍ͬͯͨΒɺJavaʹͳ͍Ϋϥ εػೳ͕ଟ͔ͬͨɻผݴޠͩͱ͍͏֮ޛΛ ࣋ͬͯΜͰ͓͚Α͔ͬͨ
I͞ΜͷΛฉ͍ͯࢥͬͨ͜ͱ • ScalaଟػೳͰ͋ΔΏ͑ʹɺศར͚ͩͲ֮͑Δ͜ͱଟ͍ • ຊؔܕϓϩάϥϛϯάͷཧղઙͯ͘Scalaͷػ ೳΛ͏͜ͱेͰ͖Δͷʹɺௐ͍ͯ͘͏ͪʹϞφυͳ ͲͷΩʔϫʔυʹߦ͖͖ͭɺScalaͷཧղʹؔܕϓϩά ϥϛϯάͷ͕ࣝඞਢͳͷͩͱ͍͏צҧ͍͕ൃੜ͍ͯ͠Δ • ScalaଞͷݴޠʹൺͯɺֶͿͨΊͷಓے͕උ͞Ε͍ͯ
ͳ͍ʹ͋Δؾ͕ͨ͠
Ҏ্ͷ͜ͱ͔ΒΘ͔ͬͨ ۀͰScalaΛಋೖ ͢ΔࡍʹؾΛ͚ͭΔ͜ͱ
ݱঢ়Scalaɺଞͷݴޠͱൺֱ͢Δͱֶशίετ ͕ߴ͍ɻͦͷ͜ͱΛೝ͓ࣝͯ͘͠ɻ
ະܦݧऀ͕νʔϜʹ͍Δ߹ • ԼهͷΑ͏ͳํ๏ͰֶशͷαϙʔτΛߦ͏ • ίʔυϨϏϡʔ • ϖΞϓϩ • ֶशࢿྉͷ࡞ •
దͳॻ੶ղઆWebαΠτͷ༠ಋ • ͦͷࡍʮίοϓຊಡΊʯΈ͍ͨͳେࡶͳ༠ಋͰͳ͘ɺௐΔͱ ͖ͷదͳΩʔϫʔυΛఏࣔ͢Δ • ʮଞʹݴޠܦݧ͕͋ΔΜͩͬͨΒͳΜͱ͔ͳΔͰ͠ΐʯͱαϙʔτ͠ͳ͍ͷ͓͢ ͢ΊͰ͖ͳ͍
ະܦݧऀ͔͍͠ͳ͍߹ • ScalaಋೖαϙʔτΛߦ͍ͬͯΔΤϯδχΞ͞ ΜͷྗΛआΓΔ • Tech to Value Co., Ltd.
http://www.t2v.jp/ • Good Flow Technologies http://good- flow.com/
͜ͷ··ͩͱ Scalaະܦݧऀͷਓ͕ ʮScala͍͠ΜͬͨΒΊ ͱ͔͜ͳɾɾɾʯ ͬͯͳΓ͔Ͷͳ͍ͷͰ ͪΐͬͱϑΥϩʔΛɾɾɾ
ݸਓతʹScalaΛֶΜͰΑ͔ͬͨ ͱײ͡Δ • جຊతʹΦϒδΣΫτࢦͰॻ͖ͳ͕Βɺؔܕ ϓϩάϥϛϯάͷύϥμΠϜʹ৮ΕΔ͜ͱ͕Ͱ͖ ͨ • ҥߏจ͕ଟ͍ͨΊʮͲ͏͍͏ॻ͖ํͩͱଞͷਓ ͕ಡΈ͍͔͢ʯΛҙࣝ͢Δบ͕͍ͭͨ •
ScalaΛֶͿ͜ͱʹΑΓɺΤϯδχΞͱͯ͠ͷϨϕ ϧ͕͕͋ͬͨؾ͕͢Δ
ࠓճͷ݅Ͱߟ͑ͨ͜ͱ • ࠷ۙʮScalaϋʔυϧ͕ߴ͍··Ͱ͍͍Μ͡Όͳ͍ͷ ͔ʯʮͦͷํ͕ΤϯδχΞͷϨϕϧ͕ҰఆʹอͨΕΔͷ ͰʯͬͯҙݟΛͪΐ͍ͪΐ͍ฉ͘ • Ͱݱঢ়ຊདྷཧղͰ͖ΔྗΛ࣋ͭਓɺඇޮͳֶशΛ ͯ͠͠·͍ɺ࠳ંͨ͠ύλʔϯ͕ଟͦ͏ͩͱײͨ͡ • ͦ͏͍͏ͷ͍ͬͨͳ͍ͳʔͱࢥ͏ͷͰɺզʑܦݧऀ
ࠓޙ৽͍͠ਓ͕ʮֶͿͨΊͷಓےʯͷඋΛ৺͕͚ͨ ͍ͳͱࢥ͍·ͨ͠
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠