Webサービスを1日以内にリリースする方法をすべて書いたよ(「Gumsafe」編)

「Webサービスを10日以内にリリースする方法をすべて書いたよ(「Gumad」編)」

http://papapapa.hatenablog.com/entry/2012/02/22/114942

という記事をみかけたので、ビッグウェーブにのっかることにしました。

https://gumsafe.com/

「gumsafe」は、同人活動もしている@kituneponyo(ITmedia調べ)が1人で、gumroadの存在を知ってから1日で作ったWebサービスです。私は元記事のGumad様の中の方のように百戦錬磨ではぜんぜんなく、まあつまりgumsafeのデザインを見れば判る程度のレベルの人間ですので、誰かの参考になるようなことを書くなんて烏滸がましいことを言うつもりは到底ありません。ただ、今まで何個かサイトを作ってきた中で、ただ単に「多くの人に使って貰える」だけでなく、この程度であってもCGMとして利用していただくことができた、というのが初めてで、大変嬉しくてしょうがないというのが私の感想です。

そもそもgumsafeは元々作ろうと思って作ったものではなく、当初はgumroadを利用した全然別のサービスを作ろうとしたのですが、その過程で、URL漏れがその作ろうとしたサービスにとってめちゃくちゃ致命的ということに気づいたため、仕方なく作ったというのが実際です。ですから、高尚な思想も、大それたプランも、かっこいいデザインも、気の利いたアノテーションもなく、とにかく「URL漏れさえふさげればいい」というただ一点を目的としてgumsafeを作り始めることになりました。

とはいっても、多少なりとも注目していただき、コンテンツを登録してくださる方、宣伝してくださる方、開発に協力してくださる方なども現れ、もし運がよければこれからもうちょっとなにか面白いことができるかもしれません。

私は普段はだいたいアーリーアダプターとアーリーマジョリティの間くらいの位置にいて、普段なら今頃gumroad周辺の盛り上がりを眺めてふーんへえーと言っているはずなのですが、gumroadのシンプルで明快なコンセプト、それと「なぜ、こんな簡単につぶせる穴が開けたままなのか」という、見るモノすべてをハラハラさせるノーポジ戦法にえもいわれぬ感情を懐いてしまったことが敗因かもしれません。

 -2/16 16:00

twitterで誰かがgumroadについてつぶやいていたのを思い出し、ちょっと調べてみたところ、物わかりの悪い私(SNS系は概ねイノベーターに招待いただくので相当早くに登録はするが今一使い方がわからず、twitterなども実際に使い出したのは登録の3年後くらいであった)が瞬時にそのコンセプトを理解でき、試しに使ってみて、面白いと思ってしまう。「出始めのサービスを俺が理解できるということは、これはきっと誰でも理解できるいいものだ」と確信したので、gumroad派生サービスで一山あててやろうと一人ブレストを開始する。

https://twitter.com/#!/kituneponyo/status/170041820166881280

-2/16 16:30

gumroad関連のサービスを思いつく。(まだだれもやってないし、多分他に誰かが思いつくまであと数週間~数ヶ月くらいは猶予があると思うので、作ると思う)

https://twitter.com/#!/kituneponyo/status/170049454051823616

-2/16 17:00

(作ろうと思っているがまだ作っていないほうのサービスの)ドメインを取る。

https://twitter.com/#!/kituneponyo/status/170056027985821696

-2/16 17:30

脳内設計中にURL漏れ問題に気づく。しょうがないので、それに対処するサービス(=gumsafe)を作ることを決める。どうせ作るなら一番乗りがいいし、誰でも思いつくし誰でも作れるのが誰でもわかるようなサービスなので、とにかくスピードを最優先にすることに決める。というか公式にリリースされる可能性すらあって、その場合目も当てられないので、(たとえ最終的に公式対応されたとしても、ネタとして輝くため)とにかく公式よりは先にリリースするのが目標。名前はすぐに決まって、昔ドメインばっかりとって開発するする詐欺をしていた反動で、リリース直前にドメインとるつもりでかなり本格的に開発していたら、fukulogというドメインをガチの企業に先に取られたトラウマがあるため、即時にドメインを取る。

https://twitter.com/#!/kituneponyo/status/170060966132846593

-2/17 3:00

結局ドメイン取った後は遊んでて何にもしてなかったし普通に明日も会社あるから寝ようと思ったけど、gumsafeを開発しなければいけない、誰か先を越される恐怖におののき、寒波に震えながら開発を開始。

幸いドメイン浸透は終わっているので、とりあえず普段使っているオレオレフレームワークを適当にコピペして、ネームスペース的なモノや各種設定をちょこちょこ変更。

設計自体はもう脳内で終わっているので、テーブルを決め打ちでぽこぽこーっと作成。というか本当に必要なデータは、gumroadとgumsafeのパーマリンク変換テーブルしかない。

おもむろに、適当なgumroadコンテンツの詳細ページのスクレイピングを開始。はいはい、最初にトークン取得して、クレカ情報と一緒に送るのね、はいはい レスポンスはJSONでくれるのね、はいはい

-2/17 5:00

コア部分完成

https://twitter.com/#!/kituneponyo/status/170236205273849858

クレカ情報とかをやりとりしないといけないので、さすがに必要だよね・・・と、SSLを申請

出社まで2時間あるので寝ようかとおもったが、まだビジネスロジックしかできておらず、UIがないので最低限のものを作ることにする。8時間も2chで遊んでたことを後悔する

https://twitter.com/#!/kituneponyo/status/170246594736820224

-2/17 7:00

