デスクトップアプリを開発しよう! 「Rust」と「Tauri 2.0」の基本情報と環境整備の仕方を解説
フロントエンジニアのためのTauri 2.0ではじめるRustプログラミング 第1回
本連載では、デスクトップアプリを開発しながら、「Rust」と「Tauri 2.0」について学んでいきます。連載第1回は、まずデスクトップアプリの開発に必要なRustと、Tauri 2.0の基本情報と、環境整備の仕方について解説します。
はじめに
本連載では次の図のようなお絵描きのデスクトップアプリを作りますが、よくあるPhotoshop風ではなく、Illustrator風のベジェ曲線のお絵描きアプリです。最初だけ1回クリック、それ以降はクリック&ドラッグ、クリック&ドラッグ・・・を繰り返すことで、1本に繋がった曲線が一筆書きで描けます。
完成したお絵描きアプリは、こちらで公開しています。Webブラウザ版では作成したデータを保存できませんが、デスクトップアプリ版ではRust側からデータの読み書きをサポートしています。
このお絵描きアプリは「HTML5+CSS+JavaScript」で構成されたWebページでできています。さらに、Tauri 2.0を使って、Webページをデスクトップアプリとして構築しています。Tauri 2.0は、Webページをインターフェースとして使い、それをRustでコーディングしてデスクトップアプリとして構築します。
連載の流れ
この連載は、以下のように進んで行きます。
| 回数 | 内容 |
|---|---|
| 第1回 | 「Rust」「Tauri 2.0」の基礎知識と環境整備 |
| 第2回 | Rustの基本文法 |
| 第3回 | 「HTML5+CSS+JavaScript」の知っておくべき文法 |
| 第4回 | 黒色のベジェ曲線を一筆書きで描く方法 |
| 第5回 | アンドゥとリドゥの実装 |
| 第6回 | メニュー機能、ファイルの読み込み処理の実装 |
| 第7回 | メニュー機能で保存メニューの実装 |
では、Rustの基本情報から学んでいきましょう。
「Rust」の基本情報
「Rust」は、WindowsでもmacOSでもLinuxでもクロスプラットフォームに対応した高速でスマートなプログラミング言語です。「Rust(ラスト)」とは、錆という意味でロゴマークもそこからデザインされたのでしょう。
Rustのメモリの管理の仕方、「所有権」とは?
Rustはメモリの管理の仕方がスマートな、とても優れたプログラミング言語です。
「所有権」という独特な概念でメモリを管理して、ビルド時にメモリリークが起こる可能性を排除するので、極めてメモリリークが起こりにくくなっています。例えば、次の図のように「スコープ」内だけ変数にメモリを所有する権利を与えて「スコープ」を抜けるときには、「所有権」を持つ変数のメモリを解放します。
Rustの追加機能、「クレート」とは?
他にも、Rustで書かれた「クレート」という追加機能で機能を拡張できるため、車輪の再発明をしなくても済みます。クレートはPythonでいうパッケージや、モジュールに当たる拡張機能のことです。さらにPythonと違ってインタプリタ言語ではなくコンパイル言語なので、処理が高速です。
「Tauri 2.0」の基本情報
「Tauri 2.0」はちょうどElectronのRust版です。
Electronとは、WebページをChromium(以前のGoogle ChromeのHTMLレンダリングエンジン)と、JavaScriptで作られたNode.jsでデスクトップアプリを構築する技術です。次の図のように、コードエディタ「Visual Studio Code」もElectronで開発されていますが、今後はElectronよりさらに優れたTauri 2.0がメジャーになっていくと思われます。
Tauri 2.0もRustと同様に、Windowsや、macOS、Linuxにもクロスプラットフォームに対応したフレームワークであり、さらにスマートフォンのiOSや、iPadOS、Androidアプリも作れます。本連載ではパソコン向けのデスクトップアプリ開発だけを解説します。
Tauri 2.0の仕組み
Tauri 2.0は、「HTML5+CSS+JavaScript」のWebページをデスクトップアプリとして作れるRustのクレートで、Tauriバージョン1系とは互換性がありません。
Tauri 1.0で作ったプロジェクトは、Tauri 2.0でプロジェクトを作り直して移植する必要があります。本連載では移植ではなく、最初からTauri 2.0のプロジェクトから作り始めます。
簡単にTauri 2.0を説明すると、次の図のような仕組みになっています。
Tauri 2.0の役割とは?
Tauri 2.0は、次の図のようにソフトウェア設計モデルでいうMVCに似ています。
MVCは、ModelやView、Controllerで構成された設計モデルです。ViewがUIなどの見た目を扱い、Modelが中身の処理を行い、Controllerがユーザーからの指示を受けて、ViewとModelを繋ぎます。
まさにTauri 2.0は、ViewがフロントエンドのWebページである「HTML5+CSS+JavaScript」のUIに当たり、ModelがバックエンドのRustに当たり、Controllerがフロントエンドとバックエンドを繋ぐブリッジ(JavaScriptとRustで渡す橋)に当たります。
この記事は参考になりましたか?
- フロントエンジニアのためのTauri 2.0ではじめるRustプログラミング連載記事一覧
- この記事の著者
-
大西 武(オオニシ タケシ)
1975年香川県生まれ。大阪大学経済学部経営学科中退。プログラミング入門書などを30冊以上商業出版する作家。ドコモでグランプリなどコンテストに20回以上入賞するアーティスト。オリジナルの間違い探し「3Dクイズ」がTVで約10回出題。プロフィールサイト:https://profile.vixar.jp
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営する開発者のための情報メディアです。日々の開発に取り組むエンジニアやテクノロジーを学びたい方に向けて、プログラミングやAI活用、開発ツール、エンジニアの学びとキャリアに関する記事をお届けしています。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
