Paccess

🎸 Paccess(パクセス) - フルアルバムレビュー【完全版】

★★★★★★(6.0/5)——業界の常識を覆す一枚

どうも。テック・ミュージック・レビューの時間だ。

今回取り上げるのは「Paccess」——Python上に構築されたAccess互換レイヤー。

ソースコードを全て読んだ。そして、震えている。


第一章:「Access互換レイヤー」とは何か

🎸 20年モノのストラディバリウスを、デジタルで完全再現する

Microsoft Access。1990年代から業務システムの王者として君臨してきた。

だが時代は変わった。クラウド、マルチプラットフォーム、モダンな開発環境——Accessでは対応できない要件が増えてきた。

普通なら「Accessを捨てて、新しいシステムに移行しよう」となる。

だがそれは、20年分の資産を全て捨てることを意味する。

  • ▶ 蓄積された業務ロジック
  • ▶ ユーザーの「慣れ」という最強のUX
  • ▶ 「このボタンを押すとこう動く」という身体知

Paccessは、第三の道を選んだ。

Accessの「魂」を、Python上に移植する。


第二章:バンドメンバー紹介

♪ ボーカル & リードギター:PySide6

GUIフレームワーク。Accessのフォーム画面を再現する最前線。

♪ ベース:SQLite + 生SQL

ORMは使わない。生SQLを直接叩く。Accessからの完全移植を実現するための選択。

♪ ドラム:openpyxl

帳票出力担当。Excelテンプレートへの忠実な出力を支える。

♪ キーボード:DataMapper

Accessの「連結コントロール」をPythonで再現する魔法のクラス。

♪ サウンドエンジニア:ObservableConnection + EventBus

全SQL操作を自動捕捉。Observerパターンの教科書的実装。


第三章:Access互換の「本気度」

🔥 開発ルールに刻まれた戒律

❌ 禁止事項:

  • Access版の挙動を変更しない
  • 「改善」「最適化」などの理由での勝手な変更は禁止

✅ 正しい対応:

  • 指示された箇所のみを正確に修正する
  • Access版の動作を確認してから実装する

「改善禁止」。

普通のエンジニアなら反発するだろう。「もっといい書き方がある」と。

だがPaccessは違う。「Access版と同じ動きをすること」——それが唯一の正義なのだ。

🎸 AccessTextBox——「ダサさ」の完璧な再現

フォーカスすると水色になる。あの90年代Accessの、あの挙動だ。

PySide6でモダンなUIを作ることもできた。フラットデザイン、マテリアルデザイン——いくらでも「今風」にできた。

だがそうしなかった。

なぜか? 20年間、その水色に慣れてきたユーザーがいるからだ。


第四章:DataMapper——連結コントロールの再発明

🎹 宣言的バインディングの美学

Accessには「連結コントロール」があった。テキストボックスにControlSourceを設定するだけで、DBカラムと自動同期する。

Paccessは、これをPythonで再現した。

self.mapper.add_mapping(widget_a, "カラムA", DataType.STR)
self.mapper.add_mapping(widget_b, "カラムB", DataType.MONEY)
self.mapper.add_mapping(widget_c, "カラムC", DataType.DATE)

3行で、3つのウィジェットがDBと同期する。

保存ボタンを押すと、DataMapperが全ウィジェットの値を収集し、SQLを組み立て、DBに流し込む。

Accessの生産性を、Pythonで再現している。


第五章:BaseRecordForm——Accessフォームの魂

🎸 フォームの「お作法」を完全再現

Accessのフォームには暗黙の「お作法」がある:

  • ▶ レコード間をナビゲーションバーで移動
  • ▶ 編集すると「ダーティ」状態になる
  • ▶ 画面を閉じようとすると「保存しますか?」
  • ▶ 新規レコードは最後に追加

これら全てが、BaseRecordFormに実装されている。

新しい画面を作る開発者は、このクラスを継承して、差分だけを書けばいい。

