會澤 賢一 のすべての投稿

會澤 賢一 について

新潟県在住。1964年生まれ、東京オリンピックの年ですね。 突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

Wi-Fi がつながらない

原因の切り分けを行っていますが、わからないです。

はじまりは

一定間隔で NAS から画像データを取り出して表示するサイネージを Raspberry pi zero w を使って運用しています。この表示が止まってしまったことが最初の問題。 python のライブラリを使っているのですが、データ転送ができなくなるとその時点で表示していたものを表示したまま止まります。この時点では再起動すれば治るだろうと思いました。

ところが第 2 弾のトラブルが起きます。 iPhone です。自宅では Wi-Fi 接続を優先させているわけですが、ネットにつながりません。 4G 接続では問題ありません。 Wi-Fi 接続で問題が生じています。さて、どういうことだったのでしょうか?

ルーターを再起動

こういったトラブルが出たら、 Wi-Fi 接続を担っているルーターを再起動させるのが一番ですよね。はい、その通り Wi-Fi ルーターを再起動させました。状況が変わりません。

だんだん泥沼にはまっている気はしていましたが、気を取り直してサイネージの Raspberry Pi に SSH で接続してみます。 Raspberry Pi には有線 LAN アダプタなどはかませていませんので、完全に Wi-Fi 接続のみです。接続できないのかと思いきや、しっかり接続できます。ところが、ネットにはつながりません。ネットにはどころか、 Wi-Fi ルーターに接続してある有線の LAN にもつながらないのですね。だんだん泥沼に腰のあたりまで浸かってきました。

設定をあちこちいじくり回すこと 1 時間

わかりません。状況は全く変わりません。

ところが、そろそろお手上げ状態になった頃に iPhone の Wi-Fi 経由インターネット接続復活しました。原因はわかりませんし、何をやった結果復活したのかさっぱりわかりません。サイネージ Raspberry Pi も再起動させたらすんなり動いてくれました。なぜだ …

Raspberry Pi に SSH 接続したときに気がついたのですが、 NAS の反応が異常に遅い。遅いどころか、反応しない。起動時に NAS をマウントするように設定しているのですが、タイムアウトしています。ネット接続もタイムアウトです。そこら辺から、ルーターからネットや LAN へのつなぎ目がおかしかったのだろう。とは推測できます。できますが、ルーターの設定をいじっては戻ししていたときには反応せずに、お手上げ状態でほったらかしていたら治るというのはどういうことでしょうか?

結論

わかりません。

久々に情けない気分です。再び症状が発生したらどうしようか。ちなみに有線 LAN 経由のインターネット接続はこの事態のさなかも問題なく動いていました。

外付け HDD のアンマウント問題

前置き

M1 iMac には USB-A ポートがありません。私が使っている外付け HDD は全て USB-A ポートを使っているので、困ります。そこで、 USB-C ポートから USB-A ポートへ変換するハブを使っています。

しかし、それではポート数が足りないので、 USB 3.0 のハブをぶら下げてそこから HDD へつなげています。ちなみに HDD はバスパワーのものではなく、セルフパワーのものを使っています。

本題

で、困ったことが実は頻発しております。タイトルにも書きましたが、これらの HDD が勝手にアンマウント→マウントを繰り返します。調子が良いときは起きないのですが、ダメなときはそれこそ通知欄があふれかえるほどのエラーが発生します。私は外付けハードディスクにデーターの大部分を退避させていますので、外付け HDD が使えないと大変困ります。

バスパワーのものを使っているのなら、電力不足も考えられますが、セルフパワーの HDD です。まぁ同じ電源タップからとっているので、ノイズというのも考えられるんですが、これまでもず〜っと同じようなシステムで運用してきたので、ノイズというのは考えにくいと思っています。

もしかしたらこれが原因?

恥ずかしくって本当は出したくなかったのですが、トップに配線回りの画像を載せました。机の足もとにこのスパゲッティ・コードがあるわけです。そして、これらは 100 均で売られているアミアミにくくりつけてあります。

