2021年6月27日日曜日

denoをどうにかしてデスクトップアプリとして使いたい

この投稿は雑談的な内容です。
最後まで読んでも、特に役に立つ内容は(多分)ありません。
タイトルの通り考えて試行錯誤した経緯を書いておけば、後々何かの役に立つ機会もありそうな気がしたという感じです。


私は今までhtaやwshなどに頼っていました。完全に。
どのくらい頼っていたか、これから先もまだまだ使っていくつもりだったかはvectorで私が公開したソフトをダウンロードして更新履歴を見ていただければ お分かりいただけるかと思います。

しかし残念ながらInternetExplorerのサポート終了が正式に発表されて、それを構成するコンポーネントも2029年に使えなくなる見込みとなりました。

そういう訳で、代替手段を求めて色々考えてみました。

最初は「なんでもいいから最低限の機能が使えればいい」という考えで、かなり妥協するつもりでした。具体的には
webブラウザをインターフェースにしてファイルシステムにアクセスしたりコマンド実行できるものであれば、htaを使う場合と比較して使用感を多少損なうものでも受け入れる、というつもりでした。

今まで使っていた言語がJavaScriptだったので、node.jsを試そう…と思って調べてみたらdenoの事を知り、TypeScriptも試してみたら書き心地がとても良かったので、本格的に使っていきたいと思い、色々書いていると段々欲が出てきてしまいました。

  • webブラウザの中から抜け出したい。
  • 単体のアプリのような見た目、使用感にしたい。
  • タスクバーにオリジナルアイコンを表示して識別しやすくしたい。


その欲を満たすのは、現状ではdenoだけでは無理です。かつてのnode.jsが当初の目的以外の幅広い分野で利用されるようになったのと同じようにdenoも将来的には様々なツールと連携してGUIアプリの作成例がネットに溢れる時代が来るかもしれませんが、そこまで待つ余裕は今の私にはありません。

とりあえず、アプリっぽく見せかけられるブラウザさえ用意できれば、画面の内側はdenoで何とか出来そうなので、その方向で試行錯誤しました。


候補

  • chrome portable
  • denoWebView
  • WebView2
  • Electron



chromeは起動オプションを使うことで、それっぽい事が出来ます。
portable版で起動オプションが使えればchromeをインストールしていないPCでも使えるので、それが一番手軽な選択肢…と考えましたが、私の環境ではportableは何故かクラッシュしてしまい使い物になりませんでした。(google.co.jpすら開けない)

denoWebViewは「deno GUI」で検索したら上位の方に出てきたので知りました。
Readme.mdのページには魅力的なスクショ画像が掲載されていますが、私の環境ではrunできませんでした。
バージョンの組み合わせを変えてみたりローカルにダウンロードしてデバッグ:trueにしてみましたが、駄目でした。

WebView2は.NET系統の環境で使えるらしく、Chromium相当のブラウザ機能を提供してくれるコンポーネントらしいです。
開発する場合、基本的にはVisualStudioが必要ですが、コンパイラは無償提供されています。サンプルソースも沢山あります。私はブラウザさえあれば中身はJavaScriptで自由に操作できるので、サンプルをコンパイルして実行ファイルさえ作れれば良いからVisualStudioが無くてもなんとかなる…と思いました。言語に拘らず沢山のサイトを見て試行錯誤を重ねました。

正直なところ私は「インストール」という行為が苦手で、特に無数のファイルをPC内の複数箇所に配置されるのを嫌います。
理由は、他のPCと違う環境になってしまい、どこかのPCでは動作するプログラムが他のPCでは何故か動かない、という状態を招く恐れがあるからです。自分のPCで動作している物が何に依存しているのか分からないと、他のPCで問題が起きた時に対処が難しくなってしまいます。

だから出来る限り何もインストールしたくないのですが、全く何もインストールしないのではWebView2を試す事もできなさそうだったので、最低限必要と思われる物から徐々に入れていき、何度も何度も試行錯誤を重ねました。
最終的には「まだインストールしていないのはVisualStudioだけ」と言えるぐらい色々入れても結局WebView2のサンプルはコンパイルできませんでした。
VisualStudioは諸々の理由があって、どうしてもインストールするわけにはいかないので諦めました。

Electronはnode.jsを使い始めた頃に少しだけ触っていました。とりあえず本命的な技術が使えるようになるまで凌げれば良いので、この際「denoのインターフェースをElectron(node.js)にする」という事に対する違和感は無視することにしました。
今のところ他に選択肢はありませんし、流石にトライ&エラーを繰り返しすぎて心が折れそうなので、そろそろ飴が欲しい気分でした。

とはいえElectronもwebサイトに記載されている内容を見よう見まねでやってみた程度の経験しかないのでpackage.jsonの構文ルールも知らず、少し変えると途端にBuild不能になって萎えます。Buildできても単一ファイルじゃないしサイズも100メガバイトを超えちゃってるし、起動もなんだか遅い気がするし…という感じで、やろうとしている事が出来たとしても実用に耐えられるか不安です。

そんなわけで、しばらく試行錯誤の日々が続きそうです。。。

0 件のコメント:

コメントを投稿