【随時更新】ロードマップから見るJavaエンジニアの成長記録

Java
Java

こんにちは!このブログの筆者のinashunです。
私の成長記録をJavaエンジニアのロードマップと共に公開したいと思います。恥ずかしいのであまり見ないでいただけると幸いです。。。

概要

Javaエンジニアとしての学習を進めていくために、ロードマップを調べていたのですが、要素が多すぎて全部究めようとすると一生かかっても間に合わないことがわかりました。そこで、分野ごとに学ぶ要素を絞って、それをちゃんと仕組みや原理まで理解することで、他の要素にも応用できるようにしようと考えました。

それぞれの見出しは「{技術分野} – {私が選んだ要素}」という構成になっています。その中には、要素を選んだ理由や、要素に関連した記事(当ブログ記事&参考になる記事)のリンクを載せます。リンクや技術分野などは随時更新していきます。

参考

私からあなたへ 一人前のJavaエンジニアになるためのロードマップを送ろう – Qiita
この記事の最初のロードマップの図がとてもわかりやすいです。参考にさせていただきました。

https://github.com/kamranahmedse/developer-roadmap
このロードマップの図を見て見事に絶望しました。とんでもない世界に身を置いてしまったようです。。。

①オブジェクト指向 – 原理

深い部分はあとからでも構わないですが、原理や基本的な考え方は最初に学んでおく必要があります。

リンク集
Javaのオブジェクト指向について死に物狂いでまとめたから見て
Java言語に対象を絞って、オブジェクト指向という考え方についてまとめてみました。できるだけ理解しやすくなるように、独自の解釈を多く含んでおります。 当記事はその構成上、断言するような表現を多用していますが、オブジェクト指向に対する筆者個...

②基本文法 – 全部

基礎的な文法は最初にしっかりと学習して、応用的な文法は使いながら身に付けていきましょう。バージョンが上がるごとによりモダンで便利な文法が増えていっているので、そういったものはどんどん身に付けて取り入れていきましょう。

リンク集
Javaの基本文法かなりざっくりまとめ
Java言語の基本的な文法についてかなりざっくりまとめました。 実装例+簡単な解説のみの構成となっています。 Javaの基本文法の確認やおさらいといった目的で読んでいただけたらと思っています。 右側の目次から確認したい項目へと飛ん...

③IDE – Eclipse

使い慣れているのでEclipseです。どこの現場でも使われているし情報量も豊富です。エディタにカッコイイとかオシャレとか求めません。書いているコードがイケていればそれでいいのです。

