れこです。当記事では Google カレンダーのイベントの開始数分前に、イベントに紐づいたリモートミーティングの URL を自動で開く Chrome 拡張を作ったのでその紹介をしたいと思います。
当記事を書くに至ったきっかけのは 2022/06/28 にツイートしたこの投稿です。
Chrome拡張機能作った。ストアに公開済み。Googleカレンダーのイベント開始数分前にイベントに設定されたURL(Google Meet, Zoom)を自動で開くもの。もうこれ無しでは仕事ができない。https://t.co/pYY074hdZD pic.twitter.com/DvXZdAZnGu
— Leko / れこ (@L_e_k_o) June 28, 2022
完全に準備不足でした。
ツイート当初は「知り合いが 10 人くらい使ってくれて、Twitter や飲み会や勉強会でばったり会った時などにフィードバックをもらい、こじんまりと開発していけばいいや」と気楽に構えていたので Chrome ウェブストアにて拡張の審査は通していたものの Google の OAuth Consent Screen(Google アカウントでログインしアプリに権限を付与する同意画面のこと)の審査を通していませんでした。 というのも審査を出さなくてもThis app hasn't been verified
的な warning が出てくるだけで認証・認可はできるのでひとまずはそれでいいやと思っていました。
しかしツイートが想像を遥かに超えて拡散されてしまい、審査を出してないセンシティブなスコープを利用するアプリのサインアップ上限 100 名の枠を一瞬で使い切ってしまいThis app is blocked
のエラー画面が表示されてしまいました。
一応補足すると何かやらかして Google からブロックされたわけではなくて、サインアップ 100 名を超えると 101 人目からサインアップがブロックされるためこの画面が表示されます。
拡張を使おうとしてThis app is blockedと表示された方、現在新規のサインアップがブロックされています。上限緩和のためGoogleのレビューを通してるところでしてもう暫しお待ちください。 pic.twitter.com/JpxNZ87s4C
— Leko / れこ (@L_e_k_o) June 30, 2022
完全に想定外でしたが、せっかく使いたいと言ってくれた方が使えないのは勿体無いので慌てて Google の審査を通しました。審査に時間がかかってしまいバズの旬は過ぎましたが、どなたでもサインアップできるようになったのであらためて審査の話を添えつつ作ったものの紹介記事を書きました。
ここからが拡張機能の解説です。冒頭でも書きましたがこの Chrome 拡張は Google カレンダーのイベントの開始数分前に、イベントに紐づいたリモートミーティングの URL を自動で開くツールです。 OSS として公開しており、GitHub のリポジトリはこちらです。
https://github.com/Leko/crx-gcal-url-opener
コロナ禍になってからリモートでのミーティングが格段に増えたと思います。リモートミーティングに際してこのような問題ってないでしょうか。
これらの問題を解決するため以下のアプローチで拡張機能を作りました。2 ヶ月ほど自分でテスト運用しましたがとても良く動作しており、もはやこれがないと仕事したくないレベルにヘビーユースしています。
authuser
というクエリパラメータを付与しますその他使い心地のためやっていることとしては以下があります。
紹介は以上となります。READMEにインストールとセットアップ方法が書いてあるので是非お試しください。
今後の展望として対応サービスの拡充や設定カスタマイズの解放などを検討していますが審査対応でほとんどのエネルギーを吸われてしまったので気が向いたら対応します。コントリビューションはいつでも歓迎です。
最後に審査の苦労話です。これから審査に挑む方には役立つかもしれませんが読んでも面白くない内容だと思います…
この Chrome 拡張は Google カレンダーを読み取る必要があるので calendar.readonly
スコープが必要です。このスコープはプロフィールやメールアドレスの取得などとは異なりセンシティブなスコープと扱われるそうです。で、センシティブなスコープを取り扱う OAuth アプリの場合、Google による審査が必須となり、審査が通るまでは 100 人までしか認証できない制限がかかります。
審査を開始したのがツイート当日なので Jun 28、審査が通ったのは Jul 15 でした。
審査を通すためにもっとも苦労したのはコミュニケーションでした。「質問があったらメールに返信してね」と書いてあるので 4 回ほど定義や質問の意図について質問しましたが全て無視され、また「質問があったらメールに返信してね」と書かれた全く同じ内容の指摘が届いたり、申請内容ですでに対応済みのことを何度も指摘され 2-3 回”もうすでに要件を満たしてるよ”と伝えてやっと別の論点に移ってくれるという調子でした。
bot 等が機械的にチェックしメールを送信してるのか、もしくは申請内容は実は関係なく単なる忍耐力チェック&人間判定をさせられていたのか、それとも「審査レビューに対し人間はなんと反論するか」の教師データを入力させられていたのではないかと思うほどにコミュニケーションが成立せず、加えて時差があるためメール 1 往復ごとに 2 日の速度で進行せざるを得ないため時間を割かれました。
(上記事項は審査を担当している Trust & Safety Team に全てフィードバックしました)
もし今後センシティブなスコープを取り扱う何かを作る際には審査対応で時間がかかる可能性があることを考慮しておくと良いと思います。
とはいえ当然私の申請内容にも不備あったため新規ページを作ったり拡張のガワを変えたりしました。審査の前後でアプリのコア機能は一切変わっていません
leko.jp
の URL を設定・申請してみたのですが、申請内容の URL ではなくリダイレクトされた先の URL を見ているようでダメだったので大人しくページを作りました実際にはこれだけの対応しかしてないため実際の作業としては数時間で終わる範囲内だったのですが、前述のコミュニケーション問題により審査が完了するまでにだいぶ時間がかかってしまいました。
以上です。これから審査対応される方に役立てば幸いです。ぜひ拡張機能使ってみてください