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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
250
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
650
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
320
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.6k
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
120
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
180
AWS Network Firewall Proxyを触ってみた
nagisa53
1
240
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
310
SRE Enabling戦記 - 急成長する組織にSREを浸透させる戦いの歴史
markie1009
0
130
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
100
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
380
Featured
See All Featured
BBQ
matthewcrist
89
10k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
590
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
140
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
330
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Become a Pro
speakerdeck
PRO
31
5.8k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
450
Paper Plane (Part 1)
katiecoart
PRO
0
4.3k
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