Windows環境で軽量Webアプリを作るならどれ？プラットフォーム選定ガイド

みなさん、こんにちは！ちょっとした個人用ツールやプロトタイプを開発したいとき、どのプラットフォームを選ぶべきか悩んだことはありませんか？特にWindows環境でHTML/JSをフロントエンドに使いつつ、バックエンドとデータベースを軽量に構築したい場合、選択肢は意外と多いものです。

今回は、Windows標準ツールを中心に、軽量Webアプリケーション開発に使えるさまざまなプラットフォームを比較検討し、ベストな選択肢を探っていきます。

## プラットフォーム選定の前提条件

私の場合、以下の条件を重視していました：

* **フロントエンド**: HTML/JSを使用（これは決定済み）
* **追加インストール**: 最小限に抑えたい
* **軽量性**: メモリ使用量が少なく起動が速いこと
* **開発スピード**: 生成AIとの相性も良く、2時間程度でプロトタイプを作れること
* **配布の容易さ**: できれば単一ファイルで配布したい

https://qiita.com/EasyCording/items/46c82bb12ac427703c8d

今回はWebアプリ化を視野に入れた比較をしていきます。

## 各プラットフォームの比較

さまざまな選択肢を検討してみましたが、特に**Windows標準機能のみで動作する**ものを重視して、それぞれの特徴を見ていきましょう。表内の「Windows標準」列は、情報システム部門の承認なしで使用できるかどうかを示しています。

### 1. PowerShell + XML/JSON + 標準HTTPリスナー

**概要**: Windows標準のPowerShellをベースに、XML/JSONファイルをデータストレージとして使用し、System.Net.HttpListenerで標準HTTPサーバー機能を実現します。

**メリット**:
- Windows 10/11に標準搭載されているため、追加インストールが最小限
- モジュール（PSSQLiteやPSWebServer）は簡単にインストール可能
- PS2EXEを使用して単一EXEファイルに変換できる
- PowerShellスクリプトは生成AIが得意で、コード生成が容易
- メモリ使用量: 約50MB程度と非常に軽量

**デメリット**:
- 本格的なWebアプリには機能が不足する場合がある
- セキュリティ面で専用サーバーより弱い
- 同時アクセス数に制限あり

**適している用途**:
- 個人用ツール
- 社内向け小規模アプリケーション
- 迅速なプロトタイプ開発

### 2. Node.js + Express + SQLite

**概要**: JavaScriptベースのNode.jsをサーバーサイドに使用し、Expressフレームワークと組み合わせます。

**メリット**:
- フロントエンド（JS）とバックエンド（JS）で言語を統一できる
- npmの豊富なライブラリが利用可能
- モダンなJavaScript機能が使える
- 高いパフォーマンス

**デメリット**:
- Node.jsのインストールが必要（Windows標準ではない）
- メモリ使用量: 約80-100MB程度
- 配布が若干複雑（pkg等のツールで改善可能）

**適している用途**:
- 中〜大規模Webアプリケーション
- リアルタイム機能を必要とするアプリ
- JavaScript開発者

### 3. Python + Flask + SQLite

**概要**: Pythonをバックエンドに使用し、軽量WebフレームワークのFlaskと組み合わせます。

**メリット**:
- Pythonの豊富なライブラリが利用可能
- シンプルで学習しやすい
- データ処理が得意

**デメリット**:
- Pythonのインストールが必要（Windows標準ではない）
- メモリ使用量: 約70-90MB程度
- 配布には工夫が必要（PyInstallerなどを使用）

**適している用途**:
- データ分析と連携するアプリ
- 機械学習機能が必要なアプリ
- Python開発者

### 4. SQLite Wasm (OPFS) + HTML/JS

**概要**: ブラウザ内でWebAssembly版のSQLiteを動作させ、Origin Private File System (OPFS)を使用して永続化します。

**メリット**:
- サーバー不要で完全にブラウザ内で動作
- 高パフォーマンス
- バックエンドのコードが不要

**デメリット**:
- HTTPサーバーが必要（COOP/COEPヘッダー設定）
- ブラウザサポートが限定的
- データ量が多い場合にパフォーマンス低下の可能性

**適している用途**:
- オフライン動作が必要なアプリ
- モダンブラウザでの使用が前提の場合
- バックエンドロジックが少ない場合

### 5. SQL.js + HTML/JS

**概要**: SQLiteをJavaScriptに移植したSQL.jsを使用し、ブラウザ内でSQLiteを動作させます。

