読者です 読者をやめる 読者になる 読者になる

iyuichiの私的開発ログ

渋谷で働くWebエンジニアのログ. Java, Android, iOS, Docker, GCP, AWS, ゲーム開発

iOSの自動継続をサーバサイドだけでハンドリングできるのか??

Apple iOS 開発

qiita.com

latest_receipt, latest_receipt_infoというレシートのフィールドに関して、

The values of the latest_receipt and latest_receipt_info keys are useful when checking whether an auto-renewable subscription is currently active. By providing any transaction receipt for the subscription and checking these values, you can get information about the currently-active subscription period. If the receipt being validated is for the latest renewal, the value for latest_receipt is the same as receipt-data (in the request) and the value for latest_receipt_info is the same as receipt.

Validating Receipts With the App Store

こんな感じで、最新の自動継続した情報を取れると言っている一方でiOS6スタイルのレシートでだけ返される値だとも書いてあって困る。

Only returned for iOS 6 style transaction receipts for auto-renewable subscriptions.

サーバ側でレシート検証をする必要があるケースとして、複数のプラットホームで決済可能なサービスでPCやスマートフォン以外の場所でもサービスを受けられる場合にはアプリを起動しなくてもサービスの継続または停止の判定をしなくてはならないと思います。

アップルのレシートに含まれるin_appは送信したレシートが発行された時点までの履歴しか入っていない認識で、latest_receipt_infoの中には初回購入後に定期購読で自動継続されたものも取得できるはず。

その項目がiOS6までしか利用できないものだとしたら非常に困る。

You also asked “Essentially my question is this: "If a user has successfully purchased an auto-renewing subscription does that imply that the "latest_receipt" and "latest_receipt_info" fields will always be populated in the receipt validation response?"
Yes - unless there is a problem with the verifyReceipt server.

latest_receipt and latest_receipt_info fields -... | Apple Developer Forums

ここのスレッドを見る限りではアップルのエンジニアらしき人がauto-renewされるアイテムを買った場合には"latest_receipt" and "latest_receipt_info" が含まれると言っているのでiOS7以降でもサーバサイドだけで自動継続の確認ができると思って良いのかな?

UNDOCUMENTED featureだといつ変更されるかわからなくって困る。

PASMOのオートチャージ設定している人は要注意

オートチャージの設定をしたPASMOを紛失すると大変ですよという話。

 

PASMOオートチャージの設定をして利用されている方は、たくさんいると思います。

わたしもその一人なのですが、先日ちょっと大変な思いをしました。

 

まあ、自分にいくつか落ち度があったのですが、、、

先に落ち度の話をすると、

1 まずこの年末に箱根へ旅行に行ってどこかでPASMOを落としてしまったこと

2 PASMOに登録されていた電話番号が記憶にない古いものだったこと

 

そしてタイミングも最悪で12月29日という年末であったこと。

こんなことが重なりこれは起きました。

 

去年の年末は嫁と自分の親を連れて家族で箱根の温泉に行こう!という親孝行旅行へ行くことにしました。

新幹線で小田原まで移動して、そこから小田急箱根登山鉄道に乗り換えて箱根湯本までというコースです。

道中、小田原まではあらかじめチケットを買っていましたのでPASMOの出番はありません。

小田原から箱根湯本までは特急電車のチケットを買ってのることにしました。券売機で特急券を買おうとしましたが二回やって買えない旨のエラーメッセージが出たので窓口へ。

そこで購入できるのかと思いきや、ホームの係員から買って下さいとのこと。

 

さて、ここでPASMOの登場です。

親の分だけ乗車券を購入してPASMOで改札を通りました。このとき上着のポケットにPASMOを入れた記憶がありますが、これ以降2度と出てくることはありませんでした。

 

箱根湯本の駅に着いたら、確かにポケットに入れていたはずのPASMOがなくなっていたのです。

 

ここからが大変でした。

まずは駅のホームにいた係員に忘れ物や落し物がなかったか聞いてみましたが届いていないとのこと。

とりあえず改札へ行き、そこでも忘れ物の確認をしてもらったけれど無いとのこと。改札はそのまま通ってよいとのことで外へでました。

このときに小田急のお客様センターの電話番号を教えてくれたので、ホテルに着いたら電話してみることにしていったんホテルへ。

 

