新人研修でJPAやMyBatisを使わない理由:ロジックを組む力を養う重要性
こんにちは。ゆうせいです。
新人研修中に受講者から以下の質問をいただきました。
新人エンジニア研修で、なぜJPAやMyBatisを使わないのですか?
今回はこの質問に答えたいと思います。
新人エンジニア研修において、JPAやMyBatisといったフレームワークを使用しない背景には、SQLの理解だけでなく、プログラムのロジックを自力で組み立てる経験を積んでほしいという明確な意図があります。なぜ便利な道具を遠ざけてロジック構築を学ぶ必要があるのか、その理由と具体的な学習効果について解説します。
フレームワークが隠蔽するロジックと比喩による解説
JPAやMyBatisの主な役割の一つに、オブジェクト関係マッピング(O/Rマッピング)があります。これは、データベースの表形式のデータと、Javaのオブジェクト(インスタンス)を自動的に結びつけ、データを詰め替える処理のことです。フレームワークを使うと、この詰め替え処理のロジックが自動的に実行されるため、開発者がコードを書く必要はありません。
この自動化された処理を、高校の部活動における名簿作りに例えてみましょう。
先生から「全校生徒のデータが並んだ1枚の大きな表」を渡され、それを「クラスごとの個別カード」に書き写して整理する作業を想像してください。
フレームワークを使うことは、最新のスキャナーを使って表を一瞬でカードに変換することに似ています。一方、フレームワークを使わない研修での演習は、表の1行目から順番に目で追い、名前や出席番号を1枚ずつのカードに手書きで書き写す手順を、すべて自分で考える作業に相当します。
データの数だけ処理を繰り返すループ文(for文やwhile文)を使い、条件に応じてデータを振り分ける条件分岐(if文)を組み合わせるという、プログラミングの最も基本的な論理の組み立て(ロジック)を、この詰め替え作業を通じて学びます。
自力でデータ処理ロジックを組むメリット
フレームワークの恩恵を受けずに、生の流れを制御するプログラムを記述することには、以下の具体的なメリットが存在します。
- アルゴリズム思考の定着:データベースから取得した大量のデータを、どのように繰り返し処理し、どのようにオブジェクトの形に変換してリストに格納するかという、具体的なデータ処理の手順を組み立てる力が身に付きます。
- データの構造に対する理解:データベースの1行(レコード)が、Javaの1つのオブジェクトにどのように対応しているのかを、コードの記述を通じて体感的に理解できます。
- デバッグ能力の向上:自分で書いたループ処理や条件分岐の中でデータがどのように変化していくかを追跡できるため、プログラムが意図通りに動かない原因を特定する基礎的な調査能力が養われます。
すべてのロジックを自作することのデメリット
一方で、業務においてすべての処理ロジックを自力で記述し続けることには、以下の問題が生じます。
- 記述ミスの増加:データの詰め替え処理は単純な記述が続くため、型変換の間違いや、代入する変数の取り違えといった、人為的なバグが発生しやすくなります。
- 開発速度の大幅な低下:画面を1枚増やすたびに大量の詰め替えロジックを記述しなければならず、アプリケーションの本質的な機能の実装に集中できなくなります。
- コードの保守性の悪化:開発者ごとにロジックの書き方にばらつきが生じやすく、他人が書いたプログラムの意図を読み解くのに時間がかかるようになります。
研修での苦労が実務に活きる理由
研修でデータ処理のロジックを泥臭く組み立てた経験は、将来フレームワークを導入した際に強力な武器となります。
実務でフレームワークが原因不明のエラーを起こした際や、複雑な形状のデータを扱わなければならない際、内部でどのようなループ処理やオブジェクト生成が行われているかを頭の中で再現できるようになります。ブラックボックスの向こう側を想像できるエンジニアになるために、研修期間中のロジック構築演習は欠かせない工程です。
まとめと今後の学習ステップ
JPAやMyBatisをあえて使わないのは、プログラミングの基本であるループや条件分岐を用いて、データを制御するロジックを組み立てる「基礎体力」を身に付けるためです。この基礎があって初めて、フレームワークの真の価値を理解できるようになります。
ロジック構築のスキルをさらに高めるための学習ステップを提案します。
- ステップ1:データベースから複数件のデータを取得し、while文とArrayListを使ってオブジェクトのリストに詰め替える処理を自力で記述する
- ステップ2:取得したデータの中に特定の条件(例:年齢が20歳以上など)に合致するものだけを抽出してオブジェクト化する条件分岐ロジックを追加する
- ステップ3:自分で作成したデータ詰め替えのクラスを、JPAやMyBatisなどの設定ファイルやアノテーションに置き換えてみて、フレームワークがいかに高度なロジックを代行しているかを確認する
学習ステップを順番に進めることで、どのような環境でも通用する論理的なプログラミング能力を確実に獲得できます。
セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。
投稿者プロフィール


