Slide 1

Slide 1 text

コルーチン〜Androidと非同期処理〜

Slide 2

Slide 2 text

小林 慶弘 (Yoshihiro Kobayashi) a.k.a nyafunta9858 ● Mobile Engineer ● 2010年に組み込みソフトウェア開発を請け負う会社に新 卒で入社。これまでに様々な業種向けのtoC/toBtoCサー ビス開発に従事、ソフトウェア単体で動作するシステム 以外にもBLE機器や車載機をはじめとしたハードウェア 連携を要するシステム開発も多く経験。Androidには2系 の頃から触れ始める。 2022年3月にマネーフォワードへ 参画。ホームカンパニー プロダクト開発部に配属。マ ネーフォワードMEのAndroidアプリ開発を担当。 ● 趣味:ガジェット集め、ゲーム、カメラ etc…

Slide 3

Slide 3 text

今日話すこと ● コルーチンとは ● コルーチンの推しポイント ● まとめ

Slide 4

Slide 4 text

コルーチンとは ● Android で使用できる並行実行のデザインパターン ● 非同期実行するコードを簡略化できる ● Kotlin 1.3 で追加されたものだが、すでに他の言語で確立されている概念をベースにしている https://developer.android.com/kotlin/coroutines

Slide 5

Slide 5 text

今日のテーマについて ● Androidの非同期処理は日々使いやすく進化している ● コルーチンとの出会い、 1st class サポート ● コルーチンの推しポイント ○ ライフサイクルの考慮が簡単 ○ スレッド管理・操作がシンプル ○ 簡潔な記述 ○ デバッグツール

Slide 6

Slide 6 text

ライフサイクルの考慮が簡単

Slide 7

Slide 7 text

ライフサイクル

Slide 8

Slide 8 text

ライフサイクル 手動でcancelが必要😥

Slide 9

Slide 9 text

ライフサイクル

Slide 10

Slide 10 text

ライフサイクル AAC ViewModelなどで使いにくい😥

Slide 11

Slide 11 text

ライフサイクル

Slide 12

Slide 12 text

ライフサイクル ライフサイクルに合わせて cancelされる😁

Slide 13

Slide 13 text

ライフサイクル シンプル + 考えることが 少なくなる👍👍👍

Slide 14

Slide 14 text

ちなみに...

Slide 15

Slide 15 text

スレッド管理・操作が シンプル

Slide 16

Slide 16 text

スレッド管理

Slide 17

Slide 17 text

スレッド管理 メインスレッドからの呼び出しが必要 😥

Slide 18

Slide 18 text

スレッド管理

Slide 19

Slide 19 text

スレッド管理

Slide 20

Slide 20 text

スレッド管理 CoroutineDispatcherを指定するだけ😁 スレッド管理もおまかせ👍👍👍

Slide 21

Slide 21 text

簡潔な記述

Slide 22

Slide 22 text

簡潔な記述

Slide 23

Slide 23 text

簡潔な記述

Slide 24

Slide 24 text

簡潔な記述 コード上は同期的 + ネストもなくなり 可読性向上👍👍👍

Slide 25

Slide 25 text

デバッグツール

Slide 26

Slide 26 text

デバッグ ● kotlinx-coroutines-debug ● Coroutine debugger https://www.jetbrains.com/help/idea/debug-kotlin-coroutines.html

Slide 27

Slide 27 text

まとめ

Slide 28

Slide 28 text

まとめ ● Androidの非同期処理は日々使いやすく進化している ● コルーチンとの出会い、 1st class サポート ● コルーチンの推しポイント ○ ライフサイクルの考慮が簡単 ○ スレッド管理・操作がシンプル ○ 簡潔な記述 ○ デバッグツール

Slide 29

Slide 29 text

Join our team! We’re hiring! https://hrmos.co/pages/moneyforward/job s/0004133