ホテルは駅から徒歩で3分くらいのとこ。

チェックインを済ませて、お客様センターへ早速電話をしてみることに。

この後もう一度お客様センターにはお世話になるのだが、まずはまだ忘れ物として届いていないことを確認してもらいました。

そこでクレジットカードからのオートチャージ機能がついているのでその機能を停止したいと伝えたところ駅の窓口でPASMOの紛失届をするように言われました。

 

そこで再び駅へ。

PASMOの紛失手続きをしたいというと名前と電話番号を書類に記入し身分証明書の確認をされます。

ここで問題発生!

なんと該当するPASMOが見つからないとのこと。

見つからないものは止められないと。

PASMOの裏に書いてある番号がわかっていたのでそれを見せましたが相手にされず。

後でわかったのは電話番号が違っていたのですが、、 

なぜ、見つけられないのか、じゃあどうすればいいのかと軽く言い争って駅を後に。

 

次にクレジットカードのコールセンターに電話しました。

そこで上の事情を説明したところPASMOのお客様センターの電話番号を案内されました。そこに電話をかけてみるとなんと自動音声の応答で、どうも営業してなさそう。。

ということで、またクレジットカードのコールセンターに電話。

するとPASMOのお客様センターは年末の休みに入っていて年明け1/3まで営業していないと。そうなると一体どうすれば?

 

やりたいことはただ一つ。

オートチャージ機能の停止!

 

クレジットカードのコールセンター担当者と話をしてわかったことは、結局PASMOの事業者の方で手続きをしないとダメっぽいということ。

1/3まで待って電話をして見て的なことを言われてその間に不正に使われた請求が来たらどうするのか?普通に考えてその対応はないでしょ?といった不愉快なやり取りをしましたが、結局カード会社の方では特定の取引だけを止めることはできないし、カードの退会をすることしか手立てはない模様。それでは非常に困る。

 

それでまたここまでの経緯を踏まえ、小田急のお客様センターに電話。

こちらが結果的には神対応

こちらの"オートチャージ機能の停止"を早くやりたいし、それをした方が良いということを理解して色々動いてくれました。

担当の方が小田急の駅である小田原駅に電話をしたり、箱根湯本駅に電話をして状況を確認したりしてくれてここまで散々な対応を受けて来たのでちょっと感動するレベル。

 

結論、こちらから伝えた情報から電話番号が違うが該当する情報が見つかったとのこと。だけども、ここからの手続きは駅に行ってもらわないとできないと。

 

十分で、すぐに小田原駅まで行きます!

ということでこの件は解決。

いやー、年末に非常に大変な思いをしたし、一緒に行った家族にもバタバタして心配をかけてしまいました。

 

オートチャージ機能のついたPASMOの取り扱いには注意しましょう!

Gmailの古いメールをお掃除する

GAS GoogleAppsScript google 開発

qiita.com

この記事を見つつ少しアレンジして見ました。

スプレッドシートで整理対象にしたいラベル名と保管日数を指定します。
f:id:iyuichi:20170131095934p:plain

このスクリプトを実行します。
配列に直接記載するのではなくてスプレッドシートで設定を書けるようにして見ただけですが、個人的には便利。
これをトリガーで毎日実行して使ってます。


ラベルと保管日数をスプレッドシートで指定して保管日数を超えているメールを削除するGAS

AirPodsが6週間待ち

f:id:iyuichi:20170120212603p:plain

こんな動画を見たり色々なところでAirPodsの評判を聞く限り買いなのかなと思って注文したけど3月まで来ないという。待ち遠しい!

youtu.be


AirPods with Charging Case

AirPods with Charging Case

AT&Tの2Gネットワークが停止で思ったこと

開発 つぶやき

NextMuni, used to predict arrival times of buses and trains, ran on AT&T's 2G network. Muni vehicles without upgraded systems installed don't show up on NextMuni, a problem that the San Francisco transit agency believes could take weeks to solve.

AT&T Shuts Down 2G Network and Ends Cellular Connectivity for Original iPhone - Mac Rumors

まずはまだ2Gで動いているシステムが残っていたことが驚きです。
が、機能が十分に満たされていたのであれば置き換えしないでおくこともあるだろう。
しかし、利用していたインフラが古すぎてある日利用できなくなると困ったことになる。
日本で公共交通機関が利用しているネットワークを停止することが同じように可能かどうか?