足もとにあるので、このアミアミに足をかけてグラグラさせたりしていたりします。癖ですね。その直後にはアンマウントは起きたりしないのですけど、振動を与えることでコネクタが緩むことはあるのかもしれません。緩まないまでも、アンマウントの原因になっているかもしれませんね。

気をつけて触らないようにしてみます。これでよくなるようなら自分の足癖が原因だったと言うことになりますね。それにしても、汚い配線だなぁ。何とかしなくっちゃだわ。

ミュージックの動作

ミュージック .app の動作ですが、ローカルファイル再生を想定していたんですけど、アップルのクラウド上にファイルがある場合、ストリーミングを優先するんでしょうか。少なくとも、私の環境ではそのようになってるみたいです。

経緯

M1 iMac に切り替える前、アップルスクリプトとシェルスクリプトを併用して、再生している楽曲名とアーティスト名をメニューバーに表示させていました。 Bitbar というアプリの手を借りています。

ところがです、 M1 iMac に切り替えた後、エラーになるんです。いや、正確には楽曲のデータを抽出できなくなってしまいました。アップルスクリプトの location でファイルのパスを取り込んで、それを分析していたんですね。ところが、 location でエラーになります。取得できないと言うことで、ブランクになってしまいます。アップルスクリプトの仕様が変わったのかなぁとか色々考えたのです。

ちょっとしたことでクエスチョンマークが …

ところが、全ての楽曲でそうなると思っていたら、楽曲の location を得ることができる楽曲もあるんです。そして、しばらくするとその楽曲も location を得ることができなくなります。おかしいです。で、どんな楽曲がエラーになり、どの楽曲がならないのかを調べることにしました。

これ、サラッと書いていますが、かなり長い間迷宮に入っていました。 3 週間ぐらいあーでもないこーでもないと七転八倒していました。そして、たまたまレンタルショップで購入してきたシングル CD を iTunes に登録し、その曲をスクリプトで参照してみたところこれが参照できることに気がつきました。

参照できる楽曲がわかったので、他の楽曲との違いを探ることにしたんですが、さっぱりわかりません。とりあえず 2 〜 3 日頭を冷やして別のことをしていたんですね。そして、数日後にまた違いを探そうとしたら、数日前にはデータを参照できた楽曲が参照できなくなっています、もう訳がわかりません。

原因追及を諦めて、別の方法を試してみたら

もう悩むのをやめて別の方法でメニューバーに楽曲を表示できないか探ってみました。私、アップルスクリプトの仕様が変わったんだと思っていたんですね。なので、アップルスクリプトではなく、シェルスクリプトで楽曲名などを獲得できないか、探していたんですが、これがない。探し方が悪いのかもしれませんが、見つけることができませんでした。

仕方ないので再びアップルスクリプトで他の方法を探ってみようとしました。すると、できるんですよ。私、 location にこだわっていたんですが、 current track から name/artist が取得できるじゃありませんか。取得できれば、文字列を工夫して後は Bitbar に渡してメニューバーに表示させることができました。

目的は達成できたわけです。

location ではエラーになる、なぜ?

アップルスクリプトの location というのは、特定トラックのファイル位置を返すクエリです。実は、 name/artist を獲得できる楽曲も、 location は獲得できないことがわかりました。 location はファイルの位置を返します。ファイルの位置が特定できない。しかし、再生楽曲の情報は獲得可能。これが 1 つ。

そして、最初は location でファイル位置を特定できたのに、特定できなくなる。これが 2 つ目。ここから、ストリーミング再生がぼんやりと浮かんできました。

アップルは、ロスレスオーディオや、 Dolby Atmos 対応を進めています。ストリーミング再生ってあまり好きじゃないんです。好きな楽曲が、何らかの理由で配信停止になったり、そもそも配信されていなかったりしますよね。なので、ストリーミング再生ではなく、手元にファイルを置いて置く方を好みます。しかし、今再生しているのはストリーミングなのか、ローカルファイル再生なのかちょっとわからないですよね。

まとめにかえて

