bepro

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開発プロジェクト ...

【RHEL系Linux】開発サーバー初期設定スクリプトの完全自動化

開発サーバーを毎回手作業で構築していませんか? SELinuxの無効化やタイムゾーンの設定、パッケージの導入など、初期構築には意外と多くの工程があります。そしてそのすべてが、設定ミスや手順漏れによって後々のトラブルにつながるリスクを抱えています。 本記事では、RHEL系Linuxを対象とした開発サーバー初期設定スクリプト init_rhel_devhost.sh の構成と設計意図を解説します。root権限で一括実行するだけで、すべての初期設定が自動で反映されるよう設計されており、再実行時にも常に同じ状態が ...

【Linuxの基礎知識】journalctlの具体的な使い方を初心者向けに解説|基本操作と活用例

Linuxでサーバを運用していると、「あの時のログ、どこにいった?」と焦る場面に必ず遭遇します。 とくにsystemdが導入されてからは、従来の /var/log/messages に頼るだけでは不十分。そんなときに威力を発揮するのが journalctl です。 本記事では、journalctl の基本操作から、実務で役立つ活用例までを初心者向けにわかりやすく解説します。 よく使うjournalctlコマンド一覧 journalctlは使いこなすことで日々の運用監視やトラブルシュートを大幅に効率化できま ...

【Javaの基礎知識】設定地獄はもう嫌!シンプルな共通ログ出力クラスを作ってみた

もう細かい設定や複雑なライブラリに振り回されたくないと思いませんか? Javaでログ出力を行うとき、多機能なOSSの導入や膨大な設定ファイル作成に時間を取られがちです。 そこで今回は、最小限の機能で即使える、自作のシンプルなログ出力クラスを紹介します。初心者から実務者まで使いやすく、開発効率を大幅に改善する実践的な内容です。 共通ログ出力クラスの概要と役割 Javaで開発を行う際にログ出力は必須の仕組みです。しかしプロジェクトによってログの実装方法は統一されておらず、ログ管理が煩雑になることがあります。 ...

【ネットワークの基礎知識】ネットワーク分離とVLANの概念:セキュリティと構成と最適化

社内ネットワークに接続されているのは、社員のパソコンだけではありません。 プリンタ、IP電話、監視カメラ、さらには来客用Wi-Fiや開発用のサーバまで、あらゆるデバイスが同じLANに存在するケースも珍しくありません。 このようにすべての通信が“ひとつのネットワーク”で混在している状態は、セキュリティの観点から非常に危険です。一度ウイルスやマルウェアが侵入すれば、社内全体に感染が広がるリスクがあります。 こうしたリスクを最小化し、ネットワーク構成を安全かつ効率的に保つための基本戦略が「ネットワーク分離」です ...

【ネットワークの基礎知識】帯域とレイテンシの理解: ネットワーク性能を支える基礎用語

ネットワークの世界では、通信速度や応答の速さを測るために、単に「速い」「遅い」といった感覚的な言葉では不十分です。 実際の現場では、帯域(Bandwidth)とレイテンシ(Latency)という2つの指標が通信品質の核心を成しています。 これらはシステムの設計やトラブルシュートにおいて必ず登場する用語であり、ネットワークの性能を正しく評価し、改善策を立てるうえで不可欠な概念です。 本記事では、この2つの用語を軸に、ネットワークパフォーマンスの基礎を徹底的に解説していきます。 ネットワーク性能を評価する基礎 ...

【ネットワークの基礎知識】無線LANと有線LANの違い: 物理層における通信手段の選択

ネットワーク通信を構成する多層の仕組みの中で、物理層は最も根本的な役割を担っています。 どれだけ高度なプロトコルやアプリケーションが構築されていても、物理的な通信手段が不安定であれば、ネットワーク全体の品質は大きく損なわれてしまいます。 特に無線LANと有線LANの選定は、パフォーマンスやセキュリティ、設置環境に大きな影響を与えるため、実務において慎重な判断が求められます。 本記事では、物理層の視点から有線と無線の構造的な違いを整理し、導入時に押さえるべき比較ポイントや実用的な選定基準について解説します。 ...

【ネットワークの基礎知識】ARPとICMPの基本操作: ネットワーク診断コマンド

ネットワークの現場では、通信トラブルの原因を迅速に特定し、効率よく対応する力が求められます。 そのために欠かせないのが、ARPとICMPという2つの基本的なプロトコルです。 ARPはIPアドレスとMACアドレスの対応関係を管理し、ICMPはネットワークの疎通状況や経路の問題を把握するための重要な役割を担っています。 この記事では、それぞれの仕組みや使い方、代表的な診断コマンドの操作方法について実践的に解説していきます。 読了後には、現場で即座に使える知識として、ネットワークの保守・運用に役立てることができ ...