ORMにはうんざり!第6回:Java共通DBアクセスクラスの実用例で脱フレームワーク
多くのエンジニアが一度は通る道、それがORM(Object-Relational Mapping)によるデータアクセスの自動化です。しかし、実際の開発現場では「ブラックボックス化してわかりにくい」「SQLが思うようにチューニングできない」「結局、素のJDBCに戻した」などの声が後を絶ちません。 本記事では、そうしたORMに限界を感じたエンジニアに向けて、フレームワークに依存しない共通DBアクセスクラス群の“実用的な使い方”をご紹介します。第6回となる今回は、MVCモデルをベースに、現場でよくあるユースケー ...
【Linuxの基礎知識】プロセス管理はもうスクリプト不要?systemdの基本と自動監視設定
「プロセスの自動起動や監視って、複雑なスクリプトを書かないと無理だと思っていませんか?」 systemdを使えば、シェルスクリプトを組まずともプロセスの自動起動・再起動・ログ管理が簡単にできるようになります。これまで cron や watch、あるいは自作スクリプトで面倒な運用をしていた方には、目からウロコの運用方法です。 私がシステム監視を覚えた時代は init.d でした。シェルスクリプトでプロセス監視を組み、ログは /var/log/messages を tail で見張っていたものです。今や sy ...
ORMにはうんざり!第5回:例外の闇を断つ、堅牢なJavaエラーハンドリングとログ設計
業務システムの開発において、例外処理とログ出力は「後回しにされがち」な存在です。しかし、実際の運用現場ではエラーが起きたときにその原因を特定できるかどうかが、システムの信頼性と復旧速度を大きく左右します。特にJavaで開発された中〜大規模な業務システムでは、ログの粒度や例外の扱い方ひとつで、障害対応の工数やトラブルの再発率が激変します。 今回の第5回では、共通データアクセスクラス群のなかでも「例外処理」と「ログ出力」にフォーカスし、どのように堅牢なエラー制御と可視化を設計すべきかを具体的に解説していきます ...
【RHEL系Linux】PostgreSQLを自動インストールするシェルスクリプトの使い方
ジョンとの共存など、多くの作業工程で人為的ミスが発生しがちです。本記事では、PostgreSQLのインストール・削除・確認を1本のシェルスクリプトで自動化する方法を解説します。 特定バージョンの導入から、複数バージョンの共存管理、不要なバージョンのアンインストールまでをスムーズに行える仕組みとなっており、現場の手作業を極力排除した再現性の高い構成になっています。 概要と目的 PostgreSQLを複数バージョンで運用している現場では、バージョンごとのポート設定や、重複インストールの防止、削除時の依存関係な ...
ORMにはうんざり!第4回:ログ出力と例外処理の共通化でJava開発効率を上げる
エンジニアであれば一度は経験するのが「どこでエラーが起きたかわからない」「ログが出ていないから原因が追えない」といった苦痛なデバッグ作業。 第4回では、そんな悩みを解消するための共通ログ出力クラスと例外処理の統一実装について詳しく解説します。 この共通DBアクセスクラス群では、あらゆるSELECT・INSERT・UPDATE・DELETE処理に対して、ログ出力と例外制御が自動で組み込まれているのが大きな特徴です。その中心を担うのが Logger、LogWriter、そして SystemException ...
【Linuxの基礎知識】tcpdumpの使い方と通信トラブルの本質的な見方
ネットワークトラブルが起きたとき、「とりあえずtcpdumpでキャプチャを取ればいい」と言う人は多いですが、実際にはtcpdumpの本質を理解せず、知識だけで“わかったふう”になっているケースが非常に多く見受けられます。 tcpdumpは単なるログ収集ツールではなく、「どこを観測するか」という視点が不可欠なツールです。対象となる通信には必ず送信側と受信側の2地点が存在し、それぞれにtcpdumpを仕掛けて比較することではじめて意味のある解析が可能になります。 それにも関わらず、1台のコンソールだけで状況を ...
【RHEL系Linux】ディスク使用率を自動監視するシェルスクリプトの実装
ディスクの使用率、気づいたときには手遅れになっていませんか? サーバー運用では、容量逼迫によるサービス停止を未然に防ぐことが重要です。 この記事では、あらかじめ定義した閾値を元にディスク使用率を自動監視し、ログに記録するシェルスクリプトの仕組みを解説します。 概要と導入の目的 ディスク容量の逼迫は、サーバー障害の中でも特に予兆を見落としやすく、サービス停止に直結するリスクを持っています。特にバックアップやログ肥大などによる想定外の使用率上昇は、事前に監視しておくことが重要です。本記事では、指定した閾値に基 ...
ORMにはうんざり!第3回:JavaでDB接続の最適化と共通プールの構築
JavaでJDBCを使ってDBアクセスを行う場合、毎回 DriverManager.getConnection() を呼び出して接続・切断を繰り返す構成をよく見かけます。 しかしこのやり方は、アプリケーションの規模や接続頻度が高くなるほど、パフォーマンスのボトルネックになっていきます。 本記事では、シリーズ第3回として、共通DBアクセスクラス内で採用している DBConnectionPoolクラス の設計と仕組みにフォーカスします。このクラスは、自前で構築した簡易的な接続プール機構を用いることで、アプリケ ...
【Linuxの基礎知識】Linuxでログ肥大を防ぐlogrotateの基本と自作アプリ対応法
Linuxで運用中のシステムや自作アプリにおいて、ログファイルが肥大化するとディスク圧迫や解析遅延などの問題が発生します。 本記事では、ログローテート機構であるlogrotateの仕組みと設定方法を整理し、システム標準のログだけでなく、自作アプリケーションのログも安全に管理するための実践的な構成例を紹介します。 logrotateの役割と仕組み Linuxを運用していると、ログファイルが時間とともに肥大化し、ディスク容量を圧迫したり、解析に時間がかかるといった問題が発生します。特にWebサーバやアプリケー ...
【RHEL系Linux】信頼性を重視した完了保証型ディレクトリ転送スクリプトの設計と実装
このページでは、シェルスクリプトを使って、ディレクトリ単位での安全なデータ転送を自動化する方法を解説します。 rsyncによる完全転送とmvによるアトミックなリネーム処理を組み合わせることで、処理の中断や重複転送、破壊的な上書きを防ぐ設計になっています。 ファイル単位の転送とは異なり、ディレクトリ構造を丸ごと扱うことで、業務システムのバックアップや中継処理にも柔軟に対応可能です。設計思想から具体的な実装、活用例まで、現場で役立つポイントを整理してお届けします。 ディレクトリ転送の自動化が必要な背景 サーバ ...
ORMにはうんざり!第2回:共通DBアクセスクラスでSQLを直感的に操作するJava設計
エンジニアとしてJavaでのデータベース連携を行う中で、「設定が多すぎる」「構造が複雑すぎる」といったORM(Object-Relational Mapping)への不満を感じたことはありませんか? 実際、HibernateやJPAのようなライブラリは便利である一方、ちょっとしたDB操作にも大量のアノテーションや設定ファイルが必要になるケースが多く、プロジェクトが肥大化する原因にもなりかねません。 そこで私たちは、あえてORMを使わず、SQLを直接制御できる共通DBアクセスクラス群を独自に設計しました。目 ...
【RHEL系Linux】中間ファイル連携を完全制御するファイル転送スクリプト
夜間バッチや月次処理など、業務で定期的にファイルを受け渡すシーンでは、単純なコピーや移動では不十分なことが多々あります。特に複数プロセス間でのファイル衝突や、処理タイミングのズレによる誤動作、転送失敗によるデータ欠損などは、現場でよくある問題です。今回ご紹介する「ファイル連携スクリプト」は、そうした問題を根本的に回避しつつ、安全に中間ファイルを受け渡すための実用的なシェルスクリプトです。 JP1などのジョブ管理ツールと組み合わせて動作させることも可能で、.finや.endといった制御ファイルによる状態監視 ...
ORMにはうんざり!第1回:シンプルなJava DBアクセスクラスを考えてみた
ORMや巨大なDBアクセスクラスに、正直うんざりしていませんか? カラムを1つ追加するだけで、エンティティ、DTO、マッピング、設定ファイル……と何か所も修正が必要になる今のDBアクセス構造に限界を感じている人も多いはずです。 「もっと簡単に、それでいて本番でも使えるDBアクセスクラスは作れないのか?」という疑問から、今回、設定不要・高汎用性・保守性重視のシンプルなクラス構造を実装しました。 エンジニアとして複数の現場でORMを使ってきましたが、「設定の複雑さ」「動作の見えづらさ」に対する違和感はずっと抱 ...
【RHEL系Linux】リソース(CPU・MEM)監視スクリプトで使用率・異常を検知する仕組み
「サーバーが重くなった原因、すぐに気づけますか?」 定期的なCPUやメモリの使用率チェックを怠ると、いざという時にボトルネックを特定できず、障害対応が後手になります。 本記事では、RHEL系Linux環境で動作する軽量な監視スクリプトを使い、CPU・メモリの使用率を自動で監視し、異常をログで通知する仕組みを紹介します。 「ZabbixやPrometheusは大げさすぎる…」と感じている方にこそ、最小構成で始められる本スクリプトは最適です。 スクリプトの目的と特徴 システム運用において、リソース使用率の監視 ...
ApacheとTomcatをmod_proxyでつなぐ方法(AJP/HTTP対応)
ApacheでSSL通信を終端し、Tomcatへリクエストを中継する構成は、Javaアプリケーションの公開環境では一般的なパターンです。本記事では、Apacheのmod_proxy機能を使ってTomcatと連携する方法を、AJP方式とHTTP方式の両面から解説します。 単にファイルを配置して起動するだけでは連携できず、VirtualHostやserver.xmlの記述方法、ポートバインディング、モジュールの有効化、セキュリティ面の考慮が必要です。特に、Let's EncryptでHTTPS化したApach ...
【RHEL系Linux】ファイルやログを自動圧縮する汎用スクリプトの実装と活用法
システムの開発や検証を進めていく中で、ログや一時ファイルが大量に蓄積されていくのが常でした。手動での圧縮や削除は時間の無駄であり、運用中のタスクに組み込むにはある程度汎用性と安全性を備えたスクリプトが必要だと感じていました。 そこで、自分の開発環境で実際に使うことを前提に、任意のファイルやディレクトリを自動的に圧縮し、必要に応じて削除まで行う汎用スクリプトを作成しました。 この記事では、そのスクリプトの構成や設計方針、実行方法までを具体的に解説していきます。 自動圧縮スクリプトの概要と役割 日々の開発作業 ...
【RHEL系Linux】任意サービスを簡単制御!汎用サービススクリプトの活用術
RHEL系Linuxで複数のサービスを管理していると、systemctlコマンドによる起動・停止の操作を何度も繰り返す場面が出てきます。Apache(httpd)やSSH、chronyd、PostgreSQLなど、制御対象が増えるほど入力作業が煩雑になり、運用ミスや確認漏れの原因にもなります。 今回紹介する「サービス制御スクリプト(manage_service.sh)」は、そんな日常の繰り返し作業を一元化・簡略化するために開発した汎用スクリプトです。-s でサービス名、-c で操作コマンドを指定するだけで ...
AI情報時代における個人ブログの価値・未来 ― 声が届かない死の世界
検索結果から本当に知りたい情報が見つからないと思ったことはありませんか? AIによる要約や自動生成が当たり前になった現在、検索に表示されるのは結論や形式の整った答えばかりです。なぜその内容に至ったのか、どのような前提や比較があったのかといった情報は、意図的に排除されつつあります。 こうした構造が進めば、情報の供給者が減少し、やがて検索やAIそのものの基盤が崩れていく可能性があります。 本記事では、この構造的変化と、それに対して発信者が取りうる立場について検討します。 AIが検索を支配する時代の構造的問題 ...
【RHEL系Linux】Tomcatを自動インストール・設定するスクリプトの作成と活用法
Tomcatは、JavaベースのWebアプリケーションサーバーで、特に中小規模のWebアプリケーションやサービスの実行に広く使用されています。大規模な環境では、Ansibleのようなツールを使って自動化するのが一般的ですが、私のような小規模の開発環境では、Ansibleを使用する必要もなく、手動で設定作業を行うことが多いです。そのため、開発環境の構築や設定を行う際、手間や時間が多くかかり、効率的に作業を進めることができません。 そのため、Tomcatのインストールと設定を自動化するスクリプトを作成しました ...
【RHEL系Linux】Apache+Let's Encrypt 自動構築スクリプト|バーチャルホスト対応・完全自動化ツール
開発用途のApache構成に毎回手間を感じていませんか? このスクリプトは、RHEL系LinuxにおけるApache(httpd)のインストールから設定変更、プロセスチューニング、バーチャルホストの設定までを一括で自動化します。 特に、複数プロジェクトをホストする前提でバーチャルホストの雛形も用意されており、再実行しても冪等性を保ちつつ、構築作業のブレをなくします。 この一連の処理により、Webサーバーの標準構築を高速・安定化し、構築担当者のミスを排除する環境を実現できます。 今後、Web開発プロジェクト ...