「動くのは動く」レベルの表画面完成。

https://twitter.com/#!/kituneponyo/status/170274498396962816

出社時間なので切り上げる。正直会社を休んで開発を続けることをかなり真剣に考えたが(眠かったし)、SSLの取得完了までやることがないのでおとなしく通勤することにする

https://twitter.com/#!/kituneponyo/status/170274661437939716

-2/17 9:00

仕事が始まるので開発ができないが、その間に先を越されると徹夜が報われないので、無理を承知で公開。

https://twitter.com/#!/kituneponyo/status/170311322716745728

なんかすごい勢いでRTされてびっくりする。

-2/17 10:00

ちょっと欲がでてくる。やたらgumroad推しのITmediaなら・・・! と、ITmediaの知人に電話してみたところ、担当に紹介してもらえることになったのでちまちまメールを書く。

-2/17 11:00

友人の@y_arimにお願いして提灯記事をかいてもらう。

-2/18~2/20

一度メモリにファイルを溜め込んでからDLさせており、数十MBで使い物にならないレベルだったので、右から左に垂れ流す仕様に修正。

DLに失敗しても再ダウンロードできるよう修正。

利用規約や個人情報の公開など、とりあえず文字だけでも誠意の見えるような点の修正。

-2/20

ITmediaに記事を掲載していただく。yahooニュースで、広く日本全国に私が同人活動をしていることが知れ渡る。

寺田克也先生の絵が登録される。スパムと思ったがご本人だった。この時点でわりと満ち足りてしまう

-2/21~2/23

コンテンツ本体のURLを別途登録してもらうことによって、gumroadURLが割れても無問題な機能追加。これで、多数存在するクローリング+一覧表示系のマッシュアップサイトへの対策が完了。

OAuth認証によるtwitterログイン機能実装。同時にユーザテーブル作成。

gumroad API利用による一括登録機能実装。

stripeを使った独自決済機能実装。stripeにはやく日本でローンチしてね!とおねがいメール。

-今後の予定

色々

 

公式がよく落ちるので、その時間がボーナスタイムになっている上、しかも仕組みがすげー簡単なので、みんないつもよりやりやすいんじゃないかな? と思います。なかなかないレベルの周辺サービスの開発スピードの原因だと思います。

gumroadはよく「誰でも考えつくけど誰もやらなかったのがすごい」といわれますが、ある意味gumsafeも、「誰でも思いつくけど誰もやらないけど別にすごくない」的なサービスだったため、幸い今のところ同じコンセプトのサイトはなさそうです。

今後、paypalを使った独自決済を実装したサイトが雨後の筍のように出てくると思われまるので、そこで各サービスがどう工夫するのかは関心をもって見ていきたいと思います。

 

 

 

一括登録機能をリリースしました

これまでは、gumsafeにコンテンツを登録すると

(1)gumroadにコンテンツを登録→gumroad URLを取得

(2)gumsafeにgumroad URLを登録→gumsafe URLを取得

という大変な手間がかかってしまいましたが、一括登録を利用すると

(1)gumsafeに登録→gumsafe URLを取得

と、コンテンツの登録に必要な手間が大幅に削減されました。

gumroad api client

http://wakuworks.jugem.jp/?eid=180

を開発された@wakuworksさまに大変感謝いたします。

 

twitterでgumsafeにログインできるようになりました

といっても、まだtwitterアカウントに紐付いた状態でコンテンツを投稿できるだけですが。

マイページ機能も追って開発します。

トップページにプレビュー画像が出ない方へ

gumsafeでは、gumroadのページからプレビュー画像を取得後、リサイズしたものをトップページやブログパーツのサムネイルとしています。

gumroadの通信が重かったり、プレビュー画像が余りに大きいサイズの場合、画像の取得~リサイズに失敗してしまう場合があります。

この場合、再度登録作業を行って頂くと、すでに登録されたコンテンツの情報が上書きされ、プレビュー画像から正しくサムネイルが生成されると、トップページにサムネイルが表示されるようになります。

このほか、gumroad側で値段やURLなどの情報を変更した際にも、再登録を行って頂ければgumsafe側の情報も更新されますので、ご利用下さい。

 

gumroadの決済URLが割れてもコンテンツURLの隠匿性を維持できる機能を追加しました

gumsafeの登録画面に、「contents URL」という項目を追加しました。

f:id:gumsafe:20120221104007p:plain

-gumroadに登録するURL(またはアップロードするファイル)には、ダミーを登録

-gumroadのプレビュー画像にはこれまで通りプレビュー画像を登録

-gumSafeの「contents URL」に、販売したいファイルのURLを登録

することで、gumroadには販売したいファイルの情報を一切登録せずに、決済機能のみを利用することが可能になりました。

テストとして一つコンテンツを登録しました。

https://gumroad.com/l/CaA

https://gumsafe.com/l/?18

上のgumroadのページでは著作権にひっかかりそうな水分子の絵がプレビューとして表示されていますが、これを購入しても「ダミー」と書いたテキストファイルが落ちてくるだけです。

下のgumsafeのページで購入した時にかぎり、元の(といってもプレビュー画像と同じものですが)画像ファイルをダウンロードすることができます。

これまでgumsafeでは「URLを隠匿する」とアナウンスしてきましたが、それはgumroadの決済URLが隠匿されているのが前提であり、たとえばURLを総当たりすればすぐにその前提は崩れてしまうため、gumsafeの提供するURL隠匿機能には穴がある状態でしたが、その点を今回の機能追加で改善しました。手続きが増えて面倒ですが、より高い隠匿性が必要な方はご利用下さい。