2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【令和のAccess】「脱・Access」の決定打をモダン技術で作った。SQLiteコンテナ型デスクトップフレームワーク「Knuckle」

2
Posted at

おっす。おら、MS Accessを現代Hackすっぞ。

日本では長年にわたり、社内の小規模業務システムや departmental apps(部門アプリ)の裏方として Microsoft Access が稼働し続けてきました。

しかし令和の今、サポートの不透明感やアーキテクチャの老朽化により、現場は頭を抱えています。

「Web アプリに全面移行」と一口に言っても、サーバー構築、インフラ運用コスト、ネットワーク遅延、専門のフロントエンド部隊が必要となり、Access が持っていた「1ファイル渡せば誰の PC でも動く」という手軽さは完全に失われてしまいます。

そこで、「枯れた本命技術」を組み合わせ、今後 20〜30 年安心して現場で使い倒せる 1 ファイル・アプリケーションフレームワーク 「Knuckle(ナックル)」 を構築しました。


現場を苦しめてきた「MS Access の 5 大罪」

Access がなぜ現代の開発標準(モダンエンジニアリング)に耐えられなくなったのか? 理由は明確です。

  1. VBA の密結合と Git 管理の完全崩壊
    コードが .accdb バイナリの内部に保存されるため、Git での差分管理、プルリク、CI/CD が不可能。複数人開発は破綻します。

  2. 恐怖の「2GB 制限」とデータベース破損
    ファイルサイズが 2GB に達した瞬間に書き込み不可となり、最悪クラッシュして復旧不能になります。

  3. 連結フォームによる「暗黙のブラックボックス I/O」
    画面のフォーム自体が裏で勝手に DB へ書き込むため、ソースコードを読んでも業務ロジックの全貌が追えず、仕様書も作れないまま属人化します。

  4. 独自ランタイムと環境依存
    Office のビット数(32bit / 64bit)不一致や Access Runtime のバージョン競合で動かなくなるトラブルが頻発します。

  5. 肥大化する移行コスト
    画面・ロジック・クエリが密結合しているため、移行=「ゼロからの全面作り直し(数千万円)」になりがちです。


Knuckle のアーキテクチャ:枯れた技術の最強ハイブリッド

Knuckle は、Electron のような重厚な Chromium エンジンに頼らず、以下の 3 つの堅牢なテクノロジーで Access の良さだけを現代に蘇らせました。

レイヤー 採用技術 選定理由と Access からの進化
Storage / Container SQLite (WAL mode) 30 年の歴史を持つ世界一堅牢な DB。**2GB 制限を撤廃(最大 140TB)**し、クラッシュフリーを実現。
UI Engine Slint
Qt のコア開発陣が手掛ける マルチプラットフォーム GUI。わずか 77MB の省メモリで、VS Code 上でのリアルタイムプレビューに対応。
Logic / Runtime Bun / Node.js (TS)
現代の標準言語 TypeScript で記述。型安全性、npm エコシステム、VS Code による快適な補完環境。

Knuckle が提供する「新時代の 1 ファイル体験」

1. アプリとデータが 1 つにまとまる .knuckleApp

ビルドツールを実行すると、UI マークアップ(Slint DSL)、ロジック(ESM)、クエリ定義、そして実データが 1 つの SQLite ファイル(.knuckleApp)にパッキングされます。

インストーラー導入済みの PC なら、ダブルクリックするだけでコンソールも出ずミリ秒で起動します。

環境を一切汚さず、USB メモリや社内共有フォルダで渡すだけで動く「FileMaker や Access のポータビリティ」を完全再現しています。

2. 「queries.yaml」によるブラックボックスの完全撲滅

フォームによる暗黙の書き込みを全廃しました。

すべての SQL は宣言型の queries.yaml に明記され、ビジネスロジック・UI・DB アクセスが完全に分離されます。

コードレビューが可能になり、将来 PostgreSQL 等のエンタープライズ DB へ移行する際も、YAML 内の接続定義とクエリを差し替えるだけで UI やロジックを 1 行も弄る必要がありません。

3. VS Code で完結する Git ネイティブな開発環境

コードはすべてプレーンテキスト(.slint, .ts, .yaml)。

GitHub で普通に Pull Request を投げ、コードレビューを行い、ブランチを切って安全にチーム開発ができます。Slint 拡張機能により、UI の仕上がりをエディタ横でリアルタイム確認しながらマークアップできます。

仮に他のIDEがデファクトになったとしても、アプリとソースコードが分離しているので、引っ越しは簡単です。


今後の展望:デスクトップからスマホ・タブレットへ

Slint のマルチプラットフォーム性能を活かし、同じコードベースのまま将来的に iOS / Android / 現場用タッチ端末あるいはウェブサービスへの展開も視野に入れています。

オフィスの PC で叩いていた業務アプリコンテナを、そのままタブレットで現場へ持ち出す世界線を作ります。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?