きみはねこみたいなにゃんにゃんなまほう

ねこもスクリプトをかくなり

Adobe Illustrator単体+フォトプランをコンプリートプランに変更・統合した

私は普段から Adobe Illustrator をメインで利用しているが、コンプリートプランに含まれるほとんどのアプリは使わないので、通常はIllustrator単体プランと、値段の安さからフォトプランを合わせて利用している。 ただし、たまにコンプリートプランの40%オフのオファーがくるのでその際はコンプリートプランに変更することがある。

そういう利用の仕方をしていると発生するのが、複数のプランを統合してコンプリートプランに変更するという作業になる。 それで、結論だけ言ってしまうと、複数のプランを1つのプランに統合するにはカスタマーサポートへの問い合わせが必要になるらしい。

実際の操作ややりとりは以下の流れで行った。時間にして10分程度だった。

  1. web上でIllustrator単体プランをコンプリートプランに変更
  2. フォトプランが残っているので解約しようとするが違約金が発生する
  3. 違約金をなくせないかカスタマーサポートに相談 → 違約金なしで解約してもらえた
  4. ついでにプランを統合する際の手順を教えてもらう → 要カスタマーサポートとのこと

次回からは直接カスタマーサポートに相談しようと思う。

ただ、コンプリートプランを安く使う方法なんていくらでもあるので、いい加減そちらを検討したほうがいいのかもしれない。

iMac 2015の起動用の外付けSSDを選ぶ

lightbulbcat.hatenablog.com

で書いたように6年間使ってきたiMacのFusion Driveが分離されてしまった。起動ディスクをSSDに作ろうとしたところ失敗したため、仕方なくHDDから起動しているがとても遅い。Fusion Driveの分離もSSDの不具合が原因なのではと睨んでいる。現在iMacの新型狙いのため、何か適当に誤魔化しながら今のiMacを運用できる手段はないかと探したところ、外付けSSDを起動ディスクにできることを知った。

使用しているiMacのスペックを確認する

今までSSDを選んだことも普段使っているマシンのディスクのスペックを意識したこともなく、いい機会なので今自分が使っているiMacについて調べることにする。公式のスペックと

iMac (Retina 5K, 27-inch, Late 2015) - Technical Specifications

システムレポートを見ながら関係ありそうなものをピックアップしていく。 ついでに内蔵SSDとHDDの実測値も適当なサイトから拾ってきた。

2015年だとThunderbolt 2なんだ古いなとか、USB3はもうあったんだなとか、自分の持っている過去の認識とズレがあって感慨深い。

内蔵SSDとHDDだとSequential Readで7-8倍、Sequential Writeで5倍、Random Seek Read Write では100倍近い差がついている。 起動ディスクをHDDにすると遅くなるわけだ。HDDはSequential Read/Writeならある程度の速度は出るという先入観を持っていたため、この数値の差には驚いた。SSDは早い。

外付けインタフェースの選択肢としてはThunderbolt 2とUSB 3.0がある。 Thunderbolt 2の20 Gb/sは換算すると2.5 GBytes/sなので安価なSSDでは頭打ち要因にはならないだろう。 ただしThunderbolt 2に接続するSSDやら変換ケーブルやらを安価に揃えようとすると悩むことになりそうだ。 対してUSB 3.1の5 Gb/sは625 MBytes/sになるのでReadは頭打ちされそうだが、インタフェースの簡便さとしてはこちらが勝つ。

とりあえずBUFFALO SSD-PG240U3-BA 250GBを買ってみる

とりあえず次モデルまでの繋ぎを想定しているので、安価なUSB 3接続のSSDを購入してみた。

BUFFALO SSD-PG240U3-BA 250GB

Writeで320 MBytes/sは出るみたいなのでHDDよりはマシだろう。 Random Seekもそれなりには出てくれるんじゃないかと期待して、とりあえず4000円くらいで買えるこれで様子を見ることにする。

やっぱりCrucial X6 500GBにした

やっぱり後から見つけた500 MByte/sが出るらしいこちらのモデルにした。8000円程度。

Crucial X6 500GB

