技術スタック - sunfish-shogi/electron-shogi GitHub Wiki

Electron

Electron は Web の技術でデスクトップアプリケーションを作成するフレームワークです。 もちろん Electron 将棋の名前の由来になっています。

Electron は Chromium をバンドルすることによって HTML や CSS, JavaScript を動かします。 各環境の WebView を使う方式と比べて、ブラウザの種類やバージョンによる動作の違いを気にしなくて良い利点があります。

ファイルシステムや TCP の通信など Chromium 上の Javascript からできないことは、別プロセスとして動く Node.js が担います。 IPC(プロセス間通信)を使って連携しなければいけない手間がかかりますが、全て JavaScript で記述できるためデータモデルの共有は容易です。

マルチプラットフォーム開発のためのフレームワークは様々ありますが、フレームワークの将来性を正確に判断するのは難しい面があります。 一方で Web の技術自体はしばらく広く使われ続けると考えられます。 Electron の置き換えを目指す Tauri の v1 がリリースされて話題になりましたが、例えば Tauri 版を作ることになっても HTML や CSS, JavaScript で作ったアプリケーションの多くの部分が流用できるでしょう。 Android や iOS、あるいは将来現れる未知の環境をサポートすることになったときも、 Web ベースのアプリケーションは何らかの形で活用できるはずです。 また、 Electron 将棋とは全く異なる将棋関連の Web サービスを立ち上げる際にもここで作ったものが活かせると考えています。

Vue.js

Vue.js は Javascript で Web アプリケーションを開発するためのモダンなフレームワークのひとつです。 同種の有力なフレームワークと比べると Vue.js は学習コストが低いと言われています。

Vue.js はリアクティブシステムを備えています。 これによって様々なオブジェクトの値の変化を監視して自動的に DOM を更新します。

Vue.js は日本のユーザーが多いのも特徴です。 日本語の公式ドキュメントに加え、日本のコミュニティや多くの日本ユーザーによるブログ記事やディスカッションが見つかります。

TypeScript

TypeScript は JavaScript に対して静的型付けや新たな修飾子などを加えたスーパーセットです。 TypeScript で書いたプログラムは JavaScript へ変換されます。 JavaScript の文法を知っている人であれば、小さな学習コストで TypeScript を書くことができますし、逆に静的型付け言語を主に扱う方には JavaScript よりも快適に開発ができるでしょう。