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
480
行こう to Kotlin
第6回Kotlin勉強会 @ Sansan で発表した内容です。
mintcreamcat
June 30, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshiitaka
20
4k
データ品質をコード化! LINEヤフーのMLOpsを最適化する "ACP Data Quality" の紹介
lycorptech_jp
PRO
1
140
現実世界の事象から学ぶSOLID原則
h0r15h0
24
10k
AWS アーキテクチャクイズ
yuu26
2
700
Autify Company Deck
autifyhq
1
30k
生成AIサービスPanorama AIご説明資料
sdt
0
300
Cloud Friendly(?) Jenkins. How we failed to make Jenkins cloud native and what we learned?
onenashev
PRO
0
110
暗黙知を集積するプラットフォーム : 「健常者エミュレータ事例集」の取り組み
sora32127
1
160
BDD(Cucumber)コミュニティが無料提供しているコンテンツの紹介と現在起きている危機
nihonbuson
4
730
戦略的DDDを実践するための跳躍力 / OOC 2024
pictiny
6
3.8k
Introduction to Jetpack Compose
pohjus
1
110
Kubeflow Pipelines v2 で変わる機械学習パイプライン開発
asei
4
330
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
71
5.1k
Into the Great Unknown - MozCon
thekraken
10
830
Facilitating Awesome Meetings
lara
39
5.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
12
1.4k
We Have a Design System, Now What?
morganepeng
42
6.7k
The Mythical Team-Month
searls
214
42k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
Reflections from 52 weeks, 52 projects
jeffersonlam
343
19k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
A designer walks into a library…
pauljervisheath
199
23k
Product Roadmaps are Hard
iamctodd
43
9.6k
Building Adaptive Systems
keathley
29
1.8k
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