Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What is going on with this article?
@d0ne1s

Macの初期化→リストアを良い感じにする

BrewfileMackupDockerDropboxを使って良い感じにリストアできる環境を作ったので、まとめます。

以下の記事をめちゃくちゃ参考にしました。
macOSでの開発環境を全部Docker化したらリストア時間が1時間半になった

使用する主なツール

  • Brewfile
    • 必要なアプリをファイルに列挙して、コマンド一発で全部インストールできる。コマンドラインで使うツール、インストーラーを使ってインストールするアプリ、AppStoreからインストールするアプリ、全てコマンド1つ。最高。(Brewfileを使う
  • Mackup
  • Dropbox
    • 重要なファイルやBrewfile、Mackupで抽出した設定ファイルを保存。ソースコードもここで保存する(当初はGitHubだけで良いと考えたけど、Git管理対象外のファイルもあるので)
  • GoogleDrive
    • クラウド上のゴミ箱として。必要ないけど削除するのは嫌なファイルを保存
  • Docker
    • 開発環境をDockerで作り、ローカルの言語やツールに依存しない状態を保つ
  • Bitwarden
    • パスワードマネージャー

初期化(Total 1h)

バックアップ

  • 大切なファイルをDropboxに
  • 大切ではないけど消すのは嫌なファイルをGoogleDriveに
  • アプリの設定ファイルをMackupでバックアップ
  • 開発環境を全部Dockerで作っておく
    • ローカルに入ってる言語とかを使わない
  • DBの接続情報(特にパスワード)をBitwardenにメモ
  • 個別のバックアップ機能を持っているアプリの対応
    • Biscuitの設定をエクスポートしてDropboxに保存
    • Transmitの接続情報をエクスポートしてDropboxに保存(お気に入り→書き出し)。パスワードはBitwardenのメモで管理。

最新のOSにアップデート(30m)

念のため先にアップデート。
データ消去の後に何かのコマンドを押してると勝手に最新OSが入るみたいですが、押し忘れたりしたらしんどいので。

「りんごマーク」>「このMacについて」>「ソフトウェア・アップデート」

リカバリーモードでmacを起動

シャットダウン → コマンド + Rを押しながら起動

データを完全削除

「macOSユーティリティ」→「ディスクユーティリティ」→「内蔵」→「Macintosh HD – Data」→「ボリューム>マイナスマーク」→「削除」→「Macintosh HD」→「削除」→「プラスマーク」→「Macintosh HDなどの名前で新規ボリュームを作成」

[完全版]macOS Catalinaをクリーンインストールする方法

OSを再インストール(25m)

「macOSユーティリティ」→「macOSを再インストール」

リストア(Total 1.5h)

システム設定を変える

システム環境をいじくって、トラックパッドやキーボードなどの設定を自分好みに変更します。
Macのシステム設定まとめ

Bitwardenをインストール

AppStoreから。パスワードがわからないと何も始まらないので

Chromeをインストール

グッバイSafari。Googleアカウントにログイン→同期して、ブックマークや拡張機能を復活させましょう。

Dropboxをインストール

これでいろいろと復元できます。
インストールしたらすぐに環境設定を開き、
- Brewfile
- Mackupディレクトリ

以外を同期しないようにします。その他のディレクトリは一通り設定が終わったあとで一気に同期しましょう。
※PCの容量に困らない限り、スマートシンクは設定しない。
 

Homebrewをインストール

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

Finderのサイドバーに表示する項目を整理する

  • Dropbox
  • ダウンロード
  • ホームディレクトリ
  • スクリーンショット
  • iCloud Drive
  • Macintosh HD

あたりを表示

その他アプリを一括でインストール

$ cd ~/Dropbox
$ brew bundle

Brewfile
cask_args appdir: "/Applications"
brew 'git'
tap 'heroku/brew'
brew 'heroku'
brew 'jpegoptim'
brew 'mackup'
brew 'mas'
brew 'pngquant'
brew 'rmtrash'

cask 'adobe-creative-cloud'
cask 'alfred'
cask 'biscuit'
cask 'docker'
cask 'tableplus'
cask 'transmit'
cask 'visual-studio-code'

# cask 'dropbox'
# cask 'google-chrome'
# cask 'karabiner-elements'

mas 'Kindle', id: 405399194
mas 'LINE', id: 539883307
mas 'Magnet', id: 441258766
mas 'Quick Stopwatch', id: 976930151
mas 'Todoist', id: 585829637

# mas 'Bitwarden', id: 1352778147

Dropboxに保存してあるBrewfileを元に必要なアプリを全て揃えます。

設定ファイルを復元

$ cd ~/Dropbox
$ mackup restore

これでほぼ全てのアプリの設定が復元されます。.vimrcとか.zshrcとかも。
vscodeの拡張機能はデフォルトではサポートされていませんが、独自に定義して管理できるようにしています。

設定(クリックで表示)
~/.mackup/vsex.cfg
[application]
name = vsex

[configuration_files]
.vscode/extensions

Dockを整理

  • 不要なアプリを削除
  • 必要なアプリを追加
  • アイコンのサイズを小さめに
  • 「Dock環境設定」>「Dockを自動的に表示/非表示」

Dropboxの残りのファイルを同期

このあたりで、先ほど行った同期するディレクトリを制限する設定を解除しちゃいましょう。

デフォルトのアプリを設定

html, css, js, html.erb, csv, txt, Dockerfile等を開くデフォルトのアプリをVSCodeに設定します。

$ touch hoge.html hoge.css hoge.js hoge.html.erb hoge.csv hoge.txt

「Finder」>「ファイルを右クリック」>「情報をみる」>「このアプリケーションで開く」>「全てを変更」

各種アプリの動作確認

アプリがちゃんと動くか確かめます。
Mackupで設定を管理できないアプリもあるので、その場合は個別に設定をしましょう。

Adobe Creative Cloud

起動→ログインして
イラレとXDをインストール

Alfred

  • Ctrlのダブルタップで起動できるように
  • 検索バーの帽子マークを非表示(appearances>options>how he looks)
  • 検索バーのショートカットを非表示(appearances>options>how he looks)
  • メニューバーの帽子マークを非表示(appearances>options>how he looks)
  • 出現場所をやや下に(appearance>options>図から変更)
  • 起動時に入力モードを半角英数にする(appearances>options>Focusing>Compatibility mode →advanced > force key board > abc)
  • PowerpackメニューからPowerpackを有効化
  • クリップボードの履歴を記録(features>clipbord history>keep plain text)
  • clipboard履歴の初回利用時、アクセシビリティの設定変更を要求されるので従う

最初は同期の機能を使おうと思いましたが、うまく連携ができなくてやめました。大した設定していないので、手動でやります。

Biscuit

最初にエクスポートしておいた設定ファイルをインポート。

Docker for Mac

システムに実行の許可を出す。

GoogleChrome

常に表示する必要の無い拡張機能を隠す。Bitwardenをダークテーマに。

LINE

ログイン

Magnet

アクセシビリティ周りの設定。ログイン時に起動する設定。

TablePlus

接続先のパスワードはMackupで管理されていないよう。手動でパスワードを再入力する必要あり。

Todoist

Googleアカウントでログイン

Transmit

Mackupでは接続先の情報を管理できない。予め書き出して置いた移行用のファイルを実行。
また、こちらもパスワードは引き継がれないのでメモから復元

「お気に入り」>「読み込み」>「Transmit」

VScode

サイドバーからデバッグのマークを消す&並び替え

ZOOM

Brewfileでインストールするとエラーが発生するので、ブラウザから手動でインストール

よく使うサイトにログイン

  • Amazon
  • GitHub
  • Pocket
  • Qiita
  • Twitter
  • はてな
  • note

sshキーのパーミッションを変更

$ cd ~/Dropbox/Mackup
$ chmod 700 .ssh
$ cd .ssh
$ chmod 600 dir_name/id_rsa # 秘密鍵の数だけ繰り返す

node.jsの設定

Dropboxに保存してあるnodenvの設定ファイル郡にシンボリックリンクを貼ります。

$ rm -rf ~/.nodenv
$ ln -sf ~/Dropbox/settings/.nodenv ~/.nodenv

nodenvを使ってnode.jsをインストールします。

$ nodenv install --list # インストールできるバージョンを確認
$ nodenv install 14.5.0 # 最新バージョンをインストール
$ nodenv rehash
$ nodenv global 14.5.0 # インストールしたバージョンをデフォルトに設定
$ nodenv versions # 利用できるバージョン一覧

node modulesのインストール

$ npm install -g yarn
$ yarn -v
$ npm install -g gatsby-cli
$ gatsby -v

開発環境のコンテナを作成

各プロジェクトのルートディレクトリに移動し

$ docker-compose build
$ docker-compose up -d
RubyonRailsの場合
$ docker-compose exec <サービス名> /bin/bash
$ rails db:create
$ rails db:migrate
$ rails db:seed

Railsアプリをcloneした後にDocker上で動かすまで

運用中のサービスの開発環境のデータをローカルに反映

TablePlusでデータをCSVでダウンロードして、ローカルのDBにアップロード

日常的に気を付けること

  • アプリのインストールはBrewfileを使う
  • アプリを追加した時には、そのアプリの設定の管理方法を考える(Mackupで管理できないなら個別にバックアップ)
  • 大切なファイルはDropboxで管理
  • DBの接続先が増えた時、Bitwardenに記録
  • FTPの接続先が増えた時、TransmitのバックアップをDropboxに保存+パスワードをBitwardenにメモ
  • Biscuitで管理するアプリが増えたら、設定をエクスポートしてDropboxに保存

このあたりを意識していれば、いつPCがぶっ壊れても(データ的には)割と大丈夫。
そんなに大変じゃないはず。

注意点、ハマったところ

Mack up、すごく便利なのですが、最初は何がバックアップできていて何ができていないかがよくわからず苦労しました。
vscodeの拡張機能、preztoのプログラム本体、FTPやDBのパスワードなどはデフォルトではバックアップされません。
自分で設定をカスタマイズすることで、パスワード以外はバックアップすることができました。

めんどくさがらずに公式の公式のドキュメントを読むとかなり理解が進みます。
英語ですがすごくわかりやすく説明されているので、ぜひ読んでみてください。

あと、スピードを追求する場合はDiskMaker Xとかで起動ディスクを作るともっと時間を短縮できるみたいです。

感想

BrewfileMack upがやばい。またDockerのありがたみも強く実感しました。
この環境を2018年に完成させていた@saboyutaka さんはまじでイケてると思う。

参考

17
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
d0ne1s
RailsとTailwindが好きなフリーランスエンジニア。 Qiitaの記事検索サービスqiigle.comを運営。 最近はAWSを勉強しなおしてます。 Twitterものぞいてくれるとうれしいです🦈
admin-guild
「Webサービスの運営に必要なあらゆる知見」を共有できる場として作られた、運営者のためのコミュニティです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
17
Help us understand the problem. What is going on with this article?