見出し画像

#2 Javaプログラミングデザイン考1

エンジニアとして長いキャリアを積んできた中で、最も付き合いの長いプログラミング言語であるJavaについて色々と考えるところがあり、ここに纏めてみたいと思います。

Javaとは

この記事に興味を持ってページを開いてくれた人に今さらJavaとは何ぞやなど述べるのは釈迦に説法というものでしょうが、自分自身も含め「おさらい」ということで書いてみます。

Javaは、1996年にSun Microsystems社が市場にリリースしたプログラミング言語で、現在はOracle社がその版権を持っています。特徴としては、OSに依存しないマルチプラットフォームであること、オブジェクト指向言語であることなどがあげられます。私が最初にJavaに取り組んだのはJ2SE1.2の頃で、もう20年以上前になってしまいました。
Javaが登場した当初は、「ホームページ言語」などと言われ、主にWebサイトなどに使われることが多く、私もポータルサイトの構築にいくつも従事した記憶があります。2000年代に入ってからは大規模システムの構築には欠かせない言語となって、プログラミング言語の中では巨頭の地位を占めていたように感じました。

現在のJavaを取り巻く環境(私感)

今現在は、フロントに関しては JavaScript が席捲し、Java の後発で登場したWebページに特化した言語の地位を確立すると思われた PHP も飲み込む勢いとなっており、フロント側で Java が占める場所はほぼ無くなったかなという印象を持っています。私がJavaScriptを触っていた頃は、画面上でのアクセント付け程度のことにしか使われておらず、昨今の JavaScript の隆盛は、当時は刺身のツマぐらいの扱いだったものが知らぬ間に船盛りになって襲来してきたというぐらいの驚きを感じています。
しかし、バックエンドに回るとどうか。まだまだ Java は主流の言語として存在感を示しており、国内で取り扱われる案件では スキル要件として Java のフレームワークである Spring Boot の使用経験というのを数多く目にすることができますね。Javaが斜陽となる日はまだまだ先のようです。

現在の Java システムが抱える問題点(私感)

登場から25年を経た Java ですが、顧客やプロジェクトの性質に寄るところが大きいとは思うものの、システムのリプレースを迎えるまでは次のような問題点を抱えている現場は非常に多いというのが私が長年感じている印象です。これらは Java に限ったことではありませんが、記述に自由度のあるプログラミング言語では同様の問題を抱えていることが容易に想像できます。
ここでは、要件追加の発生などでプログラムに何度も繰り返し手が加えられた Java システムの問題点について考察していきます。

  • 最初に構築したプログラム構造を超えるボリュームにシステムが肥大化した、または当初の見積もりが甘く、度重なる要件追加に耐えうる構造にしなかった結果、プログラム構造の崩壊を招いた。

  • 繁忙であったことを理由に、設計書や仕様書の改版を怠り、どういう要件で実装、改修したのか不明なプログラムが存在する。

  • 同様に、プログラム中のコメントの編集がおろそかになった結果、コメントの内容とプログラムとの間に乖離がある(いわゆる嘘コメント)。

  • 一人のメンバーが参照するプログラムのスコープが狭く、それを補完するためのドキュメントも整備されていないため、酷似するプログラムが量産されあちこちに散在している。

  • コーディングの統一フォーマットがなく、統合開発環境の自動フォーマットも利用されていない(知らないが正解かも)ため、書き方のクセが機能ごとにありメンテナンス効率に地味なダメージを与える。

書き出せばキリがありませんが、Javaは自由度が保証されており、プログラミング初心者であっても既存のものを真似て制作することがある程度可能なため、その反面いわゆる「プログラムが汚い」という状態におちいりやすいという欠点かあります。

ではどうやって経年劣化したプログラム群を綺麗に仕分け、メンテナンス効率のよくなる土壌に復活させるのか。
それについては細かい事例に分け、これまでの経験則から導きだした解決方法を次回より解説していきたいと思います。

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