こんにちは。
なんとなくやりたいな〜と思いながら、なんだかんだで本格的に触れることのなかった Tauri というフレームワーク。今回は、これに AI をかけ合わせて Second Best のアプリを作りたいという話をします。
- Second Best の Rust クレートを公開しました
- Rust で Second Best のアプリを作ろうとしてみたが・・・
- Tauri のことを思い出す
- AI には Rust は早すぎる。では TypeScript は?
- AI × Tauri でアプリを作ってみよう!
Second Best の Rust クレートを公開しました
唐突ですが、Second Best の Rust クレートを公開しました。
https://crates.io/crates/secondbest
以前の記事↓で後退解析をするために Rust で Second Best のボードを実装していましたが、それを改めて実装しなおして、整理した感じです。
smooth-pudding.hatenablog.com
このコードを書くのにも Cursor の機能をバンバン使っていきました。特に、ドキュメンテーションや仕様・モジュール構成の整理といった場面では大活躍しました。一方、実際のコードを書く部分については、ドキュメンテーション部分のような短いコードを除いては、残念ながらあまり質のよいものは出力されませんでした。途中からはイライラしてコード補完機能を切って作業をしていたぐらいです。
Rust で Second Best のアプリを作ろうとしてみたが・・・
せっかくゲームロジック部分の実装ができたので、Second Best で遊べる GUI アプリケーションを作りたくなりました。しかし、Rust で GUI アプリケーションをまともに作ったことがありません。
そこで、AIにやらせてみることにしました。プログラムの構成はもちろん、画面設計や開発の進め方についても計画を立てさせて、どんどん書いてみてもらいました。途中まで進めたものがこちらです。

途中冒頭のクレートの致命的なバグが見つかったりしてブチ切れたりしていましたが、まあそれなりにそれっぽいものができてきました。ただここに来るまでに結構 Cursor も苦労していて、コードを生成してはビルドエラーに悩まされ、試行錯誤の末にようやくビルドが通ったと思えば、今度は意図と違う実装になっている・・・そんなことの繰り返しでした。まだ Rust に慣れていなかったころの自分を見ているようです。「やっぱり AI に Rust はまだ早いのかな」と改めて思いました。
Tauri のことを思い出す
ここで、記事タイトルに出てきた Tauri が登場します。
v2.tauri.app
Tauri はバックエンドは Rust、フロントエンドは TypeScript などの Web 系言語で書けるフレームワークです。結構前から気にはなっていたものの、自動生成できるサンプルをすこしいじって終わり、という状態でした。
Rust はすごく書いていて気持ちのいい言語で、これからもいろんなアプリケーションを書いてみたいと思っているのですが、GUI アプリケーションに関しては正直 Rust で書くのは辛そうだなと思っていました。Rust を書いているときの感覚が、GUI アプリケーションを書いているときの頭の使い方とあまりにかけ離れていると感じていたからです。
その点 Tauri は「見た目はフロントエンドの技術で、裏側は Rust ベースで書く」という役割分担を採用しているので、上で書いたような懸念点をきれいにクリアしているんじゃないかと期待しています。
しかしひとつ問題が。自分はフロントエンドの技術をあまりにも知らないのです。業務では一切触りませんし、趣味でもせいぜい Flutter でちょろちょろっと小さなアプリを開発したぐらいで、JavaScript や TypeScript をまともに書いたことがありません。なんとかクリアしようと書籍を読み始めたりチュートリアルを少し触ったりしていましたが、何回も挫折を繰り返していました。
そんな私でしたが、今回 Second Best のアプリを作ろうとして Rust に手こずる AI を眺めながら、「いっそ Tauri で作ったほうがよっぽどいいんじゃね・・・?そのほうが AI もやりやすいんじゃね・・・?」と思いついたのです。
AI には Rust は早すぎる。では TypeScript は?
そもそも LLM というのは「大量のデータを食べさせて学習させて、その経験知に基づいてデータを生成させる」という仕組みで動いているものです。巷に転がっているコードの量を比べると、Rust のコードよりも JavaScript や TypeScript のコードのほうが圧倒的に多いのはもはや調べるまでもありません。「Rust の文法が難しすぎてうまく書けない」という側面もあるとは思いますが、個人的にはただただ学習量が足りていないのがより大きな問題なのではないかと思っています。
裏を返せば、学習量が多いはずの JavaScript や TypeScript であれば、結構な精度でコードを作ってくれるだろうと期待しています。Python も同様に巷にとてつもない量のコードが転がっている言語ですが、やはり AI はそこそこのクオリティのコードを書いてくれますしね。
もしこれが正しければ・・・
- 作りたいものを AI にどんどん作ってもらいながら
- 作ったものを眺めて自分は書き方を勉強する
という「一粒で二度おいしい」展開が期待できます。
AI × Tauri でアプリを作ってみよう!
実はこの切り口はいろいろと新規性もあるのではないかと思っています。
まず、そもそも Cursor などの AI ツールを使ってプログラムやアプリケーションを作ったよという記事はまだあまり多くありません。やはり普通に自分の手で書いていくような記事がほとんどです。前回の Water Sort Puzzle ソルバの記事はまさに AI を使ってコードを書いたよという記事でしたが、こういうのはまだまだかなりレアだと思います。
smooth-pudding.hatenablog.com
次に、Tauri について書かれた記事の多くは「もともとフロントエンドの知識があるが、Rust 言語に触れてみたいので Tauri を触ってみた」という方向のもので、「Rust でいろいろ書きたいから Tauri に手を出してみた」という方向は結構少ないと感じています。しかし既に述べたとおり、Tauri の方針は Rust の苦手な部分をうまく補完してくれているので、むしろ Rust でいろいろ書きたいからこそ外せない技術ではないかと思っています。つまり「Rust は大好きだがフロントエンドの知識がおぼつかない人間が、AI の補助輪を活用してなんとか Tauri を使いこなす」という新たな道を切り開けるのではないかと思っています。
もし気分が乗って今後も続きそうであれば、連載風に試行錯誤をどんどん記事にしていけたらなと思っています。
ではまた。
追記: 書き始めました。
smooth-pudding.hatenablog.com