Slide 1

Slide 1 text

CameraXとCompose てべすてん 2024/03/04

Slide 2

Slide 2 text

自己紹介 てべすてん ● 専門学校 3年生 ● 4月からAndroidエンジニア ● Android歴 1年半 ● 趣味: 音楽鑑賞

Slide 3

Slide 3 text

CameraX

Slide 4

Slide 4 text

CameraXとは? https://developer.android.com/codelabs/camerax-getting-started?hl=ja

Slide 5

Slide 5 text

CameraXのアーキテクチャ 主なコンポーネント ● ユースケース ● PreviewView

Slide 6

Slide 6 text

CameraXのユースケース ● 利用したいカメラの機能 ● 現状は以下の4つが用意されている ○ プレビュー ○ 画像解析 ○ 画像キャプチャ ○ 動画キャプチャ ● ライフサイクルにユースケースをbindして使う more: https://developer.android.com/media/camera/camerax/architecture?hl=ja

Slide 7

Slide 7 text

CameraXのPreviewView ● PreviewView ○ プレビューユースケースを画面に表示するView

Slide 8

Slide 8 text

CameraXのつらみ

Slide 9

Slide 9 text

CameraXのつらみ ❌ Javaで書かれてる(っぽい) ● kotlinらしく書けない ● coroutineで書けない ❌ Composeに対応していない ● PreviewViewは Android Viewのみ... Composeのプロジェクトでは いい感じにラップする必要がある

Slide 10

Slide 10 text

Composeで 頑張って作ってみる

Slide 11

Slide 11 text

Composeで頑張って使ってみる

Slide 12

Slide 12 text

Composeで頑張って使ってみる

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

❌ CameraControlがFatになりがち ○ かといって意外と分離がむずかちい🥺 作ってみたけど...

Slide 16

Slide 16 text

❌ CameraControlと CameraPreviewが密結合 作ってみたけど...

Slide 17

Slide 17 text

❌ コールバック... 作ってみたけど...

Slide 18

Slide 18 text

CameraXをComposeでも 使いやすくしてほしい

Slide 19

Slide 19 text

ラッパーライブラリに まとめてみました (ここから宣伝ゾーン)

Slide 20

Slide 20 text

camerax-compose

Slide 21

Slide 21 text

☺ PreviewViewをラップしたCameraPreview Composable ☺ ユースケースをいい感じにラップしたUseCase helper ☺ ImageCapture.takePictureをいい感じにラップ camerax-composeの機能

Slide 22

Slide 22 text

CameraPreview Composable ⭕ onBindでユースケースと PreviewViewが疎結合に

Slide 23

Slide 23 text

UseCase helper

Slide 24

Slide 24 text

⭕ 各ユースケースの宣言が簡素に ⭕ previewUseCase() は自動で setSurfaceProviderしてくれる ● 同様にデフォルトでつけておいて欲しい機能をライブラリ側 から入れやすい UseCase helper

Slide 25

Slide 25 text

ImageCapture.takePictureのラップ

Slide 26

Slide 26 text

ImageCapture.takePictureのラップ

Slide 27

Slide 27 text

● ドキュメントの整備 ● Permission周りのヘルパー ● バージョン運用 ○ compose, cameraxとの相互運用 大変そう TODO コントリビュートしてくれてもいいんだぜ?(ボソッ

Slide 28

Slide 28 text

Thank you for listening !