🍎

すべてをキーボードで操作したい人のための、Macbook Proセットアップガイド2023

2023/12/14に公開2

はじめに

タイトルで書いてあるようにコンセプトは明確ですが、ここ数年、仕事PCはもちろん個人PCもLinuxで通してきた自分が、転職を期に、これまた数年ぶりにMacを使うことになった[1]ので、せっかくなのでLinuxで便利に使い倒してきた機能をなるべくまるっとMacに移植して、快適に使いこなしていきたいという欲望を(ある程度[2])叶えた、という記事になります。

移行元のLinux環境について

  • Manjaro Linux
  • WMはGnome

コンセプト解説

キーボードでほとんどの操作をするということは、それなりのメリットがあります。

  • 手の位置がほとんど変わらないので、椅子のアームレストに腕を預けっぱなしにできる
  • 結果、腕や手首などの負担が少なくできる。実際最近機会があってはじめて整体に行くという体験をしたのですが、年齢やエンジニア仕事をしているわりには腕のダメージがほとんどないですねと感心されたくらい
  • すべての操作がとまでは言わないけど、基本的には作業効率がとても良い(と思う)
  • (基本リモートワークだし誰かに披露する機会もないけど)かっこいい😆

他には、キーボード操作とは関係なくなってしまいますが、明確なセットアップに対するコンセプトを持っていると、構築や改善などを考えるときに迷いがなくなるというメリットがあると思います。
要は便利だと評判の機能やアプリの情報に振り回された挙句、部分部分では便利だけど全体としてはなんかイマイチ使いづらい、、みたいなことになりづらい、かも?

セットアップの方針

まず、どうやったらキーボードでほとんどの操作を完結できるか?というところですが、いわゆるWebエンジニアをやっていることもあって、仕事は主にアプリの実装とブラウザでの確認作業になります。
つまり、エディタ、ターミナルエミュレータ、ブラウザがあれば概ねこと足りるということになります。
もちろんMacにはたくさんの便利アプリがあるということは聞き及んではいるし多少試したりはしたのですが、それらを使うより、キーボードで操作するための拡張機能が入ったブラウザで操作したほうが操作性がいいケースが多いのです。ただし、そうなるためには前述の3アプリには重厚な(?)カスタマイズを施して、しっかりキーボード操作の準備をする必要があります。
逆に、そういったカスタマイズを施す手間を考えると、いろいろなアプリを入れてしまうとそれらまでカスタマイズする必要が出てくるから面倒すぎる、という逆説的な理由が出てくるというのもまた事実かも。。

キーボード操作と聞いて誤解されるかもしれないポイント

一般的な、普通にキーボードとトラックパッドを併用しているMacを操作している人々が認識しているキーボード操作というのは、普通の Cmd + Shift + F みたいなキーボードショートカットを思い浮かべるかもしれません。つまり、キーボード操作で完結するには、その操作のほとんどをどうにかしてキーボードショートカットを割当て、かつそれを記憶しているという、およそ地獄じみた苦行を想像するのかもしれないですね。
しかし、たぶん自分と同じようなコンセプトで操作している人のほとんどがそうだと思うのですが、基本的にはいわゆる 2ストロークキーバインド と呼ばれるEmacsを祖とする操作を使います。
要は、例えば Ctrl+X を押して、いったんボタンから指を離した後に Ctrl+S を押す、という操作で、ファイル保存を実行するという操作をするものです。つまり、1ストローク目の Ctrl+X はファイルに対しての操作をするという宣言をし、2ストローク目の Ctrl+S は保存を実行するというアクションを定義しているわけです。これを応用すると「タブを閉じる」を、「タブを」「閉じる」みたいに対象と操作を分離して覚えることが可能になるので、記憶力リソースの節約にもなります。こういうのを思いつくのが真の天才ってやつなんでしょうねえ。尊敬しかない・・!

Linux(Gnome)からぜひとも移行したい機能たち

PCの操作はざっくりわけると二種類あります。それは、アプリケーション内の操作と、それらのアプリケーション自体を操作するOS的な操作です。前者の例としては、メモ帳アプリでファイルを開くみたいな操作で、後者の例としてはウィンドウを閉じる、といった操作です。

