Electronの便利なところはWebブラウザ上で使われているJavaScriptからnodeのコードをシームレスに呼び出せることです。それによってローカルコンピュータの操作をさもWebブラウザ上からできているかのように使えます。 そんなローカル側のコードをnodeではなくGoでできるようにしたのがgo-astilectronになります。

go-astilectronの使い方

go-astilectronでは初期化が終わった際のイベントが astilectron-ready になります。

document.addEventListener('astilectron-ready', function() {
    // Listen
    index.listen();

    // Explore default path
    index.explore();
})

そしてGo側のコードとはメッセージオブジェクトを使ってやり取りできます。

listen: function() {
    astilectron.onMessage(function(message) {
        switch (message.name) {
            case "about":
                index.about(message.payload);
                return {payload: "payload"};
                break;
            case "check.out.menu":
                asticode.notifier.info(message.payload);
                break;
        }
    });
}

こちらはデモで、ローカルのファイル一覧を取得しています。

メニューにも対応しています。

フォルダを辿ることもできます。つまりWeb側で選ばれたフォルダの情報がGo側に送信されているということです。

go-astilectronはGoとHTML/JavaScriptでGUIアプリケーションを作れるフレームワークです。GoとJavaScriptという二つの言語を使うことになりますが、役割がきちんと分かれるのでElectronにおいてよくある、ローカル側とWebブラウザ側のどちらで動いているのかといった混乱はないかも知れません。

go-astilectronはGo製のオープンソース・ソフトウェア(MIT License)です。

asticode/go-astilectron: Build cross platform GUI apps with GO and HTML/JS/CSS (powered by Electron)