Ruby習得に3ヶ月かかった僕がプログラミング学習で必要なことを挙げてみた

Rubyというプログラミング言語をご存知ですか?

日本人が開発したプログラミング言語で、WEBサービスなどの様々なプログラムに起用されています。

Rubyのメリットは何よりもコードを書く速さにあります。

例えば他の言語で10行は書かなければいけないコードも、Rubyならたったの1行で同じ動作ができてしまうほど。

 

そんなRubyはその性質からスタートアップなどのサービスのプログラミングに使われることが多く、とにかくスピードを求めて早々にプロダクトを実現しなければならない業種には持って来いなのです。

僕自身もいくつかの理由を元にRubyを学ぼうと思い、悪戦苦闘した時期がありました。

 

結局、これは僕のスキル不足でもありますが、独学で学ぶことに限界を感じ、あるサービスを使って学ぶことができました。

今では無料で素晴らしいサービスがいくつもあるので以前よりも学ぶのは容易いと思います。

ただ、いきなりRubyに挑戦して挫折する人は多いかと思いますので、僕の挫折体験からもう一度学びなおすまでの過程をここに書いておきます。

みなさんは僕と同じ轍を踏まないようにRubyを勉強してください。

Rubyとは?

さて、読み進める前にもう少し詳しくRubyについて紹介しておきます。

Rubyとは日本人のまつもと ゆきひろさんが開発したプログラミング言語で、オブジェクト指向と言われるジャンルの言語です。

細かい話はおそらくプログラミングがわからないとあまり意味がないので、とにかく簡単に特徴を説明します。

 

Rubyはコードを書く際の手間がとにかく少ないのです。

プログラミング言語には様々な書き方のルールがありますが、Rubyの場合その書き方のルールがとても簡単なのです。

書く内容も少なく、それでいてしっかりと動く。

その分打ち間違えや凡ミスも少なくなるのですが、反面、難しい処理もたったの1行で終わらせてしまうものですから、どういった動きをRubyがしているのかプログラミング初心者には複雑でわかりづらいというデメリットもあります。

「とりあえずこれを書けば動くから」

という風にRubyの記述を覚えてしまうと、汎用性に欠け、結局どの記述でどんな動きまでを制御しているのかがわからなくなってしまいます。

こういったデメリットから僕としてはプログラミング初心者にはあまりおすすめできない言語です。

プログラミングの仕組みや全体像が見えてこないとどうしてもわかりにくいんですよね。

僕のプログラミング経験

僕がRubyを学ぶ時、何の知識もなしに始めたわけではありません。

一応WEBサイトは一通り作れるくらいには知識がありました。

正確にはプログラミング言語ではなくマークアップ言語もありますが、僕のプログラミングへの知識は以下の通りです。

  • HTML
  • CSS
  • Javascript
  • WordPress(WordPressを書き換える程度のPHPの知識)

こんな感じでWEB系言語の知識はあったのでまあ余裕でしょうとか思いながら挑んだ記憶があります。

Bootstrapを使えばサイト自体の作りはとりあえずそれで良いし、まずはプロダクトを作るのが優先だなと考えていました。

そんな感じで、完全に初心者というわけではなく、既にある程度コーダーレベルの知識はあったのですが…

この後思いっきり挫折します。苦笑

初めてのサーバーサイド言語にRubyを選んだ理由

また、初めてのサーバーサイド言語(いわゆるWEBサイトなどで見えている部分ではなく、裏で動作してくれている言語のこと)にRubyを選んだのには理由がありました。

自分でWEBサービスが作りたかった

その主な理由ですが、僕自身も自分でWEBサービスを作ってみたかったんですよね。

当時僕が考えていたアイデアは自分の体験から来るものでした。

僕は独学推奨派で自分自身もそうだったのですが、やっぱりいくら頑張っても詰まる時は詰まるんですよね。

そんな時間を少しでも無くすためにすぐに勉強の問題を解決できるサポートがあったら良いのではないか?と思ったんです。

つまり「受験勉強や資格の勉強などで詰まった時に気軽に専門家やわかる人に聞けるプラットフォーム」を作りたいと考えました。

Ruby on Railsがマッチングプラットフォーム作りに向いている

こういったWEBサービスをマッチングプラットフォームと言いますが、Rubyはその仕組み上プラットフォーム作りに向いているらしく、僕は知り合いのプログラマーさんに勧められるがままRubyを学ぶことにしました。

RubyにはWEBサービスに特化したフレームワークがあって、それをRuby on Railsというそうです。

フレームワークとは言わば「組みやすくするために既にある程度の機能を備えたパーツ群」で、これを使うとさらに簡単に複雑な動きを実現することが出来ます。

調べてみればなんだか素早くプログラミングをできる言語とのことだったので、なんか良さそうと特に大きな理由もなく選んだ次第です。

知り合いのプログラマーさんにおすすめ本を聞いた

そうと決まればとりあえず参考書を買って勉強!

というわけで知り合いのプログラマーさんにおすすめの本を聞きました。

その時に紹介されたのがこちらの2冊。

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

その人は黒本と読んでいましたが、Ruby on Railsの基礎から実践して実際にアプリケーションを作るところまで載っている本で、少々難易度は高い模様。

実際、辞典のような感覚で使えるそうで、この1冊がマスターできれば実践レベルである程度書けるとのことでした。

ただ、いきなり難易度高いものに挑戦しても仕方がないので僕が選んだのは以下の1冊です。

Ruby on Rails 4 アプリケーションプログラミング

こちらは黒本に対して赤本。

わかりやすく基礎から載っていて、読み進めながらコーディングしていけば1つのアプリケーションが組めるようになっています。

僕はこちらを購入し早速勉強を始めることにしました。

学習時に読んでいたサイト

このサイトは僕のモチベーションにめちゃくちゃ貢献してくれました。

学習記録をわかりやすく書かれていて、

「なんか俺でもできそうだぞ!」

と思ったのを覚えています。

30Ruby記

30Ruby記

このブログを読んだのは我ながら運の尽きだったかなと思うのですが、タイトルの通り1ヶ月でRubyを習得しWEBサービスを作っています。

「へえ、なんだよ。1ヶ月でできるんだ。余裕じゃねえか」

そんなことを思いながら実践しましたが、

「え、一ヶ月とか嘘でしょ。え?」

と何度となく読み返しました。

恐らくこれ書いた人はマジで頭良かったんだと思います。

それか僕が究極的に頭悪いか。

これならイケると思って勉強

そんなわけで本もあるし、モチベーション上がるブログもあるし余裕だろと思いながら早速学習を始めました。

大事そうな部分には付箋貼ったり、実際に組みながら動作を確認したり。

仕事の合間、参考書に沿いながら進めていったのですが…

「え、ちょっと待って。むずくね??」

徐々にRuby on Railsの難しさに埋もれていきます。。。

MVCモデルの理解に苦戦

Ruby on RailsにはMVCモデルという概念があって、これに沿ってプログラムを適切な場所に記述していきます。

で、調べると図が出てきたり、色んな解説も出てくるのですが、何度見ても意味がわからない。

書いたコードが動いてはいるのですが、なぜ動くのかがわからない。

 

先ほど書いた典型的な挫折パターンで、コードがどんな動きをするかは覚えたけれど、どうしてこんな動きをするのかわからない。というような泥沼にハマっていました。

そんな泥沼にハマりながらも参考書を読み進め、さらに学習を続ける毎日。

当たり前ですが、参考書の通りにやっているので動くんです。

動くのですが、なぜ動くのかが理解できない。

徐々にエラーも出てきて、何が原因なのかもわからない。

「え、Ruby on Railsむずすぎやん…」

結局学習を始めてから1ヶ月程度で僕は一度挫折してしまいました。

