Macbookの環境構築2025年3月
OSはSequoia(15.3.2)
生成AIのおかげで、ちょっとしたシェルスクリプトがサクッと作れて良い。
Arcの移行が大変だった。
システム環境設定
- 「トラックパッド」>「ポイントとクリック」>「タップでクリック」
- 「トラックパッド」>「ポイントとクリック」>「軌跡の速さ」
- 「アクセシビリティ」>「ポインタコントロール」>「マウスとトラックパッド」>「トラックパッドオプション」>「ドラッグを有効にする」>「3本指のドラッグ」
- 「アクセシビリティ」>「ディスプレイ」>「カーソルのサイズ」
- 「キーボード」>「キーのリピート」と「リピート入力認識までの時間」を一番右側へ
- 「キーボード」>「環境光が暗い場合にキーボードの輝度を調整」をオフ
- 「キーボード」> 「キーボードの輝度」を最低にする
- 「ディスプレイ」>「Night Shift」
- 「デスクトップとDock」>「Mission Control」>「最新の使用状況に基づいて操作スペースを自動的に並べ替える」をOFF
- 「ロック画面」>「バッテリー駆動時に使用していない場合はディスプレイをオフにする」>「30分間」
- 「Spotlight」>「キーボードショートカット」> Spotlight検索のショートカットキーを無効化
- 「コントロールセンター」>「Bluetooch」>「メニューバーに表示」
- 「Touch ID」> 指紋を追加
Google Chromeをインスール
Safariを開いて、Google Chromeを手動でインストール。
起動→ログインして、過去に使っていたブックマークや拡張機能を使えるようにする。
キーボードをカスタマイズ
Karabiner-Elementsをインストール
「システム環境設定」>「キーボード」>「修飾キー」より、優先するキーボードと修飾キーを設定する。
入力切り替え(日⇄英)の設定
(US配列のキーボードを使っているので)左のcommandキーで英字、右のcommandキーで日本語入力に切替えられるようにする。
その他キーを自分好みにカスタマイズ
Raycastをインストール
- General > Raycast Hotkey > 「Ctrl + L」
- General > Window Mode > 「Compact」
- Advanced > Auto-switch Input Source > 「ABC」
- Advanced > Pop to Root Search > 「Immediately」
- Advanced > Show Raycast on > 「Primary screen」
- Extensions > 不要な拡張機能のEnabledのチェックを外す
- Difine Word, My Schedule, Raycast for Teamsなど
- Extensions > 必要な拡張機能をインストールする
- Brew、Cursor、Spotify、
- Extensions > よく使うアプリにエイリアスをつける
- メモ帳、chrome、ターミナル、システム環境設定など
Dropboxをインストール
-
Brewfile
、Brewfile.lock.json
、dotfiles
、settings
のオフラインアクセスを許可する
Finderの設定
- 「環境設定」>「一般」>「Finder新規ウィンドウで次を表示」
- 「環境設定」>「詳細」>「すべてのファイルの拡張子を表示」
- 「環境設定」>「サイドバー」
- Dropbox、ダウンロード、ホームディレクトリ、スクリーンショット、iCloud Drive、ハードディスクあたりを表示
- 主要なディレクトリを開き「カラム」表示で「追加日」順にファイルを並べるように設定
Homebrewをインストール
にアクセスして、インストール用のコマンドをコピー→ターミナルで実行
Brewfileでアプリを一括インストール
$ cd ~/Dropbox
$ brew bundle
Cursorをインストール
Brewfileでインストールしようと思ったけど、なんか失敗したから手動で入れた。
以下で設定を復元
$ zsh ~/Dropbox/settings/setup-cursor.sh
setup-cursor.sh
#!/bin/bash
# settings.jsonの設定
rm -rf "$HOME/Library/Application Support/Cursor/User/settings.json"
ln -s "$HOME/Dropbox/settings/cursor/settings.json" "$HOME/Library/Application Support/Cursor/User/settings.json"
# keybindings.jsonの設定
rm -rf "$HOME/Library/Application Support/Cursor/User/keybindings.json"
ln -s "$HOME/Dropbox/settings/cursor/keybindings.json" "$HOME/Library/Application Support/Cursor/User/keybindings.json"
# snippetsの設定
rm -rf "$HOME/Library/Application Support/Cursor/User/snippets"
ln -s "$HOME/Dropbox/settings/cursor/snippets" "$HOME/Library/Application Support/Cursor/User/snippets"
# .cursorディレクトリの設定(拡張機能、mcpの設定など)
rm -rf "$HOME/.cursor"
ln -s "$HOME/Dropbox/settings/cursor/.cursor" "$HOME/.cursor"
デフォルトアプリの設定
.txt
とか.json
とか、各種ファイルがCursorで開くように設定。
1つずつ手動でやると面倒なので、duti
を使ったスクリプトを実行。
$ zsh ~/Dropbox/settings/setup-default-app.sh
setup-default-app.sh
duti -s 'com.todesktop.230313mzl4w4u92' .css all
duti -s 'com.todesktop.230313mzl4w4u92' .rb all
duti -s 'com.todesktop.230313mzl4w4u92' .php all
duti -s 'com.todesktop.230313mzl4w4u92' .js all
duti -s 'com.todesktop.230313mzl4w4u92' .json all
duti -s 'com.todesktop.230313mzl4w4u92' .sh all
duti -s 'com.todesktop.230313mzl4w4u92' .txt all
duti -s 'com.todesktop.230313mzl4w4u92' .md all
duti -s 'com.todesktop.230313mzl4w4u92' .csv all
dotfile周りの設定
.vimrc
とか.zshrc
とかを一括で復元するスクリプトを実行。
$ zsh ~/Dropbox/settings/setup-dotfiles.sh
setup-dotfiles.sh
#!/bin/bash
FILES=(
.bashrc
.gitconfig
.vimrc
.zlogin
.zlogout
.zpreztorc
.zprofile
.zshenv
.zshrc
)
DIRS=(
.vim
.zprezto
)
echo "ファイルを削除"
for file in "${FILES[@]}"; do
if [ -e "$HOME/$file" ]; then
rm "$HOME/$file"
echo "Deleted: $HOME/$file"
else
echo "Not found: $HOME/$file"
fi
done
echo "ディレクトリを削除"
for dir in "${DIRS[@]}"; do
if [ -e "$HOME/$dir" ]; then
rm -r "$HOME/$dir"
echo "Deleted: $HOME/$dir"
else
echo "Not found: $HOME/$dir"
fi
done
echo "ファイルのシンボリックリンク作成"
for file in "${FILES[@]}"; do
ln -s "$HOME/Dropbox/dotfiles/$file" "$HOME/$file"
echo "Created symbolic link: $HOME/$file -> $HOME/Dropbox/dotfiles/$file"
done
echo "ディレクトリのシンボリックリンク作成"
for dir in "${DIRS[@]}"; do
ln -s "$HOME/Dropbox/dotfiles/$dir" "$HOME/$dir"
echo "Created symbolic link: $HOME/$dir -> $HOME/Dropbox/dotfiles/$dir"
done
Dockを整理
- 不要なアプリを削除
- 必要なアプリを追加
- 「Dock環境設定」>アイコンのサイズを小さめに
- 「Dock環境設定」>「Dockを自動的に表示/非表示」
CleanShotを有効化
CleanShot License Managerにアクセスし、既存のライセンスを割り当てて(or新たなライセンスを購入して)dmgファイルをダウンロード→インストール→初期設定する。
- Preference > General > Startup >「Start at login」
- Preference > General > Export location > スクリーンショットを保存したいフォルダを設定
ターミナルのカラーテーマをiceburgに変更
以下にアクセスし「Iceberg for macOS」よりダウンロード。
macOS Sequoiaだとファイルがうまく開けなかったので、以下で対応。
MonitorControl
アプリを起動し、システムの実行許可とかを与える。
設定で、「ログイン時に起動」をONに、「メニューアイコン」を「常に隠す」にする。
OrbStack
アプリを起動し、システムの実行許可とかを与える
設定で「Stasrt at login」をON、「Show in menu bar」をOFFにする。
TablePlus
エクスポートしておいた、接続情報のファイルをインポート
アクティベーションキーを使ってアクティベート
Pomodoro Timer for ADHD
AppStore経由 & 課金が絡むからか、masを使ったインストールに失敗したので、App Storeから手動でインストールした
Arcの設定
Chromeとかと違って、Arcは移行がくそめんどいことが分かった。
設定ファイル移行のスクリプトとかも作ってみたけど、うまくいかなかった。
結局以下で対応した。
ブックマーク、Space
設定で「Sync Sidebar」をONにしていれば、Arcを起動してログインしただけで勝手に同期される
設定
手動で移行。
- 「general」>「Automatically update my Arc」をONに
- 「Max」>「Tidy Tabs」以外全部OFFに
- 「Shortcuts」>「Tab Switcher (forward)」に
Ctrl + M
を割り当て - 「Icon」から、好きなアイコンに変更
拡張機能
旧Macで、拡張機能一覧とダウンロードリンクをHTMLに吐き出すスクリプトを実行
$ zsh ~/Dropbox/settings/arc-ext-export.sh
arc-ext-export.sh
#!/bin/bash
# Arcの拡張機能リストを生成するスクリプト
# Arcのデータディレクトリ
ARC_DATA=~/Library/Application\ Support/Arc/User\ Data/Default
# 拡張機能ディレクトリ
EXT_DIR="$ARC_DATA/Extensions"
# 出力ファイル
OUTPUT_FILE=~/Dropbox/settings/arc_extensions.html
# HTMLファイルのヘッダー
echo '<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Arc拡張機能リスト</title>
<style>
body { font-family: Arial, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; }
.extension { margin-bottom: 20px; padding: 10px; border: 1px solid #ddd; border-radius: 5px; position: relative; }
.name { font-weight: bold; font-size: 18px; margin-left: 40px; }
.id { color: #666; font-family: monospace; margin-left: 40px; }
.install-btn { display: inline-block; margin-top: 10px; margin-left: 40px; padding: 5px 10px; background: #4285f4; color: white; text-decoration: none; border-radius: 3px; }
.number { position: absolute; top: 10px; left: 10px; background: #f1f1f1; padding: 5px 10px; border-radius: 50%; font-weight: bold; }
</style>
</head>
<body>
<h1>Arc拡張機能リスト</h1>
<p>以下のリンクをクリックして拡張機能をインストールしてください。</p>' > $OUTPUT_FILE
# 拡張機能ディレクトリが存在するか確認
if [ ! -d "$EXT_DIR" ]; then
echo " <p>拡張機能ディレクトリが見つかりません。</p>" >> $OUTPUT_FILE
echo "</body></html>" >> $OUTPUT_FILE
echo "拡張機能ディレクトリが見つかりません: $EXT_DIR"
exit 1
fi
# カウンター初期化
counter=1
# 各拡張機能のIDとマニフェスト情報を取得
for ext_id in $(ls "$EXT_DIR"); do
if [ -d "$EXT_DIR/$ext_id" ]; then
# 最新のバージョンディレクトリを取得
version=$(ls -1 "$EXT_DIR/$ext_id" | sort -V | tail -1)
if [ -n "$version" ]; then
manifest_file="$EXT_DIR/$ext_id/$version/manifest.json"
if [ -f "$manifest_file" ]; then
# マニフェストからnameを取得
name=$(grep -o '"name": "[^"]*"' "$manifest_file" | head -1 | cut -d'"' -f4)
# __MSG_extName__形式の名前を処理
if [[ "$name" == *"__MSG_"* ]]; then
# _locales/en/messages.jsonからの名前取得を試みる
locale_file="$EXT_DIR/$ext_id/$version/_locales/en/messages.json"
if [ -f "$locale_file" ]; then
# メッセージキーを抽出 (__MSG_extName__から extName を取得)
msg_key=$(echo "$name" | sed -n 's/__MSG_\(.*\)__/\1/p')
# messagesファイルから該当するメッセージを取得
actual_name=$(grep -A 5 "\"$msg_key\"" "$locale_file" | grep "message" | head -1 | cut -d'"' -f4)
if [ -n "$actual_name" ]; then
name="$actual_name"
else
# 英語がなければ他の言語を試す
for lang_dir in $(ls "$EXT_DIR/$ext_id/$version/_locales/"); do
locale_file="$EXT_DIR/$ext_id/$version/_locales/$lang_dir/messages.json"
if [ -f "$locale_file" ]; then
actual_name=$(grep -A 5 "\"$msg_key\"" "$locale_file" | grep "message" | head -1 | cut -d'"' -f4)
if [ -n "$actual_name" ]; then
name="$actual_name"
break
fi
fi
done
fi
fi
# それでも名前が取得できなければ、拡張機能IDを使用
if [[ "$name" == *"__MSG_"* ]]; then
name="拡張機能 (ID: $ext_id)"
fi
fi
# Chrome Web Storeのリンクを生成
echo " <div class='extension'>
<div class='number'>$counter</div>
<div class='name'>$name</div>
<div class='id'>ID: $ext_id</div>
<a class='install-btn' href='https://chrome.google.com/webstore/detail/$ext_id' target='_blank'>インストール</a>
</div>" >> $OUTPUT_FILE
# カウンターを増やす
((counter++))
fi
fi
fi
done
# HTMLファイルのフッター
echo '</body>
</html>' >> $OUTPUT_FILE
echo "拡張機能リストを生成しました: $OUTPUT_FILE"
echo "このHTMLファイルを開いて、各拡張機能のインストールボタンをクリックしてください。"
echo "合計 $((counter-1)) 個の拡張機能が見つかりました。"
新MacのArcで、出力されたHTMLを開いて、拡張機能を1つ1つインストールしていく。
再度に拡張機能の設定をする
- Vimiumの設定を、旧MacのArcからコピペで持ってくる。
- MultiPass for HTTP basic authenticationの設定を、旧MacのArcからコピペで持ってくる。
- 今は数が少ないけど、数が多くなってきたらImport/Export機能を使う
Favoritesの復元
これはスクリプトでの移行が無理だったし、サイトのURLを抽出する方法もわからなかった。
1つのディレクトリで管理してるとか、そういう単純な話じゃなさそう(だから同期機能の対象外になってるんだと思う)。
仕方がないので1つ1つ手動で再構築するしかない。
デフォルトブラウザをArcに設定
システム環境設定 >「デスクトップとDock」>「デフォルトのWebブラウザ」にArcを設定。
よく使うサイトにログイン
Favoritesには登録されてないけど、よく使うサイトにログインしていく
- よく使うGoogleアカウント全部にログイン
- よく使うSlackチャンネル全部にログイン
- Amazon
- GitHub
- Zenn
- note
- Qiita
- X
プログラミング言語をインストール
Ruby(YJIT)
YJITが有効化されたRubyをインストールする
# (YJIT有効化のため)Rustをインストール
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
$ source $HOME/.cargo/env
~/.zshrc
に以下の記述があることを確認
export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"
export LDFLAGS="-L$(brew --prefix openssl@3)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix libyaml)/lib"
export CPPFLAGS="-I$(brew --prefix openssl@3)/include -I$(brew --prefix readline)/include -I$(brew --prefix libyaml)/include"
$ rbenv install --list # インストールできるバージョンを確認
$ RUBY_CONFIGURE_OPTS="--enable-yjit --with-openssl-dir=$(brew --prefix openssl@3)" rbenv install 3.2.4 # YJITが有効化されたRubyをインストール
$ rbenv versions
$ rbenv global 3.2.4 # インストールしたバージョンをデフォルトに設定
$ rbenv rehash
$ exec $SHELL -l
$ ruby -v --yjit
ruby 3.2.4 (2024-04-23 revision af471c0e01) +YJIT [arm64-darwin24]
$ gem install solargraph # Cursorのコードジャンプにsolargraphを使うので、入れておく
Node.js
$ curl https://get.volta.sh | bash # zsh使っててもこれでOK
~/.zshrc
に以下の記述があることを確認
export VOLTA_HOME="$HOME/.volta"
export PATH="$VOLTA_HOME/bin:$PATH" # voltaでインストールしたnodeを使うため、homebrewのパスよりも先($PATHの先頭)に設定する
$ source ~/.zshrc
$ volta --version
$ volta install node # 最新のLTSリリース版をインストール
$ node -v
$ volta install node@22.14.0 # 特定のバージョンのnodeをインストール
$ volta list all # voltaでインストールされたnodeとかnpmとかのバージョン一覧
$ volta pin node@22.14.0 # 今いるプロジェクト(ディレクトリ)で使用するnodeのバージョンを固定
音楽系のデータの移行
Logic Proをインストール
AppStoreからLogicProをインストール。1ライセンスで5台まで使える。
旧MacのLogicのファイルをGoogle Driveにアップロード
旧Macで、~/ミュージック/Logic
にあるファイル一式を、Google Driveにアップロードする。
急ぎで使いたいファイルがあれば新Macにダウンロードする。
.logicxファイルの挙動
ローカルのhoge.logicx
をGoogle Driveにアップロードすると、以下の構造のhogeディレクトリに変換される。
- hoge
- Alternatives
- Resources
- Media
これは、.logicx
ファイルが「パッケージ」と呼ばれる特殊な形式のファイルであることが原因。
.logicx
ファイルは見た目は1つのファイルだけど、実際には内部に複数のファイルやディレクトリを含む「パッケージ」という形式になっている。
macOSではこれを1つのファイルとして扱うが、他のプラットフォームではディレクトリとして認識される。
Google Drive→Macにダウンロードする際には、hogeディレクトリを丸ごとダウンロード→解凍すれば、それがhoge.logicx
になる。
UADプラグインを有効化
前とやり方がやや変わってた。まずは以下より「UA Connect」をインストールして起動。
「Apollo&UAD-2」タブの「UAD Software Installer」のOpenをクリック
↓
「UAD Meter&Control Panel」と「Console」のインストールは完了するけど、「拡張機能がブロックされました」と出てくる。
↓
↓
以下の記事を参考に、Macをシャットダウン→リカバリーモードで起動→起動セキュリティユーティリティ>セキュリティポリシーを「低セキュリティ」に変更して再起動
↓
システム環境設定 > プライバシーとセキュリティ
から、拡張機能を許可
↓
Macが再起動され、インストールした「UAD Meter&Control Panel」と「Console」が使えるようになる。
Apolloを起動しMacに接続し、「Console」でUADのマイクプリアンプを設定したり、Logic Proでコンプレッサー等が使えていることを確認。(今回、動作確認は雑にしかやらなかった)
Project Templatesを移行
旧Macの~/ミュージック/Audio Music Apps/Project Templates
内のファイルを、新Macの同じ場所に設置。
各プロジェクトの開発環境を構築
構築できたら、Finderのサイドバーによく使うプロジェクトのディレクトリを追加する
以上!
Discussion