リンク集
Eclipseとお友達になりたい!
Javaエンジニアに必須のスキルが一つあります。それは、IDEとお友達になるスキルです! このスキルの有無でエンジニアの生産性は大きく変わります。ぜひ、仲良くしていきましょう! IDEとは IDE (Integrated Develo...

④プロジェクト管理 – Gradle

Mavenがデファクトスタンダードみたいな扱いなのですが、Gradleの方がビルドタスクを容易に定義できたり、Mavenの弱かったところを補っている(より新しいのだから当然?)のでGradleにしました。

リンク集
Gradleの基礎まとめ
ビルドツールのGradleについてまとめていきます。 Gradleとは 主にJavaのプロジェクトを管理するビルドツールの一つです。 ビルドツールとは、「コンパイルや実行時に必要な外部ライブラリを自動的にダウンロードしてきてくれる」「...

⑤Java API – いろいろ

便利なライブラリはいっぱいあるので挙げているとキリがないですが、標準ライブラリに限定して例を挙げるなら、

  • ListやMapなどのCollection型
  • Integerなどのプリミティブ型のラッパークラス
  • InputStreamなどのストリーム型(ファイルの読み書きなどに使用)
  • CalendarやLocalDateTimeなどの日付型

などがあります。開発していく中で必要となった場合に覚えていきましょう。

リンク集

⑥データベース – PostgreSQL

オープンソースのリレーショナルデータベースから選びます。一番縁があるのがPostgreSQLなので選びました。他にはMySQLやMariaDBが候補に挙がります。

リンク集

⑦フレームワーク – Spring

どんな言語でも、規模の大きなシステムを作るときにはフレームワークは必須です。Javaにも多くのフレームワークがありますが、2021年現在で選ぶならやっぱりSpringかなと思っています。次点でPlay FrameworkかJavaEE(JSF)が選ばれるかなと思います。

ちなみに、「Spring Boot」ではなく「Spring Framework」を対象とします。究めたいと思っているなら楽をするなということです。

リンク集

⑧テンプレート – Thymeleaf

JavaアプリのWeb画面といえばJSPが使われてきましたが、今はテンプレートエンジンを用いるのが主流です。Springで採用されているThymeleafを使います。あわせてHTML + JavaScript + CSSの基礎知識も学んでおきましょう。

リンク集

⑨O/Rマッパー – MyBatis

Javaなどのプログラミング言語とリレーショナルデータベース間でデータの変換を行うことをO/R Mappingと呼びます。要するにデータベースアクセスのフレームワークです。Springの標準的なO/RマッパーのMyBatisを選びました。

リンク集

⑩テストコード – JUnit

まさにデファクトスタンダードです。JUnitを学ぶことも大事ですが、ちゃんとテストコードを書く習慣をつけるということはもっと大事かもしれません。

リンク集

⑪セキュリティ – 全般

システム開発ではセキュリティ対策は必須の責務です。一般的なセキュリティ脅威の原理と、基本的な対策方法について学習しましょう。あわせて、システムにおける認証の方法について学習しておきましょう。

リンク集

⑫バージョン管理 – Git

一択です。

リンク集

⑬Webサーバ – Tomcat

Webサーバでアプリが動く仕組みを知っておきましょう。Springと親和性が高いのでApache Tomcatを選びましたが、Nginxとかでもいいと思います。

リンク集

⑭RestAPI – 考え方

Restの考え方を理解し、APIを設計できるようになりましょう。実装はSpringなどで行います。あわせてデータのやり取りで使用するJSONについても学びましょう。

リンク集

⑮デザインパターン – GoF

ここまで来てやっとデザインパターンを学びます。そうでないと序盤で学習してもよほど天才な方でない限り身に付かないと思います。ある程度熟練してからでないと理解できないし活用できないので、この段階としました。デザインパターンのほかにもDRYなどのベストプラクティスを学び、自分が書いたコードを見直してリファクタリングをしてみましょう。

リンク集

⑯検索エンジン – Apache Solr

キーワード検索などを実現するための全文検索エンジンについて学びます。Elasticsearchの方が有名かもしれませんが、最近AWSといざこざしていたので避けました。あとはSolrは経験があったので。どちらも検索ライブラリにはLuceneを使っています。

リンク集

⑰メッセージキュー – RabbitMQ

メッセージキューを用いて非同期処理を実現する方法を学びます。

リンク集

⑱コンテナ – Docker

Dockerを使って、コンテナイメージの作成やコンテナの運用について学びましょう。そして、Dockerコンテナとして自作したJavaアプリを動かしてみましょう。

リンク集

⑲CI/CD – CircleCI

テストやデプロイをCIツールを用いて自動化してみましょう。経験のあるCircleCIを選んでいます。GitHubのリポジトリと連携して運用すると強みを発揮します。

リンク集

⑳クラウド – AWS

よもやJava関係なくなっちゃっていますが、クラウドの知識は今のエンジニアには必須かと思います。無償枠が使えるうちに、EC2にJavaアプリをデプロイしてアクセスしてみましょう。

リンク集

更新履歴

微細な更新は含めていません。
日付概要
2021/02/06初版
2021/02/10④Gradleのリンクを追加
2021/02/15①オブジェクト指向のリンクを追加
2021/02/23③Eclipseのリンクを追加
⑥Junitを⑩に順番変更 これに伴い一部順番を繰り上げ
2021/02/28②基本文法のリンクを追加

 

コメント

タイトルとURLをコピーしました