序文
SQLVantage レポートシステム利用説明書(日本語)
適用バージョン:v1.0.2(2026-07-15 リリース) 本書は SQLVantage の完全な使用マニュアルです。「インストールとデプロイ」「設定について」「管理者ガイド」「レポート設計ガイド」「一般ユーザーガイド」の 5 つの章で構成されており、管理者と一般ユーザーはそれぞれ必要な部分を参照できます。
目次
1. システム概要
1.1 これは何か
SQLVantage は Web レポートシステムです。「管理者」がレポート定義を保守し、「一般ユーザー」が Web ページでレポートを選択して検索条件を入力し、非同期で結果を取得して Excel / HTML / JSON / TEXT をエクスポートします。
1.2 技術スタック
本システムは純 Web アーキテクチャです。ブラウザ側ではクライアントやプラグインのインストールは不要で、モダンブラウザでアクセスできます。サーバー側は実行可能プログラムとその付属の設定ディレクトリがあれば動作するため、デプロイは簡単です。
1.3 コア概念
| 概念 | 説明 |
|---|---|
| レポート(Report) | 1 つのレポート = SQL + FORM + HTML の 3 つのコード部分 + 3 つのフォーマット JSON(SqlFormat / FormFormat / HtmlFormat)。いずれかの「職責」に所属します |
| 職責(Responsibility) | レポートの分類ディレクトリ。Oracle EBS の職責に対応し、レポートをモジュールごとにグループ化してユーザーに表示します |
| パラメータ(Parameter) | FORM で定義する検索条件(例:日付、顧客、組織など)。送信後、名前付きパラメータとして SQL にバインドされます |
| リクエスト(Request) | 一般ユーザーによる 1 回の具体的なレポート実行タスク。システムのバックグラウンドで非同期実行され、結果ファイルが生成されます |
| ライセンス(License) | レポート数と利用期限を制御するライセンスファイル conf/license.dat |
1.4 ユーザー役割
| 役割 | 入口 | 権限 |
|---|---|---|
| 管理者(admin) | /admin/login |
ユーザー管理、職責管理、レポート管理、ライセンスインポート、システム設定、全リクエストの監視 |
| 一般ユーザー(normal) | /login |
レポート選択、パラメータ入力、リクエスト送信、自分のリクエスト確認、結果ダウンロード、パスワード変更 |
1.5 ディレクトリ構成
リリースパッケージを解凍した後の主要ファイル:
SQLVantage/
├── SQLVantage.exe / sqlvantage # メインプログラム(Windows / Linux)
├── conf/
│ ├── app.conf # システム設定ファイル(ポート/言語/Oracle など)
│ ├── data.dat # 業務データベース(ユーザー/職責/レポート/リクエスト)
│ ├── license.dat # ライセンスファイル
│ └── locale/ # 言語パック
├── data/ # 実行時に生成:<リクエストID>.xlsx / <リクエストID>.json
├── docs/ # 使用ドキュメント(多言語、images/ を含む)
└── tmp/ # 一時ファイル(セッション、タスク)
2. インストールとデプロイ(Windows / Linux)
2.1 環境要件
- OS:Windows 7+ / 64 ビット Linux(x86_64)
- 実行方法(推奨):公開済みの実行ファイル(
SQLVantage.exeまたは Linux バイナリ)を直接使用します。ランタイムのインストールは不要です - Oracle データベース:レポート実行には Oracle への接続が必要です(本システムはデフォルトで Oracle EBS に接続)。ネットワークとアカウントを事前に確認してください
- ディスク/ディレクトリ権限:プログラムの実行ディレクトリには書き込み権限が必要です。実行時に
data/、tmp/ディレクトリが生成され、conf/配下のファイルが読み書きされるためです
2.2 Windows プラットフォームへのインストール
-
解凍:リリースパッケージ(zip)を任意のディレクトリに解凍します。例:
D:\SQLVantage\。解凍後、以下の主要ファイルが存在することを確認してください:D:\SQLVantage\ ├── SQLVantage.exe # メインプログラム ├── conf\app.conf # 設定ファイル ├── conf\data.dat # データベース(パッケージに同梱の空データベース) └── conf\locale\ # 言語パック -
(任意)設定の変更:メモ帳で
conf\app.confを開き、第 3 章 に従ってリッスンアドレス、ポート、Oracle 接続などを変更します。 -
プログラムの起動:
SQLVantage.exeをダブルクリックするか、コマンドラインで実行します:cd D:\SQLVantage SQLVantage.exe起動に成功すると、コンソールにバージョン情報とライセンス状態が表示され、リッスン状態に入ります。
-
システムへのアクセス:ブラウザで
http://127.0.0.1:8080を開きます(デフォルトアドレス。app.confで変更可能)。 -
ファイアウォール設定:LAN/リモートアクセスが必要な場合は、Windows ファイアウォールで対応するポート(例:8080)を開放します:
netsh advfirewall firewall add rule name="SQLVantage" dir=in action=allow protocol=TCP localport=8080
2.3 Linux プラットフォームへのインストール
-
解凍:リリースパッケージ(tar.gz または zip)を目的のディレクトリに解凍します。例:
/opt/sqlvantage:mkdir -p /opt/sqlvantage tar -xzf sqlvantage-linux-amd64.tar.gz -C /opt/sqlvantage cd /opt/sqlvantage -
実行権限の付与:
chmod +x sqlvantage -
(任意)設定の変更:
conf/app.confを編集します(Windows と同じ)。 -
フォアグラウンド起動テスト:
./sqlvantageバージョン情報とリッスンログが表示されれば起動成功です。
Ctrl+Cで停止します。 -
バックグラウンド実行(systemd または nohup を推奨):
方式 A:nohup
cd /opt/sqlvantage nohup ./sqlvantage > sqlvantage.log 2>&1 &方式 B:systemd(
/etc/systemd/system/sqlvantage.serviceを作成):[Unit] Description=SQLVantage Report System After=network.target [Service] WorkingDirectory=/opt/sqlvantage ExecStart=/opt/sqlvantage/sqlvantage Restart=always RestartSec=5 User=sqlvantage [Install] WantedBy=multi-user.targetその後、以下を実行します:
systemctl daemon-reload systemctl enable sqlvantage systemctl start sqlvantage systemctl status sqlvantage -
ファイアウォール / セキュリティグループ:ポート(例:8080)を開放します:
firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload
2.4 ソースコードからのコンパイル(任意)
ソースコードを入手したユーザーのみ:ソースコードディレクトリで go build を実行すると、現在のプラットフォーム用の実行ファイルが生成されます。本番環境では公式配布の実行ファイルを直接使用することを推奨します。
2.5 初回起動
初回起動時にシステムは自動的に以下の初期化を実行します:
- データファイルのチェック:
conf/data.datを読み込みます(パッケージに同梱されています。存在しない場合は "conf/data.dat is not found" と表示して終了するため、このファイルは削除しないでください)。 - テーブルの自動作成:
user、responsibility、report、requestの 4 つのテーブルが自動的に作成されます。 - 管理者アカウントの自動作成:初めて
/admin/loginにアクセスしたとき、ユーザーrootが存在しない場合、システムが自動的に作成します:- ユーザー名:
root - 初期パスワード:
SQLVantage - 役割:admin(管理者)
- セキュリティ注意:初回ログイン後はすぐにパスワードを変更してください(管理者は「ユーザー管理」で変更可能)。
- ユーザー名:
- ライセンスファイルのチェック:
conf/license.datが存在しないか無効な場合、コンソールに警告が表示されます。システムは動作しますが、4.7 節のライセンス制限 の制約を受けます。
3. 設定について
3.1 設定ファイルの場所
設定ファイルは conf/app.conf(INI 形式)です。変更方法は 2 通りあります:
- 方法 1(推奨、画面操作):管理者がログイン後「システム設定」(
/admin/setting)にアクセスして入力・保存すると、システムが自動的にapp.confに書き戻します。 - 方法 2(ファイルを直接編集):テキストエディタで
conf/app.confを変更し、プログラムを再起動します。
3.2 パラメータ説明表
| パラメータ | デフォルト値 | 説明 |
|---|---|---|
appname |
SQLVantage |
アプリケーション名 |
httpaddr |
127.0.0.1 |
リッスン IP アドレス。0.0.0.0 はすべてのネットワークインターフェースでリッスンすることを意味します(LAN からアクセス可能) |
httpport |
8080 |
リッスンポート。8080〜8099 を推奨します |
runmode |
dev |
実行モード:dev(開発。詳細なエラーを表示)/ prod(本番。エラーの詳細を非表示) |
language |
en-US |
デフォルトの UI 言語(URL パラメータ / Cookie / ブラウザ言語よりも優先度が低い) |
sessiongcmaxlifetime |
3600 |
Session の有効期限(秒)。デフォルトは 1 時間 |
max_execution_time |
30 |
レポートタスクの最大実行時間(分)。タイムアウトしたタスクは自動的に Terminated とマークされます |
oracle_server |
例 192.168.10.13 |
Oracle データベースサーバーの IP / ホスト名 |
oracle_port |
1521 |
Oracle リッスンポート |
oracle_database |
test |
Oracle サービス名(SERVICE_NAME) |
oracle_username |
apps |
Oracle 接続ユーザー名 |
oracle_password |
例 oracle123 |
Oracle 接続パスワード |
3.3 変更後の反映
sessiongcmaxlifetime:保存後すぐに反映されます。- その他のパラメータ(ポート、Oracle など):変更後はプログラムの再起動が必要です。
3.4 言語切り替え
- システムには 12 言語が組み込まれています:zh-CN、zh-TW、en-US、ja-JP、ko-KR、fr-FR、de-DE、es-ES、th-TH、vi-VN、ru-RU、pt-PT。
- 切り替え方法:URL に
?lang=zh-CNを追加(例:/?lang=zh-CN)、または管理画面右上の言語メニューから切り替えます。選択すると Cookie に書き込まれ、有効期限は 1 年です。
4. 管理者ガイド
4.1 管理者ログイン
- ブラウザで
http://<サーバーアドレス>:<ポート>/admin/loginにアクセスします。 - 管理者アカウントでログインします(初回は
root / SQLVantage)。 - ログインに成功すると管理画面(
/admin)に入ります。左側メニューには:レポート管理、職責管理、ユーザー管理、リクエスト管理、ライセンス管理、システム設定、ダッシュボード、概要 が含まれます。
説明:管理者アカウントは
役割 = adminかつ状態 = activeを満たす必要があります。そうでない場合、管理画面にログインできません。
4.2 ダッシュボードと上部ナビゲーション
- 上部ナビゲーションで素早くジャンプできます:ダッシュボード(
/admin)、レポート実行(/request、新しいウィンドウ)、ポータルホームページ(/)。 - 右上で言語の切り替え、ログアウト(
/admin/logout)ができます。
4.3 ユーザー管理
入口:/admin/user(左側メニュー「ユーザー管理」)。
ユーザーフィールドの説明:
| フィールド | 説明 |
|---|---|
| ユーザー名 UserName | ログインアカウント。作成後は変更不可(読み取り専用) |
| メールアドレス Email | 任意 |
| 役割 Role | normal(一般ユーザー)/ admin(管理者) |
| 状態 Status | active(在職。ログイン可)/ inactive(退職。ログイン禁止) |
| パスワード | 作成時に必須。暗号化して保存され、画面には表示されません |
操作:
- 新規作成:「新規作成」ボタンをクリック → ユーザー名/メール/役割/状態/パスワード/確認パスワードを入力 → 送信。
- 編集:行内の「編集」をクリック → メール、役割、状態を変更可能。パスワードは空欄にすると変更されません。
- 削除:行内の「削除」をクリック。注意:
rootアカウントは削除禁止;- レポートを所有しているユーザーは削除禁止(先にそのレポートを削除/移管する必要があります)。
管理のポイント:
- 一般ユーザーのログイン入口は
/login(ホームページ)、管理者のログイン入口は/admin/loginで、互いに異なります。 - 一般ユーザーを
inactive状態に設定すればログインを禁止できます。アカウントを削除する必要はありません。 - ユーザー一覧では
rootが自動的に非表示になります。
4.4 職責管理
入口:/admin/responsibility(左側メニュー「職責管理」)。
職責フィールドの説明:
| フィールド | 説明 |
|---|---|
| 職責 ID(RespId) | Oracle EBS の職責 ID |
| 職責キー(RespKey) | Oracle EBS の職責キー |
| 職責名(Name) | 表示名。一般ユーザー側のレポートメニューのグループ名でもあります |
| 略称(ShortName) | 任意 |
操作:
- 新規作成:「新規作成」をクリック → ドロップダウンからユーザーの職責を選択(データは Oracle EBS クエリ API
/api/user/responsibilities/から取得)。選択すると RespId / RespKey / Name が自動的に入力されます。手動で入力することも可能 → 送信。 - 編集 / 削除:行内のボタンで操作します。注意:レポートに参照されている職責は削除できません。
用途:レポートは必ずいずれかの職責に所属する必要があります。一般ユーザー側の「レポートメニュー」は職責ごとにグループ化して表示されます(職責に属さないレポートは「未分類」グループに分類されます)。
4.5 レポート管理
入口:/admin/report(左側メニュー「レポート管理」)。
レポートのフィールド:
| フィールド | 説明 |
|---|---|
| ID | システムが自動採番 |
| 職責(Responsibility) | レポートが所属する分類 |
| 名前(Name) | レポート名。一般ユーザーに表示されます |
| 説明(Description) | 任意 |
| 状態(Status) | Draft(草稿)/ Release(公開済み)/ Discard(廃棄) |
| 作成/更新時刻 | システムが自動記録 |
レポートのライフサイクル(重要):
Draft(草稿,設計段階)──▶ Release(公開済み,ユーザーに表示)
│ │
│ └──▶ 直接削除は不可。先に Draft/Discard に変更
└──▶ Discard(廃棄,ユーザーには非表示)
- 状態が Release のレポートだけが一般ユーザー側のレポートメニューに表示されます。
- 公開済み(Release)のレポートは削除禁止です。先に一覧で状態を Draft または Discard に変更してから削除してください。
- 一覧の「名前」「説明」「状態」列はセルをダブルクリックして直接編集できます(自動保存)。
操作:
| ボタン | 説明 |
|---|---|
| 新規作成 | フォームをポップアップ表示:職責の選択、名前/説明/状態の入力 → 送信 |
| コード(紫) | レポートデザイナーを開きます(詳細は第 5 章。本システムの最重要機能) |
| 編集(青) | 基本情報フォームを開いて変更 |
| 削除(赤) | レポートを削除(Release 状態は削除禁止) |
4.6 リクエスト管理(管理者の視点)
入口:/admin/request(左側メニュー「リクエスト管理」)。
管理者はすべてのユーザーのレポートリクエストを確認できます(一般ユーザーは自分のものだけ)。対応可能な操作:
- レポート名/状態/フェーズで確認;
- パラメータ、提出者、IP アドレス、作成/完了時刻を確認;
- 「出力」ドロップダウンからこのリクエストの Excel / HTML / JSON / TEXT 結果を直接ダウンロード;
- 単一選択削除、またはチェック後「一括削除」。
リクエストの状態の意味は 第 7 章 を参照してください。
4.7 ライセンス管理(License)
入口:/admin/license(左側メニュー「ライセンス管理」)。
4.7.1 ライセンスファイルとは
ライセンスファイルは conf/license.dat で、ベンダーが発行する短いテキストで、以下のライセンス情報を含みます:
| フィールド | 説明 |
|---|---|
reg_id |
登録 ID(顧客の一意の識別子) |
company |
登録会社名 |
expire |
有効期限日(形式 YYYY-MM-DD、例:2026-12-31) |
システムは起動時とインポート時にライセンスの正当性を自動検証します。改ざん(登録情報や有効期限の変更)があるとライセンスは無効になります。
4.7.2 購入の流れ
- SQLVantage のベンダー/開発元に連絡し、以下の情報を提供します:
- 団体/会社名(company);
- ライセンスを必要とするサーバーの登録 ID(reg_id、ベンダーが割り当て);
- 希望するライセンス期間。
- ベンダーはライセンス生成ツールでライセンスファイル(テキスト)を生成し、顧客に納品します。
- 顧客はファイルを受け取ったら 4.7.3 に従ってインポートします。
4.7.3 ライセンスのインポート
- 管理者ログイン → ライセンス管理(
/admin/license)。 - ページに現在のライセンス状態が表示されます(登録 ID / 会社 / 有効期限。無効または欠落の場合は赤い警告が表示されます)。
- 「ファイルを選択」で受け取ったライセンスファイル(任意の名前。例:
license.dat)を選択 → 「インポート」をクリック。 - インポートに成功すると、システムが自動的に検証してページを更新し、有効なライセンス情報を表示します。
手動配置も可能です:ライセンスファイルの内容を
conf/license.datとして保存し、プログラムを再起動します。
4.7.4 未ライセンス / ライセンス失効時の制限
| 制限項目 | 説明 |
|---|---|
| レポート数 | 未ライセンス(または失効)の場合、最大 3 つのレポートのみ存在可能。超えるとレポート作成が拒否されます(「ライセンス上限に達しました」と表示) |
| リクエスト送信 | 未ライセンスかつレポート数 ≥ 3 の場合、一般ユーザーのリクエスト送信が拒否されます |
| ライセンス失効 | 失効後もログイン済みの操作には影響しませんが、レポート新規作成/リクエスト送信が制限されます |
4.8 システム設定
入口:/admin/setting(左側メニュー「システム設定」)。conf/app.conf をビジュアル編集できます:
- アプリ設定:リッスンアドレス、ポート、実行モード、デフォルト言語、最大実行時間;
- セッション設定:Session の有効期限(秒);
- Oracle データベース設定:サーバー、ポート、サービス名、ユーザー名、パスワード(平文/暗号文の切り替えボタン付き)。
保存後、一部のパラメータは即時反映され、ポートなどのパラメータはプログラムの再起動が必要です。
4.9 概要
入口:/admin/aboutus。システムのバージョン、リリース情報などを確認できます。
5. レポート設計ガイド(核心章)
これは SQLVantage の最も重要な機能です。1 つのレポートは 3 つの部分で構成されます:
- SQL:どのデータをクエリするかを定義(データソース SQL + 列メタデータ設定)
- FORM:ユーザーが入力する検索条件を定義(パラメータフォーム)
- HTML:結果の表示方法を定義(テーブル / グラフ / KPIカードのレイアウト)
3 つはそれぞれ「コード」と「フォーマット JSON」の 2 つのデータを持ち、最終的にレポートレコードに保存されます。
5.1 デザイナーのワークベンチ
5.1.1 デザイナーを開く
- 管理者ログイン → レポート管理(
/admin/report)。 - 対象のレポートを探し、「コード」ボタン(紫)をクリック。
- 大画面のデザイナーウィンドウがポップアップ表示されます(画面の約 98%)。UI は左右 2 カラムです:
┌────────────────────────────────────────────────────────┐
│ [ドロップダウン:SQL設計 | FORM設計 | HTML設計] [すべて保存] │
├───────────────────────────────┬────────────────────────┤
│ 左側:コードエディタ │ 右側:動的設計パネル │
│ (SQL コード / FORM コード / │ (左側のモードに連動) │
│ HTML コードを共有) │ · SQL: 列メタデータ設定表 │
│ │ · FORM: パラメータ設定表 │
│ │ · HTML: レイアウト設定表 │
└───────────────────────────────┴────────────────────────┘
5.1.2 3つのモード
上部のドロップダウンで設計モードを切り替えます。切り替えると左側のエディタと右側のパネルが同期して切り替わります:
| モード | エディタの内容 | 右側パネル |
|---|---|---|
| SQL 設計 | レポートクエリ SQL(Oracle 構文) | 列メタデータ設定表(Excel エクスポート/ページの列ヘッダーに影響) |
| FORM 設計 | パラメータフォーム HTML コード | パラメータ設定表 + リアルタイムプレビュー + フォームコード草稿 |
| HTML 設計 | 結果表示 HTML コード(テンプレート断片) | レイアウトブロック設定表 + レイアウトプレビュー + HTML コード草稿 |
5.1.3 保存
- 設計中:右側パネルの変更は自動的に隠しフィールド(
sql_code/sql_format/form_code/form_format/html_code/html_format)に書き戻されます。 - 正式保存:左上の「すべて保存」ボタンをクリックすると、6 つのデータをまとめて
/admin/report/code/に送信し、データベースに保存します。
覚えておいてください:SQL / FORM / HTML を編集したら必ず「すべて保存」をクリックしてください。そうしないと、ウィンドウを閉じると失われます。
5.2 SQL モジュール(レポートデータソースの設計)
5.2.1 クエリ SQL の記述
-
SQL は Oracle 構文で、SELECT 文を直接記述します(FROM/JOIN/WHERE/GROUP BY などを含めることができます)。
-
検索条件には 名前付きパラメータプレースホルダ
:パラメータ名を使用します。パラメータ名は FORM モジュールで定義したfieldと一致させる必要があります。例:FORM でパラメータP_OU_IDを定義した場合、SQL には次のように記述します:SELECT company_name, ou_id, amount FROM fnd_ou_tl WHERE ou_id = :P_OU_ID -
SQL で SELECT したすべての列名が、Excel エクスポートと HTML ページテーブルのフィールド識別子になります(例:
COMPANY_NAMEのように大文字統一を推奨)。
5.2.2 列メタデータ設定表(重要:Excel エクスポート)
右側の「SQL 列メタデータ設定」テーブル。各行が SQL 出力の 1 列に対応します:
| 列 | 説明 | 例 |
|---|---|---|
| フィールド名 field | SQL 出力の列名(入力時に自動的に大文字へ変換) | AMOUNT |
| 表ヘッダータイトル title | 表示タイトル。Excel エクスポートの表ヘッダー、ページテーブルの列ヘッダー | 金額 |
| データ型 type | text / number / percent / date / month / time / datetime |
number |
| 精度 precision | 数値の小数桁数(デフォルト 2) | 2 |
| 形式 format | Excel カスタム数値/日付形式 | #,##0.00 |
| 配置 align | left / center / right |
right |
操作:「行を追加」で列を追加 → セルをダブルクリックして入力 → JSON スナップショットが自動生成(右側の黒いコードプレビュー領域)され、リアルタイムで sql_format に書き戻されます。
5.2.3 SQL 列設定と Excel エクスポートの対応関係
システムのバックエンドは以下のマッピングルールに従って Excel(xlsx)ファイルを生成します:
| 列設定 | Excel 出力での動作 |
|---|---|
field |
クエリ結果の列名と照合し、その行の設定がどの列に適用されるかを決定します |
title |
1 行目の表ヘッダーセルに書き込みます。すなわち Excel の表ヘッダータイトル |
type = text |
値をテキストとしてセルに書き込みます |
type = number |
値を数値として書き込みます。小数桁数 = precision。format が設定されている場合はカスタム数値形式で出力されます。例:#,##0.00 |
type = percent |
値をパーセント形式で出力します。format で上書き可能。例:0.00% |
type = date |
値を日付として出力します。format を日付形式として使用可能。例:yyyy-mm-dd |
align |
セルの水平配置:left / center / right |
precision |
数値精度(デフォルト 2) |
つまり:SQL 列設定表 = Excel エクスポートの「列ヘッダー + 列タイプ + 数値形式 + 配置」の完全な定義です。設定を行わなくても Excel はエクスポートできます(デフォルトはテキスト型、左配置、表ヘッダーは元の列名)が、設定するとエクスポートされる Excel がよりプロフェッショナルになります。
5.2.4 SQL 設計の完全な例
「部門費用レポート」を作ると仮定します:
-
SQL コード(エディタ):
SELECT DEPT_NAME, MONTH, TOTAL_AMOUNT, RATE FROM DEPT_COST_V WHERE MONTH = :P_MONTH ORDER BY DEPT_NAME -
列メタデータ設定:
field title type precision format align DEPT_NAME 部門名 text left MONTH 月 date yyyy-mmcenter TOTAL_AMOUNT 費用総額 number 2 #,##0.00right RATE 費用割合 percent 2 0.00%right -
エクスポートされる Excel の効果:表ヘッダーは「部門名 / 月 / 費用総額 / 費用割合」、金額は右配置・3 桁区切り・小数 2 桁、割合はパーセンテージで表示されます。
5.3 FORM モジュール(クエリパラメータフォームの設計)
5.3.1 パラメータ設定表
右側の「パラメータ設定表」。各行が 1 つのクエリパラメータを定義します:
| 列 | 説明 | 例 |
|---|---|---|
| パラメータ名 field | パラメータ識別子。SQL の :パラメータ名 と一致させる必要があります |
P_OU_ID |
| 表示ラベル label | フォームに表示するラベル文字 | 業務エンティティ |
| コンポーネントタイプ type | 下記のコンポーネントタイプ表を参照 | select |
| デフォルト値 value | 任意。初期値 | 101 |
| 検証 verify | 検証ルール(例:required) |
required |
| 静的オプション static_options | ドロップダウン/ラジオの静的オプション。形式 キー:値,キー:値 |
101:上海,102:北京 |
| API URL api_url | 動的オプションの API エンドポイント。{変数名} プレースホルダ使用可 |
/api/query?ou={P_OU_ID} |
| クエリ SQL query_sql | 動的オプションのクエリ SQL。{変数名} プレースホルダ使用可。値/テキストの 2 列を返します |
SELECT id, name FROM tab WHERE ou = {P_OU_ID} |
コンポーネントタイプ表:
| タイプ | 説明 |
|---|---|
text |
単一行テキストボックス |
number |
数値入力ボックス |
select |
ドロップダウン(オプションは静的オプションまたは動的 API/SQL から取得) |
radio |
ラジオグループ(オプションは静的オプションから取得) |
date |
日付ピッカー(YYYY-MM-DD) |
year |
年ピッカー |
month |
月ピッカー |
time |
時刻ピッカー |
datetime |
日時ピッカー |
hidden |
隠しフィールド(表示されませんが、フォームとともに送信されます) |
temp |
一時的な隠し値(送信されません) |
5.3.2 パラメータ連動(依存フィルタ)
api_url/query_sqlは{変数名}プレースホルダをサポートしています。ユーザーが上流のパラメータ(例:組織の選択)を変更すると、システムが自動的にプレースホルダを現在のフォームの実際の値に置き換え、下流のドロップダウンオプションを動的にリクエストします。- 上流のパラメータが未入力の場合、下流のドロップダウンは「先に上記の絞り込み条件を入力してください」と表示し、オプションをクリアして、不正なデータを防ぎます。
- 静的ドロップダウン(
static_options)と動的ドロップダウン(api_url / query_sql)はどちらか一方で構いません。
ドロップダウンの動的オプションのデータ形式の要件:API/SQL が返す各レコードには
val(値)とtxt(表示テキスト)の 2 つのフィールドが含まれている必要があります。
5.3.3 リアルタイムプレビューとコード生成
- テーブルの下は「リアルタイムプレビュー領域」:パラメータ設定に応じてフォーム(日付コントロール、連動ドロップダウンなど)がリアルタイムでレンダリングされます。
- 下部の「フォームコード草稿」テキストボックスに完全な FORM HTML コードがリアルタイムで生成されます。
- 「コピーして適用」ボタンをクリック:草稿コードをエディタ(FORM モード)に書き込み、
form_code/form_formatに同期します。
右側パネルを使わずに、左側エディタで直接 FORM HTML(フォーム構文)を手書きすることもできます。保存時にも同様に反映されます。
5.3.4 実行時の動作
一般ユーザーがフォームを送信すると、システムはフォームデータを名前付きパラメータとして SQL にバインドして実行します。同時にパラメータをリクエストに記録し、結果ページ/エクスポートファイルで検索条件を再表示できるようにします。
5.4 HTML モジュール(結果表示の設計)
5.4.1 レイアウトブロック設定表
右側の「HTML ビューコンポーネント設定」。各行が 1 つの表示ブロックを定義します:
| 列 | 説明 | 例 |
|---|---|---|
| コンテナ ID block_id | ブロックの一意の ID(DOM id プレフィックスが生成されます) | chart_zone |
| タイトル title | ブロックのタイトル | 費用傾向 |
| グリッド幅 grid_md | グリッド幅 1〜12(12 で 1 行全体を占める) | 8 |
| コンポーネントタイプ component | table(テーブル)/ chart(グラフ)/ card(指標カード)/ custom(カスタムコンテナ) |
chart |
| 小計 subtotal | Y(テーブルで合計行を有効化)/ N |
N |
| グラフタイプ chart_type | line(折れ線)/ bar(棒) |
line |
| X 軸フィールド x_field | グラフの横軸フィールド(SQL 出力列から取得) | MONTH |
| Y 軸フィールド y_fields | グラフの縦軸フィールド。複数はカンマ区切り | TOTAL_AMOUNT |
コンポーネント説明:
| コンポーネント | 表示効果 | 実行時の技術 |
|---|---|---|
table |
データテーブル。ページング、ソート、列ヘッダーは列メタデータの title。subtotal=Y のとき数値列に合計行を表示 |
table |
chart |
グラフ(line/bar)。X/Y 軸フィールドは設定から取得 | chart |
card |
指標カード(KPI カード)。重要な数値を表示 | カスタムレンダリング |
custom |
カスタムコンテンツコンテナ | HTML |
5.4.2 レイアウトプレビューとコード生成
- 「リアルタイムレイアウトプレビュー」領域が各ブロックの高忠実度スケルトン(タイトル + ブロックタイプ + 幅)をリアルタイムに表示します。
- 「Html Code 草稿」が完全な HTML コード(
data-component、data-subtotal、data-charttype、data-xfield、data-yfieldsなどの実行時属性を含む)をリアルタイムに生成します。 - 「コピーして適用」をクリックするとエディタに書き込み、
html_code/html_formatに同期します。
左側エディタで HTML テンプレート断片を直接手書きすることもできます(一般的なテンプレート構文をサポート)。実行時のレンダリングでテンプレートが利用できるデータオブジェクトは 5.4.3 を参照してください。
5.4.3 結果ページのレンダリングメカニズム
一般ユーザーが HTML 結果をダウンロード/表示するとき(/request/output?ext=html)、システムはレポートの HTML コードとクエリ結果の JSON、列設定などをまとめてレンダリングします:
| テンプレート変数 | 説明 |
|---|---|
data |
クエリ結果の JSON 配列(実行時に注入され、{{.data}} と組み合わせて JS データとして出力) |
params |
今回のリクエストのクエリパラメータ(キーと値のペア) |
colsConfig |
SQL 列メタデータ(テーブルの列ヘッダー/グラフの系列名に使用) |
reportName / reportDate / status |
レポート名、生成時刻、状態 |
ページは自動的に data-component="table" のコンテナをデータテーブルに、chart をグラフに、card を指標カードにレンダリングします。
5.5 レポート公開フロー(管理者向け推奨手順)
1. レポート管理 → 新規レポート作成(職責の選択、名前を入力、状態は Draft を選択)
2. 「コード」をクリックしてデザイナーに入る
3. SQL 設計:クエリ SQL を記述 + 列メタデータを設定(Excel エクスポートの基準)
4. FORM 設計:クエリパラメータを設定(SQL パラメータと 1 対 1 で対応)
5. HTML 設計:表示レイアウトを設定(テーブル/グラフ/指標カード)
6. 「すべて保存」をクリック → デザイナーを閉じる
7. レポート一覧に戻り、状態を Release(公開)に変更
8. 一般ユーザーがログインすると、レポートメニューにこのレポートが表示され、実行できます
5.6 設計上の注意事項
- SQL と FORM のパラメータ名は完全に一致させる必要があります(SQL は
:パラメータ名、FORM はfield)。 - SQL の列名は大文字を推奨します。列メタデータ設定表は自動的に field を大文字に変換します。
- レポート SQL は Oracle でプリコンパイル(
db.Prepare)できる必要があります。構文エラーがあるとリクエストの実行に失敗します(状態 Error)。 - 未ライセンス時のレポート数の上限は 3 つです。設計前にライセンス状態を確認してください。
- 保存後、「リクエスト管理」または一般ユーザー側で 1 回リクエストを実行し、SQL と表示が正しいか検証してください。
6. 一般ユーザーガイド
6.1 ログイン
ブラウザでシステムのホームページ(デフォルトは http://<サーバーアドレス>:<ポート>/)にアクセスし、「ユーザーログイン」カードをクリックするとログインページ /login に入ります。ログインページには 2 つのログイン方式があります(タブで切り替え):
方式一:ERP 検証(Oracle EBS シングルサインオン)
- 「ERP 検証」タブに切り替えます。
- EBS ユーザー名(例:
APPS)を入力し、「検証ログイン」をクリックします。 - システムは Oracle を通じて、そのユーザーの EBS の
icx_sessionsセッションが有効かどうかを確認します(30 分の有効ウィンドウ)。有効ならそのままシステムに入れます。 - 特徴:ローカルパスワードは不要。ログイン ID はユーザーの EBS での ID になります。
方式二:ローカルアカウント
- 「ローカルアカウント」タブに切り替えます。
- 管理者から割り当てられたユーザー名とパスワードを入力し、「ログイン」をクリックします。
- 特徴:アカウントは管理者が「ユーザー管理」で作成します。
注意:管理者によって
inactive(退職)に設定されたアカウントはログインできません。
6.2 ポータルホームページ
ログインに成功するとポータルホームページ(/)に入ります。含まれるもの:
- 上部:ウェルカムメッセージ(ユーザー名)、パスワード変更の入口。
- ナビゲーションカード:
- 新規レポートリクエスト(レポート実行ページ
/requestに入る); - 自分のリクエスト(履歴リクエストと結果を確認);
- 管理者ログイン、システム設定、ライセンス管理、概要などのカード(一般ユーザーは使用不要。クリックすると管理者ログインページにリダイレクトされます)。
- 新規レポートリクエスト(レポート実行ページ
- 右上で UI 言語を切り替えられます。
6.3 新規レポートリクエスト
- ポータルホームページで「新規レポートリクエスト」カードをクリックするか、
/requestに直接アクセスします。 - リクエスト一覧ページで「新規作成」ボタンをクリックします。
- 「レポートメニュー」ウィンドウがポップアップ表示されます:レポートは職責(モジュール)ごとにグループ化して表示され、公開済み(Release)のレポートのみ表示されます。上部のドロップダウンで名前検索もできます。
- レポートをクリックすると、右側にそのレポートのパラメータフォームが読み込まれます。
- 検索条件(日付/ドロップダウン/テキストなど)を入力し、「送信」をクリックします。
- 送信に成功すると、リクエスト一覧に新しいレコードが表示され、状態は Queued(待機中)です。
6.4 自分のリクエスト一覧
入口:/request(上部のポータルカードからも入れます)。
| 列 | 説明 |
|---|---|
| ID | リクエスト番号 |
| レポート名 | 実行したレポート |
| フェーズ Phase | Pending(待機)/ Running(実行中)/ Completed(完了) |
| 状態 Status | Queued(待機)/ Processing(処理中)/ Success(成功)/ Error(失敗)/ Terminated(タイムアウト終了) |
| 出力 Output | 結果をダウンロードするドロップダウンメニュー |
| メッセージ Message | 実行情報(SQL エラーなど) |
| パラメータ Parameters | 今回送信した検索条件 |
| 作成/完了時刻 | 記録時刻 |
操作:該当行の「出力」ドロップダウンをクリックし、Excel / HTML / JSON / TEXT を選択すると、新しいウィンドウで開くか、対応する形式の結果ファイルをダウンロードできます。
6.5 パスワード変更
- ポータルホームページ上部の「パスワード変更」をクリックします。
- 現在のパスワード、新しいパスワード、新しいパスワードの確認を入力します(新しいパスワードは 6 文字以上)。
- 送信に成功すると、新しいパスワードでログインできます(ローカルアカウントでのログインのみ有効。ERP 検証方式は EBS のパスワードとは無関係です)。
7. リクエストの実行と出力結果
7.1 実行フロー(非同期)
ユーザーがリクエストを送信
│
▼
request テーブルに書き込み(Phase=Pending, Status=Queued)
│
▼
バックグラウンドのポーリングコルーチン(3 秒ごと)が待機タスクを取得(1 バッチ最大 5 件、同時実行最大 3 件)
│
▼
楽観ロックでタスクを獲得 → Phase=Running, Status=Processing
│
▼
パラメータ解析 → レポート SQL の読み込み → Oracle でプリコンパイル実行
│
├── 失敗 → Status=Error(エラーメッセージを記録)
│
▼
結果ファイルを生成:data/<リクエストID>.xlsx と data/<リクエストID>.json
│
▼
Phase=Completed, Status=Success
- タイムアウト保護:
max_execution_time(デフォルト 30 分)を超えて実行されたタスクは自動的に Terminated とマークされます。 - 結果ファイルはリクエスト ID ごとに
data/ディレクトリに保存され、互いに上書きされることはありません。
7.2 出力形式
| 形式 | 説明 |
|---|---|
| Excel | xlsx ファイル。表ヘッダー/列タイプ/形式/配置は SQL 列メタデータで決まります(5.2.3 参照)。ファイル名の形式:<レポート名>_<タイムスタンプ>.xlsx |
| HTML | ブラウザでレポートの HTML レイアウト(テーブル/グラフ/指標カード)+ 検索条件の再表示をレンダリング |
| JSON | クエリ結果の生の JSON(二次開発/インターフェース連携に便利) |
| TEXT | プレーンテキストのページでデータを表示 |
7.3 権限制御
- 一般ユーザーは自分が送信したリクエストだけを確認できます(作成者でフィルタリング)。
- 管理者は「リクエスト管理」ですべてのユーザーのリクエストを確認できます。
- ERP ログインユーザーが送信するとき、フォームに
P_OU_ID/P_ORG_IDなどの組織権限パラメータが含まれる場合、システムはその値がユーザーの EBS で保有する OU/ORG の範囲内かを検証し、権限外の場合は拒否されます。
8. よくある質問 FAQ
Q1:起動時に "conf/data.dat is not found" と表示される?
データベースファイルがありません。解凍が完全であること、conf/data.dat が存在することを確認してください。空のファイルで代用せず、リリースパッケージに同梱されているデータベースファイルを使用してください。
Q2:ブラウザでページを開けない?
プログラムが起動していることを確認してください。httpaddr/httpport の設定が正しいことを確認してください(デフォルトは 127.0.0.1:8080。同一マシンからのアクセスは OK、他のマシンからは 0.0.0.0 に変更してファイアウォールのポートを開放する必要があります)。
Q3:ログインでアカウントまたはパスワードのエラーが表示される?
- ローカルアカウント:ユーザー名/パスワードが正しく、状態が active であることを確認してください。
- 管理者:役割が admin であることを確認してください。
- パスワードを忘れた場合:管理者に「ユーザー管理」でリセットを依頼してください。
Q4:レポートリクエストを送信しても状態がずっと Error のまま?
多くは SQL の構文エラーまたは Oracle 接続の問題です。リクエストの「メッセージ」列のエラー情報を確認してください:Prepare statement failed は SQL のプリコンパイル失敗、Oracle connection failed はデータベース接続設定の誤りを意味します(app.conf の oracle_* パラメータを確認)。
Q5:レポートが一般ユーザーのメニューに表示されない? レポートの状態が Release であることを確認してください(公開済みレポートのみ表示されます)。
Q6:リクエストが長時間 Running のまま?
実行時間が max_execution_time 分を超えると自動的に終了されます。このパラメータを適宜大きくして再起動してください。
Q7:レポート作成時にライセンス上限に達したと表示される? 有効なライセンスファイルがインポートされていません(または失効しています)。未ライセンス時は最大 3 つのレポートです。4.7 節 に従ってライセンスをインポートしてください。
Q8:Excel エクスポートの表ヘッダーが英語の列名になっている?
SQL 列メタデータ設定で title が未入力か、SQL 出力列名と一致していません。「SQL 設計」の列設定表で field を SQL 出力列と一致させ、title を入力してください。
Q9:Oracle のパスワードを変更したのに、システムはまだ古いパスワードで接続する?
conf/app.conf の oracle_password を変更したら、プログラムを再起動する必要があります。
Q10:ポートを変更しても反映されない?
app.conf を変更したら再起動が必要です。「システム設定」ページで変更しても同様です(同じく再起動が必要)。
9. 付録:データ保存とバックアップ移行
9.1 データの保存場所
| データ | 場所 | 説明 |
|---|---|---|
| システムデータ(ユーザー/職責/レポート/リクエスト) | conf/data.dat |
ローカルデータベース(パッケージに同梱) |
| ライセンス情報 | conf/license.dat |
ライセンスファイル |
| システム設定 | conf/app.conf |
設定ファイル |
| リクエスト結果ファイル | data/<リクエストID>.xlsx、data/<リクエストID>.json |
実行時に生成 |
| 一時ファイル | tmp/ |
実行時の一時ファイル |
| ログ | コンソール / 実行ディレクトリのログ | プログラムログ |
9.2 バックアップの推奨
- 最小バックアップセット:
conf/(app.conf + data.dat + license.dat)+ 任意のdata/(履歴結果)。 - 完全バックアップ:プログラムディレクトリ全体(
conf/、data/を含む)。
9.3 新しいサーバーへの移行
- 対象マシンに 第 2 章 に従って同じバージョンのプログラムをデプロイします。
- 旧プログラムを停止 →
conf/(app.conf、data.dat、license.dat)を新しいマシンの対応する場所にコピーします。 - 履歴結果が必要な場合は、
data/も一緒にコピーします。 - 新しいプログラムを起動し、設定(Oracle アドレス、ポートなど)が新しい環境に適合するか確認します。
9.4 本文書(多言語版)の移行とオンライン閲覧
- 本書はプログラムディレクトリ
docs/に保存され、言語ごとに名前が付けられています:zh-CN.md、zh-TW.md、en-US.md、ja-JP.md、ko-KR.md、fr-FR.md、de-DE.md、es-ES.md、th-TH.md、vi-VN.md、ru-RU.md、pt-PT.md。 - 画像は
docs/images/ディレクトリにまとめて配置され、文書内ではローカル相対パスで参照されます(例:)。サードパーティのリモート画像リンクはありません。文書を移行するときはdocs/images/ディレクトリも一緒にコピーしてください。画像は文書とともに移動します。 - オンライン閲覧:すべての
.mdファイルは純粋な Markdown で、Gitea / GitHub / GitLab / Gitee などのプラットフォームのドキュメントリポジトリで直接オンラインレンダリングして読むことができます。追加のツールは不要です。 - 各言語版の内容は同一です。入口は
docs/README.mdのインデックスを参照してください。