新しいMacBook Airを手に入れたので、最初にインストールしたものとか初期設定とかをまとめておきました。これさえあればそれなりに使えるようになるはず……。

Firefox

Rustを応援したいのでFirefox派です。

公式からダウンロード

Google日本語入力

公式からダウンロード

入力ソース大量にあってもあんまり使わないので、Google日本語入力の英数とひらがなの2種類だけ残し、他は削除。

入力の切り替えをCommand+Spaceにする方法

「システム環境設定」→「キーボード」→「ショートカット」→「入力ソース」の「前の入力ソースを選択」のキーを「⌘スペース」に変更。Spotlightのキーと被るけどそっちは使ったことないので無視。

英字のスペルチェックを消す

「システム環境設定」→「キーボード」→「ユーザー辞書」にスペルチェック関連の設定があるので、全てのチェックを外す。

Karabiner-Elements

諸事情により日本語配列のMacBookを買ってしまったけど、やっぱりUS配列で使いたくなってしまったので、Karabiner-Elementsを使ってUS配列に変更します。

まずは公式 からダウンロードし、インストール

インストールが終わったら、 ~/.config/karabiner/karabiner.jsonprofiles[0].rules に、以下のJSONを追記します。

{
    "description": "Remap Japanese Keyboard to US",
    "manipulators": [
        {
            "from": {
                "key_code": "2",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "open_bracket"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "6",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "equal_sign"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "7",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "6",
                    "modifiers": [
                        "left_shift"
                    ]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "8",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "quote",
                    "modifiers": [
                        "left_shift"
                    ]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "9",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "8",
                    "modifiers": [
                        "left_shift"
                    ]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "0",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "9",
                    "modifiers": [
                        "left_shift"
                    ]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "hyphen",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "international1"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "equal_sign"
            },
            "to": [
                {
                    "key_code": "hyphen",
                    "modifiers": [
                        "left_shift"
                    ]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "equal_sign",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "semicolon",
                    "modifiers": [
                        "left_shift"
                    ]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "international3",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "grave_accent_and_tilde"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "open_bracket",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "close_bracket"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "close_bracket",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "non_us_pound"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "semicolon",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "quote"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "quote"
            },
            "to": [
                {
                    "key_code": "7",
                    "modifiers": [
                        "left_shift"
                    ]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "quote",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "2",
                    "modifiers": [
                        "left_shift"
                    ]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "non_us_pound"
            },
            "to": [
                {
                    "key_code": "international3",
                    "modifiers": [
                        "left_option"
                    ]
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "non_us_pound",
                "modifiers": {
                    "mandatory": [
                        "shift"
                    ],
                    "optional": [
                        "caps_lock"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "international3",
                    "modifiers": [
                        "left_shift"
                    ]
                }
            ],
            "type": "basic"
        }
    ]
}

(JSONはこちらのものを引用)

その後Karabinerを再起動すれば、US配列風になっています。

ちなみに、さらに自分はSimple Modificationを設定して、英数キーとかなキーをoptionに割り当てています。

Alfred

コマンド入力型のランチャーです。

公式からダウンロードし、インストール。

そのままでも十分便利ですが、自分は設定の「Features」→「Dictionary」から「Define a word」を「def」に設定して、「def hogehoge」で単語hogeの意味を調べることができるように設定しています。

iTerm2

これがないとお話にならない。

公式からダウンロードし、インストール

ウィンドウの分割設定を保存する

通常は4分割して使ってるので、デフォルトでそうなってくれると嬉しい。以下の設定でウィンドウの分割を保存できます。

  1. 「Window」→「Save Window Arrangement」で適当に名前を付けて保存
  2. 「iTerm2」→「Preferences…」→「General」の「Startup」を「Open Default Window Arrangement」に変更。
  3. 「iTerm2」→「Preferences…」→「Arrangements」で、先ほど保存したウィンドウの配置をデフォルトに設定。

Homebrew

公式からインストール

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Xcode コマンドラインデベロッパーツール

gccとかそのへんの存在しないコマンドを適当に叩くと「コマンドがありません」→「Xcodeのデベロッパーツールをインストールしますか?」みたいな流れでインストールする流れにさせられるので、流されておきましょう。

git

Homebrewから入れるgitのほうにはgit-completion.bashが付属しています。

$ brew install git

hub

Github上のリポジトリの操作を楽にしてくれるGitの補助みたいなやつ。地味に便利。

$ brew install hub

Emacs

日本語環境だとemacsmacportが良さそう。

$ brew tap railwaycat/emacsmacport
$ brew install emacs-mac
$ brew linkapps

デフォルトでインストールされているEmacsのほうがPATH的に優先されるはずなので、そこの対処をしておくと便利かもしれません。

公開鍵/秘密鍵の生成、登録

ssh-keygenで鍵を作った後、GithubBitBucketなどに登録。

ホスト名の変更

前に書いた通り。「システム設定」→「共有」と、scutilの二ヶ所で変更を行います。

Macで$HOSTNAMEとhostnameを一致させる - TOKYO OYASUMI CLUB

*env系

pyenv, rbenvとかとその仲間たち

$ brew install haskell-stack
$ brew install ocaml opam && opam init
$ brew install pyenv pyenv-virtualenv
$ brew install nodenv
$ brew install erlang elixir-build exenv
$ brew install rbenv && gem install bundler

Docker

公式からダウンロード&インストールした上で、とりあえずログイン。

$ docker login

Google Cloud SDK

基本的に公式のドキュメントに従ってインストールすればいい。ただし、使用できるPythonは2.7のみ。さらに、pyenv上の環境でインストールするにはCLOUDSDK_PYTHON_SITEPACKAGES環境変数を指定しなければならない。

$ tar -xf google-cloud-sdk-XXX.tar.gz
$ cd google-cloud-sdk
$ CLOUDSDK_PYTHON_SITEPACKAGES=1 ./install.sh
$ ./bin/gcloud auth login

詳細はこの記事を参照: pyenv上のPythonを使ってGoogle Cloud SDKをインストールする - TOKYO OYASUMI CLUB

Heroku

$ brew install heroku/brew/heroku
$ heroku login

Last.fm Scrobbler

公式からダウンロード&インストール

「設定」→「デバイス」→「デバイスでのScrobbleを有効にする」のチェックを外すと、曲が二重にScrobbleされるのを防ぐことができる。

Slack

App Storeから

Evernote

App Storeから

Trello

App Storeから

LINE

App Storeから

Tweetdeck

App Storeから

Dropbox

公式からダウンロード&インストール。

フォント

caskroom/fontsを使うと、フォントを楽にインストールできる。

$ brew tap caskroom/fonts
$ brew cask install font-ricty-diminished # Ricty Diminished をインストール

自動化

Ansibleとか使って自動化するべき…?

でも数年に一回しかしないようなことに使うのもやりすぎ感が…