こちらにメモツールのポジトリがあります
https://github.com/8bitTD/memo_dioxus/
なぜ、この記事を書こうと思ったのか
普段、仕事でもプライベートでもメモを取る機会が多いのですが、
使っていたフリーソフトのメモツールが使いづらいと思うようになり 自分で作ってみよう
と思ったのが出発点でした。
その際、GUIクレートの選定やメモツールを作るうえでこだわった点などがいくつかあったので記事になるかなと思い、今回記事にしてみました。
RustでWindowsアプリを作りたい人には、参考になるかもしれません。
メモツールの要件
- Rustで作る
一番得意なプログラム言語なため - Windows上で動くもの
仕事もプライベートもWindows10を使っていたため - ライトモードとダークモードの対応
個人的にOSの設定がダークモードの場合、アプリはダークモードで表示されてほしいと普段から思っていたため - .txtでメモの内容を保存する
txtファイル管理が一番取り回しがしやすそうだったため - 項目ごとにタブでメモ内容を分ける
メモを遡って見る場合に便利なため
GUIクレートの選定
egui, tauri, dioxus と試した結果、dioxusを採用
egui を不採用にした理由
- CSSで見た目を調整出来なかったため
- こちらでも書いたのですが、TextEdit::multilineの改行時の挙動に問題があったため
tauri を不採用にした理由
- CSSで見た目を調整で出来て、一番表現の幅が広くて良かったのですが、
変数がRustとTypeScriptの2重管理になり不具合が起きたときの原因調査がx2になって面倒になったため
dioxus を採用した理由
- CSSで見た目を調整出来て、メイン処理をRustだけで書けたため
要件以外でこだわった点
- メモを作成した時にすぐにtextareaにカーソルがフォーカスするようにこだわりました。
こちらのexamplesにフォーカスのサンプルが乗っいて、参考にさせていただきました。
- メモ検索時に出来るだけメインスレッドを止めない (応答不能にならない) ようにすることにこだわりました。
こちらに非同期で変数を渡す処理が乗っていて、参考にさせていただきました。
現状の不満点
- メモが多くなってきて挙動が重くなったときの対応
現状では、oldフォルダ にメモを移動させて、定期的に oldフォルダ 内を削除する方法を取っております。
将来的にもっと洗練された方法にしたいと思っております。
まとめ
3回くらい作り直して、ようやく理想に近いメモツールが出来たかなと思っております。
良かったら使ってみてください。(*´∀`)ノ