genonymous

GenestreamのTechブログ

たった2ヶ月でプログラミングができるようになった勉強法

こんばんは、佐野です。この業界に入って3ヶ月が過ぎました。
ど新人で入社しましたが、一つのプロダクトを持たせていただいて現在開発中です。
最初は全くわからず何をどうコードを書いていいのかさっぱり分かりませんでした。
Google Apiって何?Oauth認証って何?っというような状態でした。
しかしながら2ヶ月ほどでRailsjavascriptをある程度書けるようになり、途中から開発スピードが飛躍的に上がりました。
周りの方からはどうやって勉強したのか?と聞かれることもあったので、新人の方向けに僕が実際に行った勉強法を書いてみました。
ご参考になれば幸いです。

irb、pryを活用する

これはRails側です。
何をするにも初めてですのでとりあえず「どう動くのか?」をひたすら覚えていきました。 たとえばRubyで文字列操作、時刻操作などをする場合は多々出てきます。
その場合にはまずirbやpryを使ってコンソールで試していくのが一番分かりやすかったです。 文字列操作であれば、map、gsub、sliceや+、ーなどの基本的なメソッドまでを実際に使ってみて
”あ”の文字列や"1"などの文字列の数字に対して行ったらどうなるのか?
配列やハッシュに対して行ったらどうなるのか? 時刻操作であればDate.new、DateTime.parse、Time.zone.now、strftimeなどを文字列に対して試してみました。
これによってメソッドの動きが分かり、使うべきものが分かるようになりました。

ひたすらp

Rubyの勉強を始めた時に「こんなの使うことあるの?」と思ってたp……。 まさかこの「p」を一番使うとは思ってもいませんでした。
パラメーターがちゃんと飛んできているか?
定義したメソッドがちゃんと意図した通りの動きをしているか?
などを確認するときなどに必ず使いますよね。
このpを使うデバッグ方法を知ったことによって、内部でどう動いているかが分かり、プログラミングに対する理解が深まりました。
デバッグ方法を知り、実際にデバッグを行うことはプログラミングができるようになる早道だと思います。
Rubyではp以外にも、classやinspectなどのオブジェクトを確認するメソッドは多々使い、どういうオブジェクトが返ってきているか?
などを確認することをおすすめします。
javascriptの方でもconsole.log()を多用し、初めて使うメソッドなどは動きを確認するようにしています。

基本的なことを徹底的に勉強する

Rubyなどの言語に関する基本的なことはWebで調べればいくらでも出てきます。
しかし本当にまず勉強すしないといけないところは違うと思います。
僕が勉強した基本的なことは「そもそもコンピューターとは何か?」というところです。
下記の三つの書籍を順番に読みました。
「コンピューターはなぜ動くのか」→「プログラムはなぜ動くのか」→「オブジェクト指向でなぜつくるのか」
これらの書籍は本当に基本的なところが書いてありました。
コンピューターは実は三つのことしかやっていない、クラスっていう概念はなぜできたのか?など根本的な部分が分かると
プログラミング言語の学習をしている際にも、言語仕様などにも納得のできる部分が多くなり非常に身につきました。
この後にWebの基本的な知識を勉強すると「なるほど!」と、簡単に理解することができました。

まず動くものから始める

自分で試しに作ってみたがエラーばかりで、それを直せず途中で諦めた。
全く理解できなくてつまらない。
などがあると思います。 これはjavasceriptを勉強するときに実践したことですが、まず「Webでサンプルを探してきて動かしてみる」ということを行いました。
javascriptはエラーが出てもエラー箇所が分かりづらいことが多々有ります。
エラーが解消できないと時間もかかるし、面倒くさくなって途中で諦めることもあるかもしれません。
僕が行ったのは「ます動くものをコピペ」です。
幸いjavascriptの情報はたくさんあるので、サンプルなどはWeb上に多々有ります。
自分が作りたいものと同じものが無くても、似たようなものを持ってきてとりあえず動かしてみる。
動いたら少しずつ自分の作るたいものに変えていく、という方法をとりました。
これなら動く状態からスタートできるし、エラーが起こっても原因を見つけやすいので勉強が捗ります。

とりあえず簡単なことをひたすらやってみた感じです。
プログラミングに苦手意識を持っている人は、ぜひ基本的なことを勉強するようにしてみてください。
「コンピューターはなぜ動くのか」などの書籍を読むことは日々の業務には関係なく
遠回りしてしまうようですが、長い目で見ると今後の勉強の理解度の速さなどを考えれば一番の近道になると思います。