Akemaxでインターンをしていた時、日々の報告業務の多くがまだ紙ベースで行われていることに驚きました。工場の現場で報告書を提出する必要がある場合、階下まで歩いて行き、紙の帳票を取り、手書きで記入して提出しなければなりませんでした。それでも機能はしていましたが、時間がかかり、業務の妨げにもなっていました。私はずっと考えていました:フォームをサーバーに置けばいいのではないか、と。
そのアイデアがずっと頭に残っていました。これらのフォームを使う人たちはプログラマーではありません。ソフトウェアをインストールしたり、アカウントを作成したり、新しいツールの使い方を覚えたりしたくはないのです。ただフォームに記入して、仕事に戻りたいだけです。だから、私が作るものは極めてシンプルでなければなりませんでした - URLを開き、フォームを選び、記入して、送信する。
そこから生まれたのがRTR (Real-Time Reporting)です。
ステップ1:RTRが実際に行うこと
アプリを起動すると、管理者のデスクトップ上で動作し、ローカルサーバーを作成します。同じネットワーク上のユーザーは管理者のURLにアクセスしてフォームページを開き、フォームを選択し、日付と必要な情報を入力して送信できます。
管理者アプリからは、送信されたフォームを閲覧したり、必要に応じてフォームを作成・修正したりできます。
# The architecture in a nutshell:
┌─────────────────────┐ IPC only ┌──────────────┐
│ Admin Panel (UI) │ ◄──────────────► │ Main Process│
│ Electron Window │ │ (Node.js) │
└─────────────────────┘ └──────┬───────┘
│
┌──────┴───────┐
│ Express HTTP │
│ Port 8080 │
│ LAN only │
└──────┬───────┘
│
┌─────────────────┼─────────────────┐
│ │ │
Phone/Tablet Desktop PC Any Browser
on the LAN on the LAN on the LAN
ステップ2:ユーザーアカウントを使わない理由
RTRは個別のユーザーアカウントを使用する代わりに、各フォーム送信に使用されたデバイスのMACアドレスを記録します。企業では通常、ネットワークに接続されるデバイスの数が決まっているため、従業員にログインを求めることなく、送信をデバイスに紐づけるシンプルな方法となります。
このアプローチを採用した理由は、帳票の精神に則り、誰でもアカウントを作成したりログインしたりすることなく、フォームを手に取って記入できるべきだと考えたからです。
ステップ3:ネットワークによるセキュリティ
RTRはイントラネットでの使用を前提に設計されています。ローカルネットワーク外からの接続を受け付けないため、セキュリティは基本的にRTRが動作しているネットワーク自体のセキュリティに依存します。
管理パネル自体はネイティブのElectronウィンドウであり、プロセス間通信のみを通じて通信します。ネットワークソケットは一切開かれないため、ファイアウォールの設定に関係なくLANからアクセスすることはできません。フォームサーバーはLAN側のネットワークアダプターにのみバインドし、ホワイトリストに登録されたIPアドレスまたはCIDR範囲へのアクセスを制限します。
ステップ4:主な機能
- フォームビルダー - さまざまな質問タイプを使って報告フォームを作成・修正
- 送信ブラウザ - 収集された回答を閲覧、フィルタリング、検索
- CSVエクスポート - Excel、Google Sheets、その他のデータツールで分析するために送信データをエクスポート
- IPホワイトリスト - フォームにアクセスして送信できるデバイスを正確に制御
- デバイストラッキング - MACアドレスの記録により送信をデバイスに紐づけ
- 完全ローカル - すべてのデータは管理者のマシン上のSQLiteに保存され、クラウドは不要
ステップ5:技術スタック
RTRは以下の技術で構築されています:
- Electron - 管理パネル用のネイティブデスクトップシェル
- Node.js + Express - フォーム配信用の軽量HTTPサーバー
- SQLite - 設定不要のローカルデータベース
- NSIS - Windowsインストーラーのパッケージング
ステップ6:ダウンロード
RTR v0.1.0をダウンロード (Windows x64)
または、ソースからクローンしてビルド:
git clone https://github.com/petermurrayx/RTR--Real-Time-Reporting.git
cd RTR--Real-Time-Reporting
npm install
npm start # development mode
npm run build # build the installer
注意: インストーラーはWindows 10/11 (x64) 用です。初回起動時にWindowsファイアウォールがLANアクセスの許可を求めます。他のデバイスがフォームサーバーにアクセスできるよう、許可してください。
最新のAI技術を使っているわけではありませんが、このプロジェクトは私がコンピュータサイエンスの道に進んだ原点を思い出させてくれます:テクノロジーを使って人々の生活をより便利にし、より効率的に働けるようにし、物事を成し遂げる手助けをすること。
お時間があれば、ぜひチェックしてみてください。MITライセンスなので、誰でもコードを使用・修正できます。