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
Kotlin導入してみたかったけど結局間に合わなかった…
Search
mukky620
June 22, 2017
Programming
0
3.8k
Kotlin導入してみたかったけど結局間に合わなかった…
2017/06/22 MatchingAgent x Makuake 合同勉強会資料
mukky620
June 22, 2017
Tweet
Share
More Decks by mukky620
See All by mukky620
Firebase A/B TestingとRemote Config を最大限に活用する方法
mukky620
1
1.5k
Firebase A/B Testing Targeting Tips
mukky620
0
2.1k
運用3年のタップル誕生でJavaからKotlin移行した話
mukky620
0
1.2k
Other Decks in Programming
See All in Programming
Putting The Genie in the Bottle - A Crash Course on running LLMs on Android
iurysza
0
140
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
3.2k
実用的なGOCACHEPROG実装をするために / golang.tokyo #40
mazrean
1
290
旅行プランAIエージェント開発の裏側
ippo012
2
920
🔨 小さなビルドシステムを作る
momeemt
4
690
rage against annotate_predecessor
junk0612
0
170
そのAPI、誰のため? Androidライブラリ設計における利用者目線の実践テクニック
mkeeda
2
1.8k
意外と簡単!?フロントエンドでパスキー認証を実現する WebAuthn
teamlab
PRO
2
770
複雑なドメインに挑む.pdf
yukisakai1225
5
1.2k
RDoc meets YARD
okuramasafumi
4
170
Cache Me If You Can
ryunen344
2
3k
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
530
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
173
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.9k
What's in a price? How to price your products and services
michaelherold
246
12k
GitHub's CSS Performance
jonrohan
1032
460k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Code Review Best Practice
trishagee
71
19k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
The Cult of Friendly URLs
andyhume
79
6.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
850
Scaling GitHub
holman
463
140k
Transcript
Kotlin導入してみた 2017/06/22 MatchingAgent x Makuake 合同勉強会 1 mukky620
Kotlin導入してみた 2017/06/22 MatchingAgent x Makuake 合同勉強会 2 mukky620 かったけど結局間に合わなかった…
• 向中野 亘 (むっきー) • Android Engineer • 3月にアメーバピグから異動 •
Android歴1年と 3ヶ月 3 自己紹介
1. Androidチームの現状の負債 2. JavaからKotlinに移行しようと思った理由 3. 移行するにあたってチーム内でした事 4 本日の内容
1. Androidチームの現状の負債 2. JavaからKotlinに移行しようと思った理由 3. 移行するにあたってチーム内でした事 5 本日の内容
6 2014年7月…Android版タップル誕生リリー ス!
7 しかし、スピード感重視かつ 片手間でのリリースだった事もあり…
8 多くの負債が生まれてしまった… Android Annotations FatなActivity 増え続ける Color定義 大量のDialog Listviewでは ないリスト
エラーハンドリング しきれてない 課金処理 viewholder もどき 非同期処理 辛い state管 理 も 辛 い アーキテクチャ など無い 自由な設計
9 多くの負債が生まれてしまった… FatなActivity 増え続ける Color定義 大量のDialog Listviewでは ないリスト エラーハンドリング しきれてない
課金処理 アーキテクチャ など無い 自由な設計
1. アーキテクチャ改善 ◦ Architecture Component、DataBinding、Dagger2導入 ◦ CleanArchtectureを意識したMVVM 2. コンポーネント化 3.
Kotlin導入 10 負債返済してスタンダード化を目指す
1. Androidチームの現状の負債 2. JavaからKotlinに移行しようと思った理由 3. 移行するにあたってチーム内でした事 11 本日の内容
12 Kotlinが正式にAndroid開発言語に!
• Javaより言語仕様的に優れている(と思う) ◦ Null安全、ラムダ・高階関数…etc ◦ そもそもAndroid開発でJava8使えないの辛い… ◦ RxJavaとRetrolambdaで代替え嫌… • 習熟したら開発効率上がりそう
• Kotlin経験者の強い推し 13 その他採用理由
1. Androidチームの現状の負債 2. JavaからKotlinに移行しようと思った理由 3. 移行するにあたってチーム内でした事 14 本日の内容
15 Kotlinは 自由度が高い言語
16 例えば、Nullableの場合 ← Nullチェック方式
17 例えば、Nullableの場合 ← 早期リターン(エルビ ス演算子)方式
18 例えば、Nullableの場合 ← Nullチェックかつ エルビス演算子方式
19 例えば、Nullableの場合 ← スコープ関数使用す る方式
20 例えば、Nullableの場合 色々な 書き方が ある!
21 チーム内で 共通の認識が必要
• Kotlin移行したソースを経験者にPRしてもらう。 ◦ Javaっぽく書いてないか。 ◦ Kotlinっぽく書けているか。 22 Kotlin移行に伴う取り組み
23 kotlin-lover 経験者によるPRレビュー
24 kotlin-lover 経験者によるPRレビュー
• 週1でKotlin勉強会を開催する。 ◦ Kotlin Koans(全42問)を何週かに分けて自習。 ◦ 当日に答え合わせ、かつ経験者からの補足と別解、プロダ クトで使用等々の解説をいただく。 25 Kotlin移行に伴う取り組み
• Androidチーム以外のメンバーや、他チームのメンバーも興味 を持って参加してくれてモチベが高い。 ◦ 正直、講師の影響が強い。 26 勉強会の良かったところ • 自習でつまづいたところを直接聞ける事で理解が早い。 •
別解やプロダクトでの事例等が参考になる。 • チーム内での言語共通認識を持てる。
27 まとめ
1. 負債は溜め込まない。出来るなら少しづつでも返済しよう。コ ンポーネント化は絶対やった方が良い! 2. 今からAndroid始めるなら絶対Kotlin。 3. チームでのKotlin開発は全員で認識を合わせておく。そして出 来れば1人でも経験者がいた方が良い! → モブプログラミングとかしてみても良いかも
28 まとめ
29 ご静聴ありがとうございました!