はじめての Mac の設定

# はじめに
Macbook Air (2020 M1)を購入したので設定を記しておきます。
ありきたりな内容ですが、みんなのためになったら良いと思います。
なんといっても、自分のPCをカスタマイズするのはそれだけでとても楽しいものなので、みんなにも味わってもらいたいです。

# 私の Mac の用途

技術のキャッチアップ(プログラミング、セキュリティ関連の学習)

ただし、何かの開発に特化させた設定にしているわけではないので、学生でITに関する技術をこれから学んでいこうとする方々にとって「初めの一歩」となると思います。

# 各々設定

以下に設定を列挙します。順番通りではなくても大丈夫だと思います。
M1かIntelかは関係ないです。
「~を参照してください。」など引用が多いですがご了承ください。

## ディレクトリ名を英語表記にする

これからプログラミング学習などをする方は、ターミナルでコマンド操作をすることが増えると思います。
その際、作業に使うディレクトリではないとはいえ、ディレクトリの表記が日本語だと違和感を覚えるでしょう。
というより、少しダサく感じてくると思います。
しかし、OSの言語設定ごと英語にしてしまうのは不安という方に朗報。
以下、手順を説明していきます。

各々のディレクトリには.localizedという隠しファイルが存在します。
その.localizedを削除することでOSの言語設定は日本語のまま、ディレクトリ名を英語表示にすることができます。ターミナルで以下のコマンドを実行してください。~/Documents/の箇所を各ディレクトリ名に置き換えてください。

```bash
$ rm ~/Documents/.localized
```

