見出し画像

プログラミングに向いているのはWindowsかMacか問題

ITエンジニアの好きなエディタネタを書いたので、同じように盛り上がりそう(不毛になりそう)なWindowsかMacか問題。ま、LinuxとかFreeBSDとか対象を広げるとますます発散するので、とりあえずこの二択で。

Macがプログラミングに向いている、と勧める人が多いが…

でも、世の中のOSの8割はWindowsというのは厳然とした事実です。自分も某メーカーのシステム子会社時代にUnix系の端末を使っていた時を除けば、仕事の端末はWindowsしか使ったことはありません。ま、実際にはその向こうでUnixとか使うことが多かったのですけど。
その割に、ドラマも含めてテレビとかに出てくる「開発者」ってMac率高いのですよね。開発者じゃない事務作業をしている人も含めて、テレビに出てくるものは異様にMac率が高いです(100%ではないので、今の日曜劇場ではvaioが登場してますが)。

ちなみに、10万円以上のパソコンは経理上は固定資産の扱いになるので、基本それ以上になるMacは導入しにくいという事情はありそう。固定資産扱いになったらちゃんと償却しないといけないですから。まあ、どのみち今は大きな会社ではリースで導入するのが普通ですけど。
そういう点で、フリーランスはMac使いがち、サラリーマンプログラマはWindows使いがち、というのはあるあるかと。

世にある「Macのメリット」に物申す

なんて言うと喧嘩を売ってる様ですが。だが、ちょっとどうかな?と思うものがあるのも確か。

開発環境が整っている

その手のサイトで挙げていたMacのメリットとしてあるのがこれ。でも、これホント?理由としてmacOSはもともとUnixから作られていたOSで、Unixコマンドが使える。だから、WIndowsより開発環境が整っている、と。

いやいや、Unixコマンドが使えるだけならWindowsでもいくらでも方法はあるし、ちょっと微妙な面もありますが今ならWSL(Windows sub system for Linux)もあります。

また、Unixコマンドがある=開発環境が整っていると言うのもどうなんでしょう。つくるアプリにもよりますが、IDEが整っているとかの方が重要なケースもあるでしょう。そうすると、Unixコマンドが整っているかどうかは重視されないケースもあります。一概に言えないことなのに「Unixコマンドが整っている=開発環境が整っている」は言い過ぎかと思います。

そもそも、今はコンテナを使うことも多い時代。ベースのOSがWindowsだろうとMacだろうと、コンテナ上でLinuxとかで環境を組んでしまえば同じことです。正直、ベースのOSなんてなんだって構わないという時代です。

ハードが良い

これもどうなんでしょう。確かに、Macと同様なスペックのWindows PCがMacと同程度の予算で用意できるかと言えば微妙。そういう意味ではハードが良いというのは間違いとは言いません。
ただ、Macってスペックが過剰なんですよね。確かにMacを基準にすればコスパは高いのですが、その縛りを外せばコスパが良いとは言い切れないです。
まあ、確かに良いものではあるし、なんなら中古で販売する時も値下がりしにくいので、そういう意味では良いのですけど。

操作に一貫性がある

まず最初に断っておくと、Windowsもちゃんとデザインガイドがあり、それに従えば操作の一貫性が保てます。問題はそれに則らない開発者が多いこと。今でこそ、Windowsもマイクロソフトのアプリストアがありますが、多くのアプリはネットで普通にダウンロードできます。
シェアの差が開発者の数の差につながり、そうなると玉石混交になってしまう。つまり、MacのメリットというよりはWindowsのデメリットと考えます。

あとはAndroidとiPhoneと同様、Apple製しかないMacと違って、さまざまなメーカーが参入しているWindows PCはAndroid端末ほどではないがバラバラなので、使い勝手も変わってしまうことがあるので一貫性がないというのも確かです。
ただ、逆にAppleの考え方が合わない、というケースもよくあります。その場合、諦めて妥協するか、Windowsに移行するかのどちらかしかありません。Windowsならベースの考え方は変わらずに、他のメーカーという選択肢があるかもしれません。つまり、多様性。

Macを選択するなら、Apple信者になって体をAppleに合わせるくらいの気持ちでいないとやってけないと考えておいてください。最初のうちはAppleはすごい!使いやすい!と思うかもしれません。ただ、Apple信者の中でも「昔の方が良かった」という声が一定数上がっています。もちろん、ジョブズが亡くなり、考え方が変わってきた部分もあるのでしょう。
それはともかく、Appleはその時々の彼らの考えが全て。良くも悪くもクローズな市場なので他の選択肢はありません。どこかで考え方がずれていく可能性は否定できません。
マイクロソフトも独善的だし、仕様決定権が彼らにある以上同様なことは起こります。が、それでも彼らにはいろいろな声が入るし、そこそこの多様性が保たれています。

マルチOS

確かにMacはBootcampや仮想環境でWindowsも使えますが、逆はできません。macOSをAppleが解放しない限り実現できないので、これはMacのアドバンテージです。
ですが、Windowsメインの開発者がmacOSを使いたいことがあるでしょうか。まあ、使えるに越したことはないですが、これはAppleの政策の話であって、ユーザがどうにかできるものではありません。それをもってMacのメリットとするのはどうなんでしょう。

macOSを対象としないのであれば、別にWindowsだってマルチOSです。エンジニアにとっての問題はmacOSをターゲットとするかどうか。するならそもそもMacを買えって話。逆に言えば、WindowsをターゲットにするならMacで不可能ではないが、どのみち実機が欲しいのでWindowsがいい。ターゲットがどっちでもなくLinuxとかなら別にどっちでも構わないというだけです。
強いて言えば、ベースOSがLinuxに近いmacOSのMacとなりますが、それが決め手にはなりませんよね?

