ということで、ドラマチックなタイトルになってきたけど作っているのは実用的なTauriで作る何かの続きですけど。
作るにあたってお手本にしていた、Media Proというアプリ。
お手本というか OS のアップグレードで使えなくなったから代わりになるものを作ろう、ということでやっているのですが。
前にも書いたのですが、使えなくなってから時間が経ちすぎてどういう挙動だったのか思い出せない部分もいくつか。
ファイルの選択とかも、しかたなくMacのFinderと同じ感じにしているのですが、テストで使っていると何かが違うような気がします。
逆に、テストで使っていたら、そういえばこういうことが出来たはず、というのも思い出すことがあったりもして。
そういうのを全部追加していくと完成しない気もするので、早いこと妥協版を完成させて落ち着きたいのですが。
なかなかちゃんとしたものにならないのですが、最近はずっとCSSでデザイン部分を詰めていったので、見た目だけはちゃんとしたアプリっぽくなっています。
<!-- ときどき、見た目は良いけど中身は酷いというフリーのソフトとかもありますし、今の状態でもまあまあ使えるクオリティではあるのです。-->
ついでに書くと、昨日書いた問題点については、原因は何となくしか解ってないけど大幅に書き直したら思ったとおりの動作になっています。
ということでメコレスという変な名前がついたTauriで作っている何かですが。
仕上げの段階になってやってないことを色々と思い出して、急遽追加された機能が沢山あったりするのですけど。
珍しいことに、ほとんどエラーなしで追加出来たりして。
このまま妥協版の完成まで一気にとか思っていたのですが、さっきやっとつまずきました。
やっぱりすんなり出来てしまうとタウリンっぽくないですし。
というネタはどうでも良いですが、他のところでは普通に出来ているし、それほど複雑ではないはずの、キーボードの入力を読み取る、というのがなぜか出来なかったり。
こういうことがあると、これまで出来ていたキーボード入力の読み取りの部分も、実はやり方が間違ってるけどたまたま上手くいってるだけなんじゃないか?とか、そんな感じで恐ろしくなってくるのですが。
今日は他がかなり上手くいったので、ここはひとまず休止してじっくりやる方が良さそうです。
<!-- というか、いつになったら完成するのか。-->
Mecoress ってそういう意味だったのか!

ということで、Tauriで作ってるのかどうなのか解らなくなってきたアレの続きですけど。
標準仕様みたいな見た目だったボタンとかのデザインも変えたりしてソレっぽくなってきたのです。
そして、そういうこと、ってどういうことか解らないと思いますけど。
アプリの名前が本当にMecoressになってしまいそうなのですが。
このボタンの配置のデザインを思い付いてしまったら、これが一番良い名前という気がしてきたのです。
というか何がMecoressなのか?というと。
メディアファイルをコピーとかムーブしたりリネームしたりスライドショーも出来ちゃう!という意味でMecoressなのです。
発音はカタカナ語を基準にするとメコリスっぽいですが、メコアスにすると英語っぽい感じもしますし、そのままローマ字風にするとメコレス。
どれも変な名前ですけど。
そんなことよりも、苦労してなんとか出来たことになった部分を今確認するとちゃんと動いてくれないことが多いのですが。
どうなっているのか?という感じです。
見た目は完成に近づいているのですけど、直せるところは直したいので、大変なのです。
ということで、久々だけど作業はしてたTauriで何を作るのか?の続きですけど。
ファイルの移動をした時にファイルの場所を更新する部分を作ってなかったことに気付いたので、作ったのです。
更新するにはファイルの移動の時に移動先を戻り値として受け取りたかったので、Rustのコードを修正したのですけど。
テストしてみたら所有権に関するエラーがでて、ついに来た!って思ってしまったり。
所有権はRustに特有な考え方の一つで、入門書でも詳しく説明されているところですが、自分でコードを書いているとそんなことには全然気付かないというか。
他の言語では全く気にしない部分でもあったのですけど。
とにかく、エラーが出たので直さないといけないのですが、Rustはエラーがあると修正案を出してくれることが良くあるのです。
それによると、clone()を使えば大丈夫ということになっていました。
でも、入門書ではあまり出てこなかったclone()ですし、こういう時には参照を使ったら良いということを思い出したので、修正案を無視して書き直したら成功してちょっとウレシイ。
これはかなり進歩したような感じですが、所有権のエラーが出たのは何でなのか?というのはイマイチ解ってなかったりして。
いつかはRustで何かを作ってみたいとも思っているのですが、道は険しそうな感じです。
それとは関係なく、Tauriで作ってるアレですが、春に作った部分の仕上げというか確認作業をしてみたら、けっこう怪しいですけど。
直さないとちゃんと使えないような感じもありますが、今回の妥協版は私しか使わないので、これは次のバージョンで修正されるでしょう。
昨日の激重だったうえに失敗のMVもリメイクするやつの続きですが。
失敗した部分を修正するために、細かいタイムテーブル的なものをわざわざ作ってやり直したのに、結局アイディアが良くなかったということに気付いて、最初からやり直したのです。
最終的にシンプルにしたら上手くいったので、余計な苦労をしていた感じですが。
それとは関係なく、今日は昨日よりも動画の書き出しが速いのです。
今日はサイズを25%から50%にしたのですけど。
もしかするとマスクとかは関係なくて、サイズを小さくしてたのが逆に良くなかったのかも知れないとか。
メインの動画は昔作ったやつを使っているのですが、サイズを小さくして仮の書き出しをすると、もとの動画を縮小しないといけないことになるので、その分処理に時間がかかっているのか?ということですが。
ちなみに、今は最終的な100%で書き出しているのですが、また遅い。
昔作ったのはDVDサイズだったので、50%だと丁度そのままのサイズってことになるのか、どうなのか。
どうでも良いですが、もうすぐやっと公開ということになるのです。
マスクの下に激重記念日!
ということで、五七五になってないけど久々の記念日、といっても何のことだか解る人は多分いないですが。
アルバムがリマスターされるから、ついでにダイジェスト版も作って、さらにダイジェスト版のMVも音を入れ替えたりしているのですが。
途中まで作ったのを確認しようと思って、サイズを小さくして仮の書き出しをしてみたら、動作が重くてまだ書き出せてないのです。
動画の書き出しってビックリするほど速い時もあるのですが、こうやって良く解らないけど重くて遅い時もあったり。
色々と謎ですが。
多分、これまで使ったことのない画像にマスクをかける技を使ってたりするのが原因なのか。
とか書いてたら書き出しが終わりました。
でも再生してみたら、思ってた効果が出てないので、やり直し。
なんか性能の低いロボットがゆっくり作業をしているような、そんな動画になってましたが。
これが大きいサイズでやっと書き出したあとだとしたら、この失敗動画がショックな感じになるところでした。
サイズの小さいので試しておいて良かったということでもあります。
あるアルバムのリマスターが公開されると予告したのですが、タイミングを失ってまだ出来てませんけど。
どうせなら当時作ったダイジェスト版も音を入れ替えようという事になって、昔のフォルダを見ていたら、曲のどの部分を使ったのか?ということが書いてあるテキストを見つけたのです。
「:」で区切られた数字が書いてあって、それが時間を表しているっぽいですけど。
何秒からどの曲が始まるということは大体わかるのですが、どの曲のどの部分がというのはかなり謎。
二つの時間の間に「==」というのがあったり、「||」があったり。
10年前も一応Perlとかはやっていたので、プログラミング的な意味があるのかと思いきや、そうでもないですし。
あとで解りやすくするためのテキストのはずが、全く意味がないとか。
こういうのにはコメントを沢山書いておいた方が良いに違いない。
ということで面倒ですが、編集に使ったDAWのファイルを開いて詳しく調べないといけません。
ということで、昨日は大混乱で何をやっているのか解らなくなっていたTauriのアレの続きですが。
一日経って冷静になるとなんとかなるようです。

ちなみにスクショに写っているのは、スライドショーでの画像の表示の仕方を変えたりするためのものですが、お手本になっているMedia Proではこの右寄せとか左寄せの設定は出来なかったということで、タウリンはついにホンモノを超えた!と言っても過言ではないのです。(ウソですよ。)
まだ見た目はプロトタイプ感ですし、細かい問題点も無きにしも非ず、ですが。
細かいことは気にしない妥協版なので、あとは見た目をアプリっぽくするのです。
それ以外にも「このソフトで開く」とか「Finderで表示」みたいなのを出来たらかなり良いですけど。
そうなるとまたRustを書かないといけなくし、しかも最近はずっとJavaScriptだったので、そろそろRustを忘れていそうですし。
前から思っていましたが、初めて作るアプリとしては大規模すぎるって事でもあるのです。
<!-- 楽器とかでもいきなり難しいことをやろうとして、上手く出来ないで挫折とかも良くあるのですが、Tauriに関してはここまで来たので頑張っているともいえますが。-->
妥協版の完成は目の前のはずのTauriでアレを作ってるやつの続きですけど。
今度はJavaScriptでもRustでもなくてHTMLとCSSなんですよ。
なんですよ、ってなんなのか?って感じですが。
クリックするとメニューが開いて、その中の項目を選択するとさらにそこからメニューが開くみたいなのを作りたいのですけど。
何となく書き始めたら途中から混乱してきてゴチャゴチャになっておるのです。
HTMLを書き出すのにはJavaScriptを使っているのですけど、こういうメニューを作成する専用の関数みたいなのを作るべきなのか。
というか、こういう部分はXcodeとかの方が断然簡単に違いないです。(ちゃんと作ったことはないので知りませんけど。)
JavaScriptでも色んなUIを簡単に作れるアレ(なんて呼ぶのか知らない)もあるのですが、ちょっと見てみたら、それようにまた勉強が必要な感じで、コードも普通のJavaScriptとかなり違ってたり。
なので、やっぱり素のJavaScriptとHTML、CSSで頑張るのです。
<!-- JavaScriptとHTML、CSSでやると見た目がLittle Mustapha's Black-holeになるような気もするのですが、まだその辺のデザインとかはやってないので、どうなることやら。-->
スクショを載せるたびに違うものみたいな感じもあるのですが、Tauri で一つ上手くいくと安心して次をやる気が少しなくなる、の続きです。

<!-- ネコ蒲団君画像が懐かしいですが、アプリのテスト用に当時目のつくところにあった画像を適当にまとめてあるので、テストにはネコ蒲団君とBBRの画像が多く登場するのです。-->
もうすぐ妥協版である機能限定版が完成するかと思っていたのですが、途中で中断して後回しになっていたことが色々とあるので、なかなか完成しないというか。
中断した部分を作っていたのもかなり前なので、何をどこまで作っていたのかとか、それを思い出すところから始めないといけなかったりするのです。
上のスクショはスライドーショー中の画像なのですけど、画像リストの枠をウィンドウっぽく移動出来るようにするところまで完了。
というか、ウィンドウっぽくするというのはJavaScriptで作ってるアプリならでは、かも知れませんけど。こういう作業は結構やってきたので、コツを掴んでいる感じがしているのです。
というか、ピンクのラインとか、水色の四角は何なのか?っていう感じですが、あれがウィンドウっぽくなってる部分で、ピンクのラインが移動させる時にクリックする部分で、水色の四角が閉じるボタンだったり。
これは最終的にはちゃんとウィンドウっぽくなるように変えるのですが、ちゃんと機能するのが解るまでは解りやすい色分けになっておるのです。
ついでに書くと、アプリ名も変わっているのですが、これから良いのが思い付かないとこの怪しいアプリ名で決定という事になってしまうのです。
もうワケが解らないですが、Tauri で新しくウィンドウを作成して直後にそのウィンドウに emit しても反応がないというやつの続きです。
原因はスクリプトなどが全部読み込まれる前に emit しているからということは解ったのですけど。
そういう時には window.onload とか addEventListener で load とかで上手く行くはずと思ったら、なぜか load でスクリプトが動かないような。
私の書き方が間違っているのか、あるいは Tauri では使えないということなのか。
ならば一秒待つやつの次にダメそうな感じで、スクリプトの一番最後で新しいウィンドウから元のウィンドウにemitするとかでどうなるか?と思って試してみたら。
上手くいく時と行かない時があるのです。
何故かと考えてみたら、emitを受け付けるための listen というのが await なので、listenが終わる前にemitでやり取りしようとして上手くいってないということでした。
ということは listen の await が終わったタイミングでウィンドウ間のやり取りをするようにすれば良いに違いない。
<!-- ここまで書いて思ったのですが、この文章は中途半端な機能の機械翻訳みたいですけど、ちゃんと私が書いてますよ。-->
ということで、書いている内容は全然伝わらないと思いますけど、新しいウィンドウとやり取りが出来るようになったので、保存したファイルを開く!や、選択した項目から新しいカタログを作る!が出来るようになったのです!!
なんというか、普通のやり方で出来ないと無理と思ってしまいますけど、意外となんとかなることもある、という感じで。
こういうのはパズルみたいで面白いと思います。(ただし上手くいった時に限る、という感じですが。)
これで多分タウリン500mgにはなったと思います。(ここまで約7ヶ月...。)
エミットの過去分詞は emitted なんですけど、なんとなくエミットゥンって書きたくなってしまう、ということはどうでも良いのです。
ちょっと前にTauriでエミットを使えばやりたいことが出来るようになるに違いないと書いたアプリの続きですけど。
新しいウィンドウの作成に成功したら次の処理をする、という書き方が用意されていて、それを使えば簡単だ!と思ったのに上手くいかないとか。
どうやら、ウィンドウは作られているけどまだその他のスクリプト等がロードされる前に成功のお知らせが来てしまって、そのタイミングで emit しているので、新しいウィンドウでは受け付けてくれないということのようです。
間に、タイマーで一秒待つとか入れたり、ウィンドウを作成してから、別のボタンのクリックで emit とかすると上手くいくということで、原因はそれに違いないのですけど。
二日がかりでやっと原因が解ったものの、解決法が思い浮かばないのです。
というか、タイマーで一秒待てば良いんじゃないか?ということですが、これは一秒でロードが終わるという保証がないということで、やってはいけないことですし。
まあ、最悪やっても良いような感じもありますが、あまりにも初心者っぽくて恥ずかしいので出来ないのです。
ということで、タウリン大ピンチ!ということになっているのです。
もう完全にタウリンが人扱いになっているTauriで何かを作ってるやつの続きですが。
別のウィンドウとあれこれする時に emit というのが使えるというのが解ったのですけど。
エミットだったら関連する変数にエミッションを使おう!とか思ったら、エミッションはエミットの名詞ではなかったことに気付いたのです。
emit と emission でつづりはけっこう違うのでうすけど、意味は似てるんですよね。なのでありがちな間違いかも知れませんけど。
やっぱり、こういうことがないように中途半端にカタカナで覚えないで、ちゃんとアルファベットの表記で覚えないといけないとか。
ここでカタカナ語批判しても意味がないですが。
それはともかく、emit を上手く使えれば、出来ないと思っていたウィンドウ間のドラッグアンドドロップは...、やっぱり出来ないですが、別の方法で同じ内容の動作が出来そうな気がするのです。
ついでに書くと、インデックスをファイルに保存して、それを開くというのもなんとかなるんじゃないか、という感じですし。
これが出来ると、かなり進むに違いないのですけど、間にRustが入るので、なんかややこしいのです。
<!-- というか、やっぱりJavaScriptを使うってことは、ウェブアプリっぽい作りの方がやりやすいのかなあ、とか今更思い始めていますけど、もう遅い。-->