[SlackLogViewer]Slack過去ログ閲覧ツール更新(3)。

最初はちょっとしたバグフィックスをして更新するつもりだったのだが、Qtでzipファイルを解凍せずに読み出すためのとても良いライブラリを見つけてしまったので、それも導入しつつ色々と改造した。
SlackLogViewerについての説明はこちら
Windows版のダウンロード先はこちら。SlackLogViewer.v1.1.Beta3.zipをダウンロードし解凍すればよい。

更新情報

1. エクスポートしたzipファイルを解凍せずに読み出す機能を追加

今まではzipを解凍してからそのフォルダを指定して中身を読み出していたが、本バージョンからはzipファイルを直接読み出せるようになる。従来どおり解凍してから読ませてもよい。

2. エクスポートしたデータの破損への対応

最近Slackのデータをエクスポートしたところ、一部のメッセージが破損していた。具体的に言うと、ファイルへのコメントの一部でメッセージの内容とユーザー情報などの欠如が見られた。従来のSlackLogViewerはこれらの情報が存在することを前提に設計していたので、情報欠如により例外が送出され、異常終了する可能性があった。 本バージョンではとりあえず異常終了のみを回避しており、SlackLogViewer上では破損したメッセージの残骸(NoNameユーザーによる謎メッセージ)が表示される。もしかしたらファイルへのコメント以外にもこのような破損が生じるかもしれないので、その保険でもある。

3. その他

zipファイルへの対応ついでにjsonのパースを並列処理するようにしたので、チャンネルの読み込みが少し速くなっている。
また最近私はVisual Studioのプロジェクトを諸々CMakeへ移行させているのだが、本プロジェクトも同様にCMakeへ切り替えた。ただしGCCやClangでのビルドはまだ試していないため、MacLinuxで使用できるかは不明である。

なお、今回の更新により新たにQuaZIPとzlibの2つのライブラリを導入している。

余談

上述したQuaZIPというライブラリを発見したことが今回の更新の発端である。zipファイルを解凍せずに読み出す方法をずっと調べていたもののなかなか良い方法がなく、半ば諦めつつもあったのだが、まさかQt上でzipファイルを扱う専用のライブラリが存在したとは。
しかしこのライブラリの導入も一筋縄ではいかなかった。vcpkg経由でインストールしようとしたのだが、できなかったのである。問題はQuaZIPではなくてQtの方だ。Qt Web Engineをvcpkgでインストールしようとすると「ファイルパス長すぎ」とエラーが出てしまい、解消できなかったのだ。かと言ってvcpkgのリポジトリをアップデートすると今度はQtそのもののインストールが謎のビルドエラーにより不可能になってしまい、にっちもさっちもいかなかった。仕方ないので、Qt、QuaZIP、zlibをvcpkgに頼らずすべて手動でインストールした。C++の環境構築は何故こんなに面倒臭いんだ!

Qtもvcpkgも使うんじゃなかった、とちょっと後悔し始めている。しかし有力な代替案があるわけでもないのが悲しいところ。C++自体を使うべきじゃなかったって?……まあ、うん、SlackLogViewerに限って言えばそうかも知れない。本アプリケーションはC++にしかない独自機能などはほぼ必要ないし使っていないので、他の言語でも十分実装可能だろう。

先日過去ログの自動バックアップ機能を付けてほしいという要望があったが、今回の更新で私の余剰時間を使い果たしてしまったこと、恐らくどこかに同等の機能を有するツールが転がっているであろうことを理由に一旦見送ることにした。需要が多くて、今回のように偶然時間が出来、かつ私の気分が上向いたら作るかもしれないが、期待しないで欲しい。