Ruby
JavaScript
Heroku
AWS
個人開発

開設後3週間で収益10万円を得た個人開発サイトでやったことの全部を公開する

開設して3週間ほどで収益10万円を個人開発サイトから得たので、そこでやったことを全部ここに公開する。

はてなブログの方にも似たような記事を書いたのだが、Qiitaにはより詳しく書き直してノウハウや技術を全部公開してみることにした。
世の中には**億ドルのバリエーションを獲得したスゲー起業家の話か、個人開発サイトを立ち上げたものの収益なんてゼロに近い話かの両極端しか無いように感じる。
パッと立ち上げてだいたい1ヶ月でiPhoneXが買えるぐらいのサイト規模というのは、どんなレベルのエンジニアでも手が届く範囲内にあるのが実感だ。「人生賭けて起業!」とかそんな熱い話ではない。普段の仕事が終わったら、ちょこちょこコードかいて個人的にアプリを公開して収益を得る、ぐらいの話。「1億総クリエイター時代」ではこんなやり方が世の流れに合っている気がする。

この記事でも「エンジニアはアウトプット至上主義であるべき」と主張している。自分で主張するからにはやっぱり得たノウハウは全部公開するのは当然だな、と。だいたい数週間で収益が10万円なんてのは企業秘密にするほどのことではない。どんどんQiitaユーザーの皆さんにも読んでもらって、そこからフィードバックを得た方がいいに決まってる。そしてなにより私自身が10万円程度のサイト構築では決して終わりたくない。今は別のサイトを企画していて最終的には収益性を今回構築したサイトの100倍ぐらいにするつもり。その学習の過程としてここに記した。

サイト内容

今回、開設したのはざっくり言うとこんなサイト。
QiitaのAPIから技術書に関して言及されている記事を抜き出し、それに応じて技術本のランキングサイトを作成。たくさんの技術ブログ記事で紹介されている本ほどいい本、という発想のランキング。詳しい内容とコンセプトはこちらの記事に書いた。

技術書ランキングサイトをQiita記事の集計から作ったら、2700冊の技術本がいい感じに並んだ

この記事にそれなりに反響があって、そこからサイトにアクセスが流れてまーまー皆さんに気に入っていただいて、立ち上げ3週間で10万円の収益が発生した。今後もサイトを改善し続けて、ずっとコンテンツが自動更新されて、人の役に立つ技術書ランキングサイトであり続けたいと考えているところ。

技術書ランキングをQiita記事の集計から作成した
テック・ブック・ランク

ここからこのサイトを通じて得たノウハウについて書く。

企画の立案

テック・ブック・ランクの前に作った個人開発サイトはかなり自分の思いと情熱で突き進んで作ったのだが、結果的にはスベった。そこで一旦は自分の思いを置いて、成功事例をトレースすることで企画の立案を学び直すことにした。この方針がとても良かったと思っている。

「自分の欲しいモノを作ればOk」という考え方の甘さ

個人開発の企画を立てる際に「まずは自分が欲しいモノをそのまま作ってみましょう」というのがある。これには異を唱えたい。人は誰でも個性や考え方の差異があって必ずしも「自分が欲しいモノ」=「世の人々が欲しいモノ」ではない。
当たり前だけど、人気のあるサイトというのは使っていただくユーザーに人気があるのだ。作った本人が気に入ったところで「で、なに?」だろ。

世の中全ての人を対象する必要はなく、対象ユーザーは絞れば絞るほどサイトは作りやすい。できるだけターゲットは絞るべき。「理系の人向け」よりも「ITエンジニア向け」の方がいいし、「ITエンジニアでかつ技術書が好きな人向け」ならもっといい。

そこで注意しなければならないのは「自分が欲しいモノ」にフォーカスするあまり、対象ユーザーが極端に絞り込まれて結局そのプロダクトが欲しい人は全世界であなたひとりだけ、という笑えないオチになってしまいがちなこと。
スティーブ・ジョブズのような天才的な勘の持ち主でも無い限り、自分の思いだけで突き進んでも「世の人々が欲しいモノ」に到達することは無い、というのが私の意見。

