ソフトウェアの原子:ブール代数と数値システム

プログラミングの最小単位はBoolean Algebra(ブール代数)です。
これは「真 (True)」か「偽 (False)」の2値のみを扱う論理体系であり、現代のあらゆる条件分岐の基礎となっています。
動画では「金持ち (Rich)」と「ハンサム (Handsome)」という変数を用い、`AND`(かつ)、`OR`(または)、`NOT`(否定)の演算が、どのように実世界の意思決定を論理モデル化するかを鮮やかに解説しています。
「魔法」に見えるコードも、突き詰めればこの単純な論理の積み重ねに過ぎません。
重要な気づき: 複雑なif文に出会ったら、ベン図や真理値表を書き出すことで、論理の欠陥を視覚的に特定できます。
次に理解すべきはNumeral Systems(進数システム)です。
人間が指の数に基づいた「10進数 (Base 10)」を使うのに対し、コンピュータはスイッチのオン・オフに対応する「2進数 (Base 2)」で動きます。
このギャップを埋めるために、エンジニアは以下のシステムを使い分けます。
- Base 2 (Binary): データの最小単位。2, 4, 8, 16...と倍々で増える。
- Base 16 (Hexadecimal): 0-9とA-Fを使用。バイナリを簡潔に表現する(例:カラーコード)。
- Base 64: 画像などのバイナリデータをテキスト文字列としてエンコードする際に多用される。
数値表現において最も注意すべきはFloating Point(浮動小数点数)の精度です。
JavaScriptやPythonで `0.1 + 0.2` を実行すると `0.30000000000000004` のような微細な誤差が生じます。
これはコンピュータが有限のビット数で無限の小数を表現しようとする際に生じる必然的な「丸め誤差」です。
金銭計算など精度が命の処理では、この数学的制約を無視することは致命的なバグに繋がります。
| 精度 | ビット数 | 用途 |
|---|---|---|
| 単精度 (Single Precision) | 32-bit | メモリ節約が優先される計算 |
| 倍精度 (Double Precision) | 64-bit | JS/Python等のデフォルト精度 |
効率の極意:対数と集合論が解き明かすデータ構造

アルゴリズムの効率を語る上で欠かせないのがLogarithmic functions(対数関数)です。
丸太を半分に切り続けるメタファーで説明される通り、対数は「指数(Exponentiation)」の逆演算です。
エンジニアにとっての対数は、データ量が2倍になっても計算ステップが1しか増えない驚異的な効率性を象徴します。
例えば、100万件のデータから1件を探す際、1つずつ確認すれば100万回かかりますが、対数的なBinary Search(二分探索)ならわずか20回程度の比較で完了します。
鍵: 「対数的にスケールする」とは、データ爆発に耐えうる最強のアルゴリズムであることを意味します。
データの「集まり」を扱う際には、Set theory(集合論)が威力を発揮します。
リレーショナルデータベース(RDB)のテーブルはまさに「ユニークな値の集合」です。
エンジニアが日常的に使う `JOIN` 操作は、集合論における以下の概念そのものです。
- 1Inner Join: 交わり(Intersection)。両方の集合に存在する要素のみを抽出。
- 2Full Outer Join: 和集合(Union)。両方の集合の全要素を結合。
- 3Left/Right Join: 差集合と交わりの組み合わせ。
これらはDiscrete Math(離散数学)の範疇であり、連続的な値を扱う微積分とは異なり、コンピュータのように「区切られた値」を扱う世界では必須の武器となります。
構造と予測:グラフ理論から統計学へ
現実世界の複雑な関係性をモデル化するのがGraph Theory(グラフ理論)です。
SNSの友人関係、道路ネットワーク、ウェブページのリンク構造などは、すべて「ノード(点)」と「エッジ(線)」で表現されます。

