WEB系の技術を詳しく解説

【Ruby on Rails】知識0から、3ヵ月で自分のWebサービスをリリースした話。初学者はこうして成長した!

この記事では知識が0だった僕が3ヵ月(正確には3ヵ月とちょっと)で自分のオリジナルのサービスを作成した話をしていこうと思います。

どんなサービスを作ったかというと、基本的なCRUD機能を備えた簡易な投稿型Webアプリケーションです。実際にリリースしているのでこちらをご覧下さい。

ホラー体験談投稿サービス「Hiyari」

決して完成度は高くないですが、短期間でも正しい勉強法で集中してやればもっと効率よく出来たかなと思っています。

そういった教訓も含めて、これからWebサービスを開発していきたい!と思っている人の為になるように記事を書いていこうかと思います。

スポンサードリンク

まずは決意を決めること

プログラミング未経験からWebサービスを作るのは簡単ではありませんし、それなりの努力が必要になります。Webの技術は多くの技術が互いに複雑に絡み合っているため、正直覚えることが多いです。しかし安心して下さい。勉強していくうちに何が重要で何が重要でないのかが分かってくるようになります。異なる技術を学んでいても出現頻度が高い用語や、あまり出現しない用語、概念等が分かるようになってきます。

ここで重要なのが、「勉強する決意、そしてプロダクトを完成させるという決意」を決める事です。やる気さえあれば、たいていの壁は超えられます。最初はとにかく目の前のやるべきことをこなし、つらいと感じることもありますがモチベーションの維持が大切です。モチベーションさえあれば、燃え尽きた時もエンジンを再点火できる可能性があるからです。その決意をしたら、次は勉強する言語を決めましょう。

言語を選択する

Web系のサービスを作成するために現在主流で使用されている言語は大きく分けて2つあります。それが「Ruby」と「PHP」です。実際にはWebアプリケーションの作成が可能な言語は「Java」や「Python」「JavaScript」…等あるのですがWebが主戦場のサーバーサイド言語といえばこの2つです。そのためRubyかPHPこの2つの中からどちらかを選ぶという選択をしなければなりません。(勿論、この2つに絞らなくても良いです。好きな言語があればそちらを選んだ方が良いでしょう。しかしRubyとPHPは高機能なフレームワークが台頭してきたことにより様々なエンジニアが扱い、その分リファレンスも多いです。困ったときに解決策を調べやすいといった特徴があります。)

ネットで検索したり、書籍でざっとどのような言語か各自で調べてみましょう。また、その言語でどういうサービスが開発されているのかを調べて、自分が作りたいサービスにあてはめて考えるのも良いでしょう。基本的にどの言語を選んでも作れるものに特に制限は無いのですが、得意不得意はもちろんあります。

PHPとは

PHPとは、Webサービス開発やWebアプリ開発で使用する言語のひとつで、Hypertext Preprocesorの略として呼ばれています。PHPはスクリプト言語であり、HTMLに埋め込むことが出来ます。

PHPのコードは<?phpではじまり?>で終わるタグの様なものが用意されており、HTMLに慣れ親しんでいるコーダーの人なら導入しやすく、分かりやすい言語であると言えます。

一般的にPHPは比較的簡単な言語であると言われており、プログラミング初心者にも最適な言語の1つです。また、有名なCMSであるWordpressにもPHPが使われている上、エンジニアの数も多いので関連する情報が大量に出回っているのも勉強する上での利点です。

近年はLaravelというフレームワークの台頭、Vue.jsとの親和性からさらに人気が高まっており、求人需要も増加しています。

 

Rubyとは

RubyはPHPよりも柔軟性が制限される、逆に言うと保守性の高いオブジェクト指向言語です。基本的にはPHPよりも保守性に優れるのでバグが起こりにくかったり、チームで開発するのに向いている言語でもあります。

近年のRubyの需要は間違いなく「Ruby on Rails」と呼ばれるフレームワークによるものでしょう。(それ以外でもがっちり使われている部分もありますが)Railsを利用すると非常に高速でサービス開発を行うことが可能です。また、Railsはトレンドをいち早く導入して開発が進められているので年々使いやすくなっていっています。

元々RubyはWeb開発言語ではなかったため、コアなプログラミングもできる上、Railsの様なフレームワークを利用してWeb系の設定も書けるようになったのが非常に有利な点であると言えます。

自分はRubyを選んだ

僕も始め勉強するときに言語の選択で迷いました。プログラミングの勉強を本格的に始める前はWordpress等を触っていたのでPHPが良いかな…とは思っていたのですが、個人的にPHPのシンタックスよりRubyの方が好みで非常に迷った記憶があります。

