Above & Beyond

日々のアウトプット記録

PORT Firebase x Stripe

04/10(水) は「PORT Firebase x Stripe」に参加してきました。

stamp.connpass.com

f:id:kabukawa:20190407210220p:plain:w500

会場は Stripe さんの 原宿オフィス。

f:id:kabukawa:20190413190855j:plain

最近良く来ている気がしますが、いつ来てもきれいで素敵なスペースですね!


目次


PORT とは

他の回のイベントページから引用します。

Portはたくさんのイベントや勉強会を開催し、皆さまと一緒に新たな一歩を創造することを目的として立ち上げました。
PortではFirebaseの技術紹介、導入事例、Firebaseを使用したグロースハック、ライブコーディングなどさまざまなイベントを企画しています。

今回はFirebaseとStripeを使ってコーヒーのサブスクリプションアプリPostCoffeeを3週間で作り上げました、というテーマで開催されます。


何故参加したか

Firebase、うまく使いこなせれば簡単にサービスを作ることができて良いなと思うものの、使い所とか注意点について分かってないなぁと思っていたので参加しました。


タイムテーブル

時間 内容
19:00 開場/受付
19:45~19:50 会場説明
19:50~20:00 乾杯
20:00~20:10 オープニングトーク
20:10~20:40 FirebaseでのStripe開発
20:40~21:10 Stripeについて
21:10~21:45 懇親会
22:00 退場

内容

www.pscp.tv


Stripeについて

ストライプジャパン株式会社 代表取締役 Daniel Heffernan (@danielshi) さん

[資料は公開されたら追記します]


DEVELOPPER EXPERIENCE(開発体験)の法則

  • Stripeと開発者の方向性の一致
  • 迅速な導入
  • より多くの言語・環境をサポート
  • パーソナライズ化されたドキュメント
  • 本当に役に立つエラーコードとメッセージ
  • 安定稼働、高い透明度
  • 前方互換性があるAPI、アップデート
  • Think bigger! Developper successを目指す

Stripe

  • eBayのより良いバージョンとしてAuctomaticを開発
  • アイルランドの起業家ジョンとパトリック・コリソンが、2010年にストライプを設立

開発サイクル

  • 昨年は社員が1000人、今年は1700人と急激に大きくなっていて、それでも大丈夫な開発体制を敷いている。
  • Stripeの直近のデプロイ回数、1年で3200回以上。
  • 一日あたり10回くらいやっている

開発で使われているツール達

  • Stripeで使用しているKeyValue型DBのsequins
  • FEATURE FLAGS
  • 新機能等はフラグを使って、新旧のコードを切り替えていっている。

github.com

github.com

github.com

github.com

sorbet.run

sorbet については4/19のRubyKaigiでもセッションがあってStripeの方が話をされるとのこと。

stripe.com

その他の情報

stripe.com


FirebaseでのStripe開発

Stamp Inc CEO Norikazu Muramoto (@1amageek) さん

[資料は公開されたら追記します]

f:id:kabukawa:20190414002430j:plain


スペシャルティコーヒーのサブスクリプションサービス、PostCoffee。

postcoffee.co

このサービスのバックエンドをFirebase、決済機能をStripeで3週間で構築。その際の注意点などについての内容。

データについて

  • ECサービスのDB構造
    • User
    • Store
    • SKU(Stock Keeping Unit)
    • Balance
    • Transaction

Firestoreの仕様

割り当てと制限  |  Firebase

項目 仕様
ドキュメントへの最大書き込み速度 1 秒あたり 1回
コレクションへの最大書き込み速度
(コレクションに含まれているドキュメントの
インデックス付きフィールドには順次値が含まれている)
1 秒あたり 500回
Commit オペレーションに渡すか、
トランザクションに書き込むことができるドキュメントの最大数
500個

コレクションを如何に有効活用するかが鍵。

決済処理

StripeはAPI呼び出しで二重決済を防ぐことができるようなものを提供しているのでAPIに任せることができる。

stripe.com

エラー処理

  • アプリケーションで発生するエラー
  • StripeのAPI呼び出し時のエラー

前者はトランザクションを張ることで救うことができるが、後者は工夫が必要。 具体的には

在庫確認決済出庫処理

という流れにおいて、出庫処理でエラーが発生した場合に決済は既に行われてしまっているので払い戻し処理が必要になり、払い戻し手数料が必要になってしまう。これを回避するために requires_capture (仮計上) を設定しておき、万が一エラーが発生しても手数料が発生せずに払い戻し処理を行えるようにしておく。

尚、以下のイベントでは、更に導入検討から開発・運用、今後の展開などなどクライアント/ディベロッパーサイドそれぞれからの話を聞くことができるようなので、興味のある方は是非参加してみてください!

stamp.connpass.com


懇親会

写真撮れてないのですが、飲み物も沢山あって皆さん飲み物を片手に色々な話をされていたようです。

f:id:kabukawa:20190413191317j:plain

僕もこだわりのコーヒーの話をたくさん聞けて、楽しかったです!


まとめ

Firebaseの話、実際に3週間で構築したという話を聞いて凄いな、と素直に思いました。 こういう話を聞くと、自分でもなにかサービスを作ってみたくなりますね。(といいつつ、なかなか作れない現状をなんとかしたい) あと、Stripeさんの話も、知らない話が多かったのでとても興味深く、面白かったです。(何人かの参加者からも同様の声がありました) 日本のStripeさんも社員数がどんどん増えていると聞きましたが、いい会社だなぁと思ったので納得しました(笑)

みなさま、ありがとうございました!