0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Tauriでエンジンからゲームを作ってみるAdvent Calendar 2024

Day 23

【Day23】なんか開発用プログラムとかを作りたいとき【QAC24】

Last updated at Posted at 2024-12-24

なんか開発用プログラムとかを作りたいとき

Tauri とは多分関係ないです。

前回までの例を出すと、マップエディターでマップを編集して、それを StoreAPI で JSON としてファイルに保存したのですが、それを実際のマップのファイル (src/maps/<mapId>.ts) に変換しなければならないのですが...
手動でやるのはかったるいですよね...?

他にもなんか例えばキャッシュを削除したり、画像データを同期したり...

これらをコマンド 1 つで出来たら便利ですよね。

Rust-bin

Rust の機能(Cargo の機能)として、メインとなるプロジェクト以外にbinというものを使う事で、簡易的に複数プロジェクトをまとめて管理する事が出来ます。
(そもそも Tauri はlibとして管理されているが私はここら辺は知らんのだ)
(もっと言うとpackageを複数用意すればプロジェクトも増やせるけど)

本来 Cargo ではプロジェクトは 1 つで、cargo runってやったらsrc/main.rsが動きますが、特別なコマンドを使う事で別ファイルを動かせます。

先ずはsrc-tauriに移動しましょう。

$ cd ./src-tauri

bin folder

src-tauriの中には Rust が詰まってます。かわいいですね。

更に Rust のプログラムが詰まっているsrcフォルダの中にbinフォルダを作りましょう。

$ mkdir src/bin

file

今回はhw1.rsを作ってみましょう。
場所はsrc/binの下です。

中身は適当に以下のようにしましょう。

fn main() {
  println!("Hello World from hw1.rs!");
}

まぁ何の変哲もない Hello World ですね。

これをbin機能で実行してみたいと思います。

$ cargo run --bin hw1

すると、ビルドが挟まり、Hello World from hw1.rs!と表示されるはずです。
このように、src/bin以下にファイルを置いた場合、cargo run --bin <ファイル名>で実行する事が出来ます。

ファイルだけではなくフォルダでも、cargo run --bin <フォルダ名>で実行する事が出来ます。
フォルダの場合は、そのフォルダ内のmain.rsが実行されます。

Bin target

更に、別途名前を指定することも出来ます。

Cargo.tomlの中に以下のような記述を加えましょう

[[bin]]
name = "hw2"
path = "src/bin/harowa.rs"

そしてsrc/binharowa.rsを作りましょう。

fn main() {
  println!("Haro-wa-rudo");
}

この状態でcargo run --bin hw2を実行すると、Haro-wa-rudoと表示されるはずです。

これで、開発用プログラムを実行することが出来そうなのですが、いちいちsrc-tauriに行くの...面倒ですよね。

Cargo のディレクトリ指定機能

なぜsrc-tauriに行かなければならなかったのかというと、Cargo ではCargo.tomlがないと、そこを Rust のプロジェクトフォルダと認識せず、
Cargo のコマンドが使えないからです。

なので、cargo にsrc-tauriを指定してみたいと思います。

cargoとだけ入力すると、-C <DIRECTORY> Change to DIRECTORY before doing anything (nightly-only)という表記を確認できると思います。
(cargo 1.79.0 (ffa9cf99a 2024-06-03))

これを使って、Rust のプロジェクトフォルダを指定することが出来ます。

$ cargo -C src-tauri
error: the `-C` flag is unstable, pass `-Z unstable-options` on the nightly channel to enable it

なんか言われましたね。

-Cは安定してないからオプションをさらにつけろって言われてますね。

$ cargo -Z unstable-options -C src-tauri
error: the `-C` flag is unstable, pass `-Z unstable-options` on the nightly channel to enable it

ん? 変わった?
あ、見落としてた。

on the nightly channel to enable itとあるように、この-Cオプションは nightly でしか使えないようです。
なので Nightly を使えるようにしましょう。

Nightly とは、雑に言えば超々開発版のことで、その日の夜(night)にビルドされてたことからそう呼ばれています。

Nightly を使ういくつかの方法

Rust Toolchain Nightly

まずは最初のフォルダでrust-toolchainというファイルを作りましょう。

そして中身にnightlyとだけ書きましょう。

$ echo "nightly" > rust-toolchain

これで、そのフォルダ内でnightlyが使えるようになります。
試しにcargo -Vを実行してみましょう。

$ cargo -V
cargo 1.85.0-nightly (652623b77 2024-12-20)

Nightly になりましたね。

+オプション

先ほどよりも簡単で、+nightlyというオプションをつけるだけで Nightly を使うことが出来ます。

$ cargo +nightly -V
cargo 1.85.0-nightly (652623b77 2024-12-20)

これも Nightly になりましたね。

回帰

さて、Nightly を使えるようになったので、-Cオプションを使ってsrc-tauriを指定してみましょう。

$ cargo +nightly -C src-tauri run --bin hw1

すると、Hello World from hw1.rs!と表示されるはずです。

これで完璧ですね。
あとは JSON ファイルからマップのファイルを作るプログラムを書くだけです。

Rust で JSON を扱うときには以下の方の記事が欲参考になりますのでぜひご覧ください。

Serde を用いた Rust の json 取り扱いメモ - scirexs | Zenn

それではここらで終わりにしましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?