未経験Javaエンジニア転職の記録

20代転職未経験エンジニア

51日目 学ぶ環境

tymeleafの、th:fieldタグに苦しめられた一日だった。

既存値を更新するプログラム作成にて、tymeleafで値を渡して、その値を更新しようと、入力欄を変えたり、valueを変えたり色々したが、どれも弾かれ、値が更新されない問題に当たった。

講師の方に聞いてみると、
th:field属性をつけたタグは、その親のFormクラスの値以外を受け付けないという仕様があるようだ。

だから、そのタグのついたフィールド値を操作しようとしても、できなかったわけだ。

その解決策として、th:fieldでFormクラスのフィールドを指定するのではなく、name属性でそのフィールドを指定することで、操作が可能になる。

こういったニッチな問題については、ネットで調べてもなかなか解決策が見つからない。

そもそも値の受け渡しを邪魔している箇所も特定できていない。

そういったときに、経緯と目的を伝えた上で問題箇所を相談できる、というのはとてつもなくありがたい。

一度詰まってしまったら、そこで挫折。

ということに独学では十分になりかねない。

質問できる環境で学ぶことがやはり重要だ。

だから数十万円出してでもプログラミングスクールに通う方がいるのだ。

50日目 SpringBootゾーン

フレームワークの便利さが分かってきた。

最初SpringBootを触ったときは、

こんなん使わないで、普通に作ったほうがいいじゃん!

なんて思っていたが、SpringBootに慣れてくると、考えがガラリと変わった。

めっちゃ便利。
すげー楽。

インスタンス化はもちろん、DBとの連携も少ない記述でできる。

フレームワークすごい!!

便利に使うためのフレームワークなのだから当たり前にだろ?
って思われるだろうが、未経験エンジニアにとっては、大変な試練だった。

フレームワークを使いこなせることで、出来ることの幅がグンと広がった感じがする。

いろんなシステムを作ってみたい!
とまで思う。

毎日少しずつ出来ることが増えている。
本当に転職してよかったと常々思う。

49日目 SpringBoot編

今日一日、セレクトボックスの連動させる機能作っていたが、なんとか完成した。

WEBページでは何でもない小さな部品だがら、それを作るのには本当に苦労することが分かった。
最近はサイトを見た際、微妙な連動とか、効果とかを見かけると、何故か吐きそうになる。

作る側の気持ちが分かると、この便利なIT社会のありがたみを切に感じる。

当たり前に動くっていうことは、とてつもなく凄いことなんだよなあ。

進捗はそれほど良くないが、切りよく終われたし、達成感でいっぱいだ!

できなかった事ができるようになるってホントに楽しい!

明日も頑張ろう!

48日目 SpringBoot編

引き続きSpringBootを使ってシステムを構築する課題に取り組んでいる。

 

全体的な流れはつかめてきているが、

FormとEntityの使い分けについてはまだピンと来ていない。

 

講師によると、

EntityはあくまでSQLとつながっているもので、画面に出力などする際はFormに値を移し替えるのが基本。

だそうだ。

 

ServiceクラスでSelect文を使う際の戻り値はEntityであるが、それをFormクラスを持つListに書き換えやったところ、なんかうまくいかない。

 

Repositoryが見つかりません、みたいなエラーが出る。

 

とりあえずEntityでDBからデータを取得し、その中でほしいデータを保持するためのFormクラスを作る。

というような感じでやっているが、コードが冗長でひどい。

 

自分で見返すのもしたくないほどだから、講師の方のコードチェックは骨が折れるだろうな。

 

本当にありがたい。

47日目 ログイン認証つづき

SpringBootでのログイン機能を作成した。

ユーザーに権限を与え、管理者がログインした際には管理ボタンを表示させ、権限のないユーザーならボタンは非表示もする。

最初のページでなら、th:if属性で権限があるなら表示と変数を使い操作できるのだが、ページを遷移すると、最初に利用したFormクラスの値が初期化されてしまうため、th:if属性内で利用した変数がnullとなりエラーになってしまう。

ここの解決にじかんがかかってしまった。
Beanを使い無理くりやっていたが、行き詰まったので、講師に聞くと、その最初のFormクラスをSessionで保持しなさい、とのご指導を頂いた。

だよね、との感想。
そこからが長った。

調べれば色々情報が出てくるのだが、どれも難しく理解がなかなかできなかった。
というより、今も微妙だが。

保持用のFormクラスにSessionscopeのアノテーションをつけることで、値が保持される。

それをページ遷移ごとにControllerないで、model.addAttributeして、なんとかエラーは出なくなった。

より簡素でスマートなやり方があるのだろうが、ひとまず先に進めることができた。

講師からのレビューが来るのが怖いところだが。

46日目 ログイン認証

やっとテスト項目書の作成が終わり、実装に入った。

SpringBootでのログイン画面の作成を行った。

ログイン認証のやり方について、メモを残そうと思う。

予めデータベースにはユーザーのIDとパスワードは登録しておくこととする。

SELECTでユーザーテーブルから情報をリクエストする際のWHERE句で、入力されたIDとパスワードを設定する。

もし、データベースに登録されている、つまり完飲登録がされているユーザーなら、そのSELECT文でデータが取得でき、登録がなければ、データは取得できていない。

SELECTメソッドの返り値はENTITY型のListなので、
if(list !=null){
 ログイン成功
} else { ~
 ログイン失敗

というように、ログイン画面の入力値で認証ができる。

SpringBootも慣れてきて、意外と動かせることに自分が1番驚いている。

日々、少しずつできることが増えてくる。
こんな楽しいことはない!

45日目 テスト業務

システム作成に向け、テスト項目書を作っている。

あらゆる組み合わせを想定しているうちに、詳細な仕様や、組み立てのイメージが湧いてきて、実際にプログラミングする際の苦労さが想像できる。

普段コードで書いている処理を、言語化、それもシステムに詳しくない人が見ても、テストできるように作成することに難しさを感じている。

これまでもシステムは作ってきたが、ここまでエラーを想定したことはなかったかな。

講師に指摘されると、たしかにその組み合わせの可能性もあるな、たしかにそれならエラーになるな、と気が付かない点も多かった。

そして、テスト項目が増えてくると同時に、そのシステム全体の形というか、仕様が掴めてくる。

普段当たり前のように使用しているアプリケーションにはバグがないのが基本だが、そのバグ取りは相当な労力がかかる。

テスト業務はブラックだとか、あまり良くないネット記事が多くあるが、必要不可欠な業務であり、地味だが重要な仕事だ。

まずはITに触れることから、
の研修後の未経験エンジニアなら、多くの学びがあると思う。

そういった業務を頂いたなら、全力でやりたいものだ。