コントリビュート

このドキュメントを編集

ドキュメントを翻訳するか、お使いのコンピューターでプロジェクト全体を開きます。

作業内容を送信するまで、何も公開されません。

ブログ

MacOS向けWails v2 Beta

Wailsのリリースノートとお知らせ

leaanthony読了まで1分

wails-macのスクリーンショット

本日、Mac向けWails v2の最初のベータ版をリリースします!ここまで来るのにかなり時間がかかりましたが、今回のリリースがそれなりに実用的なものになっていれば幸いです。この段階に至るまでには紆余曲折がありました。皆さんのご協力を得ながら細かな問題を解消し、v2の正式リリースに向けてMac版を仕上げていきたいと考えています。

つまり、まだ本番環境では使えないということでしょうか?ユースケースによっては十分に使えるかもしれませんが、既知の問題がまだいくつかあります。このプロジェクトボードを随時確認してください。コントリビューションも大歓迎です!

では、Mac向けWails v2ではv1と比べて何が新しくなったのでしょうか?ヒント:Windows Betaとかなり似ています :wink:

新機能

wails-menus-macのスクリーンショット

ネイティブメニュー対応を求める声が数多く寄せられていました。ついにWailsがその要望に応えます。アプリケーションメニューが利用可能になり、ネイティブメニューのほとんどの機能に対応しました。標準メニュー項目、チェックボックス、ラジオグループ、サブメニュー、区切り線などを使用できます。

v1では、ウィンドウ自体をより細かく制御したいという要望が非常に多く寄せられていました。そのための新しいランタイムAPIが追加されたことをお知らせします。豊富な機能を備え、マルチモニター構成にも対応しています。ダイアログAPIも改善されました。多彩な設定が可能な最新のネイティブダイアログを使用して、あらゆるダイアログのニーズに対応できます。

Mac固有のオプション

通常のアプリケーションオプションに加え、Mac向けWails v2にはMac固有の機能もいくつかあります。

  • おしゃれなSwiftアプリのように、ウィンドウを個性的な半透明表示にできます!
  • 高度にカスタマイズ可能なタイトルバー
  • アプリケーションのNSAppearanceオプションに対応
  • 「About」メニューを自動作成するための簡単な設定

アセットのバンドルは不要

v1で非常に不便だったのは、アプリケーション全体を単一のJSファイルとCSSファイルにまとめる必要があったことです。v2では、どのような形であれ、アセットをバンドルする必要がなくなりました。ローカル画像を読み込みたい場合は、ローカルのsrcパスを指定した<img>タグを使用します。格好いいフォントを使いたい場合は、そのフォントをコピーし、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キーを押すと、データモデルが自動的にインポートされるのは実に便利です!

リモートテンプレート

remote-macのスクリーンショット

アプリケーションをすばやく起動して実行できるようにすることは、当初からWailsプロジェクトの主要な目標でした。リリース当初は、当時の多くのモダンなフレームワーク(react、vue、angular)に対応しようとしました。しかし、フロントエンド開発の世界にはさまざまな流儀があり、変化が速く、最新動向を追い続けるのは困難です。その結果、基本テンプレートはすぐに古くなり、メンテナンスの悩みの種となりました。また、最新かつ最先端の技術スタックに対応する魅力的なモダンテンプレートも提供できていませんでした。

v2では、Wailsプロジェクトに依存するのではなく、コミュニティの皆さんが自らテンプレートを作成してホストできるようにしたいと考えました。そのため、コミュニティがサポートするテンプレートを使用してプロジェクトを作成できるようになりました!これをきっかけに、開発者が活気あるプロジェクトテンプレートのエコシステムを築いてくれることを願っています。開発者コミュニティが何を生み出すのか、本当に楽しみです!

M1ネイティブ対応

Mat Ryerのすばらしい支援により、WailsプロジェクトはM1ネイティブビルドに対応しました。

build-darwin-armのスクリーンショット

darwin/amd64をターゲットとして指定することもできます。

build-darwin-amdのスクリーンショット

おっと、言い忘れるところでした……darwin/universalもできます…… :wink:

build-darwin-universalのスクリーンショット

Windows向けクロスコンパイル

Windows向けWails v2はpure Goで実装されているため、dockerを使用せずにWindows向けのビルドを作成できます。

build-cross-windowsのスクリーンショット
bu

WKWebViewレンダラー

V1は、現在では非推奨となったWebViewコンポーネントに依存していました。V2では最新のWKWebKitコンポーネントを使用するため、Appleの最新かつ最高の機能を利用できます。

まとめ

Windows のリリースノートでも述べたとおり、Wails v2 はプロジェクトの新たな基盤となるものです。このリリースの目的は、新しいアプローチについてフィードバックを得て、正式リリース前にあらゆるバグを解消することです。ぜひご意見をお寄せください。フィードバックは、v2 Beta ディスカッションボードまでお願いします。

最後に、舞台裏でさまざまな形でプロジェクトを支えてくださっているプロジェクトスポンサーの皆様、そしてその一社であるJetBrainsに、心より感謝申し上げます。

プロジェクトがこの刺激的な次の段階を迎える中、皆さんが Wails でどのようなものを作るのか、楽しみにしています!

Lea

追伸:Linux ユーザーの皆さん、次は皆さんの番です!

追伸その2:Wails がご自身や会社のお役に立っている場合は、ぜひプロジェクトへのスポンサー支援をご検討ください。ありがとうございます!