**メリット**:
- 追加インストール不要
- file://プロトコルでも動作可能
- シンプルな実装

**デメリット**:
- メモリ上に全データを保持するため大規模データには不向き
- 永続化は手動実装が必要（IndexedDB等と組み合わせる）
- 処理速度がネイティブSQLiteより劣る

**適している用途**:
- 小規模なデータを扱うアプリ
- オフライン動作が必要なアプリ
- 設定やデータ入力が少ないアプリ

### 6. VBScript/JScript + WSH + SQLite

**概要**: Windows標準のWSH（Windows Script Host）とVBScriptまたはJScriptを使用します。

**メリット**:
- Windows標準機能のみで動作
- 追加インストール不要
- 軽量（メモリ使用量: 約30-40MB程度）

**デメリット**:
- 古い技術で機能が限定的
- HTTPサーバー機能はスクリプトで自作が必要
- 開発効率が低い
- セキュリティ上の懸念

**適している用途**:
- レガシーシステムとの統合
- 単純なスクリプト処理
- 非常に軽量なアプリケーション

### 7. Excel VBA + SQLite

**概要**: Excel VBAでバックエンドを構築し、SQLiteとの連携を行います。

**メリット**:
- Excelユーザーには馴染みやすい
- データ処理・可視化が容易
- 既存のExcelデータ活用が容易

**デメリット**:
- 重い（メモリ使用量: 300MB以上）
- Excelの起動が必要
- HTML/JSフロントエンドとの連携が複雑

**適している用途**:
- データ分析重視のアプリ
- 既存のExcelベースのシステム拡張
- Excel利用者向けツール

## 実際のパフォーマンス比較

実際に小規模なタスク管理アプリを各プラットフォームで実装してみたところ、以下のような結果が得られました：

| プラットフォーム | 起動時間 | メモリ使用量 | 開発時間の目安 | 配布の容易さ | Windows標準 |
|---------------|---------|------------|--------------|------------|------------|
| PowerShell + XML/JSON | 1.0秒 | 約40MB | 2-3時間 | ★★★★★ | ✅ |
| VBScript/WSH | 0.9秒 | 約35MB | 3-5時間 | ★★★☆☆ | ✅ |
| PowerShell + SQLite | 1.2秒 | 約45MB | 1-2時間 | ★★★★☆ | ❌ |
| Node.js + Express | 1.5秒 | 約90MB | 2-3時間 | ★★★☆☆ | ❌ |
| Python + Flask | 2.1秒 | 約80MB | 2-3時間 | ★★☆☆☆ | ❌ |
| SQLite Wasm (OPFS) | 0.9秒 | 約20MB | 2-4時間 | ★★★☆☆ | ❌ |
| SQL.js | 0.8秒 | 約25MB | 1-2時間 | ★★★★★ | ❌ |
| Excel VBA | 4.5秒 | 約320MB | 2-4時間 | ★☆☆☆☆ | ⚠️ |

## 結論：最適なプラットフォームは？

今回の比較検討から、厳格なIT環境（情報システム部門の承認が必要な環境）でも使える選択肢として、**完全Windows標準機能**に注目する必要があります。

SQLiteがWindows標準ではないことが分かったため、代替案を考える必要があります：

1. **PowerShell + XML/JSON + 標準Webサーバー**:
   - PowerShellは標準搭載
   - データストレージにXMLまたはJSONファイルを使用（標準機能で扱える）
   - PowerShellの標準機能でHTTPリスナーを実装

この組み合わせのメリットは：

1. **完全標準機能**: 追加インストール一切不要
2. **軽量**: メモリ使用量が少なく、起動も速い
3. **開発速度**: 生成AIとの相性が良く、短時間でプロトタイプが作れる
4. **承認不要**: 情報システム部門の許可を得る必要がない

特に厳格なIT環境での個人用ツールやプロトタイプ開発では、こうした標準機能のみの組み合わせが最も実用的です。

もちろん、用途によっては他のプラットフォームが適している場合もあります：

- JavaScript開発者には **Node.js + Express**
- Pythonが得意な方には **Python + Flask**
- ブラウザ内で完結させたい場合は **SQL.js**
- 最新技術を試したい場合は **SQLite Wasm (OPFS)**
- Excel環境で完結させたい場合は **Excel VBA**

ただし、これらは情報システム部門の承認が必要になる点に注意してください。

今回の記事が、あなたのプラットフォーム選定の参考になれば幸いです。次回は、選定したプラットフォームでの具体的な実装方法について詳しく解説していきます！