Wails + Go + React + Monaco Editorで作るプログラマ向けメモアプリ
村上といいます。普段は音楽ディレクター&プロデューサーをしています。
Evernoteと、VSCodeと、メモ帳を、足して10くらいで割ったアプリを作りました。
- Windows/macOS。エディタ部分はMonacoEditor -> VSCodeと同じエディタエンジン。
- ファイルを開いて直接編集することはできません。←25.02.16 結局複数のメモアプリを使い分けるのが面倒になってきたのでファイル編集モード付けましたプログラマの人はコードの編集そのものはIDEを使うと思うので、インポートとエクスポートのみが可能な、あくまでもクラウドメインのメモ帳です。
- そのかわりGoogle Driveでクラウド同期できるようにしました。 -> このへんがEvernote要素。
リポジトリはここです
Wailsアプリの参考として、ほどほどにちょうどいい規模のアプリだと思うので、興味のある方は覗いてみてください。(backendフォルダにGoogleDriveAPIのクレデンシャルjsonを置いておかないとそのままだとビルド出来ないかもしれません。)
Wailsというのは、フロントエンドをJavascript、バックエンドをGoで書ける、ナウくていけてるElectron/Tauriオルタナティブです。本番ビルドまで対応する統合CLIが高機能で、セットアップが少なくて済むところが良いです。
Goで関数を書いて、
wails dev
または
wails generate module
上記のコマンドラインを叩くと、型定義付きで以下のものがTypeScript側に自動的に公開され、そのままフロントエンドでインポートして使えます。
- バインドされたすべてのメソッドのJavaScript
- バインドされたすべてのメソッドのTypeScript宣言
- バインドされたメソッドの引数または返り値で使用されているGoの構造体のTypeScript宣言
Preloadとかまだるっこしい実装をしなくて良いのです。便利。
WebView埋め込みではなく、Tauriと同じくOSのブラウザを使用するので配布サイズも小さいです。
開発はゴリゴリ進んでおりもうじきv3がベータになると思うので、Electron、Tauriに続く第三のデスクトップアプリFWの選択肢として非常に注目株です。TauriはRustがコワイコワイなので、個人的にはWails推しです。
今回のフロントエンドはVite、Reactです
UIライブラリ -> MUI v6
ドラッグ&ドロップ -> DnD kit
MacOS版は署名済みですがWindows版は完全野良アプリです。
Windowsの署名はバカ高いし、Storeよくわからないんじゃ~
ではでは
Discussion