OS的な操作

GnomeというWM(ウィンドウマネージャー。OSのGUIを制御するものです)では、基本的にはあらゆる操作に対して任意のキーバインドを設定することができるので、よく使う操作は確実にキーボードだけで完結することができます。

  • アプリケーションを開く操作
    • 基本的にはMacでいうところのspotlight的な機能(名前不明)でアプリケーションを起動します。
    • Dock的なアプリケーションランチャー機能もあるのですが、画面端までマウスカーソルを移動させるみたいな重労働はしたくないので不要🙅
  • ウィンドウ操作
    • 閉じる、最小化、最大化みたいなところはもちろんですが、ウィンドウを縦に半分のサイズにして左側に寄せるみたいな機能も標準で存在し、かつキーバインドも設定可能です。スプリットウィンドウ的な機能はそこそこの頻度で使うので、こちらはぜひ移行したい

アプリケーション操作

前述の通り、使うアプリは基本的にはエディタとターミナルエミュレーターとブラウザの3つだけです。
しかも自分の場合、エディタはneovimをCLIで使っているので、GUIアプリケーションとしては2種類だけです。

  • ブラウザ
    • 本家Chromiumを使っていますが、まあGoogle Chromeでもいいやという感じ。そういう意味ではブラウザ拡張さえ流用できればなんでもいいとも言えますが、Vivaldiみたいな標準キーバインド過多なブラウザとオレオレキーバインド派は相性が悪いみたいなケースもあります。
  • ターミナルエミュレーター
    • LinuxにはあってMacにはないアプリだと困るので、最低条件としてはOSコンパチブルなものになります。
    • 次いで重要なのが実はフォントです。fontconfigの設定をLinuxからMacに持ち込むことはできないので、ターミナルエミュレーター内でフォントの設定は完結させたい。
    • あとは早いといいですよね〜

Macでの設定

ようやくMacのセットアップについての話になります。
移行したい機能は前項で定義したので、順次やっていきます。

OS的な操作

まあご存知の通りかもですが、MacOSの標準設定にはあまり自由度がありません。
素のままではIMEの切り替えもままならないので、まずはキー操作を設定する必要があります。

karabiner-elements

ご存知キーマップ編集ツールです。自分の場合はaltキー単押しでIMEの切り替えをする設定に使っています。

hammerspoon

前述の通り標準の設定機能ではロクな設定ができないので、そのフォローに大活躍なツールです。まさに救世主・・!
自分は以下の設定を用意しました。

  • アプリケーションウィンドウの切り替え( alt + tab または alt + shift + tab )
    • Cmd + tab の標準的なアプリケーション切り替え機能ではウィンドウの切り替えに対応していないので、テストでブラウザのシークレットウィンドウを使うことになった場合はそれを閉じるまでメインウィンドウにアクセス不能になります。なので、ウィンドウ単位で移動ができるようにする設定が必要になるわけです。
  • アプリケーション起動 ( alt+a → ブラウザだったら b )
    • アプリケーションが実行されていなければ起動、起動済みならそのウィンドウに移動するという設定ができます。地味に便利。ただ、前述の通り使うアプリは2種類なので、超便利というほどでもないかも。。
  • ウィンドウの最大化/左半分/右半分の切り替え ( alt + w → z/,/. )
    • 左半分でgoogle meet、右半分でslackみたいな画面レイアウトにするときに活躍します

アプリケーションたち

アプリケーションに関しては、同じアプリをインストールして設定を移行できさえすれば操作はOSは関係なくほとんど同じです。ですので、どんなアプリなのか、どんな使い方をしているのかを紹介できればと思います。

Google Chrome

これまた前述の通り、Chromium系ブラウザだったら別になんでもいい感じです。
肝心なのはVimiumという拡張機能で、これでタブの移動、ページ内検索、上下左右のスクロール、リンクを(別画面で)開くなど、キーボードでほとんどの操作をすることができます。
また、設定した内容をjsonで保存できるので、環境ごとに設定し直しみたいなことはしなくてOK👍
利用頻度の高いWebサービスはGithub, Slack, Notionですが、これらも普通にVimiumで操作が可能です!Notionなんかはサービス側で用意したキーバインドに操作が吸われることがあってVimium使えないんだが?と思う方もいるかもですが、いったんESCして編集状態から抜ければ普通にVimium操作可能です。ぜひお試しを!!

