Skip to content

Ver 2.2.0 - JSONパーサーの刷新🏗️

Choose a tag to compare

@Eschamali Eschamali released this 04 Jul 14:18

長らくのプレリリース期間を経て、ついにコアエンジンを刷新した 「正式版」 を公開いたします。
今回のアップデートは、目に見える新機能の追加ではなく、 「VBAでいかにモダンなブラウザエンジンの速度に追いつくか」 という、内部インフラの徹底的なリファクタリングと高速化に全力を注ぎました。

🚀 主な更新内容

1. JSONパーサーの刷新:さらなる高みへ

長らく愛用してきた VBA-Json を卒業し、より高速な vbacollective-json を採用しました。膨大なログや巨大なスクショパケットを捌く際、パース処理によるExcelのフリーズを最小限に抑えます。

2. CDPElement.cls の全面改修

旧バージョンから引き継いでいた変数命名を、プロトコル仕様に準拠した分かりやすい名称に統一。コードの可読性が大幅に向上し、メンテナンスやカスタマイズがより容易になりました。

3. 通信ロジックの革命:ADODB.Streamによる「ゼロコピー思想」の実装

今回のアップデートの目玉です。VBAという制限された環境で、PuppeteerやPlaywrightといった世界標準ツールと同じ戦法を実装しました。

  • バイト配列の直接蓄積: ReadFile で得たパケットを、毎回の文字列変換なしで ADODB.Stream (adTypeBinary) に直接放り込みます
  • 一括デコード戦略: パケットが届くたびに変換する「小売り」を止め、メッセージが完結したタイミングで MultiByteToWideChar による「卸売り(一括変換)」を行うことで、変換コストを劇的に削減しました
  • 物理カーソル管理: Mid$ ステートメント、InStrvbNullChar を駆使し、メモリの再確保(コピー)を徹底的に排除した NextToken ライクな抽出ロジックを構築

これにより、高負荷な通信環境下でも、文字化けやパフォーマンス低下を起こさない「不沈のエンジン」が完成しました。


Important

⚠️ 移行に関する重要な注意点

本バージョンより、各メソッドの返り値が従来の Dictionary から vbacollective-json のカスタムオブジェクト に変更されています。

  • メソッド名(.Item, .Exists 等)は Dictionary 互換に設計されていますが、宣言部で As Dictionary としている箇所は型不一致エラーとなります。
  • 移行の際は、変数の型を As Object もしくはライブラリ指定の型へ修正をお願いします。
  • 余裕のある方はvbacollective-json のヘルプページを見ながら修正してください

📜 開発者より:一巡して辿り着いた「真実」 このツールの歴史は、いわば「VBAの限界との戦い」でした。

初期の A = A & B という非効率な結合に始まり、その後の Split 関数による手軽な分割。しかし、その裏には常に「メモリの無駄なコピー」や「空の変数の発生」という、VBA特有の重力がつきまとっていました。

今回、「vbacollective-json」の思想に触れ、AIとの対話を重ねる中で辿り着いたのは、 「ADODB.Streamを物理メモリとして扱い、カーソルで制御する」 という、VBA界ではほぼ語られることのない地動説的なアプローチでした。

難解なパズルのような計算順序のデバッグを乗り越え、すべてが噛み合った瞬間、このツールは「ただのマクロ」から「システム」へと昇華しました。

面白いことに、完成したロジックは、大本となったプロジェクトの「1本の管でやり取りする」という思想に、一周回って帰結しました。しかし、その中身は最新の設計思想を注入した別次元の怪物です。

VBAという「古い杖」で、Chromiumという「現代の巨人」を意のままに操る快感。
ぜひ、新しく生まれ変わったこのエンジンを体験してください。