久々に悪魔デバイス・第2ステージをいじってみたのですが、ターミナルでログインしようと思ったらRaspberry Piが固まってたっぽくてログインできませんでした。
固まっているという言い方が合ってるか解りませんけど、とにかく強制再起動。
固まっていた原因は不明ですけど、とりあえず何かしようということでパソコンが喋る!というのは必ずやる感じなので、Open JTalkをインストール。
コマンドがけっこうややこしいので、パコベーことパコリタ・ナラ・ズイルベー・Zeroで使っているシェルスクリプトをかなり改良してまあまあにしてから使い始めました。
シェルスクリプトを改良したおかげで、色んな声で喋らせることも出来たりするので、悪魔デバイス・第2ステージはパコベーとは別の声にすることにしてみました。
パコベーとは別に違う声が聞こえてくると、かなりFallout: New Vegas の Old World Blues のあの部屋っぽいことになってきたと思ったりして。
<!-- あの部屋といっても解らない人の方が多い気もしますが。個性の強い家電たちが勝手に喋っている楽しい部屋が出てくるのです。-->
あとは悪魔デバイス・第2ステージに何を喋らせるか?という感じですけど。
パコベーが喋る内容も必要かどうかビミョーな情報ですし、喋らせて通知する程の情報を探すのが大変という感じです。
さっきの続きでMecoressOneなのですが。
定義済みのメニューを使って楽が出来たコピペ機能はついでに「Undo(取り消す)」と「Redo(やり直す)」も追加されているのです。
それもちゃんと機能したので、更に楽が出てきたのですが、Pasteよりも下の部分に身に覚えのない項目があったりして。

