これが私のmacOSセットアップ(2026年版)〜Ansibleのplaybookも添えて〜

冬休みは結局これに時間を費やしてしまいました。ただ、これはこれで楽しい作業でした。

MacBook Airが新規に手に入った件

昨年末を以て前職を退職をした兼ね合いで、BYODで使っていたMacBook Air(13インチ)が完全にプライベート用のものとして使えるようになりました。
(退職に伴い一切、完全に初期化したので、データ的には新品同様の状態。端末自体は自費で購入していたので今後は自分のものとして使える。)

これまではプライベートの端末としてはMacBook Pro(16インチ)を使っていましたが、イベント参加などの際に持ち運ぶにはなかなか重たくて、辛いものがありました。

それがMacBook Airがプライベート用として使えるようになったので、外出時のプライベート端末として活躍させようと思ってセットアップを始めました。
ただし、せっかくなので現行機からそのままデータをコピーするだけでは味気ないため、MBP(MacBook Pro)とMBA(MacBook Air)の使い分けなども考えてセットアップをしてみたので、その内容をまとめておきます。

2台のMacの使い分けをどうするのか

元来はプライベート用の端末としては、MBPの1台体制でしたが、これは自宅での利用も、外出時の利用も兼ねていたため持ち運びの際にはなかなか重量があって辛いというのが上記までに記載の通り。

今回、MBAが使えるようになったので、2台の中でも役割を分離させてみようかなと思いました。

MacBook Pro (16インチ)

まず、MBPの方なのですが、
正直、購入当時は結構奮発してM2 Maxモデルを購入しました。(YouTube向けの本格的な動画編集などの用途もないにもかかわらず…!)

ただ、そのおかげもあり、3年前のモデルでもありながら、衰えを感じずに使えているのは非常にユーザー体験としてはありがたいです。

いろんな開発検証をするのもサクサクですし、画面も大きい。
また自宅デスクには2枚の4Kディスプレイもあるのでそれと繋ぐと合計で3枚の画面で作業ができる環境を作ることもできます。

なので、こちらには制約設けずひととおりのアプリをインストールして、自宅での作業用として使うことにします。

マシンのパワーのおかげもあってか、Netflixなどの動画視聴やYouTube Liveやtwitchの視聴などのブラウジングも快適にできるので、エンタメ用途にも使っています。

対応ソフトは限られると思いますが、ゲームもなかなか快適にプレイできます。
SteamのmacOS対応タイトルとかやMac App Storeでも『DEATH STRANDING』のような大作も遊べるのはありがたいです。

MacBook Air (13インチ)

MBAの方ですが、こちらは軽量コンパクトさを活かして、外出時の持ち運び用として使うことにします。

Proと比べるととにかく軽いのが嬉しいですし、画面サイズがちょうどいいので肩掛けのバッグにも入るようになったのが嬉しい。
(16インチのProだと流石に大きすぎて、毎回リュックで持ち運ぶ必要がありました。)

そして、次のような方針を立てました。

1. データはすべてクラウドにおく

端末内のデータは常にiCloud Driveベースにして「この端末にしかないデータ」を作らないようにします。
GitリポジトリなどもすべてGitHubなどのリモートに置くようにして、変更があっても常に同期できるようにします。

2. アプリは必要最低限に

基本的には、テックカンファレンスとかイベント参加時にメモを取ったり、ブログを書いたり、開発検証をしたりする用途に絞ろうと思います。
そのため、重たいゲーム、動画編集ソフトなどはインストールせず、エディタやターミナル、ブラウザなどの必要最低限のアプリだけをインストールするようにします。
MBAで『DEATH STRANDING』を遊びたいモチベーションは流石にないですからね…!

3. 環境設定をコード管理して、すぐに復元可能にする

これが冒頭に書いた時間を費やした理由です。
プライベートの端末で2台体制を持てるようになったので、MacBook Airの方は比較的アグレッシブに環境設定をいじったり、アプリを試す。そして、環境が壊れちゃったらすぐに破棄して再構築できるようにしようと思いました。

