
ついにWails v2のLinux版ベータを発表できることをうれしく思います! v2の最初期の実験がLinux上で行われたにもかかわらず、結果的に最後のリリースになったのは、少し皮肉なことです。とはいえ、現在のv2は当時の初期実験とは大きく異なります。それでは早速、新機能を見ていきましょう。
新機能

ネイティブメニュー対応を求める声が多数寄せられていました。Wailsがついにその要望に応えます。アプリケーションメニューが利用可能になり、ネイティブメニューのほとんどの機能に対応しました。標準メニュー項目、チェックボックス、ラジオグループ、サブメニュー、区切り線などが含まれます。
v1では、ウィンドウ自体をより細かく制御したいという要望が非常に多く寄せられていました。そのための新しいランタイムAPIを発表できることをうれしく思います。豊富な機能を備え、マルチモニター構成にも対応しています。ダイアログAPIも改善され、さまざまな要件に応えられる詳細な設定機能を備えた、モダンなネイティブダイアログを使用できるようになりました。
アセットのバンドルは不要
v1の大きな難点は、アプリケーション全体を単一のJSファイルとCSSファイルにまとめる必要があったことです。v2では、どのような形であれアセットをバンドルする必要がなくなりました。ローカル画像を読み込むには、ローカルのsrcパスを指定した<../../../assets/blog-images>タグを使用します。気に入ったフォントを使うには、そのフォントをコピーし、CSSにパスを追加します。
まるでWebサーバーのようですね……。
はい、Webサーバーと同じように動作しますが、Webサーバーではありません。
では、アセットはどうやって組み込むのでしょうか?
すべてのアセットを含む単一のembed.FSをアプリケーション設定に渡すだけです。アセットを最上位ディレクトリに置く必要すらありません。Wailsが適切に処理します。
新しい開発体験
アセットをバンドルする必要がなくなったことで、まったく新しい開発体験が実現しました。新しいwails devコマンドはアプリケーションをビルドして実行しますが、embed.FS内のアセットを使用せず、ディスクから直接読み込みます。
さらに、次の機能も提供します。
- ホットリロード — フロントエンドアセットを変更すると、アプリケーションのフロントエンドが自動的に再読み込みされます
- 自動リビルド — Goコードを変更すると、アプリケーションが再ビルドされ、再起動します
さらに、ポート34115でWebサーバーが起動します。このサーバーは、接続したすべてのブラウザーにアプリケーションを配信します。接続中のすべてのWebブラウザーは、アセット変更時のホットリロードなどのシステムイベントに応答します。
Goでは、アプリケーション内で構造体を扱うことに慣れています。構造体をフロントエンドに送り、アプリケーションの状態として使用すると便利な場合がよくあります。v1では、この処理の多くを手作業で行う必要があり、開発者にとって多少の負担になっていました。v2では、開発モードで実行したすべてのアプリケーションで、バインドされたメソッドの入力または出力パラメーターになっているすべての構造体について、TypeScriptモデルが自動生成されます。これにより、Goとフロントエンドの間でデータモデルをシームレスにやり取りできます。
さらに、バインドされたすべてのメソッドをラップする別のJSモジュールも動的に生成されます。このモジュールはメソッドのJSDocを提供し、IDEでコード補完やヒントを利用できるようにします。Goコードをラップする自動生成モジュールでTabキーを押すだけで、データモデルが自動的にインポートされるのは実に便利です!
リモートテンプレート

アプリケーションをすぐに起動できるようにすることは、常にWailsプロジェクトの重要な目標でした。公開当初は、当時の多くのモダンなフレームワーク(react、vue、angular)を網羅しようとしました。しかし、フロントエンド開発の世界は好みが分かれやすく、変化が速いうえ、最新状況を追い続けるのも困難です。その結果、基本テンプレートはすぐに古くなり、メンテナンス上の悩みの種になりました。また、最新の優れた技術スタックに対応する、魅力的でモダンなテンプレートを提供できないという問題もありました。
v2では、Wailsプロジェクトに依存するのではなく、皆さん自身でテンプレートを作成してホストできるようにし、コミュニティの力を引き出したいと考えました。これにより、コミュニティがサポートするテンプレートを使ってプロジェクトを作成できるようになりました! これが、活気あるプロジェクトテンプレートのエコシステムを開発者が築くきっかけになれば幸いです。開発者コミュニティが何を生み出してくれるのか、本当に楽しみです!
Windows向けクロスコンパイル
Windows版Wails v2は純粋なGoで実装されているため、dockerを使わずにWindows向けにビルドできます。

まとめ
Windows版のリリースノートでも述べたように、Wails v2はプロジェクトの新たな基盤となります。このリリースの目的は、新しいアプローチへのフィードバックを集め、正式リリースまでに不具合を解消することです。ぜひご意見をお寄せください! フィードバックはv2 Betaディスカッションボードにお寄せください。
Linuxのサポートは困難です。このベータ版には、いくつか特有の問題があると予想しています。詳しいバグ報告を提出して、問題解決にご協力ください!
最後に、舞台裏からさまざまな形でプロジェクトを支えてくださっているすべてのプロジェクトスポンサーの皆さんに、心から感謝します。
プロジェクトの次なる刺激的な段階で、皆さんがWailsを使って何を作るのか楽しみにしています!
Lea.
追伸:v2の正式リリースも間近です!
追々伸:Wailsがあなたやあなたの会社のお役に立っているなら、ぜひプロジェクトのスポンサーになることをご検討ください。ありがとうございます!