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
ScalaとKotlinを業務で使ってみた
Search
Kinoko
September 11, 2017
Technology
3.7k
5
Share
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
720
ビジネスルールを軸とした ソフトウェア開発手法 「CCSR」
sammy7th
7
2.6k
お家に居れなくなって 3週間ゲストハウス暮らしをしていた話
sammy7th
2
530
家で仕事中にインターフォンに気づかず困っているのでIoTでなんとかしたい
sammy7th
1
220
ホットサンドメーカーで作るスイーツ
sammy7th
0
330
JVM入門 -Javaプログラムが動く仕組み-
sammy7th
35
14k
Udemyでプログラミング の動画講座を販売してみた
sammy7th
1
920
Git運用基礎
sammy7th
1
310
Other Decks in Technology
See All in Technology
noUncheckedIndexedAccess、3時間、1万円。 / noUncheckedIndexedAccess, 3 Hours, 10,000 JPY.
kaonavi
1
150
AI Adaptable なテストを整える工夫 / Ways to Make Your Tests AI-Adaptable
bitkey
PRO
2
210
はじめてのDatadog
kairim0
0
270
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
170
製造業のクラウド活用最適解〜AI,DXを加速するデータ基盤の作り方〜
hamadakoji
0
320
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
2
830
AI Engineering Summit Tokyo 2026 AIの前に、やることがある 〜医療データ企業の4フェーズ〜
dtaniwaki
0
1.4k
「気づいたら仕事が終わっている」バクラクAIエージェント本番運用の裏側 / layerx-bakuraku-aie2026
yuya4
18
9.1k
運用を見据えたAIエージェント設計実践
amacbee
1
2.4k
Javaコミュニティをもっと楽しむための9箇条
takasyou
0
1.2k
個人AIからチームAIへ:開発における品質と生産性の再設計
moongift
PRO
0
370
チームで実践する AI-DLC 思考の軌跡を残すチェックポイント設計
belongadmin
0
2.1k
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
180
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
160
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
600
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
74k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
270
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
590
Visualization
eitanlees
152
17k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.9k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
720
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ϋʔυϧ͕ߴ͍··Ͱ͍͍Μ͡Όͳ͍ͷ ͔ʯʮͦͷํ͕ΤϯδχΞͷϨϕϧ͕ҰఆʹอͨΕΔͷ ͰʯͬͯҙݟΛͪΐ͍ͪΐ͍ฉ͘ • Ͱݱঢ়ຊདྷཧղͰ͖ΔྗΛ࣋ͭਓɺඇޮͳֶशΛ ͯ͠͠·͍ɺ࠳ંͨ͠ύλʔϯ͕ଟͦ͏ͩͱײͨ͡ • ͦ͏͍͏ͷ͍ͬͨͳ͍ͳʔͱࢥ͏ͷͰɺզʑܦݧऀ
ࠓޙ৽͍͠ਓ͕ʮֶͿͨΊͷಓےʯͷඋΛ৺͕͚ͨ ͍ͳͱࢥ͍·ͨ͠
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