そのためには何らかのコード管理された体制を作りたいと思い、いろいろ調べて試行錯誤していました。

最終的にはAnsible(構成管理ツール)を使って、macOSのセットアップを自動化する仕組みを作りました。

その詳細について下記にまとめていきます。

自動化したかったmacOSでの設定

Ansibleでコード化するためには、まずは自動化したい設定項目を洗い出す必要があります。
私が自動化したかった設定項目は以下の通りです。

  • 1Passwordのインストール

これが最初に必要ですね。どんなソフトウェアも自動的にインストールできても、ログインするためのID、パスワードは完全にパスワードマネージャーに寄せているので、これがないと始まりません。
ブラウザを立ち上げて、1Passwordの公式サイトを開いて、インストーラーをダウンロードして…というのも案外めんどくさいんですよね。
アプリのインストールができていれば、あとはスマホ上でログイン済みのアプリ経由でログインは簡単にできるので、インストールするところまでは自動化しちゃいたかったです。

  • Homebrewのインストール

これも同様です。公式サイトを開いてインストーラーをダウンロードするという手順自体は造作ないことではあるのですが、使うツールの数だけそういう手順を踏むのが面倒なので自動化したかったです。
最近は別のソリューションも出てきているようですが、個人的にキャッチアップできておらず今回のAnsible化でもHomebrewを使うことにしました。

  • Microsoft Officeソフト群

転職活動はしばらくしないと思うので、WordやExcelなどを使うことはしばらくないでしょう。ただ今後は願わくは積極的に登壇とかもしたいなと思っており、そうするとPowerPointは使う機会が出てくると思うので、これもインストールしておきたかったです。
Mac App Store経由でのインストールすることで、ちゃんと安全が担保された形でインストールできるのですが、homebrew経由のインストールや公式サイトからdmgファイルをダウンロードしてインストールしてくるのとはまた違った手順でちょっと工夫が必要だったので、これはこの後で詳述します。

  • その他愛用しているアプリ群
    • Kiro CLI
    • Claude Desktop
    • ChatGPT
    • Vivaldi
    • Google Chrome
    • Firefox
    • Discord
    • Notion
    • Notion Calendar
    • Docker
    • DeepL
    • Visual Studio Code
    • Setapp

などなど、普段から愛用しているアプリ群のインストールも自動化したかったです。
1Passwordのところにも書きましたけど、公式サイトを開いてインストーラーをダウンロードするという手順がアプリの数だけ増えてくると無視できない手間になってきます。
そのため今回気合を入れて自動化を作った次第です。

  • Dockのカスタマイズ

ここからはちょっとマニアックな、ちょっと凝ってしまった部分です。
「環境が壊れちゃったらすぐに破棄して再構築」をすることを考えると、再構築した時にDock内のアプリ順なども毎回使いやすいように設定し直すのは面倒だなと思いました。
なので、どの順番にどのアプリのアイコンがDockに並ぶか、という設定も自動化に落とし込みました。

Ansibleで実現される内容

以上のような自動化したかった内容を踏まえて、Ansibleで実現した内容は以下の通りです。

  • Homebrewのインストール
  • CLIツールのインストール
  • Mac App Storeアプリのインストール
  • Homebrew Caskアプリのインストール
  • dmgファイルからのアプリインストール
  • zipファイルからのアプリインストール
  • Dockのカスタマイズ

作成したplaybook

作成したplaybookはGitHubで公開しています。
興味がある方はぜひご覧ください。
(また、改善点があればぜひご連絡いただけると幸いです。)

https://github.com/sho-saito/macos-setup

苦労した点・工夫した点

冒頭で時間を費やしたと書きましたが、その理由として次のような苦労や工夫した点がありました。

1. macOS向けのAnsibleに不慣れだった

これは完全に個人によるものです。Ansible自体はクロスプラットフォームで動くツールだということは認識していて、だからこそいつかmacOSのセットアップにも使いたいと思っていました。
ただ、取り掛かってみると不慣れだったのもあり時間はかかってしまいました。
(最初はymlファイル1枚だけでなく色々分割したりして作ろうとしていたのですが、それも面倒だなと思い1枚のymlファイルにまとめるアプローチに戻ったりで時間がかかりました。)