それでもプログラミングを学びたくてスクールを探した

こうして僕のRuby on Rails独学は幕を閉じたのですが、それでもプログラミングを学びたかった僕はひたすらRubyの入門系のサイトを読み漁ったり、空き時間に少しずつ少しずつ勉強をしていました。

それでも組めるようになるわけではなく「このままじゃ埒が明かない!」と思い立っていた矢先、プログラミングスクールというものがあることを知ります。

プログラミングスクールには様々なコースがあり、自分の学びたい言語を選択することでプロの講師のもと学習をすることができます。

また、スクールの中にはオンラインで学べるものもあるそうで、僕はプログラミングスクールについて調べるようになりました。

TechAcademyを見つける

f:id:bun1125:20170609192540j:plain

そんな中僕が最終的に選んだのはTechAcademyというプログラミングスクールです。

数あるスクールの中からこちらのTechAcademyを選んだのにはちゃんとした理由がありました。

WEB業界著名人へのサービス発表があったから

一番大きな理由はコレです。

TechAcademyでは2ヶ月間の受講の中でオリジナルサービスを作るステップがあります。

オリジナルサービス を作ったあとはWEB業界の著名人へ発表する場を設けてもらうことができ、その場でスカウトや出資なんて展開もあるそうです。

もともと自分でWEBサービスを作りたかった僕はこの発表の場に魅力を感じ、受講を決意しました。

審査員の中に僕の好きなリブセンスという企業のCTOがいたのも大きな決め手でしたね。

完全オンラインで時間的に助かったから

また、プログラミングスクールを受講した当時、僕は時間的にあまり融通が効かない仕事をしていた為、実際に足を運んでスクールに通うというのがどうにも難しかったのです。

東京には住んでいましたが、他のスクールの会場とは家も遠かったので1分1秒を無駄にしたくない!という思いのもと、完全オンライン受講が可能なTechAcademyを選びました。

TechAcademyの2ヶ月間の学習で得たもの

というわけで受講を決意したオンラインプログラミングスクール「TechAcademy」。

当然十数万円の受講費もかかるわけですから、以前にも増して僕は本気でした。

 

また、実際に学んでみて得られたのはプログラミングスキルだけではありません。

担当してくれたメンター講師の方の略歴は面白いもので、新卒でフリーランスとなり1件50~80万の案件をやる傍らTechAcademyで講師をしているとのことでした。

ネットで調べれば出てくる情報ではありましたが、実際にそういった進路を辿って、高額案件にもジョインしている人には始めて会ったのでとても新鮮でしたね。

そういった知見から来るアドバイスもあって、僕がその後プログラミングを使って事業を立ち上げるきっかけになりました。

 

他にもオンライン学習の汎用性の高さにも驚きました。

もちろん実際に会って学ぶ方が効率は良いかもしれませんが、それでも実際オンラインでパソコンさえあればここまで色々なことができるんだなとめちゃくちゃ感動したんです。

アポとかも実際に会わずにこれでいいじゃんと思い始めたのもこのオンライン学習を始めたことがきっかけでした。

 

ちなみに、この記事ではTechAcademy自体の詳しいレビューは書きませんが「独学で挫折した僕がTechAcademy(テックアカデミー)を受講した感想・評判口コミレビュー」にまとめてあるので気になる方は目を通してみてください。

 

とにかくプログラミングスキル以外でも学べることが多々ありいい勉強になりました。

プログラミングスクールを受講して必要だなと思った予備知識

結局プログラミングスクールのおかげである程度はプログラムを組めるようになりましたが、実際に受講してみて思ったのは独学だろうがスクールだろうが、やはりある程度の予備知識は付けておいた方がいいということです。

特にスクールに通うとは言え、いきなりゼロからRubyを学び始めていたら僕は恐らく習得できていなかったと思います。

