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のifを愛でる
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
okuzawats
March 11, 2022
Programming
1.1k
0
Share
Kotlinのifを愛でる
「明日思わず誰かに伝えたくなる話 フラー x ちゅらデータ合同勉強会」(2022年3月11日)での発表資料です。
okuzawats
March 11, 2022
More Decks by okuzawats
See All by okuzawats
Androidアプリのモジュール分割における:x:commonを考える
okuzawats
1
460
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
430
カンファレンス参加をいかに正当化するか
okuzawats
0
340
「勉強になった」で終わらせない、ストロングスタイルの勉強会
okuzawats
0
440
10年モノのAndroidアプリのコード品質を改善していく、3つの取り組み
okuzawats
0
1.4k
Androidアプリ開発におけるSonarCloudの活用
okuzawats
0
1.3k
何故、UseCaseは1メソッドなのか
okuzawats
3
2.2k
例外を投げるな、値を返せ
okuzawats
9
8.2k
GitHub ActionsでAndroidアプリのテストを回しまくってたら全プロジェクトのCI/CDが完全停止する寸前だった件
okuzawats
0
700
Other Decks in Programming
See All in Programming
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
220
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
960
おれのAgentic Coding 2026/03
tsukasagr
1
130
煩雑なSkills管理をSoC(関心の分離)により解決する――関心を分離し、プロンプトを部品として育てるためのOSSを作った話 / Solving Complex Skills Management Through SoC (Separation of Concerns)
nrslib
3
500
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
260
野球解説AI Agentを開発してみた - 2026/02/27 LayerX社内LT会資料
shinyorke
PRO
0
400
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
230
AI駆動開発がもたらすパラダイムシフト
ryosuke0911
0
120
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
140
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
320
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
810
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
180
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
210
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.1k
Ruling the World: When Life Gets Gamed
codingconduct
0
190
Scaling GitHub
holman
464
140k
From π to Pie charts
rasagy
0
160
The Invisible Side of Design
smashingmag
302
51k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.6k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
670
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Transcript
Kotlinのifを愛でる okuzawats 明日思わず誰かに伝えたくなる話 2022/03/11
自己紹介 奥澤(@okuzawats) Androidアプリエンジニ ア@フラー株式会社 テックリード 「Jetpack Composeに よるAndroid MVVMアー キテクチャ入門」の著者
今夜のトピックス 1. 自己紹介 2. なんでKotlinのifを愛でるのか 3. Coding Conventions 4. 事例
5. NG例 6. まとめ
なんでKotlinのifを愛でるのか ifは最も基本的なプログラムの構成要素 ifに思い入れを持ってプログラムを書くことで、他のところもいい感じに書けるようになる(かもしれない) 逆に言うと、ifすら蔑ろにすると他のところも残念なことになりそう(偏見) Coding conventionsを読む習慣を付ける
Coding Conventions Kotlin公式のCoding conventions https://kotlinlang.org/docs/coding-conventions.html AndroidのKotlin style guide https://developer.android.com/kotlin/style-guide
ifに関するCoding conventions AndroidのKotlin style guideには以下の記載がある
ifに関するCoding conventions つまり、 みたいに一行に収まる(三項演算子みたいな)if-elseか、 みたいにブロックを書くかのどちらか。
Kotlin公式のCoding conventionsには明確に書かれてないけどサンプルコードに示されるif-elseはこのスタイルで書かれている
ここまでが前置きで、これを踏まえて愛でていきます。
example.1 ひとつひとつreturnを書 く
example.1 ひとつひとつreturnを書 く 寸評 古き良き書き方実家のような安心感だが、IDEに怒られるのが玉に瑕。 Kotlinのifは値を返す式なので、ifを返せば良い。その方がKotlinらしいコードになる(と思う)。
example.2 ifをreturnする
example.2 ifをreturnする 寸評 直接if-elseの評価結果を返すので、どんな値がreturnされるのかがわかりやすい。 returnの前に早期リターンすることは可能なので、単にif-elseだけ見ていれば良いというわけではないのが玉に瑕。 example.1よりもKotlinらしいコードになった(と思う)。
example.3 ブロックを省略する
example.3 ブロックを省略する 寸評 Kotlin style guideに書かれている書き方(ただし一行に収まる場合)。三項演算子の代わりに使えてしまう。 Kotlinらしい書き方だけど、一行が長くなると改行が欲しくなり、ブロックを足さないといけなくなるのが玉に瑕。
example.4 関数本体を返す
example.4 関数本体を返す 寸評 早期リターンなどが発生し得ない書き方。 if-elseの評価結果が返されるので、どんな値が返されるのかは一目瞭然。 個人的には好き。 行数が少なくなって人類が幸せになる。
example.5 Scalaでみる書き方
example.5 Scalaでみる書き方 寸評 Scalaだとこういう書き方をする気がする(Scalaというか関数型言語?) 個人的にはこの書き方が一番好きだけど、チーム開発だと推しにくい。 example.3、example.4くらいがちょうどいいかもしれない。 書籍Functional Programming Kotlinではこの書き方をしているので、関数型に馴染みがあるとこういう書き方を好むのかもしれない。
NG例
NG1 ブロック省略&改行あり
NG1 ブロック省略&改行あり 寸評 Kotlin style guide違反。 何で違反になっているかはわからない Dangling else?
NG2 ifとelseが非対称
NG2 ifとelseが非対称 寸評 個人的にはNG。if-elseが非対称なので目が滑る。 if-elseを対象的に(同じ書き方で)書きたい。
発表時間の都合で以下略 処理の途中でifを使って副作用のあるコードを実行するパターン 早期リターンするパターン
まとめ Kotlinはifだけ見ても色々な書き方ができる。 Kotlinの言語機能を活かした、Kotlinらしいコードが書けると読みやすいコードになると思う。 自分たちだけの最強のifを見つけよう!