プログラミングに必要なマシンのスペックは?

プログラミングにはどんなコンピューターが必要でしょうか、という質問を受けることがあります。基本的に何でも出来る、というのが答えではあるのですが、気にするポイントは無いことはありません。
f:id:kyart:20210719154208j:plain

MacWindows

端的に言えば、お金に余裕があればMacのほうがオススメです。Macなら基本的にショボいスペックのマシンが(高いだけあって)ないので、今新品で買えるMacならたぶん何でも十分のスペックを備えていると思います。

Windowsでももちろん問題ありません。マシンそのものの性能というよりはWindows 10はWindows UpdateというOSの更新が頻繁に必要なので、使う通信が遅いとストレスになることが多い気がします。

Macの良いとこ

コマンドラインのターミナルが最初からついているため、Linuxのコマンドが使えること、これが一番だと思っています。

f:id:kyart:20210719154021p:plain
Macのターミナル

MacLinuxベースに作られているので、Linuxのコマンドがだいたいそのまま使えます。ウェブアプリケーションでは、最終的にLinuxのシステムに本番環境を作ることが多いので、本番環境を意識したファイルやディレクトリの構造を作れるのはありがたいです。

Macの悪いとこ

周辺機器をつなぐためのポートがType-Cが2つだけ、とか非常に少ない。
MacだとApple社の意向でUSBが無くなったりしたので、以前に使っていたUSB機器をそのまま使おうとするとアダプタを必要とするようになりました。
そのため単体で置いてあるとシンプルなデザインでスマートな感じがしますが、いろいろな周辺機器を使うためにつなごうとするとタコ足のようなアダプターとかにたくさんの周辺機器のケーブルが刺さっているというブサイクで使いにくい感じになります。
総じてそのために余分に結構お金がかかります。またApple社の気まぐれで次世代にはガラッと変わったインターフェースになる可能性もあります。

Windowsの良いとこ

安価で手に入ること、周辺機器なども含めて選択肢が多いことです。ソフトの種類も圧倒的に多いですし、資料として送ってくるExcelとかをネイティブの環境で開けるのもありがたいことです。
最終的な本番環境がWindowsなら、開発もWindows一択です。

Windowsの悪いとこ

Windows Updateが頻繁にあり、インターネット回線が遅いとかハードディスクがSSDでは無い時とかに動作が遅くなりストレスを強く感じます。
何かをインストールするとデフォルトのフォルダが、「Program Files」とか「Application Data」みたいなスペースがあるフォルダにインストールされたりします。コマンドからそれを使いたい場合に面倒です。
コマンドが貧弱で、コマンド・プロンプトではLinuxの代替になりません。Linuxで作る本番と似たような環境を作りたい場合に、一致させることができない(Linux OSだけでできることができない)のがストレスです。

ノートかデスクトップか

スペースの関係でノートが良いのでは無いかと思います。手が腱鞘炎気味とか、絶対にその場から動くつもりが無いのであればデスクトップのほうが安くて頑丈で、良いキーボードやマウス(とかトラックボールとか)を使う余地があるので、デスクトップのほうが良いでしょう。
総じてデスクトップのほうが快適に使えて疲れも少ないと思いますが、実際にはスペースの問題でノートパソコンを使うことになるのではないでしょうか。

スペックを見るポイント

細かく言うときりがないので、2つだけポイントを絞りました。ハードディスクとメモリです。CPUは動画とか3D編集のような処理をしないなら、良いCPUを入れたとしてもほとんど違いがわかりません。

f:id:kyart:20210719151913p:plain
Dellのサイトに並んでいるPCのサンプル

ハードディスク

赤で囲んだところがハードディスクです。ここは必ず「SSD」と書いてあるものを選んでください。一見値段が高くて容量が大幅に少ないので損な印象を受けます。しかし起動や使用時の速度が体感で数十倍違います。ここだけは絶対にケチってはなりません。

メモリ

緑で囲んだメモリの部分は、この例ではいずれも4Gbと成っています。少なくとも増設して8Gbくらいは欲しいかなと思います。CPUよりもメモリにお金を掛けたほうが処理が早く感じます。

まとめ

ハードディスクとメモリに気をつければ何でも良い、というのが結論です。
わざわざプログラミングのために新しいのを買う必要もなく、気に入ったマシンがあればそれを使うのが良いと思います。個人的には買い換えるとしてもMacを第一候補に考えますが、挙げたような不満もありますので人それぞれに選ぶのが良いのかなと思います。

(おまけ)Chrome Bookなど

安く売っているので気になっている方もいると思います。基本的にはキーボード付きの大型のスマホみたいなものですので、プログラミングを行う端末としては不向きです。

(おまけ)Linux系のOS

最初からLinux系のOSをインストールして使う、ということも考えられます。大学などで使い慣れているならそれも良いでしょう。
しかし一般人にはオススメしません。プリンタとかにつなぎたい時に苦労したり、ちょっとしたソフトをインストールできなかったり、Wifiにつなぐのが面倒だったりして気苦労が絶えません。