ついにアプリっぽい!

ということで、次世代MecoressことMecoressOneが次世代っぽい感じになってきました。
何が起きているのかというと、カタログファイルをダブルクリックすることでMecoressOneが起動してカタログが開かれる、というちゃんとしたデスクトップアプリのようなことが出来るようになりそうなのです。
ずっとやり方を探していたのに、どこにもないのはなんでか?という状態でしたけど、実は公式のドキュメントに例と一緒に書いてあったのです。
だけどページのタイトルが[File Associations on Mobile | Tauri]で、このMobileのせいで私はこのページを読んでなかったとか。
ただ、これが出来るようになったせいで、これまでのカタログの開くためのコードを見直す必要が出てきたのですけど。
上手くいけばよりシンプルになって、その辺も良くなるはずですけど、あまり解ってないときに書いた複雑なコードは本当に複雑なので、また解読に時間がかかりそうです。
今日は次世代MecoressといわれているMecoressOneに追加機能と思って、まだ良く解ってないRustのコードを書いていたのです。
関数を一つ追加するだけなので、これまで書いた他の部分には影響がないはずだったのに、なぜか急に大量のエラーが出るようになって、開発用の動作テストも出来なくなってしまったのですけど。
しかもTauriでは当たり前のように使われている"#[tauri::command]"がエラーになってるとか。
もしかすると、間違って前に書いた何かを消してしまったとか、そういうことかと思って、最初から全部調べてもおかしいところは見つからないし、面倒なことになってたのですが。
何度も調べ直していたら、身に覚えのないクレートが読み込まれているのに気付いたのです。
エラーが出るようになる前に、エディタの画面がちょっとだけ勝手にスクロールしたような気もしたのですが。
もしかするとZedのAIが私の新しく作ったコードの間違いを補おうためにクレートを読み込む一行を追加したのか?ということなのです。
私の書いていた関数の部分も、間違っているのは解っていたけど、とりあえず書いてから後で詳しいことを調べようという感じだったのですが。
そこに気付かずにAIが勝手に余計なお世話をしてくれたということなのか、どうなのか。
とりあえずZedでAIは使わない設定にしておきました。
<!-- 最近はAIがスゴいスゴい!って言われているので、AIが調子に乗って余計な事をし始めたとか、そんな気分ですけど。-->
<!-- AIがやったことのログとかがあったりしたら原因が明らかになるかも知れませんけど、そのうち調べてみることにします。-->
ということで、初代Mecoressとの違いが曖昧な次世代MecoressのMecoressOneですが。
細かい機能が色々と追加されているのです。
ただ、これまであったものに手を加えて機能を追加しようとすると、簡単だと思っていたものがスゴく面倒なことになったり。
元々がちゃんと考えられてなかったというのもあるかも知れませんけど。
別の部分と連動していることを忘れて、片方に手を加えると上手く連動しなくなるので何が起きているのか解らない動作になったりしますし。
大がかりなアプリは面倒なのです。
そして、開きっぱなしになっていた辞書アプリを見てみたら「付け焼き刃」という言葉が調べられていましたけど。
MecoressOneのコードを書き直しているときに、これってそういう状況かなということで、この言葉が頭に思い浮かんだので、詳しい意味を調べてしまったということなのです。
意味としては間違ってはいないですが、この状況を表すのにはもっと良い言葉もあるかも知れないです。
別に、その言葉を見つける必要はないですけど、色んな言葉を知っていると間違いが減るとか、そんな気もしたりして。
<!-- インターネットがなかった頃は、良く「ことわざ慣用句辞典」を読んで暇つぶししてましたが。そういう感じの知識の増やし方は最近あまり出来ないです。-->
<!-- というか、何の話を書いていたのか?ということになってきました。-->
ということで、Little Mustapha's Black-holeの色んな情報をWikiっぽくするために使っているObsidianですが。
Vimモードがあることに気付いて有効にしたのですけど、日本語で書く時の良くある問題で、インサートモードからノーマルモードにしても入力が日本語のままで、次にインサートモードにするためにキーボードの"a"とか"i"とかを押すと「あ」とか「い」が入力されてしまうのです。
本物のVimみたいに設定ファイルにスクリプトを書いたら良いのかと思ったら、そこまでは出来ない(あるいは私の書いたスクリプトが間違っている)みたいで、どうしようか?ということになってしまったのです。
でも、Obsidianのコミュニティプラグインを検索してみたらVIM IM Controlというのがあって、簡単に解決してしまいました。
本物と同じくim-selectというコマンドを別にインストールしないといけなかったりはしますけど。
私の場合はすでに使っていましたし、Vimモードを使うような人なら特に問題なしということで。
なんだか便利になったので、常にObsidianを開いて色んな事を書いていたいような気分になってしまいました。
ついでに書くと、Webページが読み込める事にも気づいたので、Black-holicなどにある長い話の内容をまとめるときには、分割表示の片方にBlack-holicで片方に編集画面というようにすれば、いちいちブラウザとObsidianを行き来しなくて済むので、これもかなり便利です。
この便利さを他に活用できる場面があるか?というのがアレですが。
上手く使って色々と効率を上げられたら良いと思うのです。
ベトベトとは言わない。
ということで、上手くいったと見せかけて、実は一昨日ぐらいまで例の部分の作業が続いていたMecoressOneですが、やっとまともになったので、とりあえず使えるようにコンパイル(あるいはbuild)してみました。
これまでのMecoressとは別のアプリということになっているので、設定ファイルとかも別なのですが。
そのおかげで、実はMecoressの時にも設定ファイルの書き出し時に問題があったのにも気付いたりしましたけど。
なんというか、アプリ作りは奥が深いです。
というよりも、ウェブサイトで使うJavaScriptの感覚で作ってしまうので、設定ファイルのアレコレとかどうすれば良いのか解ってなかったという感じです。
そして、ずっとアプリのメインの機能とは関係のないスライドショーのレイアウトのところで詰まっていたので、次に何をすれば良いのか忘れてます。
まだ中身は前のバージョンのマイナーチェンジぐらいで全然MecoressOneになっていないので、これからはRustの方でやるコードも書かないといけない感じですけど。
その前に、Rustの教科書を買ってきたのに途中で勉強が止まっているので、そっちもやるべきかも知れないです。
<!-- その前にもう1年以上保留になっている全く別の創作もやらないといけないですけど。-->
MecoressOneのことばかり?
そんな感じですが、今朝は詰まっていた前のところから抜け出す方法を思い付いて目が覚めました。
スゴい事を思い付いたのではなくて、けっこう単純なことでもあるのですけど。
これまで作っていた部分を活用しながら手抜きしようと思ったら余計に複雑になってしまった場所なので、単純なことでも気付くのに時間がかかったりするのです。
というか、マウスの動きに合わせたプログラムみたいなのって、実行される瞬間だけのことを考えれば簡単だったりするのですけど、慣れないと変な発想になるというか。プログラムっぽくないものの考え方になってしまう感じです。
それはともかく、とりあえず思い付いた方法で上手くいっている気がするのですが、まだ厳密に確認していないので、これでダメだとかなりヘコみます。
といってもゲームのことではない。(といってもそういうゲームがあることを知っている人も少ないかも知れない。)
ということで、連休中だとどうしてもいつもどおりの作業にならなくてTauriでMecoressOneがお休みになっていたのですが、久々にやったら調子が出ないので、Obsidianに乗り換えて作り始めたLMBのWikiっぽいものの続きをやってたのです。
前にMediaWiki用に作った原稿があるので、ほとんどコピペですけど。
MediaWikiの書式とObsidianのmarkdownはかなり違うので、意外と大変。
ついでに、VimでMediaWikiのシンタックスハイライトをするのに専用の拡張子にしていたので、クイックルックで中身が確認できないのも面倒だったりしましたけど。
拡張子の一括変換をTerminalでやろうと思って調べたら、bashやzshだと簡単かも知れないので、この機会にとうとう私のログインシェルがzshになってしまったとかも。
色々と大変な感じになっているのですが、この苦労がこれからのアレコレに活かされるのかは謎なのです。
後回しでも良かったことをやり始めたらベータ版からもほど遠くなった次世代MecoressことMecoressOneの素ですけど。
この前詰まっていると書いた部分はまだ出来てなかったりするのです。
というか、あまり作業の時間もなかったりもしましたが。
でも何度かやり直しているうちに上手く行く方法を思い付いたので、やっと次に進めると思ったのにどうしても上手く行かないとかで。
これは謎すぎると思って実行される順番で確認していったら、定義されているはずの変数が定義されてなかったというオチでした。
Zedだとそういうのもちゃんと見つけてくれるはずなのですが、Objectの中のキーと値は見てくれないというか。
全体的にそういう仕様みたいな感じで、これまでもJavaScriptでこういうエラーを見つけるのはけっこう大変だったりしました。
Tauriをやり始めた最初の頃に考えたやり方が元になっているので、ちょっと整理してもまだゴチャゴチャしているのですけど。
スッキリするように直そうとしたら、ちゃんと動いているところも変になるという危険もないこともないので、こういう作業は大変なのです。
この間上手く出来たと書いたMecoressOneのアレですが。
まだ同じところをやってたりしているのです。