2. 凝り出すと抜け出せない自動化の沼

Dockのカスタマイズは、正直本質的ではないと思います笑
ただ、一度自動化を始めると、あれもこれも自動化したくなってしまい気づいたらDockのカスタマイズまでやってしまっていました。

3. Homebrew Cask経由でのインストール時のエラーハンドリング

Homebrew Caskモジュールを使用して必要なアプリをインストールする際、すでにインストール済みの場合にエラーが発生する挙動がありました。
[ERROR]: Task failed: Module failed: Error: It seems there is already an App at '/Applications/xxxx.appのようなエラーが発生する。)

Ansibleのような構成管理ツールにおいては、期待された状態にすることが目的なので、すでにインストール済みの場合にはそれを正常として扱ってスキップして欲しいのですが、そういう挙動にはならず。
個人的には見た目上美しくない感触があるのですが、下記のようにignore_errors: yesを付与してエラーを無視する形で対応しました。

# Homebrew Caskアプリのインストール(既存アプリのエラーを無視)
    - name: Install applications via Homebrew
      homebrew_cask:
        name: "{{ item }}"
        state: present
      ignore_errors: yes  # 既にインストール済みの場合のエラーを無視
      loop: [1password, kiro-cli, claude]
<略>

4. Mac App Storeアプリのインストール

ここがとくに苦労しました。
Mac App Storeアプリのインストールは、masコマンドを使うことで実現できるのですが、Apple IDでのログインが必要になります。
ただし、masコマンドをAnsibleを介して実行すると、パスワード入力のプロンプトが出てきても、Ansible側でそれに応答できないため、ログインができない、という問題がありました。

そのため、ansible-playbookを実行する際に--ask-become-passオプションを付与して、スクリプトの実行の一番最初にsudoパスワード入力を終えて、以降はplaybook内の一連の処理が自動的に完了する形を目指しました。

とにかく、「ymlファイルは1枚。コマンド実行は1回で完了する」というのを目指しました。
最終的には100行以内に収まり、かつ、比較的処理の全貌を見通しやすいplaybookができたのではないかなと思っています。

実行イメージ

Ansibleのplaybookを実行している様子は以下の通りです。

setup.shを実行すると、Ansible実行のために必要なコマンドラインのインストールが行われたのちに、ansible-playbookコマンドが実行されます。
(そして、その際には--ask-become-passオプションを付与しているので、パスワード入力が求められます。)

setup.shスクリプトの実行開始画面でパスワード入力を求められている様子

Ansibleのplaybookが実行されていく

Ansibleのplaybookが実行され、各タスクが順次処理されている様子

Mac App Storeアプリのインストールも無事に完了
Microsoft Officeのアプリひとつひとつは数GBあるので、ダウンロードから始まると結構時間がかかる

Mac App Store経由でMicrosoft Officeアプリがインストールされている様子

そして、最終的にDockのカスタマイズも完了し、セットアップが完了
(homebrew_cask経由のインストール時にすでにインストール済みがあった時のエラーを無視するため ignoredが1件だけ発生している)

Dockのカスタマイズが完了し、全てのセットアップが完了した画面

まとめ

以上、私がMacBookに入れている設定と、それの自動化についてまとめました。

ansibleが実行可能な環境があれば、playbookを実行するだけで同じ環境が再現できるというのが今回のこだわりポイントで、それが実現できたのは良かったなと思います。
(本当は冬休みの時間を使って、最新のテックトレンドのキャッチアップもしようと思っていたのですが、これが楽しかったのだから仕方ないですね…!)

今回は自動化自体の説明に注力しちゃったのですが、個々で入れているアプリのこだわりポイントなどはまた別途まとめてみようかなと思います。

本記事が、macOSの環境構築を少しでも楽にしたい、という方の参考になれば幸いです。

関連記事