WezTerm

2023年時点では最強ターミナルエミュレーターじゃないですかね?
移行前はkittyというターミナルエミュレーターを使っていたんですが、フォント周りでLinux/Macコンパチブルにするのが難しく、移行を断念したときにたまたま見つけたのがWezTermでした。
流行りのGPU-acceleratedなRust製のアプリで、設定ファイルを編集したら即時反映してくれるとか、VSCodeでおなじみコマンドパレット対応とか、機能盛りだくさんでカスタマイズ性も高いので、もし標準ターミナルとかiTerm2とかを使っているなら、業務の手をいったん止めても移行してみる価値はあるんじゃないかなーと思ったりします。
ターミナルの中で動かすのは普通にzshとneovimなので割愛。
冒頭で2ストロークの話を全面に出してたのに、たいして活用されてねーじゃねーか!と思った方もいるかもですが、本番はneovimの設定でした!まあ2ストロークではなく3ストロークがメインですが、大した設定はしていないものの、キーバインドだけはかなりマメに設定しており、かつ入力状況がわかるようにしています。which-key超オススメです👍

まとめ

まず、ここまで読んでくれた方は大変お疲れ様でした!長々と失礼しました🙇

一応本記事の内容は環境コンパチブルなポータブルな設定ということを重視しているので、ほとんどの設定はdotfiles化してあります。よければ参考にしてみてください!
hagiyat/dotfiles

文中でさらっと書きましたが、肝心なのはキーボード操作ではなく、コンセプトを定めて、環境が変わろうがなんだろうが、それに沿って改善し続けることです!
この記事が誰かのお役に立てたのであれば幸いです🙏

そして今更ですが、こちらの記事はなんと MOSH Advent Calendar 2023 14日目の記事だったのです・・!
明日は Miyashita Rino さんです!お楽しみに😀

おまけの追記

この記事を社内で紹介したところ、ものすごく興味深いフィードバックがもらえました😆
なんとアプリケーションによらずVimium操作ができるという夢のようなツールがあるとのことです・・!
https://www.homerow.app/
デモで紹介されているようにXcodeで使うのもいいですし、ブラウザでもDevToolsのUIはVimiumで操作することはできないので、それに使うのも良さそうです!素晴らしいですね!!

脚注
  1. なんでMacにするの?Linuxは使えなかったの?と疑問に思う方もいるかもなので一応補足すると、たぶん使えたけどあえてMacにしたという感じです。なぜかというと、これまでも無理押ししてLinuxを使わせてもらってきた結果、スタートアップにつきものな上場準備みたいなイベント時、超少数派を考慮した社内統制を作るのは面倒だし、多大な負担をかけることになってしまうのですよね・・。現職で具体的にそういった動きが直近あるかどうかはともかく、いざというタイミングで要請されてしぶしぶ環境移行するくらいだったら最初から面倒のない状態にしておくのがいいかなーという判断が働いた感じです! ↩︎

  2. ある程度というのはやっぱりCmdキー/Ctrlキー問題です!CtrlキーはOS関係なく死んでもAキーの左にするというのは徹底しているので、ホームポジションからスッと小指を左にずらすだけで届くのでめちゃくちゃ快適です。が、同じくホームポジションを維持したい場合、Cmdキーは左手小指か薬指を折りたたんで押すことになるので、本当に窮屈なんですよね、、
    Cmdキーのあの配置は、あくまでもマウスを握った状態で快適にキーボードショートカットを快適に操作できるかということにフォーカスしているということですねー。 ↩︎

Discussion

kkddkkdd

こんにちは。
Ctrlキーは、Aの左横へ割り当てたのでしょうか?(キーボードにもよると思いますが)

hagiyathagiyat

コメントありがとうございます!
ですね。OSによらずCtrlキーはAの左が使いやすいと思います👍