前略
久しぶり! 1 年ぶりの Qiita Advent Calendar だね! (それは当たり前)
今年は、Tauri を使ってゲームエンジンからゲームを作ってみようと思います。
ちゃんと 25 日分書ききれるかどうかは正直微妙ですが、書ききれなかったら書ききれなかったということで...
GUI 作りたいよな。
皆様、CUI アプリケーション(TUI)は好きですか?
もちろん、かっこよくていいですよね。
でも...やっぱり、マウス使うタイプの我々にとっては GUI アプリのほうが使いやすいですよね。
しかし、どうしても GUI アプリケーションの開発にはコストがかかる!!!
前回のアドベントカレンダーでも.NET MAUI を使って GUI アプリケーションを作ってみましたが、やっぱり C#はちょっと慣れないですし、XAML もちょっと...という方も多いのではないでしょうか?
私もその一人です。
Electron なんて便利なものもありますが、フロントエンドとバックエンドが同じ JavaScript なのに、仕様が違うせいで、なんかどっちの JavaScript を書いてるのか分かんなくなってそれでライブラリもごちゃごちゃで...うーん...
「...そんなあなたにお勧めの商品...ありますよ。」
Tauri とは
Tauri は、Rust 製の GUI アプリケーションフレームワークです。
はーい、そこの「Rust って聞いてウッってなった」方々~
私もです。
確かに Rust はナウくて、メモリ安全で、動作も高速で...とかいろいろ言われても、やっぱりラーニングコストは高いと思います!
しかし! そんなあなたにこそ、Tauri をお勧めしたい!!!!
Tauri は、バックエンド部分を Rust で書き、フロントエンド部分を HTML/CSS/JavaScript(TypeScript)や、React、Vue や Svelte で書くことができます。
ここまでは、バックエンドの言語が変わっただけの Electron ですよね。
しかし、Tauri の魅力はここからです。
Electron は、Chromium を使っているため、アプリケーションのサイズが大きくなりがち、メモリ消費も多いです。
しかし、Tauri は、Chromium を使わず、OS に搭載されている WebView を使っているため、アプリケーションのサイズが小さく、メモリ消費も少ないです。
更には、WebView を使用するおかげで、App Store や Google Play Store にもアプリケーションを提出することができます。
そして何より Tauri は初心者に割と優しい設計になっていて、Rust の知識がなくても、簡単にアプリケーションを作ることができます。
Rust がバックエンドで動いているが、Rust の知識がほぼなくても動かせてしまう。
なんなら、簡単な GUI アプリケーションなら Rust に一切触れずに作ることもできます。
何を言っているが分かんないかもしれませんがそのまんまの意味です。
Tauri 側で API を用意しており、フロントエンド側でそれを呼び出すだけで、フロントエンドからは直接いじれないファイル操作などが行えてしまいます。
もちろん、Electron(+TypeScript)であれば、型を同じように書けばいいだけだから楽...など双方にメリットはありますが、今回は「Electron の代替を目指す Tauri 君」を使ってみたいと思います。
このアドベントカレンダーでやること
このアドベンドカレンダーでは、つい直近リリースされた、Tauri v2 を使ってゲームを作っていきます。
さっき、Rust の知識がなくても作れると言いましたが、今回のアドベントカレンダーでは Rust のコードも書いていきます。
ただ、私も Rust に関してはガチの初学者なので、間違いがあるかもしれませんが、その辺はご了承ください。
そして、フロントエンド部として Vanilla(HTML/CSS)と TypeScript を使っていきます。
そのため、いわゆる Web ページ制作(HTML/CSS)と、これまた Web ページでよく使われる JavaScript という言語の拡張版に値する TypeScript という言語についても触れていき、理解してもらいたいと思います。
Rust も TypeScript も型
という概念が非常に重要になっていきます。
そのため、型についてもこの記事を通してぜひ理解していって、その他のプログラミング言語にも応用できるようにしていって欲しいなと思います。
まとめ
という訳でこれから 25 日間、よろしくお願いいたします。
なお、この記事...というか Rust を書いていくうえで、性能が低い PC だとコンパイルに時間がかかって、非常にストレスを感じるかもしれません。
なので、出来る限り性能が高い PC で作業することをお勧めします。
(とはいっても一般的なノーパソぐらいで大丈夫(その代わりパフォーマンスモードとかにしてファンうるさくしちゃおう))
あと、Windows での開発を想定していますので!!
macOS や Linux の方は、その辺の違いを各自調べていただけると幸いです。
(でも Apple Silicon Mac のほうが Rust のコンパイル早いって聞いた...)
それでは、また明日もよろしくお願いします!