現時点の私が考えた企画立案の王道

  • 対象ユーザーを特定する
  • そのユーザーが欲しいモノ、気に入っている他製品をとことん調査してコピーする
  • 最後の最後に少しだけ自分の味付けを加える

トレンドを捉えるアンテナ感度がめちゃくちゃに鋭い人でもなければ「自分の感覚」なんてモノは参考程度にとどめておくべし。自分の個性やオリジナリティなんて最後の最後にほんの少し加える程度で十分。「ほんの少しだけ」という意識でやっても個人サイトはウザいぐらいに作り手の個性が入りこんでしまう。

自分でコード書いて立ち上げるサイトの場合、小さなボタンの配置から1行のキャッチコピーまで自分の脳から出てくる。すると気付いてなくても個性が勝手に入り込んでしまう。そうなると「自分の思い」なんてアクの強いモノを入れる必要はもはや無い。考えるべきなのはユーザーのニーズ、ただそれだけでいい。

前述のテックブックランクには先行している成功事例をとことんまで研究してコピーした。コピーすれば見えてくるものがたくさんある。普段はユーザーとして使っていただけのサイトも、その実装をコピーすることで「あーアレはこういう意図でそうしていたのか!」と気付く点が多々ある。

コピーを後ろめたく思う必要は無い。法に触れるようなパクリや著作権侵害は論外だが、成功事例のコピーはどんどんやるべき。フェイスブックは世界初のSNSなんかじゃないし、YouTubeもビデオシェアリングサイトとしてはかなり後発。Googleも世界初の検索エンジンじゃないのは誰もが知っている。
俺様のセンスにまかせていいのはスティーブ・ジョブズだけ。ジョブズ以外の人はとにかく成功事例を研究しまくって模倣すべし。

お金について

サイトのマネタイズ

人それぞれの考え方によるだろうが、私自身は個人開発においてそのマネタイズにはめちゃくちゃにこだわっている。なぜならお金の指標がもっとも厳しくそのサイトの良し悪しを測るバロメーターになるからだ。
別に明日に食う物に困っている訳ではないし、喉から手が出るほどカネが欲しいとは思っていない。「カネ、カネ」言ったところで欲しいモノはほどんど無い。ずっと同じ服しか着ないし、高級車にも家にもなんの興味もない。MacBookがあってコードが書ければそれだけで満足なネクラオタクなのは自分でも分かっている。

それでも個人開発においては頑なにその収益性にこだわっているのは、お金という指標を使ってよりよいアプリを作るため。私の考えでは月に10万円の収益をもたらすアプリよりも、100万円の方が10倍いい。1億ならもっといい、となる。

そこに「個人が好きに運営しているから収益性は考えてません」という態度をとってしまうと、そこからの発展性を望めなくなる。誰かの作ったモノを見て「おーいいモノ作ったねー。イケてるねー」とお世辞を言うのはタダだしなんとでも言える。そこに「*円を払ってでも欲しいか」とお金の指標をもってその人に突きつければ「いいとは思うけどカネ払ってまでは要らんな」とかにもなる。お金はその評価基準をぐっと高めて厳しくしてくれるのだ。自分の作ったモノに対してはそういうテンションで評価して欲しいし、そうでなければサイトがより良くならないと思っている。(ここで言ってるのはあくまで評価基準であって、ウェブサイトの収益モデルが有料課金か無料の広告収益モデルか、とかではない)

「世の中は評価経済社会に移行していてマネーの価値は減り続けている。プロダクトの価値は別の評価基準で測る時代になりつつあってですねー」って?そういうカッコいい話は別の所でやってくれ。2018年時点の私にとってアプリの評価基準はあくまで「Show me the MONEY!!!」であって、それ以外の指標に魂が震えることは無い。

こう書くと「ショぼっ」と思われるだろうが、たったの10万円ではあるが2週間で収益のチャートがグングン上がっていくのを見て興奮したし、今ではこの10万円をいかに100万円、1000万円にするかを考えてワクワクしている。いいね数とかではここまで興奮しなかっただろうし、真剣により向上される方法を考えることもなかっただろう。

無料プランに徹したサーバー構築

