作業漏れ厳禁! 職業エンジニアのためのバックアップチェックリスト
バックアップ、とってますか?
「取り忘れはない」と自信をもって言えますか?
新卒入社から1年半の私が、思いつく限りの「会社でエンジニア個人がバックアップすべき資産」を列挙してみました。
前提
- 会社のインフラ/サーバ管理者がやってくれる部分は信頼して任せる
- クラウドサービスや社内サーバのデータ消失は、それらの管理者が未然に防いでくれることを期待し、あくまで自己管理の資産のみを対象とする
常識編
まずは、エンジニア以外の人にでも通じる部分から確認していきましょう。
ブラウザのプロファイル
ChromeやFirefoxに代表されるブラウザには、ブックマークや履歴、パスワードなど多くの重要情報が入っています。
これらはブラウザの機能でログインをしていれば、GoogleやMozillaといったブラウザベンダが同期をしていてくれるので、バックアップは不要と考える方もいます。
しかし、それでは不十分です。
- あなたは、インストールしたアドオンを全部言えますか?
- 各サイトの会員登録の際、「パスワードを保存しますか?」に「いいえ」と答えたことは一度もありませんか?
- あなたがインストールしているすべてのアドオンはブラウザベンダの規定を将来にわたって完璧に順守し、開発が継続され、ストアから削除されないと言い切れますか?
- 各サイトごとの通知許可設定、カメラ等へのアクセスの許可/不許可などがリセットされても文句はありませんか?
- 自作の非公開アドオンはありませんか?
どれか一つでも「はい」と言い切れないならば、今すぐバックアップを。
PC内のドキュメント・写真等
最近はGoogle DocumentやMicrosoft Office on the webに代表されるウェブ上でのドキュメント編集が増えていますね。大企業を信用するなら、これらはバックアップ不要です。また、会社内では会社が用意した共有ドライブ等にデータを格納することも多いでしょう。
ですが、手元のPCには本当に必要なデータを保存していないでしょうか?
- テキスト、Word文書、プレゼンテーションなど、手元のPCで書いてしまうことは本当にありませんか?
- お気に入りのアイコン画像、LGTM画像、イベントの写真など、もれなくクラウド保存できていますか?
- メールで受け取った資料は確かにメールサーバーに残っていますが、それを手元のPCに整理して保存することによって探索を効率化していませんか? メール検索だけで必要な過去資料をすぐに探し出せますか?
どれか一つでも「はい」と言い切れないならば、今すぐバックアップを。
IMEの履歴や辞書登録のデータ
- PC購入直後のアホなIMEに耐えられますか?
- 辞書登録機能をフル活用していたりしませんか?
- 変換の設定は一切カスタマイズせず、デフォルトのまま使用していますか?
どれか一つでも「はい」と言い切れないならば、今すぐバックアップを。
エンジニア基礎編
続いて、エンジニアならば意識している人も多いと思われるものを確認です。
IDEのディレクトリ
- カスタマイズした設定を、全部やり直せる自信がありますか?
- 活用している拡張機能を全部言えますか?
- 使っているバージョンを言えますか?または、繁忙期にデザインや操作感が違うバージョンをいきなり使い始めることに抵抗はありませんか?
どれか一つでも「はい」と言い切れないならば、今すぐバックアップを。
サーバーの設定ファイル
- コンテナ化されていない開発サーバのApacheやnginxなどのミドルウェアのconfigファイル、手元のPCに設定したhostsファイルなどをバックアップし忘れていませんか?
鍵
鍵をなくすと大変です。
そして、~/.ssh/configファイルもないと、どの鍵がどのサーバーのものかわからない、ユーザー名がわからないということも起こりえます。
セキュリティに十分留意したうえで、~/.sshディレクトリのバックアップは必須でしょう。
エンジニア応用編
え?それ必要?と議論になる。でも私は必要だと思うものたちです。
これをお読みの皆様は必要だと思いますか?
パッケージ管理ツールで落としたパッケージ
phpならcomposer、jsならnpm、pythonならpip等、パッケージ管理ツールは皆さまお使いかと思います。こういったツールは、管理ファイルとlockファイルだけgit等のバージョン管理ツールに乗せておけばあとはコマンド一発・・・なんて思っていませんか?
たしかに理論上はそうなのですが、パッケージの公開停止や一部バージョンの削除などによって、3年・5年と経つうちに「二度と環境構築できない」状態に陥ってしまうことはないでしょうか?
また、npmやpipのバージョンによってインストールが失敗するケースなどもありますが、どのパッケージをどのバージョンのツールでインストールしたか、記録はありますでしょうか?
例えば、こんな記事もあるようですよ。
https://qiita.com/y13i/items/15407441b2bd1ec47baf
この例ではgitHubを探しに行けば解決可能なようですが、いつも逃げ道があるとは限らないのではないでしょうか。
大事なパッケージ、ぜひバックアップを。
各種ミドルウェアや言語環境のインストーラ
各言語やミドルウェアの旧バージョンをいつまでも入手できるなんて、夢物語です。
もしも「信じられない」という読者は、PHP5.1とJRE7のwindowsインストーラでも探してみてください。本記事執筆時点ではまだ見つけることができますが、たどり着くのはなかなか大変です。
当然、会社で使うものですから、ちゃんと信頼のおける公式サイトから探してくださいね。
信頼のおける古いパッケージの入手には、思いもよらぬ困難が待ち受けているかもしれません。いつか、公開が止まってしまうかもしれません。何より、PCが壊れて大忙しの時に、パッケージ探しなんて雑務は辛すぎます。
社歴の長い会社であれば、長期間メンテナンスしてはいないが動いてもらわねば困るソースコードなんていくらでもあるものです。
怖くなってきた方は、ぜひバックアップを。
おわりに
バックアップには手間がかかりますが、エンジニアを長くやっていれば、誰しも一度はその大切さが身に染みたエピソードをお持ちではないでしょうか。
みんなで知恵を出し合い、漏れのないチェックリストを整備し、定期的に実施していきたいものです。