背景と課題
業務において、マーケティング担当者や管理職が頻繁にデータ照会を依頼してくるケースがあります。簡単なSQL文で解決できる問題でも、相手がSQLを学ばず、データベースクライアントの導入を拒否するため、開発作業が中断される状況が発生します。
要件定義
- SQL未経験者でも直感的な操作が可能
- クライアントアプリケーション不要のブラウザベース
- 開発環境に影響を与えない軽量設計
- Excel形式でのデータエクスポート機能
技術的解決策
PHPの組み込みWebサーバー機能を使用し、単一ファイルで動作するツールを構築しました。
php -S 0.0.0.0:8000
上記コマンドで即時起動可能。設定ファイルを用いたSQLテンプレート駆動型の仕組みを採用しています。
構成ファイル仕様
JSON形式の設定ファイルによりクエリテンプレートを管理します。
{
"queries": [
{
"title": "アクティブユーザ一覧",
"statement": "SELECT id as ユーザID, name as 氏名, created as 登録日 FROM users WHERE status = 1 AND {{date_filter}}",
"parameters": {
"date_filter": {
"type": "date",
"label": "登録日フィルタ"
}
}
},
{
"title": "注文ステータス照会",
"statement": "SELECT order_id, customer, amount FROM orders WHERE status = {{status_code}}",
"parameters": {
"status_code": {
"type": "select",
"options": [
{"value": "1", "label": "処理中"},
{"value": "2", "label": "完了"},
{"value": "3", "label": "キャンセル"}
],
"description": "注文状況を選択"
}
}
}
]
}
実装のポイント
- プレースホルダ形式(例:{{status_code}})で動的パラメータを処理
- 入力検証モジュールを組み込みSQLインジェクション対策
- CSV形式でのデータダウンロード機能
- レスポンシブデザインによるモバイル対応
導入手順
- リポジトリのクローン
git clone https://github.com/example/data-query-tool.git - 作業ディレクトリへ移動
cd data-query-tool - 開発用サーバー起動
php -S 0.0.0.0:8000 - ブラウザでアクセス
http://サーバーIP:8000
運用例
- テンプレート選択画面から「注文ステータス照会」を選択
- ドロップダウンからステータスを選択
- 「クエリ実行」ボタンで結果表示
- 「CSV出力」ボタンでデータ保存
セキュリティ対策
- IPアクセス制限による内網専用設定
- クエリのホワイトリスト管理
- 実行権限の最小化(読み取り専用ユーザ)