ウェブサイトを開発するにはサーバー代がついてまわる。ここは徹底して「無料プラン」にこだわった。理由はサービスをできるだけ長く存続させてチャンスを増やすため。アプリがウケるチャンスはサーバーが立ち上がっている時間に比例する。同じ質なら1ヶ月だけサーバーが稼働したサービスより10年稼働してる方のがチャンスが何倍もある、という単純な理屈だ。作った本人は半分諦めたようなプロジェクトでもサーバーは24時間ずっと営業してくれる。今の時代はナニがウケるか、なんて分からない時代だし、何年でもサーバーを立ち上げておくに越したことは無い。そうなると考慮すべきポイントがサーバー代になる。

「なにケチケチしてんだよ。月に数千円のサーバー代ぐらい出したらいいだろ」なんて思ったら、ちょっと考えて欲しい。最初はそれでもいい。だいたい個人開発の初期段階では作ってる本人もノリノリだし、まー数千円なんてケチるまでもない。
でもサイト運営は開設してからが勝負だ。数ヶ月経ってもあまり反響が無いとする。そこで「いやいやもうちょっと後半年ぐらいはメンテして」と考えた際に「月に数千円✕数ヶ月分」とすると高額になってくる。**万円か、、、だったらやめよかな、となりがち。

サーバー代が無料だったら何も考えずに「とりあえずはこのまま稼働させといて時期が来たらまたメンテしよう」とやりやすい。

無料でもサクサクレスポンス

無料だからと言ってレスポンスが遅いサイトになったら意味が無い。レスポンスにもとことんこだわっている。誰からもテック・ブック・ランクが「遅い」とか「もっさりしている」なんて評価は受けていない。自分で言うのもなんだが、サクサク感がまーまー気に入っている。

使った技術としては以下になる。

  • Rails
  • GraphQL
  • React + Redux
  • MongoDB
  • Google Cloud Platform
  • AWS S3
  • Heroku
  • CloudFlare

RailsをデプロイしたHerokuは無料プラン。Add-onも無料プラン。AWSもGCPもできる限り永年無料枠内。SSL対応?そんなモン無料に決まってる。

Herokuの無料Dynoは弱力だ。さらにサーバーの置き場所はUSかヨーロッパしかない。日本向けのサービスには相当不利であることは確か。なので注力しているのは以下の点。ちょっと変なやり方だが、ここは個人開発用に発想を変えて考えた。

  • HerokuのRedis(無料プラン)には25Mのキャッシュが置けるのでできるかぎりここにデータを置く
  • 全てのレスポンスはRedisキャッシュからとしてHerokuログ上では5ms以内とする
  • データベースが更新された際には、自動でその内容をRedisに書き込む処理を入れる
  • ユーザーからのリクエストを受けた際にそのレスポンスは常にキャッシュから返して、データベースはほぼ動かさない
  • データベースはMongoDBとした。PostgresqlやMySQLの無料枠は小さ過ぎて使えない。MongoDBは500Mまで無料。
  • 例え5msでも地理的に離れた日本のクライアントにあるReactへの読み込みは時間がかかるので過度に期待しない
  • 初回のアクセス時に必要な情報はGCPのCloudStrage(もしくはAWSのS3)に全て入れて、Railsサーバ(Heroku)へ問い合わせさせないようにする
  • 非同期でRailsにGraphQLで情報を取ることでユーザーがボタンを押した時には全ての情報がクライアントのReduxに入っているようにする

知恵を絞って設計した無料プラン稼働のサーバー群の方が、有料プランのテキトー設計よりレスポンスがいいと思う。こういう所で1msにまでこだわって設計して得たノウハウはどこでも応用できる。カネかけてできることなんて収益モデルが確立した後でなんとでもなるので、初期段階では「無料にこだわる」ぐらいの発想でちょうどいい。

実際のサクサク感はぜひテックブックランクのサイトでお確かめください。技術書の詳細ページリンクを押したら一瞬も待たせることなくページ遷移するはずです。

技術力と企画力の相関

結論から言う。技術力と企画力にはまったく相関がない。
技術力の定義を「頭で考えた企画をどのぐらいの割合でコード書いて実装できるか?」とすれば私の技術力はきっと90%を超えている。つまりは自分で考えたことぐらいならばアプリに落とし込める。まーそもそも考える企画自体が「自分でもできそうなこと」と制限しているからかもしれないが、ここで言いたいのはそんなことではない。

