ファイルアップロード容量の購入機能を作るときに考えたこと
こんばんは
scrapboxのエンジニアをやっています
コメントがあればこのページに書き込んでいってください!balar.icon
今日の話
1. Scrapboxのファイルアップロード機能について紹介
2. 容量の追加購入を買い切りにした理由
3. 実装の話
Scrapbox上に画像やpdfなど様々なファイルをアップロード出来る機能(1ファイル最大100MB)
https://scrapbox.io/files/6284bb46fe9e37001d00d341.mp4
ファイル名は全文検索の対象になっている
画像にはOCRが自動的にかかり、全文検索でヒットします 先日pdf内のテキスト情報も検索できるようになりました https://gyazo.com/ea0aaf1b03b64f93200d6239d78de92c
便利そうutgwkk.iconyosider.iconteyoda7.iconmgn901.iconmeganii.icon
超良いakix.iconmtane0412.iconyamanoku.icontakker.icon
たぶん論文とかデータシートとか管理するのに便利。あとワクチンの接種票とかshokai.icon この機能で容量購入の必要性が増したmtane0412.icon
容量別にいらなかったけど投げ銭として使っていた
便利な機能だが、今までは容量を増やすことが出来ず制限がある状態だった
購入機能を実装する事でその制限が無くなりました!
ファイル容量について
個人の容量
ビジネス版プロジェクトを除く全てのプロジェクトは個人に紐付けられる
デフォルトで1人当たり1GB
例:プロジェクトAに300MB、Bに500MBアップロードした場合
300MB + 500MB = 800MBが使用量
ビジネス版プロジェクトの容量
ビジネス版プロジェクトは、ユーザー毎ではなくプロジェクト単位でファイル使用量を合計する
個人の上限は存在しない
プロジェクトメンバー数 × 1GB
例:プロジェクトを5人で利用していて、ユーザーAが1GB、Bが2GB使っている場合
容量は5GB
1GB + 2GB = 3GBが使用量
複数プロジェクトの決済をまとめている場合
(ユニークユーザー数 + 追加プロジェクト数) × 1GB
ファイル容量の確認/購入
右上のメニューのUser settingsのFile capacityタブから確認/購入が可能
https://nota.gyazo.com/1447672db46b773e7707b3abd61039bf
追加購入は1GB 1,000円
サブスクリプション(定期購入)ではなく買い切りになります
購入機能の様子
https://t.gyazo.com/teams/nota/08e29b90ca7ec5b83a57ba8c21a4e4a3.mp4
hiroshi.icon x100 大人買いしたい
よくあるクラウドストレージのサービスはサブスクリプション形式が多い
サブスクリプションはいつか決済が停止したり、解約される物です
複数人で使っているプロジェクトで、あるユーザーが解約したらプロジェクト内のファイルが歯抜けに消える
それによってインターネットから情報が失われてしまう事態を避ける為に買い切り形式にしました
インターネットから情報が失われてしまう事態を避ける
尊すぎるyamanoku.icontakker.icondaiiz.icon
公開projectで参考にしていたページに埋め込まれていた画像やpdfなどがアクセス不可になることを避けられる
scrapboxは情報を蓄積していくツールなので消えずに残っていく方が嬉しい
hata6502.icon買い切り式だと、サークル活動などでの経費申請とも相性良さそうですよね。
サブスク解約し忘れもないし、毎月経費申請したりする必要がない。
個人ですが忘れっぽいので解約し忘れがないの本当にありがたいですteyoda7.icon
スライド資料がアクセス不可能になったWebサービスあったなぁ🤔と思い出してしまったakix.icon
「容量削らないと」ということもないので、ユーザとしてはかなり精神的に楽だと思いました。mgn901.icon
こないだ「iCl○udのプラン変えて容量増やさないと」と言っている友達がいて大変そうだなになった。
隠せてない伏せ字で草takker.iconteyoda7.iconMijinko_SD.icon
普通に安く済んでたすかるyosider.icon
こちらから払うお金が少なすぎて逆に心配になるレベル()mgn901.icon
1GB単位で増やせるというのもよいですよね。mgn901.icon
実装の話
決済に成功/失敗するクレジットカードの番号や、開発環境用のアイテムなどのテスト環境が充実している
採用した理由
Apple PayやGoogle Payの導入が容易
決済の処理を全てStripe側に任せる事が出来て、セキュリティ的に安心
Add capacityをクリックするとサーバー側でユーザーの情報などを元に決済画面のURLを作ってリダイレクトさせる
webhookを用いて決済が成功したことを受け取り、容量の値を反映させる Scrapbox側でユーザーのカード情報などを保存しなくて済む
苦労したところ
多くの決済手段が提供されていて今回に適切な決済はどれか判断するのが難しい
最後に
「ユーザーが容量を増やせるようにしたい」という目的からエンジニア自らで色々調査して仕様を決めていきます
個人では滅多に実装することが無い決済機能を実装できて良い経験になった
/icons/いい話だ.iconakix.iconyuiseki.iconyamanoku.icon