Hiroshiの開発ブログ

Version 1.0.0

来年(2027年)1月から「JPIN」を受講予定

ご存知の方も多いと思いますが、プログラミング言語のJavaにはその実力を図る試験があります。Oracle認定Javaプログラマという試験です。

この受験対策で、いわゆる黒本と呼ばれる本を書いている志賀澄人さんとうい方がいらっしゃいます。

この方が主催しているJPIN(Java Programmer Internship for Night)というオンラインのプログラミングトレーニングサービスがあるのをご存知でしょうか。

毎週水曜日の夜9時から12時までの3時間、他の受講生と共にJavaのプログラミングスキルを磨くプログラムです。半年間のコースで、毎年1月から6月までの半年間と、7月から12月までの半年間開講されています。

この来年の1月から始まる第13期のコースにエントリーをする予定です(2026年12月に申し込み受付開始)。

JPINのゴールは「考える力」を持ったエンジニアになることで、そのカリキュラムは以下のようになっています(以下、https://jpin.info/より転載)
JPINでは、知識ではなく「考え方」を教えます。 3つの軸と10のトピックで構成された、6ヶ月の旅です。
3つの軸 ①なぜそう動くのかの仕組み:文法ではなく、コードが動く本質を理解する。表面ではなく、根本から問い直す力。 ②ソフトウェア設計の面白がり方:「使える」から「面白い」へ、設計を楽しむ目を養う。意図を読み解く視点。 ③良し悪しの判断基準の養い方:AIの出力を鵜呑みにせず、自分の基準で見極めるプロの判断軸。

より詳しいカリキュラムはサイト(https://jpin.info/)を参考にしていただければと思いますが、この学習スタイルは、「何事もその本質を探求したい」という私のスタイルにとてもマッチしていると思っています。

このコースを受講し、真に実力あるJavaプログラマーを目指します!


10月からの3ヶ月間は基礎力強化期間!

10月から12月までの3ヶ月間を「基礎力強化期間」と決めて、基本情報技術者試験(FE)とJavaを集中的に学んでいます。

この期間の最後にFEの受験をする予定です。

実は、今年の3月にFEを受験し、科目Aは685点で合格基準点(600点)を超えたのですが、科目Bが595点でわずかに5点足りず不合格でした。なので今回はそのリベンジです。

Javaの教材は①『スッキリわかるJava入門 第4版』と、②『スッキリわかるJava入門 実践編 第4版』の2冊。

①は何度か取り組んでいますが、細部がまだよく身についていない感があるので復習で完璧にしたいと思っています。また②にも取り組み、より実践的な技術を確実に身に着けていきます。

また、私は放送大学の学士課程に在籍しており「情報コース」で学んでいますが、今学期(後期)は実技科目にしようと思い、Pythonのプログラミングを履修しました。そのためPythonの基礎的なことも学んでいます。

この基礎力強化期間、しっかり学んで知識と技術を磨き、開発に活かしていく決意です!


「在庫管理アプリ」のPostgreSQL化に取り組んでいます

私は「サムライテラコヤ」でWebプログラミングを本格的に学び始めたのですが(プログラミングの学習自体はそれ以前にC言語を使ってやっていました。コンピュータの動作原理など低レイヤーにも関心があります)、その教材で「在庫管理アプリ」というWebアプリを作りました。

これはプログラミング言語のPHPを使って、データベースとの連携を学ぶためのものです。

Java Servletで開発を始めて最初に目指したのが、このPHP版のアプリをJava Servletで作り変えるということでした。

インプレス社刊の『スッキリわかるサーブレット&JSP 第5版』の第14章「Webアプリケーションの設計」を参考に、データベースの設計から始め、PHP版のアプリの動きだけを見て、全て自分で設計しました。その際、PHPのコードは参考にせず、全て自分の頭で考えることを大切にしました。

完成したアプリは、契約があるHerokuを使ってデプロイして公開しています。ただこのアプリで使っている「H2 Database」というデータベースでは、Herokuでの仕様上、データを永続的に保持しておくことができないのです。アプリにアクセスするたびにデータが消えてしまうため、使い勝手がよくありません。

この不具合を解消するため、データベースをHerokuでもサポートされている「PostgreSQL」に変更することにしました。

実はこの在庫管理アプリを開発したあとに「つぶやきアプリ」と「ブログアプリ」を開発し、以前に在庫管理アプリをデプロイした経験から、HerokuではH2 Databaseではデータを永続化できない問題があることが分かっていたので、これら2つのアプリは最初から「PostgreSQL」にしてました。

今回、この2つのアプリで「PostgreSQL」を使って開発した経験を元に、「H2 Database」の仕様になっているところを「PostgreSQL」にする作業をしています。

このように経験を重ねることにより、できることが増えていくことはもちろん、現在のデータベースの設定では問題があるのではないかなど、問題点にも気付けるようになってきています。

今後も学習と開発の往復作業をしながら、時代が進んでも廃れない技術の核を身に着けていきたいと思っています。


ブログアプリ「Hiroshiの開発ブログ」v1.0.0をリリースしました!

今回は完全にオリジナルのアプリということで、設計をしながら格子となる機能を中心に開発を進めました。

途中、表示機能と管理機能の分離を思いつき設定を変更。DBも3つのテーブルを連携させるなど、今までのJava Servletのアプリにはない機能を実装しました。

今後、機能を追加するなどバージョンアップを重ねていく予定です。


新しい技術・知識が身につく喜び

ブログアプリの開発を続けています。

アプリを開発すると同時に、適宜、関連技術の復習・学習をしながら進めていますが、今日、Javaの文字列をやった際に、このメソッドを使えば、こんなことができるんだ! と感慨を新たにしたという出来事がありました。

いままで素通りしてきた技術・知識でも、改めて学んでみると新鮮な驚きや感動があるものですね。「技術を身につけることは楽しい!」、この喜びを大切にしていきたいと思います。


ブログアプリの開発に着手

ブログアプリの開発に着手しました。

現在までに、Java Servletの技術を使って「在庫管理アプリ」「つぶやきアプリ」の2つを開発し、現在は、関連技術のブラッシュアップをしながら、その改善・改良に取組んでいます。

この「在庫管理アプリ」は、実は「サムライテラコヤ」というプログラミング学習サイトの教材として、過去にPHPというプログラミング言語を使って作成したものを、今回Javaの技術を使って再現したものです。

また「つぶやきアプリ」は、インプレス社の『スッキリわかるサーブレット&JSP入門 第5版』に載っているサンプルアプリを骨格として、それにPostgreSQLを導入し、Herokuでデプロイしたものです。著者の許可をいただいて改良盤として公開しています。

どちらも意図があって、このような形で開発・改良に取組んでいるものですが、現在までにJava Servletを使った完全にオリジナルなアプリというものはありませんでした。

そこで、いままでに身につけた技術を使って完全オリジナルなアプリを作りたいと思い立ち、この度、ブログアプリの開発に着手しました。

ブログアプリや掲示板アプリというと、Webアプリ開発の教材としてよく採用されているものですが、今回着手したアプリの特徴は、主に私自身のニーズに合ったものにすることを開発の目標にしている、ということです。

顧客のニーズにあったアプリを開発する訓練としての意味があります。

現在、要求分析から初め、設計を行っています。このアプリの開発の様子も、随時お伝えできればと思っています。

最初はシンプルな機能のVersion 1.0.0 をなるべく早い時期に公開し、その後、徐々に改良に取り組んでいく、というスタイルを取っていく予定です。

どうぞご期待ください!


見本と同じ見た目のCSSを作る

Java Servletの技術を使って開発している「在庫管理アプリ」。実はこれ、以前、サムライテラコヤの教材として「PHP」を使って作成したアプリの「Java版」です。

制作の基本スタンスは、元のPHPのコードを一切見ずに、同じ動きになるようにJava Servletの技術を使って再現すること。そのため、設計から始め、基本的に全部自分で考えて作りました。

しかし、見た目を同じにするために、CSSだけは元のアプリのものを流用していたんです。

CSSに苦手意識があったため、この度CSSを集中的に学習し直しました。その成果として、この度、PHP版のアプリと同じ見た目になるようなCSSを自分で作ることに成功しました。

これは、Webサイトを制作するときに、そのサイトの見本を作り(デザインカンプといいます)、その見た目のとおりにHTMLとCSSを使ってサイトを構築していく作業に似ています。

今回の作業の焦点はここにありました。「同じ見た目のものを再現する」、この技術を磨きたかったのです。

今回、この目標を達成することができたので、次はオリジナルなデザインにすることにも挑戦していこうと思います。

在庫管理アプリ(PHP版):https://hnomura-php-db-app-528f8a8a4a66.herokuapp.com/

在庫管理アプリ(Java版):https://inventory-management-servlet-ea88bf3b64ea.herokuapp.com/


私自身のこと

ただ「動けばいい」「画面に表示されればいい」というのではなく、その裏にある仕組みを理解することに興味があります。

たとえば今、Javaというプログラミング言語を使ってWebアプリケーションを作成していますが、そこにはTomcat(トムキャット)というものが出てきます。

「そもそもこのTomcatって何?」というところから私の探求は始まります。

実はこれ、Javaで書いたWebアプリケーションのプログラムを動かすために、裏でいろいろ働いてくれているソフトウェアなんです。

プログラミングを学ぶとき、最初は教材に書いてある通りにそのまま書いていく、いわゆる写経から始めるのが王道ですが、その段階から一歩進んで、その意味を理解しようとすると様々な疑問が湧いてきます。

そしてその仕組みを調べていくと、このTomcatというソフトウェアが、見えないところでたくさん仕事をしていることに気づきます。

そうすると、いま書いているプログラムの意味が分かってきて、今度は自分で考えてプログラムを組めるようになるのです。

「こう書けばこう動く」だけではなく、「なぜそう動くのか」という仕組みを理解することで、いざ動かないときには「ここが原因ではないか」と、問題の本質を特定できるように私はなりたい。いわゆる「職人技」を私は身につけたいのです。

ものごとの本質に興味があり、それを探求する、というのが私の学びのスタイル。

このスタンスで、日々学びながら気づいたこと、思ったことなどをつれづれに綴っていきたいと思っています。