Slide 1

Slide 1 text

Native Modulesで実現する パスワード入力支援 (技術少なめLT版) IMANAKA Kouta 2019/06/18 #RNstartup #5

Slide 2

Slide 2 text

audiobook.jp オーディオブックは、耳で聴く本。 ナレーターが本を読み上げてくれるので、 目を使わずに読書を楽しめます。 Warning: オトバンクではiOS方面を重点的に見てくださるアプリエンジニアを募集中です! 詳しくは: https://findy-code.io/companies/405/jobs/

Slide 3

Slide 3 text

ある日の定例MTG

Slide 4

Slide 4 text

CS担当「パスワード忘 れたって問い合わせ めっちゃくる」

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

人間が忘れることはシ ステムに覚えさせれば いいのでは

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

実装方法

Slide 9

Slide 9 text

まずライブラリを探してみたが・・・ 都合の良いライブラリは見つからなかった ので自作することにしました

Slide 10

Slide 10 text

パスワードを覚えさせる仕組み ● Android / Smart Lock for Passwords ○ API level >= 9 (Android 2.3) ○ https://developers.google.com/identity/s martlock-passwords/android/ ● iOS / Shared Web Credentials ○ iOS >= 8 ? ○ https://developer.apple.com/documentati on/security/shared_web_credentials

Slide 11

Slide 11 text

おまけ: 別のパスワードを覚えさせる仕組み ● Android / Autofill Framework ○ API level >= 26 (Android 8.0) ● iOS / Password AutoFill ○ iOS >= 11 要求OSバージョンが比較的高めであるが、 RNにおいては TextInput#textContentType を 適切に設定するだけでよい

Slide 12

Slide 12 text

実装 ● Android: Javaで実装 ○ 当時Kotlin環境が整ってなかった(いまは整備済み) ● iOS: Swiftで実装 ● RNとの接続: Native Modules ○ https://facebook.github.io/react-native/docs/0.59/native-modules-i os ○ https://facebook.github.io/react-native/docs/0.59/native-modules-a ndroid ● 実装の深いところは5分で説明しきれないので省略!

Slide 13

Slide 13 text

実装でのハマりポイント ● Native Modules側のPromiseの扱い ○ Promise#resolve/rejectし忘れるとロックしてしまう ○ JS側はasync functionで比較的安全に書けるが Native側はそうではないので気をつけないと抜けが発生する ● iOS/Androidの各実装における ダイアログの表示タイミングが微妙に違う ○ 妥協したり調整したり...

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

まとめ ● パスワードが自動入力される様は魔法のようだ ● なにげに開発中のアプリのデバッグが捗る ● Native Modulesはそれほど難しくはない ○ ※Android歴10年目の感想です ○ とはいえJS/TSから離れるので 言語間のコンテキストスイッチが気になる ● 雑に案を投げたら実現してくれた同僚に感謝

Slide 16

Slide 16 text

「問い合わせどうですか」 「最近は来てないですねー」

Slide 17

Slide 17 text

✌

Slide 18

Slide 18 text

「でも最近間違って新しくアカ ウントを作られる利用者さん が増えているようです...」

Slide 19

Slide 19 text

「でも最近間違って新しくアカ ウントを作られる利用者さん が増えているようです...」 To Be Continued

Slide 20

Slide 20 text

THANK YOU (自己紹介) ● 今中 幸太 ● 株式会社オトバンク 所属 ○ 2019/09 ~ ○ audiobook.jp アプリ (React Native) ● Android開発者歴10年目 ● カンファレンス誘導員 ○ DroidKaigi (2015-2019) ○ iOSDC 2018, Builderscon, etc… ● @pside, GitHub: keima