末端データサイエンティスト的最小限MacBook環境構築

偽中国語みたいなタイトルになってしまった…

## はじめに
[先日より](https://qiita.com/tommy______m/items/3d3cdcf3b827e4f39a8c) (とは言っても結構な期間が立ってしまいましたが…) 私用端末もMacBookになっていたのですが、業務用端末で使っていたWin機も所用でMacに交換したため、晴れてAppleの太客になりました🍎
私用端末であれば適当にやっても何とかなりますが、2台目にもなると、ある程度初期設定のパターンを作っておいた方が良いかなと思い、今後のリセットや交換時に備えて、参考として書き記しておこうと思います📝
(*注: ざっくり2023/6~8月頃の情報です。断片的に更新しているので、最新情報ではないものが混ざっているかもしれませんが、ご容赦いただけますと幸いです。やさしくコメントでご指摘いただけましたらアップデートしておきます。)


## 前提: 使用端末
- 私用端末: [MacBook Pro (M2 Pro)](https://amzn.to/3PhVs7W)
    - CPU: 12 Core CPU, 38 Core GPU, 16 Core - Neural Engine搭載 M2 Max
    - メモリ: 64GB
    - SSD: 2TB
    - Python: PyEnv + Python 3.10.9
- 業務用端末: MacBook Pro (M2) ~~詳細忘れた~~


## 参考文献
Macそのものの設定は、こちらの記事をガッツリと参考にし、あとは個人の好みで調整しました。

https://qiita.com/newt0/items/80164665e7e83ec7a669

上記はWeb系のエンジニアの方の記事なので、導入したツール群については少し違うものの、Pythonを扱う観点から、こちらも参照。

https://qiita.com/ngkr327/items/cc5b199abddaa6739ca7


特にPythonをMacBookにインストールするところは、こちらを参照しました。

https://analytics-note.xyz/mac/python-apple-silicon/


## 全体像
上記3件を参考に簡単に取りまとめると、このような形になるかなと思います。

```
1. (新品でない場合) Mac初期化/MacOS最新化
2. Macそのものの設定・アプリ導入
3. (主にPython周りの) 環境構築
4. VS Codeカスタマイズ
5. その他
```
今回はいずれも新品だったので、初期化・MacOSアップデートは割愛します。
会社PCだと、会社プロファイルの設定等入ってくるかと思いますが、そちらも割愛します。


## 作業内容
### Mac設定のカスタマイズ
#### 基礎設定
- <b>Wi-Fiの設定</b> (割愛)
- <b>Dockサイズの調整</b>
→ 好みで良いと思います。僕は少し小さくしました。最小だと小さすぎて使いづらい感…
    - `システム設定` > `デスクトップとDock`の最上部にある`Dock`以下`サイズ`で調整
![スクリーンショット 2023-09-08 11.51.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413089/084cd6f1-bb31-c179-5b97-2fe0a85075ab.png)

- <b>バッテリー割合の表示</b> → こちらも好みで良いと思います。僕は数字が出てる方が好きなので設定しました。
    - `システム設定` > `コントロールセンター` > `バッテリー` と遷移し、`割合（%）を表示`を ON
    ![スクリーンショット 2023-09-06 19.56.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413089/43adff0f-81f2-8a3a-5c43-532270af4edd.png)

- <b>Apple Musicアプリの自動起動を停止する</b>
→ Apple Musicヘビーユーザーの私は私用端末ではやらなかった…ターミナルから下記コマンドでいけるそうです。
    ```bash
    % launchctl unload -w /System/Library/LaunchAgents/com.apple.rcd.plist
    ```
- <b>数字の入力はデフォルトで半角にする</b>
→ こちらも好みですが、全角英数字が嫌いなので設定しました。
    - (`設定`→`キーボード`→`入力ソース`から`編集`選択後、日本語 - ローマ字入力から、`数字を全角入力`のチェックを外す)
![スクリーンショット 2023-06-29 22.03.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413089/ce72313f-024a-ddd7-5e64-9ddf7d26c5db.png)
![スクリーンショット 2023-06-02 15.54.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413089/4a3fc179-d003-6c4d-c3a0-871fca01f737.png)


#### Mac爆速化
こちらは、[参考記事](https://qiita.com/newt0/items/80164665e7e83ec7a669) をそのまま実行しています。
- [カーソル移動速度をMaxにする](https://qiita.com/newt0/items/80164665e7e83ec7a669#%E3%82%AB%E3%83%BC%E3%82%BD%E3%83%AB%E7%A7%BB%E5%8B%95%E9%80%9F%E5%BA%A6%E3%82%92max%E3%81%AB) 
- [キーの反応速度をMaxにする](https://qiita.com/newt0/items/80164665e7e83ec7a669#%E3%82%AD%E3%83%BC%E3%81%AE%E5%8F%8D%E5%BF%9C%E9%80%9F%E5%BA%A6%E3%82%92max%E3%81%AB)
→ この辺は、やっておいて損はないと思います。初期設定時のスピードで慣れてしまっていたので最初は違和感ありましたが、じきに慣れます。


#### 目に優しくする
- [常にダークモードにする](https://qiita.com/newt0/items/80164665e7e83ec7a669#%E5%B8%B8%E3%81%AB%E3%83%80%E3%83%BC%E3%82%AF%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AB%E3%81%99%E3%82%8B)
- [常にNight Shiftを最大適用する](https://qiita.com/newt0/items/80164665e7e83ec7a669#%E5%B8%B8%E3%81%ABnight-shift%E3%82%92%E6%9C%80%E5%A4%A7%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B)
→ 何時から何時でも良いので、23時間59分ぶん設定しておくとベターです。1分だけブランクが出てしまうので、普段なら絶対に使わないであろう深夜帯にしておくのが良いかと思います。
- [壁紙を漆黒にする](https://qiita.com/newt0/items/80164665e7e83ec7a669#%E5%A3%81%E7%B4%99%E3%82%92%E6%BC%86%E9%BB%92%E3%81%AB%E3%81%99%E3%82%8B)
→ 基本的にどこかのウィンドウで作業をしており、デスクトップを開く場面が少ないので、こちらは設定しませんでした。
- [ブラウザに拡張機能Dark Readerを設定](https://qiita.com/newt0/items/80164665e7e83ec7a669#%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%AB%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BDdark-reader%E3%82%92%E8%A8%AD%E5%AE%9A)
→ 結論、良い塩梅がわかっていない。`^ (Control) + D`で切り替えできるので、サイトに応じて都度切り替えるのが良さそう。
    - Gメールの背景が黒だと新着がわかりづらくて不便
    - Google Slideの背景が黒だと、スライド作成においてめちゃくちゃ不便になる
    - 一方で、中途半端に「クリック時に適用」という設定だと、都度設定する必要があったり、一部だけダークモード化されたりしてかえって使いづらい
- [非光沢の画面保護シールを貼る](https://qiita.com/newt0/items/80164665e7e83ec7a669#%E9%9D%9E%E5%85%89%E6%B2%A2%E3%81%AE%E7%94%BB%E9%9D%A2%E4%BF%9D%E8%AD%B7%E3%82%B7%E3%83%BC%E3%83%AB%E3%82%92%E8%B2%BC%E3%82%8B)
→ そらそうよ。おーん。

### 開発の生産性を上げる
この辺もほぼ、参考リンクを踏襲しました。好みの問題な箇所もあると思います。
作業ディレクトリは、必ずしもdevという名前でなくても良いかとは思います (片方の端末は"work"にした記憶)。

- [Finderのサイドバーに常にホームディレクトリが表示されるようにする](https://qiita.com/newt0/items/80164665e7e83ec7a669#finder%E3%81%AE%E3%82%B5%E3%82%A4%E3%83%89%E3%83%90%E3%83%BC%E3%81%AB%E5%B8%B8%E3%81%AB%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%99%E3%82%8B)
- [ホームディレクトリ直下に「dev」ディレクトリを作成](https://qiita.com/newt0/items/80164665e7e83ec7a669#%E3%83%9B%E3%83%BC%E3%83%A0%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E7%9B%B4%E4%B8%8B%E3%81%ABdev%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90)
- [「Macにログインしているユーザー名」はきちんと本名フルネームに](https://qiita.com/newt0/items/80164665e7e83ec7a669#mac%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E5%90%8D%E3%81%AF%E3%81%8D%E3%81%A1%E3%82%93%E3%81%A8%E6%9C%AC%E5%90%8D%E3%83%95%E3%83%AB%E3%83%8D%E3%83%BC%E3%83%A0%E3%81%AB)
- [Macの表示名を短いものに変える](https://qiita.com/newt0/items/80164665e7e83ec7a669#mac%E3%81%AE%E8%A1%A8%E7%A4%BA%E5%90%8D%E3%82%92%E7%9F%AD%E3%81%84%E3%82%82%E3%81%AE%E3%81%AB%E5%A4%89%E3%81%88%E3%82%8B)
- [一部のアプリ上でCommand + Q を無効にする](https://qiita.com/newt0/items/80164665e7e83ec7a669#%E4%B8%80%E9%83%A8%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E4%B8%8A%E3%81%A7command--q-%E3%82%92%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B)
- [Launchpadを整理](https://qiita.com/newt0/items/80164665e7e83ec7a669#launchpad%E3%82%92%E6%95%B4%E7%90%86)

個人の好みとしては、Ctrl + Qは設定をしておらず (そもそもあまり誤爆もしないので) のと、正直あまりLaunchpadを使わないのでここはやらなくてもよかったかも…という感じです。


### アプリ導入
会社の端末にはChrome, Zoom, Slackは入っていましたが、私用端末ではZoomやSlackはあまり使わないため、この辺はこれまでの好みと相談かなと思います。

- 必須で入れるべきもの
    - [VS Code](https://code.visualstudio.com/)
- 入れると良いであろうもの
    - [Clipy](https://clipy.en.softonic.com/mac) (クリップボードツール)
    - [Rectangle](https://rectangleapp.com/) (画面の配置ツール; 同僚から推薦してもらいました)
    - [Karabiner-Elements](https://karabiner-elements.pqrs.org/) (カスタムショートカットキーの設定。これは社の役員の方が推奨されていました)
- その他状況に応じて入れるとよいもの
    - Firefox (DSだとそこまで気にしなくて良いかも)
    - DeepL (~~俺がDeepLだ~~ そこまで高頻度で翻訳しないならブラウザでOKかも)
    - Discord (使っていない)
    - Spotify (Apple Musicユーザーなので使っていない)
    - Figma (使っていない)
    - Messenger (基本連絡手段として使わない)
    - Kindle (私用端末では書籍のサンプルコードを実行する際に覗くため、必須)
    - LINE (私用端末では必須)
    - Office365 (私用端末では入れる派)


### 開発環境構築
- [Command Line Tools for XCodeのインストール](https://qiita.com/newt0/items/80164665e7e83ec7a669#command-line-tools-for-xcode%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) (gitのインストールに必要)
    - `git --version`をターミナルから叩くと、下記ポップアップが出るので、そのままインストール (ちょっと重いので注意)
![スクリーンショット 2023-06-28 21.45.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413089/2ad09d8a-ffcf-d901-bcc0-13f02df60739.png)
    - CUIでインストールする場合は **`xcode-select --install`**
    - インストール確認は`git --version`を叩く。Command Line Tools for XCodeをインストールしてもgitが動かない場合は、homebrewのインストール後、`brew install git`を実行
- [homebrew](https://qiita.com/ngkr327/items/cc5b199abddaa6739ca7#homebrew) ([公式HP](https://brew.sh/index_ja))
    - `brew -v`をターミナルから叩くとhomebrewのバージョンが表示される (当然、この段階ではインストールされていない想定なのでNot foundと出るはず)
    - インストールコマンドの実行
        
        ```bash
        % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
        ```
        
    - 環境変数の設定
    (バージョンによって実行するコマンドが若干変わる可能性があるので、brew installした結果のNext Stepsを参照)
        - (参考) 私の場合のインストール後のNext Steps
            
            ```bash
            Warning: /opt/homebrew/bin is not in your PATH.
              Instructions on how to configure your shell for Homebrew
              can be found in the 'Next steps' section below.
            ==> Installation successful!
            
            ==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
            Read the analytics documentation (and how to opt-out) here:
              https://docs.brew.sh/Analytics
            No analytics data has been sent yet (nor will any be during this install run).
            
            ==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
              https://github.com/Homebrew/brew#donations
            
            ==> Next steps:
            - Run these two commands in your terminal to add Homebrew to your PATH:
                (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/tommym/.zprofile
                eval "$(/opt/homebrew/bin/brew shellenv)"
            - Run brew help to get started
            - Further documentation:
                https://docs.brew.sh
            ```
            
        
        ```bash
        % echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/<ユーザー名>/.zprofile
        ```
        
        ```bash
        % eval "$(/opt/homebrew/bin/brew shellenv)"
        ```
        
    - バージョン確認
        
        ```bash
        % brew -v
        Homebrew 4.0.26
        
        % which brew
        /opt/homebrew/bin/brew
        ```
        
- git
    - デフォルトバージョンの確認
        
        ```bash
        % git --version
        git version 2.39.2 (Apple Git-143)
        ```
        
    - SSHを使用したGitHubへの接続は、[公式ドキュメント](https://docs.github.com/en/authentication/connecting-to-github-with-ssh)がリッチなので、そちらを参照していただければできると思われます
        - [SSHキーの生成とssh-agentへの登録](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)
        - [GitHubアカウントへのSSHキーの登録](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account)
        - [SSH接続のテスト](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/testing-your-ssh-connection)
    - gitの設定        
        ```bash
        git config --global user.email "hogehoge@gmail.com"
        git config --global user.name "hogehoge"
        ```        
- ~~nodebrew  まだ入れてない~~
- Pythonをインストールする前提としての[pyenv](https://github.com/pyenv/pyenv/blob/master/README.md#homebrew-in-macos)インストール
    - インストールコマンド
        
        ```bash
        $ brew update
        $ brew install pyenv
        ```
        
    - シェルの設定 ([参考](https://github.com/pyenv/pyenv/blob/master/README.md#set-up-your-shell-environment-for-pyenv))
        
        ```bash
        $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
        $ echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
        $ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
        ```
        
- Pythonのインストール
    - 前提としてxzを入れておく
        
        ```bash
        $ brew install xz
        ```
        
    - インストール可能なバージョンから、適切にインストール (私がこちらを実施した2023年6月30日時点では3.11.4が最新でした)
        
        ```bash
        # インストール可能なバージョン一覧表示
        $ pyenv install -l
        # インストール
        $ pyenv install 3.11.4
        # バージョン切り替え
        $ pyenv global 3.11.4
        ```
        
    - ライブラリはpip3 installで普通に入れられる
        
        ```bash
        $ pip3 install jupyterlab
        ```
        
### VS Codeのカスタマイズ

- 入れた拡張機能
    - [日本語化パック](https://marketplace.visualstudio.com/items?itemName=MS-CEINTL.vscode-language-pack-ja)
    - [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) (そらそうよ) - Pylanceもついてくる
    - [Python Extensions Pack](https://marketplace.visualstudio.com/items?itemName=donjayamanne.python-extension-pack) (autoDocString, Jinja, Django, IntelliCode, PythonIndent, Python Environment Managerが入っている)
    - [Jupyter](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter)
    - [Docker](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker)
    - [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) (Remote - SSH, Remote - Tunnels, Dev Containers, WSLのセット。リモート開発を使う案件では愛用しています)
    - [GitLens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens)
    - [GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot)

どちらかというとDockerは私用端末と、業務用端末×リモートインスタンスみたいな場合での利用がメインです。業務用端末×ローカル作業だとPoetryが多い気がする…


### 補足
社の強いDSの方からはこんなコメントをありがたく頂戴しており…いつかやる…いつかやるんだ…
> 個人的にnodebrewじゃなくnvmで入れてるけどこれは正直どっちが良いとかあまり分からずw
ただCLI環境はiTerm2＋zplugを導入すると快適になる気はします！

> あとは.file系は色々設定云々漏れないようにgit管理してます。

> vscodeとかも設定画面みたいやつから変更してるといちいち覚えきれんからsettings.jsonちゃんと使いまわした方が楽だし、スニペットとかも言語ごとに事前に用意してた物すぐ使えるし、クロムのお気に入りバーもファイルで出せるし、etc. 色んなものをファイルで管理すると楽！？

結局GitHubだかにログインしてVS Codeの設定は同期するようにしました。

## 結論
これを２度と見なくて済むのがベスト (PC交換、もうしたくない…)