なんとなくこの話を見てシステムも似たようなことがありそうだと思った。
特に業務系のシステムでWindowsXPがずっと使われていてWindows10への移行で少し賑わったのは記憶に新しい。
プログラムに利用するOSSのライブラリやフレームワークミドルウェアなどは動いていてもより良いプロダクトやアーキテクチャに置き換えていくことを怠るといつか維持することができなくなる。

新しい技術をやりたがるエンジニアのメンタリティはあながち間違っていなくて、
どんどん新しいものを導入していくことがシステムを長生きさせる秘訣なのかもしれない。

各種サービスのAPI組み込みが楽になる?

開発

plus.appgiga.jp

これよくできていて良さそうだなと。

でも全てのAPIアクセスがこのサービスのサーバを経由している様子なので障害とかあると困りそう。

個人がささっと何かを勉強がてら作ってみるのにはAPIの挙動の確認もできたりするので非常に良さそうだけど仕事で使うのはちょっと難しい。
そのうち有料プランとかでSLAが保証されてサービスとか出してくるんだろうか?

サンフランシスコへの一人旅(4日目 - その1)

旅行・地域

4日目はシリコンバレーのIT企業見学。

行ってきたのはアップル、グーグルそれと企業ではありませんがスタンフォード大学

車がないので公共の交通機関を中心に1度Uberを使いまわりました。Uberとlyftをこの旅行期間中に何度か使ってみましたが本当に便利です。行動できる範囲が広がります。

 

さて、最初にアップルへ。

Caltrainというサンフランシスコ市内からサンノゼ方面に向けて走っている電車で近くまで移動します。

f:id:iyuichi:20161219090231j:plain

こんな感じの2階建になっている大きな電車です。

シリコンバレー方面に向かっている電車なのでエンジニアが多く乗車している気がしました。電車を降りて自転車に乗り換えていく様はかっこよかった。

 

さてSunnyvale駅はこんな感じです。降りる人はそんなに多くなかったです。

もっと手前の駅でたくさん降りて行きました。

f:id:iyuichi:20161219095040j:plain

ただ朝ごはんに寄りたいファーストフードのお店があったのでそこまであるきました。

f:id:iyuichi:20161228144623j:image

ここのお店です。日本になくここ美味しいと聞いてたので。

f:id:iyuichi:20161228144731j:image

モーニングのセットをいただきました。

量もちょうどよく味もおいしかった。日本人は割と好きな感じかなと思います。

www.yelp.co.jp

 

ここからinfinity loopまでUberで移動します。

 

f:id:iyuichi:20161228145010j:imagef:id:iyuichi:20161228145038j:image

外から眺めるのとアップルストアくらいしか行くところがないです。

アップルストアにも寄りましたがあまり心惹かれるお土産品はなく写真を撮って移動。

f:id:iyuichi:20161219105736j:plain

 

ここからはバスで移動することにしました。

 GoogleマップAppleのマップを駆使するとバスの乗り換えで移動することも結構無理なくできました。バスに乗る際にはクリッパーカードを用意してしっかりチャージしておくと安心です。

クリッパー(Clipper)購入方法 | サンフランシスコ生活ブログ

自分はWalgreenで購入しておきました。

 

f:id:iyuichi:20161228151236p:plain

こんなルートの移動をします。

バス停はすぐそばにありますのでマップを見ながら探しましょう。

f:id:iyuichi:20161219110749j:plain

これで乗ってしまえばSunnyvale駅前まで戻れます。

ここからGoogleに向かいたい訳ですがどうやって行こうかと。またUberとかで行ってしまおうかと思っていたところGoogleマップで検索して見たらバスで行けそうです。

f:id:iyuichi:20161228152102p:plain

こんな感じの経路で移動しました。

駅前のバス停から32番のバスに乗って途中で40番に乗り換えです。

 

f:id:iyuichi:20161219122000j:plain

特にトラブルもなくGoogleの敷地に辿り着けました。

というところで長くなってきたので記事を分けようかなと思います!

この後のGoogleスタンフォード大学への訪問も記事書きますのでお楽しみに。

 

iyuichi.hatenablog.jp

iyuichi.hatenablog.jp

iyuichi.hatenablog.jp