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
20210404 Kotlin Tech Talk発表『例外ではなくnullを返すKotlin...
Search
doyaaaaaken
April 05, 2021
Programming
1
870
20210404 Kotlin Tech Talk発表『例外ではなくnullを返すKotlinらしいAPIデザイン』
doyaaaaaken
April 05, 2021
Tweet
Share
More Decks by doyaaaaaken
See All by doyaaaaaken
コンパウンドスタートアップの“疎結合すぎない”チーム設計
doyaaaaaken
5
1.4k
スマートラウンドで試してみた ChatGPT活用成功/失敗事例8選!
doyaaaaaken
3
4.3k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
780
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
340
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
370
プラットフォーム型SaaSにおけるマルチテナント設計
doyaaaaaken
5
2.7k
考えることを仕組み化する
doyaaaaaken
1
660
プルリクへのセルフコメントという小技
doyaaaaaken
0
590
先取りKtor2.0
doyaaaaaken
1
620
Other Decks in Programming
See All in Programming
ATDDで素早く安定した デリバリを実現しよう!
tonnsama
1
2.4k
Simple組み合わせ村から大都会Railsにやってきた俺は / Coming to Rails from the Simple
moznion
3
3.7k
CNCF Project の作者が考えている OSS の運営
utam0k
5
620
“あなた” の開発を支援する AI エージェント Bedrock Engineer / introducing-bedrock-engineer
gawa
10
1.4k
GitHub CopilotでTypeScriptの コード生成するワザップ
starfish719
28
6.1k
ASP.NET Core の OpenAPIサポート
h455h1
0
160
社内フレームワークとその依存性解決 / in-house framework and its dependency management
vvakame
1
500
個人アプリを2年ぶりにアプデしたから褒めて / I just updated my personal app, praise me!
lovee
0
310
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
390
Rubyでつくるパケットキャプチャツール
ydah
0
540
Scaling your build logic
antalmonori
1
150
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
8
2.2k
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.5k
The World Runs on Bad Software
bkeepers
PRO
67
11k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Become a Pro
speakerdeck
PRO
26
5.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Building Adaptive Systems
keathley
39
2.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
6
220
Fantastic passwords and where to find them - at NoRuKo
philnash
50
3k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Producing Creativity
orderedlist
PRO
343
39k
It's Worth the Effort
3n
184
28k
Transcript
ྫ֎Ͱͳ͘nullΛฦ͢ KotlinΒ͍͠APIσβΠϯ Kotlin Tech Talk 2021/04/05 খࢁ݈ଠ(Kenta Koyama) @doyaaaaaaken
ࣗݾհ • ࣄ • גࣜձࣾsmartround ۀϝϯόʔ / CTO • αʔόαΠυKotlinɾVueJSΛࠓΑ͘ॻ͍͍ͯ·͢
• OSS׆ಈ • kotlin-csvͷ࡞ऀʢ⭐: 250ʣ • KtorɾExposedɾkotestͷίϯτϦϏϡʔτ • झຯ • ອըɾήʔϜɾϓϩάϥϛϯάɾάϧϝɾςχεɾϘʔυήʔϜɾຑɾཱྀߦ…etc
͋Δײͨ͡՝ • java.time.LocalDateͷparseϝιου͕͍ͮΒ͍ • LocalDate.parse(dateStr: String): LocalDate • ՝1: yyyy-MM-ddܗࣜͷจࣈྻ͔͠ड͚͚ͳ͍
• ՝2: ྫ֎ͷ߹ʹඋ͑try-catchΛॻ͘ඞཁ͕͋Γ
՝ͷରॲ • จࣈྻΛύʔε͢ΔutilityؔΛ࡞ͬͨ • fun parseLocalDate(dateStr: String): LocalDate? • ՝1:
yyyy-MM-ddܗࣜͷจࣈྻ͔͠ड͚͚ͳ͍ 㱺 ෳͷϑΥʔϚοτΛύʔεՄೳʹɻղܾʂʂ • ՝2: ྫ֎ͷ߹ʹඋ͑try-catchΛॻ͘ඞཁ͕͋Γ 㱺 ྫ֎Ͱͳ͘nullΛฦ͢Α͏ʹɻղܾʂʂ
ίʔυϨϏϡʔ • ࣭༰ • ࣭ɿʰ ྫ֎Ͱͳ͘nullΛฦ͢Α͏ʹͨ͠ͷͳͥʁʱ • ݩʑJavaඪ४ϥΠϒϥϦ͕ྫ֎Λฦ͢ͷཧ༝͕͋ΔͷͰͳ͍͔ʁ • ճ
1. ྫ֎Λฦ͢ඞવੑ͕ͳ͍ͨΊ 2. nullableʹ͢Δઃܭͷ΄͏͕try-catchΛॻ͔ͣʹࡁΈɺίʔυهड़ྔ͕গͳ͘ͳΔ 3. Kotilnͷඪ४ϥΠϒϥϦͱ͔Λݟͯͯɺͪ͜Βͷ΄͏͕KotlinͬΆ͍͔Β
ίʔυϨϏϡʔ • ࣭༰ • ࣭ɿʰ ྫ֎Ͱͳ͘nullΛฦ͢Α͏ʹͨ͠ͷͳͥʁʱ • ݩʑJavaඪ४ϥΠϒϥϦ͕ྫ֎Λฦ͢ͷཧ༝͕͋ΔͷͰͳ͍͔ʁ • ճ
1. ྫ֎Λฦ͢ඞવੑ͕ͳ͍ͨΊ 2. nullableʹ͢Δઃܭͷ΄͏͕try-catchΛॻ͔ͣʹࡁΈɺίʔυهड़ྔ͕গͳ͘ͳΔ 3. Kotilnͷඪ४ϥΠϒϥϦͱ͔Λݟͯͯɺͪ͜Βͷ΄͏͕KotlinͬΆ͍͔Β ओ؍తͳճͳͷͰɺ͏গ͖ͪ͠ΜͱݴޠԽͯ͠આ໌͍ͨ͠ͱײ͍ͯͨ͡
༗ࣝऀͷݟղ • JetbrainsͷKotlin։ൃϦʔυͷਓ͕ॻ͍ͨهࣄ͕ෲམͪ͢Δ༰ͩͬͨ • Kotlin and Exceptions • ཁ •
KotlinΒ͍͠APIσβΠϯͱͯ͠… 1. ϝιουͷฦΓΛnullઐ༻ܕʹ͢Δ͜ͱͰɺϝιουͷৼΔ͍Λදݱ͖͢ 2. ྫ֎༧ظͤ͵ൃੜ࣌ʹ͛ɺͦͷྫ֎ΞϓϦέʔγϣϯͷϧʔτϨϕϧͰHandling͖͢ • JavaϥΠϒϥϦ͕ྫ֎Λฦ͢͜ͱ͕ଟ͍ͷݕࠪྫ֎͕͋Δ͔Β • Kotlinඪ४ϥΠϒϥϦ OrNull ͕͍ͭͨͷ͕ଟ͍ • ྫɿStringܕͷtoIntOrNull, ListܕͷgetOrNull, firstOrNull …
ͦͷଞɿࢀߟهࣄհ • ࠓճͷ༰ͷৄࡉҎԼهࣄʹ·ͱ·͍ͬͯ·͢ • ʰKotlinΒ͍͠APIσβΠϯʹ͢Δʹྫ֎Ͱͳ͘nullΛฦ͢ʱ ※ ଞʹKotlinؔ࿈ͷTipsܥهࣄΛ৭ʑॻ͍ͯ·͢ • ʰKotlinͷlazyʢԆॲཧʣͷΈΛௐͯࣗͰ؆қʹ࣮ͯ͠Έͨʱ •
ʰKotlinͷΫϥεҕৡͷ͍ॴʱ • ʰKotlinʹ͓͚ΔFactoryϝιουͷ࣮ύλʔϯʱ • ʰKotlinͰωετߏͷDSLΛ࣮͢Δํ๏ʱ • ʰܕ҆શʹIDͷܕΛએݴ͢Δ࣮ύλʔϯʢKotlinͷ߹ʣʱ • ʰKotlinͷSequenceͱListͷڍಈͷҧ͍ʹ͍ͭͯʱ
ձࣾએ • smartroundͰΤϯδχΞΛ ઈࢍืू͍ͯ͠·͢ʂʂ • ʰελʔτΞοϓɾࢿՈؒͷσʔλڞ༗ɾཧ ϓϥοτϑΥʔϜʱΛ։ൃ • ελʔτΞοϓ1500ࣾɾࢿՈ100͕ࣾొ •
αʔόαΠυKotlinɾVue.jsɾAWSΛར༻ • ࣾһ10໊ఔͷϑΣʔζͰ͢ ͚ͩฉ͍͍ͨํେܴͳͷͰWantedlyɾTwitter DM͔Β͓ؾܰʹ͝Ԡื͍ͩ͘͞ʂ ࢀߟ63- w αʔϏε-1ϖʔδ w ٕज़հࢿྉʰTNBSUSPVOEΛࢧ͑Δٕज़ʱ w XBOUFEMZ࠾༻ϖʔδ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ @doyaaaaaken