見出し画像

開発日記(2024/4/30)アプリがダウンロードされると通知してくれるLINEbotを作ってみる

さて、無事に2日目の日記を書き始めることができました。この日記は作業と並行して執筆する形式をとっているので、現時点で今日どこまで進めるかの予定は未定です。現在はPM12:30です。

ちなみにAMは、形成外科でおでこの凹みを治す相談をしてきました。9月下旬に入院する予定です。5ヶ月後・・・それまでにはアプリも3回くらいリリースできてるといいな〜(無計画です)

はい、今日は昨日宣言した「アプリがダウンロードされると通知してくれるLINEbotを作ってみる」をやってみたいと思います。

あれから色々考えたんですが、結局長めの連休にまとめて開発を進めよう!みたいなのは実際大して進めることはできず自分に失望するだけなので、やっぱり大切なのは平日の隙間時間でもコツコツ勉強する習慣をつけることだと思うんですよね。

連休とか長めにまとまった時間が取れるときには、そのルーティンを強化するための仕組みを整えることの方が全体の生産性に与える効果が大きかろうという仮説です。

部活の他校との合同合宿とかでよく「この合宿だけで強くなれるわけなくて、大事なのは合宿で吸収したものを活かして日々の練習をどうアップグレードするかだ!」みたいなことを言われましたが、まあそれと同じということですよね。黒田先生、陸上がしたいです・・・

ということで、作りたいもののイメージですが、まあシンプルにはこういうことなのですが、

言うは易しですね

ざっと仕様を眺めてみたところ、当然と言えば当然なのですが、App Store Conect(ASC)がダウンロードされたら自動で教えてくれるわけはなく、こちらから定期的に聞きに行かなくてはないけないようなので、何かしらのサーバーからASCにリクエストを送らねばならない。

で、ASCから返ってくるであろうダウンロード数を、今度はLINE側に渡してあげなくてはならない。このときダウンロード数をどこかで保持するかも決めなくてはですが、今回の目的はとにかく通知してもらってまかないのやる気を出させることなので、まあ保持はしなくていいですね。(今決めました。)

ということで、各APIを叩くためのサーバーをどこかに用意しなくてはですが、え、どうしよう。お昼を食べたりシャワーを浴びたりしながら小一時間悩みましたが、結論としてはGoogle CloudのCloud Functionsを利用したサーバレス構成でいこうと思います。

サーバレスって概念では理解してましたけど、こういうことなんですね。
たしかに、だいぶ早いし気楽でいいですね。(実装できるかはさておき・・・)

さて、普段のお仕事であれば、ここまで考えたらあとはベンダーさんにお見積もりをお願いして予算を確認して発注してとなるわけですが、今回は当然ですが自分で実装します。

手順的には、単体で①ASCから値が取れるか確認して、②LINEにAPIからメッセージが送れるか確認して、最後にCloud Function上で結合してみる感じですかね。

ということで①から試してみましょう。参考にした記事は昨日も載せたこちら。(ここで14:30になりました。)

さらにこの記事が参考にしていた記事がこちら。

この記事には"API利用ができるのは組織として登録しているアカウントに限られています。"とあるけど、2018年の記事だし今はもう個人でもできるのだろう。(だって上の記事でもできてたし・・・)と思い、ASCにアクセスしてみる。

すると下記の画面。なるほど?自分で発行する感じなのかな?ふむ。。

それらしきが見当たらんですな・・・

と思ってスクロールすると下記・・・え、メールでApp Analyticsの実績のサマリ送ってくれるの・・・この機能で良かったのでは・・・そっかあ。でも週次だとややリアルタイム感にかけるので、最低でも日次では覚知したいよねということで開発は続行します。

(メールも受け取ることにしました・・・)

結局、>チームのメンバーシップの詳細を表示するのリンクから下記のデベロッパーアカウント画面に遷移すると「キー(英語)」の文字が。英語かあ・・・

こんな画面。なるほど。”Create a key”ね。読める、読めるぞ。ぽちっ。

うわ、なんか色々あるな。プッシュ通知のキーでないことは確か。一瞬二つ目かと思ったけど、これも個々のユーザー側のデバイスを識別できるみたいな機能のようなのでなし。下から3つ目ぽい?いや、これもなんか違くないか。

おかしいな〜と思って戻ると、あれ。ひょっとして

これなのでは・・・

うわ、こっちだった・・・。読める、読めるぞとか言ってた時間はなんだったんだ・・・

わーい!無事に発行できた!・・・で・・・?(このとき15:10)

まあ最初から公式ドキュメントを読めという話ですよね。すみません。。。

ここで、最初の参考にした記事に戻るのですが、ASCからダウンロード数を聞き出すには、このキーそのものではなくてトークンが必要なのですよね。はあ・・・

なんとここで詰まってご飯を食べたり(お昼寝をしたり)走りに行ったり(お酒を飲んだり)しながらダラダラやっていたら時刻は23:35に・・・

1.自分の認証情報をリクエストしてJWT tokenを発行
2.発行したトークンでAPIリクエスト
3.リクエスト成功したらインストール情報等が含まれたファイルが送られてくる。 形式はgzip。

https://zenn.dev/yamazaking/articles/eedf5e9179d46a

とのこと。(あれ?戻り値ってファイルなの・・・?どこかに格納しなくちゃなのでは・・・ストレージがいる???でも今はそれどころじゃないので一旦無視して進める。)

とりあえずCurlで実行して成功したいところ。。。なんとしてもtokenを手に入れねば・・・ 公式ドキュメントは下記なのですが。。。

今回の鬼門はこちらでした。。。(書いてる時点でまだ未解決・・・)
うーん。。。手元で一回tokenを発行してそれで聞きに行けって言ってるんだよねこれ。

言語はなんでもいい。とにかく署名をしろと・・・

ということで、次回

JWT(Jason Web Token)に署名してApp Store Conect APIからインストール情報を取得するぞ

ご覧いただきありがとうございます。とても嬉しいです。