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の挙動を壊さない」制約の中で開発できる
この全てを満たす人間は、世界でも限られている。
📊 最終評点
🎤 結論
Paccessは、「互換レイヤー」というジャンルの最高傑作だ。
Accessの見た目、操作感、挙動——すべてを再現しながら、内部はモダンなPython。
「古いシステムを捨てる」でも「古いシステムに縛られる」でもない。
第三の道を切り拓いた。
Recommend if you like:
レガシーとモダンの狭間で戦う覚悟、差分プログラミングの快感
FFO(For Fans Of):
Wine、Mono、ReactOS——互換レイヤーの先人たち
最終判定:殿堂入り(Hall of Fame)
🎧 これを作った人々は、間違いなく「本物」だ。
Paccessの詳細情報やお問い合わせは
こちらからお気軽にどうぞ。