feature image

2024年9月10日 | ブログ記事

Tauriでtodolist作ってみた

この記事は夏のブログリレー23日目の記事です。

こんにちは、21B SysAd班のmehm8128です。

今回はTauriを初めて使ってみたので、そのレポートです。

Tauriとは

Tauriとは、Rustを用いてデスクトップアプリケーションを作成できるフレームワークらしいです(モバイルアプリケーションもv2.0でサポート予定)。僕は今までWebアプリしか触っていなかったのですが、Rustで何か作りたくなって今回Tauriを触ってみることにしました。

今回のソースコードはここにあります。

GitHub - mehm8128/tauri-todolist
Contribute to mehm8128/tauri-todolist development by creating an account on GitHub.

開発の流れ

pnpm create tauri-appでいくつかの質問に答えたらプロジェクトが作成されます。
今回はフロントエンドはReactで作りました。

srcディレクトリ内がReactのプロジェクト、src-tauri内がRustのプロジェクトになっています。

フロントエンド→バックエンドへの通信は

import { invoke } from "@tauri-apps/api/tauri"

を用いて

invoke(Rustの関数名, パラメーター)

のような形で発火すると、リクエストを送信できます。
例えばタスクの作成は

invoke("create_task", { newTask })

と書いています。これに対応するRustのコードは

#[tauri::command]
fn create_task(new_task: TaskSeed) -> Result<Task, String> {

となっていて、create_taskという関数名がinvokeの第一引数と一致、new_taskという引数名がinvokeの第二引数のnewTaskというプロパティ名と一致しています(第一引数はどちらもスネークケース、第二引数はRustがスネークケースでTSがキャメルケースなことに注意)。

このようにしてlist_taskstoggle_taskも実装しています。

また、今回はSQLiteを使ってローカルにデータを保存しています。

ビルド

今のところ手元でクロスコンパイルすることは難しいらしく、LinuxではLinux用ビルド、WindowsではWindows用ビルドをするような形になります。
僕は普段WSL2を利用しているので、Windows用ビルドをするためにソースコードをWindows側に移動させてビルドしました。Windows側にNode.jsは入れてあったのですが、Rustは入れてなかったのでRustをインストールするところから始まりました(ただし、インストーラー1つで入れられるので簡単に終わりました)。

完成品

こんな感じです。Windowsでビルドしたものを動かしてます。

詰まりポイント

エラーハンドリング

#[tauri::command]をつけた関数で、Result型でanyhowのエラーを返そうとすると謎のエラーに遭遇しました。
対処法としてはドキュメントに書いてあるようにStringに変換して返すか、独自のエラー型を作成するといいらしいのですが、今回は手軽そうな前者を選びました。

起動してすぐ再起動してしまう

開発環境でSQLiteを使っていると、Info File src-tauri/db.sqlite3 changed. Rebuilding application...というログが出てすぐ再起動してしまいます。
--no-watchをつけてdevを起動するとひとまず解決しました。
.tauriignoreを使うと直るみたいなのも出てきたのですが、僕の場合上手くいきませんでした。

まとめ

todolistということでほんの一部の機能しか使えていないので、今後もうちょっと面白いものを作って色々と使っていけたらなと思います。

明日の担当はzoi_dayoくんです、お楽しみにー

mehm8128 icon
この記事を書いた人
mehm8128

21B JC。SysAd班で色々やってます

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2024年9月17日
1か月でゲームを作った #BlueLINE
Komichi icon Komichi
2024年8月21日
【最新版 / 入門】JUCEを使ってVSTプラグインを作ろう!!!!【WebView UI】
kashiwade icon kashiwade
2021年8月12日
CPCTFを支えたWebshell
mazrean icon mazrean
2021年5月19日
CPCTF2021を実現させたスコアサーバー
xxpoxx icon xxpoxx
2022年9月26日
競プロしかシラン人間が web アプリ QK Judge を作った話
tqk icon tqk
2022年9月16日
5日でゲームを作った #tararira
Komichi icon Komichi
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記