容量も倍なのでそこまで割高感はない。速度が上のBuffaloのものと比べると1.5倍になるので起動速度もそれなりに変わるだろう。 内蔵SSDの半分程度の速度は出る計算だけど、これでも遅くなるのは避けられなさそうだ。

使えるならthunderbolt 2ポートの2.5 GBytes/sを使ってみたいけどThunderbolt 2対応のSSDとかあんまり見ないし、変換ケーブルを噛ませたりするのも相性問題でドツボにハマりそうなのでやりたくない。

なんて思っているうちに早く新しいiMacが出たりしないものかと待ち侘びる。

届いたのでインストールして速度を測ってみる

Crucial X6が届いたのでmacOSをインストールしてみる。 OSやアプリケーションの起動速度は確かに向上した。

ReadとWriteで両方400 MBytes/s程度出ている。

f:id:lightbulbcat:20211119165852p:plain

内蔵HDDだと200MBytes/sも出ていないので2.5倍程度の速度にはなっている。

f:id:lightbulbcat:20211119170003p:plain

ちなみに内臓SSDだとRead 1963 MBytes/s、Write 698 MBytes/s出ており圧倒的。 ただし計測中の数回目のReadでエラーが発生したため、やっぱり一連の不具合は内蔵SSDが原因だったんだろう。

f:id:lightbulbcat:20211119170052p:plain

この速度を見て改めて失ったものの大きさを感じる。内蔵SSD早いな。 どうせ下取りに出しても二束三文にしかならないのだから、内蔵SSDを換装してもいいのかもしれない。

ところで体感速度で言うとFusion Driveで使っていた頃よりもむしろ向上した感がある。 もちろん現在クリーンインストールした状態であるため、時間の経過とともに体感速度も落ち着くのかもしれない。 それから、Readの実測値でなお4倍程度の差があるため、やっぱり一度Fusion Driveを解除した純粋な内蔵SSDから起動した場合の速度を体感したかったなという気持ちが残る。

Fusion DriveのiMacが起動しなくなったのでクリーンインストールした

まとめの追記

結論から言うとiMac 2015 lateでFusion Driveを組んでいる内蔵SSDで、Readが失敗するようになった事によりFusion Driveが分離し、macOSが起動しなくなった。SSDが原因ということに気づかず、SSDを起動ディスクにしようと四苦八苦した際の症状をまとめておく。

  • SSDのフォーマットで失敗することがある
    • MS-DOS (FAT)だと成功しやすい
  • SSDのフォーマットに成功してもマウント/アンマウントで失敗することがある
  • macOSSSDにインストールしている最中で必ず失敗する
    • タイミングは残り12分であることが多かった
    • エラーの内容は「an error occurred loading the update」(言語が日本語だと何になるんだろう)
    • エラーの意味的にネットワーク関係かと思いきや、切り分けの結果関係なさそう
  • diskutil verifyVolume は特に何も出力しなかった
  • smartmontoolsの smartctl を使ったところ Error 65535 occurred at disk power-on lifetime のような表示が何項目か出たが関係あるかは未確認
  • Apple Diagnosticsは特に異常を検知しなかった
  • diskutil activity でイベントをモニタリングしたところエラーが出たタイミングでディスクがdisapperになった
  • BlackMagic のディスクスピードテストを行なっている最中にSSDからReadが行えなくなるエラーが出た
    • これが症状としては一番わかりやすい

diskutil verifyVolumeApple Dianosticsで検出されないのは意外だったが、スピードテストでエラーが出たのでSSDが原因と見ていいだろう。 データは諦めるとして、再びmacOSを使えるようにするために取りうる選択肢としては

  • 内蔵HDDは正常なのでHDDを起動ディスクとしてインストールする
  • 内蔵SSDを換装する(面倒)
  • 外部SSDを起動ディスクとする

がある。HDDを起動ディスクにしたところ重くなったので、その後外部SSDをUSB 3.1 gen2接続して起動ディスクとして利用している。 その選定作業は以下のエントリで記録として残した。

lightbulbcat.hatenablog.com

以上、まとめとして事後的に追記した。以下、元のエントリの内容につづく。

発端

