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
行こう to Kotlin
Search
mintcreamcat
June 30, 2017
Technology
0
520
行こう to Kotlin
第6回Kotlin勉強会 @ Sansan で発表した内容です。
mintcreamcat
June 30, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
Amplify Gen2から知るAWS CDK Toolkit Libraryの使い方/How to use the AWS CDK Toolkit Library as known from Amplify Gen2
fossamagna
1
240
QuickSight SPICE の効果的な運用戦略~S3 + Athena 構成での実践ノウハウ~/quicksight-spice-s3-athena-best-practices
emiki
0
260
話題の MCP と巡る OCI RAG ソリューションの旅 - Select AI with RAG と Generative AI Agents ディープダイブ
oracle4engineer
PRO
5
110
AIエージェントが書くのなら直接CloudFormationを書かせればいいじゃないですか何故AWS CDKを使う必要があるのさ
watany
18
7k
[SRE NEXT] ARR150億円_エンジニア140名_27チーム_17プロダクトから始めるSLO.pdf
satos
5
2.1k
SRE不在の開発チームが障害対応と 向き合った100日間 / 100 days dealing with issues without SREs
shin1988
2
1.5k
ポストコロナ時代の SaaS におけるコスト削減の意義
izzii
1
260
TLSから見るSREの未来
atpons
2
240
ソフトウェアテストのAI活用_ver1.25
fumisuke
1
560
VGGT: Visual Geometry Grounded Transformer
peisuke
1
620
Delta airlines®️ USA Contact Numbers: Complete 2025 Support Guide
airtravelguide
0
350
いつの間にか入れ替わってる!?新しいAWS Security Hubとは?
cmusudakeisuke
0
160
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Music & Morning Musume
bryan
46
6.7k
Navigating Team Friction
lara
187
15k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Thoughts on Productivity
jonyablonski
69
4.7k
Facilitating Awesome Meetings
lara
54
6.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Automating Front-end Workflow
addyosmani
1370
200k
Transcript
行こう to Kotlin Y.Sakamoto
今日の発表 レシぽんというレシピアプリを作ってます https://recipom.com/ 今日は、これからKotlinを導入しようと思って いる人向けに移行の具体的な事例を語ろうと 思います Y.Sakamoto カカクコムでエンジニアをしています
祝 https://developer.android.com/kotlin/index.html
Kotlin正式サポート よし、じゃあKotlin書くぞ!
すでに存在する大量のJavaコード
募る不安 すでにJavaで書かれたAndroidアプリは大量に存在する そこには大量のJavaコード・・・・ 新技術を導入して何かトラブったら・・・ 私たちはJavaを書き続けなければならない・・・・のか? そんなことはない!
Kotlinは少しずつ移行可能 Javaで書かれたプロジェクトを少しずつKotlinに移行中です
どのように移行しているか① • Androidアプリを1人で担当(その他スクラムマスターも兼任) • 2016年8月から開始 • 最初の2〜3ヶ月は少しずつ試しに書きながら様子を見る ◦ 新技術導入なので若干慎重に ▪
画面を書き換えたりはせずに、小さいコンポーネントを Kotlinで書いて見る • 一番最初にやったのはボタンの共通化 ◦ 同時に新しいアーキテクチャの検討を行う ▪ MVVMパターンを採用 ▪ RxJava + 関数型プログラミングを導入 ▪ 極力nullを使わない
どのように移行しているか② • アーキテクチャが固まったら ◦ 新規に実装するコードは原則 Kotlinで書く ◦ 既存のJavaコードの修正も、極力 Kotlinの新しいファイルに切り出す ◦
特定の画面をまるごと書き換える ▪ 利用者数が少ない画面から初めてみる ▪ 徐々に重要な画面も書き換えていく • 大きな変更のタイミングで工数を確保して既存部分を一気に作り直す
ソースコード行数の変遷
現状 • 移行開始から半年で、ソースコードの行数ベースではJava:Kotlin=1:1ぐらい • 画面数ベースではJava:Kotlin = 3:7 ぐらい ◦ Kotlinの方が行数あたりの機能実現量が大きい
(*1) → 高生産性(*2) ✳ 1. アーキテクチャ見直しによる効率アップや機能削減の影響も含む ✳ 2. ソースコードの行数で言語を語るのはナンセンスなので、あくまで参考値ということで
感想 • AndroidStudioでKotlinは快適に書けます ◦ コード補完が動き、リファクタリングもできる • JavaとKotlinのコードは問題なく共存できる ◦ KotlinのコードをJavaから呼び出すと冗長な記述になることがある •
KotlinプラグインのJava->Kotlin変換機能が強力 • Kotlinの生産性の高さが、プロダクトに良い影響を与えている ◦ 機能改修・追加の速度が上がった ◦ 品質が向上 ▪ 特にNPEをかなり減らせた
冗長な記述になる例(Activityの拡張関数) Kotlin Java 定義 * staticインポートを使うことによって「ActivityExtensionKt」の記述は不要にすることもできます。長澤さんご指摘ありがとうございます!
技術戦略上の観点 • 新技術への移行は常にリスクが伴う • Objective-C -> Swift移行時の経験 ◦ IDEのサポートが十分でない ◦
言語仕様変更 ◦ 旧言語と新言語間のやりとりの面倒さ • Kotlin移行は(経験した限りでは)リスクが非常に小さい
Kotlinはなぜ移行しやすい? • IDEを作っている会社が開発しており、開発環境のサポートが十分にされている • 後方互換性が保証されている • すでに採用例も多く、実績がある • オープンソースである
移行時のポイント • JavaのコードをそのままKotlinに置き換えるだけではもったいない • Null Safety, 関数型プログラミングなどの新しい考え方を導入して設計に組み込む ことによってKotlinの力を引き出し生産性を上げることができる
結論 行こう! to Kotlin
カカクコムではKotlinを積極的に導入しています。 一緒に働いてくれる仲間を随時募集しています! http://kakaku.com/info/recruit/job/career.html