気になるM1 Macでのバックエンド開発環境
昨年末にM1 MacBook Airを購入して意外と快適に使えています。フロントエンド開発に関してはRosetta2の利用でほとんど問題なく使えている印象です。 Dockerもプレビュー版が使えています。
しかし気になるのはバックエンドの開発用途に使えるかということです。私は現在Intel Mac(MacBook Pro 16inch)のローカル環境とVirtualbox+Vagrant+Ubuntuの仮想化環境でGolangやPython、nginxを使用して開発しているのですが、Appleの言う「2年後にApple Silicon移行」ってバックエンドの開発環境はどうなるんだろうと不安に思っていたのですが、どうやらDockerの対応で解決できそうですね。
New Apple MacBook Pro (16インチ, 16GB RAM, 512GBストレージ) - スペースグレイ
- 発売日: 2019/11/18
- メディア: Personal Computers
Apple M1チップ対応「Docker Desktop」はx86イメージのビルドと実行が可能
Docker社のブログに以下の記載がありました。
Many developers are going to experience multi-platform development for the first time with the M1 Macs. This is one of the key areas where Docker shines. Docker has had support for multi-platform images for a long time, meaning that you can build and run both x86 and ARM images on Desktop today. The new Docker Desktop on M1 is no exception; you can build and run images for both x86 and Arm architectures without having to set up a complex cross-compilation development environment.
Docker Hub also makes it easy to identify and share repositories that provide multi-platform images.
Google翻訳
多くの開発者は、M1Macで初めてマルチプラットフォーム開発を体験する予定です。 これは、Dockerが優れている重要な領域の1つです。 Dockerは長い間マルチプラットフォームイメージをサポートしてきました。つまり、今日デスクトップでx86イメージとARMイメージの両方をビルドして実行できます。 M1の新しいDockerデスクトップも例外ではありません。 複雑なクロスコンパイル開発環境をセットアップしなくても、x86アーキテクチャとArmアーキテクチャの両方のイメージを構築して実行できます。 Docker Hubを使用すると、マルチプラットフォームイメージを提供するリポジトリを簡単に識別して共有することもできます。
Docker Desktopはマルチプラットフォームに対応するので、異なるCPUアーキテクチャーのイメージビルドと実行も可能にするそうです。正式な対応時期は不明ですが、しばらくはIntel Macを手放さず、時期的に問題ないと判断したところでApple Silicon Macに環境を移せばよさそうです。
プログラマのためのDocker教科書 第2版 インフラの基礎知識&コードによる環境構築の自動化
- 作者:WINGSプロジェクト 阿佐 志保
- 発売日: 2018/04/11
- メディア: 単行本(ソフトカバー)
M1 MacBook Air快適です。バッテリー消費、チップ・基盤の温度上昇の問題もなくいきなり現れた未来のモバイルマシン的な印象です。これは数年に渡って使いそう。(噂のM2 Macは上のグレードみたいですし)
最新 Apple MacBook Air Apple M1 Chip (13インチPro, 8GB RAM, 512GB SSD) - スペースグレイ
- 発売日: 2020/11/17
- メディア: Personal Computers
M1 MacはまだVirtualBoxに対応していないので、最近はフロントエンド開発を勉強しています。フロントエンドってバックエンド以上に開発環境の変化の激しい世界だと思っていたのですが、最近は使用する技術がある程度決まってきてるんですね。(HTML/CSS/Javascriptくらいしか使ってなかったので知らない用語が多いです)