見出し画像

開発日記(2024/05/29)想定外の挙動というかそれは仕様を確認してなかっただけですよね

昨日は会社の同期と飲み会で更新ならずでした。と言いつつ、思ったより続いていますね。ほぼ1ヶ月です。その割に対した成果につながっていないのが引き続き恥ずかしいですが、進捗ゼロよりはよっぽどいいですからね。

さて、前回の記事はこちら。簡単に経緯をおさらいすると、自分がストアに公開しているアプリのインストール数をLINEで教えてくれる機能を開発したのですが、想定外の挙動というか、値を設定して配信してきて対応している状況です。

まあ、品質としては大学1年生の情報の授業でまあ単位は来るかなくらいのクオリティですから、推して知るべしという感じではありますが、そもそもろくすっぽテストもしていないというか、APIの仕様すらちゃんと読んでいませんから当然と言えば当然です。(さすがにコストだけは試算していますが・・)つまりはこういう感じです。動きゃいいだろの極意。

で、その結果、なぜかカンマの挟まった数値が送られてくることになり、どうやらAPIは国ごとでデータ構造を分けてレスポンスを返していることを覚知したのが前々回。

せめて国名くらいはわかるようにしますか〜と思って対応したのが前回でした。で、運用してみて初日でこれです。なに〜〜〜〜

”JP,JP”とは・・・本来ここは、例えば日本とスウェーデンなら”JP,SE”みたいになるはずなのですが・・・JPって国ふたつあるの???と思って調査してみるとASCの返却値は下記でした。もはや間違え探し・・・

[
  {
    "Provider": "APPLE",
    "Provider Country": "US",
    "SKU": "nailgrow_20201228",
    "Developer": "Yuta Makanai",
    "Title": "nailgrow",
    "Version": "0.0.3",
    "Product Type Identifier": "1",
    "Units": "2",
    "Developer Proceeds": "0.00",
    "Begin Date": "05/28/2024",
    "End Date": "05/28/2024",
    "Customer Currency": "JPY",
    "Country Code": "JP",
    "Currency of Proceeds": " ",
    "Apple Identifier": "1546614191",
    "Customer Price": "0.00",
    "Promo Code": " ",
    "Parent Identifier": " ",
    "Subscription": " ",
    "Period": " ",
    "Category": "Medical",
    "CMB": "",
    "Device": "iPhone",
    "Supported Platforms": "iOS",
    "Proceeds Reason": " ",
    "Preserved Pricing": " ",
    "Client": " ",
    "Order Type": " "
  },
  {
    "Provider": "APPLE",
    "Provider Country": "US",
    "SKU": "nailgrow_20201228",
    "Developer": "Yuta Makanai",
    "Title": "nailgrow",
    "Version": "0.0.3",
    "Product Type Identifier": "3",
    "Units": "1",
    "Developer Proceeds": "0.00",
    "Begin Date": "05/28/2024",
    "End Date": "05/28/2024",
    "Customer Currency": "JPY",
    "Country Code": "JP",
    "Currency of Proceeds": "JPY",
    "Apple Identifier": "1546614191",
    "Customer Price": "0.00",
    "Promo Code": " ",
    "Parent Identifier": " ",
    "Subscription": " ",
    "Period": " ",
    "Category": "Medical",
    "CMB": "",
    "Device": "iPhone",
    "Supported Platforms": "iOS",
    "Proceeds Reason": " ",
    "Preserved Pricing": " ",
    "Client": " ",
    "Order Type": " "
  },
  {
    "Provider": ""
  }
]

おわかりいただけただろうか・・・"Product Type Identifier"の値が"1"と"3"という違いがあるようです。。。なんじゃそりゃ。

から下記の公式ドキュメントに辿り着きました。

読んだ感じだと"1"は普通にダウンロードされた場合、"3"は再ダウンロードされた場合ということみたいですね。たしかにアプリの性質上、一回利用して成功した、もしくは挫折したけど、何らかの理由でもう一度ダウンロードして再チャレンジということはありそうですね。手触り感があるなあ。(ここまでダウンロードと言ったりインストールと言ったりブレてましたが、公式がダウンロード数と言っていますからダウンロードに揃えたいと思います。)

ということで、国名が同じで複数の値が通知されたときは、どうやらダウンロードのされ方に違いがあるということが分かりました。

何を知りたいか次第ですけどね。大手のグローバルなアプリとかだと、国数×ダウンロードのタイプ数のデータが返ってくるから、やっぱり合算するとか何かしら処理しないとちょっとこのAPIの返却値そのままは使えない感じですよね。

最有力は数値として取り出して合算ですが、まあ様子見としたいと思います。週末はいよいよアプリの改修に着手したいなあ。。。

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