SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

フロントエンジニアのためのTauri 2.0ではじめるRustプログラミング

お絵描きアプリをグレードアップさせよう!Tauri 2.0でアンドゥとリドゥを実装

フロントエンジニアのための「Tauri 2.0」ではじめるRustプログラミング 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本連載では、ベジェ曲線でお絵描きするデスクトップアプリを開発しながら、「Rust」と「Tauri 2.0」について学んでいきます。連載第5回は、お絵描きアプリをアップグレードさせます。マウスホイールでアンドゥやリドゥできるようにして、サンプルのトイプードルを表示できるように解説します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 前回は本連載で作るお絵描きアプリのプロジェクトを新規作成し、一筆書きでお絵描きをできるようにしました。

 今回は前回に引き続き追記して行って、お絵描きアプリをグレードアップさせます。<canvas>タグは、幅の高さをリサイズや、マウスホイールでアンドゥやリドゥしたり、サンプル画像を表示したりします。今回もまだバックエンドのRustは書き換えません。

描画矩形をリサイズする

 前回のコードに続けて、次のサンプルコードを追記します。

 次のコマンドを実行しプロジェクトをデバッグビルドしたら、お絵描きする<canvas>タグの描画領域が画面幅いっぱいになります。<canvas>タグはウィンドウがリサイズされるたびに同時にリサイズします。

 最初<canvas>タグの高さをウィンドウの内高さと同じ高さにセットして、ウィンドウの内いっぱいに<canvas>を広げようとしたところ、ウィンドウにスクロールバーが出てしまいました。そこで仕方なく<canvas>の高さを少し減算して、代わりにそこに説明文を追加しました。

タグのリサイズ
<canvas>タグのリサイズ
「Tauri 2.0」プロジェクトのデバッグビルドと実行
$ cargo-tauri dev
サンプルコード「src」→「main.js」
(前略)
// 全てのDOMが読み込み完了したら
window.addEventListener("DOMContentLoaded", () => {
(中略)
  window.addEventListener("resize", resize, false);
  resize();
});
// キャンバスリサイズ
function resize() {
  _canvas.width = window.innerWidth;
  _canvas.height = window.innerHeight-40;
  line();
}
(後略)

サンプルコードの解説

 ウィンドウのリサイズイベントが起こったら、「resize」関数の呼び出しをフックします。その後、htmlファイルのDOMが読み込み完了したらresize関数を呼び出します。

 resize関数で<canvas>タグの幅をウィンドウの内幅と同じにセットして、<canvas>タグの高さをウィンドウ内高さから40減算したサイズにセットします。

コラム:ESモジュールはWebサーバ上でしか動作しない!

ESのダジャレ

 従来のHTMLではJavaScriptはローカルのWebブラウザでもほとんどの機能が動作していました。しかし最新のESモジュールのJavaScriptはWebサーバ上でしか動作しません。ただしTauri 2.0上ではHTML5+CSS+JavaScriptをWebサーバ上で動かしているのと同じなので動作します。

 またTauri 2.0のデフォルトのテンプレートではJavaScriptはESモジュールになっていますが、従来のJavaScriptももちろん動作します。

コラム:Tauri 2.0向けのWebページだけをWebブラウザでテストするには?

 Tauri 2.0向けのWebページはhtmlファイルとcssファイルはそのままでも動作します。問題はjsファイルです。

  ESモジュール(type="module")を使わなければ、JavaScriptの「window.__TAURI__」がつくコードをコメントアウトして、処理に合わせて代入する値などを変えることで、Webサーバ上じゃなくてもローカルのWebブラウザで動作テストができます。

Webブラウザで動作させたTauri 2.0向けWebページ
Webブラウザで動作させたTauri 2.0向けWebページ

次のページ
アンドゥとリドゥの実装

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
フロントエンジニアのためのTauri 2.0ではじめるRustプログラミング連載記事一覧

もっと読む

この記事の著者

大西 武(オオニシ タケシ)

 1975年香川県生まれ。大阪大学経済学部経営学科中退。プログラミング入門書などを30冊以上商業出版する作家。ドコモでグランプリなどコンテストに20回以上入賞するアーティスト。オリジナルの間違い探し「3Dクイズ」がTVで約10回出題。プロフィールサイト:https://profile.vixar.jp

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20894 2025/03/13 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング