ということで、久々だけど作業はしてた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を使うってことは、ウェブアプリっぽい作りの方がやりやすいのかなあ、とか今更思い始めていますけど、もう遅い。-->
昨日は作業をしていたので起動した状態のついでに使ってみたTauriで作ってるアレの続きですが。
今日はファイル名を一括で変更するのが使いたくて、わざわざ起動されてしまいました。
起動といっても、開発段階でコードの状態からコンパイルみたいなことをしているので、けっこう時間がかかるのですけど。
でもファイル名の変更が楽に出来ることを考えると待つ価値はあるとか。
さっきの遠足記事の画像ファイルですけど。
上の方が元のファイル名で、下がRestHouse用の書式にしたがったファイル名ということです。
<!-- 本当は元の名前と新しいのが横に並ぶ予定なのですけど、それは最後の仕上げということです。-->
日付部分はテキストで追加することも出来るのですが、dateコマンドのフォーマットで"%y%m%d"みたいなことも出来るというこだわりポイント。
こだわりというか、目指しているMedia Proにもそんな感じのがあったのですけど。
なんだか、昨日やったことと、今日のこれだけで十分という気もしてきたりして。
まだ追加しないといけないこともあるのですが、完成にしたくなってきてしまいます。
<!-- というか、これで完成で良いのだったらもっと早く出来ていたはずで、それは時間の無駄ってことになってしまうので、やっぱりちゃんと完成させるのです。-->
ということで、ホントはタウリンじゃなくてTauriなのにタウリンだし、最近は人の名前みたいな扱いになっている、の続きですけど。
テスト用に起動してたので、いつもの写真を読み込む作業をしてみたのです。
実際の作業をしてみるとかなり使いづらいですが、この辺の修正は次のバージョンという気がします。
でも、この表示されているリスト上で順番を並べ替えて、その順番で連番を付けてリネームが出来るというのは便利なのです。
上の写真は見て解るようにBBRニュース用ですけど。必ずしも撮影順に掲載されるワケではなかったりしますし。
あとは、OneDriveに保存してあるXbox Oneのスクショとかは、ファイル名にランダムな文字列が使われていたりするので、名前順に並べても撮影順にならないとかですし。
なので、自由に並び替えが出来るというのは良いことに違いないのです。
ついでに、出来なさそうでガッカリしているところもあるのですが。
新しいウィンドウを開いて、そこに元のウィンドウからファイルのドラッグアンドドロップって、普通のやり方だと無理なのに気付いてしまったのです。
何か画期的な裏技を発見するとか、あるいはRustの方で工夫したら出来るのか。
考えるのが面倒なので、これも次以降のバージョンでいいか。アハハ...。
なんで selected が使えないのか?ということになっていた Tauri だけで使えない予約語なんてあるのか?の続きですけど。
selectedという語には問題なしということが解りました。
ではselectedというクラス名が設定されているか調べると「ない」といわれる状態なのは何故か?ということになるのですが。
実は同じ場所に設定した別の関数でも似たようなことをやっていて。クリックすると一つ目の関数で一瞬だけ選択された状態になって、直後に別の関数によって選択が解除されていたので、selectedというクラス名も消されていたということですけど。
これは解りやすく説明するのが難しいというか。ここでプログラムに関することをどのくらい詳しく書いていいのかビミョーということでもありますけど。
とにかく、機能が多くなってコードが長くなってくると予期せぬエラーというミスも色々と発生するという感じです。
というか、今回直した部分って数カ月前に書いたところだと思いますが、すでにこの書き方はあまり良くないなあ、と思うところもあったりして、けっこうJavaScriptに詳しくなっている感じもあるとか。
それは良いのですが、一度に二つのことを同時進行とかあまり出来ないので、他のことが全然出来てないような感じでもあるので、早く一段落したいタウリンでもあるのです。