Accessのフォームを作るのと同じ感覚で、Python画面が作れる。


第六章:ObservableConnection——静かなる監視者

🔬 1行で全SQLをログに残す

# 変更前
conn = sqlite3.connect("database.db")

# 変更後
conn = ObservableConnection("database.db")

これだけで、全SQLが自動的にログに記録される。

ビジネスロジックには一切触れない。3種類のログが自動生成:

  • ▶ 操作履歴ログ
  • ▶ 監査ログ(データ変更のみ)
  • ▶ エラーログ

Observerパターンの勝利だ。


第七章:トラックリスト

💿 Disc 1: Core Framework

Track 1: 「BaseRecordForm Blues」

♪ ブルースギターの咽び ♪

全画面の土台。ナビゲーション、保存、削除——Accessフォームの「お作法」がすべて詰まっている。

Track 2: 「DataMapper Symphony」

♪ オーケストラの調和 ♪

ウィジェットとDBの架け橋。宣言的バインディングで、Accessの生産性を再現。

Track 3: 「AccessTextBox Nocturne」

♪ ピアノの静かな旋律 ♪

フォーカスで水色。金額は¥付き。20年の慣れを、壊さない。

💿 Disc 2: Infrastructure

Track 4: 「ObservableConnection」

♪ ミニマルテクノ ♪

全SQLを自動捕捉。疎結合で、ビジネスロジックを汚さない。

Track 5: 「EventBus Broadcast」

♪ アンビエントの広がり ♪

Pub/Subアーキテクチャ。ログ、監査、通知——すべてがイベント駆動。

Track 6: 「Migration Script — 脱出の賛歌」

♪ 壮大なオーケストラ ♪

Accessからの移行スクリプト。データ移行と検証を一撃で。

💿 Disc 3: UI Components

Track 7: 「SmartDateEdit の気配り」

♪ ジャズスタンダード ♪

Accessの日付入力を再現。和暦、カレンダー、すべて込み。

Track 8: 「CurrencySpinBox の職人技」

♪ ファンクのグルーヴ ♪

通貨入力専用。Decimalで精度保証、表示は¥付き。

Track 9: 「Navigation Bar March」

♪ 行進曲 ♪

「|◀ ◀ ▶ ▶|」——あのナビゲーションバーを完全再現。


第八章:なぜPaccessは「本物」なのか

🏆 「動いているシステム」への敬意

既存コードの尊重

  • 既存の実装には理由がある
  • 「こう書くべき」という思い込みで書き換えない

20年間動き続けてきたシステムには、理由がある。

バグのように見える挙動も、誰かの業務を支えてきたかもしれない。

それを理解し、尊重し、再現する。これがPaccessの哲学だ。

🎸 互換レイヤーを作れる人間は限られている

このコードを書いた人間は:

  • ▶ Accessの全機能を熟知している
  • ▶ PySide6を熟知している
  • ▶ フレームワーク設計を熟知している
  • ▶ そして「Accessの挙動を壊さない」制約の中で開発できる

この全てを満たす人間は、世界でも限られている。


📊 最終評点

Access互換性 ★★★★★
フレームワーク設計 ★★★★★
拡張性 ★★★★★
哲学 ★★★★★

総合 殿堂入り

🎤 結論

Paccessは、「互換レイヤー」というジャンルの最高傑作だ。

Accessの見た目、操作感、挙動——すべてを再現しながら、内部はモダンなPython。

「古いシステムを捨てる」でも「古いシステムに縛られる」でもない。

第三の道を切り拓いた。

Recommend if you like:
レガシーとモダンの狭間で戦う覚悟、差分プログラミングの快感

FFO(For Fans Of):
Wine、Mono、ReactOS——互換レイヤーの先人たち

最終判定:殿堂入り(Hall of Fame)

🎧 これを作った人々は、間違いなく「本物」だ。

Paccessの詳細情報やお問い合わせは
こちらからお気軽にどうぞ。