しかし、Railsというフレームワークの存在を知り、色々調べていくうちにRailsに興味が湧いてきました。

Railsで作られたサービスには、「cookpad」「Gnosy」「Airbnb」「Github」等、自分の好きなサービスの名前があったのでこれから勉強していく言語としてRubyを選択しました。

自分はRubyを選びましたがこれが正解とかはありません。自分の直感に沿った言語を選択する事が大切です。基本的にWebの仕組みは同じなので、どちらかを勉強すればゆくゆくもう片方を勉強する機会が来た時に学習コストはグンとさがっているはずです。

個人的にはRailsが素晴らしいのでRubyをお勧めします!また、Rubyは様々なプログラミングが可能なのでWeb系に飽きたら別の高度な開発も可能です。

0~1ヵ月目:がむしゃらな1か月

4月から勉強するという決意を決めて、この時はとにかくRailsの勉強をしたい!という一心で勉強を始めました。RubyとRailsは別物だということは多少分かっていたので、Rubyの勉強をしなくてもRailsを勉強していくうちに慣れていくだろうという目論見です。

Ruby on Railsとは…

 

Ruby on Railsとはオープンソースのフレームワークで、Web開発に使用します。名前にもあるようにRuby専用のフレームワークです。これを使えば驚くほど短いコード量でより多くの生産性を上げることができます。

Railsは、最善の開発方法というものを1つに定めるという、ある意味大胆な判断に基いて設計されています。Railsは、何かをなすうえで最善の方法というものが1つだけあると仮定し、それに沿った開発を全面的に支援します。言い換えれば、ここで仮定されている理想の開発手法に沿わない別の開発手法は行いにくくなるようにしています。この「The Rails Way」、「Rails流」とでもいうべき手法を学んだ人は、開発の生産性が著しく向上することに気付くでしょう。従って、Rails開発において別の言語環境での従来の開発手法に固執し、他所で学んだパターンを強引に適用しようとすると、せっかくの開発が楽しくなくなってしまうでしょう。
Railsガイドより引用

最初に「Rails Tutorial」を読み始めました。多少PCは触れるので大丈夫だろうと思って挑み始めたのですが、

このチュートリアルが実は曲者で、チュートリアルと書いてある割りには内容がかなり高度なのです。それに気づくまでに1週間程かかりました(笑)。

RailsにはMVCモデルという非常に核となる概念があるのですがこれが全く理解できませんでした。「このまま続けてもわからないな」と思ったので一旦チュートリアルから離れて、一度動画教材を配信しているUdemyというサービスを使ってRailsの動画講座をざっと何本か視聴しました。

当時Rails5が最新だったのですが、Rails4系の動画しかなく、コマンドを4系で勉強していたのですがMVCモデルについて多少の理解は得られたかと思います。また、動画だったので見るだけでこれからどういう勉強をするのかとか、雰囲気は学ぶことができました。

しかしそれでも完璧な理解までは得られませんでした。ここで1か月が経とうとしてましたが、思い切って勉強の内容のハードルを下げてみました。これが大正解。

1~2ヵ月目:一歩下がるということ / Progateとの出会い

2ヵ月目は、エンジニア関連の情報を集めようとTwitterアカウントを作成しました(興味のある方はフォローよろしくお願いします!)。そして、一歩下がって本腰を入れて勉強をしようと思い、こちらの書籍を購入しました。

当時1つも深くまで理解してなかった僕にとってめちゃくちゃ最適な書籍でした。まるで宝くじに当たったかのような感覚を味わいましたね(笑)

初めて勉強する人にとってはかなり良書だと思います(今見たら全て理解できるほどレベル的には低いのですが、根本となる概念をカラーで簡単に説明しているのでめっちゃ良い本には変わりないです。)

これを読み終わる頃に、作成したTwitterアカウントのタイムラインから「Progate」なるサービスがある事を知りました。

実際に触ってみたらめちゃくちゃ分かりやすくて、しかも手が動かせるという点に惹かれて一瞬で有料会員になりました。

僕は学生なのですが、暇な時間や退屈な講義中はProgateをとにかく進めていました。HTML/CSS, Ruby, そして最もボリュームがあるRailsのコースをひたすら学習しました。

これから勉強する人はProgateから入るのが最も効率が良い気がします。一瞬で様々な言語の簡単な理解が得られます。

レベルアップが楽しくてやってしまう機能も非常に遊び心があって好きです。

これが下地になって、遂にRailsTutorialへ踏み込みます。

2~3ヵ月目:どれだけプライベートな時間を犠牲にできるか