確信もってそうだと言えないところがミソなんですが、新規で登録した楽曲は、アップルのデータベースとの突き合わせが終わっていませんから、当然ローカルファイル再生になります。しかし、時間がたつとデータベースとの突き合わせが終わり、ローカルファイル再生ではなく、ストリーミング再生に切り替わる。そう考えれば、 location が取得可能状態から不可能状態に変わるのもうなずけます。

ストリーミング楽曲の場合、ファイルの位置を返す location はエラーというか、参照不能と言うことでブランクを返す。個人的にはそれで納得してしまったんですが、情報があったら欲しいです。

蛇足ついでに

on writeToFileAsUTF8(thisData, targetFile, appendF as boolean)
	tell current application
		try
			set the targetFile to the targetFile as text
			set the openTargetFile to open for access file targetFile with write permission
			if appendF is false then set eof of the openTargetFile to 0
			write thisData to the openTargetFile as «class utf8» starting at eof
			close access the openTargetFile
			return
		on error
			try
				close access file targetFile
			end try
			return false
		end try
	end tell
end writeToFileAsUTF8

script MyScript
	if application "Music" is running then
		tell application "Music"
			if player state is playing then
				set playing_track to the current track -- 演奏中のトラックを取得
				set playing_artist to artist of playing_track
				set playing_name to the name of playing_track
				set playing_string to playing_artist & " - " & playing_name
				my writeToFileAsUTF8(playing_string, "Macintosh HD:Users:<ID>:Music:Music_now.txt", false)
			end if
		end tell
	end if
end script

on run
	local tempScript
	copy MyScript to tempScript
	run tempScript
end run
#!/bin/bash

cd ~/Music
osascript chk_Music.scpt

filname="Music_now.txt"
cat $filname

exit 0

最初のコードを chk_Music.scpt ファイルで保存して、 2 つ目のコードを 10 秒おきに実行させます。 Bitbar は標準出力をメニューバーに表示させます。最初のコードでやたら面倒な関数を使っていますが、アップルスクリプトで UTF-8 で出力するためにはちと面倒なので下記からコピペしました。

指定文字コードでファイル書き出し( UTF-8 ) v2 – AppleScript の穴

結論があるようでないですね〜

M1 iMac の感想

約 2 週間使った感想です。要約すると「すげぇ!」です。

静寂性

静かなマシンです。かなり重い処理をしていても、ファンの音は聞こえません。隣に置いてある Windows マシンのファンの音がうるさく感じます。もっと言うとね、ハードディスクのシーク音や、 DVD ドライブの回転音が非常に気になるレベルです。ホントにファン搭載されているんですよね?

静寂性との兼ね合いですが、スピーカーの音質はなかなかのものです。 Dolby Atmos にも対応しているという触れ込みですが、個人的にはヘッドフォン (AirPods Max) のそれに比べると劣るなぁという感じです。それでも、デスクトップマシンの音としては大変優秀だと思います。起動時の「ジャーン」という音、重低音が響く感じで好きですね。

速度 ( と言うか、快適性 )

快適です。よく動画のエンコードをするんですが、 Homebrew でインストールした ffmpeg を使ってます。 ffmpeg v4.4 ですね。このバージョンは M1 に対応しているのか? 実はわかっていません。わかっていませんが、体感速度は 2 倍以上でしょうね。早いです。 M1 ネイティブだともっと早くなるのかしら? 以前使っていた iMac は Intel i7 3.6GHz でしたから、決して遅いマシンではありません。 2017 年モデルですから現行 i7 とは比べるべくもないんですが、そのマシンの変換速度は M1 iMac より間違いなく遅いです。

Homebrew でインストールするときにコンパイラーが走りますが、これも早いです。間違いなくこれまで以上に快適になりました。

いわゆるスピードテスト的なものは走らせていません。それよりも実際の使い勝手を優先した方がいいと思うからですね。私にとって身近なアプリというと ATOK もそうですね。日本語変換ツールですが、これも M1 に対応しました。もともと動作はキビキビしていたんですが、全く問題ありません。嬉しいですね。

問題点