それなりに技術力があったとしても即それが「いい企画を生み出せること」にはならない。当たり前だけど技術力と企画力はまったくの別モノだ。
企画力は訓練して向上させるべき項目のひとつ。なにもトレーニングをしていないのに、自動的に上がる訳が無い。

前の項目にあった「自分の欲しいモノを作ればOk」という発想が広く受け入れられる理由もなんとなく分かる。「自分の欲しいモノ」ってしてしまえば楽なのだ。オレはこれが欲しいから、ってやればそれ以上に企画について考えなくて済む。そんな楽な方法でOkならみんなそうするわ。
マネタイズを狙ったド真剣な企画はそんなんで出てくる訳がない。企画はフワっとした思いつきじゃないし、かなり考えて調べてしないと到達しない科学的な結果だ。とにかくここは訓練が必要なのに軽んじられているのが、アプリが停滞する原因だと思う。ということで私はこれからも企画力を上げるトレーニングをガンガンやらなければならない、と考えている。

システムとコンテンツ

エンジニアであるがゆえにシステム構築にばかり気が行ってしまう気持ちは分かる。だが、いいウェブサイトにおいてはシステム構築と同じかむしろそれ以上にコンテンツに気を配らなければならない。

よくあるのがユーザー投稿型のウェブアプリを立ち上げた場合。ツイッターとかインスタグラムとか各ユーザーからの投稿で成り立つあの系統のSNS企画。
スゲー企画を思いついたスゲーエンジニアが自身の渾身の企画を実装して、フェイスブックを超えるような素晴らしいSNSを作りました、と。ユーザーさんがその素晴らしいSNSにいろんな内容を投稿するのを待っていたのですが、待てど暮らせど投稿数が伸びない。投稿にあるのはサクラ的に自分や身近な友達が入れたのだけでさっぱり盛り上がらずに終了、という例。

ユーザー様はシステムになんか興味はない。どんなデータベースか、どんなフレームワークか、なんて知る訳が無い。サイトにアクセスした際に目の前にあるのはコンテンツだけ。だからコンテンツこそが重要。
投稿型サイトであっても、サイト開設初日からバリバリに盛り上がっていて、一番最初のユーザーであっても、その大盛り上がりなSNSパーティーへの参加者になってもらう必要がある。
「サイトは開設したばかりですし、初期段階での投稿数不足はちょっとガマンしていただいて、、、」って、そんなことをガマンしてくれるユーザーは絶対に居ない。ユーザー数が少なく盛り上がっていないSNSからは近づいてはいけない香りだけが漂うのだ。

なので前述のテックブックランクではQiita上にある30万件の記事をAPIから抜き出し、サイト開設初日からたくさんの投稿数と書籍数、ユーザー数が、実際には無くても、既にそこにあるかのように設計した。

これはほんの1例だが、私も含めてエンジニアが立てる企画のほどんどはシステム設計指向でコンテンツに対する考えがスカスカのが多い。コンテンツはシステム設計よりも優先して考えるべきことなのだ。

個人開発で3大やってはいけないこと

  • 「マネタイズは後で考える」と言ってとりあえず作る
  • 「コンテンツ(ユーザー投稿数確保)は後で考える」と言ってとりあえず作る
  • 「ウケるかどうか出してみないと分からない」と言ってとりあえず作る

上記の3つとも推奨されている方もいる。ただ少なくとも私にとってはこの3つが最大の失敗要因だった。
映画「ソーシャル・ネットワーク」のジャスティン・ティンバーレイクのように「広告なんてクールじゃねーよ」と気取ってもいいが、そんなのが上手くいった試しが無い。
だいたいにおいて 考えることを放棄した時点で負けが決定している。じっくり考えるところが個人開発の一番おもしろいところだし「後で考える」ぐらいならその場でとことん知恵を絞った方が楽しいだろう。

アウトプット至上主義で数撃ちゃ当たる戦略