Railsの概要がなんとなく理解できた位にひたすらRails Tutorialを進めていました。それでも内容の難易度は高いのでたまにProgateに戻ってRailsコースの2周目をやったりしてました。ProgateのRailsコースはRails Tutorialと親和性があるので(後で知りました!)休憩に丁度いい感じでしたね。

また、同時並行でこちらの書籍も読み進めていってました。

この「プロを目指す人のためのRuby入門」はヤバいです。同ヤバいかというとかなり良書だという意味でヤバいです。RubyやRailsを勉強している方は一度は是非読んでください。これのおかげでRubyの理解が大幅に深まりました。

こんな感じでひたすらRuby, Rails、そしてある程度知識が付くとHTTPやWeb系の関連技術本を読み漁っていたのですが、時間が大量にあったわけではありません。学生なので勿論授業やテストもあるわけです。

特にこの時期は中間テスト~期末テストがあったのでめちゃくちゃ忙しかったというか、自分の勉強時間が思う様に取れませんでした。しかしWebの勉強は毎日欠かさずやりたいという思いが強かったので、無理やりにでも時間を取って勉強した記憶があります。例えば、友人との食事を断ったり、用事をなるべく入れないようにしてました。(断った友人のみんな、ごめんなさい。この場を借りて謝罪します。また誘ってください(笑))

こんな感じで死ぬほどつらい毎日を送っていたのですが、勉強し始めて2ヵ月半くらいしたときにようやくRails Tutorialを完走することが出来ました。本来であればRails Tutorialはもっと時間がかかるのですが、僕はTestの部分は所々読み飛ばしつつ勉強していったので平均より早めに完走する事ができました。(基本的には1-2ヵ月ほどかかると言われています)

この時プライベートな時間を犠牲にしてよかったと思っています。とにかく自分が暇な時間は全てWeb系の学習に当てていたイメージです。

3ヵ月目:自分を追い込んで実装

勝負の3カ月目です。勉強はある程度行い、基礎はある程度固まってきたかな…位で自分のオリジナルのWebサービスの開発に着手しました。

始めは「死ぬかと思った」のような自分の不幸体験を投稿するWebサービスを作ろうかと思って色々考えていたのですが途中でやめて、ホラーが好きで夏ということもありもっと簡易なホラー体験談投稿サイトを作ることに決めました。(簡易にしたのはこれまで学んだことが実装できるかという確認と、単純に時間がなかったため。あと数週間で期末テストが始まるという時期だった…💦)

ひたすら、ググりながら実装の毎日を過ごしました。最も苦労したのは実はRuby, Railsではなくデザインの面でした。フロントエンドの勉強はあまりしていなかったのでどうやって見栄えを良くするかをひたすら考えてました。そのせいで結構時間が掛かったというのはあります。

サーバーサイドの実装が1週間くらい、デザイン実装が1週間位で大体2週間弱で完成しました。デザインは自分でCSSをかけなかったのでBootstrapで代用しました。また、工夫としてはGoogle Fontを使うなどして無機質なサイトにならないように気を付けました。

このサービスが完成してデプロイした時の記憶は忘れません。今まで苦労して勉強してきた成果が1つのプロダクトとして公開された時のうれしさは半端じゃないです。なによりも、「自分1人でここまでできた」という経験がこれからの糧となるでしょう。

その後

リリースしてから実際に使ってくれる人はあまりいませんでしたが、見てくれる人は思ったより多かったです。しかしログインしないと投稿が見れない、登録するときの項目を多くしすぎた等まだまだ改善する余地はありそうです。しかし、このままで残しておこうと思います。

将来また自分でプロダクトを作成した時に、どれだけ成長したかを比較したいからです。今見たら既にひどい出来ですが(笑)

現在はRailsの学習を継続しながらフロントエンドも勉強しています。

また、このプロダクトを作成したお陰で希望した会社のエンジニアインターンにも採用されました。

いずれはフルスタックなエンジニアとなり、自分1人で思い描いたサービスを直ぐに作れるようになりたいです。

まだまだヒヨコなので、ニワトリになるべく毎日スキルアップしていきます。

まとめ

・Webは学ぶことは多いが、プログラミング未経験者でも短期間でサービスをリリースできる

・プログラミングを続けるにはモチベーションが大事

・行き詰ったら、一歩下がって勉強してみる

僕は全て独学で勉強しました。プログラミングを勉強するにあたって最も重要なのは「モチベーション」です。間違いない。

やる気が無ければ向上心も起きません。モチベーションの維持に自信が無ければスクールに通うのも1つの手だと思います。

スクールのメリット・デメリットについてもまた記事にしていこうかと思います。

この記事が誰かの役に立てば幸いです!ここまで読んでくださってありがとうございました。

スポンサードリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です