ある日普段つけっぱなしにしているiMacの画面にぽつんと進入禁止のマークのようなものが表示されるようになっていた。 どうやら起動に失敗しているようで、再起動しても改善しなかった。 復旧モードで起動し、ディスクユーティリティを見たところ、普段は見かけないHDDとSSDの表示があり、どうやらFusion Driveが解除されているようだった。 ネット上の記事を一通り検索して、元に戻すのは難しそうだと判断。データは諦めることにしてmacOSクリーンインストールすることにした。

ところがディスクのフォーマットがうまく行かない。 何度か試行錯誤した結果、どうやら一度MS-FATでフォーマットした後であればAPFSでフォーマットできるようになることがわかった。 APFSで連続フォーマットができない、という症状だった。なぜか再マウントするあたりの処理で失敗しているようだった。

これで一応まっさらなSSDのボリュームが用意できるようになったが、今度はmacOSのインストールに失敗する。 起動を早くしたいものだから、起動ディスクはSSDにしたかったのだが、これが常に残り12分のあたりで決まって「an error occurred loading the update」と出てインストールに失敗する。

f:id:lightbulbcat:20211119032210p:plain

言葉通りネットワークの問題なのかと思いWi-Fiと有線の両方試したが、両方で同様にエラーが出た。 ネットで探してもこれといった情報が見つからなかった。 仕方なくHDDにインストールすることにしたところ成功した。

なんとなくASPFでフォーマットしたSSDのマウント周りで失敗していたように思えるが、インストーラは細かいログを出してくれないので、切り分けはできない。もしかしたらSSDに不調が発生した結果Fusion Driveが壊れてしまい、起動しなくなったのかもしれない。

ところで何度も起動を繰り返して試行錯誤している最中の「ジャーン」という音には「いいかげんにしろ」と言いたくなる。 あなた今、私が手間暇かけて復旧しようとしているんですよと。 macは好きだけれどこれはいただけない。

その後

あれから色々試して、結局うまくいかなかったので外部SSDから起動することにした。

諦めるまでにSSDのいろんなフォーマットでOSインストールを試した。

  • GTPではなくMBPにしてみたところ起動ディスクはGTPの必要があるとインストーラに言われる
  • MS-DOS (FAT)ならいけるのではと試したところAPFSかMac OS Extendedでなければならないとインストーラに言われる
  • マウント/アンマウントのところでコケているのではと思い、インストーラを実行する前に何度かディスクユーティルでマウント/アンマウントを行えることを試してから実行したが失敗した
    • 結局同じエラー「an error occurred loading the update」になった
  • たまにフォーマット中にもマウントできずにエラーになることがあった

f:id:lightbulbcat:20211119032332p:plain

  • タイミングや処理のこけ方によっては再フォーマットするためにOSの再起動をする必要があったりととにかく面倒だった
  • 一応ネットワークも怪しんでテザリング回線で実行してみたが改善せず
  • diskutil verifyVolume は特に何も出力しなかった
  • smartmontoolsの smartctl を使ったところ Error 65535 occurred at disk power-on lifetime のような表示が何項目か出たのでこれが何か関係あるのだろうか
  • Apple Diagnosticsは特に異常を検知しなかった
  • diskutil activityでイベントをモニタリングしたところエラーが出たタイミングでディスクがdisapperになっていたので、インストール中の書き込み処理が原因か、それともアンマウント/マウントの処理に失敗したのかで、ディスクが認識できなくなったらしい

これにて私は諦めた。SSDが悪いと思うのだけれど、その確証となる何かコマンド出力が無いかなと、まだ若干後ろ髪を引かれている。

さらにその後

ディスクスピードテストを行なっている最中にSSDからReadが行えなくなるエラーが出たのでやっぱりSSDのせいだったのだろう。

Magic Trackpad のフィードバック機能が不安定だったので結局新しいものを買った

5年ほど使い続けていた Apple Magic Trackpad の Haptic Feedback 機能が不安定になったので結局新品を買ったところ問題なく動作するようになった。 当然と言えば当然なのだが、以前 Bluetooth 接続が不安になった際に iMac 本体側のNVRAMリセットで回復した経験があったので、今ひとつ Trackpad 側が悪いと言う確証を持てなかった。 結果を見れば Trackpad 側の問題だったのだが。 症状としては以下のようなものだった。

  • たまに Haptic Feedback 機能が反応しなくなる
    • iMac を起動した直後は反応するが 1分もたたないうちに反応しなくなる
    • 電源を切って、Trackpad を充電させると反応が戻ることがあるが、これも長くはもたない
  • さらに症状が進むと、たまにクリックすら反応しなくなる

