Java

【体験記】新人研修で1ヶ月のJava研修

こんにちは、インフラエンジニアのれおです。

この記事で分かること
  • 初学者がJavaを学習する手順が分かる
  • 1ヶ月でどのようなレベルになれるのか
  • Java研修で学んだこと

今回は、新人研修で1ヶ月のJava研修があったため、備忘記として体験記を残します。

プログラミング未経験の同期も参加していたため、これからプログラミングを学びたい方にとってもカリキュラムや学習方法の参考になるかと思います。

カリキュラム

下記のようなカリキュラムで研修が進みました。

カリキュラム
  • データ構造とアルゴリズム(1日〜5日)
  • オブジェクト指向プログラミング(6日〜10日)
  • データベース基礎(11日〜15日)
  • データベースプログラミング(16日〜20日)
  • アプリケーションプログラミング(21日〜25日)
  • Javaチーム開発(26日〜30日)

データ構造とアルゴリズム(1日〜5日)

ここでは、Javaプログラミングの基礎を学習しました。

  • Javaの環境構築
  • Javaの特徴
  • 分岐文(if文、switch文)
  • 繰り返し文(while文、do-while文、for文)
  • 配列
  • メソッド

Javaの構文、プログラミングが動作する仕組みなど基礎的な知識は必要不可欠ですね。

コンパイラ方式とインタプリンタ方式の違い!メリットとデメリットについて紹介します。プログラミングを勉強し始めて、「コンパイラ」、「インタプリンタ」といった言葉を聞いたことはないでしょうか? 今回は、エンジニアとして必須の知識である「コンパイラ」「インタプリンタ」について解説します。 参考文献としては下記を紹介します。オブジェクト指向を含めエンジニアにとって必須の知識が詰っているのでぜひ、読んでみて下さい...
【Mac版】VSCodeでJavaの環境構築を画像付きで解説VSCodeでJavaの環境構築を行いたい方に向けて画像付きで分かりやすく解説します。環境としては、MacOSでの環境構築を行っているので参考にしてみて下さい。...

オブジェクト指向プログラミング(6日〜10日)

プログラミングを学習する上で必須の知識となるオブジェクト指向ですね!

抽象的な概念で学生の時、理解するのに苦労しました。

  • クラスとインスタンス
  • カプセル化
  • 継承
  • ポリモーフィズム
  • 例外処理
  • ストリーム

Pythonを勉強していたので、ストリームを勉強した際には複雑で驚きました。

オブジェクト指向については、プログラミングを勉強する上では必須の知識なので下記の記事を参考にしてください。

いまさら聞けないオブジェクト指向とは?初心者にも分かりやすく解説しますなぜ理解しづらいのかを踏まえながら、オブジェクト指向について初心者にも分かりやすく解説します。オブジェクト指向のメリットも解説...

データベース基礎(11日〜15日)

「PostgreSQL」を使用してSQL文を書きました。

  • データベースの基本概念(テーブル、リレーショナルシップ)
  • SELECT句
  • WHERE句
  • 関数
  • データの挿入・更新・削除

Railsを勉強していた時にログでSQL文を確認する程度だったので、実際に書くのは初めてですごく勉強になりました。

データベースプログラミング(16日〜20日)

Javaを用いてSQL文の操作を行なった。

  • データベース接続
  • SQL文の実行

このあたりはJava特有のDB接続で、RailsやDjangoなどのフレームワークを使用してきた私には難しかったです。

しかし、フレームワークの内部の仕組みをなんとなく想像できたのでよかったです。

アプリケーションの設計(21日〜25日)

アプリケーション設計について学習しました。

  • アジャイル開発
  • ユースケース図
  • クラス図
  • シーケンス図
  • DAOパターン

Javaチーム開発(26日〜30日)

班員は五人で、DAOパターンを使用した社員管理アプリを作成しました。

機能としては、ログイン機能・社員情報の挿入・削除・更新・パスワードロック機能(数回間違えると一定時間ログインできない)といった程度でした。

Railsなどを使用すると簡単だと思うのですが、デザインパターンを使用して作成するのは、非常に大変でした。

大切だと感じたこと

仕様書に忠実にコードを作成すること

仕様書に忠実にコードを作成することがとにかく大切だと感じました。

変数の命名や構文の書き方(for文を使用するかwhile文を使用するか)といったことを仕様書に忠実で作成しないと、不備のある納品物になります。

個人開発や研究していた時は、気にしていなかった(そもそも仕様書など作成していない)ので大変勉強になりました。

変数の命名が苦手な方は、下記のサイトがおすすめです。

可読性を意識すること

仕様書通りに作成すると同じかもしれませんが可読性を意識することです。

大規模なシステムになるほどコード数は多くなり、システムがリリースしてから何十年も改修が必要となってきます。

自分の作成したコード基盤となり、何十年も直され続けるわけです。それを聞いて下手なコードは書けないなと思いました。

特にJavaは可読性の低いコードになりやすい言語だと思うので注意が必要ですね

可読性を勉強するには、下記の書籍がおすすめです。とても有名な書籍で、エンジニアであれば誰しも持っている書籍かと思います。(もちろん私も所有しています)

コミュニケーション能力

ありがちになってしまって申し訳ないですが、コミュニケーション能力は大切だと感じました。

特にチームで開発を行う際には、何を伝えたいか、何を質問したいか正確に伝えるコミュニケーション能力が必要でした。

私は、コミュニケーションには自信はあるのですが、リモートでの研修だったのでそこが大変でした。

そのため、1時間ごとに5分ほど現状報告し、次の1時間どのような作業をするか報告するようにしていました。

最後に

1ヶ月のJava研修を通じて再度プログラミングの面白さ、開発の楽しさを実感しました。

今後、実務でJavaを書くことはなさそうですが、今後のプログラミングの勉強は続けていきたいですね。