どうも、リストア職人のさぼです。みなさんmacOSをどのぐらいの頻度でリストアしてますか?1年に1回はやってますよね?僕は3ヶ月に1回はやるようにしてます。綺麗な状態にしてOSが最大限のパフォーマンスで動いた方がいいし手元に入れたよくわからないアプリがずっと入ってるのって気持ちよくないじゃないですか。なのでMacを定期的にリストア(工場出荷状態に初期化)してます。
前回までは真っ白な状態からだいたい3時間ぐらいで普段開発している環境を構築できるようにしていたのですが今回から開発環境を全部Dockerにしてみようと思ってやってみたところ1時間半で開発環境を終えて作業開始できる状態まで持っていくことが出来ました。
おわり(おわらない)
いつもやってる手順を振り返りがてら紹介していきます。
Brewfile
いつもリストア後は brew bundle
コマンドでアプリやソフトウェアを入れるようにしていて、今回はその中から言語のRuntimeとMiddlewareを全部取り除きました。
またVagrantも試験的にリストア後には入れずに必要があれば入れる形にします。サブエディタとして使っていたAtomも使うのをやめました、メインはJetBrains系のエディタを使っていますが、サブとしてVisual Studio Codeを使うようにしてます。
少し前まではVagrantでMiddleware, PostgresやRedis を起動してMacのホスト上のRubyのruntimeでRailsを起動して開発したりしてましたが、最近は全部docker-compooseで動かして言語のRuntimeも全部Dockerで行うようになったのでMacに 言語のRuntimeを入れる必要がなくなりました。個人的に rbenv
や ruby-build
をMac上に入れなくなったのは時代の転換期を感じます。。
cask_args appdir: '/Applications' tap 'caskroom/cask' brew 'ctop' brew 'curl' brew 'ghq' brew 'gist' brew 'git' brew 'htop' brew 'hub' brew 'jq' brew 'mackup' brew 'mas' brew 'openssl' brew 'peco' brew 'rmtrash' brew 'sshrc' brew 'telnet' brew 'tig' brew 'tree' brew 'z' brew 'zsh-completions' brew 'zsh' # ココらへんを全部入れないことにした # tap 'homebrew/php' # brew 'automake' # brew 'cmake' # brew 'ctags' # brew 'gcc' # brew 'go' # brew 'heroku' # brew 'memcached' # brew 'mongodb' # brew 'mysql' # brew 'node' # brew 'nodenv' # brew 'postgresql' # brew 'pyenv-virtualenv' # brew 'pyenv' # brew 'python' # brew 'rbenv' # brew 'readline' # brew 'redis' # brew 'ruby-build' # brew 'sqlite' # brew 'v8' # brew 'yarn' cask 'alfred' cask 'appcleaner' # cask 'atom' cask 'bartender' cask 'bitbar' cask 'caffeine' cask 'cyberduck' cask 'docker' cask 'fantastical' cask 'github' cask 'google-chrome' cask 'google-japanese-ime' cask 'grandperspective' cask 'gyazo' cask 'iterm2' cask 'karabiner-elements' cask 'keycastr' cask 'ngrok' cask 'paw' cask 'postico' cask 'sequel-pro' # cask 'vagrant' # cask 'vagrant-manager' # cask 'virtualbox' cask 'visual-studio-code' cask 'vlc' mas 'Airmail 3', id: 918858936 mas 'Bandwidth+', id: 490461369 mas 'Be Focused Pro', id: 961632517 mas 'BetterSnapTool', id: 417375580 mas 'LanScan', id: 472226235 mas 'Night Owl', id: 428834068 mas 'Skitch', id: 425955336 mas 'Todoist', id: 585829637 mas 'Wireless Signal', id: 582840059
リストア, 開発環境構築の手順で使うツール
- DiskMaker X
- インストールディスク作成
- Homebrew
brew bundle
でBrewfileからアプリとツールをダウンロードするのに使います - mackup
- Docker for Mac
- macOSでDockerを動かす
- Dropbox
- GitHub, または他ののGit Repository Hostingサービス
- ソースコードは全部Gitのremoteに置くようにする。
- 1password
リストア手順
- リストアして最新OSを入れる。
- macOSのシステム環境設定 Dock、トラックパッド、キーボード、言語設定などを好みに変更する。ここはOSが変わっていくと変化する可能性があるので自動化していない
- DropboxをインストールしてMacupフォルダとBrewfileをMacにダウンロードする
- Homebrew をinstallする
brew bundle
でアプリとツールをインストールするmackup restore
でアプリとツールの設定ファイルを復元する- iTerm2を開いてデフォルトのshellをzshに変更する(お好み)
- 開発リポジトリを
git clone
する docker-compose
で開発環境を立ち上げる- JetBrainsのエディタをインストールして立ち上げる
ここまでで所要時間1時間半くらいで構築できるようになりました。
Docker
Dockerの構築を知りたい方は下のリポジトリとかを参考にしてください。Railsのアプリケーションです。最近は開発環境構築を make build
とすると終わるようにするのが趣味になってます。
Dockerを学ぶにはこの本がおすすめです。
おわりに
リストア環境をちゃんと作っていれば1, 2時間でリストアから開発環境構築完了までいけるようになりました。ここまで来るとOSにほとんど依存しないのでMacである必要ないやんという感じなのですが、ぼく個人としてはApple信者であるためMac使い続けようと思います(今の所は)。LinuxとかWindowsのWSLはDockerサクサク動いていいなぁとは思う。
1時間半でリストアが終わるなら土曜日の午前中に時間があるときにやるか、というぐらい気軽にできるようになるので定期的にリストアをする習慣が作れると思います。新しいOSが1年に1度出るのでそのときにリストアすると良いと思います。リストアせずにOSのメジャーバージョンのアップデートするとだいたい遅くなったり壊れたりします。エンジニアの中でさえOSをアップデートしない人とかがたまにいるんですけど、ほとんどの問題はリストアしたら直るのでやってあげてください。よろしくおねがいします。