概要
この記事は # ミライトデザイン Advent Calendar 2023 16日目の記事です。(@hirodragon さんが間に合わなかったので代わりに書いてます笑 楽しみにしていた方は19日までお待ちください🙏)
昨日は @Nyokki さんの記事でした。
DBパーティショニングは勉強した時に知識としてはありますが、実際の業務で扱ったことがなかったのでとても参考になりました!いつか仕事で使ってみたいです。
さて、今日の記事のネタですが私のメインPCを MacBook Pro (13-inch, 2018, Thunderbolt 3ポートx 4) から MacBook Pro (14インチ, M3, Nov 2023) に乗り換えました。
前のPCは4年前に買ったので次は4年後に新しいのを買うのだろうということで4年後の私へ環境構築の自動化をクリスマスプレゼントにしたいと思います🎄
本当は書きたい記事がありましたが、思った以上に壮大になってしまったので来年に持ち越します。(そのため緊急で記事を書いています)
あと1週間前のたくまくんのネタとモロ被ってます。
ソースコード
- https://github.com/ucan-lab/ansible-mac/releases/tag/v1.0.0
- https://github.com/ucan-lab/dotfiles/releases/tag/v1.0.0
新しいMacはこれからう使い始めるので本記事の執筆時点のコミットを v1.0.0
とタグ付けしておきました。
参考にしてもらって構わないですが、私のための環境なので不要なツールとか削ってお使いください🙏
dotfiles について
今回の主題じゃないので説明は軽く済ませます。
.zshrc
や .gitconfig
などのファイルを dotfiles
の名称のリポジトリ名で管理する慣習(?)があります。
色んな人の dotfiles
を参考にして世界に一つだけの dotfiles
を作ってみてください!
ただ、いきなり全部入れても使いこなせないので、慣れたら少しずつ増やしていくのが良いと思いますネ
ansible について
RedHat社が開発しています。
プロビジョニング、構成管理、アプリケーションのデプロイメント、オーケストレーション、その他多くのITプロセスを自動化するツールです。
AnsibleではPlaybookというYAML形式のファイルに一連のタスクを管理していきます。
ansible-mac 構成
.
├── inventory.ini # 環境毎で書き換えるファイル
├── inventory.ini.example
├── playbook.yml
├── requirements.yml
└── roles
├── homebrew
│ └── tasks
│ └── main.yml
├── homebrew_cask
│ └── tasks
│ └── main.yml
└── mac_app_store
└── tasks
└── main.yml
dotfiles 構成
.
├── .config
│ └── starship.toml
├── .gitconfig
└── .zshrc
- dotfiles のGitHubリポジトリは事前に作成しておく必要があります。
事前準備
- Xcode CLIのインストール
- Homebrewのインストール
- GitHub SSH 接続 設定済み
-
dotfiles
リポジトリは準備済み
$ xcode-select --install
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ brew -v
Homebrew 4.1.25
$ ssh -T github.com
Hi ucan-lab! You've successfully authenticated, but GitHub does not provide shell access.
実行手順
$ cd ansible-mac
ansible-mac を fork でも new repository でもいいのでリポジトリ作って、git clone してください。
inventory.ini
ファイルを作成する
$ cp inventory.ini.example inventory.ini
ansible_become_user
と dotfiles_repo_local_destination
を設定してください。
[all:vars]
ansible_become=true
ansible_become_user=your_mac_user_name
dotfiles_repo_local_destination=/path/to/dotfiles
dotfiles
のパスはどこでも大丈夫です。
また、なければcloneされるのでなくてもいいです。
dotfiles
ディレクトリが存在する場合は、git commit されてないとエラーになるので作業中のファイルは置かないようにしてください。
Ansible Galaxy からロールをインストールする
Ansible Galaxy は他の人が作ったロールを検索、ダウンロード、共有できる無料のサービスです。
$ ansible-galaxy install -r requirements.yml
-
dotfiles
のロールを使いたかったのでここでインストールしています。
$ ansible-playbook playbook.yml -i inventory.ini -K
-
-i
で inventory ファイルを指定 -
-K
でユーザーパスワードを入力する- (インストール途中でパスワード入力を求められないという理解で良いか?)
ansible-playbook
コマンドで playbook.yml
に書かれたタスクが順次実行されます。
エラーが出なければMacの環境構築完了です。
補足
環境構築時にインストールしたツール類をご紹介します。
Homebrew ツール紹介
-
asdf
- バージョン管理ツール(Node, Ruby等々)
-
bat
-
cat
コマンドの代替でハイライトして表示してくれる
-
-
direnv
- ディレクトリ毎に環境変数を読み込む
-
eza
-
ls
コマンドの代替でハイライトして表示してくれる
-
-
fd
-
find
コマンドの代替で高速かつ直感的にファイル検索できる
-
-
gh
- GitHub CLI
-
git
- Git
-
git-delta
-
diff
コマンドの代替ツール -
git diff
,git show
,git blame
などの差分が見やすくなります。
-
-
go-task
- タスクランナー・ビルドツールです
-
Taskfile.yml
YAML形式でシンプルにビルドタスクを記述できます。
-
helix
- テキストエディタ
-
jq
- JSON を整形したり検索したりすることができます。
-
lazygit
- GitのTUIツールです。
-
mas
- Mac App Store 用のCLIツールです。
- Homebrewで管理されていないアプリをインストールできます。
-
ripgrep
-
grep
の代替で、デフォルトで.gitignore
に書かれたファイルを除外してくれたり便利
-
-
starship
- クロスシェルプロンプトツール
-
trash-cli
-
rm
の代替で誤って削除した時に元に戻せる
-
-
zoxide
-
cd
の代替で絶対パスや相対パスを指定せず、ディレクトリ名の一部だけで利用頻度の高いパスへパパっと移動できる
-
-
zsh
- macOS Catalina以降はデフォルトシェルがbashからzshに変更されている
-
zsh-autocomplete
- zshのリアルタイム先行入力自動補完ツール
-
koki-develop/docker-tags
- Docker Hubに登録されているDockerイメージのタグ一覧を取得するコマンド
- 公式にコマンドが用意されていないので重宝しています
Homebrew Cask ツール紹介
-
1password
- パスワード管理ツール
-
discord
- チャットツール
-
firefox
- ブラウザ
-
google-chrome
- ブラウザ
-
iina
- 動画再生ツール。QuickTimePlayerだと5秒前後にスキップができなかったり使いづらい
-
notion
- Notion
-
obsidian
- メモアプリ
-
orbstack
- Docker for Macの代替
-
phpstorm
- PHP統合開発環境。PHP開発者は必須。有償アプリ
-
postman
- HTTPリクエストツール
-
pushplaylabs-sidekick
- ブラウザ
-
raycast
- ランチャー
- https://zenn.dev/lclco/articles/45d2a49650ebf9
- SpotlightやAlfredのようなもの
-
sequel-ace
- MySQL GUIクライアントツール。Sequel Proの後継。
-
slack
- Slack
-
rectangle
- ウィンドウリサイズツール
- spectacle の後継
-
the-unarchiver
- ファイル展開ツール
-
transmit
- FTPツール。有償アプリ
-
visual-studio-code
- エディタ
-
warp
- ターミナル
-
zoom
- ミーティングアプリ
-
font-fira-code
- プログラミング用フォント
- iandol/adobe-fonts/font-source-code-pro
Mac App Store ツール紹介
感想
Ansibleを初めて使いましたが、
コマンド1回叩けばあとは待つだけで良いのでとても便利でした。
Xcodeなどダウンロード時間かかるものとかもまとめてインストールできるのは嬉しいです。
Macのシステム設定もAnsibleから設定できるそうですが、なぜか反映されなかったので一旦保留にしてます。