こんにちは。 2021年4月に新卒入社した小泉です。
5月からサービス開発部に配属になり、慣れない業務に苦戦しています。
配属先では開発で使用する言語として、Javaを採用しています。 しかし、今までJavaを触ったことがなく、ゼロから勉強する必要がありました。
にもかかわらず、OJTコーチが設定してきた課題はSpring Frameworkを使ってAPIを完成させるというとても高いもの。開発に参加するのは一筋縄ではいきません。そんな高いゴールに向かいつつ自分で工夫しながら学んで、なんとか開発に参加できるレベルになれました。
今回は、新人が配属されてから2カ月でどのようにJavaを勉強したかを紹介したいと思います。
本で学ぶ
プログラミング言語の勉強方法は、大きく分けてネットで学ぶ方法と本で学ぶ方法の2つあると思います。
好みの問題もあるとは思いますが、自分は本で勉強しました。 理由としては以下の3点です。
- 体系的に学べる
- 信頼できる
- 勉強してる感がある
ネット上には多くの情報が溢れていますが、それゆえに、どれから手をつけてよいか分からなくなることがあります。 また、ネットは情報が散乱しているので最初に学ぶべきものを見落としてしまい、学習が非効率になる恐れがあります。
その点、本は情報がまとまっていて、順序立てて学ぶことができるため非常に効率が良いと思います。
自分が配属後の2カ月で読んだ本を最後に紹介しているので、参考になれば幸いです。
ゴールを明確にして手を動かす
プログラミング学習の挫折要因の一つとして、ゴールが明確になってないことが挙げられます。
プログラミングは、ゴールを達成するための道具に過ぎないので、勉強する際に先に何をしたいかを決めたほうが良いと思います。
自分は新幹線の料金計算APIを作ることをゴールとしました。
後、週に1回チームでCodewarsをやりました。 Codewarsとは、簡単な競技プログラミングの問題を解きながらアルゴリズムやコーディングを学ぶWebサービスです。 コードに慣れる意味ではやって良かったと思います。 ただ、競プロ系は書き方が業務とかけ離れているので気を付けたほうが良いです。
プログラミングの学習に限らないのですが、最初に入門書を完璧にしてから実際に動くものを作ろうと考える人は少なくないと思います。
手を動かさずに本だけで学習を進めると、ものを作るゴールのつもりが本を読むことがゴールに変わってしまったり、分かったつもりになって満足したりする恐れがあります。
自分の例でいうと、大学でオブジェクト指向を学んだのですが、実際にコードを書いてみると知っているだけで全く使うことができないことが分かりました。
実際にやってみると自分が何を理解していないかが分かり、ゴールが明確になってモチベーションにもつながると思います。
ありのままを学ぶ
Java学習のロードマップの一つにこんな記事があります。 HelloWorldから始まって言語の基礎を学び、WebフレームワークやRelational Databaseなどの周辺技術に知識を広げていくロードマップが紹介されています。勉強すべきことは非常に多いと感じます。
しかし、これらのツールは開発を便利にしてくれるものに過ぎず、ツールやフレームワークを使ったからと言って別の言語になるわけではありません。
そのため、基礎となるJava自体を深く学ぶことは非常に重要だと思います。
自分のいるグループでは、JavaのフレームワークであるSpring Frameworkを開発で使用しています。 初めてSpring Frameworkを触った時はその便利さがよく分かりませんでした。 しかし、素のJavaをしっかり勉強したことで、フレームワークを使うとどう便利になるかが理解出来ました。
これらの便利なツールをなぜ使うのかを理解するために、一見遠回りですが一度何も使わない状態を学んだ方がいいと思っています。
まとめ
Javaを文法などの基礎から積み上げて勉強したことで、プロダクトコードを読んで開発に参加できるようになりました。
Javaは古い言語というイメージがあると思いますが、世界的に見てもまだまだ利用率は上位ですし、使いこなせれば何でもできる万能な言語だと思います。
まだまだ知らないことがあるので、これからも勉強を続けていきたいと思います!
参考図書
スッキリわかるJava入門
オススメ度:★★★★★
AmazonでJavaと検索したら一番上に出てくるほど売れてる本です。
絵が多く、文章も硬すぎず非常に分かりやすいと思いました。 本がかなり嫌いな自分でもスラスラ読めました。
しかし、プログラミング経験者からすると少し物足りなさを感じると思います。
重要なことは大体書いてあるので、この本を読めば開発で使われているコードも読めるようになると思います。
スッキリわかるJava入門 実践編
オススメ度:★★★☆☆
上で挙げたすっきりわかるJava入門の続編です。
入門編よりも使いどころが限られるようなものが多く、内容も難しくなっています。
この本の前半はJavaの説明ですが、後半は開発手法(アジャイル、リファクタリング、CI/CDなど)を説明しています。
この本のおかげで関数オブジェクト、ラムダ式、StreamAPIを理解できました。
しかし、後半の開発手法の話は内容が薄く、この本で学ぶべきことではないと思うので、無理してこの本を読む必要はないと思います。
この段階でJavaのドキュメントが読めるようになってくると思います。 Java8ドキュメント : https://docs.oracle.com/javase/jp/8/docs/api/
Java言語で学ぶデザインパターン入門
オススメ度:★★★★★
GoFの23個のデザインパターンを 1つ1章使って丁寧に解説しています。
難しい表現もなく、クラス図やコードがかなり分かりやすいと思いました。 また、デザインパターンに慣れていない人が読むことを想定して書かれているので、かなり読みやすいと感じました。
しかし、手続き型プログラミングに慣れていた自分からすると、使いこなせるようになるには時間がかかりそうだと思いました。
オブジェクト指向でなぜつくるのか
オススメ度:★★★★☆
タイトルの通り、オブジェクト指向が何で生まれたかの歴史について書かれています。 どういった経緯でその考え方に至ったのかを知ることで、理解がより深まると思います。
ヒープ領域やスタック領域でもメモリの挙動も解説されていたので、理解の助けになったと思います。
オブジェクト指向の概要を知るにはいい本だと思います。
※ Amazonは、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。
※ Amazonのアソシエイトとして、ビッグローブ株式会社は適格販売により収入を得ています。
※ Javaは、オラクルおよびその関連会社の登録商標です。
※ Spring Framework は、米国Pivotal Software, Inc. の米国またはその他の国における商標または登録商標です。