独学で少しでも言語に触れていたからこそスムーズに受講することができましたし、始めてスクールでRubyを学んだ人は中々大変だったんじゃないかなと思いました。

 

そんな予備知識を学ぶためのサービスが今はネット上にもありますし、エラーが起きて詰まってしまってもそれを解決するサービスだってネットにあります。

以下ではこれからプログラミングを学ぶ人に使ってもらいたいサービスを挙げておきました。

オンライン学習で「Progate」を使う

ブラウザ上でプログラミングの基礎知識を学びながらそのままコードを書いて、理解度を高めることができる「Progate」というサービスがあります。

僕がRubyを学び始めた頃は触ったことがありませんでしたが、これめちゃくちゃ便利ですごいです。

ブラウザ上でコードを書くという感覚はプログラミングをしたことのある人はいまいちわからないかもしれませんが、本当にサクサクと進めることができます。

当然パソコンのスペックや環境に左右されないので学び始めるにはとても良いサービスです。

スクールを受講する予定の人も並行して進めればより知識を深めることができます。

エラーが起きてわからなくなったら「teratail」を使う

f:id:bun1125:20170314210845p:plain

プログラミングをやっているととにかく詰まります。

つまり、なぜか予期せぬ挙動をしてしまう時があるのです。

こういった時にすぐに聞ける人がいればサクサク進めるのですが、独学環境だったりするとそうもいきません。

また、実際に実践レベルで組み始めてからもこういった事態は多発します。

1つのバグのせいで半日無駄にしたなんてザラなので、こういった時間を減らす努力は必須ですね。

 

今回紹介する「teratail」はこのような無駄な時間を解消するためのサービスです。

具体的にはteratail上で質問をすることで、他の詳しいエンジニアが問題を解決してくれるのです。

言ってみれば「プログラミング版のYahoo知恵袋」。もちろん利用するのにお金はかかりません。

僕もteratailには2年以上お世話になっていて、本当に素晴らしいサービスだなと思います。

初心者も玄人も確実に登録しておくべきサービスでしょう。

結局、Rubyで挫折したらどうすべきなのか?

というわけでまとめです。

では結局Rubyで挫折してしまったらどうすべきなのかという点ですが、僕は素直にプログラミングスクールの受講をおすすめします。

今は無料で受講可能なスクールもありますし、僕が学んでいた時期よりも便利なサービスが多数あります。

こういったサービスを利用しない手はないでしょう。

 

また、もし挫折してしまったら、もう一度なぜプログラミングを学ぼうと思ったのか?について考え直すべきだと思います。

実を言うと僕の場合はWEBサービスを作りたくてRubyを習得したわけですが、結局考えていたWEBサービスを作り上げることはありませんでした。

 

これは僕の興味関心が学習意欲と共に徐々に薄れていったことも原因ですが、同時にプログラミングの素晴らしさに触れて、もっと身近な問題を解決するサービスを作れるのではないかと考えたことも理由の1つです。

実際、Rubyを通してプログラミングという概念を学んだあとに、僕は別の言語を習得してシステムを作成し、それを元に中小企業相手にビジネスをしています。

なので結局Rubyを使う機会はありませんでしたが、良いきっかけにはなったかなと思うのです。

 

このようにプログラミング自体に触れたことのない状態だと、構想しているサービスやアイデアがどれだけ大変なものなのか、プログラミング以外にどんなスキルが必要なのかも把握しずらいです。

だからこそ、自分がなぜプログラミングを学びたいのかをもう一度考えることが大切だと思っています。

就職のためなのか。起業したいのか。なんとなくなのか。

そういった何かしらの理由を元にプログラミングスクールを選ぶのもアリだと思いますし、独学で学べるくらい頭の良い人はそのまま参考書を買ってみると良いでしょう。

 

と、言うわけで僕がRubyを独学で学んで挫折してからもう一度学び直すまでの体験記でした。

これからRubyを学ぼうとしている人の参考になれば幸いです。