[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

Rustのエコシステムの拡がりを感じるデスクトップアプリのためのツールキットTauriを紹介

2022年12月16日(金)
松下 康之 - Yasuyuki Matsushita
Rustでデスクトップアプリを開発するためのツールキットであるTauriを紹介。

メモリーセーフなシステムプログラミング言語であるRustの利用が拡大している。Microsoftは2019年に、これまで開発してきたソフトウェアに関する脆弱性の70%はメモリー関連のバグが原因だったと開示した。そしてメモリーセーフなソフトウェアの重要性を強調し、それ以降、Rustに対する投資を増大させている。そんな状況を背景にRustのエコシステムが拡大、ミドルウェアやシステムに近い部分のソフトウェア以外にもデスクトップアプリケーションを開発するためのツールキットやゲームを開発するためのエンジンが登場している。これまではバックエンドのシステム関連ソフトウェアだけが対象と思われてきたRustだが、デスクトップアプリケーションやモバイルアプリケーションもメモリーセーフなシステムの対象になってきたことがわかる。今回はデスクトップアプリケーション開発のためのツールキットTauriを紹介する。Tauriはオープンソースソフトウェアとして公開されている。

参考:Tauri

Tauriはデスクトップアプリケーションを開発する場合にバックエンドの部分、主にアプリケーションのロジックの部分をRustで作ることができるというツールキットだ。フロントエンドの作成にはJavaScriptもしくはTypeScriptが想定されているが、ReactやSvelteなども選択可能だ。レンダリングにはWindowsの場合はWebView2、macOSの場合はWebKitを使用する。独自のレンダリングエンジンを内包しないことで、バイナリーサイズを縮小できる。またレンダリングエンジンに脆弱性が発見された場合も、OS側に任せることで個別のアップデートを行わなくても済むという利点がある。

これはElectronに対して最大の違いと言えるだろう。GitHubが開発したElectronはWebのテクノロジーを使ってWindowsやmacOS等に対応したアプリケーションを作るためのフレームワークだ。ElectronはChromiumをレンダリングエンジンとして内包することで、OSに頼らずにレンダリングができるという利点があったが、すでにWebView2やWebKitがOS標準になっていることを考えると、アプリケーションを肥大化させる欠点がある。加えてレンダリングエンジンにセキュリティ周りの更新が発生した場合に、OSとは別に更新を実施する必要があるという問題点を抱えている。

今回紹介するのは、2022年6月に公開されたQuick Intro - Tauri Desktop Appという動画で、この中ではツールのセットアップ、Visual Studio Codeを使ってRustとJavaScriptのコードを書く、実行形式をビルドする、Windowの作成と属性を変更するなどの操作を見せながら解説している。Node.jsのモジュールであるServorを使ってローカルホストに疑似的なWebサーバーを作ってTypeScriptのコードが変更されるたびにリロードされるように設定される様が解説されている。アプリケーションをとしてはボタンをクリックするとカウンターの数値が加算されるというシンプルなデスクトップアプリケーションを開発している。

参考:Rust Tauri 1.0 - Quick Intro - Rust Desktop App

Visual Studio Codeでコーディング。左上がJS、左下がRustのコード、右はアプリのWindowだ

Visual Studio Codeでコーディング。左上がJS、左下がRustのコード、右はアプリのWindowだ

Tauri自体の特徴は公式GitHubページに書かれている説明文から引用する。

公式GitHub:https://github.com/tauri-apps/tauri

高速なフレームワークとしてRustでロジックを記述、フロントエンドはJSで実装

高速なフレームワークとしてRustでロジックを記述、フロントエンドはJSで実装

ここでTAOとWRY(それぞれタオとライと発音)という外部のモジュールが紹介されている。TAOはWindowを操作するためのライブラリー、WRYはWebViewを使うためのライブラリーである。

TAOとWRYの説明

TAOとWRYの説明

すでにTauri自体は1.1というバージョンがリリースされており、順調に開発が進んでいることが見てとれる。

Tauri 1.1のリリースは2022年9月15日だ

Tauri 1.1のリリースは2022年9月15日だ

フロントエンドはJavaScriptやTypeScript、CSSで行えるためデザインの部分とアプリケーションロジックを切り離して開発することも可能、そしてできあがったバイナリーも確実にElectronよりも小さくなる。動画ではTypeScriptとCSSで外見を作成、ロジックはRustで記述という仕組みについてコードを追加しながら実際に行っている。以下の表ではバイナリーのサイズが小さいことを比較しているが、Electronの52MBに対してTauriは3MBという小ささだ。

サイズが小さいことをElectronと比較

サイズが小さいことをElectronと比較

デモではなくTauri自体の特徴の解説は以下の動画を参照して欲しい。これはRust Linz 2022という2022年2月に行われたバーチャルカンファレンスで公開されたセッションで、プレゼンテーションを行っているのはDaniel Thompson-Yvetot氏だ。

参考:@href>{https://www.youtube.com/watch?v=u4OsO6dow0c,Tauri Foundations by Daniel Thompson-Yvetot - Rust Linz\, February 2022}

この動画ではTauriがトレンドとして上昇していること、Electronとの比較で評価されていること、何よりもセキュリティを宣伝文句ではなく実際に実装していること、Tauriのコミュニティ、ガバナンスなど包括的に解説を行っている。40分という長い動画だが、約30分辺りからTauriそのものの解説が始まっている。

Tauriの特徴を解説

Tauriの特徴を解説

いわゆるデスクトップアプリケーション開発に必要なことは含まれており、GitHub Actionですべての対応プラットフォームのビルドができることなども解説されている。

セキュリティについては、オランダの調査会社であるRadically Open Securityと言う外部団体が監査したレポートを紹介。ここでもコミュニティだけではなく外部のサービスを使ってセキュアなソフトウェアであることを検証している。

セキュリティに関するレポート(PDF):https://github.com/tauri-apps/tauri/blob/dev/audits/Radically_Open_Security-v1-report.pdf

またオープンソースプロジェクトとしての成り立ちについてはCommons Conservancyによって監査が行われている。

参考:Statutes of Tauri

現状ではすべてがボランティアとして行われており、寄付金によって運営が行われている。寄付や財政に関しては以下のサイトで確認できる。Thompson-Yvetot氏自身も寄付を行って運営しており、今後は企業からの大規模な財政的支援が必要になってくることは想定できるだろう。Rustを強力に推進しているMicrosoftからの支援は必要かもしれない。

参考:寄付の状況:https://opencollective.com/tauri

最後に日本語による解説動画を紹介。約10分という時間で概要を解説しており、日本語を母語としているのであれば何よりも最初にこの動画を見るべきだろう。タイトルは「【ゆっくり解説】Rust でアプリ開発!Tauri 1.0 リリース!」となっている。

参考:Tauriをゆっくり解説

システム関連のソフトウェアにおけるRustの状況については、Linuxカーネルがバージョン6.1でRustを標準として採用することが明らかにされた。今後はRustをデスクトップアプリやゲームの開発のために使うことが進んでいくだろう。ビジネスの世界でもCやJavaからRustに乗り換える準備が必要となる時期は近いかもしれない。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

OSSイベント

Open Source Summit Japan 2022開催。車載からストレージ、Kubernetesまで幅広いトピックをカバー

2023/4/26
2022年12月、横浜でOpen Source Summit Japanが開催された。リアルでは約500名が参加し、車載システムからSBoM、AIまで広範なセッションが行われた。
開発言語イベント

WASM Meetup@ByteDanceで垣間見たWebAssemblyの静かな広がり

2023/4/11
ByteDanceのシリコンバレーオフィスで開催されたWebAssemblyのミートアップを紹介。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています