仮想環境の根本
ゴールデンウィークの課題のひとつだったWeb3開発のための仮想環境の構築。
「公式ドキュメントからDockerfileをコピペでいけるやろ」と軽視していたら予想外に大苦戦。
これ以上引き延ばしているとピクチャレ大会開発に支障が出るのでギブアップすることにしました。
Web制作の世界では、複数人が開発する際にどうやって環境を統一するかが問題になります。
それぞれで別々のバージョンを使っていると、
ある人のマシンで再現しないバグが別の人のマシンで再現するといった現象が起きてしまうためです。
その原因はOSの違い、アーキテクチャの違い、言語のバージョンの違いなど多岐に渡ります。
Web制作の歴史は昔であれば昔であるほどこの違いの吸収に苦心していました。
あまりにも他のブラウザと動作が異なるInternet Explorerが多くの開発者に恨まれているのは、
この環境の違いによる追加の開発が大変だったからです。
IEの退場は少なからずweb開発の現場を楽にしているでしょう。
昨今はそんな環境の違いを吸収する画期的なソフトとしてDockerが存在します。
Dockerは環境をDockerfileという設計書によって定義し、
Dockerのコアエンジンはその設計書によってPCの中に仮想的なPC(コンテナ)を作ります。
このコンテナは同じDockerfileなら誰が実行しても同じ環境として出来るので、
環境の違いを吸収するのにうってつけというわけです。
Dockerはマネタイズに苦戦しているようですが、すでにデファクトスタンダードのように思います。
ただ、そのDockerも吸収できない環境の違いがひとつだけあります。
それは先に挙げたアーキテクチャの違い。つまり、CPUの処理方法による違いです。
これはハードウェアの問題なので、ソフトでどうこうしても解決できるはずがありません。
特にApple Silicon(M1以降のMacシリーズに搭載されるSoC)は従来のCPUとの互換性を持たないため、
Dockerfileに基づいてコンテナを作成するときに躓きがちです。
今回の問題もまさにそこで躓いてしまい、それでもどうにかできないものかと粘っていたのですが
結局短期ではどうにもなりませんでした。
普通アーキテクチャを指定してイメージをビルドするオプションを使うことによって
この問題は半ば無理やり解決することができるのですが、今回はそれも通用しなかったという。
M1 Macbook Proを買ったことは後悔していないしまだまだ今後何年も使っていくつもりですが、
このマシンの唯一と言ってもいい欠点がアーキテクチャの問題を抱えていることですね。
これのせいで今回みたいに環境構築では壁にぶち当たることも多いし、
基本的にチート対策ツールが入っているようなゲームを動かすことは絶望的と言われています。
まあゲーム機として買ったわけではないのでそれはいいのですが、
環境構築についてはいつかアーキテクチャの違いも意識しなくて済む技術革新がくればいいなと。
今回その方面でいろいろ調べているとなんかそういう兆しはありそうな雰囲気ですけどね。