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
530
行こう to Kotlin
第6回Kotlin勉強会 @ Sansan で発表した内容です。
mintcreamcat
June 30, 2017
Tweet
Share
Other Decks in Technology
See All in Technology
Phase01_AI座学_基礎
overflowinc
0
3.8k
Why we keep our community?
kawaguti
PRO
0
190
DDD×仕様駆動で回す高品質開発のプロセス設計
littlehands
6
2.4k
Change Calendarで今はOK?を仕組みにする
tommy0124
1
100
_Architecture_Modernization_から学ぶ現状理解から設計への道のり.pdf
satohjohn
2
750
Phase12_総括_自走化
overflowinc
0
1.4k
スケールアップ企業でQA組織が機能し続けるための組織設計と仕組み〜ボトムアップとトップダウンを両輪としたアプローチ〜
qa
0
260
開発チームとQAエンジニアの新しい協業モデル -年末調整開発チームで実践する【QAリード施策】-
qa
0
270
Phase11_戦略的AI経営
overflowinc
0
1.5k
「コントロールの三分法」で考える「コト」への向き合い方 / phperkaigi2026
blue_goheimochi
0
150
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
200
形式手法特論:SMT ソルバで解く認可ポリシの静的解析 #kernelvm / Kernel VM Study Tsukuba No3
ytaka23
1
780
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
410
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
150
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
820
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
180
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
300
Designing for Timeless Needs
cassininazir
0
170
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