私の個人開発の成績としてはまだまだ発展途上だし、いいノウハウがあるならこっちが知りたいぐらいだ。それでも現時点でこれだけは断言できる。

個人開発なんてものはアウトプット至上主義で数撃ちゃ当たる戦略に沿っていくべし、と。

人様に「俺さー、すげー企画を思いついたんだよねー」なんて言ってる暇があるなら、コード書いてサーバーに入れて公開すべし。ブログに「個人開発の心得」なんて書くヒマがあるなら、コード書いてサーバーに入れて公開すべし。とにかく数を打て、と。

今まで様々なウェブサイトを立ち上げてきたが、その多くは失敗だった。世の中には出す企画がほぼ全て当たっている天才的な人も居るが、残念ながら私にはそんな才能は無いようだ。しかしサイトを立ち上げた数だけ経験値が積まれて、少しづつではあるが精度が高まってきているのは感じている。数をたくさん打つこと以外にいいアプリを作る方法は無いな、というのが結論だ。

私が個人開発のウェブサイトを企画する際に参考にするのはすごい実績で開発している人の英語ブログになる。すると「あーこの人って確実に天才肌だな」って人が結構居る。そうした人達の共通項として「すごい数の企画を立ち上げていること」。たくさんの企画を立ち上げて潰してを繰り返す中で得た知見がブログ記事の一端にも現れていて、それらが本当に素晴らしい。で、振り返って自分自身を考えてみれば彼らほどの経験値が圧倒的に足りていない。

能力はともかくとして、ここはとにかく数を打って経験値だけでも稼がないと彼らに追いつく方法は無い。
なんでも全部やる個人開発はひとつの企画がポシャったとしても、すごい量の学びがある。それらの学びをいかに成功へと繋げるかは個人の能力とセンスに関わってくるが、誰にでもできる単純なことは数を打つこと。数も打たないのにゴチャゴチャ理屈だけ並べてる奴に出る幕は無い。これだけは断言できる。

シリコンバレー的なノリの重要性

個人開発において参考にするのはどうしても英語の情報になってしまっている。この記事にも書いたが、なんというか英語圏の方が作ってみた人に対する態度がポジティブなのだ。

ヨーロッパのITスタートアップ聖地と言われるベルリンに身を置いて感じるのは、良くも悪くもシリコンバレー的な考え方がひとりひとりに染み付いているな、ということ。それは端的に言ってしまえば、なにかよー分からん新しい企画や考えに出会った時にとりあえずは「オーサム」「ファンタスティック」「アメージング」などを連発してノリノリのコメントをぶつけておくことだ。

やったことがある人なら分かってもらえると思うが、自分が作ったものに対してちょっとコメントもらえるだけで、それがどれほどモチベーション向上になるか。それに「オーサム!」なんて言われてたら、そらやる気も出る。別にやたらと褒める訳でもない。特に技術者とかはノリノリではあるが、ダメ出しも強烈だ。でもそんな強烈なダメ出しをしてくるぐらいの熱量がある、とも言える。そういうノリが意外にIT都市の経済を支えていることを実感する。

たった一言のコメントでもバカにはできない。作った人にとっては貴重なコメントでそれが「やる気」に作用し、プロジェクトの発動に影響する。それはそのままその人が住む都市から出てくるプロジェクトの数に影響し、数はそのまま質に比例する。もし東京のIT業界全体が新しいプロジェクトに対して誰もが熱量をもってポジティブに挑めば、シリコンバレーを追い越すことだって可能だ。なので日本語圏にもシリコンバレー的なノリがもっとあってもいいのでは、と考えていて、こんな記事を書いてるのもそれが理由だったりする。

100倍のために

現在の私のアプリ構築能力なんてまだまだだし、きっとこれからも失敗は続くだろう。そして収益性としては今の100倍を目指している。だから皆さんからのフィードバックを受けるために現時点で考えたことを公開した。お気付きの点や異なるご意見があればぜひコメントください。

しょうもないサイト立ち上げてポシャってもちょっと恥かくだけで、どーってことはない。思い思いのサイト作って公開してみましょう。Happy Coding.

本記事で言及したウェブサイト
技術書ランキングをQiita記事の集計から作成した
テック・ブック・ランク