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
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
22
12k
サラリーマンの小遣いで作るtoCサービス - Cloudflare Workersでスケールする開発戦略
shinaps
2
470
5年目から始める Vue3 サイト改善 #frontendo
tacck
PRO
3
230
Firestore → Spanner 移行 を成功させた段階的移行プロセス
athug
1
500
プラットフォーム転換期におけるGitHub Copilot活用〜Coding agentがそれを加速するか〜 / Leveraging GitHub Copilot During Platform Transition Periods
aeonpeople
1
220
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
2つのフロントエンドと状態管理
mixi_engineers
PRO
3
110
Generative AI Japan 第一回生成AI実践研究会「AI駆動開発の現在地──ブレイクスルーの鍵を握るのはデータ領域」
shisyu_gaku
0
320
S3アクセス制御の設計ポイント
tommy0124
3
200
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
10k
slog.Handlerのよくある実装ミス
sakiengineer
4
450
下手な強制、ダメ!絶対! 「ガードレール」を「檻」にさせない"ガバナンス"の取り方とは?
tsukaman
2
450
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
83
9.2k
Producing Creativity
orderedlist
PRO
347
40k
Rails Girls Zürich Keynote
gr2m
95
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
580
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Docker and Python
trallard
46
3.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
850
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
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