日日是Oracle APEX
Oracle APEXを使った作業をしていて、気の付いたところを忘れないようにメモをとります。
2026年9月11日金曜日
OpenAI CodexとLive音声モードのチャットで駅別乗降客数マップを表示するアプリを作成する
2026年9月10日木曜日
国土地理院が公開している自然災害伝承碑データより伝承碑の位置を表示するAPEXアプリをCodexで作成する
https://www.gsi.go.jp/bousaichiri/denshouhi_datainfo.html
このオープン・データのGeoJSONファイルより、OpenAI Codexを使って伝承碑が存在する場所や伝承碑の説明を表示するAPEXアプリケーションを作成します。一覧する伝承碑を絞り込むために、ファセット検索も組み込みます。
Create a dashboard page for order operations with KPI cards, a monthly revenue chart, and an interactive report. Use existing schema evidence and ask before guessing missing columns.
国土地理院 - 自然災害伝承碑データの提供についてのページにアクセスし、ページの一番下にある免責事項に同意するをクリックすると、データのダウンロード・ページに移ります。
ファイルは000250767.zipとしてダウンロードされます。このファイルを作業フォルダに配置し解凍します。解凍するとフォルダ20260827_GeoJSONが作成され、その下に20260827.geojsonとして、GeoJSON形式のデータファイルが作成されます。
ndmm_monuments % ls -l 20260827_GeoJSON
total 4760
-rw-rw-rw-@ 1 ******** staff 6729 12月 23 2021 0_はじめにお読みください(国土地理院コンテンツ利用規約).txt
-rw-rw-rw-@ 1 ******** staff 1229 1月 15 2024 1_データについて_geojson.txt
-rw-rw-rw-@ 1 ******** staff 2422479 8月 31 07:35 20260827.geojson
ndmm_monuments %
apm install oracle/skills/db --target codex
APEXlangのスキルはoracle/skills/apexに含まれています。
ndmm_monuments % apm install oracle/skills/apex --target codex
[*] Validating 1 package...
[+] oracle/skills/apex
[*] Updated apm.yml with 1 new package(s)
[>] Installing 1 new package...
[>] Resolving skills-apex...
[i] Targets: codex (source: --target flag)
[+] github.com/oracle/skills/apex #default @fcbc9430
|-- Skill integrated -> .agents/skills/
[!] 1 dependency unpinned: oracle/skills -- add #tag or #sha to prevent drift
[*] Installed 1 APM dependency in 6.4s.
ndmm_monuments % apm install oracle/skills/db --target codex
[*] Validating 1 package...
[+] oracle/skills/db
[*] Updated apm.yml with 1 new package(s)
[>] Installing 1 new package...
[>] Resolving skills-db...
[i] Targets: codex (source: --target flag)
[+] github.com/oracle/skills/db #default @fcbc9430
|-- Skill integrated -> .agents/skills/
[!] 1 dependency unpinned: oracle/skills -- add #tag or #sha to prevent drift
[*] Installed 1 APM dependency in 6.7s.
ndmm_monuments % apm deps list
APM Dependencies (Project)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━┓
┃ Package ┃ Version ┃ Source ┃ Prompts ┃ Instructions ┃ Agents ┃ Skills ┃ Hooks ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━┩
│ oracle/skills/apex │ unknown │ github │ - │ - │ - │ 1 │ - │
│ oracle/skills/db │ unknown │ github │ - │ - │ - │ 1 │ - │
│ oracle/skills/apex/apexlang │ unknown │ orphaned │ - │ - │ - │ 1 │ - │
└─────────────────────────────┴─────────┴──────────┴─────────┴──────────────┴────────┴────────┴───────┘
[!] 1 orphaned package(s) found (not in resolved dependency graph):
[!] - oracle/skills/apex/apexlang
[i] Run 'apm prune' to remove orphaned packages
ndmm_monuments %
国土地理院からダウンロードした日本の自然災害伝承碑のGeoJSONのデータを、Oracle DatabaseにロードしてOracle APEXのマップ上に表示するアプリケーションを作成します。
データベースに接続するために使用するSQLclの実行ファイルは/opt/homebrew/bin/sqlclです。
接続先となるデータベースは、SQLclの保存済みの接続local-26ai-apexdevを使って接続します。
APEXアプリケーションを作成するワークスペースはAPEXDEVです。
保存済みの接続local-26ai-apexdevでは、スキーマAPEXDEVに接続されます。これはAPEXのワークスペースAPEXDEVのデフォルト・パーシング・スキーマです。
表などのデータベース・オブジェクトはスキーマAPEXDEV以下に作成します。
データを保存する表は、これから伝える条件で作成してください。
自然災害伝承碑のデータを利用するにあたって、公開されている以下のファイルの内容に配慮してください。
20260827_GeoJSON/0_はじめにお読みください(国土地理院コンテンツ利用規約).txt
20260827_GeoJSON/1_データについて_geojson.txt
ソースとなる自然災害伝承データは、 ファイル20260827_GeoJSON/20260827.geojsonに保存されています。
このGeoJSONファイルをデータベースの表にロードしてください。
作成する表はNDMM_MONUMENTSとします。
GeoJSONの1つのFeatureを1行として保存し、proppertiesはそれぞれ列として定義します。
Featureには、"ID", 碑名", "建立年","所在地", "災害名", "災害種別", "伝承内容", "公開日", "修正等公開日", "制限事項" があります。
これらのFeatureを表の列として定義します。この他に自然災害伝承碑の座標を列として定義します。
表の列として定義するにあたり、列名は英語にしてください。データ型はファイルから実際のデータ型を参照して適切なデータ型を選んでください。
geometryについては、SDO_GEOMETRY型の列として保存してください。
データベースに表を作成したら、ファイル20260827_GeoJSON/20260827.geojsonの内容を作成した表NDMM_MONUMENTSにロードしてください。
データをすべて表NDMM_MONUMENTSにロードした後、geometryを保存した列にOracle Spatialの空間索引を作成してください。
これから、新規に作成するAPEXアプリケーションの要件を説明します。
新規に作成するAPEXアプリケーションの名前は「自然災害伝承碑マップ」とします。
アプリケーション別名はndmm_monumentsとします。
上記の表NDMM_MONUMENTSをデータ・ソースとしたファセット検索付きのマップ・リージョンを持つページを作成してください。
作成したページには、国土地理院コンテンツ利用規約に沿って、出典と行なった加工と編集について表示してください。
マップ・リージョンの他に、マップ上に表示されている自然災害伝承碑の行を一覧するクラシック・レポートのリージョンを作成してください。
災害種別と災害名をファセットとしてください。
マップ上にそれぞれの自然災害伝承碑を配置してください。
マップ上のポイントをクリックして開く情報ボックスに、表NDMM_MOMENTSのgeometryを除く列を表示するようにしてください。
「地図上に表示されている伝承碑はクラシック・レポートに反映されていますが、検索条件を表示するファセットには反映されていません。クラシック・レポートと同様にファセットにも反映するようにしてください。」
「地図上の伝承碑のポイントをクリックしたときに表示される情報ボックスですが、地図の領域からはみ出てすべての情報が表示されません。横幅を2倍に広げて、縦方向の長さは半分にしてください。」
2026年9月8日火曜日
MCP Toolbox for DatabasesをOracle IAMでOIDC認証する
kind: authService
name: my-generic-auth
type: generic
audience: ${YOUR_TOKEN_AUDIENCE}
authorizationServer: https://your-idp.example.com
mcpEnabled: true
scopesRequired:
- read
- write
---
kind: authService
name: oracle-iam-auth
type: generic
authorizationServer: [発行者として設定したドメインURL(ポート番号無し)]
audience: http://localhost:5000/
mcpEnabled: true
scopesRequired:
- openid
- mcphotels
---
# show sub claim in access token
kind: tool
name: show_sub_claim
type: oracle-sql
source: my-oracle-instance
statement: |
SELECT :1 sub from dual
description: |
Show sub claim value in the access token
parameters:
- name: user_id
type: string
required: false
description: Auto-populated from token
authServices:
- name: oracle-iam-auth
field: sub
authRequired:
- oracle-iam-auth
./toolbox --config tools.yaml --toolbox-url http://localhost:5000/
mcp-toolbox % ./toolbox --config tools.yaml --toolbox-url http://localhost:5000/
2026-09-08T13:20:06.905274+09:00 INFO "Starting MCP Toolbox for Databases version 1.10.0+binary.darwin.arm64.21f972f"
2026-09-08T13:20:06.983898+09:00 INFO "Initialized 1 sources: my-oracle-instance"
2026-09-08T13:20:08.061104+09:00 INFO "Initialized 1 authServices: orcle-iam-auth"
2026-09-08T13:20:08.061141+09:00 INFO "Initialized 0 embeddingModels: "
2026-09-08T13:20:08.06143+09:00 INFO "Initialized 4 tools: show_sub_claim, execute_sql, list_all_hotels, list_hotels_in_the_location"
2026-09-08T13:20:08.061451+09:00 INFO "Initialized 0 prompts: "
2026-09-08T13:20:08.061472+09:00 INFO "Initialized 1 groups: default"
2026-09-08T13:20:08.061722+09:00 WARN "wildcard (*) allows any website to access the primitives. This creates a security risk regardless of whether you are in a production or local development environment. Recommended to use --allowed-origins with specific local addresses."
2026-09-08T13:20:08.061774+09:00 WARN "wildcard (*) hosts allow any domain to access this resource, making it vulnerable to DNS rebinding attacks regardless of whether you are in a production or local development environment. For improved security, use the --allowed-hosts flag to specify trusted domains."
2026-09-08T13:20:08.062055+09:00 INFO "Server ready to serve!"






























