Stripe と Firebase で集金ページを作る

この記事は CAMPHOR- Advent Calendar 2018 17日目の記事です。

morishin です。今月イベントを主催して参加費を集金する機会があったのですが、当日会場で受付を用意して集金する手間を省くために、参加者には事前決済をお願いしました。そこで決済手数料や出金手数料、また参加者の支払いにかかる手間の少ない手段を検討し、Stripe と Firebase で集金ページを作成し、そこからクレジットカードで決済してもらうという形を取りました。この記事ではその集金ページの作り方を紹介したいと思います。

リポジトリはこちらです。Firebase と Stripe のアカウントを用意して README の手順を踏めばどなたでも集金ページを立ち上げることができます。

github.com

【目次】

  • 集金ページの仕様
  • 構造
  • 作り方
    • 1. Firebase Project の作成
    • 2. Stripe の登録と API キーの取得
    • 3. ウェブページの実装
    • 4. 決済処理を行う Cloud Function の実装
    • 4. デプロイ
    • 5. 動作確認
    • 6. 本番移行
  • 注意点
  • おわりに
続きを読む

Siri Shortcuts で「Hey Siri, マイクラサーバー立てて」

f:id:morishin127:20180923035423p:plain:w300

iOS 12 がリリースされ、Siri Shortcuts が使えるようになりました。 「ショートカット」アプリから GUI プログラミングのような感じで処理を定義できます。

過去にマインクラフトのマルチプレイサーバーを立てる Lambda Function を作成し、Slack の Slash Commands から叩く記事を書きました。

morishin.hatenablog.com

今回はこの Lambda Function を Slack の代わりに Siri Shortcuts から叩けるようにして、「Hey Siri, マイクラサーバー立てて」の呼びかけでサーバーを立ててもらえるようにしました。

動作の様子です。(なんか多重実行されて Slack にエラーログ流れてるけど🙇)

続きを読む

「買ってよかったもの」というサイトをリリースした

買ってよかったもの」という Web サイトをリリースした。リリースしたのは昨年のクリスマスイブだったけど、リリース記事を書きそびれてた。

作ってから少し経ってしまったけど、覚えてるうちに作った経緯とか開発の流れとかリリース後の反応とかを書いておく。

続きを読む

iOS 自分用ライブラリ紹介×6

この記事は CAMPHOR- Advent Calendar 2017 19日目の記事です。

私用だったり業務用だったりで実装した iOS 開発向けのライブラリをいくつか切り出して公開したのでご紹介です。 誰かの役に立ったらうれしいです。

目次

  • BetterUserDefaults
  • UIViewBorders
  • KeyboardFriendlyScrolling
  • CopyLinkActivity
  • RFC3339DateFormatter
  • EasyButton
  • アドベントカレンダー振り返り
続きを読む

Minecraft のマルチプレイ用サーバをプレイ時だけ稼働させるための Lambda Function

三行

  • Minecraft サーバはメモリ2GB以上のインスタンスが欲しいけど VPS を借りると月2000円ぐらいかかるところが多い
  • プレイ時だけ稼働させればよいので Slack からインスタンスを立てて遊び終わったらデータを退避させて壊せるようにした
  • $0.03 / hour で遊べる

minecraft-lambda-function

Minecraft サーバをプレイ時だけ稼働させるために下記の機能を持つ AWS Lambda Function を作った。

  • create: DigitalOcean にサーバインスタンスの生成 → S3 からプレイデータ(worldディレクトリ)のダウンロード → Minecraft サーバの起動 → IP アドレスを Slack に通知
  • upload: S3 へプレイデータをアップロード
  • destroy: インスタンスの破壊
続きを読む

Swift っぽい UserDefaults

Swift 3 の Notification

Swift 3 から Notification.Name 型が追加され、Notification の名前に生の文字列ではなく Notification.Name 型の値を指定できるようになった。

extension Notification.Name {
    static let userLoggedOut = Notification.Name("UserLoggedOut")
}
let n = Notification(name: .userLoggedOut, object: nil)

参考: Swift 3 以降の NotificationCenter の正しい使い方

Swift っぽい UserDefaults

UserDefaults のキーはまだ生の文字列を使っているけど、新しい Notification のようなインターフェイスで扱えたらうれしいなと思って薄いライブラリを書いた。

github.com

続きを読む

遺伝的アルゴリズムでやっていく Mario AI Competition 2009

この記事は CAMPHOR- Advent Calendar 2016 19日目の記事です。

Mario AI Competition 2009 とは

Mario AI Competition 2009Sergey KarakovskiyJulian Togelius という研究者の方が主催していたらしい大会で、スーパーマリオブラザーズ(を模したゲーム)を自動操作する AI を作ってスコアを競うというもの。スーパーマリオランではありません。

続きを読む