
マイケル
みなさんこんにちは!
マイケルです!

エレキベア
こんにちクマ〜〜〜

マイケル
今回は Electron というフレームワークを用いて
ツールの開発環境を整えてみます!

エレキベア
Electron・・・確かフロントエンド技術で
アプリ開発できるフレームワークだったクマね

マイケル
そう、これまではちょっとしたツールはPythonで作ることが多かったけど
いくつか不満もあったし、フロント技術もある程度扱えるようになってきたから手を出してみたんだ!
そのあたりにも触れつつ、解説していこうと思います。

エレキベア
楽しみクマ〜〜〜
Electronの特徴

マイケル
まず、Electronとはどのようなものかというと、
JavaScript、HTML、CSS等のWeb技術を用いてデスクトップアプリケーションを構築するためのフレームワーク になります。
Electronとは
- JavaScript、HTML、CSS等のWeb技術を用いてデスクトップアプリケーションを構築するためのフレームワーク


エレキベア
Web技術がそのまま使用できるのは、
フロントエンドエンジニアからしたら有り難そうクマね

マイケル
そう、ReactやVueといったUIフレームワークも扱えるから
Web開発と同じような感覚でUI構築が行いやすいのが特徴だね

マイケル
Python等を使用して開発する場合、どうしても環境依存の問題が出てきてしまいがちだけど
Web技術をベースにしているためにプラットフォーム依存が少なくパッケージ化が容易い のもメリットです。
しかしその反面、Chromiumがそのまま組み込まれているためにアプリ容量が大きくなってしまう なのがデメリットになります・・・。

エレキベア
むむ、容量が大きくなるのは仕方ないクマね・・・

マイケル
最近だと容量問題を解決した Tauri というRustベースのフレームワークもあるから、こちらもその内触ってみようと思います。
以上をまとめると、下記のような特徴になります!
メリット
- Web技術を使用しているため、プラットフォーム依存が少ない
- ReactやVueといったUIフレーワークを使用することができる
- アプリ開発を前提に用意されているため、パッケージ化が容易い
デメリット
- chroniumをそのまま組み込んでいるため容量が大きい
- 使用できる機能がWeb技術に依存する所がある

エレキベア
大体どんなものか分かってきたクマ〜〜〜

マイケル
それじゃさっそく触っていこう!
Electron開発環境の構築

マイケル
今回作ったテンプレートは、下記のGitHubに上げています。
こちらもよければ参考にしてください!
GitHub - electron-vue-ts-template

エレキベア
自由に使ってくれて構わないクマ〜〜
開発環境の構成

マイケル
今回は 下記のような構成 + TypeScriptを使用 できるよう
開発環境を構築しました!
種類 | 使用ライブラリ |
---|---|
フロントエンド | Vue3 |
バックエンド | Electron |
ビルドツール | Vite |

エレキベア
ほう・・・
Viteは確かビルドが高速なことで有名なビルドツールクマね
フロントは何でVueにしたクマ??

マイケル
Reactとどっちを使うか迷ったんだけど、
ツール開発は基本的に規模が小さい & Vueの方が実装量が少なそう
といった理由からVueを使ってみることにしたよ!
あとは単純にVueを使ったことがなかったので興味本位もありますね!

エレキベア
まあちょっとしたツール開発は規模も小さいクマからね
何かを試すにはいい機会クマ

マイケル
最近だとSvelteも気になってはいるんだけどね・・・
今回はViteCLIからテンプレートを作成するので、Vueが嫌な人は違うフレームワークを選択して進めてみてください!
Vue3×TypeScriptプロジェクトの雛形作成

マイケル
それではまずは Vue3 * TypeScript の雛形プロジェクトを作成します。
作成方法としてはVueCLIを使用する方法もありますが、今回はUIフレームワークを変更した場合でも同様の手順で環境構築できるよう ViteCLI を使用して作成していきます。

エレキベア
Viteベースでプロジェクトを作成してElectronを追加導入する流れ クマね
シンプルに環境が作れそうクマ

