$30 off During Our Annual Pro Sale. View Details »

React + Tauriでデスクトップアプリ開発に入門してみた

ynishimura
November 24, 2024

React + Tauriでデスクトップアプリ開発に入門してみた

2024/11/22 に開催されました「【大阪+オンライン】クラスメソッドのReact事情大公開スペシャル#5」の登壇資料になります。

https://classmethod.connpass.com/event/333632/

ynishimura

November 24, 2024
Tweet

More Decks by ynishimura

Other Decks in Programming

Transcript

  1. ⾃⼰紹介 2 • 名前 ◦ ⻄村 祐⼆ • 部署 ◦

    AWS事業本部オペレーション部 • 業務 ◦ 内製開発 ◦ 業務改善 • 住まい ◦ 京都 • 趣味 ◦ 2歳の息⼦の⼦育て 2019/2020 APN AWS Top Engineers 2024/2023/2022/2021 APN ALL AWS Certifications Engineers
  2. ⽬次 4 • Tauriとは ◦ 概要 ◦ 主なコンポーネント ◦ セキュリティ

    • 簡単なアプリを作ってみた • 開発中にハマったところ • 実際に使ってみた感想 • まとめ
  3. Tauriの主なコンポーネント 7 • WebView制御機能 ◦ フロントエンドをレンダリングするためのコンポーネント ◦ プラットフォームに応じて最適なWebViewを使⽤ ◦ クロスプラットフォームを実現

    • コアプロセス ◦ バックエンドロジックを担当、Rustで実装 ◦ システムリソースへのアクセスを管理 ◦ ネイティブ機能を提供
  4. Tauriの主なコンポーネント 8 • WebView制御機能 ◦ フロントエンドをレンダリングするためのコンポーネント ◦ プラットフォームに応じて最適なWebViewを使⽤ ◦ クロスプラットフォームを実現

    • コアプロセス ◦ バックエンドロジックを担当、Rustで実装 ◦ システムリソースへのアクセスを管理 ◦ ネイティブ機能を提供
  5. Tauriのセキュリティ 10 セキュリティを重視して設計されている • 権限管理 ◦ アプリケーションがアクセスできるリソースを制限 • コマンドスコープ ◦

    必要最⼩限のコマンドのみ実⾏を制御 ◦ 不要な機能へのアクセスを防御 • コンテンツセキュリティポリシー (CSP) ◦ フロントエンドのコンテンツが信頼できるソースからのみ読み込むように制御
  6. ストップウォッチアプリを作ってみた 13 • 要件 ◦ 常に最前⾯で表⽰ ◦ 可能な限りシンプルなUI • 機能

    ◦ アプリ起動で時間の経過をスタート ◦ ダブルクリックでストップ‧スタート ◦ 右クリックでリセット ◦ リセットしたらローカルに経過時間をファイル出⼒
  7. ストップウォッチアプリで利用したライブラリ 14 • 開発環境 ◦ macOS ◦ Tauri 2.0 •

    Web ◦ React ◦ Vite ◦ Tailwind CSS ◦ Framer Motion • Backend ◦ @tauri-apps/plugin-fs
  8. 実装のポイント 17 • 開発時のデバッグ ◦ npm run tauri dev ◦

    ローカルでデスクトップアプリ起動 ◦ HMR(ホットリロード)も動作するので快適
  9. 実装のポイント 18 • 開発時のデバッグ ◦ WebViewデバッグコンソールを表⽰ ▪ 重要 ▪ cmd

    + opt + i エラーがバックエンド側(Rust)で発⽣したのか フロントエンド側で発⽣したのか確認するためにもコンソール画⾯は必須
  10. 作ったアプリのインストール方法 20 • コマンド⼀発でdmgファイルを出⼒してくれる ◦ npm run tauri build --

    --bundles dmg ◦ あとはいつもどおりの⽅法でアプリを追加し起動すると開発時と同じように起動 ◦ ちょっと感動
  11. 他プラットフォームでインストール 21 • Windows PCにインストールしてみた ◦ 開発⽤のWindows PCがないためMac上でWindows向けにビルド ◦ NSIS(Nullsoft

    Scriptable Install System)を利⽤ ▪ Windows⽤のインストーラーを作成するためのツール ▪ Mac上でWindows向けにビルドする機能はまだ実験段階 ◦ 問題なくインストールでき、正常に動作してましたがWindows環境でのビルドが推奨 https://v2.tauri.app/distribute/windows-installer/
  12. 他プラットフォームでインストール 22 • 必要なツールのインストールとビルドコマンド⼀発でexeファイルを出⼒ ◦ npm run tauri build --

    --runner cargo-xwin --target x86_64-pc-windows-msvc ◦ Windows PCで実⾏してみるとインストーラーが起動 https://v2.tauri.app/distribute/windows-installer/
  13. 開発中にハマったところ 26 • 公式からまだチュートリアル的なものが提供されていない? ◦ リファレンスを⾏き来することになる • 想定した挙動にならないとき、どこが原因か特定するのが難しい(慣れの問題) ◦ フロントエンド(JS)実装ミス、WebViewの互換性の問題、

    ◦ Tauriの設定ミス、権限不⾜、バックエンド(Rust)の実装ミス • 特にWebView関連の設定でハマった ◦ それ以外はすんなり動いた ◦ 簡単なアプリであったためバックエンド側は特に触れてない ◦ 今回、3つ紹介
  14. 所感 31 • ⾃分好みのデスクトップアプリを作るのが楽しい ◦ ツールの使い⽅などを覚えることに追われるのではなく、ゼロから形していく • 思ったよりも簡単にデスクトップアプリが作れる ◦ もっとハマると思ったけど意外とすんなり作れた

    • 意外とそのままのWebアプリのコードでうごく ◦ 追加設定やコードの修正を必要とされると思った、コピペでなんとかなる • Rustとの距離感がいいかんじ ◦ 必ずRustでの実装が必要ではない ◦ 勉強のためにあえてRust(バックエンド)で実装することもできる