詳しくは、
[Macデフォルトのディレクトリ名を英語表示にする方法](https://qiita.com/narikei/items/60cdedf0efb616dd0bcd)
を参照しください

## コマンドプロンプトの表示を変更する

ターミナルを開いたときに表示される「ユーザ名@コンピュータ名 カレントディレクトリ %」の表示をカスタマイズします。環境変数PS1を変更することでカスタマイズできます。
デフォルトではPS1は以下の様になっていると思います。

```zsh
yuki@raccoon ~ % echo $PS1
%n@%m %1~ %#
yuki@raccoon ~ %
```

この「%n@%m %1~ %#」というのがプロンプトの表示の設定です。文法というか書き方を確認しましょう。
* %n  ユーザ名
* %m  マシーン名
* %1~  カレントディレクトリ名のみ表示 
* %#  シェルが特権で実行されている場合は「#」、そうでない場合は「%」を表示

今回は「カレントディレクトリ名のみ表示」のところを「カレントディレクトリをフルパスで表示」させるように変更します。
表記方法は[Macのターミナル（zsh）のプロンプトを変更する方法](https://kojinjigyou.org/10719/)を参考にしました。
カレントディレクトリをフルパスで表示させるには「%1~」のところを「%~」にすれば良さそうです。

それではまず、エディタを開いて~/.zshrcに以下を追記してください。

```
export PS1="%n@%m %~ %#"
```

変更内容を保存し以下のコマンドを実行します。

```zsh
yuki@raccoon ~ %source ~/.zshrc
```

任意のディレクトリに移動してみてください。

```zsh
yuki@raccoon ~ %cd works
yuki@raccoon ~/works %cd 2022
yuki@raccoon ~/works/2022 %
```

カレントディレクトリがフルパスで表示されるようになったと思います。
再起動しても、同じようにカレントディレクトリがフルパスで表示されるか確認してください。

## iCloud Driveフォルダにアクセスしやすくする

Finderには「iCloud Drive」という表示があり、それをクリックしてiCloud Driveにアクセスできます。
しかし、そのパスを確認すると

```
/Users/[ユーザ名]/Library/Mobile Documents/com~apple~CloudDocs
```

となっていて、ターミナルでパスを入力するのはとても面倒です。
そこで、~/.zshrcに以下の設定を加えてiCloud Drive にアクセスしやすくしましょう。

```txt:~/.zshrc
# access to icloud folder
alias icloud="ls -l '/Users/yuki/Library/Mobile Documents/com~apple~CloudDocs'"
alias cdicloud="cd '/Users/yuki/Library/Mobile Documents/com~apple~CloudDocs'"
```

変更内容を保存し以下のコマンドを実行します。

```zsh
yuki@raccoon ~ %source ~/.zshrc
```

以下のようにcdicloudでiCloud Driveのフォルダに移動。icloud でiCloud Driveの中身を表示できれば成功です。

```
(base) yuki@raccoon ~ %cdicloud
(base) yuki@raccoon ~/Library/Mobile Documents/com~apple~CloudDocs %icloud
total 6528
drwxr-xr-x@ 15 yuki  staff      480  3 18 21:49 Desktop/
drwxr-xr-x@  9 yuki  staff      288  3 18 21:49 Document
(略)
```


## コンピュータ名の変更

「システム環境設定」->「共有」->「コンピュータ名」に記述

## homebrew のインストール

[こちら](https://brew.sh/index_ja)の公式ページを参照してください。

### homebrew の使い方の例

[こちら](https://formulae.brew.sh)のページでインストールしたいソフトを検索。
「Install command」のコマンドをコピーしてターミナルで実行。

### homebrewでインストールしておくと良いもの

デフォルトで使えないコマンドを以下に列挙しておきます
* wget
* telnet

気がついたら追記していきます。

## karabiner-elementsのインストールと設定

キーバインドを設定するためのソフトです。homebrewでインストールしてください。
キーバインドの設定は各自の好みで行なってください。
よろしければ私のお気に入り設定をご覧ください。以下にリンクを貼ります。
[僕のMacのキーバインド設定(i,j,k,l)を披露させてください!](https://qiita.com/guchipon/items/4a238cb44a842bb9da01)

私の設定が気に入ったけど、上のページを見ながら設定していくのが面倒ならば以下のjsonファイルをインポートしてください。
以下のjsonファイルを~/.config/karabinerに置くだけです。
すでにkarabiner.jsonが存在するのであれば、置き換えてください。

```json:karabiner.json
{
    "global": {
        "check_for_updates_on_startup": true,
        "show_in_menu_bar": true,
        "show_profile_name_in_menu_bar": false
    },
    "profiles": [
        {
            "complex_modifications": {
                "parameters": {
                    "basic.simultaneous_threshold_milliseconds": 50,
                    "basic.to_delayed_action_delay_milliseconds": 500,
                    "basic.to_if_alone_timeout_milliseconds": 1000,
                    "basic.to_if_held_down_threshold_milliseconds": 500,
                    "mouse_motion_to_scroll.speed": 100
                },
                "rules": [
                    {
                        "description": "英数キーを単体で押したときに、コマンドキーキーを送信する。",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "japanese_eisuu",
                                    "modifiers": {
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "left_command"
                                    }
                                ],
                                "to_if_alone": [
                                    {
                                        "key_code": "japanese_eisuu"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "英数・かなキーをtoggle方式にする",
                        "manipulators": [
                            {
                                "conditions": [
                                    {
                                        "input_sources": [
                                            {
                                                "language": "ja"
                                            }
                                        ],
                                        "type": "input_source_if"
                                    }
                                ],
                                "from": {
                                    "key_code": "japanese_kana"
                                },
                                "to": [
                                    {
                                        "key_code": "japanese_eisuu"
                                    }
                                ],
                                "type": "basic"
                            },
                            {
                                "conditions": [
                                    {
                                        "input_sources": [
                                            {
                                                "language": "ja"
                                            }
                                        ],
                                        "type": "input_source_unless"
                                    }
                                ],
                                "from": {
                                    "key_code": "japanese_eisuu"
                                },
                                "to": [
                                    {
                                        "key_code": "japanese_kana"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "Change Command + i/j/k/l to Arrows",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "j",
                                    "modifiers": {
                                        "mandatory": [
                                            "command"
                                        ],
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "left_arrow"
                                    }
                                ],
                                "type": "basic"
                            },
                            {
                                "from": {
                                    "key_code": "k",
                                    "modifiers": {
                                        "mandatory": [
                                            "command"
                                        ],
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "down_arrow"
                                    }
                                ],
                                "type": "basic"
                            },
                            {
                                "from": {
                                    "key_code": "i",
                                    "modifiers": {
                                        "mandatory": [
                                            "command"
                                        ],
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "up_arrow"
                                    }
                                ],
                                "type": "basic"
                            },
                            {
                                "from": {
                                    "key_code": "l",
                                    "modifiers": {
                                        "mandatory": [
                                            "command"
                                        ],
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "right_arrow"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    },
                    {
                        "description": "left_command + d（delete）",
                        "manipulators": [
                            {
                                "from": {
                                    "key_code": "d",
                                    "modifiers": {
                                        "mandatory": [
                                            "left_command"
                                        ],
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "delete_or_backspace"
                                    }
                                ],
                                "type": "basic"
                            }
                        ]
                    }
                ]
            },
            "devices": [],
            "fn_function_keys": [
                {
                    "from": {
                        "key_code": "f1"
                    },
                    "to": [
                        {
                            "consumer_key_code": "display_brightness_decrement"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f2"
                    },
                    "to": [
                        {
                            "consumer_key_code": "display_brightness_increment"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f3"
                    },
                    "to": [
                        {
                            "key_code": "mission_control"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f4"
                    },
                    "to": [
                        {
                            "key_code": "launchpad"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f5"
                    },
                    "to": [
                        {
                            "key_code": "illumination_decrement"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f6"
                    },
                    "to": [
                        {
                            "key_code": "illumination_increment"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f7"
                    },
                    "to": [
                        {
                            "consumer_key_code": "rewind"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f8"
                    },
                    "to": [
                        {
                            "consumer_key_code": "play_or_pause"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f9"
                    },
                    "to": [
                        {
                            "consumer_key_code": "fast_forward"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f10"
                    },
                    "to": [
                        {
                            "consumer_key_code": "mute"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f11"
                    },
                    "to": [
                        {
                            "consumer_key_code": "volume_decrement"
                        }
                    ]
                },
                {
                    "from": {
                        "key_code": "f12"
                    },
                    "to": [
                        {
                            "consumer_key_code": "volume_increment"
                        }
                    ]
                }
            ],
            "name": "Default profile",
            "parameters": {
                "delay_milliseconds_before_open_device": 1000
            },
            "selected": true,
            "simple_modifications": [],
            "virtual_hid_keyboard": {
                "country_code": 0,
                "indicate_sticky_modifier_keys_state": true,
                "mouse_key_xy_scale": 100
            }
        }
    ]
}
```

## iTerm2のインストール

1. [iTerm2のおすすめ設定〜ターミナル作業を効率化する〜](https://qiita.com/ruwatana/items/8d9c174250061721ad11)

2. [Macのターミナル（zsh）のlsを色付きにする方法](https://kojinjigyou.org/20342/)

を参照してください。

## Visual Studio Code のインストール

homebrewでインストールしてください。
フォルダを右クリック->「VSCodeで開く」という操作ができるようにしたいので
[Finder のコンテキストメニューに「Visual Studio Code で開く」を追加する](https://qiita.com/hiroyuki7/items/a3fcdf943c313473ecee)
を参照してください。

# その他　アプリ名のみ列挙

* RunCat

# 続く
自分の新しいmacを実際に設定しながら記事を書いているので、設定を追記していきます。