[SlackLogViewer]Mac、Linuxへの対応。

更新情報とは少し異なる。Windows版ユーザーには関係のない話である。
cielavenir様からプルリクエストをいただき、SlackLogViewerMacLinux上で使用可能になった。Mac用のビルド済みのバイナリもcielavenir様が作成してくださったので、Releasesにて配布している。macosと付いたファイルをダウンロードすればよい。Macユーザーはcielavenir様にひれ伏しなさい。

2022年8月23日追記。cielavenir様から頂いたmacOS用バイナリのダウンロードに失敗していたらしく、ファイルが破損していることを確認したので、差し替えた。 2022年9月2日追記。上記の差し替えたファイルにも不具合があることがわかり、その修正版を新しいバージョンで公開した。

Linux用のバイナリは到底配布できないのでユーザー各々にビルドしてもらう必要がある。色々とライブラリを使っているのでちょっと面倒ではあるが、本記事ではCMakeを用いたビルド方法を簡単にまとめておく。なおコンパイラはMSVC、GCCにのみ対応しており、Clangは未対応であるため1Macの場合もGCCでビルドする必要があるv1.2.Alpha-1以降はMSVC2019/2022、GCC-9.5.0/11.3.0、Clang-12.0.0でビルドできることを確認している。GCC-10以前とClangの場合は<execution>を使用しないように変更してある。
SlackLogViewerの説明はこちらへ

ビルドに必要なライブラリ

  • Qt Qt5なら5.14以上、Qt6は6.2以上。追加モジュールとして、QtWebEngine(Qt6の場合はさらにQt5Compat、QtWebChannel、QtPositioning2)も導入すること。
  • zlib ver-1.2.11で動作確認。
  • QuaZIP ver-1.1で動作確認。
  • TBB GCC-11以上を使う場合に必要。ver-2021.5.0で動作確認。

aptコマンドなりhomebrewなり自前ビルドなりでこれらをインストールしなければならない。

Qt5についてはQtWebEngineにPDF表示機能が実装されたのが5.14以上だったような記憶があるため、これより上でなければならない。Qt6でも6.1以前はQtWebEngineを持たないので、6.2以上が必要である。
zlib、QuaZIPの最小バージョンは不明である。Linuxの場合、QuaZIPは古いバージョンだとCMakeの互換性に問題があり自前でビルドしなければならない場合があった。
TBBはMSVCでは必要なかったのだが、GCCではstd::execution::parを用いる場合に要求されるらしい(標準ライブラリの機能だろうに変な依存関係作るなよ……)。こちらも最小バージョンは不明。

そういえばWindowsだと実行時にQtがOpenSSLを要求していたが、MacLinuxでどうなのかはよく分からない。

インストール手順

通常のCMakeのビルド、インストール手順に則る。GitとかCMakeとかちんぷんかんぷん、なんて人がLinuxユーザーにいるとは思わないが、一応典型的な手順を簡単にまとめておく。

  1. 事前に上述のライブラリをインストールし、PATHLD_LIBRARY_PATHCMAKE_PREFIX_PATHを設定しておく。
  2. 任意のディレクトリでgit clone https://github.com/thayakawa-gh/SlackLogViewer.gitを実行し、ソースコード等をクローンする。
  3. mkdir build
  4. cd build
  5. cmake ../SlackLogViewer -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=path_to_install_dir 。Qt5を使う場合は-DQT_MAJOR_VERSION=5を追加する。
  6. make
  7. make install

と実行すればよい。指定したインストール先にビルドされたファイル等が展開される。
警告がたっぷり出るかもしれないが、私が修正をサボっているだけであるので無視してよい。

余談

私はMac未所持であるためMac上での動作確認を一切行っていないしデバッグも出来ない。Mac特有の不具合があったとしてもcielavenir様のように対処してくださる方が現れない限り対応困難であることをご理解いただきたい。また、今後の継続的なバイナリ提供が可能かどうかも不明である。GitHub Actionsなどを使ってバイナリを作成する方法はあると思うが、動作確認できない以上は誰かしらの協力は必要となる。誰か私にMacを提供してくれそうしたら全力でサポートするから。

Linuxの方は簡単に表示、検索などの試験は行ったものの、如何せん試験時間が極めて短いので、予想だにしないバグが隠れている可能性を否定できていない。が、そのあたりはユーザーからの報告を待ち必要に応じて対応することにする。私はそもそもLinux版をサポートする気はなかったのだ。申し訳ないがそこまで細かくテストできるほど私の余力は大きくない。
細かいところで言えば、Windows用に調整したGUILinux上で動かすと若干の乱れが生じるらしい。特に致命的でもないので我慢して欲しい。

久しぶりにUbuntu仮想環境とCLionを引っ張り出してきてビルドなどの作業を行ったのだが、至る所の設定方法を忘れていて大変だった。CLionはWindowsLinuxの作業環境統一のためにしばらく使ってみて、結局はVisual Studioのほうが使いやすかったので移行を断念したという経緯がある。残る選択肢はVisual Studio Codeくらいだろうか。しかしあれはあれで使いにくいんだよなぁ……。 最近はWSLがGUIにも対応したらしいので、あちらがQtアプリケーションのテストくらいこなせるのならVisual Studioのみで作業が完結するのだが、どうなのだろう。


  1. SlackLogViewerは検索結果を日時順にソートする際にstd::execution::parを使っているが、Clangは未だに<execution>を実装していないため、ビルド不可能なのである。
  2. Qt5CompatはQuaZIPが依存している。QtWebChannel、QtPositioningはQtWebEngineが必要とする。