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を追うライトニングトークイベント / 20190319_...
Search
FORTE
March 19, 2019
Technology
0
360
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント / 20190319_toranoana_kotlin_lt
FORTE
March 19, 2019
Tweet
Share
More Decks by FORTE
See All by FORTE
アンチパターンから学ぶコミュニケーション/lcap_sample
fortegp05
0
39
Micronautで入門!実践!サーバーサイドKotlin/sskm1_sample
fortegp05
0
16
ITエンジニアとして生きる技術/tlie-sample
fortegp05
0
280
入門!実践!Kotlin Compose Multiplatformでデスクトップアプリ開発! / cmd_01_sample
fortegp05
0
470
いろいろ実践!サーバーサイドKotlin Vol.2【サンプル】 / server_side_kotlin_3_2_sample
fortegp05
0
250
いろいろ実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_3_sample
fortegp05
0
430
まいにち続ける技術【サンプル】 / tech_to_continue_on_daily
fortegp05
0
710
【無料サンプル】もっと実践!サーバーサイドKotlin / server_side_kotlin_2_sample
fortegp05
1
350
技術同人誌によって得られたもの / infra-workshop-20200301_What_was_obtained_in_the_book
fortegp05
0
110
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructure:2024年12月度サービス・アップデート
oracle4engineer
PRO
0
210
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
110
20241214_WACATE2024冬_テスト設計技法をチョット俯瞰してみよう
kzsuzuki
3
590
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
140
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
150
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
2
190
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
270
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
250
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
120
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
DevOps視点でAWS re:invent2024の新サービス・アプデを振り返ってみた
oshanqq
0
180
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
40
7.1k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Automating Front-end Workflow
addyosmani
1366
200k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
We Have a Design System, Now What?
morganepeng
51
7.3k
Building an army of robots
kneath
302
44k
Site-Speed That Sticks
csswizardry
2
190
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Building Adaptive Systems
keathley
38
2.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Transcript
Javaの重力に魂を縛られている人々へ 〜Javaエンジニアがkotlinを学んでみた〜 2019/03/19 【とらのあな主催】オタクがKotlinを追うライトニングトークイベント @FORTEgp05
自己紹介 FORTE (フォルテ) スマホアプリ開発者 Twitter:@FORTEgp05
今日伝えたいこと • JavaエンジニアがKotlinを学んでみた結果を伝えたい ◦ 学び方 ◦ 反省 ◦ 感想 3
今日は伝えないこと • Kotlinの文法など 文法なら公式ドキュメントを。 4
前提 登壇者のスキル • ざっくりとした職歴 ◦ SIer ⇨ Web系 ⇨ スマホアプリ開発 •
Java経験 ◦ 合計9年半 ▪ SIerで9年 ▪ スマホアプリ開発で半年 Kotlinはまったく未経験(プライベートでも勉強していない) 5
事例 実際にKotlinを学んだやり方 6
事例 学び方①公式ドキュメントを読む まずは公式ドキュメントを読み始める。 読んでわかったこと。 7
事例 学び方①公式ドキュメントを読む まずは公式ドキュメントを読み始める。 読んでわかったこと。 • Kotlin、完全に理解した 8
事例 学び方①公式ドキュメントを読む まずは公式ドキュメントを読み始める。 読んでわかったこと。 • Kotlin、完全に理解した 気になれた 9
事例 学び方①公式ドキュメントを読む ループの書き方や言語の特徴、コルーチンなどの仕組みがあ るのはわかる。 それで?ってなるだけ。 身についている感じはほとんどしない。 困った時にみるのは便利だし、どこになにがあるかをざっと みておくと描くときの効率が上がりそう。 10
事例 学び方②他人のソースを見てみる • DroidKaigi2019のソースを見てみる ◦ モダンすぎて、Kotlin以外に理解しなければならない ことが多すぎてツライ。 使われているライブラリとか。 ◦ いまわからないのが、kotlinのせいなのか、 別の要因なのかが判断しづらい。
11
事例 学び方②他人のソースを見てみる • DroidKaigi2019のソースを見てみる ◦ モダンすぎて、Kotlin以外に理解しなければならない ことが多すぎてツライ。 使われているライブラリとか。 ◦ いまわからないのが、kotlinのせいなのか、 別の要因なのかが判断しづらい。
ものすごく勉強になるが、自分にあったソースを見ないと効 率が悪い。 12
事例 学び方②他人のソースを見てみる • googlesamples/android-sunflowerのソースを見てみる ◦ Android JetpackというGoogle製ライブラリのベスト プラクティスをソースにしたサンプルアプリ。 ◦ 風の噂でこれが良いぞと聞いたので見てみた。 わかりやすい書き方で内容はわかる。
Kotlinだとこう書くのかーと実感。 13
事例 学び方②他人のソースを見てみる ふたつのソースを見てわかったこと。 14
事例 学び方②他人のソースを見てみる ふたつのソースを見てわかったこと。 自分で書かないとわからないな。 15
事例 学び方③写経する 自分がJavaで理解できるコードを、Kotlinで書いていくと効 果がありそう。 • Javaとの違いを実感できる • 実装内容はわかっているのでKotlinだけに集中できる 16
事例 学び方③写経する • 写経対象 ◦ Java製のサンプルアプリ ▪ MVVMの実践 ▪ RxJava、room、 Data
Bindingなど… 17
事例 実際にKotlinを書いて悩んだ点 18
事例 実際にKotlinを書いて悩んだ点 • クラス名を取得したい ◦ Java: ◦ Kotlin: クラス(Hoge)からclassや名前が取れないので悩む…。 書いてみて気づけたのて書いてよかった点。 19
Hoge.class.getName() Hoge::class.java.simpleName
事例 実際にKotlinを書いて悩んだ点 • 直感的に多次元配列が定義できない。 ◦ Java: 20 String[][] params = {
{"hoge", fuga} };
事例 実際にKotlinを書いて悩んだ点 • 直感的に多次元配列が定義できない。 ◦ Kotlin: なんで配列宣言ができないのかわからなくて悩む…。 結局2次元配列は使用せずに実装した。 21 val array
= Array(10, {arrayOfNulls<Int>(10)}) // このあと値をセットする
事例 実際にKotlinを書いて悩んだ点 • 三項演算子がない ◦ Java: ◦ Kotlin: 無いの!?ってなったけど、if文で値が返せるのならわかりや すいと思いました。 22
return (sb.length() > 0) ? "?" + sb.substring(1) : ""; return if (sb.isNotEmpty()) "?" + sb.substring(1) else ""
事例 実際にKotlinを書いて悩んだ点 • Object型とAny型 Javaと同じようにObject型の引数を取るメソッドを書い たら、なぜかコンパイルが通らない…。 Kotlinでルートクラスを使用したい場合は、Any型を使用 するのが正解。 23
事例 学んだ結果からの反省と感想 24
反省 • すぐ書き始めればよかった。 ◦ Javaと比べられるコードがあると非常に捗る • メンターを用意できそうならいた方が早い ◦ 教育目的のペア/モブプロがおすすめ 25
Kotlinを勉強してみた感想 • 最初はストレスを感じる ◦ イメージがそのままコードにできない • 開発対象のアンチパターンをググるのもおすすめ。 例:「Android kotlin アンチパターン」でググる
26
Kotlinを勉強してみた感想 Kotlinは伊達じゃない! 27
Kotlinは伊達じゃない! • GithubのAPIを叩いてリポジトリ一覧を取得する処理 ◦ Java :65行、2,440行 ◦ Kotlin:61行、1,952行 28
宣伝 Twitter:@FORTEgp05 Podcast:『aozora.fm』 お便り募集中! 技術書典6:「はじめる技術 つづける技術」を頒布予定! 【え18】サークル「おからぼ」さんにて委託。 詳しくは技術書典サークルページ、 または#はじめる技術つづける技術にて! 29
おわり 30