マイケル
ViteCLIでプロジェクトを作成するには下記コマンドを実行します。
フレームワーク、言語を聞かれるので、そこでVue、TypeScriptを選択し npm install すれば完了です!

エレキベア
簡単クマ〜〜〜〜

マイケル
この時点で npm run dev を実行してURLにアクセスすると
サンプルプロジェクトが開くことを確認できます。

▲URLにアクセスすると初期画面が表示される

エレキベア
あとはこれをElectronでアプリとして開けるようにすればいいクマね
Electronの導入

マイケル
それではこのプロジェクトにElectronを導入していきます。
下記コマンドでインストールしましょう!

マイケル
そしてElectron用のtsconfigを作成します。
ElectronのメインプロセスはNode.jsで動くので、commonjsとして認識するよう記載します。

エレキベア
Vue.js側のtsconfigとは別に作成するのクマね

マイケル
あとは src/electron フォルダ配下にElectron用のコードを作成します。
こちらは Electron公式のチュートリアル をベースにしています。

エレキベア
メインプロセスの処理は main.ts
レンダラープロセスの処理も呼び出す場合は preload.ts に書くクマね

マイケル
あとは preload.ts で設定した値を確認するため、
vueファイルを一部修正します。
合わせて vite.config.ts のbase項目を設定しておきましょう。

エレキベア
これで一通りの実装は完了クマね

マイケル
package.json の変更は下記になります。
・npmコマンドをそれぞれ定義
・main項目にElectronのエントリポイントを指定
・type: module 項目を削除

マイケル
npm run dev → ブラウザ確認
npm run app → アプリ確認
といった使い分けになります。

マイケル
Viteにより npm run dev での確認時はホットリロードされますが、
アプリ確認時はホットリロードされません。
そのため基本はブラウザで確認しながら開発し、Eletron側の機能を確認したい時だけ npm run app する、といった形で進めることにしました。

エレキベア
ブラウザで開発を進めながら、アプリを立ち上げて確認する感じクマね

マイケル
アプリを立ち上げながらホットリロードする方法もあるようなので、
興味がある方は調べてみてください。

▲npm run dev でブラウザ起動した状態

▲npm run app でアプリを立ち上げた状態

マイケル
上記のようにそれぞれ立ち上がれば完了です!

エレキベア
やったクマ〜〜〜
electron-forgeの導入

マイケル
最後に、作成したアプリをパッケージ化するための環境を作ります。
こちらは公式チュートリアルでも使用されている electron-forge を使用しました。

マイケル
下記コマンドでインストールした後、
package.json内の記載を修正します。

マイケル
あとは下記のようにpackageコマンドを実行すると
デフォルトでoutフォルダ配下に出力されるはずです!

▲outフォルダ配下にアプリが出力される

エレキベア
ちゃんとアプリとして出力されてるクマ〜〜〜

マイケル
forge.config.js を修正することでアイコンを変えたりなどアプリの設定が行えるので、この辺りは各々調整してみてください!
electronforge create-and-add-icons
おわりに

マイケル
今回はViteで作成したプロジェクトにElectronを組み込んで環境構築をしてみました!
どうだったかな?

エレキベア
簡単にアプリが作成できて感動したクマ〜〜
Web開発と同じ感覚でホットリロード開発ができるのも嬉しいクマね

マイケル
今回作った環境を使用して実際にツールを2つほど作ってみたので、
こちらも興味がある方は見てみてください!
メインプロセスとレンダラープロセスの連携 周りも解説してあります!

【Electron × Vue3】画像をリサイズして任意の場所に保存するツールを作る
2023-12-31

【Electron × Vue3】カテゴリ情報のCSVデータを操作するツールを作る
2023-12-31

エレキベア
実践的なアプリ開発クマね

マイケル
それでは今日はこの辺で!
アデュー!!

エレキベア
クマ〜〜〜〜
【Electron × Vue3】Electron × Vue3 × TypeScript × Vite でツール開発環境を整える 〜完〜