画像は前の記事と同じですけど。
以前のバージョンではなかった枠の中心の小さな四角は、枠のサイズを変えずに枠を移動させるためのものなのですが。
これまでと同じようにやろうとしたら全然出来なかったりして。
ということは、これまでとは違った考え方で作らないといけないのか?という感じですけど、そうするとまた大量に書き換える必要が出てきそうですし。
なんか大変なことになっているのです。
昔使っていた Media Pro みたいなアプリを目指しているということになっているMecoressの次世代バージョンのMecoressOneですが。
機能としてはそれほど重要じゃないけどこだわっている、自由なレイアウトでスライドショーができるやつ。

上がレイアウトの設定をする画面ですけど。
前のバージョンではこの辺りから作り始めたということもあって、今コードを読むと何が書いてあるのか解らないぐらい混乱しているのです。
四角い枠は自由に動かせるけど、それぞれが重ならないようにするというルールはコードで書くのは意外と複雑だったりします。
<!-- というか、こういうのはあまり得意じゃないので私にとっては複雑ってことですけど。-->
それでも、今回は前よりは色々と解っているので、書き直したらコードの量が100行近く減っているとか。
やってみたら、前のバージョンの時に一番最初に考えたやり方で合っていたのですが、その時はif文の条件が複雑すぎて書き間違えていたのだと思われます。
今回はZedが複雑なif文の条件を改行を入れて成形してくれたりするので、かなり助かっています。
ただし、ここから真ん中でスナップする機能とか、そういうのをやろうとしているのでまた混乱してくるような気もしますが。
<!-- 最新版のMacOSだと今のバージョンのMecoressが動かないということで始まったMecoressOne作りですけど、最近はOSアップグレードの通知が出てこないので、なんとなくペースがユックリになっております。-->
ということで頭が痛いのですが。
MecoressOneの素となるMecoressの最新版に簡単な拡大表示の機能を追加しようと思ったのです。
これまでは大きな画像でもウィンドウのサイズ以上には表示されなかったのですが、ウィンドウサイズを変えないで表示される画像を拡大するというやつ。
拡大するとウィンドウサイズよりも大きくなってはみ出るので、はみ出た部分を見るときはJavaScriptでスクロールさせればイイじゃないということになったのですけど。
どこかで何かが邪魔をしているようで、スクロールさせるコードを動かしても何も起きないのです。
こういうのは書くのは面倒でも理屈では簡単なはずだったのに、全てが面倒なことになっていたりして。
ついでに、雨が降ったりしているので、季節の変わり目が苦手な私は頭が痛くなっているのですけど。
季節の変わり目というか、油断していると部屋が30℃になったりしますし、体がついて行ってない感じです。
さらにForefoxの検索窓が使いづらくなった事に関する文句も書きたいところですが、これは頭痛が治まったらじっくり書くことにしたいです。(ホントに書くかは知りませんが、検索窓の仕様は前の方が断然良かったのに、何故変えたのか?という感じです。)
<!-- 追記!:うーん...。スクロールさせるべきなのは画像じゃなくて画像を格納しているDIV要素の方じゃないのか?ってことだけど。まあまあだけど。あばよ。-->
なんかそんな気分ですが、延べ時間11時間30分かけてBOOX Go7Gen2用スタンドの小さな部品がプリントされました!

