Linuxのデスクトップとサーバーについて扱います。)がリリースする予定の、クロスプラットホーム・デスクトップアプリケーション・GUIフレームワーク・クロスレビュー本(仮)(以下、クロス本)の一部の草稿です。クロス本は、筆者のGTK/Qt/Electronの経験と知見について扱います。具体的な解説書というより技術エッセイです。本文章には、校正前の文章・記憶により記述し未確認の内容・雑なmarkdown風紀法・張ってないURLリンク、などがあります。デプロイ開発というコストの存在を忘れる開発者はいない。空ウィンドウ表示までに環境構築という見えないハードルがあることはついわすれがちになる。同じように、開発完了からアプリケーションをリリースするまでにも、デプロイという大きな見えないハードルが存在する。gtk-rs(GTK/Rust)やPyQt(Qt/Python)を使用していないのは、デプロイ方法の十分な情報が期待できないことが大きい。実用的なアプリケーションは外部ライブラリを使う可能性が高く、アイコン画像などのその他のリソースを使う場合が多い。それら必要な依存ファイルをインストーラに積載する方法が必要である。筆者は、デプロイはバイナリと必要な依存ファイルをzipした配布パッケージを作成して行っている。インストーラの作成はQtアプリケーションのWindows版でしかしたことがない。MacOSXアプリケーションはGTK,Qtでの開発経験はなく、Electronでしかデプロイ・リリースをしたことがない。MacOSX版でアプリケーション・アイコンを使う場合は別途アイコンの章を参照。GTKGTKにはQtのような独自のインストーラ構築システムは無い。GTKによる補助としては、インストーラ(配布パッケージ)には添付する必要のある設定ファイルがあり、その設定ファイルを構築するためのプログラムがGTKにより用意されている。GTKアプリケーションのデプロイには、Windows版バイナリが公式から配布されていないという大きな問題がある。GTKライブラリのビルドは、依存ライブラリ自体の数が多く、バージョン含む依存関係が複雑である。集めるだけでも難しい。GTKアプリケーションを作りたいだけのライト開発者(?)が挑戦すると挫折する危険性が高い。GTK2の途中までは公式から配布されていた。bundle`のページがリンク切れしてる。直リンクからファイルはダウンロードできる。)の配布している野良ライブラリを使用している。)によると、他にmsysのpacmanにwindowsクロスビルドのバイナリがあるため、パッケージマネージャから取得するのが推奨の模様。パッケージが展開された先からバイナリをコピーして集める方法でもWindows版が得られると思われる。付属の設定ファイルを再構築する必要がある。フルパスになっている箇所を相対パスに置換する必要がある。ディレクトリ内のライブラリのバイナリから必要なものだけ抜き出す作業は基本的にトライアンドエラー。`gschemas.compiled`,`loaders.cache`に対して、sedしたり、`bin\glib-compile-schemas.exe`,`gtk-update-icon-cache.exe`などを使ったり(詳細は忘れてしまった)。)に直接尋ねることになった。Linux版は基本的にはリポジトリから取得すれば開発には足りる。-y`Windows:GTK3アプリケーションのWindows版ビルドのデプロイは、圧縮ファイルにまとめるまではクロスコンパイラ等を用いることでWindowsを使用せずすべてLinux上で完結できる。)を参考にするとよい。Linux:Linux版は作成しなかったのでやり方はわからない。(Linux版は.debパッケージを作ろうとしていた記憶があったのだが勘違いだった模様。)MacOSX:MacOSX版は作成しなかったのでやり方はわからない。QtQtには独自のインストーラ構築システムがある。アプリケーションを含むディレクトリをインストーラにパッケージするプログラムが用意されており、Windowsで使用してインストーラを構築したことがある。Windows:やり方は同人誌が出ている。)日本語で貴重な情報が整理されているので必要になったら迷わず買うべき。筆者は、この同人誌の前の版を購入した同僚が作ったインストーラ作成システムの、説明書を読みながらコマンドラインを叩いただけなので詳細は把握していない。当時のシステムは依存ライブラリを収集しきれていないようで、2つくらい手作業でコピーする必要があった。Linux:Windows版のQtアプリケーションではインストーラを作ったが、同じアプリケーションの、Linux版の配布パッケージをインストーラでない圧縮ファイルとして作成した。FrameworkのLinux版がどうなっていたのかは記憶にない。筆者はlddを使って依存関係を見ながら、手作業でシステムから依存ライブラリ等を集めた。MacOSX:MacOSX版は作成しなかったのでやり方はわからない。ElectronElectron向けのパッケージングシステム、npmに4種類以上ある模様。どれを使うのか悩むレベル。公式ドキュメントでパッケージングを扱っているページ。Windows:筆者は試していないが、Wineの存在もあってか、インストーラ作成まで作業をLinux上で完結できるらしい。Linux:debなどが作れる。Linux以外の環境で作ったことはないけれど、Linuxのインストーラパッケージは大抵はただの圧縮フォルダなので、多分作れるのではないかと思う。MacOSX:きちんと案内していないパッケージシステムも多いけれど、どのパッケージシステムでも、MacOSX向けのインストーラはMacOSX以外では作成できない模様。)もissueにそのような回答がある。MacOSXアプリケーションがLinux上でビルドできるのは衝撃的だった。実際はダウンロードしてきたビルド済み実行ファイルからアプリケーション固有のファイルを読んでいるだけと思うが。mini2を試験導入していてすごく便利で体感が良かったです。nijiflowをベースに、機械学習で艦これとアズールレーンの画像の分類器を作り、学習済みグラフ等を公開した。これのTwitterBotを作成し公開している。データセットはPixivのタグ付け済み画像情報を元に作成した。Web上にあまり開封写真等の詳細がなかったので残しておきます。モノが大きいためか、知らない運送会社でおくられてきた。...JavaScriptで、変数を使った正規表現マッチング例および失敗例は、自作のJavaScriptソースから抜粋。※例ごとにマッチする文字列が違いますがご容赦ください。