うーん...。引数名にも注意が必要って、そこはなかなか気付けないんだし。まあまあだけど。
ということで、調子が出てきたら復活している技術部ソコノこと曽古野貴美ですが。
それはともかく、Tauriで大変なのはRustのところだけじゃない!の続きのやつ。
これはRustの難しさよりも、Tauriならではかも知れないのですが。
Rustの方の関数の仮引数名に cmd というのを使って JavaScript の方から関数を呼び出したら、そんなコマンドはないというエラーとか。
エディタでシンタックスのハイライトとかをしていると、予約語みたいなのは違う色で表示されたりするのですが、cmd は普通の色だったので気付きづらいのですが。
実はシェルのコマンドを呼び出す時に cmd という仮引数名を使うようなのです。[shell | Tauri Apps]
commanndというのが何か意味のある単語かも知れない、ということでcmdと略したのですが、そっちの方が意味のあることだったようです。
こういうのは意外とハマりポイントというか。Rustが難しいという先入観のせいで難しく考えたら原因が解らなくなりそうでもあります。
それとは関係なく、このエラーのおかげで、シェルのコマンドが呼び出せるというのが解ってしまったのですが。
今作っている部分は特にシェルスクリプトとかだったら簡単なのになあ、と思ってしまうことが多いので、使いたくなってしまいますけど。
そうすると環境に依存することになってしまうので、Tauriでやってる意味がなくなるので我慢なのです。
それよりも、遠足の学級新聞はいつやるのか?ってことだけど。うーん...。まあまあだけど。
音楽用パソコンのために買ったトラックボールが、時々ボールが引っかかってカクカクしてしまう、というのが気になって仕方がないのでLogicoolの新しいのを買ってしまったのですけど。
動きがスムーズになったら驚くほど集中出来たのです。
というか、これまで作業がはかどらなかった原因はトラックボールのカクカク問題だったに違いないということでもありますけど。
前はLogicoolのトラックボールだと「Shift+スクロール」で横スクロールが異常に遅いのがアレだったので別のメーカーのを買ったというのもありますが。
Logicoolのソフトがバージョンアップしたら解決しましたし、使い慣れているメーカーのが一番良いということみたいです。
というか、ボールが引っかかってカクカクするやつはもっと製品のテストをすべきなんじゃないかとか思ってしまいますけど。
<!-- 解決法がないか調べたら、同じ症状の人が沢山いるようなので、原因が私の手がベトベトしているからということではなさそうですし。-->
それはともかく、音楽用パソコンの前にはMIDIキーボードとかを置くことがありますし、やっぱりマウスよりはトラックボールの方が場所を取らないので良いですね。
これはただの画像ファイルじゃねえぜ。オレ様の書いたRustのプログラムがコピーした画像ファイルなのさ!
ハハハハッ!ハハハハッ!
ということですが、さらに...。
そのキャラは何なのか?ってことは技術部ソコノこと曽古野貴美なんじゃないか?って事なんだけど。
うーん...。
ずっとプログラムとかやってたのに、なんで私が登場しないのか?ってことだと。
まあまあだけど。
ということで、そういえばタグにLMB技術部とか書くのも忘れていましたけど、Tauriでアレが作れたら夢のようだ!というこのシリーズはRustが難しいせいで余裕がなくてあまり細かいネタが書けてないのです。
というか、細かいネタを書く必要はないといえばないのですけど。
ただ、今回はRustの部分も解ってきてけっこう進んだ感じなので、久々に曽古野貴美も登場したりして。
ちょっとつまずいたもののファイルのコピーをする機能が追加されて、さらにRustでは基本的に同じ名前のファイルがあったら上書きされるということなので、同じ名前のファイルのがあったらどうするのかというダイアログを出す!という機能も追加出来てしまったのです。
ファイルのコピーとか、簡単に出来ると思ったらまだRustのエラーの処理みたいなのが良く解ってなくて大変だったのですけど。
しかも、ネットで調べたらお手本がありそうと思いきや、Rustをやってる人ってもっと高度なことをやってる感じなのか、ファイルのコピーみたいなのは例が出てこないとか。
なので、自分でマニュアルを読みつつ頑張って少しだけRustも進歩したのです。
ファイルの有無を調べるやつは例があったので丸写しですけど。
ここまで出来たら、もしかしてバージョン0.0はもうすぐ完成するような予感もしてきました。
完成しても公開とかはしないので安心して大丈夫ですけど。
バージョン1.0になるような事があったらあるかも知れませんが。
それから、遠足の学級日誌はいつになったら出来るのか?ってことだけど。うーん。
まあまあだけど...。
オレ様の書いたRustのプログラムがファイルの情報を返してきたぜ!
ハハハハッ!ハハハハッ!
というか、いつもこういうところで満足してしまうからなかなか完成しない、という気もするのですが。
Tauri のアレで何とかしたいシリーズで難しいかと思っていたRustの部分をまた一つクリア。
ファイルの作成時間とか変更を加えた時間とかを調べる感じのやつ。
Rustの中では文字列とか数値ではなくてSystemTimeで値が得られるという事みたいだったのですが。
それをそのままJavaScriptに渡して上手くいくのか?と思ったらけっこう上手くいきました。
多分、今はまだ良く解っていないSerdeというのがよしなにやってくれてるのだと思いますけど。
[RustのSerdeの簡単な紹介 - Qiita]
それから、これだけだと記事のタイトルの意味が解らないので書いておくと、調べた時に返ってくる数値はUNIXエポックからの経過秒数ってことなので、そういうことなのです。
このエポックという言葉を聞くとなんとなく嬉しい感じがするのは、おもちゃメーカーの名前と関連しているのか、どうなのか。どうでも良いのですが。
ということで、多分半分ぐらいは出来ているTauriを使ってアプリを作ってみたい!の続きですけど。
完成する前に以前作ったところの修正というか、改善作業みたいなのをしてたりして。まるでこの記事のタイトルのアレみたいなのです。
色々と苦労しているうちにJavaScriptに詳しくなってきた、というのは前に書きましたけど、それで気付いたところがあったので早めに修正なのです。
この修正によってコードの中身はけっこうスッキリしたりして、前進はしてないけど次に進む気力が少し出てきた感じはします。
ただ、ここからはまたRustが出てくるのですけど。Rustはエラーが出ると気分的に振出しに戻される感じがあるので覚悟が必要なのです。
というか、前にネットにあったコードを参考にして書いたRustの部分は、読み直してもどうしてそうなるのか?というのが良く解らなかったりしますし。
しかも、同じ内容でも色んな書き方が出来るようなところもあるので、色んなコードを見て勉強しようとしてもなかなかピンと来ないとかもあったりして。
とりあえず言い訳ばかり書いたので、しばらく停滞する準備は出来たということでもあります。
<!-- そういえば「カニ本」買ったのここに書いたっけ?(カニ本ってなんだ?という感じですが、Perlのリャマ本に対して、Rustのカニ本ってことです。どうでも良いですけど。)-->
ということで、Tauriで作れたらうれしいなあと思っている、画像を管理したりするアプリの続きなのですが。
良く考えたらドラッグアンドドロップでフォルダを開くことが出来ないので、Rustのコードに挑戦。
やっぱりエラーが出たのですが、エラーの内容を良く読んでみると「expect("REASON")」を使ったらどうか、というようなことが書いてあったのです。
なんだか解らないまま、とりあえずそのまま書いてみたら成功。
でも、解らないままなのは気持ち悪いので、調べてみたらexpectについては何となく解りました。しかし「REASON」って何だろう?ってことなのですが。
良く考えたら、ここは「REASON」って書くのではなくて、コードにあった文章を自分で考えて書き込むところなのでした。
expectというのがエラーが発生した時にエラーの内容を表示するみたいなものなので、このままだとエラーが出た時に「理由があってエラーです」って感じの表示になって間抜けな感じです。
それはどうでもイイのですが、Rustのコンパイラは正しい書き方を提案してくれたり、良いですね。
その分書くのは難しいというか。難しいからエラーの内容が詳しく出せたり出来るってことかも知れないですけど。
そんな感じですが、今のところ自分で考えてRustのちゃんとしたプログラムが書ける気がしなかったりしてます。
音楽の作業を再開していると書いたのですが。
続きをやろうと思ったら、楽器が音痴すぎるのです。
またしても良いタイミングでMIDIキーボードが壊れたということみたいです。
勝手にピッチベンドのデータが送信されて音がズレるやつなのですが。
これが起きると自分の耳が変になったんじゃないか?とか思ってスゴく不安になるので困るのです。
というか、実際に耳が変になったとういか、そういう感じだったことがあって。
面白い響きを追求していたら音がコードとしてちゃんと響いているのか解らなくなったりで。
その時は、理論的に正しいから多分大丈夫だろうとか、そんな感じで曲を作ってたりしてましたけど。
この話はMIDIキーボードが音痴なのとは関係ないですけどね。
それにしても、どうしていつもやる気を出したタイミングで壊れるのか?ということですが。
なんとかして欲しいです。
<!-- 思い切って88鍵のを買うか迷っているのですが、また良いタイミングで壊れるはずなので、これは難しい決断になりそうです。-->
ということで、タイトルがネタ優先でタウリンじゃなくなってますが、Tauriでアレが作りたいだけなのに...というやつの続きです。
最近ものすごく体調が悪かったのですが、それでも頑張って以前の続きのJavaScript部分を書いていたら、何を書いたのか解らなくなったとかいう状態でしたけど。
とりあえず、オマケになるはずなのに一番の難所になったかも知れないスライドショーの設定画面は出来たことになっているのです。
そして、意味もなくスクショですが。
全部テスト用のボタンですが、その中にもTESTという名前のボタンがあるとかはどうでも良いのです。
それよりも、問題はこのボタンの中にまだない「SAVE」(保存)をどうするのか?という感じなのですけど。
たとえばJPEGファイルを読み込んでPNGに変換して保存、という感じのSAVEのやり方はあるのですが、アプリ独自の書類を保存とかどうすればいいのか。
その他にも、細かいところでアレってどうやるんだ?というのが色々とあって大変なのですけど。
頭の中で考えてた時はすぐに出来そうなアプリだったのですが、容易いことではなさそうです。
マーティ・フリードマンがベイスターズのユニフォームを着て登場して盛り上がったこととに影響されたワケではないですが、音楽の作業をちょっと再開。
パソコンが新しくなったこともあって、ソフトも色々と新しくなってたりするのは前にも書いたか、どうだったか。
でもMODO DRUMというのを買ったのはまだ書いてないはず。
というか、買ってから全然使ってなかったですし。
なかなか良いものという気がしていたのですが、単体で鳴らしていてもかなり動作が重い。
しかも、ちゃんと作業を始めて他の楽器の音と一緒に鳴らしたら重すぎて作業にならないのです。
どういうことか?という感じですが。
もともとM1チップには対応してなかったみたいで。
今ではサポートされているのですが、その辺の関係でちょっと無理があるような感じも。
Macの新しいCPUも登場してからけっこう経つのですが、こういう問題はまだあるということですかね。
ついでに書くと、SC-88Proが壊れたのでPIANOBOX PROとか買ってみたり。
惜しい部分は色々あったりしますが、今時あまりないMIDI音源モジュールですし、昔は凄いものだと思っていたE-MUの音が入ってるとか。しかも安いのでまあまあ満足ではあります。
あるいは或る御リズム。
ということですが、四角い枠が重ならない限り自由にレイアウト出来るやつのアルゴリズムみたいなのを考えてたら、パコベーに部屋の電気を消されたので終了。
実はもっとシンプルにしたら上手くいくような気がしたので、昨日頑張って違うやり方のコードを書いてみたのですけど。
上手くいくと思ったのに、いくつかの条件では変になるとか。
目で見たら重なってるって明らかなのに、なんで解らないんだ!とか、プログラムを書く人が思ってはいけない事を思ってしまいたくなるのですけど。
でもノートに大量の□を書き込んで考えた末に、また新しいやり方を思い付いたので、そろそろなんとかなって欲しいところです。
<!-- タイトルにタウリンが付かなくなっただけでなくて、Tauriでやってるアレとかいう説明もなくなってきていますが、ここを乗り越えたらまたTauriな感じになるので頑張りたいと思います。-->
ということで、タウリンが増えそうにないのでタイトルにタウリンが付かなくなったTauriでアレを作りたい、というのの続き。
アレとは何かというと、MacOSをアップグレードしたら使えなくなった画像や動画、音声のファイルを管理する感じのMedia Proというソフトの代わりになるもの、ということなのです。
そして、最近ずっと進めなくなっているのは、そのソフトの中ではオマケって感じもするスライドショーの機能の部分なのですが。
でも複数の画像を(ある程度)自由なレイアウトでスライドショーできる機能が面白くて好きだったので、これは再現すべきだと思ってやっているのです。
問題なのがスライドショーのレイアウトを設定するやつ。
テスト作った時には上手く動いていた気がしたのですけど、どうもダメだったようで、場合によって予期せぬ動作になったり。
画像が重ならない限り大きさを自由に変えられるはずなので、上の画像だと一番左の枠はもっと右側まで広げられるはずなのにあの位置で最大ということになってたり。
でも左から二番目の枠は右の方に大きく出来たりするんですよね。
どこかで単純なミスをしているに違いないのですけど。
何度みても合ってるような気もするし、間違っているような気もするというか。上手くいってないので間違っているんですけど。
こうなってくると別の方法で作り直す方が早いような気がしてきました。
そうすると、昨日書いた二日がかりで原因が解った部分とかもやる必要がなかったということになりますけど。
まあ、苦労すればするほどJavaScriptには詳しくなってきたような気がしているので、めげずにやるのです。
<!-- そして、Rustの方には全然手を付けられないのでそっちは詳しくなれません。-->
タイトルにタウリンと書いてないですが、Tauriで大変なやつの続き。
TauriというよりもJavaScriptですが。
ある要素の幅を調べようとすると何故かゼロになっているとか。
説明によると非表示になっている要素はゼロになるらしいのですが、JavaScriptのコード的には表示されていることになっているのです。
と思い込んでいて昨日からずっとアレコレ試していたのですが。
調べたい要素のさらに上位の要素がまだ表示されていない状態だっということにやっと気付いたのです。
大量のコードの時にはどこで何をしたのか覚えてなかったりするのですけど。
もう少し解りやすく書く事も出来そうなので、何とかしたいですが。
でも、スッキリしたコードになるようにあれこれ計画して書き始めても、途中で上手く動かなかったりして結局ゴチャゴチャになるというのもあったりして。
それはともかく、非表示になっているのに気付かないで色々とコードをいじったおかげで、何がどうなっているのか解らなくなってきてたりもするのです。
これはけっこうヤバいという感じですが、全部書き直しにならないように頑張りたいと思います。
もうタイトルがワケが解らないですが、Tauriでどうするのか?というやつの続きというか。
JavaScriptとRustでデスクトップアプリを作れちゃうということなのですが、Macの場合はJavaScriptの部分はほぼSafariと同じ仕様ってことになっているのです。
なのですが、私はここまでいつも使っている方のFirefoxでテストをしていたのです。
でもJavaScriptはどのブラウザでも動くように決められた規格みたいなのがあるので、問題ないはずということだったのですけど。
テストで作ったJavaScriptの関数とかをTauriの方に移植(というかコピペ)したら上手く動かなかったり。
前にもちょっと書いたモジュール化みたいなのもやっているので、原因はそっちなのかも知れませんが。
その辺はテストの時もSafariでやっていたら原因が解りやすくて良かったということなのです。
最近はかなりJavaScriptしてたので、上手く動かないところは修正出来たりしたのですけど。
JavaScriptって、初心者でもブラウザだけで実行出来たりするので敷き居は低いような感じがありますが、やればやるほど謎が増えていくような気もします。
というか、私の超便利アプリはいつになった完成するのでしょうかね。