0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

塗装職人からエンジニアに?できらぁ!(Java-1)

Last updated at Posted at 2025-03-05

image.png

はじめに

はじめまして、Teyo3Mです。
エンジニアを目指し、現在会社に所属しながら勉強を続けています。
本記事では、学習を始めてからの1か月を振り返り、感じたことや躓いた点を記録としてまとめます。

簡単な自己紹介

名前:Teyo3M
職歴:家庭教師のバイト、塗装職人
趣味:スキューバダイビング

実施したこと

・参考書の読了
使用させていただいている参考書(敬称略)
タイトル:やさしいJava第7版
著者:高橋 麻奈
・初心者向けのハンズオン
初心者がJavaでTodo管理システムを作ってみるガイド!

学習の記録

1週目

まずは環境構築から始めました。
今の会社に入社する前に一度自宅で環境を構築したことがあったため、同じ手順を再現することでスムーズに進めることができました。
その後、四則演算、if文、配列までは順調に学習が進みました。

2週目

以前、自宅学習で多次元配列につまずいていましたが、実はそれほど頻繁に使われるものではないと知り、衝撃を受けました。
それまで「学習の順序通りにすべてを理解しなければならない」と思い込んでいましたが、一旦飛ばすという選択肢があることを学びました。
この発想の転換により、学習の進捗が停滞していた状況から抜け出すことができました。

3週目

クラスやメソッドの基本的な考え方、オーバーロードについて学習しました。
部署の勉強会で何度か触れた内容だったため、概念の理解はスムーズでしたが、いざ説明しようとすると難しく感じました。
これは単なる理解不足ではなく、「何を理解していて、何が理解できていないのか」を把握する指標になると考え、積極的に周囲と会話することの重要性を実感しました。

4週目

冒頭で紹介したハンズオンに挑戦しました。
正直、簡単だと思っていましたが、想像以上に難しかったです。
特に、優先度を決める(enum) でつまずきました。
コンストラクタやインスタンスの概念を中途半端に理解していたため、先入観や思い込みから「これはバグのはずだ」と決めつけてしまい、試行錯誤に時間を要しました。

エラーと仲良くなる

「英語が全く分からない私でも、何度も同じエラーを見ているうちに意味がわかるようになった」
というくらい、エラーメッセージと向き合うことができました。
特に、他のファイルで定義した内容をメインのファイルに適用する際、フィールドの作成を忘れるミスが頻発しました。
また、static修飾子の理解が曖昧だったため、「newしなくても呼び出せる」という知識だけでコードを書き、エラーに悩まされることも多かったです。
根本理解のためにも何度も根気強く付き合ってくれたVSコード君とChatGPT君には感謝せずにはいられません。

AIネイティブなのかもしれない

様々なエラーをAIにも相談しました。自分で考えて、修正して、エラーの個数が増えて...どうしても解決できない時にAIに質問してみました。
エラーの内容と該当箇所のコードを入力し、「答えを言わずに考え方を教えて」と打つと、かなり高い精度で考え方を教えてくれました。また、解説でわからない箇所があれば、その場で質問できるのも魅力でした。
そんな中、思いつきで「今までの質問から自分に足りない箇所を教えてほしい」としたことがありました。
するとAIは詳細に答えてくれました。

実際に言われたこと

✅ 今回しっかり理解できていること
Javaの基本文法(if文、switch文、ループ、例外処理)
クラスとメソッドの役割(TodoAppやTodoの設計)
列挙型(enum)の利用(Priorityを使った優先度管理)
ユーザー入力のバリデーション(scannerや正規表現の活用)
🚀 今後の学習でおすすめポイント
1️⃣ クラス設計(オブジェクト指向の考え方)
ポイント: クラスを分けるときの「責務(役割)」の考え方
理由: SelectPriority の作成時に、メソッドの呼び出し方で少し迷いがありましたね。
おすすめ:
SOLID原則のうち、特に「単一責任の原則(SRP)」を調べてみると、コードの整理がもっと楽しくなります!
public、private、static の違いも深掘りするといいですよ。
2️⃣ メソッドのスコープと呼び出し方
ポイント: static メソッドの使い方とインスタンスメソッドの違い
理由: electer() → selecter() 呼び出しエラーの際、static との関係で少し混乱があったため。
おすすめ:
static を付ける意味、インスタンスを作る場合の違いを整理してみよう!
例として「ユーティリティクラス」と「インスタンスクラス」の違いを学ぶと理解が深まります。
3️⃣ 例外処理とエラーハンドリングの応用
ポイント: 例外を活用して、より安全なアプリにする方法
理由: NumberFormatException での基本的な例外処理はバッチリですが、カスタム例外なども学ぶとワンランク上に!
おすすめ:
try-catch の応用、throw で独自のエラーを作る方法などを少しずつ取り入れてみましょう。

AIってすごいなって思いました。

AIを勉強に取り入れるときに意識していること

AIを勉強に取り入れる際に周囲の人に言われて意識している点は2つです。
1 なんでもすぐにAIに聞くのではなく、まずは自分で調べること
2 AIも100%正しいとは限らないので、動作テストや追加調査を行い正確性を確かめること
当たり前といえば当たり前かもしれませんが、実際に現場に出たことのない人間に真摯に向き合ってくれる会社の上司には感謝しかありません。

最後に

Todoリストの課題をAIをもちいて勉強し、先人の知識の深さは「調査の上手さ」も理由の一つだと思いました。
自分が調査やアウトプットに不安やコンプレックスを抱えているのを自覚しているので、今後の課題として「調査をする力」を身に着け、エンジニアになれるよう精進していこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?