まえがき
第1章 未経験から3ヶ月でつくる!個人開発マニュアル
第2章 とがったテーマの婚活サイトを開発して得た経験
第3章 アイデアからリリースまで、Webサービス開発を徹底詳説
第4章 「通知止まらんwww」体験アプリを作ったらバズって通知止まらんwww
第5章 積読の解消を促すWebサービスをリリースした話
第6章 累積120万DL!なぜかインドで大ヒット!クソアプリを量産しよう!
第7章 ダウンロード数と収入報告!スマホアプリの個人開発は儲かるのか?
第8章 格安スクレイピングを支える技術
第9章 個人開発だけで食べられるようになるまでにやったこと
第10章 ストアからアプリが削除!消された個人開発アプリとその理由を公開!
第11章 自分の漫画ライフを充実させる「新刊通知アプリ」を作ってみた
第12章 カメラアプリを開発して憧れのレビューサイトに掲載された話
第13章 会社が潰れて1ヶ月でリリース&起業!エンジニア社長の奮闘記
第14章 個人開発のモチベーションが続かない、作り終わらない。その原因と対策
第15章 学生エンジニアが語る「技術学習 x 個人開発」のススメ
第16章 「このままでいいの?」駆動のサービス開発
第17章 使われなくてさみしい問題を解決する(しない)方法論
第18章 サービス開発のハードルが高いあなたに!便利プログラム開発のススメ
第19章 アクセスログから見えた時代の移り変わり
第20章 Pythonと野球オープンデータで地図アプリを作る
第21章 困りごとを1日で解決する「どやっ」駆動のツール開発
第22章 10年つづくWEBサービスの育て方 〜地道な宣伝から法人契約まで〜
第23章 Build to Think!
第24章 14年かかった!個人開発で月収100万達成した話
第25章 それでも挑戦は止められない。個人開発の絶望と希望
付録A 141人に聞いた!みんなの個人開発事情
あとがき
本書を手にとっていただき、ありがとうございます。この本は、個人でWebサービスやアプリを開発する「個人開発者」の合同誌です。「個人開発の楽しさ」をお伝えします。
本書は先輩開発者のエピソード集です1。モチベーションの向上にお役立てください。「こういうアイデアを実現できたら楽しそうだ」という未来を描いてください。
「一度は自分でサービスをリリースしてみたい」という憧れがあるからこそ、本書を手に取ってくださったのではないでしょうか。筆者も同じです。先人の背中に憧れて個人開発を始めました。筆者にとって本書は「過去の自分」へのエールなのです。
本書は現役開発者のエピソード集です。再挑戦のキッカケとしてお役立てください。「こういうアイデアを実現するのが楽しいんだよな」と過去を思い返してください。
「もう一度頑張ってみたい」「あの頃は楽しかったな」という思いがあるからこそ、本書を手に取ってくださったのではないでしょうか。筆者も同じです。1年後には挫折しているかもしれません。筆者にとって本書は「未来の自分」へのエールなのです。
本書はあなたと同じ個人開発者のエピソード集です。「こういうことあるよね」と共感できるはずです。「これはマネしてみたい」と発見できるはずです。
自分で実践しているからこそ、共感や発見を求めて、本書を手に取ってくださったのではないでしょうか。筆者も同じです。同じ気持ちを持つクリエイターたちが集まって本書ができたのです。筆者にとって本書は「現在の自分」へのエールなのです。
「個人開発をはじめよう!」
そう思えるような、クリエイター25人の実践エピソードを集めました。
【テーマ①】何からやればいい? 個人開発のはじめ方。
・第01章:未経験から3ヶ月でつくる!個人開発マニュアル
・第02章:とがったテーマの婚活サイトを開発して得た経験
・第03章:アイデアからリリースまで、Webサービス開発を徹底詳説
【テーマ②】皆に使ってもらえる? 個人開発で、バズった話。
・第04章:「通知止まらんwww」体験アプリを作ったらバズって通知止まらんwww
・第05章:積読の解消を促すWebサービスをリリースした話
・第06章:累積120万DL!なぜかインドで大ヒット!クソアプリを量産しよう!
【テーマ③】ぶっちゃけどうなの? 個人開発と、おさいふ事情。
・第07章:ダウンロード数と収入報告!スマホアプリの個人開発は儲かるのか?
・第08章:格安スクレイピングを支える技術
・第09章:個人開発だけで食べられるようになるまでにやったこと
【テーマ④】試行錯誤の繰り返し? こんな苦労も、個人開発。
・第10章:ストアからアプリが削除!消された個人開発アプリとその理由を公開!
・第11章:自分の漫画ライフを充実させる「新刊通知アプリ」を作ってみた
・第12章:カメラアプリを開発して憧れのレビューサイトに掲載された話
・第13章:会社が潰れて1ヶ月でリリース&起業!エンジニア社長の奮闘記
【テーマ⑤】くじけそうなときは? こうして続ける、個人開発。
・第14章:個人開発のモチベーションが続かない、作り終わらない。その原因と対策
・第15章:学生エンジニアが語る「技術学習 x 個人開発」のススメ
・第16章:「このままでいいの?」駆動のサービス開発
・第17章:使われなくてさみしい問題を解決する(しない)方法論
【テーマ⑥】作りたいものがない? もっと自由に、個人開発。
・第18章:サービス開発のハードルが高いあなたに!便利プログラム開発のススメ
・第19章:アクセスログから見えた時代の移り変わり
・第20章:Pythonと野球オープンデータで地図アプリを作る
・第21章:困りごとを1日で解決する「どやっ」駆動のツール開発
【テーマ⑦】その先に見えるのは? 個人開発と10年間。
・第22章:10年つづくWEBサービスの育て方 〜地道な宣伝から法人契約まで〜
・第23章:Build to Think!
・第24章:14年かかった!個人開発で月収100万達成した話
・第25章:それでも挑戦は止められない。個人開発の絶望と希望
7つのテーマに分かれていますが、好きなページを好きなように読んでいただければと思います。
本書の内容は十人十色です。どう企画するか。どうモチベーションを保つか。どうユーザーを獲得するか。どうテクノロジーを使うか。様々な意見が次々と出てきます。
メディアで脚光を浴びる著名人に「これが正解だ」と教えてもらう本ではありません。悩みや迷いや失敗も含めて、等身大のエピソードを、1人1人の言葉で綴った本です。
ある人にはある人の楽しさがあります。別の人には別の人の楽しさがあります。それが個人開発なのだと思います。
「個人開発」という言葉の定義は1人1人違います。しかし少なくとも本書に出てくるエピソードの中に「誰かに強制されたもの」はひとつもありません。やりたいときに、やりたいことを、やりたいようにやる。自分なりの正解を見つけていくのです。
筆者たち1人1人は、各々が考える「楽しさ」を書き記しました。ぜひ自分に合うものを見つけてもらいたいと思っています。「自分はこの考え方やエピソードが好きだ」「自分もこういうクリエイターでありたい」と少しでも感じてもらえたら嬉しいです。読者であるあなた自身が、そうした新しい可能性と出会える1冊の本になっていれば幸いです。
(発行代表・企画者 @yuzutas0)
本書に関するお問い合わせ: @yuzutas0(ゆずたそ)
1.本書の内容は、筆者各人の個人的見解であり、所属組織を代表するものではありません。もし誤りや考慮不足だと感じる点があれば、それは編集・発行代表である @yuzutas0 の力不足によるものです。誠に恐縮ですが、上記宛先までご連絡いただけると幸いです。
2.本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。本文中では © 、 ® 、 ™ マークなどは表示していません。
3.本書は有志による情報提供を目的とします。本書の利用により発生したいかなる損害に対しても筆者一同はその責任を負いかねます。特にシステム開発・運用におきましては、他の情報源をご確認の上、ご自身の責任と判断にもとづいて実施してください。
4.本書に記載されているサンプルコードや画面イメージ、URL等は執筆時点のものです。執筆以降で変更されている可能性があります。あらかじめご了承ください。
フリーのWebエンジニアのかしいと申します。2018年11月にお笑いライブの検索サイト「ワラリー!」をリリースしました。このサービスを作りたくてプログラミングスクールに入会したのですが、1ヶ月後に気づきました。「個人開発やること多っ!!」
このハードルを下げたいと思い、初めて個人開発したときの手順やコツをまとめました。
きっかけは、お笑いライブの検索サイト「Walive!」がとつぜん閉鎖したことでした。お笑いファンに愛されているサービスが無くなってしまうのはもったいない。そう思った私は、サイトを引き継ぐためにサービス設計とプログラミングの学習を始めました。
1.自分が困っていることをベースに考える(自分が欲しいサービスを作りたい)
2.自分が今できることをベースに考える(技術的な学びを実践することが目的)
3.他人が困っていることをベースに考える(稼ぎたい、ユーザーの反応を見たい)
まずは1番がおすすめです。2番や3番だと、途中で「本当にみんなサービスを使ってくれるだろうか」と不安になります。自分が使うサービスのほうがモチベーションを維持しやすいです。
サービス内容は「ひとことで言える」ことが大事です。機能が多すぎると、結局何のためのサービスか分からなくなります。開発の負担も増えます。まずはひとつの機能に絞りましょう。
×「お笑いライブを検索できて、芸人のプロフィールを見られて、チケットを融通できるサービス」
○「お笑いライブを横断検索できるサービス」
ドメインを取るためにサービス名を考えます。ポイントは下記の5つです。
・1. サービス内容を端的に言う:サービス内容そのものをサービス名にすれば、わかりやすさはピカイチです(例:チケットトレード→チケトレ、小説を書く・読む→カクヨム)。
・2. 英単語を組み合わせる:サービスで重要となる要素を洗い出し、語感がしっくりくるものを選びます。お笑いライブ検索「ワラリー」という名前は、wara(わらい)+rally(集まり) という英単語の組み合わせから決めました。
・3. 長いサービス名にしない:サービス名が長いとユーザーは覚えられません。略称でつけると良いでしょう(例:careertrek → キャリトレ)。
・4. 日本語の方が親しみやすい:難しすぎる英語だと覚えられません。読めなかったりもします。カタカナでつけてしまいましょう。
・5. ユニークにする:名称が被るとエゴサーチで反響をチェックしづらくなります。
初心者なら、まずはRubyやPHP、HTML/CSSとjQueryを学びましょう。フレームワークは情報を探しやすいRuby on RailsかLaravelがおすすめです。
「SQL designer」というWebブラウザーアプリを使うと、ER図を簡単に作成できます。
テーブル同士の関係は親と子までにすると良いでしょう。初心者向けの教材だと親と孫、ひ孫のデータの扱い方まで解説している記事が少なく、つまづくポイントとなります。
「実際に運用可能か」ということも考慮ポイントとなります。たとえばワラリー!では、お笑いライブのチケット予約先を複数記録するためにふたつのモデルを作りました。
・Eventモデル(お笑いライブの情報を記録する親モデル)
・EventLinkモデル(お笑いライブのイベントの予約URLを記録する子モデル)
しかし今考えると、最初はEventモデルに「URL」というカラムをひとつ作成すれば十分だったと思っています。手入力でわざわざ複数の予約サイトを登録するのは手間なのです。扱える情報を制限する方が、使いやすくなるという教訓を得ました。
ユーザーがどのような順番でページにアクセスするかを考えます。私は「Draw.io」を使って画面遷移図を作成しましたが、紙でも十分だと思います。
印象をよくするために、今風のきれいなデザインにするのは大事です。一方でデザインに凝ると時間がかかるのも事実です。なるべくカンタンにイケてる画面を作りましょう。
・デザインは紙に書く:ツールはたくさんありますが、紙とペンで十分です。初心者はデザインツールの操作よりも開発技術の学習を重視しましょう。
・1カラムにする:ワラリー!は8割がスマホからの閲覧です。PCとスマホで表示を変えるのは大変なので1カラムにしました。大手サービスの構造を真似すると良い感じに見えます。
・イメージカラーを決める:ワラリー!のイメージカラーはピンクです。旧サイトのイメージカラーが水色だったため、「旧サイトと差別化をはかりたい」「目立ちたい」「わくわくする感じにしたい」という意図から、寒色ではなく暖色を用いました。ヘッダやサイト内のボタンなど、アクセントカラーとして使用しています。
サービスを作り始めるときは、「あんなこといいな、できたらいいな」とやりたいことがどんどん浮かんできます。まずは全部書き出しましょう!思いつくものを羅列できたら、難易度や優先度を振り分け、リリースまでに開発する機能を絞ります。
書かなければサービスは動きません!いよいよ書くべし!書くべし!!です!!!
わからないことや解決できないエラーにつまづきます。そんなときは「もくもく会」などのエンジニアが集まるイベントに行って相談しましょう!「自分のサービスを作っています」と言うと、快く相談にのってもらえます。オンラインのQ&AサービスやSNSで質問することもできますが、初心者だとエラー内容を適切に質問するのは難しく、コミュニケーションに疲弊します。慣れないうちは対面での質問をおすすめします。
ちょっとずつでいいので開発し続ける
期間が空くと「どこまでやったっけ?」と状況を忘れてしまいます。なるべく毎日ちょっとずつ開発しましょう。また「やりたいことリスト」でタスクを忘れないようにします。進捗が遅すぎて「完成するのか?」と不安になるかもしれませんが、続けていればいつかは完成します。
タスクは細かく分解する
GitHubのIssue機能を使って管理しましょう。「ユーザーの登録機能」と一口にいっても「メール認証」「SNSログイン(Twitter、Instagram、Facebook、Google)」「退会した場合、何週間まで復旧できるようにするか」など、細かい仕様はサービスによって異なります。メソッド単位までタスクを分解することで、進捗を可視化し、モチベーションを上げることができます。
ツールや言語はあれこれ手を出しすぎない
初心者の場合、ただでさえ技術を学ぶのが大変です。なるべく絞りましょう。ワラリー!は、下記の言語で構成されています。
・マークアップ言語(HTML/CSS/SCSS)
・バックエンドの開発言語(Ruby/Ruby on Rails)
・フロントエンドの開発言語(JavaScript/jQuery)
新しく覚えて使用したツールは下記です。
・Homebrew:Macのパッケージ管理ツール。ツールのインストールに使います。
・Visual Studio Code:IDE(統合開発環境)兼エディター。ソースを書きつつターミナルでテストできるのが利点。以前はSublime Textの無料版を使いましたが、ポップアップ広告で集中しづらかったです。VS Codeは無料で、広告も出ません。
・PG Commander:PostgreSQLを操作するGUIツール。RailsアプリをHerokuで使うには、初期設定のSQlite3からデータベースを変更する必要があります。
・GitHub:ソースコード管理サービス。様々なサービスと連携できる。
・Slack:コミュニケーションツール。もくもく会やエンジニアコミュニティに所属すると、質問・相談を行えます。
・Heroku:カンタンにRailsのサービスを公開できます。ただ、無料枠はすぐに制限がかかってしまいます。ワラリー!では、hobby dev(月額$7、24時間稼働)とPostgres Premium(月額$9、1000万レコードまで使用可能)に課金しています。
学習を諦めたけど、結果としてなんとかなったフレームワークやツールもあります。
・AngularJS:JavaScriptのフレームワーク。「このカレンダーのデザインいいな」と思った技術がAngularでしたが、jQueryで代替しました。
・Bootstrap:とても有名なCSSのフレームワーク。Bootstrapのテンプレートを使いたかったのですが、しっくりくるデザインがなく、結局CSSを手書きしました。
・Bourbon:CSSのフレームワーク。ライブラリーを導入した際に依存関係があったらしくエラーが出て、結局そのライブラリーごと使うのを止めました。
・Masonry:タイル状に可変で記事を配置できるRailsのGem。パソコンでは3カラムのタイル状レイアウト、スマホでは1カラムのレイアウトにしたかったのですが、力尽きて結局パソコン・スマホ共通で1カラムにしました。
・Prott:アプリ向けのプロトタイピングツール。操作を覚える時間がなかったため断念。ラフやデモは個人開発であれば省いた方が開発期間の短縮になります。
・Haml:Rubyを書く際に「erb方式でなくhaml方式で書いた方が実務に近い!」とアドバイスを受けたのですが、Progateなど初心者向けのRailsの教材はerbで書かれているので結局そのままerbを使いました。
1.まずは表示されるか、機能するかどうか
2.実際に投稿される想定のデータを入れて、レイアウトが崩れないか
3.悪意のあるデータや特殊記号を入れても問題が起こらないか(SQLインジェクション、クロスサイトスクリプティング対策など)
Railsの標準だと英語のエラー画面が出てしまいますので、日本語の画面を設定しましょう。「Better Error Pages」というサイトで、3種類のデザインから選んでエラーページを作ることができ便利です。
本番環境とは別に、サーバーでの動作を確認するためのステージング環境を作りましょう。Herokuの場合は、Heroku Pipelineという機能が用意されています。
β版を友人に見てもらいましょう。サービスの根幹にあまり重要でない機能を提案されることもあるので、もらった意見を取捨選択しつつフィードバックを反映します。
利用規約やプライバシーポリシーが丁寧だと、ユーザーからの信頼度が上がります。『良いウェブサービスを支える「利用規約」の作り方』という本がおすすめです。
おめでとうございます!サービスがリリースできました!この時点であなたはめちゃめちゃすごいです。自分で自分を褒めてあげましょう。SNSで宣伝しましょう。
Twitterで宣伝する
リリース時はご祝儀訪問がもらえるチャンスです。アピール文言を練り、リンクを文中に仕込み、画像を添付しましょう。『朝に投稿 → 昼にRT → 夜に「RTありがとうございます!」と引用RT』の流れで告知効果が高まります。
「ワラリー!」では、相手によって文言を変えました。エンジニア向けには「初心者の成功体験」「100日間という数字」をアピール。「91RT、355いいね」いただきました。
Web系未経験の初心者が100日間で初めてのrailsサービスをリリース
https://warally.info
首都圏のお笑いライブを日付やキーワードで横断検索できるサービスです!
・5秒で使えるTwitterログイン
・わかりやすいUI
・13サイトからデータを毎日スクレイピング
よかったら見てください〜 (添付画像3枚)
お笑いファンには「できること」を強調して伝えました。「お笑いライブ検索サイトの閉鎖」から2週間というタイミングもあり、224RT、325いいねとかなり拡散されました。
【お知らせ】お笑いライブを検索できるサイトができました!
http://warally.info/
・日付検索、キーワード検索ができます
・フライヤー表示機能あり
・誰でもライブを登録可能
今日やってるライブあるかな?という時にぜひご利用ください (添付画像4枚)
Qiitaで記事を書く
サービス公開と同時に記事を書くと、Qiitaユーザーにもサービスを知ってもらうことができます。宣伝目的だとQiitaの規約違反となってしまうため、サービスで使用した技術の紹介をメインで書くと良いでしょう。
どのページにアクセスが集まっているか、どこから集客できているかを分析するにはGoogle Analyticsを導入します。コンテンツの詳細ページを、posts/[:id]ではなくposts/[:title]にすると、GAの画面で人気記事がわかるので便利です。
SEO(Googleからの検索最適化)に力を入れると長期的なサービスの発展が望めます。
・サイトマップの生成とサイトマップの自動更新機能を実装する
・メタキーワードを設定する:ワラリー!の場合は「お笑いライブ」「チケット」「東京」「スケジュール」などを設定しました。
・ページタイトルを動的に設定する:「サイト名|ページタイトル」ではなく「ページタイトル|サイト名」の順番で設定するとよいそうです。
・サイト内リンクを増やす:ワラリー!では日付、タイトル、会場、出演者などそれぞれの項目がリンクになっています。SNSシェアボタンも付けましょう。
Webサービスで稼ぐ場合、Google Adsenseによる広告を導入するのがカンタンです。ワラリー!では、月間5万PVに対して5000円程度の収益が発生しています。
・広告サイズはレスポンシブにする:サイズが大きいほど、クリック数が増えますし、閲覧によるインプレッション収益が上がります。ワラリー!では、最初は控えめにラージモバイルバナー(320×100サイズ)を使いました。しかし、売上が伸びず赤字になったため、レスポンシブ(336 x 280サイズ)に変更しました。フィード型のサービスなので、ファーストビューには広告を置かず、5つのライブにつき1つレスポンシブ広告を表示します。広告サイズを変えたことで、11月に500円だった収益が12月には5000円と10倍になりました。
・不快な広告はブロックする:毎日使ってもらえるサービスにしたいので「デリケートなカテゴリー」(出会い系、宗教、消費者金融など)や「マンガ系の広告主」(エロ・グロ系のマンガ)をブロックしました。これらの広告はクリック単価が高いという側面もあるので、サービスのテーマや世界観に応じて、ブロックするカテゴリや広告主を決めると良いでしょう。
初めて個人開発を始めたときは「一生完成しないんじゃないのか」と不安な毎日を過ごしていました。しかし、諦めずにいろんな方に相談して助けてもらったことで、なんとかリリースまでこぎつけることができました。
これから始めるかたは「こんなに大変なの?」と心が折れそうになる瞬間もあるかもしれません。そんなとき、この本がモチベーションにつながるよう、祈っております。
かしい
フリーの駆け出しWEBエンジニア。お笑いライブの検索サイト「ワラリー!」を運営中。
もともと外資のITコンサル会社で業務システム設計をしていたが、独学でRuby on Rails、
JavaScript などを勉強して独立。技術ブログでは初心者向けの情報を発信中。
https://warally.info/