📝

Oracle APEXで始めるExcel代替Webアプリ

2021/12/12に公開

この記事はOracle Cloud Infrastructure Advent Calendar 2021 の12日目の記事となります。

突然ですが皆さんはExcelを使っていますか?
VLOOKUP関数・SUMIF関数・ISNA関数を使っていますか?
セルによって書式設定が異なっていてイライラする事ありませんか?
共有Excelファイルの列幅が他の人に勝手に変更されて「チッ」って思ったりしませんか?
SUMの参照範囲がずれて計算が違って、痛い目を見たことありませんか?

私は全部YESです。
Excelは嫌いじゃないですよ。とても便利なソフトです。
ただ、管理するデータが数百行を超える場合や、色んな人が編集する場合はリレーショナルデータベースソフトに助けてもらったほうが良いと思います。

リレーショナルデータベースって?

リレーショナルデータベースをざっくり説明すると、「列ごとに入力できるデータの形式が決められたExcelのシートの集まり」です。この一つのシートは「テーブル」と呼ばれ、数億行以上のデータもサポートされています(Excelは多くて100万行)。

また、データベースを使う場合はまず最初にテーブルの列の数や名前、データ型を決める必要があります。面倒ですが重要なところです。

例えば社員テーブルを作る場合、以下のような設計になります。

項目名 データ型
社員番号 数字
社員名 文字列
性別 文字列
所属部署コード 数字
入社日 日付
退社日 日付

Excelで社員テーブルと同じようなデータを管理する場合は、

  1. シートを作成
  2. A1セル社員番号、B1セルに社員名・・・・と入力
  3. A列全部選んで書式設定 -> 数値、B列全部選んで書式設定 -> 文字列・・・
  4. データの入力を始める

となりますが、データベースソフトではCREATE TABLE文というSQLを発行してテーブルを作るところから始まります。

CREATE TABLE 社員名簿
 社員番号 NUMBER,
 社員名 VARCHAR2(200),
 性別 VARCHAR2(50),
 所属部署コード NUMBER,
 入社日 DATE,
 退社日 DATE;

何これ?と思った方、大丈夫です。私も最初は何コレ?と思いました。

SQL文はデータベースソフトに対して「アレをこうしたいから、いい感じに処理しといて」という依頼をするための文章です。CREATE TABLEは「テーブルを作ってね」という文で、その後に列の定義が続きます。

SQL文が正しければ、データベースソフトがテーブルを準備してくれます。

データベースソフトとやり取りを行うためには、SQL文が必要です。
データを取ってくるときはSELECT文、行を追加するときはINSERT文、行を削除するときは DELETE文、行を更新するときはUPDATE文、と様々なものがあります。

Excelのように気軽に値を更新したいのに、いちいちSQL文を作っていられないですよね?
そこで登場するのがOracle APEXです。
Oracle APEXを使えば、データベースのテーブルをExcelのシートのように扱うWebアプリを簡単に構築することができます。

Oracle APEX

公式サイトにもある通り、Oracle Application Express(APEX)はローコードのWebアプリケーション開発プラットフォームです。データベースソフトはOracle Databaseになります。
Webサーバー、PHPなどのスクリプト言語、MySQLなどのデータベースソフト、HTML・CSS・Javascriptなどの多種多様な知識を持っていなくても、Oracle APEX側で準備してくれている機能を使えばWebアプリケーションが作れるようになっています。

下記の画像は私が実際に会社で使っているWebアプリケーションです。もともとExcelで作っていた管理表をOracle APEXに引っ越しました。
インタラクティブグリッドというコンポーネントが標準で準備されているので、それぞれのテーブルをExcelのワークシートの様に自由に編集・検索できます。検索も標準で全列に対して検索してくれるので助かっています。
APEXサンプル

APEXワークスペースの準備

Oracle APEXを使うための一番簡単な手順は、APEXワークスペースをリクエストすることです。メールアドレスだけあれば無料で開始できます。

  1. https://apex.oracle.com/ja/learn/getting-started/ にアクセスします。
  2. 中央にある「無償ワークスペースのリクエスト」を押します。
  3. 英語のアンケートに答えます。
  4. リクエストする理由を日本語で答えます。
  5. 使用許諾条件に同意します。
  6. 確認画面で入力した項目を確認、「リクエストを送信」を押します。
  7. ワークスペースが作られるのを待ちます。
  8. メールが来たら、「Create WorkSpace」ボタンを押します。
  9. ワークスペースが作成されます。「サインイン画面に進む」ボタンを押します。
  10. パスワードの設定を行ってログイン画面に入るのを確認します。

10分で作る会員情報アプリ

今回はサンプルとして、会員情報アプリを作ることにしましょう。

サンプルデータを作るのは面倒なので、個人情報テストデータジェネレータ にアクセスし、設定は変更せずに「生成」ボタンを押してダミーデータをデータを作ってもらいます。

出来上がったファイルの中身はこんな感じです。

このファイルをもとに、アプリを作ります。

  1. Oracle APEXの画面に移動し、「アプリケーションビルダー」を選択します。
  2. 「新規アプリケーションの作成」を選びます。
  3. 「ファイルから」を選びます。
  4. 個人情報テストデータジェネレータで作った、dummy.csvを選びます。
  5. するとデータの解析が始まり、列名と列のデータ型が決定されます。
  6. プレビュー画面が表示されます。

7.「表名」が空白になっていますので、テーブルに名前をつけてあげます。今回はDUMMYとしました。
8. 「データのロード」を行うと、CSVファイルからデータを読み込んでデータベースのテーブルに取り込んでくれます。
DataLoad

  1. このテーブルを使ったアプリケーションを作ります。「アプリケーションの作成」ボタンを押します。

  2. 少し待つと、「アプリケーションの作成」ダイアログが出てきます。ログインページなどが自動で用意されます。今回はそのまま「アプリケーションの作成」を押しましょう。

  3. アプリケーションの作成が終わると、アプリケーションの設定画面に移動します。
    画面右上に再生ボタンがありますので、押してみてください。

  4. ログインページが出てきました。ユーザ名にワークスペースのリクエストに使用したメールアドレス、パスワードも先程決めたパスワードを入力します。

  5. Dummiesというアプリケーションの画面が出てきました。この時点で検索とデータの更新ができるようになっています。SQL文を一度も使わずにデータベースを使ったWebアプリができました。そしてもちろん、SSLにも対応しています。

おわりに

Oracle APEXには、全列全文検索が可能なインタラクティブレポート、AmazonやRSコンポーネンツのような検索メニューが使えるファセット検索、Excelのワークシートのように使えるインタラクティブグリッドなど、色々なコンポーネントがありますが残念ながら時間の都合上紹介することができません。

「便利かも」と思った方は、APEXワークスペースをリクエストして使ってみてください!

データベースの知識があるとOracle APEXをより便利に使えるので、この機会にデータベースも学んでみてはいかがでしょうか。知り合いにデータベースの知識がある人がいれば、その人を巻き込んでみると色々と便利ですよ!

参考リンク:

Oracle APEX日本語ドキュメント
Oracle APEXコンポーネントサンプル
Oracle CloudのAlways FreeのAPEX環境を使って、我が家の体重管理アプリを作ってみた
基礎から始めるデータベース入門セミナー

Discussion