特に問題点はないんですが、 Parallels で x86 ベースの仮想マシンを動作させられないのはちょっと痛いですね。かなりいくつもの仮想マシンを用意していたんですが、それらは全て x86 ベースです。試しに開いてみようとしましたが、ダメだと言われて開けませんでした。まぁ当然ですが…

じゃ、 Parallels のライセンスいらないかな? とも思ったんですが、 ARM ベースの Linux って結構あるんですね。とりあえず、 12 月までのライセンスが残っているので、 ARM ベースの Linux(Ubuntu に KDE を入れました ) で遊んでみます。

困っているのは、なぜか昔 (M1 ネイティブではない ) ソフトで起動項目に入れているものがあるのですが、再起動したときに起動してくれないというのがあります。これは何が原因かわからないですけどね。もしかしたら私が原因かもしれない。まぁ、基本不自由は感じていません。快適そのものですね。

まとめ

贔屓の引き倒しと言いますが、ホント快適なんですって。動画編集以外重い処理はさせていませんので、本領を発揮しているのかどうか怪しいところですが、これまで速度面で不満を持ったことはありません。静かなマシンなので、 iTunes で音楽を聴くのが大変楽しいです。逆に大きな音を出すと階下の家族に迷惑がかかるんじゃないかと思って遠慮するぐらいです。

前の iMac は 2017 〜 2021 までの約 5 弱年使いました。 M1 iMac も同じぐらい使うつもりです。

LaunchAgent サービスにおける Operatuon not permitted エラーの問題

簡単なことだったのかもしれませんが、 New iMac にしてから LaunchAgent へ登録したスクリプトが

find: Failed to save initial working directory: Operation not permitted

上のコードでは Find がエラーを吐いていますが、コメントアウトしても違うコマンドが同じ Permition 関連のエラーを吐きます。 FDA(Full Disk Access) がらみのエラーであるのはわかりますが、原因がわかりませんでした。 FDA がキツくなってユーザーのエージェントにまで影響が出るのは困ったものだなぁ、と思いつつ原因をあちらこちらを検索して探していました。

python – how to fix “Operation not permitted” when i use launchctl in macos catalina – Stack Overflow

上記のリンクは Catalina 時代のものですが、ドンピシャな答えがありました。曰く「 Bash に FDA を設定せよ」です。ほんまかいなと思いながら、 zsh( 私のスクリプトは zsh で動いていました ) に FDA を設定したら、あら不思議エラーが消えて実行できるじゃありませんか。これでしたね。

しかし納得はできない …

Bash/Zsh はユーザーにとって重要な入り口のソフトです。基本的なと言ってもいいと思います。 FDA にこれらを登録しないと動かないというのは、いくら何でもキツすぎるんじゃないか。

実は、ターミナル上でユーザー権限で実行するとエラーなく動くんですよ。スクリプトにエラーがないのはこれでわかりました。そうすると FDA だ。そこまではわかるんですよ。スクリプト自体も FDA 設定しました。スクリプトが動く基本的な部分である bash/zsh には FDA 設定されていない ( デフォルトでと言う意味で ) 。それは無いんじゃないかと思ったわけです。

安全対策であるのはよく分かります。しかしねぇ …

フルサイトエディテイング

今日は WordPress meetup をはしごしました。今度は、 #wptokyo #wcjpn21 の方に参加させていただきましたよ。

ブロックエディタもまだ使いこなしていないのに、次のトレンドが出てきましたね。題して「フルサイトエディッテング」いろんなパーツを自由に配置することができるというものですね。あんまりわかっていませんけど。

そして、えらく簡単にそのβ環境を作ることができました。さっきのエントリーで作った仮想環境と言うかテスト環境のテーマファイルを「 https://downloads.wordpress.org/theme/tt1-blocks.0.4.5.zip 」に変えて、グーテンベルク以外のプラグインを外しました。 Core システムはもともと最新のものを選択していましたので、 OK です。

