M1 Macの環境構築

転職して3ヶ月以上経ってやっと仕事用のPCを支給された。 詳細は聞かなかったが注文して届くのが遅かったらしいので海外(例えば中国経由とか)からの輸送が遅れているとかが関わってそう

届いたのはM1 MacでありIntel Macでは無く色々環境構築に戸惑ったがある程度落ち着いて来たのでメモ代わりに纏めてみる

ちなみにsw_versやsystem_profilerの情報。メモリも64GBで無いのが辛い。仕事だとメモリは最大にしてほしい

$ sw_vers
ProductName:    macOS
ProductVersion: 12.2.1
BuildVersion:   21D62

$ system_profiler SPHardwareDataType
Hardware:

    Hardware Overview:

      Model Name: MacBook Pro
      Model Identifier: MacBookPro18,1
      Chip: Apple M1 Pro
      Total Number of Cores: 10 (8 performance and 2 efficiency)
      Memory: 32 GB
      System Firmware Version: 7429.81.3
      OS Loader Version: 7429.81.3

個人的にはもう開発環境もLinuxにしたいんだが、入社時に希望を伝えてもなんか難しいらしく無理だった。 Macはもう結構な値段だし普通のPCでLinuxの方が楽なんだけどね。 入社時だと強く言えないので仕方がない

基本的な設定

まずは、リモートワークなので自宅ネットワークの設定。IPを固定化したり、必要ならWiFiの設定とかも。 そしてアプデ作業。これはOSに関係なく最初にしておかないと死ぬ

次に普段作業しているHostからsshで接続して開発が出来るようにする。直接Macを使おうにもスペースとかモニタの数の問題や母艦がLinuxだった>りなのでこの方が使いやすいのでこうしてます

他は諸々の設定。このあたりが面倒だったのでメモしておく

ロックとかスクリーンセイバーとか

  • バッテリー -> 電源アダプタ時 でディスプレイをオフを切る
  • デスクトップとスクリーンセイバー -> 必要なら設定
  • ホットコーナー から スクリーンセイバー起動を設定
  • セキュリティとプライバシー からスクリーンセイバー起動と同時にロックが掛かるようにする

ヒントの非表示

macがヒントを出してきて作業の邪魔をするのでoffにする

設定->通知->ヒントからoffにできる

これで全部offになるかは不明

環境構築の事前準備(手動)

まずはxcodeのインストール。Apple Storeからインストール出来る

Homebrew。M1にも対応しているようで問題無くインストール出来る。ただエラーが発生しbrew installが出来ない。 どうやら arch -arm64 brew install <name> という形でインストール出来るようだ

M1 Macとmitamae

最近は環境構築がしんどいのでLinuxではmitamaeを利用している。Macでも利用していく

リリースページからM1 Mac用のバイナリを取得する必要があるので注意

現時点での名前は mitamae-x86_64-darwin 。使いづらいのでファイル名は mitamae に変更している

M1 MacとHomebrew

mitamaeでは package を使いインストールを行う。Linuxだと各種パッケージコマンドを使う(Debian系だとapt)し、MacでHomebrewがあればbrew>を使う

例えばnginxの場合はこうなる。これで brew install nginx が実行される

package 'nginx' do
  action :install
end

ただ、すでに書いたとおりHomebrewのコマンドには arch -arm64 が必要なせいで pakage がエラーとなる。 対応方法が不明なので一旦 execute でインストールするようにしている

execute 'install nginx' do
  command "arch -arm64 brew install nginx"
end

mitamaeで設定していく

あとはレシピを作っていく。ここは人によって違うがまあ大体レシピ化できるはず

当然全て網羅していないので注意

  • Dotfiles
    • githubにレポジトリを置いているのでcloneしてから必要なファイルを配置するだけ
  • shell周りやエディタとか
  • ツール類
  • 開発環境系
    • docker, docker compose, mysql, postgresやライブラリ関係等
  • 開発言語周り
  • 個人用ツール
    • 個人用のちょっとしたツールを色々持っているので必要に応じて設定