Electron IPC

ElectronでつかわれているIPC(プロセス間通信)について、調べてみました。

サンプルコード
https://github.com/saltyshiomix/nextron/tree/main/examples/with-material-ui

https://decode.red/ed/archives/1661

上記の最後で簡単に実行してみましたが、セキュリティ部分について下記を参考にしました。

nodeIntegration
https://zenn.dev/sprout2000/books/6f6a0bf2fd301c/viewer/13340
contextBridge
https://zenn.dev/sprout2000/books/6f6a0bf2fd301c/viewer/13344

helpers/create-window.ts

上記コードの下記の部分で設定されます。(デフオルト設定)

nodeIntegration: false,
contextIsolation: true,

nodeと統合するか、コンテントを分離するか、という意味ですが、つまりchroniumブラウザで走るフロントエンドプログラムと、nodeで動くサーバプログラムを切り離すかどうかの制御をする部分です。
通常のWebアプリでOSの機能にアクセスできないのは、セキュリティ上あたりまえのことですので、これはデフォルト設定のままでいいと思います。
上記参考サイトでは、実例が詳しく説明されています。

ここでは、参考サイトにあったダイアログの開く部分について、サンプルに統合してみました。
記述の仕方が違うので、興味をもちました。

preload.ts

background.ts

呼び出し側
renderer/pages/home.tsx

サンプルプログラムの実装を借りての確認のため、意味のない挙動をしますが、ダイアログで開いたファイルパスをレンダー側で表示させることが目的です。
ハンドラーの登録の仕方が、サンプルでは汎用的な方法で書かれていますが、参考サイトの個別のやり方の方がわかりやすかったので、この方法で実装してみました。
preloadで書かれているhandlerのメソッドの書き方、知りませんでした。