Firefox に Tridactyl をインストールしてとりあえずの設定

タイトルの通り Firefox 76 に Tridactyl をインストールして設定まで行う。

farewell, vimperator

Vimperator が使えなくなって久しい。一時期は本当にはまってプラグインも色々使ってカスタマイズしていたのだが、Mac の新規インストールを機にとうとうブラウザの更新を止めたまま Vimp を使い続ける姿勢を解いた。前にも書いたが 2020 年まで使っていた人はもう本当に少ないんじゃないかと思う。

ブラウザの操作をエディタの Vim ライクに行うことができるこの拡張。j,k,l,m のキー入力でのブラウジングに、f キーを押下するとリンクにアルファベットが表示されそれに従ってジャンプできる Hit-a-Hint、それらによりキーボード操作による Web 閲覧を可能にするものだったが、更新が止まって久しい。そこでもう何年も前から、Vimperator 代替として多くの拡張が Firefox および Google Chrome 用に出た。自分も当然色々と試した。

キーボード操作よりもマウス操作の方が早いという事実はわかっている。ただもう Vimp に慣れてしまって両手をホームポジションから動かすのがだるい。その悩みを解消する拡張は数点存在する。ただそれだけじゃないんだ自分にとっては。設定ファイルによる細かい自分好みの設定、有志による豊富なプラグイン、非力な自分にだってちょっと頑張れば JavaScript によるカスタマイズが可能。それに適うものがずっと見つけられなかった。たまに「vimperator から○○に乗り換えました」みたいな記事を見つけては、違うそうじゃないんだと勝手に落胆するということを繰り返していた。しかしそのまま数年が経過し、いよいよ環境を新しくしようというこの段でもう一度しっかり探し直した。vimperator-labs には代替拡張が書かれている。

vimperator/vimperator-labs: Vimperator

候補として次の2つの拡張に絞った。

参考にした記事。

Vimperatorの代替をVim VixenにすべきかTridactylにすべきか - 遠い叫び

結論を言うと Tridactyl に落ち着いた。理由は単純で、「いじれそうだから」。

Tridactyl をローカルでビルドしてインストール

色々やりたいので GitHub から clone してインストールする。

tridactyl/tridactyl: A Vim-like interface for Firefox, inspired by Vimperator/Pentadactyl.

$ git clone https://github.com/tridactyl/tridactyl.git

ビルドの流れは readme の通り。

$ cd tridactyl
$ yarn install
$ yarn run build

build ディレクトリが作成されるので、その中のファイルを全て選択し圧縮、拡張子を .xpi に変更 ( tridactyl.xpi とする ) 。 自分で作成した Add-on をインストールして利用する方法は2通り1

  • 一時的なアドオンとして読み込む
  • パッケージ化して署名、もしくは未署名のアドオン許可の設定をして読み込む

手間が少ない前者を使う。アドレスバーに以下を入力し デバッガー画面を開く。

about:debugging

【一時的なアドオンを読み込む】から先程の【tridactyl.xpi】を選択。Tridactyl のチュートリアルが開けばOK。

使い方

f キー押下で Hit-a-Hint。表示されるアルファベットを入力するとリンク先へ遷移。f に ⇧shift キーを加え F を入力すると新規タブで開くヒントモードに。 コマンドも Vim と同様、: を入力するとコンソールが開く。その他チュートリアルはヘルプコマンドで確認可能。

:help

Native messenger のインストール

Tridactyl の機能をさらに拡張する。WebExtension だけでは実装できない機能を、Native Messenger App を経由して可能にする。2

参考

Tridactyl のコマンドで以下を実行。

:nativeinstall

クリップボードにインストール用コマンドがコピーされるので、シェルで実行する。完了後、Tridactyl で次のコマンドを実行しインストール済みのメッセージが出ればOK。

:native
# Native messenger is correctly installed, version X. X. XX

これで source なんかのコマンドが効くようになる。

Tridactyl の設定

Vimperator と同じ要領で、ホームディレクトリに【.tridactylrc】を置く。

$ touch ~/.tridactylrc

このファイルに設定を書いていく。Vimp のときのファイルから必要最低限だけ移行した。

~/.tridactylrc

" 基本設定 general config
"==============================================================================

colorscheme sweets
set smoothscroll true
set scrollduration 100
set allowautofocus false


" キーマップ Key Mapping
"==============================================================================

" for TreeStyle Tab
" keymap j k
" keymap k j
bind J tabprev
bind K tabnext

" for US Keyboard
keymap ; :
keymap : ;

" disabling bookmark-add
keymap A <Nop>

bind / fillcmdline find
bind n findnext 1
bind p findnext -1
bind ,<Space> nohlsearch

" default scroll is a bit much
bind j scrollline 5
bind k scrollline -5

