【実体験】未経験でゼロからRailsでウェブサービスをつくってみた話
こんにちは、外資系セールスから転職→現在はベンチャー企業にて起業家を支援している冨田到(@ItaruTomita9779)です。
さて、先日、2020年冬から未経験独学で学んできたRailsプログラミングで、ついにウェブサービスをローンチしました。
独学者向けに、学びをロードマップとしてまとめたり、それを他人にシェアすることで独学の参考にしたり、相互交流をしながら、お互いの独学を支えることができるウェブサービスです。
今回は、独学でウェブサービスを作るために、どのような勉強をしてきて、どのくらいかかってこのサービスを作り、どのような反省点があったのか、という点を今後の独学者のためにシェアしたいと思います。
ちなみに、今までの学習の記事はこちらになりまして、progate・ドットインストール→環境構築→Railsチュートリアル→Figmaでワイヤーフレーム→DB設計の学習→メンタリングを軸にコーディング→ローンチという形をとっています。よろしければ下記もご参考ください。
Railsで働きながら未経験でサービスを作ると半年必要
私は、比較的独学というものには慣れておりますが、今回、下記の「Growthmap」というサービスを作るのには、半年ほどかかってしまいました。
当然、サービスというものは、作れば売れるものではないので、ここまで時間をかけても、はずれることはあるので、効率的・効果的なのか?という問いかけには、Yesとは答えづらいです。
実際に、行ったことを下記に改めて記してみます。
- 需要がないものは作ってもしょうがないので、サービスが解決する困りごとを定義する。
- サービスに必要な機能要件を定義する。
- サービスをプログラミングするときに、どのようなデザインイメージになるのか、ワイヤーフレームを書いておく
- 作り上げるために、どんな言語が良いのかを定義する。
- コードを書くための環境構築を行う。
- 無料のサービスなどで、プログラミングの基礎を各言語で学ぶ。
- コーディングする言語で一つサービスを写経しながら作ってみる。
- 上記のサイクルの中で、多数のエラーに出会い、毎日悩む。(ブックマークを見たら200件ほどあり、かなりのエラーに出会っていました。)
- 基礎が身についてきたら、応用的に、サービスの機能要件を実装する。
- バックエンドだけではなく、デザインやフロントも整えないといけない。
- 実際に使ってもらうために、サーバーにデプロイしなければならない。
上記のようなプロセスを半年間続けるわけですが、普通はエンジニアでも、デザイナーでも、大体は作業を分担するにも関わらず、全て一人でやりますので、時間がかかってしょうがないです。
他方で、サービス設計の全体像がわかるのは、メリットではあります。
ただ、もっと高い視点を持ったときに、経営者として考えれば、リソース(経営資源)を調達する力を磨くことで、エンジニアやデザイナーを連れてくることもできますので、何を目的に置くかも重要になってくると思います。
プログラミング独学の際に参考にした記事や書籍とは?
さて、上記のプロセスの中で、どのようなものを参考にしてきたか、今後の独学者のためになるかわかりませんが、特に役立ったものをシェアさせていただきます。
基本的には、最新の情報を参考にしないとうまく行かなので、わたしが学習した時点で、困った点や参考になったところをピックアップしてみます。
まずは、環境構築ですが、Macの場合は、こちらを参考にしてみました。
そして、Railsチュートリアルで学んでも、まだまだMVCのフレームに慣れないと思いますので、Routeingについて、何度も参照すると思います。
また、Railsの構文の中でも、よく使うform_withもRailsチュートリアルの無料版だとそこまで詳しく書いていないので、いろんな記事を参考にしました。
form_withにも関連するのですが、ネストというDBを親子構造にするDB設計があるのですが、そこでもかなり詰まりました。このあたりは、下記の書籍も読んだほうが良いかもです。
こういった、DB設計も、正直間違った設計をしてから後で直すのは大変だと思いますので、メンターを活用して、設計の相談を事前にできると良いと思います。
下記のTechbowlというサービスはU30であれば、無料で相談できる神サービスですので、ぜひご登録してみてください。
加えて、自分が作りたいサービスをFigmaでざっくり書いてみて、そこから必要な機能の作り方をぐぐって、自分の環境に合わせるためにエラーと戦う感じです。
フロントをかんたんに書くBootstrapはこちら。
SNS認証はこちら。
サイドバーはこちら。
メールシステムはこちら。
パンくずリストはこちら。
スクレイピングはこちら。
コメント機能はこちら。
いいね機能はこちら。非同期ではできませんでしたので、私は現在諦めています。
また、テキストのエディタもかんたんに実装できます。noteほどの書きやすさはありませんが、最低限ですね。
画像のアップロードはこちら。
SEO対策はこちら。
Herokuでの独自ドメインのデプロイはこちら。
上記を一貫して、やってみた感想としては、自分でコードを試行錯誤するのではなく、すぐにググり、できるだけ先人を真似することが大事です。
真似する中で、コードの基礎も身につきますので、どんどん真似していきましょう。海外のサイトも参考にする必要があります。
これを読まれている方がゼロからプログラミングをする際には、試行錯誤が多いことをご参考いただければと思います。
未経験プログラミングで何を目的に置くか
さて、上記の通り、未経験からプログラミングをやろうとすると、結構時間がかかりますが、学べることも多くあります。
どのようなメリットデメリットがあるのか、少し箇条書きにしてみます。
- メリット
- プログラミングの基礎を学べる。
- コーディングが一定できるようになる。
- 仕事において、エンジニアと少しは会話できるようになる。
- MVPの開発を自分でできるので、金銭的コストが低いし、慣れれば検証も早いかも?
- 自分でコードを書いているので、一応の改修もし続けることができる。
- エンジニア転職という観点では、ポートフォリオを作れるのであり。
- デメリット
- 学ぶ言語や環境が古く、今どきの開発ではない。
- あまりにも時間がかかるので、時間的コストは高く、出来上がるものはMVPレベルである。
- 顧客やソリューションのフィット感を検証する意味では、時間的コストがかかるので、コスパは良くない。
- 起業や経営という観点にたてば、自分の苦手なエンジニアリングに時間を使うべきではない。
趣味、キャリア、課題解決、スピード、コスト、など、色々な観点が出てきますが、一番は自分が何をしたいのか、ということに立ち返ったときに、独学で私のように学ぶことの意味を問われるのが良いと思います。
そういう意味では、目的の手段としては、独学なのか、スクールに通うのか、エンジニアを雇うのか、などを検討してみるのが最善かと思われます。
私自身は、プログラミングの理解が深まるので自分でやってみてよかったなと思う反面、やはり顧客にサービスを届ける一歩目に行くには、時間はかかったなという感覚はあります(この一歩すら間違っている可能性ありますので)。
独学の目的次第で、プログラミングスクールでもOK
独学でもプログラミングは学べると思いますが、転職目的やプロトタイプ・MVPを作りたいだけであれば、プログラミングスクールもおすすめです。
独学をやってみて思いましたが、継続的にサービス改善をしていかないのであれば、スピーディにスクールなどで結果を求めてもいいと思います。
プログラミングを職業にされている方が、よくおすすめしているものの2つが下記のものです。
- TechAcademy:オンライン完結型のプログラミングスクール
- TECH::CAMP:プログラミング教室でじっくり学べるタイプのスクール
近くに教室があればTECH::CAMPで、なければオンラインで出来るTechAcademyが、効率的でおすすめのようです。
ちなみに今なら無料体験キャンペーンや返金キャンペーンをやっているようなので、独学が苦手な方や本格的にエンジニアを目指される方は、チェックしてみてください。
コメント