@drytt2018年12月04日 更新

初めての個人開発の話(進め方と勉強の仕方)

当記事は「Qiita 個人開発 Advent Calendar 2018」の1日目の記事になります。
2日目の記事は@has2yさんの「聴衆者の力を借りてイベントを盛り上げよう」です。 

はじめに


こんにちは、@dryttです。今年10月末に「GSB Guide 」というWebサービスをリリースしました。 これまでWebサービスのリリースはもちろん、プログラミングも少しかじった程度の経験しかなかった私が、どうやって前述のサービスを開発し、そしてリリースしたのか、その進め方と勉強の仕方を簡単にまとめてみました。
これから初めて個人開発をされる方にとって少しでも参考となり、またモチベーションアップに繋がりましたら幸いです。

目次


リリースしたサービスについて
リリースまでの道のり(進め方と勉強の仕方)
リリース後と今後に向けて
終わりに

リリースしたサービスについて


サービスの概要

GSB GuideというWebサービスを今年2018年10月末にリリースしました。

   グアムの赤いシャトルバスの発着ルート・時刻検索サイト「GSB Guide」

どんなサービスかというと、グアムの赤いシャトルバスのバスルートや発着時刻を検索できるサービスになります。構成はとてもシンプルで、検索画面と検索結果画面のみです。

<検索画面> Android/Chromeの場合

<検索結果画面> Android/Chromeの場合

検索画面右上の「MAP」をタッチ/クリックするとバスルート画像を表示できたり、検索結果2つのルートが存在する場合は、検索結果画面でタブ表示し、タッチ/クリックで切替ができたりします。サイトの色合いを現地のバスの色合いと合わせているところはこだわりです。権利関係(関連法人への承諾必要性等)は不明のため、関係法人を明記しファンサイトである旨記述しています。
作ろうと思ったきっかけは、グアムへ行った際に島内の移動にシャトルバスの案内図(紙)を持って移動していて、もっと便利にできないのかなと思ったことが主な理由です。

サービスの構成

・開発言語:Ruby その他html、CSS、javascript/JQuery
・開発フレームワーク:Rails
・Webサーバ:nginx
・Rack Webサーバ:unicorn
・サーバOS:CentOS7
・VPS:Conoha

Rubyを選んだ理由については後述します。構成はRuby on Rails+nginx+unicornが一般的のようで実際情報が多く見つかったのでこちらを採用しました。VPSは最終的にコストの点からConohaを選択しました。

リリースまでの道のり(進め方と勉強の仕方)


初めはWebサービスを作ろうにも知識もなく、とっかかりもなく。どうしたら良いのか検討がつきませんでした。そんな状態から1ヶ月半程度でなんとかリリースまでこぎつけました。45日間で1日平均1時間程度とすると、45時間程度の作業だったことになりますね。
進め方を簡潔にまとめると、Progate(Rubyコース、Ruby on Railsコース(途中まで))でWebサービスの作り方についてとっかかりを作り、途中で諦めないように適宜優先度付けをしながら作業を続けて、最終的には自分の中で期限を設けて公開した形になります。
作業の流れとしては、Rubyでアプリを作ってデザインを決め、VPSに乗っけて、公開できるよう環境構築(Webサーバ導入やらRails導入やらドメイン設定やら)して、自分でリリース宣言してリリース、でした。リリースまでの道のりでいくつか壁がありましたので、特に大きかった壁に着目して振り返ります。

壁1:とっかかりが無い

Qiitaのトレンドにも個人開発の記事って上がってきますよね。「開設後3週間で収益10万円を得た個人開発サイトでやったことの全部を公開する」とか。「もっと気軽にアウトプットできる技術ブログサービス「Qrunch(クランチ)」をリリースした【個人開発】」とか。まぶしいです、羨ましい。
自分は作りたい気持ちがあるもののその方法が分からない。どうすればいい?といった状況でした。そんな時、Ruby on RailsはWebサービスを作るのに向いているということを知り、そしてRubyを学ぶときはProgateRubyチュートリアルの2つをこなせば必要十分であると知りました。それならばと、早速Progateなるサイトを覗いてみると、なんとTwitter風WebサービスをProgate内のレッスンをこなしていくだけで作れるようになりますとの謳い文句。これはやるしかない!と思ってここから始めました。この時は期待に胸を膨らませていました。

振り返ってみると、プログラミングの入門本やよくある構文理解のための書籍は、簡単なサンプルアプリ等は作れるもののそこから自分が考えるものを作るにはステップが大きすぎて自己解決できないんですよね。そのため、Progateのようなサービスで実際のサービスに紐付けられるような段階的なステップがあるととても良いのかなと感じます。 ちなみに少し趣向は違いますが、ドットインストールさんやAtCoderさんも面白いので参考まで。

壁2:続けるのがしんどい