なお、マルチOSという意味では、M1/M2 Macでデスクトップ向けのLinuxを使う場合は注意が必要です。Windowsは基本インテル系、M1/M2 MacはARM系というアーキテクチャの違いはご存知かと思います。
現状ではデスクトップ向けのLinuxにはARM向けがないものもあります。まあ、これは今後改善されるかもしれません。ARM対応のデスクトップ向けLinuxもあります。サーバ向けのLinuxを入れて自前でデスクトップ環境を構築する手もあります。何ならデスクトップは使わずにターミナル経由で使うならば何の問題もありません。ただ、今話題のデスクトップ向けLinuxは割とインテル(つまりWindows系PC)しか考えてないようです。

Macでもよいかではなく、Macが必要か?

じゃあ、どこで選べば良いのか。それはMacが必要なのかどうか。
Macが必要になるのは以下のケース。

  • Mac用のアプリを開発したい

  • iOS/iPadOS用のアプリを開発したい

つまり、Appleエコシステムに参加したいのであれば必然的にMacです。
もちろん、今では必ずしもMacでなくてもMacやiPhone、iPadのアプリを作ることは可能です。
ですが、そこで余計な苦労をする必要もありません。積極的にAndroidでもiPhoneでも使えるアプリをつくりたいなら別です。そういう明確な目的がある人は環境で迷うことはないはず。

基本的にどっちが良いか迷う人はどっちでもよい人です。ならば、無難な方にしておきなさいというのが身も蓋もない答えです。

これを書いている人は?

日電のPC-9800シリーズを皮切りに、PC/AT互換機(DOS/V)などを中心に主にマイクロソフト陣営での経験が約40年。某システム子会社に約30年いましたが、その間利用したいた端末も一時Unix(!Linux)を使っていた時期を除けばやはりMS-DOSやWindowsです。

その間、一度プライベートでMacBook Airを使ってみたこともありますが忙しさもあって挫折。その後、金のあるうちにと退職前にM1のMacBook Proを購入。今は16インチMacBook Pro(M1Pro)と合わせてメインはMac(ゲームを除く)という状況です。

つまり、Windowsを1.03からという非常に長いWindows経験を持ちつつ、今はmacOSをメインにしているわけです。

それだけMacがよいのかといえば、実はそうでもありません。
確かにiPhoneやiPadと何もせずに連携できることなど、メリットも大きいです。ただ、純粋に開発環境として見るならば、開発ターゲットによる制約がなければどっちでもよいと思ってます。
そして、物理的にWindowsでないとできないことも多いですが、Macでしかできないことはどちらかというと精神論的なものが多いです。どうしてもこのアプリを使いたいというのがあれば選ぶべきですが、そうでないなら無難なものを選んだ方がよいです。

どちらかを選ぶならどちらにするのか?

重要なことなので繰り返しますが、最初からターゲットが決まっているなら、それに合う方にしなさいというのが大前提。
あるいはどうしてもMacがよいという理由があるなら、Macを買えばよいでしょう。ただ、そういう人はこんな記事読まないでしょうから、想定読者層から外れています。

今回対象としているのは、特にこだわりがないがプログラミングを学ぶためになんらかのPCを買いたい。だけど、世の中にはWindowsとmacOSがあるのでどっちがよいかわからない、という人です。
そういう人は迷ったら「無難だから」Windowsにしておきなさい、という話です。

それでもMacを選ぶ?

ただ、Windows PCは選択肢がたくさんありますよね。個人的な選択基準はありますが、それを紹介しても仕方ないので割愛。そういうところで迷いたくないという人は、形態やCPU、メモリ、ストレージ容量を選択するだけでよいMacというのは考えるのが楽なのでおすすめ。

ただし、世の中はスタバやテレビの世界と違ってWindowsが主流であるということは忘れないでください。一部の企業を除いて会社から支給されるPCはほぼほぼWindows PCです。
仮に選択できるなら、関係が深くなりそうな先輩が何を選択しているかを参考にするとよいでしょう。WindowsユーザにとってMacは未知なので、仮にあなたにわからないことがあっても、その先輩がWindowsユーザなら解決できないことが多いと思います。

実際、どうなの?

まあ、自分が見える範囲だと母数が小さくなりますが…。

今、とある企業グループの新人研修に関わってます。中にはかなりできる方がいて研修内容の先の方に進んでます。それで先の方で使う環境構築の問題について質問されたので対応しました。その方はMacユーザでした。
自分はMacも使えるので対応できましたが、他の講師だったらどうだったか。いや、他の講師の経験を押さえているわけではないのでMac経験者もいるかもしれません。そもそも、今回の問題自体はMac起因の問題ではないのでMacを知っているかは無関係です。とは言え、「Macかー、知らないんだよね」と回避される可能性もあることを覚えておいてください。

つまり、会社としてMacを積極的に導入しているのでなければ、Macを選択した際の問題解決は自己責任だということです。なんでも自分で解決できる人でなければ難しいです。現に解決できるかというよりは、そういうマインドを保てるかという話です。
(もちろん、その会社がMacを積極的に導入しており、かえってWindowsが少数派ということならMacにすべき。)

もっとも、WindowsだろうとMacだろうと、ある程度は自己解決できないとエンジニアとしては厳しいですが。


拙い記事でございますが、サポートしてもよいよという方はよろしくお願いします。著者のやる気アップにつながります。