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
1年ぶりにやりなおすKotlinアプリ開発
Search
Kazuya Kitahara
July 12, 2017
Programming
0
1.4k
1年ぶりにやりなおすKotlinアプリ開発
Kazuya Kitahara
July 12, 2017
Tweet
Share
More Decks by Kazuya Kitahara
See All by Kazuya Kitahara
位置情報を用いて映画や漫画を可視化する方法.pdf
kkitahara
0
240
Other Decks in Programming
See All in Programming
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
27
8.3k
Ruby Function Composition
bkuhlmann
1
330
PHPの次期バージョンはこの時期どうなっているのか - Internalsの開発体制について - PHPカンファレンス小田原
youkidearitai
PRO
1
190
Java 22 Overview
kishida
1
180
GitHub Copilotのススメ
marcy731
1
200
Build Apps for iOS, Android & Desktop in 100% Kotlin With Compose Multiplatform (mDevCamp 2024)
zsmb
0
340
Elm 0.19.0 Changes
bkuhlmann
0
490
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
170
大規模Reactアプリのリアーキテクチャ~8万行のTanStack Query移行の軌跡~
kj455
4
970
Hanami and htmx
bkuhlmann
0
210
DMMプラットフォームがTiDB Cloudを採用した背景
pospome
8
4.1k
Rethinking UI building strategies @ SFI 2024
letelete
0
270
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
42
12k
A Philosophy of Restraint
colly
197
16k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
How to name files
jennybc
65
93k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
20
1.9k
Making Projects Easy
brettharned
108
5.5k
Agile that works and the tools we love
rasmusluckow
325
20k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
Raft: Consensus for Rubyists
vanstee
132
6.3k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
The MySQL Ecosystem @ GitHub 2015
samlambert
243
12k
Building Flexible Design Systems
yeseniaperezcruz
319
37k
Transcript
1ͿΓʹΓͳ͓͢KotlinΞϓϦ։ൃ .HSBN*OD ݪ
ࣗݾհ w ݪ w גࣜձࣾNHSBNʢچגࣜձࣾ-JQʣΤϯδχΞ w ۀϝϯόʔͷ̍ਓͰ͢ɻ w લʹϛΫγΟ͔Βస৬͠·ͨ͠ɻ w
"OESPJEϝΠϯɻ8FCɾJ04ঢ়گʹԠͯ͡։ൃ w झຯөըɾອը
γϯɾΰδϥͷҠಈܦ࿏Λਤ্ͰΞχϝʔγϣϯ w U (&0(3"1)*$0'(0%;*--" IUUQHFPHPE[JMMBUL
ΤϜάϥϜੑ֨அ w ͷ࣭Ͱੑ֨Λਖ਼֬அ w ΩϟονʔͳΞτϓοτ w ແྉ w ϲ݄Ͱສਓͷํ͕அ
1ͿΓʹΓͳ͓͢KotlinΞϓϦ։ൃ
͢ࣄ w ͿΓʹ,PUMJOΛ৮ͬͯࢥͬͨࣄ w ,PUMJOͱҰॹʹར༻ՄೳͳϥΠϒϥϦ
ͿΓʹ,PUMJOΛ৮ͬͯࢥͬͨࣄ
͑ΔϥΠϒϥϦ͕૿͑ͯΔ w "OOPUBUJPOϓϩηοαʔΛར༻͍ͯ͠ΔϥΠϒϥϦ ͑ͨΓ͑ͳ͔ͬͨΓ͍ͯͨ͠ w %BHHFS%BUB#JOEJOH͏·͘ಈ͔ͳ͔ͬͨΑ͏ʹه Ա w ৭ΜͳϥΠϒϥϦ͕͑ΔΑ͏ʹͳͬͯΔʂ
,PUMJOͷهࣄ͕૿͑ͯΔ w 8FC্Ͱ,PUMJOͷղઆΛͯ͠Δهࣄ͕૿͑ͯͯ͘͢͝ॿ͔ Γ·ͨ͠ɻ w 2JJUBͰ,PUMJOΛݕࡧͯ͠ΈΔͱɺݱࡏߘఔ͋Γ·͢ ͕ɺd·Ͱʹͯ͠ΈΔͱߘ͙Β͍ͩͬͨͷ Ͱɺ͜͜ͰഒҎ্ʹ૿͍͑ͯ·͢ɻ
ͬͺΓ,PUMJO͍͍͢ w FOVN w ԆϓϩύςΟ w HFUUFSTFUUFS w ֦ுؔ ಛʹ͖͢ͳػೳ
FOVN (FOEFSLU FOVNDMBTT(FOEFS WBMKQ4USJOH \ NBMF உੑ GFNBMF ঁੑ
PUIFS ͦͷଞ ^ w ྻڍܕ w ,PUMJOͷFOVN؆୯ʹΛ࣋ͨͤΔࣄ͕Ͱ͖ͯศར w 'SBHNFOU1BHFS"EBQUFSͷදࣔॱΛFOVNͰཧͯ͠·͢
FOVN .BJO1BHFLU FOVNDMBTT.BJO1BHF\ 1"(&\ PWFSSJEFGVOGSBHNFOU 'SBHNFOU\ SFUVSO1"(&'SBHNFOUOFX*OTUBODF ^ ^
1"(&\ PWFSSJEFGVOGSBHNFOU 'SBHNFOU\ SFUVSO1"(&'SBHNFOUOFX*OTUBODF ^ ^ BCTUSBDUGVOGSBHNFOU 'SBHNFOU ^
FOVN .BJO1BHFS"EBQUFSLU DMBTT.BJO1BHFS"EBQUFS GN'SBHNFOU.BOBHFS 'SBHNFOU4UBUF1BHFS"EBQUFS GN \ PWFSSJEFGVOHFU*UFN QPTJUJPO*OU
'SBHNFOU \ SFUVSO.BJO1BHFWBMVFT <QPTJUJPO>GSBHNFOU ^ PWFSSJEFGVOHFU$PVOU *OU\ SFUVSO.BJO1BHFWBMVFT TJ[F ^ PWFSSJEFGVOHFU1BHF5JUMF QPTJUJPO*OU $IBS4FRVFODF\ SFUVSO.BJO1BHFWBMVFT <QPTJUJPO>TDSFFO/BNF ^ ^
ԆϓϩύςΟ WBMHSBNCZMB[Z\lNHSBNz^ w ͡ΊͯΞΫηε͞Εͨͱ͖ʹܭࢉ͞ΕΔϓϩύςΟ w ฐࣾͰɺ'SBHNFOUʹ͢ͱ͖ʹ1BSDFMBSͱ߹Θͤͯ ͬͯ·͢ɻ
ԆϓϩύςΟ 'SBHNFOUͰͷར༻ྫ DPNQBOJPOPCKFDU\ GVOOFX*OTUBODF VTFS6TFS 6TFS%JBMPH'SBHNFOU\ WBMBSHT#VOEMF BQQMZ\ QVU1BSDFMBCMF 4FSJBMJ[F,FZ64&3OBNF
1BSDFMTXSBQ VTFS ^ SFUVSO6TFS%JBMPH'SBHNFOU BQQMZ\ BSHVNFOUTBSHT ^ ^ ^
ԆϓϩύςΟ ԆϓϩύςΟͰWBMʹͰ͖Δ QSJWBUFWBMVTFS6TFSCZMB[Z\ 1BSDFMTVOXSBQ6TFS BSHVNFOUTHFU1BSDFMBCMF 4FSJBMJ[F,FZ64&3OBNF
^ ԆϓϩύςΟΛར༻͠ͳ͍߹ QSJWBUFMBUFJOJUWBSVTFS6TFS PWFSSJEFGVOPO$SFBUF TBWFE*OTUBODF4UBUF#VOEMF \ TVQFSPO$SFBUF TBWFE*OTUBODF4UBUF VTFS1BSDFMTVOXSBQ6TFS BSHVNFOUTHFU1BSDFMBCMF 4FSJBMJ[F,FZ64&3OBNF ^
HFUUFSTFUUFS w ,PUMJOͰHFUUFSTFUUFSͷఆָ͕ٛ͘͢͝Ͱ͢ɻ w ฐࣾͰɺ%BUBCJOEJOHʹ͢0CTFSWBCMFͳ.PEFM 7JFX.PEFMΛ࡞͢ΔࡍʹΑ͍ͬͯ͘·͢ɻ
HFUUFSTFUUFS 7JFX.PEFM DMBTT6TFS7JFX.PEFM #BTF0CTFSWBCMF \ !#JOEBCMF WBSNBJM4USJOH TFU NBJM \
pFMENBJM OPUJGZ1SPQFSUZ$IBOHFE #3NBJM OPUJGZ1SPQFSUZ$IBOHFE #3WBMJE ^ !HFU#JOEBCMF WBSWBMJE#PPMFBOGBMTF HFU \ JG UIJTNBJMJT/VMM0S&NQUZ SFUVSOGBMTF WBMNBUDIFS1BUUFSOT&."*-@"%%3&44NBUDIFS UIJTNBJM SFUVSONBUDIFSNBUDIFT ^ ^
֦ுؔ w طଘͷΫϥεʹରͯ͠ޙ͔ΒϝιουΛՃ͢Δࣄ͕Ͱ͖ Δػೳ w #JOEJOH"EBQUFSΛՃ͢Δͱ͖ʹΑͬͯ͘·͢ɻ
֦ுؔར༻͠ͳ͍߹ 1JDBTTPͷMPBE*NBHF PCKFDU*NBHF7JFX#JOEJOH"EBQUFS\ !#JOEJOH"EBQUFS CJOEJNBHF6SM !+WN4UBUJD GVOMPBE*NBHF WJFX*NBHF7JFX VSM4USJOH
\ 1JDBTTPXJUI WJFXDPOUFYU MPBE JNBHF6SM JOUP WJFX ^ ^
֦ுؔར༻ͨ͠߹ 1JDBTTPͷMPBE*NBHF !#JOEJOH"EBQUFS CJOEJNBHF6SM GVO*NBHF7JFXMPBE*NBHF JNBHF6SM4USJOH \ 1JDBTTPXJUI UIJTDPOUFYU
MPBE JNBHF6SM JOUP UIJT ^
ඍົͩͬͨॴɿMJOU w લMJOUͷ݁Ռ͕͍·͍ͪͩͬͨ w ,PUMJO͔Βࢀর͞Ε͍ͯΔSFTPVSDF6OVTFE3FTPVSDFͷ XBSOJOH͕ग़Δࣄ w मਖ਼͞Ε͍ͯΔࣄΛظͯ͠·͕ͨ͠ɺΫϥεʹΑͬͯXBSOJOH ग़ͨΓग़ͳ͔ͬͨΓͯͯ͠·ͩ͑ͳ͍༷Ͱ͢ɻ
,PUMJOͱҰॹʹར༻ՄೳͳϥΠϒϥϦ
௨৴ɾඇಉظॲཧपΓ w 3FUSPpU w 0L)UUQ w 3Y+BWB
௨৴ɾඇಉظॲཧपΓ .BJO"DUJWJUZ7JFX.PEFMLU UIJTDMJFOUHFU"DDPVOU CJOE5P-JGFDZDMF BDUJWJUZ TVCTDSJCF0O 4DIFEVMFSTOFX5ISFBE
PCTFSWF0O "OESPJE4DIFEVMFSTNBJO5ISFBE TVCTDSJCF \TVDDFTT %PTPNFUIJOH ^ \GBJMVSF %PTPNFUIJOH ^ "QJLU JOUFSGBDF"QJ\ !(&5 BDDPVOU GVOHFU"DDPVOU 0CTFSWBCMF"DDPVOU ^
1BSDFMFS 6TFS1SPpMFLU !1BSDFM EBUBDMBTT6TFS1SPpMF!1BSDFM$POTUSVDUPS DPOTUSVDUPS !1BSDFM1SPQFSUZ JDPO WBMJDPO4USJOH
!1BSDFM1SPQFSUZ OBNF WBMOBNF4USJOH \ ^ w 1BSDFMBCMFͷ࣮Λָʹ͢ΔϥΠϒϥϦ
1BSDFMFS 6TFS'SBHNFOULU 1BSDFMTVOXSBQ6TFS1SPpMF BSHVNFOUTHFU1BSDFMBCMF 4FSJBMJ[F,FZ64&3@130'*-&OBNF 6TFS'SBHNFOULU WBMBSHT#VOEMF BQQMZ\
QVU1BSDFMBCMF 4FSJBMJ[F,FZ64&3@1SPpMFOBNF 1BSDFMTXSBQ VTFS1SPpMF ^
(40/ 6TFS1SPpMFLU EBUBDMBTT6TFS1SPpMF !4FSJBMJ[FE/BNF JDPO WBMJDPO4USJOH !4FSJBMJ[FE/BNF OBNF
WBMOBNF4USJOH \ ^ w KTPOͷύʔεΛࣗಈԽ͢ΔϥΠϒϥϦ w ฐࣾͰQSPHVBSEରԠʹΞϊςʔγϣϯΛར༻ͯ͠ର Ԡ͍ͯ͠·͢ɻ
%BSU w *OUFOUʹσʔλΛ͢ͷΛָʹ͢ΔϥΠϒϥϦ w ,&:ͷࢦఆ͕ෆཁʹͳΔ
%BSU 6TFS"DUJWJUZLU DMBTT6TFS"DUJWJUZ"QQ$PNQBU"DUJWJUZ \ !*OKFDU&YUSB MBUFJOJUWBSVTFS6TFS PWFSSJEFGVOPO$SFBUF TBWFE*OTUBODF4UBUF#VOEMF \ TVQFSPO$SFBUF
TBWFE*OTUBODF4UBUF %BSUJOKFDU UIJT ^ DPNQBOJPOPCKFDU\ GVODSFBUF*OUFOU DPOUFYU$POUFYU VTFS6TFS *OUFOU\ SFUVSO)FOTPOXJUI DPOUFYU HPUP6TFS"DUJWJUZ VTFS VTFS CVJME ^ ^ ^
%BSUΛ'SBHNFOUͰར༻͢Δʁ 6TFS'SBHNFOULU HFU*OUFOU QVU&YUSBT )FOTPOXJUI UIJT HPUP.Z'SBHNFOU BSH
BSH CVJME HFU4VQQPSU'SBHNFOU.BOBHFS CFHJO5SBOTBDUJPO SFQMBDF 3JEDPOUBJOFS OFX.Z'SBHNFOU DPNNJU w IUUQTHJUIVCDPNGQSBUFFLEBSUJTTVFTʮ୭͔པΉʯ w ࡌ͍ͬͯΔํ๏ඍົͳͷͰɺ'SBHNFOUͰར༻͍ͯ͠·ͤΜɻ
BOESPJETUBUF w *DF1JDLͷ,PUMJOରԠ൛ʢFWFSOPUF͕։ൃʣ w PO4BWF*OTUBODF4UBUFͷॲཧΛࣗಈԽͯ͘͠ΕΔ w IUUQTHJUIVCDPNFWFSOPUFBOESPJETUBUF
BOESPJETUBUF .BJO"DUJWJUZLU PWFSSJEFGVOPO$SFBUF TBWFE*OTUBODF4UBUF#VOEMF \ TVQFSPO$SFBUF TBWFE*OTUBODF4UBUF 4UBUF4BWFSSFTUPSF*OTUBODF4UBUF UIJT
TBWFE*OTUBODF4UBUF ^ .BJO"DUJWJUZLU !4UBUF WBSOBNF4USJOH OVMM
·ͱΊ w ͿΓʹ,PUMJOΛͬͯΈͨΒ͑ΔϥΠϒϥϦ͕͢͝ ͘૿͑ͯͯศརͩͬͨ w ,PUMJOͷجຊػೳ૬มΘΒͣૉఢ w ͜Ε͔Βͷ։ൃ,PUMJOͰ࢝ΊΔͷ͕ྑͦ͞͏ ͿΓʹͬͨΒͬͺΓ,PUMJOྑ͔ͬͨ
גࣜձࣾNHSBNΤϯδχΞੵۃ࠾༻தͰ͢ɻ ਓͷΤϯδχΞΛ୳͍ͯ͠·͢ʂ ΤϯδχΞਓͰ͕Μ͍ͬͯ·͢ɻ ৽͍͠ͷେ͖ ࠊ͕ॏ͍