こんにちは、もう夏も終わってしまい「とき~できる」効果だったため今年もアオナツラインをやるタイミングを逃したりょはです
最近、kindleでは売ってないような漫画を読むためのソフトを作ったのでその技術スタックとそのなかで思ったこととかを今回書いていきます
ダウンロードはここからできます
サムネはこのソフトに写真を入れたやつです
この記事は夏のブログリレー 2022年 41日目の記事です
技術スタック
tauri
tauri は rust でデスクトップアプリケーションをかけるあれですね
デスクトップアプリを作りたかったので tauri か electron か WPF か何かなら tauri かなぁって思って選んだ
rust 書きたい
solid js
tauri は webview をクライアントとして使うので react とか vue とか svelte みたいなフレームワークを使うとUI構築が楽ができます
そのなかで solid js を選んだのは書いたことがなかったから
sqlite
データを保存する必要があってJSONでもよかったけどいろんな絞り込みをしたくてSQLが適してそうだったから
sqlx クレートを使うと bundle してくれて気軽に使えます
思ったこと
tauri
electron と比べて辛いのはクライアントとのIPCに同じ型情報を使えないからそれぞれで提議しなきゃいけないところ
あとは electron (Node js) にあるようなライブラリが Rust にはないことが多い
特に画像処理に使った image
クレートは画像の encode/decode
が重すぎて困った
いいところは Rust でかけること
OS 周りの処理が丁寧に Result
型で扱えるから書きやすい
あとバンドルサイズが200分の1とかなのも大きい
あと Node は gyp が沼りがちだけど Rust は基本的にそんなことないのがうれしい
公式ドキュメントに書いてないことはここを見ると書いてたりする
https://jonaskruckenberg.github.io/tauri-docs-wip/introduction.html
solid js
React だなぁってぐらいしか思ったことがない
reactivity まわりのオブジェクトの扱いは vue3 を触ってると困らなそう
UIライブラリを使わない派だから大丈夫だったけどいい感じのUIライブラリはない
一番の不満は<Show>
っていう<v-if>
みたいなものがあるんだけど型推論が効かないこと
<Show when={hoge}>
<div>{hoge}</div> <-型推論でここが`undefined`になりうるっていわれる
</Show>
sqlite
特にない
ファイル消せばデータが消えるの手軽でうれしい
実際に書いてみてソート条件とかグルーピングとかを多用したからJSONじゃなくて正解だった
おわりに
クソ詰まんない記事でごめんなさい
最後に今やってるFANZAの 【まとめ買い】2,100作品以上から3本選んで3,000円!秋のブランド合同セットのおすすめを書いて終わります
- あの晴れわたる空より高く
- Missing-X-Link ~天のゆりかご、伽の花~
- 初情スプリンクル
- ワールド・エレクション
さよなら