プリンタが読むデータを書き出すソフトを新しくしてからちょっとプリント時間が長くなっていますけど。
仕上がりは綺麗なので、時間との妥協点をどの辺にするかという感じになっています。
でも3回やって一度もプリントでは失敗しなかったという点では、3Dプリンタのコツを掴んできた気がします。
<!-- これまではノズルとベッドのすき間が大きすぎたのが失敗の原因という感じ。-->
そして、この先は棚のタナカが台座部分を作る事になっているのですけど。
どうなるのかまだ全然考えてなかったりします。
果たして完成するのか?
乞う御期待。
出来ている?

ような気がする?
ということで、MecoressOneと書いてあるけど、中身はMecoressの修正版のこれですけど。
難しくないけど一番面倒なウィンドウメニューを作ったらなんとなく出来ているような気分になったりするのですけど。
ウィンドウメニューを作る前は、確認したい動作を例の「テストボタン」に割り当ててチェックしていたのが、色んな動作をメニューとかショートカットで実行出来るとアプリ感が出てきます。
どうせまた予期せぬところで予期せぬことが起きるのでまだ完成ではないですし。
ついでに簡単に出来るかも知れない機能を追加出来るかも知れないですし。
久々にMecoressのコードを読み直して中身を思い出しているので、覚えているうちに出来ることはやっておきたいとか、そんな感じなのです。
そして、今になって初めて気付いたのですが、メニューには「Save as...」という項目があるのに、それに対応したコードはまだ作られていないのです。(というか、これまで使ってないということは必要ないということかも知れません。)
そういえば「メコリスのお知らせ」の時にはまだオーディオファイルの読み込みが出来てなかったのですが、あの後に作られて読み込めるようになっているとかも。どうでもイイですが。
<!-- あと、ヨガマットの写真とか結構懐かしいのです。-->
<!-- 補足:ウィンドウメニューは難しくないと書きましたが、最初はなんだか解らなかったですし、凝ったことをやろうとすると難易度が上がりそうだったり。基本的なメニューだったら、一つ出来るとあとは繰り返しなので簡単ということです。-->