生涯未熟

生涯未熟

プログラミングをちょこちょこと。

Firebase Authenticationの電話番号認証でOTP Autofillを体験したかったけど敗北した

前段

Firebase Authentication、便利ですよね。各種主要な認証をポチポチっと様々なプラットフォームで実現できる、素晴らしい。
ただ、電話番号認証でOTPのAutofillをやる際には🤔となったのでメモ書き。

やったこと

きっかけとして何がやりたかったかというと、電話番号認証で認証コードがSMSで届いたら入力フォームにタップ一発でシュッとコードが入って欲しかった。
どんな挙動かというとこちらの記事内のGIFを見るとわかります。

akaki.io

で、これを実現しようと思うと以下のようなコードを書く必要がある。

<input autocomplete="one-time-code"/>

これだけ。スンバラシイ。
意気揚々とiOS/Androidで挙動確認してみたところ、iOS x Safariは想定通りにうま〜く動いてくれました。やったぜ。
ただし、Android x Chromeで試したところなんとまぁ動かない。

首をひねりながら調べていたところ、先程のサイトをよく読むと「Androidでは日本語のメッセージでの発動を確認できなかった」と・・・
Firebase Authenticationから届いてるメッセージはたしかに日本語で、それが原因かいなと対応策を探すことに。


暫く調べているとこんな記事が👀

qiita.com

Android: 日本語SMSメッセージでは自動では行われない様子。スクリプトで対応。

ここでWebOTP APIの存在を知ることに。コード書けばいいのね〜と書いて試してみました。
ちなみに navigator.credentials.getlocalhostHTTPS の場合のみしか動かないのでご注意を。

stackoverflow.com

で、やってみましたがこりゃまた動かない。どのように動かないかというと navigator.credentials.get で取れてくるべきOTPが取れずtimeoutエラー・・・
またまたなんでじゃと首を傾げていましたが、そもそもFirebase Authenticationから降ってくるメッセージってWebOTP APIの形式に合っているのか?と疑問に。
ちなみに欲しい形式は以下に載ってるように

Your OTP is: 123456.

@web-otp.glitch.me #12345

な感じ。

web.dev

どうなってるのかFirebaseのGitHub探った方が早いかなと調べたところ、こんな感じのissueが。

github.com

あー・・・これはサポートされてませんね・・・
というわけでFirebase Authentication側で対応してくれないことには実現できないのかーと敗北しました😇

※もし「いや!出来るよ!」という方がいらっしゃいましたらコメントに書いてもらえると助かります・・・🙇

GitHubのREADME.mdにある画像をPurgeするGitHub Actionsを公開したよ

社内でGitHub Actionsを拵えた時に、掲題のGitHub ActionsがMarketPlaceに意外と無かったので作って公開したよ。

github.com

それ何?

GitHubのREADME.mdに貼った画像はセキュリティの観点やらでOSSのcamoを使ってホスティングされているんですよね。

docs.github.com

で、ここでキャッシュが効いているので画像に対して明確にPURGEをリクエストしないと画像が切り替わらない問題があります。
例えば、今回拵えたもので言うとGitHub Actionsによるデプロイ作業によってREADME.mdにある画像をよしなに切り替えた後に、このPURGEを行いたかったわけです。

走らせるshell scriptについてはmpyw氏の以下の記事を大いに参考にさせて頂きました。

qiita.com

もし困ってる人がいたら使ってみて下さいー。

GitHubのprivate repositoryにあるREADME.mdをHTML形式で取得する

久々に書き留めたいネタが出来たのでメモ。
掲題の通りなのだが、何故こんなことがしたかったかというとprivate repositoryにあるREADME.mdの画像をPURGEしたかったから。

やり方

$ curl -H 'Authorization: token [github token]' -H 'Accept: application/vnd.github.v3.html' -sL https://api.github.com/repos/[owner]/[repo_name]/readme

これでいける。
で、取得してきた内容から camo.githubusercontent.com の画像URLを抜き出してPURGEする。
shell scriptでやる場合はこちらのrepoが参考になりました。

github.com

ここのcurlを使った部分を↑のようにすれば良い。
簡単なことだがめちゃくちゃ詰まったのでメモメモ。

重複なし英数字6桁のstringの配列を生成しよう in Ruby

12月に入ってから久々にRubyを書いています。Rubyはあれやこれや色々揃っていて良いですな。
さて、掲題のことをやりたいなとこんなん書きました。

スッキリ書ける。いやーいいですな。

2020年振り返り

blog.unasuke.com

上記記事を読んで今年何やったっけなってのを振り返りたくなったので振り返る。中身のない振り返りをします。

利用した技術

  • Language
    • Go
      • 主に使っていた。部署としては第一候補の言語として挙がるくらいには根付いた。
    • Ruby
      • ここ最近使っている。久々に使っているがGoに慣れきった身としては型が無いのが辛く感じる。
    • Python
      • 機械学習周りで雰囲気で触っていた。未だにわからん。
    • JavaScript/TypeScript
  • Framework
    • Echo
    • Rails
    • React
      • 昔に触って以来久々に触れたがReact Hooksがめちゃ便利だった。昔より取っつきやすくなったかな?
  • Middleware/Infrastructure
    • Docker/Docker Compose
    • Kubernetes
      • 今年はk8sがわからんと回らん業務が殆どだったのでめちゃ習熟した
    • MySQL
    • Airflow
      • 機械学習の前処理で使用。情報があんまり無くて割とむずかった。
    • GCP
      • Kubernetes Engine
      • Cloud Run
      • Cloud Functions
      • Cloud Storage
      • Cloud KMS
      • Cloud Composer
      • AutoML Tables
        • ポチポチっとトレーニングデータ食わせると良い感じに精度の高いモデル生成してくれた。やべぇ
      • BigQuery
      • SQL
      • Spanner
        • 100ノードくらい動かしたりしたがとても良い分散DBだった。高い。
      • Memorystore for Redis
    • AWS
      • Elastic Beanstalk
      • Auto Scaling
        • プッシュ通知配信サーバから配信日時前後に自動でオートスケールするスクリプト組んだりした
      • EC2
  • CI/CD
    • GCP
      • Cloud Build
      • Container Registry
    • ArgoCD
    • Github Actions
    • CircleCI
  • 概念的なもの
    • WebSocket
    • REST API
    • GraphQL
      • 初期の頃に遊びで触っていたがついに本格的に触るタイミングがやってきた
    • gRPC
    • GitOps

感想

去年に増して色々触れた感がありありだった。必要に請われて機械学習周りの基盤作ったり、リリース間近の鉄火場に緊急登板されたり、放置気味だったタスクに首突っ込んでみたり、配置転換でまた毛並みの違った技術スタックに触れたり・・・まぁ便利おじさんな立ち回りをしてました。 来年も便利おじさんとしてより一層磨きをかけて精進します。