パフォーマンスを最大化するためのMac初期設定
5年ぶりにMacを買いました。
備忘録を記すにはいい機会なので、初めにやっておくべき初期設定や環境構築をまとめておきます。
前提としてミニマリズムを尊重します。使わないものは入れないし設定しません。その関係で、極力デフォルト設定を優先します。最適なUXのために開発者が考え抜いた結果をまずはリスペクトしたい。
最初から全ての環境や設定の最適化を目指すことは困難ですが、可能な限りエッセンシャルな環境設定を目指します。
修正や追加があれば随時更新します。
デバイス環境
- Mac
- Mac Mini / Apple M2 Pro / 16GB / 512GB / Ventura 13.5
- ディスプレイ
- LG 40WP95C-W
- キーボード
- HHKB Professional2
- マウス
- logicool MX ERGO
- スマホ
- Google Pixel 8
他にもありますが、今回の設定に関連するのはこんなもんです。
Macは好きですがiPhoneは好きになれません。
システム設定
MacOS標準のシステム設定アプリの基本的な動作設定から始めます。
- 外観
- 外観モード:
自動
- 外観モード:
- アクセシビリティ
- キーボードショートカットを使ってズーム:
オン
- キーボードショートカットを使ってズーム:
- SiriとSpotlight
- Siriに頼む:
オフ
- Siriに頼む:
- デスクトップとDock
- Dockを自動的に表示/非表示:
オン
- ホットコーナー: 右下に
ディスプレイをスリープさせる
- Dockを自動的に表示/非表示:
- ディスプレイ
- Night Shift
- スケジュール:
日の入りから日の出まで
- スケジュール:
- Night Shift
- キーボード
- キーのリピート速度:
最速
- リピート入力認識までの時間:
最短
- キーボードショートカット
- キーボード
- 次のウィンドウを操作対象にする:
⌘ Esc
- 次のウィンドウを操作対象にする:
- キーボード
- キーのリピート速度:
- マウス
- 軌跡の速さ:
最速
- 軌跡の速さ:
Zsh
Zshフレームワークを入れます。フレームワーク使っても使わなくてもいいと思いますが、僕は管理コストを最小限にするため入れてます。
以前はPreztoを使ってましたが、より高速と言われるzimを使います。
インストールするとホームディレクトリ配下に以下の隠しファイル群が作成されていることが確認できます。
-rw-r--r-- 1 yukichi staff 54782 4 4 12:47 .zcompdump
-rw-r--r-- 1 yukichi staff 57881 4 4 12:47 .zcompdump.dat
-r--r--r-- 1 yukichi staff 131344 4 4 12:47 .zcompdump.zwc
drwxr-xr-x 7 yukichi staff 224 4 4 12:47 .zim
-rw------- 1 yukichi wheel 1574 4 4 12:47 .zimrc
-rw------- 1 yukichi staff 1105 4 4 13:35 .zsh_history
drwx------ 7 yukichi staff 224 4 4 13:16 .zsh_sessions
-rw------- 1 yukichi wheel 3587 4 4 12:47 .zshrc
.zim
.zimrc
.zshrc
あたりをバージョン管理したいですね。
zimのmodulesやZshの更なる設定については今回必須ではないため割愛。
Package Manager
アプリのインストールは可能な限りHomebrewを使ってコマンドラインから行います。
理由はApp Store経由でインストールできるアプリが少ないからです。App Storeによるアプリ管理方法を主体としてもカバーしきれません。
また、インストールしたアプリやコマンドラインツールの一覧(Brewfile
)をバージョン管理したいというのも理由にあります。
インストールすると次の指示が出力されます。
==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/yukichi/.zprofile
指示に従い .zprofile
を作成して完了です。
Applications
前述の通り、アプリのインストールは原則Homebrew経由で実行し管理します。
brew install --cask google-chrome
ものによっては、HomebrewのCaskに登録されていないものもあります。
ではどうインストールするかというと、パターンとしては以下のいずれかになります。
- App Storeでダウンロード可能
- 製品サイトからダウンロード可能
では、個人的マストアプリをリストアップします。
Apidog
以前は、HTTPクライアントとしてPostman、API設計ツールとしてStoplightの2つを使っていました。
AppCleaner
アンインストールはHomebrewでやりますが、以下のSmartDelete設定を有効にしておくと、アプリ削除を検知して勝手に関連ゴミファイルをクリーンアップしてくれます。
変更した設定
- Preferences
- SmartDelete:
ON
- SmartDelete:
Arc
エンジニアに関わらず大抵のPCユーザーは、ブラウザアプリを触っている時間長いですよね。これ使うためにMac買うべきと言っても過言ではない。
Google Chromeを長年使っていましたが、とにかくタブがごちゃごちゃする問題が発生します。これを解決するためにworkonaというタブマネジャー拡張機能を使っていて満足してましたが、Arcは全てを解決しさらに期待を超えてきました。
ChromiumをベースにしているためChrome拡張機能も普通に使えます。設定周りもほぼChromeと同様です。ブックマークや拡張機能、保存パスワードなどが同期されるわけではなくインポートする形式なのは注意です。
変更した設定
- Preferences
- Max:
Turn on all
- Max:
Bitwarden
これといってこだわりがないので、無料でオープンソースのBitwardenに注目。
PCのArc/Chromeでも、スマホのChromeでも、クラウド同期による同じようなユーザー体験が可能となります。
フォルダ整理もできるし、ID/PASSWORD以外の第三の入力フォームがあるようなケースにも対応できるし、一つのアカウントに複数のサイトURLを設定できてログインページとアプリページのURLが異なるケースにも対応できるし、Chromeのそれより全然よかった。
Cursor
Visual Studio Codeをforkして開発されているため見た目・操作感ともにとっつきやすい。
これまでは有料ライセンスのJetBrainを愛用してきましたが、VSCodeに移ろうかなと思ってたところだったので、さらに進化したCursorを使うことにします。
DeepL
テキスト選択からのグローバルホットキーで素早く起動翻訳できます。
そんなに使ってないが、必要ないかと言われると必要。
Docker
ローカル環境で開発するなら昨今コンテナは必須でしょう。
Dropbox
MacOS標準のFinderアプリとリンクしてオンライン同期フォルダを扱えるようになるので、ファイルバックアップやデバイス間同期に重宝します。
Finder (MacOS標準)
変更した設定
- 表示
パスバーを表示
ステータスバーを表示
Kindle (App Storeのみ)
技術書はKindleデバイスで読むのは無理があるので、PCで読みます。
ブラウザでも読めますが、コード書きながら読んだりするとアプリ切り替えしたくなります。
Linear
ほぼ全てのアクションにエンジニアが大好きなショートカットが使えます。
GithubやFigmaなどの主要な開発サービスとも連携可能。
Logi Options+
MX ERGOというトラックボールマウスを使う上では必須です。
一つのマウスで数十のアクションをこなせます。超基本的な操作だけならキーボード使わなくても間に合います。
もう手放せなくなってしまいました。
Notion
色々な用途に使える汎用性の高さゆえに、あらゆる情報をここに集約することが可能です。メモ、ドキュメント、タスク、カレンダーなどなど。
こうまでなんでもできるとあらゆる情報をNotionで管理したくなりますが、あえて用途ごとに複数のアプリを利用することでコンテキスト境界を分けた方が、結果的に頭が整理され使いやすくなると思います。
僕の場合、PIM(Personal Information Management)の道具として利用しています。
Notion Calendar
デザインがすっきりしていて無駄なく好印象です。
Notionのデータベースと連携できるが、別に連携しなくても困らないかな。プロジェクトや仕事の予定をNotionで管理しているなら活用できそうです。
ブラウザのGoogleカレンダーとの違いで残念だったのは、ToDoリストが表示できないこと。他のカレンダーは表示できるんですけどね。
Obsidian
個人的にNotionとは用途を区別していて、PKM(Personal Knowledge Management)用途。
類似サービスのScrapboxよりは使いやすく感じるが、データのクラウド同期が有料機能であるため、基本的にはダウンロード型のツールとなります。
なので、僕はVault(保管庫)にDropboxフォルダを指定し、スマホと同期できるように設定しています。
変更した設定
- Preferences
- Files and links
- Default location for new attachments:
In the folder specified below
- Attachment folder path:
attachments
- Default location for new attachments:
- Core plugins
- Properties View:
ON
- Properties View:
- Files and links
Pocket (App Storeのみ)
旧称:Read It Later。ブクマツールとして使用している人も多い印象だが、リーディングリスト管理ツールとしてのみ使用。
Raindrop.io
Chromeのブックマークはもう使ってないし、Arcはブックマークの概念がありません。
Raycast
RaycastとかAlfredとかのランチャーアプリはとかく機能が多く、効率とか生産性を上げることに最も貢献できるアプリです。
UIはとてもスッキリしており、ひたすら設定が必要なアプリにも関わらず、苦になるどころか楽しい。
便利なのは、スニペット、クリップボード、画面分割、ショートカットによるアプリや設定項目の呼び出し、電卓など。
なお、Extensionをストアからダウンロードすればより多くの機能が使えるし、Extensionを自分で開発すれば社内ツールとか個人用のツールまで用意できます。
ちなみに僕は元々Alfred、 Clippy、 Magnetを使ってましたが、全ての用途をRaycastに乗り換えました。
変更した設定
- Commands
- Raycast
- Create Quicklink: 適宜作成。Web URLを開くショートカットキーを設定できる。URLに変数を持たせて実行時に指定することもできる。
- Snippets
- Create Snippet: 適宜作成。一般入力との衝突を避けるため
;mail
などプレフィックスに記号;
を使って設定する。
- Create Snippet: 適宜作成。一般入力との衝突を避けるため
- Raycast
- Settings
- Extensions
- Add
- Install From Store
Arc
Obsidian
Raindrop.io
- Install From Store
- Applications
- Bitwarden:
⌥ B
- Finder:
⌥ F
- Slack:
⌥ S
- Spark Desktop:
⌥ M
- Twitter:
⌥ X
- Warp:
⌥ W
- Bitwarden:
- Arc
- Search Arc:
⌥ A
- Search Arc:
- Clipboard History:
⇧ ⌘ V
- Quicklinks
- Search Google:
⇧ ⌘ G
- Search Google:
- Raindrop.io
- Search Bookmarks:
⌥ R
- Search Bookmarks:
- Snippets
- Search Snippets:
⇧ ⌘ S
- Search Snippets:
- Window Management: 画面分割のホットキーを設定。原則Magnetのデフォルトキーを参考にする。
- Add
- Advanced
- Auto-switch Input Source:
ABC
- Auto-switch Input Source:
- Extensions
Slack
ビジネスコミュニケーションツールのデファクトスタンダードですね。
TablePlus
これまでデータベースの種類に応じて、MySQL Workbench、Squel Pro、Postico、Medis、JetBrainの機能などを使ってきたがこれら全て置き換えてしまう。
公式サイトにも
Supports a whole set of relational databases (and some NoSQL)
とあり、Amazon REDSHIFTやGoogle BigQueryなどのクラウドDWHまでカバーしている。
これだけのことができるとだけあって有料ライセンスが必要です。
Twitter (App Storeのみ)
ホームはノイズも多いのでリスト機能を使ってタイムラインを区分してます。
以前はTweetDeckというアプリがあって使い勝手が良かったですが今ではTwitter本体に吸収され残念ながら有料機能となりました。
Warp
見た目もおしゃれでこれまでのターミナルの概念を覆します。
iTerm2をずっと使ってきましたが、快適さとか生産性を上げるために設定いじったりtmuxやtmuxinator入れたりしてました。
Warpはとりあえず使い始めるだけでも、欲しい機能やデザインが備わってます。
Rustで書かれていてサクサク動くのもいい。
変更した設定
- Settings
- Appearance
- Prompt:
Warp prompt
- Text
- Font size:
12
- Font size:
- Prompt:
- Keyboard shortcuts
- Move Forward One Word:
⌥ F
- Move Backward One Word:
⌥ B
- Move Forward One Word:
- Appearance
Wrike
開発以外の業務でのタスク管理で使っています。
UI/UXが洗練されていて、柔軟性が非常に高いです。有料プランもありますが、無料でも十分使えます。
有料で嬉しい機能は、ダッシュボード機能、動的ガントチャート、カレンダー機能あたりかな。
Command Line Tools
前述の通り、コマンドのインストールも原則Homebrew経由で実行し管理します。
もっとありますがマストだと思うものを厳選しました。
git
プライベートレポジトリに接続するために認証鍵をGithubに登録します。
-
SSHキーを作成
ssh-keygen -t ed25519 -C "メールアドレス" pbcopy < ~/.ssh/id_ed25519.pub
-
GithubアカウントにSSHキーを追加
Key typeは「Authentication Key」を選択。 - 接続確認
git clone git@github.com:プライベートレポジトリ.git
それから、初期設定もやっておく。
git config --global user.name "お名前"
git config --global user.email メールアドレス
git config --global core.editor vim
ghq
デフォルトではホームディレクトリ配下の ghq
ディレクトリにcloneしたレポジトリが格納される。
こんな感じ
/Users/yukichi/ghq/github.com/uqichi/dotfiles
fzf
pecoよりもファジーに検索可能。
ghq
や history
コマンドと組み合わせて、ショートカットでインクリメンタルに選択した結果をバッファに呼び出すtipsが有名ですね。
jq
シンタックスハイライトありで見やすくなります。
tig
CUI gitクライアント。
eza
ls
であるexaの後継。
exaはメンテが終了してます。代わりにezaを使えとのこと。
bat
cat
より見やすいです。
ripgrep
grep
。
fd
find
の一部機能がより使いやすくなります。
direnv
グローバル変数を汚さなくて済むので便利。
pwgen
パスワード生成に最適なランダム文字列生成ツール。
Discussion