この記事について
入社して4年目にして、3度PC交換をしました。
この記事では、再度交換作業が発生しないことを祈りつつ万が一またPC交換が発生したときのために、PCのデータやソフトウェア、ライセンス等の移行で行った作業を雑多にメモしていきます。
…… という書き出しで書いた社内向け記事を、せっかくなので外部公開できる範囲で公開してみます。
whoami
Macbookにてスマートフォンゲームのサーバーエンジニア的な仕事をしており、Google Cloudをよく触ります。
たまにUnity Editorを使って動作確認することもあります。
準備
PCリプレイスを社内IT室に依頼する
(Qiita版記事では割愛します)
インストール済みソフトウェアの確認
現在Macにインストールしてあるソフトウェアを書き出しておく
# 普通のアプリケーション
ls -l /Applications/
# Homebrewで入れたツール類
brew bundle dump
# pipでグローバルに入れたツール類
pip freeze
# npmでグローバルに入れたツール類
npm list -g # 大したものが入ってなかったので何も移行しなかった
各種dotfile等のバックアップ
Mackupが便利
- https://github.com/lra/mackup
- 各種設定ファイル(
.bash_profile
とか)をクラウド(Google Drive等)にアップロードして、任意のMacにリストアしてくれる。 -
.bigqueryrc
などのMackup側で対応していないdotfileや、.ssh/
等のセキュリティ上意図的に対応していないファイルもあるので、注意が必要(後述)
# Install Mackup
brew install mackup
vi ~/.mackup.cfg
# ↓を見ながら設定ファイルを書く
# https://github.com/lra/mackup/blob/master/doc/README.md
# Launch it and back up your files
mackup backup
MS Officeのライセンス
https://portal.office.com/account/#installs → デバイスの部分にあるMicrosoft Officeのインストール済み端末一覧から、旧PCを削除する必要がある
移行
Applicationのインストール
-
- Mac App Storeからインストールしたものは、App Storeが購入済みアプリを覚えてくれているので、購入済みアプリリストから再インストールする。
-
- Mac App Storeを通さず手動で入れたものは、
#インストール済みソフトウェアの確認で出したApplicationリストを見ながら地道にインストールする。
- Mac App Storeを通さず手動で入れたものは、
Homebrew
#インストール済みソフトウェアの確認で出したHomebrewのBrewfileを用いて、以下を実行する
https://brew.sh/index_ja
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew bundle
mackup
Homebrewでmackupはインストール済み
vi ~/.mackup.cfg
# ↓を見ながら設定ファイルを書く
# https://github.com/lra/mackup/blob/master/doc/README.md
mackup restore
starship
brewや.zprofileを移行後、 ターミナル上でNerdFontを指定する必要がある と思っていたのですが、移行後何もしなくてもNerdFont(Inconsolata Regular Nerd Font)が指定されていたので何もする必要がなかった。
- mackupが旧PCから設定&フォント本体を移行してくれたっぽい?
asdf
# 公式プラグインを雑に入れる
cut -d' ' -f1 .tool-versions | xargs -I{} asdf plugin add {}
# 公式でないプラグインも入れる↓
asdf plugin-add docker-compose https://github.com/virtualstaticvoid/asdf-docker-compose.git
- 作業ログ: pythonは、M1対応の入ったバージョンにあげておく必要があった。
- https://github.com/pyenv/pyenv/issues/2143#issuecomment-1070640288
- gcloud をインストールする場合は3.8系以下のpythonが要るので、3.8.13を指定すれば良い。
pip
Homebrewと同様に
pip install -r pip.txt
MacVim
MacVim-KaoriYa ( https://github.com/splhack/macvim-kaoriya )は更新が止まっててアレなので、MacVim + vim-kaoriyaをインストールする。
https://qiita.com/watagashi/items/8f3c01cb37ecf9eb5ce0 を参考にする。
Vundle
( .vimrc
はmackupでリストア済み)
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
vim +PluginInstall +qall
gcloud
( リストアされてなかった。~/.config/gcloud/
はmackupでリストア済み)
移行が必要なのは ~/.config/gcloud/configurations
フォルダ以下のファイルだけのはず(多分)なので、これだけ手で持ってくる。
asdf install gcloud latest
cd ~/.config/gcloud/configurations/ sftp 12345678n.local
> cd .config/gcloud/configurations/
> get *
# configgurationsが見えるか確認
gcloud config configurations list
# ログイン
gcloud auth login
# terraform 等で使う認証鍵の取得
gcloud auth application-default login
# gsutil syncで必要
pip install -U crcmod
# なんだかんだ必要
gcloud components install beta
# k8s(cloud composerで必要になった)
gcloud components install kubectl
SSH鍵
SSH鍵はそっくりそのまま新PCに持ってくることにする
Macのリモートログイン設定をON(自分のみ)にして、新旧PCを同一ネットワーク上に置いて、旧PCで以下を実行する
sftp 12345678.local # 新PCのhost
> cd ~/.ssh/
> lcd ~/.ssh/
> put *
slack-ruby-client
業務上 https://github.com/slack-ruby/slack-ruby-client を使っているので認証を通す
$ slack init
Enter Slack API token: [ここにAPIトークンを書く]
Unity
Unity Hubのインストール
https://unity3d.com/jp/get-unity/download/archive
その後、↓から必要なUnityのバージョンをUnity Hubのリンクからインストールすれば良い。
https://unity3d.com/jp/get-unity/download/archive
なお、ライセンスは1ライセンス1マシンのため、↓の下の方にある"Activation"の項目で、旧PCのアクティベーションを外し、新PCでアクティベーションコードを入力する必要がある。
https://id.unity.com/en/subscriptions
Slack
https://slack.com/intl/ja-jp/help/articles/212681477 の、「メールでサインインする」の手順でログインすると、メールアドレスに紐づくアカウントにログインできて便利。
その他のファイル
例として、 git
フォルダを移す場合
-
git
フォルダをzipアーカイブ化- ファイル数に依存して転送時間が増えるので、フォルダをそのまま転送するのではなく、アーカイブ化して転送ファイル数を減らすのをオススメします
- 新PCのファイル共有を有効にする
- Finderを使ってファイルを転送
- 社内ネットワークだと3GBを5分くらいで転送できる
- アーカイブを解凍
Jetbrainsのライセンス
- Intellij IDEAを起動時にJetbrains Accountを聞かれるのでログインすればライセンスが通る
- 旧PCのライセンス返却とかは要らないらしい
- 同時に1PCでしか起動できない制約があるので同一ユーザー複数マシンでのライセンス返却の概念がないっぽい…?
移行し忘れたdotfileがないか確認
Mackupでほとんどのdotfileは移行できているはずだが、漏れているものを探す。
- 実際 .bigqueryrcや.pg_service.conf、.gitignore_global, .sqliterc, .bazelrcが移行できていなかった
Macのリモートログイン設定をON(自分のみ)にして、新旧PCを同一ネットワーク上に置いて、以下を実行する
# 移行先でホームディレクトリのpathが全く同じであることを仮定している
diff <(ssh 12345678.local ls -a ~) <(ls -a ~)
# ~/Library/Application\ Support/ 下のファイルなど、手で書いた記憶がない(アプリが勝手に書いた)設定ファイル等は最悪新PCで再度設定すればいいかの気持ち
ファイル拡張子のアプリケーション紐付け
前回のPC移行では、ファイル拡張子のアプリケーション紐付けが新Macに移行できておらず、全部吹き飛んでしまった。
ファイル拡張子の対応関係は ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist
というファイルに保存してあるので、これを忘れずに移行する。
com.apple.launchservices.secure.plist
を旧PCのもので上書きしたあと、 PC再起動することで 、ファイル拡張子とアプリの対応が移行できた。
- 新PCのもとの
com.apple.launchservices.secure.plist
は、バックアップを取っておいたほうが良さそう。
Macの辞書アプリの辞書ソース
手軽に英語の意味を調べるとき等に、3本指で辞書を起動するのが便利です。
日本語設定のMacでは標準で以下の4つの辞書が入っていますが、この設定はApple ID等では保存されず、端末を変えるごとに毎回設定変更しないといけないようです。
- 英英辞典とか英中時点とか使う人は毎回設定しないといけない。
移行方法を調べようかと思ったが、手で移行したほうが楽そうなため、PC交換のたびに手動で設定している。
余談: PC交換の原因
- 1回目: バッテリー膨張&バタフライキーの爪折れ&リモートワーク直前だったため早めに交換
- 2回目: 特定のキーでチャタリング(2重入力)と無反応が10回に1回くらい発生した&導入から時間の経過した備品だったため交換
- 3回目: バッテリー不良(2時間ほどで放電する)、高負荷時に電源ケーブルをつけていても再起動することがある、同一スペックのMacbook Intel PCと比べてビルド速度が2〜3倍くらい遅い(ため、しょっちゅうタイムアウトしてテストが通らない)