" use <C-[> as <Escape>
bind --mode=normal <C-[> composite mode normal; hidecmdline
bind --mode=insert <C-[> composite unfocus | mode normal
bind --mode=hint <C-[> hint.reset
bind --mode=ex <C-[> ex.hide_and_clear

" use clipboard
" unbind --mode=normal y
" command yy clipboard yankshort
" command yt clipboard yanktitle
" command ym clipboard yankmd

unbindurl www\.tumblr\.com j
unbindurl www\.tumblr\.com k
unbindurl www\.tumblr\.com l
unbindurl www\.tumblr\.com r

unbindurl b\.hatena\.ne\.jp j
unbindurl b\.hatena\.ne\.jp k
unbindurl b\.hatena\.ne\.jp o

コメントアウトしているところは調整中。まだ全然荒い。主な設定としては

  • J, K でのタブ移動を Tree Style Tab に合わせて上下を直感的に
  • ページ内検索結果を n, p で言ったり来たり
  • デフォルトの j, k スクロールはちょっと大幅なので調整
  • デフォルトでキーショートカットが用意されている Web サイトではキーをエスケープ

などなど。

カラースキームの作成

Tridactyl にはデフォルトでいくつかのカラースキームが用意されており、次のコマンドで変更できる。

:colorscheme hogehoge

もしくは設定ファイルに次の記述をする。上ではもう追加してるけど。

colorscheme hogehoge

デフォルトで用意されているのは次の数点。

tridactyl/src/static/themes at master · tridactyl/tridactyl

アピアランスは大事。表示されるコマンドやヒントが小さくて見にくいようでは使い物にならない。そこで自分で用意する。

ところで Vimperator 時代にあった sweets というカラースキームをご存知だろうか。snaka72 さんが作成されたように記憶しているが、自分はこれに opacity オプションを加えてプロンプト部分を半透過にしたりして使わせてもらっていた。それに近いものを再現する。

tridactyl ディレクトリ内に新テーマ【sweets】を作成。

$ cd src/static/themes/
$ mkdir sweets
$ cd sweets
$ touch sweets.css

sweets.css

:root.TridactylThemeSweets {
    /* Generic */
    --tridactyl-font-family: monospace;
    --tridactyl-font-family-sans: sans-serif;
    --tridactyl-font-size: 14pt;
    --tridactyl-small-font-size: 14px;
    --tridactyl-bg: white;
    --tridactyl-fg: black;
    --tridactyl-logo: url("data:image/png;base64,REPLACE_ME_WITH_BASE64_TRIDACTYL_LOGO");

    /* Mode indicator */
    --tridactyl-status-font-family: var(--tridactyl-font-family);
    --tridactyl-status-font-size: var(--tridactyl-small-font-size);
    --tridactyl-status-bg: var(--tridactyl-bg);
    --tridactyl-status-fg: var(--tridactyl-fg);
    --tridactyl-status-border: 1px lightgray solid;
    --tridactyl-status-border-radius: 2px;

    /* Search highlight */
    --tridactyl-search-highlight-color: yellow;

    /* Hinting */

    /* Hint character tags */
    --tridactyl-hintspan-font-family: var(--tridactyl-font-family-sans);
    --tridactyl-hintspan-font-size: var(--tridactyl-small-font-size);
    --tridactyl-hintspan-font-weight: bold;
    --tridactyl-hintspan-fg: LightYellow;
    --tridactyl-hintspan-bg: DarkOrchid;
    --tridactyl-hintspan-border-color: ButtonShadow;
    --tridactyl-hintspan-border-width: 0px;
    --tridactyl-hintspan-border-style: solid;

    /* Element highlights */
    --tridactyl-hint-active-fg: Black;
    --tridactyl-hint-active-bg: rgba(0, 0, 0, 0.7);
    --tridactyl-hint-active-outline: 1px solid DarkOrchid;

    --tridactyl-hint-bg: Pink;
    --tridactyl-hint-outline: 1px solid #8f5902;

    /* :viewsource */
    --tridactyl-vs-bg: var(--tridactyl-bg);
    --tridactyl-vs-fg: var(--tridactyl-fg);
    --tridactyl-vs-font-family: var(--tridactyl-font-family);

    /*commandline*/

    --tridactyl-cmdl-bg: rgba(0, 0, 0, 0.7);
    --tridactyl-cmdl-fg: LightYellow;
    --tridactyl-cmdl-line-height: 1.5;
    --tridactyl-cmdl-font-family: monospace;
    --tridactyl-cmdl-font-size: 14pt;

    /*completions*/

    --tridactyl-cmplt-option-height: 1.4em;
    --tridactyl-cmplt-fg: LightYellow;
    --tridactyl-cmplt-bg: rgba(0, 0, 0, 0.7);
    --tridactyl-cmplt-font-size: 14pt;
    --tridactyl-cmplt-font-family: monospace;
    /* i don't think 0.5px is redered */
    --tridactyl-cmplt-border-top: 1px solid grey;

    /* need a better way for naming variables
     *
        - .Properties for .HistoryCompletionSource table
        - .Properties for .BmarkCompletionSource table

    */

    /*sectionHeader*/

    --tridactyl-header-first-bg: rgba(146, 24, 146, 0.7);
    --tridactyl-header-second-bg: rgba(146, 24, 146, 0.7);
    --tridactyl-header-third-bg: rgba(146, 24, 146, 0.7);
    /* eg. What if I dont want liner-gradient as bg?
     *
     * :root .sectionHeader { background: blue; }
     *
     * ????
     */

    --tridactyl-header-font-weight: bold;
    /* i don't think 0.5px is redered */
    --tridactyl-header-border-bottom: 1px solid bottom;

    /*url style*/

    --tridactyl-url-text-decoration: none;
    --tridactyl-url-fg: LimeGreen;
    --tridactyl-url-bg: rgba(0, 0, 0, 0);
    --tridactyl-url-cursor: pointer;

    /*option focused*/

    --tridactyl-of-fg: var(--tridactyl-fg);
    --tridactyl-of-bg: rgba(255, 236, 114, 0.7);

    /*new tab spoiler box*/
    --tridactyl-highlight-box-bg: #eee;
    --tridactyl-highlight-box-fg: var(--tridactyl-fg);

    --tridactyl-private-window-icon-url: url("chrome://browser/skin/privatebrowsing/private-browsing.svg");

    --tridactyl-container-fingerprint-url: url("resource://usercontext-content/fingerprint.svg");
    --tridactyl-container-briefcase-url: url("resource://usercontext-content/briefcase.svg");
    --tridactyl-container-dollar-url: url("resource://usercontext-content/dollar.svg");
    --tridactyl-container-cart-url: url("resource://usercontext-content/cart.svg");
    --tridactyl-container-circle-url: url("resource://usercontext-content/circle.svg");
    --tridactyl-container-gift-url: url("resource://usercontext-content/gift.svg");
    --tridactyl-container-vacation-url: url("resource://usercontext-content/vacation.svg");
    --tridactyl-container-food-url: url("resource://usercontext-content/food.svg");
    --tridactyl-container-fruit-url: url("resource://usercontext-content/fruit.svg");
    --tridactyl-container-pet-url: url("resource://usercontext-content/pet.svg");
    --tridactyl-container-tree-url: url("resource://usercontext-content/tree.svg");
    --tridactyl-container-chill-url: url("resource://usercontext-content/chill.svg");

    --tridactyl-container-color-blue: #37adff;
    --tridactyl-container-color-turquoise: #00c79a;
    --tridactyl-container-color-green: #51cd00;
    --tridactyl-container-color-yellow: #ffcb00;
    --tridactyl-container-color-orange: #ff9f00;
    --tridactyl-container-color-red: #ff613d;
    --tridactyl-container-color-pink: #ff4bda;
    --tridactyl-container-color-purple: #af51f5;

    --tridactyl-externaledit-bg: var(--tridactyl-logo) no-repeat center;
}

default.css をベースに手を加えた。多分余計なこともたくさん書いてる。

この状態で再度上述の手順でビルド、インストール。

~/.tridactylrc 、もしくはコマンドで作成したテーマを読み込む。こんな感じになる。

f:id:sso775:20200520211457p:plain

f:id:sso775:20200520222726p:plain

statuspanel を非表示にする

リンクにカーソルオーバーするとリンク先の URL がブラウザ左下に表示されるが、これが tridactyl のコマンドと重なってしまって見にくいので、userChrome.css を用いて隠す。

まず userChrome によるカスタマイズを可能にする。アドレスバーに以下を入力。

about:config

toolkit.legacyUserProfileCustomizations.stylesheets を true に。

続いて userChrome。最近の Firefox では次を使わせてもらう。

alice0775/userChrome.js

$ git clone https://github.com/alice0775/userChrome.js.git

README に従ってプロファイルフォルダ内に chrome フォルダを作成し、userChrome.xml、userChrome.js をダウンロードして保存、さらに userChrome.css を作成。UTF-8 BOM 無しテキストにする必要がある点だけ注意。わからなければ CotEditor なんか使うと良い。

userChrome.css

toolbarbutton#alltabs-button { -moz-binding: url("userChrome.xml#js"); }

#statuspanel[type="overLink"] #statuspanel-label
{ display: none !important; }

Firefox を再起動すれば完了。

今後

ここまでやってだいぶ昔の環境が戻ってきた感じがあるものの、まだまだやりたいことは色々ある。

  • JavaScript で操作されたテキストフィールドが入力不能になることがあるので解消したい。はてなブログの HTML 編集画面とか CSS 編集画面とかああいう箇所。
  • J,K でのタブ移動だけでなく、<,>で閲覧タブ履歴を辿るとかやりたい。
    • そもそも J,K でのタブ移動の挙動が未だに少し掴めない。単純に上下の移動なのか、閲覧履歴なのか、開いた履歴なのか、挙動からだけだと不明瞭。時間が作れたらコード読もうと思う。
  • ヤンク周りが上手く動作しない。ページのURL、ページのタイトル+URL のコピーとかをストレスなくやりたい。rc ファイルに書いてるけど上手くいってない。

色々いじっていこうと思う。

Firefox 76 セットアップ

メインの Web ブラウザとして使う Firefox をセットアップする。現時点のバージョンは76。

様々な Add-on をインストールするけど自分の中で必須なのが以下。

  • Vimperator 代替
    • Vim Vixen と Tridactyl を両方試して Tridactyl に落ち着いた
  • Tree Style Tab
  • Add-Block
  • AutoPagerize

他にも数点入れた Add-on を記録しておく。また Tridactyl についてはやることが多いので次回の記事にする。

Tree Style Tab

Tree Style Tab - ツリー型タブ – 🦊 Firefox (ja) 向け拡張機能を入手

開いているタブを縦に並べて表示、親タブと子タブによる階層管理ができ一覧性もよく非常に便利。自分は多いときはタブを50〜100超開くので、横に並んで幅の短いタブではとてもじゃないが使えないし、多段タブでも心もとない。そこでこれ。

f:id:sso775:20200520193728p:plain

タブを開く・閉じるときの挙動やコンテクストメニューの内容まで細かく設定できる点も良い。「このタブの子タブをすべて閉じる」なんかの設定を有効にする。

Add-Block

AdBlocker Ultimate – 🦊 Firefox (ja) 向け拡張機能を入手

広告排除。

weAutoPagerize

weAutoPagerize – 🦊 Firefox (ja) 向け拡張機能を入手

表示している Web サイトの「次のページ」を自動で下部に挿入してくれる。Google 検索結果なんかでも活躍。

類似 Add-on もいくつか試したが今の所これ。

DeepL / MultiTranslate

DeepL / MultiTranslate – 🦊 Firefox (ja) 向け拡張機能を入手

高精度翻訳、DeepL を利用するための拡張機能。UI はあまり好きじゃないけどとりあえず使えれば良い。

Stylus

Stylus – 🦊 Firefox (ja) 向け拡張機能を入手

ユーザースタイル作成・管理ツール。そんなに使わないけどちょっとした CSS テストに。

つづく

あとは他にもはてブとか Tumblr 関連とかくらい。

記事がキツネだらけになった🦊

macOS 10.15 Catalina 開発環境構築

よく使うアプリケーションが整ったので、次はプログラミング環境。

ローカル開発環境

Google Chrome

f:id:sso775:20200509002050p:plain

Google Chrome ウェブブラウザ

最初に入れた Firefox に加えて。Homebrew Cask で入れた。

$ brew cask install google-chrome

VirtualBox

f:id:sso775:20200509002104p:plain

Oracle VM VirtualBox

仮想 PC ソフト。Homebrew Cask で。

$ brew cask install virtualbox

エディタ

Vim と MacVim-Kaoriya

welcome home : vim online

プログラミング用エディタ

$ brew install vim

GUI フロントエンド 兼 日本語環境用調整済みツールとして MacVim-KaoriYa。

MacVim-Kaoriya

というか前回の記事で書いてた…けど KaoriYa のこともあるしいいか。

Git

tig

Index of /tig

Git の CUI クライアント。

$ brew install tig

GitKraken

f:id:sso775:20200509002148p:plain

Free Git GUI Client - Windows, Mac, Linux | GitKraken

Git のデスクトップクライアント。UI がおしゃれ。

その他

anyenv

anyenv/anyenv: All in one for **env

~env 系 (rbenv や pyenv など、環境を複数バージョン管理するツール)を管理するツール。

$ brew install anyenv

必要な設定としては、シェルの設定ファイルに次を追加する。自分は ~/.zshenv

PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"

環境ファイルを読み込んだ後、指示通りのコマンドを実行。

$ source ~/.zshenv
$ anyenv install --init

やることは rbenv なんかと変わらない。ただ *env の類いが先に入ってる場合は注意。

anyenvの導入方法 - Qiita

rbenv などをインストール済みで、新たに anyenv で管理したいということであれば、もとのものをアンインストール、シェルの設定ファイルに書いたそれらを使うためのパス設定などを削除、改めてanyenv でインストールすれば良い。

nodenv

nodenv/nodenv: Manage multiple NodeJS versions.

node.js の管理。

$ anyenv install nodenv
$ exec $SHELL -l

正しく入ったか確認。

$ nodenv -v

インストール可能なバージョンを確認。

$ nodenv install -v

任意のバージョンをインストール。

$ nodenv install X.X.X
$ nodenv rehash

インストール済みのバージョンを確認。

$ nodenv versions

使用するバージョンを任意に変更

$ nodenv global X.X.X

パスが $HOME/.anyenv/~ になってればOK

$ which node
/Users/sso775/.anyenv/envs/nodenv/version

yarn

Yarn

JavaScript パッケージマネージャ。

$ brew install yarn

絵文字がかわいい。

f:id:sso775:20200509002234p:plain

今後

使用検討していく。

  • Vargant
  • Neovim
    • ナウいらしい
    • ずっと使っていなくて .vimrc もごちゃごちゃになりすぎている。整理したい気持ちがある。

Mac (10.15 Catalina) に取り急ぎいれたアプリケーション

前回の 初期設定 に続き必要なアプリケーションをインストールしていく。前回の内容はクリーンインストールした macOS Catalina をとにかく最低限動くまでという感じ。今回は日常的に使うアプリケーションを入れていく。

普段使うのに必須だと感じていたり、昔のアプリケーション紹介サイト運営時の経験から最近はあまり使わなくなっても好きなアプリケーションとか。色々インストールしてく。

ユーティリティ

Alfred

f:id:sso775:20200509001101p:plain

Alfred - Productivity App for macOS

多機能ランチャー。

自分は Homebrew Cask でインストールした。

$ brew cask install alfred

Mac OS X 10.7 Lion から搭載された Launchpad により、アプリケーションへのアクセス、起動がかなり楽になりました。しかしながらやっぱりキーボードランチャーはほしい。

昔は高機能な QuickSilver 派だったが、今はもうそこまでは良いかなという感じ。Alfred では Powerpack を購入すればよりパワフルな動作が期待できるけど、無料の標準装備でも十分使える。

ホットキーは ⌥option + space を割り当て。入力するとテキスト入力フィールドが現れ、そこからアプリケーションの起動だけでなく、ファイルやフォルダへのアクセス、Web サイトでの任意のワードでの検索など、簡単に使える機能だけでも多岐に渡る。

f:id:sso775:20200509095313p:plain

  • ⌥ + space → app~ で App Store 起動
  • ⌥ + space → vlcVLC 起動
  • ⌥ + space → applica~ でアプリケーションフォルダを開く
  • ⌥ + space → goolgle hogehoge で Google で hogehoge と検索
  • ⌥ + space → youtube fugafuga で YouTube で fugafuga と検索

など、自分で設定したホットキーで様々なアクセスが可能になる。慣れると Launchpad 起動のトラックパッドジェスチャをしに右手を動かすのすら面倒になる。さらに Mac のロックやゴミ箱を空にする操作など、システムへのアクセスも可能。

AppCleaner

f:id:sso775:20200509001156p:plain

AppCleaner

アプリケーションのアンインストーラー。

10年ほど前に自分が Mac を使い始めた頃から、「アプリケーションのアンインストールはゴミ箱に入れるだけです」なんてオフィシャルに言われていたりしたけど、アプリケーションの設定や使用情報などはライブラリフォルダに残ったりしている。その関連ファイルまでまとめて削除することができる。それこそ10年以上使い続けている。

f:id:sso775:20200509001218p:plain

f:id:sso775:20200509001242p:plain

アプリケーションファイルをドラッグ・ドロップすると関連ファイルとパスが表示される。名前で引っ張ってきているっぽいので一応余計なものを連れてきていないか確認して削除。

ClipMenu

f:id:sso775:20200509001326p:plain

ClipMenu.com: クリップボード管理ソフト - ClipMenu.com

クリップボード履歴管理アプリケーション。この類いのアプリケーションもかなり増えたけど、使い慣れたこれをずっと使っている。あまり高機能のものはいらない。

メニューバーに常駐して動く。

ホットキーに ⌘command + ⇧shift + v を割り当て。通常のペースト ⌘command + v に ⇧shift を加えることで、これまでのコピー履歴が表示され呼び出すことができる。

f:id:sso775:20200509001343p:plain

ここで前回の記事の Karabiner-Elements の設定とのコンビが最強。手を動かすことなく、Caps Lock キーを押しながら h/j/k/l の vim 風操作で履歴を再利用することができる。クリップボードの履歴を辿る機能は絶対にほしいしその操作性の良さに慣れると手放せない。

Disk Inventory X

f:id:sso775:20200509001357p:plain

Disk Inventory X

ディスク内データ量可視化アプリケーション。データの整理に。

f:id:sso775:20200509001413p:plain

こんな感じでディスク内で占めるデータ量の割合に合わせて、ディレクトリの大きさをタイル状に可視化してくれるアプリケーション。

類似アプリに GrandPerspective というのもあるけど、自分は使い慣れた Disk Inventory X を使っている。

GrandPerspective

アーカイバ

MacWinZipper

f:id:sso775:20200509001429p:plain

MacWinZipper - ティダ

Mac, Windows 間の zip ファイルのやりとりを快適に。

Mac で zip ファイルを作成し Windows で解凍をするとファイル名の文字化けや不要なファイルの紛れ込みが起こる。そこをこのアプリケーションを使って圧縮を行うことでそれを回避できる。

使い方もファイルをまとめてドラッグ・ドロップするだけと単純明快。

The Unarchiver

f:id:sso775:20200509001447p:plain

The Unarchiver | Top Free Unarchiving Software for macOS

多様なファイルを解凍する。

zip だけでなく、rar や lhA, 7-zip など様々なタイプの圧縮ファイルを解凍する。

テキストエディタ

CotEditor

f:id:sso775:20200509001502p:plain

CotEditor -Text Editor for macOS

Homebrew Cask でインストールした。

$ brew cask intall coteditor

シンプルながらシンタックスハイライトや設定の幅広さなどから昔から広く愛用されているプレーンテキストエディタ

f:id:sso775:20200509001517p:plain

動作の軽快さとは裏腹にその動作はパワフル。シンプルなテキスト編集ツールとしてもアウトライン機能や Markdown 対応など頼もしく、シンタックスハイライトも幅広いプログラミング言語に対応しておりちょっとしたソース確認なんかにも使えるかなり使えるやつ。

nvALT

f:id:sso775:20200509001539p:plain

nvALT - BrettTerpstra.com

いつでも簡単に呼び出せる軽量ノートアプリ。Evernote は要らない (昔使ってたけど) 。これも Homebrew Cask でインストールした。

$ brew cask install nvalt

Notational Velocity というアプリケーションから派生したアプリケーション。その軽量さがウリで、用途の範囲としてはスティッキーズ的なちょっとしたメモからそこそこ分量のあるテキストをまとめるノートとして。

f:id:sso775:20200509001559p:plain

画像は Markdown で書いたテキストを右でプレビュー表示しているところ。

個人的な惚れポイントとしては、ノートの共有アプリ Simplenote との連携機能と、ホットキーでの起動機能の 2 点。常時起動させてメニューバーに常駐しているが、ホットキーに ⌘command + ⇧shift + return を設定しており、キー入力でトグルできる。そこに残したメモやテキストは、iPhone アプリと同期されて出先でも確認できる。気楽に使えて本当に良い。

新規ノートを開始し、一行目に入力したテキストがノートのタイトルとして記録され、複数のノートを管理できる。また Markdown での書き起こしとプレビュー機能も持っており、はてなブログの記事起こしにも使える。

ずっと使ってきたけどこれを機に調べてみたところ nvALT の次期プロジェクトとして nvUltra というのが始まってるらしい。

Codename: nvUltra - BrettTerpstra.com

ダウンローダ

macOS Catalina から 32bit 非対応となり使っていた URLcollector, Getter1 は非対応…。

SiteSucker

f:id:sso775:20200509001649p:plain

SiteSucker for macOS

Web サイトをまるごとダウンロード。

期間限定公開 Web サイトだったりするコンテンツを手元に保存しておきたいときなどに。

対象 Web サイトの URL をコピペしてダウンロード先を指定するだけ。

ファイル共有

Dropbox

f:id:sso775:20200509001720p:plain

Dropbox

オンラインストレージ兼ファイル共有。知らん間に無料だと端末 3 台までになってたんですね…。

Homebrew Cask からインストールした。

$ brew cask install dropbox

SNS・コミュニケーション

夜フクロウ

f:id:sso775:20200509001736p:plain

YoruFukurou

Twitter も10年以上やっていると本当に色んなことがありました。Favstar/ふぁぼったーの終焉、UserStream 廃止、Twitter ドラマなんてのもありましたね。Timeline タブから正規表現でエアリプを拾って fav とかやってたな…。

昔ほど熱心に TL を追ってないけど、愛着と信頼を寄せて使っているクライアントアプリ。

Twitter Web にしても iPhone 公式アプリにしてもそうだけど、表示順は時系列じゃないわ要らん広告がんがん出してくいるわみたいな UI のツールを使う気はさらさら起きない。

LINE

f:id:sso775:20200509001755p:plain

コミュニケーションアプリ LINE(ライン)

コミュニケーションツール。特に言うことない。

メディア ( 画像・動画・音楽)

VLC

f:id:sso775:20200509001825p:plain

オープンソースの万能動画再生アプリケーション。これさえ入れておけば動画再生で困ることはない。幅広い拡張子、コーデックに対応。

オープンソースのベストなプレイヤー VLCメディアプレイヤーのオフィシャルダウンロードです。 - VideoLAN

MPlayerX

f:id:sso775:20200509001839p:plain

MPlayerX

軽快に動くシンプルな動画プレイヤー。動作は軽く、ウインドウを縁取るベゼルもなく、ファイル名の連番を検知して自動再生してくれるなど、一番使っている動画再生アプリ。これで再生できなければ VLC を使うという感じにしている。

f:id:sso775:20200509001854p:plain

どうでもいいけどローカライズがところどころつたなくてかわいい。これを Twitter でぼやいたら開発者からこれまたつたない日本語でリプライもらったことある。応援したくなった。

ffmpeg

FFmpeg

動画コンバータ。お気に入りの動画を iPhone 用に変換したり。

GUI フロントエンドもあるけどコマンドラインで十分。Homebrew で入れる。

$ brew install ffmpeg

動画コンバート始めると iMac のファンが怖いくらいの音立てる…もう寿命も近いのだろうか…。

Seashore

f:id:sso775:20200509001913p:plain

画像編集ソフト。オープンソースソフトウェア GIMP の流れを組むソフト。以前はこれの更に派生の Leeshore を使っていて使い慣れたこっちが良かったけど、これも 64bit の波に…

Homebrew Cask で入れた。

$ brew cask install seashore

SimpleComic

f:id:sso775:20200509001929p:plain

Dancing Tortoise | Simple Comic

漫画閲覧用アプリケーション。用途は漫画に留まらず、多量の画像ファイルを連続して閲覧するシーンでいつも使える。

画像ファイルの入ったフォルダを丸ごと、もしくはまとめられた zip ファイルでも、SimpleComic のアイコンにドラッグ・ドロップするだけ。漫画のように縦長の画像であれば見開きで表示してくれたり。不安定になることもなく使いやすいツール。

Lyrics Master

f:id:sso775:20200510164506p:plain

Lyrics Master - iPhone / iTunes / iPod で歌詞を楽しもう!

再生中の楽曲の歌詞を Web から検索して登録。

Catalina になり iTunes がミュージックに生まれ変わった。iPhone での音楽再生の UI もこの数年で変化があり、歌詞表示のプライオリティは自分の中でも下がってきたけど、それでもほしい。

f:id:sso775:20200510164631p:plain

【ミュージック連携】を押せば再生中の楽曲の情報を取得し、歌詞掲載サイトから検索しデータをとってきてくれる。

TuxGuitar

f:id:sso775:20200509001949p:plain

.:: TuxGuitar ::. Open Source Tablature Editor :: TuxGuitar

ギター・ベース TAB 譜や五線譜の作成、MIDI 出力などが行えるオープンソースソフトウェア。使い方も簡単。

Mixxx

f:id:sso775:20200509002006p:plain

Mixxx - Free DJ Mixing Software App

DJ アプリ。iTunes ライブラリからの読み込みに対応。BPM 同期、エフェクト、DJ コントローラー対応など。

Homebrew Cask にある。

$ brew cask intall mixxx

f:id:sso775:20200509002032p:plain

出力用とヘッドフォンでのモニタリング用とサウンドチャンネルが双方あれば、その気になれば Mac のキーボードだけでもそれっぽいことをして遊ぶことができる。楽しい。

もちろん DJ コントローラーで操作することもできる。

現状若干日本語が文字化けする。

おわり

おわらないけど。長くなってしまったので Web ブラウザ、というか Firefox の設定と、開発環境は別枠にする…。

ここまでのものに加えて Apple 製のアプリケーションも入れる。

純正だし紹介は省く。

こうして見返すと昔からあるものばかりという感じがする。一番幅多く色々なアプリケーションを試していたのが10年とか前で、その頃から気に入って使っているものばかり。どうしても気に入ったアプリケーションを手放せない性格が出てしまって、OS が刷新されても昔のアプリケーションを探しにいってしまう。使い続けたいのに使えなくなってしまったアプリケーションもたくさんある。

今後も追加は多くありそうだけど、取り急ぎ思いついたものをインストールしていきながら列挙してみた。また今後変わっていくなかでこれは取り上げようと思ったものは書いていくかもしれない。

macOS 10.15 Catalina 初期設定

catalina_icon

iMac がとりあえず動くようになったのでセットアップしていく。やることが多いので備忘録として残していく。

とは言っても、同じようなことをやったのはこの iMac 購入時である 2013 年とかなのでもう 7 年前。次にその必要性が出たときにここの情報がどこまで生きるかわからないけど。

大きな点としては知っていたけど macOS Catalina になり 32bit アプリケーションがすべて切り捨てられたので、多少の諦めをもってセットアップしている。

システム環境設定

systempreference_icon

まずはここから

  • 一般
    • 外観モードをダークに(初めてなのでやってみる)
  • Dock
    • サイズを調整してマウスオーバー時に拡大する設定に
    • 最近使ったアプリケーションの Dock 表示を OFF に
  • セキュリティとプライバシー
    • 【一般】タブ スリープ解除のパスワード要求までの時間を 5 秒に
  • キーボード
    • あとで Karabiner 、Google IME なんかを入れるところで細かくやる
    • 【キーボード】タブ リピートの速度と認識時間を最速・最短に
  • トラックパッド
    • 【ポイントとクリック】タブ、【副ボタンのクリック】、【タップでクリック】などすべて有効に
    • 【スクロールとズーム】タブ、【スクロールの方向: ナチュラル】にチェック
    • 【その他のジェスチャ】タブ、全部有効に
  • 日付と時刻
    • 【時計】タブ、メニューバーへの表示を有効にして、秒表示、24h表示、曜日・日付表示を有効に

IME 周り

使用キーボードはイキって(シンプルなデザインが好きなので) US 配列キーボード。それに合わせてセッティングしていく。

Karabiner-Elements

karabiner-elements_icon

Karabiner-Elements

キーボード入力を細かくカスタマイズするユーティリティアプリケーション。

Catalina では使う上でユーザーの承認が必要になったが、使っていく中でダイアログに従っていけば次のような設定に至る。

karabiner-elements001

もしならなければ、必要ファイル【karabiner_grabber】と【karabiner_observer】が Application Support フォルダに入っているので、左下の鍵アイコンを解錠し自身で行えばいい。場所は以下。

/Library/Application\ Support/org.pqrs/Karabiner-Elements/bin/

初めにいらない子 caps lock キーを無効化する。具体的には Vim と Web ブラウザで酷使する ^control キーが US キーボードだと押しにくい場所にあるので、 caps lock キーも ^control キーとして使えるようにする。この設定に関しては、システム環境設定【キーボード】内、【修飾キー】からも行えるが、Karabiner-Elements で行う様々な設定との併せ方がややこしいので、Karabiner-Elements 内だけで行う。

【Simple modifications】タブ、【For all devices】内で From: caps_lock、To: left_control と設定。

karabiner-elements002

次に【Complex modifications】タブ、【Rules】に好みのセッティングを追加していく。左下の【Add rule】をクリックすると標準搭載の設定例が表示され、そこになければ【Import more rules from the Internet (open a web browser) 】からブラウザ上で検索することができる。

karabiner-elements003

設定したのは以下の通り。検索すれば出てくる。

  • コマンドキーを単体で押したときに、英数・かなキーを送信する。(左コマンドキーは英数、右コマンドキーはかな)(rev 3)
  • Quit application by holding command-q
    • 通常 ⌘command + Q でアプリケーション終了だが、それを長押しにすることで誤終了を防げる個人的おすすめ設定の一つ。
    • これの W バージョン(ウインドウを閉じる用)もあるけど自分はいいや
  • Ctrl+p/Ctrl+n to arrow up/down
  • Change Control + h/j/k/l to Arrows
  • Map ctrl + [ to escape

ここまでの設定で、文字入力だけでも手をホームポジションから動かさずかなりストレスフリーに行えるようになる。カーソルの移動のために右手を大きく動かして矢印キーを触れにいく必要がなく、^control キーの代わりとなった caps lock キーを押しながら右手の h/j/k/l で Vim 風操作を実現できる。少し遠い esc キーも、Vim と同じように ^control (caps lock) + [ キーで効く。

Karabiner には他にも Mouse Keys と言ってキーボード入力でマウス操作まで実現する機能まである。昔は設定してたけど今回は見送り。

Google 日本語入力

googleime_icon

Google 日本語入力 – Google

macOS のリアルタイム変換がリリースされたときは驚いたけど、自分はこちら派。世の中で使われている語への変換力が高い方がストレスなく使える。

インストールして、システム環境設定、【キーボード】> 【入力ソース】から設定する。

ターミナル関連

iTerm2

iterm2_icon

iTerm2 - macOS Terminal Replacement

標準のターミナルでも良いかもしれないけど自分はずっとこれ。 ずっと真っ黒な背景に半透過で使ってたけど、なんとなく DarkOrchid くらいの背景色にしてみた。しばらく使ってみているけど、たまたま以前から tmux のステータスラインを Magenta にしていてそれに合うし、sweet な感じがちょっと気に入ってる。

iterm2001

Vim のペインはカラースキームで黒背景になってる。わかりやすくて良いかもしれない。

フォントは Ricty を設定するけどあとで入れる。

Homebrew

homebrew_icon

macOS用パッケージマネージャー — Homebrew

Mac 上で動作するツールの導入、管理を一元化できる便利なツール。これがあるとないとじゃかかるコストが全然違う。

以前は CUI ツール用って印象が強かったけど、最近じゃ Homebrew Cask と言ってデスクトップ上で使う GUI アプリケーションまで管理できる。

コマンドライン上で次のコマンドを実行してインストール。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

使い方は他に譲る。Homebrew が入ったら次のインストールコマンドでとりあえず最低限のツールをがしがしインストールしていく。

$ brew install hogehoge

覚えている範囲で次の通り。

zsh

なんか今は macOS 標準搭載のシェルが zsh らしい。けれどもこれまでの慣例通りインストール。

$ brew install zsh

tmux

ターミナルマルチプレクサ。ターミナルを仮想化していくことでセッションごとに管理、その中でペインを分割していったりすることで一つのターミナルの中で並列的に作業ができるようになる。

今じゃやらないけど、ssh でサーバーに接続して作業するときなんかにはすごく便利だし、ローカルでの作業だけでも慣れるとすごく便利。なので入れる。

$ brew install tmux

vim

エディタ。vim 好き。

$ brew install vim

git

言わずとしれたバージョン管理ツール。

$ brew install git

Ricty

フォント。同様に Homebrew で入れるけど若干コケた。Catalina へのインストールで起きる事象みたいだけど次の手順でインストールできる。

$ brew tap sanemat/font
$ brew install ricty
$ cp -f /usr/local/opt/ricty/share/fonts/Ricty*.ttf ~/Library/Fonts/
$ fc-cache -vf

dotfiles

~/local/dotfiles で管理して、シンボリックリンクをホームディレクトリに作成する運用をしている。無くなっていたら GitHub から持ってこれば良いかと思っていたが、~/local/ フォルダがまるごと残っていたので良かった。

sso775/dotfiles

同じように ~/local/dotfiles/ を配置して、下記の初期設定用スクリプトを実行。サーバ運用していたときのが残っていて楽で良かった。

dotfiles/setup.local.sh

#!/bin/bash

DOT_FILES=( .zlogin .zshenv .zshrc .zsh.d .vim .vimrc .gvimrc .emacs.d .screenrc .tmux.conf .tmux.conf.osx .irssi .gitconfig .gitignore.global )

for file in ${DOT_FILES[@]}
do
    ln -s $HOME/local/dotfiles/$file $HOME/$file
done

mv $HOME/.tmux.conf.osx $HOME/.tmux.conf.local

screen も使ってないしもう irrsi なんて使わない気もするし整理しないと。

ウェブブラウザ

とりあえずでFirefoxだけ。

firefox_icon

Firefox をダウンロード — 無料ウェブブラウザー — Mozilla

設定についてはまたのちの記事で。

iMac とにかく起動までの道のり

結論

ことの顛末

昨日の記事 に整理した方法をとにかく試した後、Apple サポートに電話で助けを乞う。

オペレーターと確認した前提とゴール

実機は iMac、使用していたディスクの状況は母艦と外付け HDD 2つがそれぞれ次のような状況。

Macintosh HD

Filesystem     Size   Used  Avail Capacity
/dev/disk2      3.1T   2.3T   801G    75%

HDD1

Filesystem     Size   Used  Avail Capacity
/dev/disk4s2  2.7Ti  2.6Ti   81Gi    98%

HDD2

Filesystem     Size   Used  Avail Capacity
/dev/disk3s2  2.7Ti  1.2Ti  1.5Ti    44%

HDD1,2 はそれぞれ Timemachine Backup ではなく、Macintosh HD に入り切らないデータの退避場所となっている。 ゴールは macOS Catalina へのアップグレードの途中で起動しなくなってしまった Macintosh HD の中身がどうなっているかわからないが、その中から可能な限りデータを復旧し、バージョンは何であれ再度 Macintosh HD に OS をインストールすること。

初回の電話と方策その1

そこでオペレーターから最初に提案されたのは、比較的余裕のある HDD2 にパーティション( 50GB もあれば十分 ) を作り、復元モードを使ってそこに macOS をインストールするというもの

iMac ■■■■■■■■■■■■■□□ <- 破損
 │
 ├─ HDD1 ■■■■■■■■■■■■■■□
 └─ HDD2 ■■■■■■■□□□□□□□■ 
                       ↑
                    ここに復元モードで OS をインストール

(伝われ…!)

通常の復元モードで開始

それぞれつないだ状態で、復元モード(⌘command + R 押下)で起動。ディスクユーティリティから HDD2 にパーティションを作る。形式は Mac OS 拡張ジャーナル。

フォーマットができたら OS インストールを選択、母艦で Catalina のインストール作業途中だったためか Catalina のインストールが始まる。インストール先で先程作成した HDD2 のパーティションを選択して開始。インストール作業はここから長時間かかるので電話はここで終えた。これでだめだったらインターネット復旧も試してみてくださいとのこと。

しばらく放置すると再起動が始まり、またインストールが再開。しかしそこからこれまで何度も試した通り止まってしまってダメだった。

インターネット復元モードで開始

インターネット復元モードのうち、最新の OS をインストールするモード(⌘command + ⌥option + R 押下)で起動。同様の手順を踏む。 同様に Catalina のインストールが始まり失敗。

次に工場出荷時の OS インストールを試みるモード(⌘command + ⌥option + ⇧shift + R 押下)で起動。 今度は El Capitan が出た。同じように始まるがやはり失敗。挙動が少し違って次のエラーメッセージだった。

インストーラーの有効期限が切れました。

これについても解決策は見当たらず諦めて翌日へ持ち越す。

2度目の電話と方策その2

エラーメッセージについて聞いてみたが要領を得なかった。原因としてなっとくいく説明は難しいらしい。 環境を聞かれたところ、インターネットが Wi-Fi 環境だが有線でやってみては、となんとなく苦しい提案…。

やれやれと思いながら LAN ケーブルを突っ込んで昨日と同じ作業をやってみるがどれも同じ結果に終わる。

3度目の電話と方策その3とその4

LAN ケーブルに差し替えたところでダメだった旨を報告。あと考えられる方法は、として HDD を新調する、とこれもまた行きあたりばったり的な提案を受ける。仕方ないのだろうか…。また別の方法として他の Mac を用意して、別ディスクへの OS インストールにそれを用いるという方法を提案された。なるほど確かに、iMac が調子悪くて別ディスクへのインストールも上手くできないのであれば別の Mac を使うのも手である。といったところでそんな高価な物いくつも持ってないわ、と終わる。

そして翌日、改めて考え、他の Mac ユーザーから Macbook Air を借りることに。またただでさえ自分の使用環境を見るとデータ置き場に余裕がない中だったので、HDDを新規に購入。HDD3 とする。

方策その3

まずこれまで試みた HDD2 へのインストールを、Macbook Air を使ってやってみる。

iMac ■■■■■■■■■■■■■□□ <- 破損
 │
 ├─ HDD1 ■■■■■■■■■■■■■■□
 └─ HDD2 ■■■■■■■□□□□□□□■
                       ↑
                    Macbook Air からここに macOS をインストール

正直これなら上手くいくという予感があった。調子の悪い自分の iMac と違って正常に動く Mac なんだから。しかしそう甘くなかった。 Macbook Air と HDD2 をつなぎ(USB-Type C 用ハブまで買ったわ…)で同じように復元モードでインストール開始。インストールが進み自動で再起動。すると Macbook Air が普通に立ち上がり、持ち主のアカウントでのログイン画面になった。自分の予想では再起動後は外付 HDD へのインストールの続きが始まると思っていたのでここから違和感があった。

一度電源を落とし起動ディスクを選択するモード(⌥option キー押下)で起動してみる。インストールが成功していれば、Macbook Air のディスクと、HDD2 が表示されるはず。しかしされない。 同じことを HDD2 と Mac を接続して行ってみる。すると Macintosh HD と別で HDD2 は表示されている。それを実行してみるとインストール作業が始まった。

しかしこれも上手く行かず。エラーメッセージはこれまで数度目にした。

インストーラーリソースの有効期限が切れました。

だった。

ここまでの Macbook Air を用いた手順をまた インターネット復元モード2種類でも試してみる。同じようにどうやら Macbook Air だけではインストールは完結していない模様。なぜ…。途中で iMac につなぎ直して続きを行ってみるとどちらも上手くは行かないものの挙動は少し違った。

⌘command + ⌥option + R で起動

コンピュータのインストール情報が見つかりませんでした。

⌘command + ⌥option + ⇧shift + R で起動

OS X をインストールするために必要な追加コンポーネントが見つかりません。

方策その4とその前に4度目の電話

いよいよ新規に買った HDD3 を試してみる。がその前に Macbook Air でのインストール挙動が納得行かなかったので、エラーメッセージの内容の質問と合わせて電話確認。

まずエラーメッセージに関してはなぜそのようなエラーが出るかの明確な答えは出なかった。

そして Macbook Air のインストール挙動についても、わかりません、としか言われなかった。やはり通常であれば Macbook Air から外付 HDD へ OS インストールを実行したのであれば、その中での再起動後は自動でそちらの HDD で起動されインストールが続行されるはず、なんですけどねぇ…とだけ言われる。

答えはもらえないまま HDD3 を使ったインストールを試してみる。

iMac ■■■■■■■■■■■■■□□ <- 破損
 │
 ├─ HDD1 ■■■■■■■■■■■■■■□
 ├─ HDD2 ■■■■■■■□□□□□□□□
 └─ HDD3 □□□□□□□□□□□□□□□
            |
        Macbook Air からここをフォーマット・ macOS をインストール

これが起動に向けた最後の方策になる。

通常の復旧モード(⌘command + R で起動)

Macbook Air でのインストールはやはり途中で止まる。そこで iMac に差し替えて ⌥option キーを押しながら起動。少し時間がかかったが HDD3 が Mac OS installer として表示されたので実行してみる。インストールが進み途中の自動再起動を挟んでやはり途中で止まって終了。

インターネット復元モード(⌘command + ⌥option + R で起動)

同じことをしてみる。ロゴから察するに El Capitan のインストールを試みているようだが、同じところで止まる。

インターネット復元モード(⌘command + ⌥option + ⇧shift + R で起動)

一つ手前の方法と同様、El Capitan のインストールが動くがだめ。ただ、ここで一つ思い当たった。少し前の作業から感じていた違和感に気づいたのだ。

  1. インストールが途中の HDD3 を iMac につないで ⌥option キーを押しながら起動
  2. HDD3 を選択すると El Capitanインストールが始まる
  3. インストールの過程で自動で再起動
  4. 立ち上がりインストール再開するもここで止まる

こんな流れだったが、4. でのインストール画面でのアイコンが、知らん間に Catalina になっていた。そういうことかと一瞬で合点がいった。

根本的な原因と解決方法(オチ)

通常、OS のインストールの過程で再起動が必要になるが、その処理は自動で行われる。今回の件を大雑把にまとめると次のようになる。

  • 仮に OS のアップデートに再起動が 2 度必要だとする。
  • iMacMacintosh HD が 1度目の再起動ののち(かは定かでないけど)インストールの途中で止まった。これは完了せず中断されている状態
  • それと別に Macbook Air を用いて HDD3 にインストール作業を開始。
  • Macbook Air で電源が落ちる-> iMac を ⌥option で HDD3 を選択し起動。インストールの続きが始まる。
    • この作業が再起動1度目にあたるのかもしれない。
  • HDD3 への OS のインストール作業の中で 2 度目の再起動。ここで挙動から察するに、起動時に中断中の Macintosh HD が選択され、上手くいくはずのないインストールが再開してしまう。これでハマってしまっていた。
  • 上手くいくはずのないインストールは物理電源ボタンで強制終了し、何も施さないまま 再度 ⌥option キーを押しながらで HDD3 を選択し起動する。すると 2 度目の再起動を終えたインストーラが再び動き出し、HDD3 へのインストールが完了する。
Macintosh HD    start --- restart --- restart --- (stop!) ---finish
HDD3            start --- restart --- restart -➚

この回路にひたすら陥っていた。つまり、インストール作業が上手く行かず、これじゃダメだと中断してフォーマット、別の方法へ、を繰り返していたけどもう一度ディスク選択ブートをしてインストールを続けさせるのが正解だった。わかるかいそんなん。

データの復旧と Macintosh HD の修復

インストールが完了し、HDD3 から起動することができた。iMac 実機がようやく動いた。

ターミナルを起動し、Macintosh HD の中を覗いてみる。

bash$ ls -a /Volumes/Macintosh\ HD
System            opt                   Users                   bin
Recovered Items   var                   …

ディレクトリ構成はちょっとうろ覚えだけど、見た感じ Library と Applications フォルダが吹き飛んでいたらしい。ユーザー領域を見てみる。

bash$ ls -a /Volumes/Macintosh\ HD/Users/sso775/
local            tmp            Downloads                Documents
Movies           Public         Desktop                  Pictures
Music

データ生きてた…本当に良かった…。また Recovered Items が見慣れなかったので調べてみる。

bash $ ls -a /Volumes/Macintosh\ HD/Recovered\ Items/
Applications        Library         …

退避されていた。Library 内を見ると Application Support なんかも残っていた。

とにかく必要なデータだけを rsync で HDD3 内に退避させたのち、一度電源を落としてインターネット復旧モードで起動(これから本体 HDD をフォーマットするので通常では上手く行かない)、ディスクユーティリティで APFS形式(Catalina用)でフォーマット、インターネット経由での Catalina のクリーンインストールを行ったところ、無事上手くいった。

まとめと所感

結局使っていた Mac の OS アップデートがなぜ失敗したのかはわからない。クリーンインストールでは上手くいったので何かしら元あったデータが悪さをしていたのだろう。 まずかなりしんどかった。ここまで淡々と試した方策を書いてきたが、OS インストールというのはかなり時間がかかるので、一つの作業を行うだけでも 1,2 時間とかかけてたので、起動しなくなってからここまでで 1週間半はかかっていた。Apple サポートのオペレーターの方々も丁寧に対応はしてくれたけど、正直根本的な理由が見いだせなかったり場当たり的な方策しか提案してもらえなかったりは期待はずれなところもあった。また何より10年以上の歴史がある保存データが飛ぶ恐れがあるというのは本当に落ち込むものだった。

教訓としてはありきたりだけど、バックアップとっておかないとな、というところ。なんだけどそれだけでもかかるコストって馬鹿にならないんだよな。

若くてお金に余裕もないうちに、Mac に限らず PC を買うって大変なことで、バックアップ用の大容量 HDD を合わせて買うまで手が回らないまま使ってる人って多いと思う。自分なんかもその例にもれず、そのまま使っているうちにデータだけが増えていって、今じゃ 3TB HDD 2.5 本分。それらまるごとミラーリング管理となるとかかる費用のことは考えたくない。

しかしながら今回の件で HDD3 を新たに買うに至ったので、少なくとも iMac 本体のディスクの TimeMachine 用として使おうかな、と思う。HDD が壊れて使えなくなる、というのも稀なことでもあるし、外付けの部分はある程度諦めを持って運用していくしかないかな。使っている HDD ケースが 2 本しか入らないやつなのでまた別のものを買わなきゃならないけど…。

Mac が起動しなくなったらやること

使っているマシンは iMac (27-inch, Late 2013) 。Catalina へのアップグレードが止まってしまって起動しなくなったときに試した記録。Apple サポートの情報と合わせてまとめておく。

症状

起動ボタンを押すと macOS Catalina のインストール画面(ロゴとプログレスバー)が表示され、じわじわ進んだプログレスバーが残り時間21分から数時間待っても動かなくなる。どのキーも無効で物理電源ボタンを長押しで強制終了するしかない。

PRAM(NVRAM)クリア

サポートへの問い合わせでもまず試すよう言われる方法。自分も調子悪いなと思ったら最初にやる。Macの所定の設定情報が保存されたメモリをリセットする。 電源を入れすぐに次のキーコンビネーションを押下。

⌘command + ⌥option + P + R

押し続けると再起動の挙動がおき、2度目の起動でキーを話す。起動音が鳴ったら離して良いが Apple T2 セキュリティチップ搭載マシンは2度目の Apple ロゴ表示が消えたタイミングで話す。

結果:ダメ

SMC リセット

システム管理コントローラ(SMC)、すなわち電源やバッテリー、ファン等の熱管理機能などの動作管理を司る箇所をリセットする。

デスクトップ端末なので、システム終了後、電源コードを外して15秒、接続して5秒ののち電源ONでOK。

MacbookMacbook AirMacbook Pro の場合は次の手順。

  1. ^control + ⌥option + ⇧shift を押しながら、電源ボタンも長押し
  2. 数秒待ってから電源ボタンを押して起動

結果:ダメ

セーフモードで起動

余計なものなしで起動するかどうか。ディスクユーティリティの First Aid と同様のチェックが走る。 電源を入れ、PRAMクリアと同じ要領で ⇧shift を長押し、自動再起動後のロゴ表示まで待つ。 うまくいけばメニューバー右端に「セーフモード」と表示された状態で起動する。

結果:ダメ

復元モード(リカバリーモード)で起動

起動ボタンを押した直後、次のキーを押下。

⌘command + R

すぐ再起動されロゴ表示まで押下し続ける。 「macOS ユーティリティ」が立ち上がり、ここからディスクユーティリティ起動、TimeMachine から復元、OS インストールなどが実行できる。

ここから起動ディスクを選択し、First Aid (昔で言うアクセス権の修復) を実行。

結論:ダメ。途中でエラーで止まる。

またこれには別のインターネット復元モードがあり、⌘command キーにさらに加えることで実行できる。これによってOS インストールでインストールされるバージョンが次のように変わる。

⌘command + R
最後にインストールされていたOS
⌘command + ⌥option + R
使っている Mac と互換性のある中で最新のOS
⌘command + ⌥option + ⇧shift + R
工場出荷時にインストールされていたOS、またはそれに一番近い利用可能なOS

どのモードも復元モードには入れた。ディスクユーティリティでのディスクフォーマットはデータの取り出しを諦めたくなかったので、OS インストールだけを試した。

結果:どのモードもダメ

復元モードの詳細

どのパターンも上手くいかなかったが、その挙動に差異があった。

⌘command + ⌥option + R (最新のものの場合)

通常の起動と同様、途中で止まってしまう。

⌘command + ⌥option + ⇧shift + R (古いものの場合)

OS X El Capitan のインストールが始まる。インストール作業は進むが途中で次のエラーが出て止まってしまう。

インストーラーリソースの有効期限が切れています。

エラーメッセージで検索すると「インストーラーを再度ダウンロードする必要が」と出てくるが、いやいやインターネットリカバリーで今しがたのダウンロードなんやけど、と解決せず。

Apple サポートに電話

電話した。ここから起動成功まで電話の問い合わせをすること数回。それはまた別枠で記録する。ただその電話相談でいただいた提案の中で、スキームの一つではあるなと感じられる方法があったので次に記しておく。

別ボリュームに macOS をインストール -> Startup Manager

Mac には外付け HDD などの別ディスクから起動する機能がある。BootCamp にも使われるが、⌥option キーを押しながら起動することによって Startup Manager が立ち上がり、Mac の起動に用いるディスクを接続されているものの中から選ぶことができる。これを応用して、

  1. 外付 HDD を接続した状態で復元モードで起動
  2. 外付 HDD の空き容量部分に macOS インストール用のパーティションを作る(50GBもあれば十分)
  3. OS インストールでインストール先に作成した 外付 HDD のボリュームを選択しインストール
  4. 完了したら⌥option キーを押しながら立ち上げ、外付 HDD から起動
  5. 元の Macintosh HD が多少生きていれば、Finder 上でマウントされた状態で中身を覗けるので、そこからデータを退避させる

という方法。なるほど、と思いながらこの方法で色々と試した。それは改めて詳述する。

シングルユーザーモード・Verbose モード での fsck コマンド (やってない)

ここに書いた方法に加え UNIX コマンドでがちゃがちゃやる方法もあるが、今回はやっていない。昔は ⌘command + S でシングルユーザーモードの起動だったが、最近の Mac の推奨設定では使えなくなっていて次の方法らしい。

シングルユーザーモード

  1. ⌘command + R で復元モード起動。
  2. ディスクユーティリティで使用ボリュームがマウントされているか確認。されていなければマウント。
  3. メニューバーの【ユーティリティ】から【ターミナル】を選択。 終了するときはAppleメニューから再起動。

Verbose モード

⌘command + V を押しながら起動。終了するときは 'reboot' コマンド。

Apple Diagnostics・Apple Hardware Test(やってない)

ハードウェアを診断する機能。2013年6月以降発売のマシンは前者、以前は後者。長くなるのでこのあとのリンクに留めておく。

参考