コラム

はじめまして。Verasym事業部の黒田です。
近年、多くの企業で社内システムの老朽化が頭を悩ませる深刻な課題となっており、弊社も例外ではありません。その解決策の1つとして、Oracle APEXを使用したマイグレーションに私・黒田が挑戦していきます。
本ブログでは、現行システムからOracle APEXへの移行を通して見えてきた課題とその解決策について、実体験をもとにご紹介します。
第1章ではシステムの老朽化に伴う課題とマイグレーションの必要性について説明します。そのうえで、弊社がOracle APEXを選んだ理由や導入による運用面・技術面のメリットについて解説し、最後にOracle APEXのはじめ方をご紹介します。
そして今後の章では、以下のような技術的テーマを掘り下げていく予定です。
・第2章:レイアウト再現のコツ(スクロール付きレイアウト対応、複雑なレイアウト設計)
・第3章:Excel出力・ログイン認証対応の工夫
・第4章:「AI」を活用した開発支援とその効果
・第5章:移行後に見えた成果と将来性
初心者の方にも伝わりやすい内容になっていますので、ぜひ最後までご覧ください!
本プロジェクトは、オンプレミスで運用してきた社内システムをクラウド環境へ移行することを目的に立ち上がりました。
その理由は、システムの老朽化や保守運用の負担増加に加えて、将来的な拡張性やセキュリティ対応を考慮したとき、クラウドシフトが必要不可欠と判断したからです。また、AI活用ができるクラウド環境に移行することで、開発効率化を図ることも目的の1つでした。
現行システムには以下のような課題がありました。
・維持・保守費用の増大
・セキュリティリスク
・システムの肥大化・複雑化
・ドキュメントの不備
・技術者不足
これらの課題を解決する手段として「Oracle APEX」を選びました。弊社のシステムはデータベースにOracleデータベースを採用しているため移行が容易であること、OCIを契約している場合は追加費用なしでOracle APEXを利用できることが決め手となりました。
次節では「Oracle APEXやOCI」とはそもそも何なのかについてご紹介していきます。

Oracle APEX(Application Express)とは、Oracle社が提供するローコード開発プラットフォームで、Oracleデータベース上にWebアプリケーションを迅速かつ簡単に構築・デプロイできます。さらにローコード開発の特性により、従来のコーディングに比べて生産性を大幅に向上させることが可能です。
Oracle APEXは「SQL、PL/SQL、JavaScript」を中心に構成されており、Oracleデータベースとの親和性が高いのも特徴の1つです。OCIを契約していれば追加費用なしですぐに利用でき、環境構築も容易なため、開発にかかるコストや期間を抑えることにつながります。
業務システム開発に必要な機能が揃っているほか、強固なセキュリティ機能やデータを視覚的に管理する機能もあります。また、追加のコードなしでさまざまなデバイスに対応するレスポンシブデザインにも対応しているため柔軟な開発が可能です。
※Oracle APEXの魅力や注意点については、後述の「2)Oracle APEX導入のメリット・デメリット」で詳しく解説していますので、ぜひそちらもご覧ください。

