👨‍💻

エンジニアが「新しいMac」を検討する時――ハードウェアから紐解くコンピュータの話

2024/12/10に公開

はじめに

エンジニアとしてコードを書き続けていると、開発環境の快適さやマシンパワーが、自分の生産性に直結していることを実感することがあります。私は今M1 MacBook Airから新たなApple Silicon世代のMacへの買い替えを検討しています。
より高いパフォーマンスを出したいという気持ちに加え、この際なのでコンピュータの基本原理を改めて理解したいと考え始めました。

以下は私自身の備忘録として、CPUやメモリ、ストレージ、I/Oなどのハードウェアがソフトウェア開発にどのような影響を与えるのかを整理したものです。

コンピュータの本質:「計算する機械」から広がる世界

コンピュータは、もともと「計算する人」を指す言葉でした。膨大な計算作業を機械化する中で、電気スイッチのON/OFFを0と1で表し、あらゆる情報を計算可能にする仕組みが生まれました。

私が日常で扱っているソースコード、画像、動画、音声などは、最終的に0と1へと還元され、CPUやGPUが処理しています。このシンプルさがコンピュータの根底にあり、そこから多様な技術や表現が展開しています。

CPU:中央演算装置という「頭脳」

CPUは、命令やデータを解釈・実行する装置で、コンピュータの頭脳にあたります。
プログラムを最適化しても、CPU性能が足りなければ処理速度向上には限界があります。ビルドやテストを繰り返し、複数のコンテナや仮想マシンを同時に走らせる状況では、CPU性能が開発体験そのものに直結します。

Apple SiliconはARMベースで電力効率が高く、マルチコア性能も優れています。新世代のMacを選べば、ビルド時間が短くなったり、テストを素早く回せたりするのかと期待が膨らみますね。

メモリ:同時並行処理の「作業机」

コードで扱う変数やオブジェクト、データ構造はすべてメモリ上に展開されます。ブラウザ、エディタ、コンテナ、仮想マシンを同時に動かすと、メモリ消費は瞬く間に増大します。メモリが不足するとスワップが発生し、処理が重くなります。

十分なRAMを積むことで、並列作業がスムーズになり、不要な待ち時間が減ります。
余談ですが、私が過去参画したプロジェクトで支給されたPCがエクセルファイル2つ開いたらPCがフリーズする現場に配属されたことがあります。
詳細なPCのスペックは記憶していませんが、恐らく悲惨な予算のプロジェクトだったことでしょう。

ストレージ:データを蓄える「倉庫」

ストレージとは、OSやソースコード、ビルド済みアーティファクト、コンテナイメージなどを格納する「倉庫」です。その容量と速度は、プロジェクトの初期読み込みやビルドパフォーマンスに直結します。これはイメージがつきやすいかもしれませんね

高速で大容量なSSDがあれば、ファイルアクセスに伴う待ち時間が減り、開発のテンポを崩す要因を減らせます。煩わしい待機時間が短縮されれば、より滑らかにコードを書き進められるわけです。

GPU・ディスプレイ:視覚情報と並列処理能力

GPUは映像処理や並列計算に特化した装置です。高品質なディスプレイは、長時間のコーディングで生じる眼精疲労を軽減し、複数のウィンドウを見やすく配置するための視認性を高めてくれます。綺麗なディスプレイだと見ていても気持ちのいいものですね。

アナログからデジタルへ:0と1の恩恵

あらゆる情報を0と1で扱うことで、劣化のないコピーや高速な伝送、容易な修正が可能になります。プログラム内の変数や関数呼び出し、データ処理結果は、すべて0と1として記憶・処理されています。この単純な基盤が、高速・正確な演算を支えてくれているわけですね。

ハードウェアとプログラミング:変数・処理速度への影響

プログラム中の変数はメモリ上に配置され、CPUがそれを参照して計算し、処理結果を再びメモリへ書き戻します。処理速度はCPU性能、メモリ帯域、ストレージ速度などによって決まります。

高性能マシンを用意すれば、複雑なアルゴリズムや大量データを扱う処理でも、短時間で結果を得られます。これにより、コード変更から検証までのフィードバックループが高速化し→開発効率が上がるというわけです。いわゆるハイスペックPCですね。

「計算機」から「創造の場」へ

コンピュータは「計算機」にすぎませんが、その計算能力が膨大になることで、単なる計算を超えた「創造の場」となっています。性能の高いマシンは、アイデアの実行までの時間を短縮し、思考と実装を行き来するスピードを引き上げてくれます。

以上、新しいMacを検討するにあたり、コンピュータの仕組みとハードウェア要素を改めて整理した備忘録でした。

O-KUN Tech Blog

Discussion