最近、「Ruby on Railsの学習方法について教えてください」みたいな質問を受けることが多く、いちいち答えるのも面倒なので、この記事にまとめておきます。
Ruby on Railsを学ぼうと思っている方やRuby on Railsを学んでいる方向けの記事になりますので、ご了承ください。
目次
- Ruby on Railsに限ったことではないが、プログラミングの独学は難しいから辞めた方が良い
- Railsチュートリアルは初心者には難しいから辞めた方が良い
- 全然理解できなくても、自分はアホだとかセンスがないとか思う必要はない
- Ruby on Railsで勉強すること自体を目的にするのではなく、ウェブサービスを作るためにRuby on Railを使うという態度で臨むべき
- HTMLとCSSは重要。舐めてはいけない
- 具体的におすすめなプログラミングスクール
Ruby on Railsに限ったことではないが、プログラミングの独学は難しいから辞めた方が良い
プログラミングって、ぶっちゃけ、難しいです。
簡単だ!って言う人もいるんですよ、ホリエモンみたいに。でも、あれは半分正解で半分間違い。プログラミングって、わかってしまえば、決して難しいものではないんですが、わかるまでが難しいんです。
具体的には、わかってくるようになるまでの最初の3ヶ月が大変なんですよ。その3ヶ月の間を挫折せずに毎日継続できるかどうかの勝負。ただそれだけな気がします。
その最初の大事な3ヶ月間が独学で誰も横に質問できる相手がいないと、多くの場合、挫折してしまうんですよ。
なので、最初の3ヶ月はマンツーマンで基礎から教えてくれる人と一緒に取り組むのが良いです。
最初はMacの使い方やターミナルのLinuxコマンドの使い方からわからないでしょうし、なおさらです。
Railsチュートリアルは初心者には難しいから辞めた方が良い
独学で一番やってはいけないパターンは、いきなりRailsチュートリアルをやること。
これは地味に難しいです。コンテンツとしてはクオリティは高いんですけど、プログラミング初心者からしたら敷居が高い。
まあ、ドットインストールをやって、プロゲートをやって、スクールに通って、簡単なアプリケーションを作った経験のある人にとってはちょうど良いです。
ある程度わかっている人が頭の中を綺麗に構造化するために読むのが良いです。
全然理解できなくても、自分はアホだとかセンスがないとか思う必要はない
わからなくても落ち込む必要はないです。わからなくて当たり前です。
本を読んでても、知らない用語がバンバンでてきたら、大変ですよね。脳内に必要な知識がインストールされていないと、そりゃあ、わかりませんよ。
最初のうちは、わからない用語がバンバンでてくる。重要なのは、その度に、わからない言葉をわからないままにせずに、一つ一つコツコツ調べていく姿勢です。
わからない言葉がでてきた。すると、その言葉をググる。すると、その言葉を説明する記述がでてくる。その記述の中にさらにわからない言葉がでてくる。
萎えますよね。萎えます。しかし、ここが勝負なんです。
わからない言葉が出てきて、調べたら、さらにわからない言葉が出てきた。それらを面倒臭がることなく、一つ一つ、徹底的に調べて行って、自分の言葉で説明できる状態にすることが重要です。
最初のうちは途方もなく時間がかかります。でも、最初に頑張れば頑張るほど、後で楽になります。最初の基礎的な土台を抑えておくのが極めて大事です。
知らない言葉を無くしていく。すると、徐々に、概念と概念が繋がっていって、いつの間にか理解できるようになっている、と言う感じです。
Ruby on Railsで勉強すること自体を目的にするのではなく、ウェブサービスを作るためにRuby on Railを使うという態度で臨むべき
これはよく言われることなんですが、Ruby on Railsに関わらず、プログラミングを学習する上では、自分が作りたいサービスを明確化してから取り組むことが重要です。
ぶっちゃけ、技術的な細かい部分を掘り下げたらキリがないですし、そこまで複雑なアプリケーションを作るのでない限り、使うgemもそんなにない気がします。
ログイン機能とか検索機能とかページネーションをつけるくらいではないでしょうか。
なので、ちゃっちゃと実装してしまって、もっと見た目をこだわるとか、マーケティングを考えるとか、そっちの方が良い場合も数多く存在する気もします。
第一、やっぱり自分でサービスを作らないと飽きてくるし、面白くないです。勉強すること自体が目的化してしまうのは良くないです。自分が作りたいサービスを考えて、そのために必要な機能を実装すべく、一つ一つ調べるという姿勢が大切です。
HTMLとCSSは重要。舐めてはいけない
地味に、重要なのがHTMLとCSS。
ぶっちゃけ、例えばマッチングアプリケーションのようなウェブサービスを作る場合、そこまで技術的に複雑なプロダクトは最初から作る必要はないし、作る意味もない。
プロダクトがグロースするしないは、市場と参入するタイミングとマーケティング力に依るところが大きいからです。だからバックエンドは最初のうちはある程度で良いですよ。
※ もちろん、最終的には、セキュリティ周りとかデータベース周りとか超重要なんですけど、初期段階では、個人情報をあんまり持たないようにするとかして、とりあえず動くモノを作ることが大切です。
でも、フロントエンドは何気に重要です。デザインがそれっぽくないと、ワクワクしないし、みんな広めようともしてくれない。応援者も現れにくい。
HTMLとかCSSって、RubyやPythonのようなサーバーサイドのプログラミング言語と比べると、少し低級な感じがしませんか?少なくとも私はしてました。
でも、意外にこれらのスキルは重要です。
Ruby on Railsでも、MVCアーキテクチャのうちのV、つまりViewはHTMLをベースとしたERBテンプレートで書かれていますし、あとは、CSSについても、Stylesheet内にCSSもしくはSCSSが書かれている。
この部分がイケテナイと、なんかパッとしません。
ぶっちゃけ、ウェブアプリケーションを作る場合、ある程度サイト構造とかパターンが決まってるんですよ。ナビゲーションバーがあって、トップページがあって、詳細ページ一覧があって、クリックすると、詳細ページに飛ぶ、みたいな感じです。
なので、結構、サーバーサイドでやることはパターンが決まっている。だから、フロントエンド、つまり、デザインが相対的に重要になるわけです。
ぶっちゃけ、今の時代なら、chromeブラウザのデベロッパーツールとか見れるんで、デザインも優れたサービスの優れた箇所を参考にしたりすることはできるんですが、最初のうちはデベロッパーツールの使い方もわからないでしょうし、こんな便利なものがあると言うことも独学だけでは気づかない場合も多いと思います。
この辺りも含めて、独学ではなくプログラミングスクールが良いなあと思う次第です。
具体的におすすめなプログラミングスクール
じゃあ、どこのプログラミングスクールがおすすめなのかと言う話なんですが、個人的には、対面マンツーマンで教えてくれるところです。それも、オンラインではなくて、オフラインの方がおすすめです。
私が実際に通ったスクールでもあるのですが、Tech Boost は良いと思います。渋谷にある教室に通う必要がありますが、メンターが丁寧に教えてくれます。
Tech Boost は、AIやブロックチェーンやIoTを学ぶことができるプログラミングスクールと言う触れ込みがありますが、実質的には、Ruby on Railsを学ぶスクールです。Ruby on Railsを学んだ上で、オリジナルアプリケーションを制作する部分が一番大きいです。AIやブロックチェーンを学びたいなら、テックブーストに加えて、プロゲートやアイデミーあたりでPythonをさらに学習する必要はあるでしょうね。
Tech Boost の難点としてよくあげられるのが、料金の高さなんですが、確かに、一般的な感覚からすれば、3ヶ月で30万円と言うのは、なかなか敷居の高い金額ではあると思うんですが、私の場合、お金をある程度出した方がモチベーション管理の面で良いので、この辺りは出し惜しみしないほうが良いと思う派です。
プログラミングってダイエットや筋トレと似ている部分があって、結局のところ、モチベーションを維持できるかどうかってところが大きいんですよ、と言うか、これが全てです。
あとは、僕は通ってはいないのですが、テックキャンプ も良いです。通ったこともないのに、なぜテックキャンプが良いかわかるんだと言われるんですが、私はテックキャンプ
のメンター5人くらいと仲良しで、友人の中にも、通っている生徒が3人くらいいるんです。だから、結構、中のことはわかっている。
で、一緒にカフェで作業している時にテックキャンプ のテキストをちょっとだけ見せてもらったりするんですけど、テキストの質がめちゃくちゃ高いんですよね。で、メンターのレベルについても、特に八重洲校に関しては、かなり良い気がします。
加えて、メンターの中で、どうすれば、テックキャンプ がよりよくなるか主体的に考える企業カルチャーが醸成されていて、この辺りの組織づくりはなかなか凄いなあと思ったりもします。
と言うわけで、対面マンツーマンのTech Boost とテックキャンプ
は個人的におすすめです。
対面マンツーマンではないコードキャンプやテックアカデミーも悪いサービスではないですが、私の感覚で言うと、やはり横で教えてもらうのが良い気もします。
実際、コードキャンプは受講したことがあるんですけど、あんまり合いませんでしたね。リアルタイムで質問がしにくいと言うことに加え、Macで環境構築とかはやらずにCloud9というIDEを使って開発をしていくんですけど、個人的には、Macで開発環境インストールしたりするところがプログラミングを行う上で大切な気がしているので、その部分からみっちり教えてくれるスクールの方が個人的には良いと思います。
Cloud9を使った方が、最初の立ち上がりは楽なんですけど、長期的な目線で見ると、普通にMacで一から環境構築した方が良いと思います。
という感じです。何か質問などがありましたら、コメント欄に書いていただければ、答えますので、宜しくお願いいたします。