新しく参入した現場でエンジニアがやる最初の仕事・・そう、開発環境の構築。
この記事では、私が2022年4月の転職を機にWindowからMacユーザとなり、Dockerを使って環境構築しようとした時の苦労と学びを紹介したいと思います。
- Mac乗り換えを考えているが、環境構築できるか不安だ
- まさしく今Mac×Dockerでつらみにハマっている
というようなあなたの参考になれば。
この世には2種類のMacがいる
Macユーザにはもう既知も既知でしょうが、この世には2種類のMacがいます。Intel x86アーキテクチャか、arm64アーキテクチャかです。意外と(自分のような)Windowsどっぷりマンは知らなかった。
非エンジニアの方向けに補足しておくと、これはコンピュータの中央演算装置(CPU、プロセッサ)の構造による分類です。ここでは細かい説明を省いて(け、決してできないとは言ってない)、それぞれを「Intel系」「Mac系」と呼ぶことにします。
Macを製造するAppleはもともと、このCPUをWindows PCにも搭載されているIntel系を調達していたのですが、2020年11月、満を持してMacのために開発したMac系のCPUを搭載するようになりました。
そしてこのCPU構造の違いが、今回私を苦しめる原因になったのです・・
M1 Macでエラーが解消しない・・?
ここらで、私がどのように苦しんだかも話しておこうと思います。
転職初日から、参入プロジェクトに既存であったキャッチアップ資料を参考に、Mac系CPUを搭載したMacbook ProでDockerコンテナを利用して開発環境(ローカルでいくつかサーバが立ち上がる)を作ろうとしました。ちなみにOS Montereyのv12.2.1です。無垢で純真な生まれたてのMacユーザである私は、安直に「ターミナル」を起動し、docker-composeコマンドでイメージをビルド、そしてコンテナ実行、と進めていきました(だってLinuxならこれでうまくいきそうだったんだもん)。これが苦労の始まりとも知らずに。
必要上、立ち上げたコンテナの中で、”yarn install”をする手順があったのですが、そこで「必要なコマンドが見つかりません」というようなエラーに遭遇。しかしそこはエンジニア、この程度のエラーなら慣れています。必要なコマンドが見つからないなら、ちゃんとセットアップしてあげれば良いのです。簡単、簡単。と思いきや、またも同じエラーが発生。およよ?
# 発生したエラーのイメージ
[4/4] Building fresh packages...
...
error /app/node_modules/@sentry/cli: Command failed.
Exit code: 1
Command: node xxx...
Arguments:
Directory: /app/node_modules/@sentry/cli
ここで私はチームのシニアエンジニアに相談、「この世には2種類のMacがいる」ことを知り、dockerコンテナ実行時には前述したCPUアーキテクチャを考慮することがあることを知ります。具体的な対策はこちらでどうぞ。(私のブログ記事へジャンプします)