今日はMicrosoftを褒めてみよう
昨日、少し古めのMacにDocker環境を入れようとして、久々に盛大にハマった。
「Dockerなら環境差異を吸収できます」 「コンテナ化すればどこでも同じように動きます」
……まぁ、理屈はその通りだ。
ただ、その“どこでも”には、わりと強めに条件がついていた。
- CPUアーキテクチャが対応していること
- OSがある程度新しいこと
- Docker Desktopのサポート範囲内であること
- 仮想化周りが正常に動くこと
- メモリもそこそこ積んでいること
結局、あれこれ試したあと、最後は静かに諦めた。
「ハードが古いので無理です」
Dockerという「理想」と、現実の「壁」
Dockerの思想自体は本当に素晴らしい。
昔みたいに、 「俺の環境では動く」 「ライブラリのバージョン違うんじゃない?」 「そのDLL入ってる?」 みたいな地獄から、かなり解放された。
私も実際、AWSやローカル開発で散々Dockerには助けられてきた。
ただ、その理想が成立するのは、実は「比較的新しいマシンを全員が持っている」という前提がある。
最新のMac。 十分なメモリ。 新しいCPU。 高速SSD。
そういう環境では、Dockerは確かに魔法のように動く。
でも、一歩レガシー側へ足を踏み入れると、途端に空気が変わる。
「あ、このMacはそのバージョン無理ですね」 「Intel向けです」 「Apple Silicon専用です」 「そのDocker Desktopはもうサポート外です」
気づけば、“環境依存を消す技術”そのものが、新たな環境依存を生み出している。
なんとも皮肉な話だ。
ふと思った。「Microsoftって、実はすごくないか?」
で、こういう時に思い出すのがWindowsである。
エンジニア界隈だと、Windowsは結構いじられる。
「古いものを抱え込みすぎ」 「レガシーだらけ」 「互換性維持のせいで汚い」
まぁ、言いたいことはわかる。
でも、実際のビジネス現場を見ていると、あの“しつこい互換性維持”って、ものすごい価値なんじゃないかと思えてくる。
昔のVisual Basic。 古いAccess。 謎のActiveX。 20年前の業務アプリ。
普通ならとっくに死んでいてもおかしくないものを、Windowsはわりと動かし続ける。
もちろん完璧ではない。 苦労はある。
でも、「完全に切り捨てる」はあまりやらない。
これは技術的負債というより、ある種の“責任感”に近い。
「最新化できない側が悪い」という空気
最近のモダン開発界隈には、少し独特の空気を感じることがある。
「まだその環境使ってるの?」 「アップデートすれば?」 「コンテナ化すれば解決」
たしかに正論だ。
でも、現実の会社には、
- まだWindows 10で頑張ってるPC
- メモリ8GBのノート
- 古い周辺機器に依存したシステム
- “止められない”業務システム
みたいなものが普通に存在する。
そして、そういう現場の方が圧倒的に多い。
新しいものを導入するのは簡単ではない。
特に業務システムは、「動いているものを変えるリスク」の方が、技術的な美しさより重い。
ここを無視して、 「最新Docker環境に載せ替えましょう!」 と言うのは、時として、
「今まで積み上げたものを全部捨てましょう」
とほぼ同義になる。
技術的正しさと、ビジネスの正しさは違う
モダン技術を追いかけるのは楽しい。
新しいツールを触るのも面白い。 私も好きだ。
ただ、ビジネスの世界では、“古いものを壊さずに維持する”という能力が、ものすごく重要になる。
そういう意味で、Microsoftはずっと泥臭い戦いをしている。
最新技術だけを追うなら、もっとスマートなやり方はいくらでもあったはずだ。
でも彼らは、 「昔の顧客が動かしているもの」 を、異様な執念で守り続けている。
これ、開発者目線だと嫌われがちだけど、経営目線で見るとかなり強い。
“古い資産を捨てない”という信頼は、企業システムではとてつもなく大きい。
おわりに
Dockerで「環境の標準化」を目指すのは素晴らしい。
でも、その“標準”は、誰を前提にしているのか。
誰を切り捨てているのか。
そこまで考えないと、本当の意味での「共通化」にはならないのかもしれない。
そんなことを、古いMacの前で、Dockerのエラー画面を眺めながらぼんやり考えていた。
……いや、まぁ、最後は普通に諦めたんだけど。