OCI(Oracle Cloud Infrastructure)とは、Oracle社が提供するクラウドコンピューティングサービスで、IaaS(インフラ)とPaaS(プラットフォーム)の両機能を提供しています。
エンタープライズ向けのセキュリティ等に強力なクラウドサービスであり、Oracleの他製品とシームレスに統合できる点が特徴です。前述のOracle APEXとOCIを組み合わせることで、クラウドベースの業務アプリケーションを強力に開発・運用することが可能になります。
▼ 関連記事:「OCI」について詳しく解説したコラムはこちら
Oracle APEXの導入を検討する際には、その特徴や利点だけでなく、注意すべき点も把握しておくことが重要です。ここでは、Oracle APEXのメリット・デメリットとその対策について詳しくご紹介します。
Oracle APEXの導入にあたって以下の7つのメリットを具体的にご紹介します。
①低コスト
→OCI上のOracleデータベースに標準搭載されているため、追加ライセンスが不要
→公式サイトからOracleデータベース無しで無料で試すことができる
(OCI上以外のOracleデータベースには別途インストールが必要だが、APEX自体は無料で使用可能)
②高速開発
→新たにソフトをインストールする必要がなく、ブラウザ上で開発・デプロイすることができる
→ローコード開発であるため、テンプレートやウィザードを活用して複雑な機能を短時間で作成できる
③環境構築の容易さ
→Oracle APEXはブラウザ上で動作し、複雑なインストールや設定なしで即座に開発環境を構築できる
④初心者でも扱いやすい
→ドラッグ&ドロップやウィザード形式の操作で、専門的な知識がなくても画面設計や機能追加が簡単にできる
→プログラミング経験が浅くても開発可能
⑤セキュアかつスケーラブル
→標準で強力なセキュリティ設計がされているうえに、小規模から大規模までの案件に対応可能
⑥クラウドでもオンプレミスでも利用可能
→Oracleデータベース上で動作しているため、クラウド環境でもオンプレミス環境でも同じように導入・運用できる
⑦AI活用に適した環境
→OCIと組み合わせることで、APEXアシスタント(AI)を利用できるため効率的な開発が可能
Oracle APEXは非常に優れたローコード開発ツールですが、導入・運用にあたってはいくつかのデメリットも存在します。以下では実際の問題点とそれに対する対策をご紹介します。
[デメリット①] 日本語での情報が少なく、学習時に翻訳が必要になる場合がある
→Oracle APEXに関する公式ドキュメントやチュートリアルの多くは英語で提供されており、日本語での解説資料はまだ限られています。その際はブラウザの翻訳機能を活用して進める必要があります。
[デメリット②] 高度なカスタマイズにはSQLやJavaScript等の専門知識が必要になる
→シンプルな画面はノーコードで対応可能ですが、複雑な処理や画面制御にはコーディングが必要になります。
このようにOracle APEXの導入にはいくつかのハードルがありますが、翻訳ツールを活用しながら知識やノウハウを記録・共有する仕組みを整えたり、標準機能を中心に使いつつ必要に応じてSQLやJavaScriptの基礎を段階的に学ぶことで、十分に対応可能です。適切な情報収集と学習環境の整備をすることで乗り越えることができ、私たちには大きな障壁となりませんでした。
Oracle APEXの概要と導入メリットについて整理したところで、次は移行対象となる社内システムについてご紹介します。
今回は社内システムの老朽化に伴う課題を解決するべく、既存のASP.NETベースの社内システムをOracle APEXを使ってマイグレーションするプロジェクトが立ち上がりました。
本ブログでは、「支払請求システム」を題材に、私・黒田が開発に挑戦する中で発生した問題とその解決策を章ごとに整理してご紹介します。
「支払請求システム」は、社内で必要な物品やサービスを購入した際の支払申請から承認、精算までを一元管理するシステムです。領収書の添付、申請・承認などの機能を備えており、支払業務を効率的に運用できます。
本システムは申請の手順に沿って画面遷移し、申請状況に応じて異なる操作が可能です。
以下に、支払請求システムの画面遷移図を掲載しますので、全体の流れをご確認ください。

<レイアウト>
☆主な機能一覧
・ログインユーザー情報(社員番号・氏名)の表示
・各機能を持つボタンやアイテムの配置
・データ登録用の入力表の表示
・検索条件と結果を表示ポップアップ画面
<ロジック>
・単価と回数での金額の合計の値の計算
・検索条件入力後、入力チェック
・カーソル位置への行追加と行の追加・削除の制限
・アップロードしたファイルと対象行(支払請求書の登録一覧の行)の紐づけ
今後の章では、この支払請求システムをOracle APEXで構築する過程で直面した技術的な課題とそれに対する具体的な対策を、「画面レイアウト作成」と「ビジネスロジック作成」の2つの観点に分類してご紹介します。
移行要件として「画面レイアウトや機能を変更しない」ことが求められました。
そのため、開発を進める中でフレームワークの違いにより実現が容易でない問題が複数発生しました。
このような移行要件の中で特に対応が難しかった以下の4つの問題点についてご紹介します。
・スクロール機能付きレイアウトの調整
・複雑なレイアウト設計の再現
・Excel出力(帳票出力)
・ログイン認証
第2章以降では上記問題に対しての具体的な解決方法について章ごとに分けて詳しくご紹介します。
現行システムの「画面レイアウト」や「ビジネスロジック」をOracle APEX上で再現する過程で、前節「3-2)開発工程で発生した問題の洗い出し」のような問題が明らかになりました。
第2章以降では実際の開発を通して直面したUI制御の難しさや、業務ロジック設計の変更、そして開発効率向上のためのAI活用などについて、技術的な工夫や試行錯誤のプロセスを以下の章ごとに分けて詳しくご紹介します。
【第2章】レイアウト再現のコツ(スクロール付きレイアウト対応、複雑なレイアウト設計)
☆各章の説明
現行システムの複雑な画面構成やUIの詳細設定を、Oracle APEXでどう再現したかを紹介します。
【第3章】Excel出力・ログイン認証対応の工夫
現行システムロジックをPL/SQLやJavaScriptを活用してOracle APEXで再設計するプロセスを取り上げます。
【第4章】AIを活用した開発支援とその効果
AIを活用してコード生成やUI設計の効率化を図った取り組みを紹介します。
新人開発者として、AIがどのように学習や実装を支えてくれたかを実体験を交えてお伝えします。
【第5章】移行後に見えた成果と将来性
完成した支払請求システムの全体像とユーザー操作の流れなどを取り上げます。
では、課題の全体像が見えてきたところで、次はOracle APEXでの開発を始めるための準備について見ていきましょう。
Oracle APEXを始めるには、まずワークスペースを取得する必要があります。
弊社はOCIに契約済みのためOracle APEXが追加費用なしで利用できます。そのため本ブログでは以下の方法を採用しています。
■本番利用・企業向け:OCI上でOracle APEXサービスを構築
OCIコンソールからAPEXインスタンスを作成し、専用のワークスペースを設定することで、より高度なセキュリティや運用管理が可能になります。