とっかかりはできたものの、学んだこと(Progateで知ったこと)から少しでも違うことをしようとすると急速にペースダウン。調べながらかつ理解しながらになるので当然なのですが、時間を浪費している感覚に陥るのでしんどかったと記憶しています。試行錯誤しながら、これから取り組もうと考えている作業を一覧化、優先度付けして思考と行動を整理して乗り切った感じでした。具体的には以下のような形です。(簡略化してます)

必須作業
・エラー解消:検索結果リロードエラー
・UI決め
・Web公開
必要
・処理実装:最適ルート探索
・処理実装:乗換ルート探索
できれば
・処理実装:1本前/1本後検索
・処理実装:ページ遷移(FO,FI)

また、SNSで意欲的にWebサービスの開発をされている方をフォローして情報に触れることでモチベーションの維持に努めてました。私の場合はTwitterがメインで、例えば次に挙げる方々はとても有名かと思いますし面白いですよ。

せせりさん
質問箱の開発者で、考えすぎてしまう人のブログ等をされていた方です)

nabettuさん
ためしがきや直近ですと「Vue.jsとFirebaseで作るミニWebサービス」本を出されてます)

あんどさん
ウェブ表彰や直近ですとクイズメーカーというサービスをリリースされてます)

振り返ってみると、このときにMVPなる考え方を知りました。必要最小限の構成に抑えるという考え方ですね。 また、バグ取りの中でテスト駆動開発なる手法も知ったのもこの時期だったと記憶しています。

壁3:終わりが見えない

やらなければならないことは分かるのですが、やりきれず。結果、終わりが見えず。困った私は最終的に終わりを作ることにしました。期限を切って、やらなければならないことも割り切って捨てて。強引ですが途中で投げ出すよりも良いだろうとの考えにもとづきます。初めてVPSを借りたり、ドメインを取得するなど世の中に公開するまでにステップは長かったですが、体裁にとらわれず本当に必須なことだけ実行してやりきる形を取りました。
今振り返ってみても、志半ばのことがたくさんありますし、まだまだ理解できていないこともたくさんあります。RailsのProduction環境の考え方(起動設定)やDB関連の扱い方、webpackのこと等々。しかし、完璧に分からなくてもいいという気持ちの持ち様は重要かなとも思います。

以上、簡単でしたが初めての個人開発経験をもとに振り返りをしてみました。

リリース後と今後に向けて


実は、リリースとは言ったものの、既に1ヶ月が経とうとしている現在でも一部機能が未実装であったり、UIも修正しきれていなかったり(例えばiOS/Safariでの表示が意図しない表示になってしまっている)という状況です。リリース直後は達成感というか無気力感に襲われて手がつけられず。しばらく経ってからもなんとなく修正する気にならず。初リリースは反省すべきことがたくさんあったなと考えていると、先に進むより前に振り返る形になってしまい未だ目指す形に作り終えられておりません。これからどうなるかは正に自分次第になります。機能を追加実装するかもしれませんし、SSL認証等実験的に行いたいことがありますので適用してみたり、もしかすると閉鎖するかもしれません。

さて、初リリースのサービスは前述の通りなのですが、学んだことは実に多くありました。今ではクラウドで(お金をもらって)Ruby on Railsの仕事をうけたりしていて自信にも繋がっています。今後に向けては、またふとした動機で何かサービスを作りたくなるだろうから、スキルを習得しつつ、いろんな情報に触れていこうと思っています。次のサービスはどんなものを作ろうか。次のサービスを作るときはスピードを重視して取り組みたいな。具体的には2、3日で公開までもっていけるようにできないかな、とぼんやり思ったり。

終わりに


なんだか取り留めのない内容となってしまいましたがまとめに入ります。
個人開発 Advent Calendar 2018の1日目の記事ということで、身のある、ふさわしい記事を書こう!と意欲はあったのですが、文章力・開発スキルともにまだまだ未熟で伝えたいことの半分も書き表せていないように思います。また、Qiitaとしての記事であるにも関わらずポエムとなってしまっている点自覚有りです、ご容赦ください。私自身の経験からお伝えできることはまだまだ少ないですが、世の中の素晴らしいサービスや優秀な方がいらっしゃる点だけでもお伝えできていれば嬉しいです。

余談となりますが、今からWebサービスを作るなら先にも少し取り上げたnabettuさんの「Vue.jsとFirebaseで作るミニWebサービス」を利用されることをお勧めします。技術書展でも人気だったようで私が今最も欲しいと思っている本です。Twitterでも高評価なのでおすすめです。

それでは、個人開発に取り組まれている皆さんの御多幸を祈念しつつ、2日目の@has2yさんの記事に乞うご期待です。
ありがとうございました。


@drytt
WEBアプリケーションエンジニア兼経営者」を目指す会社員

このエントリーをはてなブックマークに追加