サイトエディターβというのがありますね。最新の WordPress に上に書いた tt1-blocks.0.4.5 の組み合わせだとこのサイトエディタの記述が出てくるみたいです。ほんのちょっといじっただけですので、細かいところはわかっていませんが、このブログにもあるブログタイトルとその説明のフレーズ。これを説明の下にブログタイトルの順番にすることが簡単にできました。

そんなのこれまでもできたよ。と言う方、中身をいじらずにエディタの記述だけでできる。これはなかなか面白いと思いませんか?

wp-env ってこういうときに使うと良いですね。簡単にできます。前に作った環境は、 wp-env.json だけですから、この wp-env.json を書き換えてサイトエディタを起動させるわけです。前の wp-env.json は拡張子を変えて保存してあります。壊れたとしても仮想環境ですからね。

時間も遅くなってしまったので、明日またいじり倒そうと思います。

wp-env で仮想環境構築

アイキャッチ画像で表示している #WPmeetupKobe に参加して、早速やってみました。以下箇条書きでやったこと。

  • Docker.app のインストール (M1 でもアクティブに使えます )
  • brew install nvm
You should create NVM's working directory if it doesn't exist:

  mkdir ~/.nvm

Add the following to ~/.zshrc or your desired shell
configuration file:

  export NVM_DIR="$HOME/.nvm"
  [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && . "/opt/homebrew/opt/nvm/nvm.sh"  # This loads nvm
  [ -s "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm" ] && . "/opt/homebrew/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion

You can set $NVM_DIR to any location, but leaving it unchanged from
/opt/homebrew/opt/nvm will destroy any nvm-installed Node installations
upon upgrade/reinstall.

nvm インストール後にこんなメッセージが出たので素直に従います。

  • brew install nvm( もう一度 )
  • nmv ls-remoto(node の最新バージョンを調べます: 16.2.0 でした )
  • nmv i v16.2.0( 最新バージョンをインストール )
  • npm -g i @wordpress/env
  • 作業ディレクトリを作成(〜 /wpenv としました )
  • 作業ディレクトリに移動して .wp-env.json と言う不可視ファイルを作成して以下の内容を記述
{
        "core":"https://ja.wordpress.org/latest-ja.zip",
        "themes":[
                "https://downloads.wordpress.org/theme/twentythirteen.3.3.zip",
                "https://downloads.wordpress.org/theme/eins.1.04.2.zip",
                "."
        ],
        "plugins": [
                "https://downloads.wordpress.org/plugin/wp-multibyte-patch.2.9.zip",
                "https://downloads.wordpress.org/plugin/autoptimize.2.8.4.zip",
                "https://downloads.wordpress.org/plugin/broken-link-checker.1.11.15.zip",
                "https://downloads.wordpress.org/plugin/google-sitemap-generator.4.1.1.zip",
                "https://downloads.wordpress.org/plugin/gutenberg.10.7.1.zip",
                "https://downloads.wordpress.org/plugin/highlighting-code-block.1.2.9.zip",
                "https://downloads.wordpress.org/plugin/vk-post-author-display.1.18.4.zip",
                "."
        ]
}

この意味するところは、 WordPress の日本語版最新バージョンを指定。テーマは twentythirteen と eins という私がこのサイトで使っているものを選択。更に使っているプラグインのうちサイトの動作に必要だと思われるものを選択。ここは個人個人設定が変わりますね。

以上。

実は、 2 時間ほどあーでもない、こーでもないと七転八倒していましたが、端折ります。

後は Docker.app を起動させておいて、 wp-env start で起動。必要なくなったら、 wp-env stop で仮想環境を削除すると言うことになります。 http://localhost:8888 でアクセスすると無事思った通りのサイトが表示されると言うことになります。

便利ですね。作業してその状態を保存するようなすべはありませんので ( あるのか?? ) 、バージョン管理が重要になりますが、 Docker 立ち上げっぱなしにしておきます。 CPU 使用率は高くありません。よくできてるなぁ。

と言うことで、メモでした。

参考にさせてもらったサイトを順不同で…

インストールメモ for iMac

何はともあれ、 Homebrew をインストール。インストールは本家のホームページのスクリプトをコピペ。終了したら、表示されたコードをコピペ。

さて、 cask をインストールして、グーグル・ Chrome をインストールしようとしたら、 cask が見つからないというエラー。ググってみたら(ググるのにも Chrome じゃなくて Safari を使わなければならないのは苦痛)文法が変わっていた。

× brew cask install google-chrome

○ brew install google-chrome –cask  

ううっ、知らなかった。

続いて ATOK (これもうまくいかなかった)

続いて ATOK を同じように brew –cask でインストールしたんだけど、インストールは完了するものの動作がおかしく、ユーザー登録もうまくいかない。仕方ないので、もう一度インストールをし直した。 brew 経由ではなく、ホームページにあるイメージファイルからのインストール。今度は問題なくインストールできた。

ターミナルそのものの設定変更

ここまでターミナル上で作業してたんですが、何せフォントが気に入らない。先人たちの知恵を借りて(要するにググった)、 Ricty なるフォントを使うことにした。これも brew からインストール。

$ brew tap sanemat/font
$ brew install ricty
(結構時間かかる)

最後にインストールの仕上げをするためのコードが出力されるので、コピペして完了。これをターミナルのデフォルトフォントにしました。

各種アプリケーションをインストール

brew install evernote –cask

FileMaker Pro 19

宛名職人

Toast Titanium 19 (前の Intel iMac ではバージョンアップの時に起動しなくなる問題があって、使用を停止していたんですが M1 iMac では大丈夫でした)

Carbon Copy Cloner

あと色々やったんだけど、メモするの忘れた。なんのためのエントリーかわからないですね。

まだ来ない …iMac

到着予定日は明日 23 日なんですよ。にもかかわらず、ヤマトのインフォメーションではまだ海外発送の状態のままです。ホントに明日来るんだろうなぁ。

選択したのはシルバーのカスタマイズモデルです。 SSD の容量は変えてませんが、メモリは最大にしています。 GPU も 8 コア。エントリーモデルとしては十分すぎる仕様です。この後、おそらく M2( 仮称 ) プロセッサモデルが出てくるでしょう。しかし、個人で使う分には十分だろうと判断しました。しかし、ちゃんと到着するんだろうな ( 不安でいっぱい ) 。

これまで使っていた iMac は USB-A ポートが 4 つあり、 thunderbolt3 ポートが 2 つあります。これを USB ハブを使って thunderbolt3 ポート 2 つだけにしました。新しい iMac には USB-A ポートがないんですよね。これが一番引っかかったところ。 Apple はインターフェースを大胆に切り捨てますから、今回もそのパターンです。まぁ、配線を少しいじるだけですから問題ないです。

準備は万端なので、いつ来ても OK です。ホントに来るんだろうなぁ ( 心の叫び ) 。

iMac 注文完了!

クレジットカードの承認が下りれば OK ですね。カード決済完了しました。問題ないと思います。注文した iMac のスペックを列挙してみます。

  • シルバーの 8 コア CPU/8 コア GPU モデル 
  • 512 GB ストレージ 
  • 16GB のユニファイドメモリ
  • テンキー付きの Magic Keyboard
  • Magic Mouse

現在使っている iMac(mid 2017) は下取りに出します。 Apple の下取りは、新しい iMac が届いてから環境移行の時間 ( 確か 15 日 ) を見てくれますので、安心です。私の場合外付けの HDD にタイムマシンでバックアップをとっていますので、それを使って環境移行を行うつもりです。なので、環境移行が上手くいったことを確認してから今使っている Intel iMac を下取りに出そうと思っています。

下取り価格は除いて、 224,800 円です。安くなりましたね。 M2( 仮称 ) だともう少し高くなるのかもしれません。 M2( 仮称 ) にはまだ少し未練があります。

納期は 3 週間〜 4 週間ですね。最大 5/31 となってます。伸びる可能性もあると思ってます。早くなったら儲けものです。さて、あと 1 ヶ月、今使っているアプリの M1 対応具合を調べて過ごすことにします。楽しみでございます。