またOracle APEX公式サイト(スタート・ガイド - Oracle APEX)では無料のワークスペースを申請して簡単に試すこともできます。数分で申請が完了し、ブラウザ上ですぐに開発を開始できるので、初めてOracle APEXに触れる方におすすめです。
※あくまでお試し用であり、本番環境での利用にはOCI上での構築が推奨されます。
以下ではワークスペース取得後からアプリケーションの大枠を作成する初期設定をご紹介します。
1:ワークスペースログイン画面
☆初期設定手順

2:アプリケーション・ビルダー画面

3:アプリケーション作成画面

4:アプリ作成後画面(開発ホーム画面)

5:アプリ開発画面

6:アプリサインイン画面

Oracle APEXの開発画面は「ページ・デザイナ」と呼ばれ、直観的なUIにより初心者でも迷わず開発を進めることができます。
Oracle-APEXの基本構成と開発環境の解説⑥】.png)
以下では実際のページ・デザイナの各エリアを詳しく説明していきます。
①レイアウトタブ(画面中央)
【役割】ページのレイアウトを視覚的に編集するメインエリアになっています。ここにコンポーネントを配置し、レイアウトを組み立てます。
【特徴】
・グリッドシステム(12列)が適応されており、コンポーネントを整列しやすい
・レスポンシブデザインに対応しているため、各デバイスプレビューを切り替えて確認できる
・コンポーネントをドラッグ&ドロップで配置、移動できる
②ギャラリ(画面中央下部)
【役割】ページに追加できる様々なコンポーネントを提供しています。
【主なコンポーネント】
・リージョン(アイテムやボタンをグループ化するための容器:静的コンテンツ、クラッシックレポートなど)
・アイテム(テキスト入力、チェックボックス、選択リストなど)
・ボタン(通常ボタン、リンクボタンなど)
③プロパティエディタ(画面右側)
【役割】選択したコンポーネントの詳細設定を編集できます。
【詳細設定の内容】
・表示(ラベル、デフォルト値などの基本設定)
・動作(動的アクションやJavaScriptの追加)
・ソース(SQLクエリやPL/SQLコードの編集)など
④レンダリングタブ(画面左側)
【役割】ページの構造を階層的に表示し、コンポーネントを管理します。
【特徴】
・ページ全体を把握しやすく、コンポーネントの親子関係を確認することができる
・コンポーネントの表示/非表示を切り替えたり、順序を変更することができる
今回はOracle APEXやOCIの基本解説から始まり、移行対象システムの全体像、そしてOracle APEXの始め方についてご紹介しました。
次回の第2章では、「画面レイアウトの再現」に焦点を当て、Oracle APEXの標準機能を活用しながらも直面した課題とその解決策を実例とともにご紹介します。
具体的には以下のような課題への技術的な取り組みについてご紹介します。
・スクロール機能付きレイアウトの調整
・複雑なレイアウト設計の再現
実践的な内容を通して、Oracle APEX開発のリアルな一面をお届けしますので、ぜひご期待ください。
レガシーシステムからのマイグレーションを考えている方や、OCI環境を持ちながらもうまく活用しきれていない方、開発現場の雰囲気に興味がある方の参考になれたらうれしいです。どうぞお楽しみに!