もしかして、Menuバーの項目名が"Edit"だと勝手に追加されてしまうのでしょうか。
他のアプリでも使ったことはないので知らなかったのですが、Writing Toolsとういのは「作文ツール」というやつでAIが文章を要約したり校正したりしてくれるものみたいです。
その他の項目も同様に、MecoressOneには意味が無い機能ですし、使ったら変なことになるとかだと困るのですが。
楽をしたら新しい問題が発生しているようです。
ということで、個人的なサグラダファミリアことMecoressOneですけど。
Tauriで作ると基本的にはブラウザと同じようなものの中でJavaScriptを動かしている感じになるのです。
なので、テキストエリアとかの文字は何もしなくてもコピペ出来ると思っていたのですが、実際にやってみたら何も起きませんでした。
なので自分で作らないといけないのですけど。
自分で作るといっても、Tauriの昨日でクリップボードの読み書きは出来るので、コピーはけっこう簡単なのです。
でも、ペーストする時には、テキストが選択された状態だと、ペーストすると選択部分とクリップボードの内容を置き換えるということになるので、また新しい技を覚える必要が出てきたっぽいのです。
次の大きな変更をやるまで一休みかと思ってたのですけど、使っていると気付くこういうことがあるので、常に作り続けてないといけないようです。
<!-- ふと思ったのですが、メニューにシステムで定義されているコピーとペーストを追加したらイケたりするのか、どうなのか。(ちゃんとJavaScriptの勉強もしたいが、楽もしたい。)-->
追記:定義済みのメニューの追加は簡単なのでやってみたところ、楽が出来ました。でも、せっかく作った自作のコピーのコードは消すことになってしますのです。
万が一公開されることがあるかも知れないMecoressOneよりも更に個人的なのでどうでもイイ感じの、Little Mustapha's Black-hole・グロッサリーのコーナーを編集するためのアプリ「GeLMB」も密かにアップデートされているのです。
最初はこれで充分とか思っていたのに、実際に使ってみると使いづらくて、まだグロッサリーのコーナーにはほとんど項目が増えてないのですけど。
データの表示のしかたとかを変えてみたので、ちょっとはやる気になるアプリになったかも知れないです。
ホントはObsidianでやってる、自分用のLMBのWikiっぽいやつをまとめながらグロッサリーも追加していけば良かったのですけど。
すでにあるものを解りやすくまとめる、という作業は苦手かも知れないとも思いました。
そんな感じですが、いつもTauriでやる作業は予想よりもだいぶ長くかかってしまうので、これの前に何をやっていたのか忘れてますけど。
色々と続いてない物の続きを作っていったりもしたいと思っておるのです。
ちょっと手直しに半日という感じなのですが、MecoressOneをやっていてけっこう重要な間違いに気付いたので、これまで作った他のアプリも修正しないといけなくなったのです。
間違っていたのはアプリの設定ファイルの"identifier"というところなのですが。
ここは開発者のIDってことなのかと思ったらアプリのIDを書く場所でした。
間違って全部のアプリで同じIDにしていたので、OSからはそれぞれのアプリの区別がついていないような状態だったみたいです。
これを直すのは簡単なのですが、ついでなのでGeLMB(Little Mustapha's Black-holeのGlossaryを編集するやつ)で直そうと思っていたHTMLのテンプレートをいじりやすくする機能を追加してみたのです。
基本的にはテンプレートを読み込んで専用のフォルダに書き出すだけなのですが、テンプレートがない時にはアプリに内蔵されているテンプレートを使う、ということにしたかったのでRustの方をいじらないといけなくなって大変だったのです。
途中で面倒になってGoogle検索のAIによる回答をヒントにしたりしてしましましたけど。
私はAIを全否定しているワケでもないのでアレですけど。
知っているはずなのに思い出せないようなことの確認とかには役に立つとは思ってたりします。
<!-- ついでに書くと、全く知らないことをAIに聞いて、それを鵜呑みにするのはまだちょっと恐いとも思いますけど。-->
ダブルクリックで専用ファイルを開くとアプリが起動するようになったMecoressOneは、ファイルが白紙のアイコンだったのが残念なポイントでしたが、何かできそうな気がしてきた!

というのがこの状態。
かなり惜しいのですが、設定はしたけど、アイコン用のファイルが書き出されていなかったのでTauriの汎用アイコンになっているみたいです。
<!-- というか、この汎用アイコンはどこにあるのか?という気もするのですが。この辺はOSが管理するところみたいなので良く解りません。-->
恐らく、ではありますが、原因はアイコンがアプリのビルド時に保存されていなかったということで、追加するように設定したら、私には珍しく失敗少なめで上手くいったのです。

嬉しいので隣のネコ蒲団君用のテキストファイルも一緒にスクショされました。
ただ、こんなに上手くいくとは思ってなかったので、アイコンの方がちょっと手抜きというか。
色とかはもう少し変えたいと思っておるのですが。
<!-- ちなみに「め」はアプリのアイコン用に作ったもので、今回のアイコンは「め」が少し尖っていて中二的格好良さを追求しているのです。どうでもイイですが。-->
これでもう、かなりアプリな感じになりましたが、これが上手くいったら、これまでちゃんと出来ていたファイルのリネームが出来なくなっている謎の現象が起きていました。
Tauriのバージョン2からはそういうのをちゃんと設定しないと出来ないようになっているのですが、これまで出来ていたということは設定してあったはずなのに、確認したら設定が消えているとか。
何が起きたのかは謎すぎて解りません。
という感じで、いつでも問題はないワケはないのです。
そろそろアイコンがあった方が良いぐらいの出来になってきたMecoressOneなので、作り始めてみたのですが、なんか難しいです。
というよりも、初代Mecoressが偶然にも上手くいきすぎたので、MecoressOneの方もそれなりにやらないといけない感じになってしまった、ということですけど。
今のところTauriの標準タイプのアイコンが使われているのですが。

良く見ると、初代MecoressとTauriのアイコンは枠にグラデーションを使ってたり、似ているのに気付いたりして。
それとは関係なく、もしかするとアプリ用の書類のアイコンも設定できるかも知れない、という感じの設定項目を見つけたので、それが出来ると更にちゃんとしたアプリっぽい事になるのです。
<!-- ただし、クリックで書類を直接開くやつはたまに動作が変ですけど。-->
ということで、飛躍的進化をとげたら面倒なことになってきたMecoressOneですけど。
面倒でも上手くいくことがあると嬉しいのでイエ〜ス。

<!-- 上のnanndekungというのは作り始めの頃に書いたイタズラ書きのようなものなのでどうでもイイのです。-->
何をしていたのかというと、飛躍的進化によって専用ファイルをダブルクリックすることでMecoressOneが起動してファイルを開けるようになったのですけど。
嬉しいのでファイルをダブルクリックでファイルを開いていたら、すでに開かれているファイルでも無限に新しいウインドウで開かれてしまう、というのに気付いたのです。
なので、どのファイルが開かれているのかを確認して二重に開かないようにしたいのですが、そうするにはJavaScriptだとまた必要以上に複雑な処理になるので、Rustの方でやるしかないということになりました。
そして、苦労の末にやっと第一歩が踏み出せた状態が上の画像なのですけど。
JavaScriptからRust側に問い合わせると開かれているファイルの一覧が返ってくる、というやつの第一段階で、今のところ"yees"が返ってきているのですが、これから更に頑張ると"yees"の部分がファイル一覧になる予定なのです。
Tauriの場合、独自に追加された機能(という呼び方ではないけど、なんて言うのか知らない)が色々あって、Rustの入門書には出てこないような事が沢山あったりで、その辺がややこしいのですけど。
コンパイルの時のエラーとヒントを見ながら修正していくと、だんだんエラーの内容が自分にも解るようなものになっていく感じもちょっと面白かったりもします。
ここから先は入門書の知識で出来るはずなのですが、これが上手くいかないとガッカリしそうなので、ガッカリしないようにしたいのです。
飛躍的進化を遂げた(と私だけが思っている)MecoressOneですけど。
ファイルを開く方法が複雑すぎるのを見直すために、どういう流れになっているのかを調べてみたのです。
調べるのは、コードが実行される順番に見ていけば良いだけなので簡単なのですけど。
そこで何が行われているのかを忘れないように文章でメモすることにしたのです。
パソコンで書いても良かったのですが、後から修正案を考えるときに自由に書き込めると便利かも知れないと思って、紙のメモ帳に手書きしてみました。
それで実際に書いてみたら修正案とかを赤ペンで書いたり出来て良い感じでした。
だから何かというと、書きたいことは別にあったりするのですけど。
ちょっと前まで自分で書いた文字を自分で読めないぐらい字が汚かったのですが、最近はなるべく手書きで字を書くようにしていたら、文章でもまあまあまともな字が書けているのです。
といっても、半分ぐらいはアルファベットではありますが。
それでも(少なくとも自分では)読める字になっているのが重要なのです。
パソコンで思ったとおりに字が入力できるようになると、紙に書くときにスゴく遅い感じがして急いで書いてしまうのも良くなかったのですけど。
焦らずに書くようにしたら今のところ小学校の頃よりは綺麗に書けている感じです。
<!-- ただし、私の書く字が綺麗だったことはこれまで一度もないので、このまま続けても綺麗な字を書けるようにはならないでしょう。-->
ついにアプリっぽい!

ということで、次世代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を行き来しなくて済むので、これもかなり便利です。
この便利さを他に活用できる場面があるか?というのがアレですが。
上手く使って色々と効率を上げられたら良いと思うのです。