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
Native Modulesで実現する パスワード入力支援 (技術少なめLT版)
Search
Kouta Imanaka
June 18, 2019
Technology
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Native Modulesで実現する パスワード入力支援 (技術少なめLT版)
Kouta Imanaka
June 18, 2019
More Decks by Kouta Imanaka
See All by Kouta Imanaka
FlutterKaigi 2022: ホテルのルームキーをデジタルキー化して得られた気づき
keima
1
1k
CI/CD と DX (Developer Experience)
keima
3
1.6k
AmebaアプリでのCI改善
keima
0
940
Other Decks in Technology
See All in Technology
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
AIに持続⼒を与える 判断の⻑期記憶設計
eiei114
1
690
形式手法特論:Hyperproperty とモデル検査 #kernelvm / Kernel VM Study Tokyo 19th
ytaka23
0
760
:syncing_time:
sksat
2
680
35分でわかるEffective Platform Engineering
nwiizo
5
630
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.4k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
2027年のMetricKit
kantacky
0
170
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
85k
Netflix の裏側に何があるのか...その謎を解明すべく、我々は Amazon の奥地へと向かった
kentosuzuki
0
100
属人化を叩き割れ!「制作加速」と「安定化」の矛盾を打破する:8年目プロダクトが辿り着いた「ミスが起こり得ない」アセット制作フローの全貌
gree_tech
PRO
0
440
[potatotips #96] Give Your AI Agent the Flutter Playbook
korodroid
0
160
Featured
See All Featured
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
440
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
280
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
560
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Exploring anti-patterns in Rails
aemeredith
3
470
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
480
Evolving SEO for Evolving Search Engines
ryanjones
0
260
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
Designing for Timeless Needs
cassininazir
1
450
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
900
Transcript
Native Modulesで実現する パスワード入力支援 (技術少なめLT版) IMANAKA Kouta 2019/06/18 #RNstartup #5
audiobook.jp オーディオブックは、耳で聴く本。 ナレーターが本を読み上げてくれるので、 目を使わずに読書を楽しめます。 Warning: オトバンクではiOS方面を重点的に見てくださるアプリエンジニアを募集中です! 詳しくは: https://findy-code.io/companies/405/jobs/
ある日の定例MTG
CS担当「パスワード忘 れたって問い合わせ めっちゃくる」
None
人間が忘れることはシ ステムに覚えさせれば いいのでは
None
実装方法
まずライブラリを探してみたが・・・ 都合の良いライブラリは見つからなかった ので自作することにしました
パスワードを覚えさせる仕組み • 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
おまけ: 別のパスワードを覚えさせる仕組み • Android / Autofill Framework ◦ API level
>= 26 (Android 8.0) • iOS / Password AutoFill ◦ iOS >= 11 要求OSバージョンが比較的高めであるが、 RNにおいては TextInput#textContentType を 適切に設定するだけでよい
実装 • 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分で説明しきれないので省略!
実装でのハマりポイント • Native Modules側のPromiseの扱い ◦ Promise#resolve/rejectし忘れるとロックしてしまう ◦ JS側はasync functionで比較的安全に書けるが Native側はそうではないので気をつけないと抜けが発生する
• iOS/Androidの各実装における ダイアログの表示タイミングが微妙に違う ◦ 妥協したり調整したり...
None
まとめ • パスワードが自動入力される様は魔法のようだ • なにげに開発中のアプリのデバッグが捗る • Native Modulesはそれほど難しくはない ◦ ※Android歴10年目の感想です
◦ とはいえJS/TSから離れるので 言語間のコンテキストスイッチが気になる • 雑に案を投げたら実現してくれた同僚に感謝
「問い合わせどうですか」 「最近は来てないですねー」
✌
「でも最近間違って新しくアカ ウントを作られる利用者さん が増えているようです...」
「でも最近間違って新しくアカ ウントを作られる利用者さん が増えているようです...」 To Be Continued
THANK YOU (自己紹介) • 今中 幸太 • 株式会社オトバンク 所属 ◦
2019/09 ~ ◦ audiobook.jp アプリ (React Native) • Android開発者歴10年目 • カンファレンス誘導員 ◦ DroidKaigi (2015-2019) ◦ iOSDC 2018, Builderscon, etc… • @pside, GitHub: keima