という、動いたり動かなかったりする不安定な状態が2ヶ月くらい続いていた。 個人的な感覚ではバッテリーの経年劣化的なことが起こって、十分にフィードバックを動作させる電力を得られなくなっているのではと想像している。 もしそうだとしたら、初代の Magic Trackpad で採用されていたダイビングボード方式の物理的なクリック機構の方が長期的に見ればよいのかもしれない。 ただバッテリーの問題なのであれば、バッテリーを交換できればまた使えるようになるのであまり変わらないかもしれない。 まぁ交換できないのだけれど。

使用感で言えば支点と作用点間の距離が近づくと力が必要になるダイビングボード方式よりも、板全体が横滑りする Haptic Feedback の方が断然良い。 とても良いテクノロジーだとは思うし、長年使っているので愛着もあるのだが、それにしても、こんなことがあって改めて Haptic Feedback とは迂遠なテクノロジーだと思わされた。

我々はわざわざ電力を消費してクリック感をご提供いただいているんだよ。 それを起こすための物理的な力は今でも変わらず与えているはずなんだけどな。 力を感知してクリックだと判断して電力を消費してクリック感を再現しているんだ。 おい最初の力を感知するところの力、どうにか使えないのか。 頭がどうにかなりそうだ。

オペ端用壁紙を作った

オペレーション専用の端末用の壁紙を作りました。

20210607031744 20210607031810

ここから先は危険地帯、という気概を持って望みたい端末の壁紙にどうぞ。 個人利用の範囲内であればご自由に使っていただいて構いません。

高解像度なので一部を切り取ったりしてもお洒落に決まると思います。 実際、2枚目は1枚目をトリミングしてフィルタをかけたものです。

サビの割に文字が綺麗すぎたりツッコミどころはありますが、文字の部分の構造が複雑で作り直す気概が湧かないのでとりあえずこんな感じで。 Adobe Illustratorで作成しました。

素材は https://www.beiz.jp のものを使わせていただきました。 高解像度による素材の質感がとても高品質です。

Rust で hello-world の減量

Go でビルドサイズの比較をした流れで今度は Rust で hello-world を書いてバイナリサイズの比較をしてみます。

lightbulbcat.hatenablog.com

% rustc --version
rustc 1.48.0 (7eac88abb 2020-11-16)

println!

一般的な hello-world の書き方です。

fn main() {
  println!("Hello, world!")
}

println! を使うために特に import は不要なんですね。

io

use std::io;
use std::io::prelude::*;

fn main() -> io::Result<()> {
  io::stdout().write(b"Hello, world!")?;
  Ok(())
}

Result をハンドリングすべしとか、ちょっと面倒ですね。

参考: https://doc.rust-lang.org/std/io/index.html

syscall

syscall 的なパッケージを使ってみたかったのですが、難しくてまだできていません。 それから syscall パッケージで使われている ams!llvm_asm! がまだ stable な機能ではないらしく nightly ビルドでのみ利用可能になっています。

参考: https://blog.rust-lang.org/inside-rust/2020/06/08/new-inline-asm.html

バイナリサイズ比較

rustc でビルドしてサイズを比べてみます。 最適化オプションについては Codegen options を参照してください。

  • 何も指定しない
  • -O(opt-level=2)を指定
  • opt-level=z (サイズ削減優先)を指定

を比較したところ以下のようになりました。() 内は upx -9 を適用した容量です。

default opt-level=2 opt-level=z
println 370K (132K) 369K (132K) 370K (132K)
io 376K (136K) 373K (136K) 373K (136K)

Goの2MB程度のバイナリに比べるとかなり小さめですね。 シンプルなプログラムのためか、あまり最適化オプションによる差異はありませんでした。 printlnio を比べると import しているためか io の方が容量が大きめです。