最近のプログラミング進捗

最近React Hooksもちょっぴり勉強したし、React Hooks x Reduxもちょっと触ったので満足し、
絶対そのうち戻ろうと思っていたJavaの勉強を再開。

去年オブジェクト指向が分からなくて、本一冊を三回も四回も通して勉強してなんとなく分かるようにはなったけど、
そのあとのServletの勉強も一回本をやって、とりあえず出来たから放置してたし、
一応プログラムはちょっとかけるけど、応用編が何も分からないままだった。

本当はJavaじゃなくて、node.jsの勉強をやるるもりだったんだけど、
node.jsって本当にJSの延長で、JSってTypescriptでもない限り型を意識しなくていいし、Javaみたいに配列はインデックス指定しないと中身をコンソールで見れない、
みたいなこともなくて、本当に便利な反面、node.jsみたいなサーバーサイドになると、なんかわかんなくても動く状態が本当に気持ち悪かった。

JSは初心者には簡単だけど、そこからJavaに戻るとやっぱりキツイ。

JSみたく自分が中身を知らなくても使えるインターフェースやクラスAPIやいっぱいあるけど、
それでもJSみたいにとりあえずこの構文を書いておけば使えちゃうよ、みたいな初心者にも優しくカバーされてる感じじゃなくて、
それこそ中身は知らなくても使い方と何が起きているのかぐらいはちゃんと理解しとかないと、全然動いてくれない。

今回は一通りサーブレットの勉強をした後で、自分でWebアプリを作ってみることにした。
適当なログイン画面(パスワードだけ特定の文字列と合ってればログインできる適当さ)と、
メイン画面を作って、そこでTodoアプリとつぶやきアプリ、ショッピングアプリを作成。

ここまで作ってようやくいわゆるJSでさくっと実現できていたセッション変数とか、post、getの仕組みをJavaでまあまあ理解する。

ちなみにnode.jsではやってないからわかんないけど、Javaだとこのセッション変数のもっと大きい範囲であるアプリケーション変数(一つのアプリケーションが開始から終了するまで保持できるメモリ的な)
が使えてすっごく便利。

ただ、このアプリケーション変数?がServletContextなるものなのだが、ググってもそれとなりが全然理解できない...

とりあえず昨日までにH2 databaseと接続するところまでいったんだけど、ここで去年は出来たコードが今年は動かない...

というのも、まずH2と接続するのにJDBCドライバーをH2のホームページからダウンロードしないといけないんだけど、
なぜかダウンロード先ページがエラーで表示されない。。

適当なサイトで見つけたそれらしきjarファイルをDLしてみたけど、クラスが見つかりませんエラーではじかれる。
(後で分かったんだけど、ここでClass.forName(クラス名)、でjarファイル内のクラスを指定するのだが、古いクラス名がかかれていたりすると、結果取得できないっぽい)

どっちにしても、自分でアプリを作るならよく分からないH2とかじゃなくてポスグレとかでやるだろうから、
ポスグレでやる方法をググってみたのだが、全然実行できるようなソースが見つからない。

ビルドパスにちゃんとJavaのverに合ってるjarファイル指定してるのに。
多分呼び出してるクラス名が古いから、jarファイル内にそのクラスが見つからない、と言われているらしかった。

にしても、こういうDAO系のソースはver変わるごとに動かせるソースも変わるんだろうが、JS系だと人気だからか新しいソースもいっぱい見つかるけど、
Javaはそれに比べるとやっぱり発信してる人も少ないし、なかなかネット検索が大変だったりしてめんどくさい。

大学時代のことを思い出す、英文学科だったが、参考文献が少ない作家・作品の論文を書くのはめちゃくちゃ難しいし、推奨もされていない。のと同じだ。

とりあえずローカルでJavaからローカルのSQLサーバーに接続するのは成功したので、次はサーバ上でこれが実現できるようにする予定。

最近ようやくプログラミングが楽しくなってきた。

最初は苦手な数学を勉強してるときがごとく、出来なくて辛いけど出来ないのが悔しいからとりあえず頑張る...って心意気だったし、
メンターさんにはプログラミングそのものよりも、プログラマーのマインドとか、勉強法ばっかり質問してたのに。

とにかくだんだんJavaも分かるようになってきて楽しくなってきたので、入社当時に訳も分からず作らされた先輩のプログラムを見直してる。

いまは、先輩の経歴を見て、自分がプログラマーとしてどの辺のレベルにいるのかを思い知らされてへこんでるところ。頑張る。

この記事が気に入ったらサポートをしてみませんか?