Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
Camera API 1と2が混在するプロダクトの開発で
泣いたこととそのワークアラウンド
20.Mar.2018 – T...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
自己紹介
●
住友 孝郎(Takao Sumit...
©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
今回はCamera API 1 / 2についてのお話です
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
おさらい
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
新旧2つのAPI
● Camera API 1
...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
なんで混在させたか?
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
理由
●
当時は4.xを切るわけに行かなかった
...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
混在させる実装アプローチ
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
抽象化したらいいやん?
ICameraEngin...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
茨の道でした
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
どちらもコールバックで
フレームを受け取るが、、...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
フレームをRxJavaで
ストリームにしたら行け...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
簡単には行かない!
●
フレームのサイズが大きす...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
OOMの危険
●
認識ロジックは時間が掛かるので...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
結局、バッファとセマフォで
制御をフルスクラッチ...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
つまり筋力でカバー
©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
機種依存をどうやって確認するか?
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
クラウドテストが使えない
●
リモートでテストで...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
気合で実機でテスト
●
シェア上位の60機種をリ...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
それでも出てくる機種依存
●
CameraCha...
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
つまり筋力でカバー
©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
まとめ
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
ギリギリの環境はフルスクラッチしかない
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
機種依存の確認はひたすら実機で検証
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
つまり筋力でカバー
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
筋トレしていこう
ページタイトルページサブタイトル
©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド

148 views

Published on

shibuya.apk #23 の講演資料です。
https://shibuya-apk.connpass.com/event/80104/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド

  1. 1. ©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド 20.Mar.2018 – Takao Sumitomo
  2. 2. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 自己紹介 ● 住友 孝郎(Takao Sumitomo) – Wantedly 所属 – Androidアプリを主担当 ● こんなアプリ作ってます – Wantedly People – 名刺管理アプリ – リアルタイムに名刺を認識して取り込むアプリ
  3. 3. ©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 今回はCamera API 1 / 2についてのお話です
  4. 4. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net おさらい
  5. 5. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 新旧2つのAPI ● Camera API 1 – プレビューを表示して、シャッターを切る – 一般的なカメラを意識したインターフェースで制限が多い ● Camera API 2 – カメラの内部イベントをJava層に引っ張り出したようなインターフェース – 自由度は高いけど扱いが難しい
  6. 6. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net なんで混在させたか?
  7. 7. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 理由 ● 当時は4.xを切るわけに行かなかった – 市場で数割はマーケティング費用に換算すると大きい ● Camera API 2でもLegacyモードのデバイスはパフォーマンスが悪い ● Camera API 1はプレビューの解像度がFHDが上限 良いとこ取りをしたい!
  8. 8. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 混在させる実装アプローチ
  9. 9. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 抽象化したらいいやん? ICameraEngine CameraEngine1 CameraEngine2 Camera API 1 Camera API 2 アプリからは これだけを意識する
  10. 10. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 茨の道でした
  11. 11. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net どちらもコールバックで フレームを受け取るが、、、 ● Camera API 1 –コールバックは原則UIThreadで呼ばれる ● Camera API 2 –コールバックのスレッドを選べる UIThreadで重い処理をしたくない
  12. 12. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net フレームをRxJavaで ストリームにしたら行けるでしょ? http://reactivex.io/documentation/operators/backpressure.html より
  13. 13. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 簡単には行かない! ● フレームのサイズが大きすぎる –FHD:1920x1080x32bit ≒ 8.3MB –QHD:3840x2160x32bit ≒ 33.2MB
  14. 14. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net OOMの危険 ● 認識ロジックは時間が掛かるので、詰まると即OOMになる ● RxJavaのBackpressureも考えたが、緻密な制御が必要なので怖い
  15. 15. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 結局、バッファとセマフォで 制御をフルスクラッチした
  16. 16. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net つまり筋力でカバー
  17. 17. ©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 機種依存をどうやって確認するか?
  18. 18. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net クラウドテストが使えない ● リモートでテストできるけど触れない... –Firebase Test Lab –Amazon Device Farm –etc 操作感の確認は実機を触るしか無い
  19. 19. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 気合で実機でテスト ● シェア上位の60機種をリストアップ ● 検証センターに篭った
  20. 20. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net それでも出てくる機種依存 ● CameraCharacteristicsで確認してるのに、組み合わせで駄目なデバイスがある – 駄目な場合に「何もしない」にフォールバックするデバイス ● コアバリューに影響する – AutoFocusやAutoWhiteBalanceが動かない ● android.os.Build を見て個別に対応を入れた
  21. 21. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net つまり筋力でカバー
  22. 22. ©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net まとめ
  23. 23. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net ギリギリの環境はフルスクラッチしかない
  24. 24. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 機種依存の確認はひたすら実機で検証
  25. 25. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net つまり筋力でカバー
  26. 26. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net 筋トレしていこう
  27. 27. ページタイトルページサブタイトル ©2018 Wantedly, Inc.©2018 Wantedly, Inc. 2018-03-20 shibuya.apk #23 @cattaka_net ご清聴ありがとうございました

×
Save this presentationTap To Close