クラスやインスタンスを覚えるのは、もうやめなさい。オブジェクト指向が「ルネサンス」である理由を知れば、設計の正解が勝手に見えてくる

AI・テクノロジー

プログラミングを学び始めて、最初に突き当たる大きな壁。それが「オブジェクト指向」ではないでしょうか。
「クラスは設計図、インスタンスは実体」「犬は鳴くし、歩く」……。教科書を開けば必ず出てくるこの説明。正直、こう思いませんでしたか?
「理屈はわかるけど、それが実際の開発でどう役立つのか、ちっともイメージできない」と。

もしあなたが、今この瞬間も専門用語の暗記に苦しんでいるなら、一度その教科書を閉じてください。実はオブジェクト指向とは、単なるコードの整理術ではありません。それは、芸術史における「ルネサンス」にも匹敵する、人類の知的な大転換なのです。

機械の都合に縛られていた暗黒時代から、世界をありのままに記述しようとする「写実主義」への転換。この歴史的背景を知れば、あなたの設計の迷いは消え、コードは劇的に美しく変わります。現代のコンピュータを支える、この巨大な設計思想の正体を紐解いていきましょう。

今回の配信内容🎧

  • オブジェクト指向が、なぜ芸術史における「ルネサンス」の写実主義と共通しているのか。
  • バラバラのデータが引き起こす悲劇。「データ」と「命令」の幸福な結婚とは。
  • Windows 95の登場が、なぜオブジェクト指向を世界標準へと押し上げたのか。
  • 内部の複雑さを闇に葬る「カプセル化」が、人間に与えた最強の武器。

プログラミング界の「ルネサンス」!世界を写実的に描くということ

「世界をより写実的に描こうという試みなんですよ」

この言葉こそが、オブジェクト指向のすべてを物語っています。14世紀イタリアで起きた「ルネサンス」。レオナルド・ダ・ヴィンチが人間を解剖学的に正しく描き、遠近法によって平らなキャンバスに奥行きをもたらしたように、プログラミングの世界でも「ありのままの世界をコンピュータの中に創り直そう」という動きが起きました。

それまでのプログラミングは、極めて「機械の都合」に寄り添ったものでした。コンピュータの内部、すなわちメモリという場所は、本質的に「1次元」のメモリ番地(住所)でしかありません。初期のプログラマは、この無機質な数字の羅列に、必死にデータの断片を詰め込んでいました。

しかし、オブジェクト指向は言いました。「人間はメモリ番地なんて考えない。目の前にある『モノ』として世界を捉えている。だったら、プログラムも『モノ』として記述すべきだ」と。
「オブジェクト指向プログラミングの主な目標の一つは、人々が実際に考えるのと同様に実世界システムをモデル化することである」という言葉通り、これは機械への隷属から脱し、人間の認知を取り戻すための、まさに「ルネサンス(文芸復興)」だったのです。

「バラバラのデータ」が引き起こす悲劇。不整合の嵐を止めた“幸福な結婚”

オブジェクト指向以前の世界が、なぜ「暗黒時代」だったのか。それを理解するには、データと命令が完全にバラバラに存在していた恐怖を知らなければなりません。

「人間にはにわかに信じがたいんだけど、元来はストップウォッチに表示されている秒数とボタンって全然バラバラのところにあったんですよ」

初期のプログラミングでは、101番地に「プレイヤーのHP」というデータがあり、全く別の500番地に「HPを減らす」という命令が置かれていました。この両者を結びつけていたのは、プログラマの「記憶力」だけです。
「データと命令っていう全然異なるものが同じ場所に書いてあんの、変なの」という違和感こそが、バグの温床でした。例えば、魔法使いのMPを減らすつもりが、1000行離れた場所にある戦士の攻撃力データをうっかり書き換えてしまう。そんな「どこで何が起きたか不明なバグ」が日常茶飯事だったのです。

この問題を解決するために行われたのが、データと命令の「結婚」でした。
プレイヤーの「HP(データ)」と、「ダメージを受ける(命令)」を一つのパッケージにしてしまう。人間が自分の名前を持ち、自分の意思で歩くように、コードの中でもデータと行動をひとまとめにして管理する。これが、あなたが教科書で学んだ「クラス」や「オブジェクト」の真の正体です。この発明によって、情報の不整合という不条理な嵐は、劇的に鎮まることになったのです。

Windows 95とGUIが、オブジェクト指向の流行を決定づけた

オブジェクト指向という思想自体は古くからありましたが、それが1990年代に爆発的に流行した背景には、歴史的な一大イベントがありました。それが、Windows 95の登場です。

それまでのコンピュータは、黒い画面に白い文字を打ち込む「CUI」が主流でした。しかし、Windows 95の普及によって、マウスでアイコンを動かし、ウィンドウを開閉する「GUI(グラフィカル・ユーザー・インターフェース)」の世界が一般的になりました。

「現実世界にあるボタンってやつをパソコンの中にも置いて押せるようにしたらいいんじゃねって革命的ですよ」

このGUIの世界と、オブジェクト指向は抜群に相性が良かったのです。画面上の「OKボタン」や「閉じるボタン」を一つのオブジェクト(モノ)と見なせば、「ボタンというモノが、押されるという機能を持っている」と、現実そのままに記述できます。
私たちが普段当たり前に使っているWindowsやiPhoneの画面は、実はこの「写実主義」の思想が具現化した姿なのです。ボタンをクリックするという日常の動作が、そのままプログラミングの設計図に直結する。この「直感性」こそが、オブジェクト指向を世界標準へと押し上げた最大の原動力でした。

複雑さを闇に葬り、自由を手にする「カプセル化」の美学

オブジェクト指向を学ぶ上で避けられない、しかし最も誤解されやすいのが「カプセル化」です。これは単に「変数を隠すこと」ではありません。その本質は、人間が扱える情報の量をコントロールすることにあります。

想像してみてください。ストップウォッチを使うとき、あなたは内部の複雑な電子回路や歯車の動きを意識しますか? 意識しませんよね。あなたが触れるのは「スタート」と「ストップ」という2つのボタンだけです。

「オブジェクト指向の主な目標の一つは、内部の複雑さをカプセルの中に隠し、必要な機能だけをインターフェースとして提供することです」

カプセル化とは、まさにこれです。オブジェクトの内部にある何百行、何千行という複雑な処理を暗闇の中に隠し、外部にはたった数個の「ボタン(メソッド)」だけを差し出す。この仕組みがあるからこそ、プログラマは細部のバグに怯えることなく、まるで巨大なレゴブロックを組み立てるように、壮大なシステムを構築できるようになったのです。

正直なところ、私も最初は「なぜわざわざデータを隠して、回りくどいアクセスをさせるんだ?」と疑問に思っていました。しかし、大規模な開発になればなるほど、この「情報の隠蔽(いんぺい)」こそが、人間の知性を守る唯一の砦であることに気づかされたのです。


まとめ:オブジェクト指向:世界を描く新たな思想

この記事をまとめると…

  • オブジェクト指向は、世界をありのままに描こうとするルネサンスの「写実主義」と同じ思想を持っている。
  • 従来バラバラだった「データ」と「命令」を一箇所にまとめることで、1次元のメモリ番地管理という呪縛からプログラマを解放した。
  • Windows 95以降のGUIの普及が、「画面上のモノを操作する」というオブジェクト指向の直感的な強みを決定づけた。
  • カプセル化は、内部の複雑さを隠蔽することで、人間が脳の限界を越えずに大規模なシステムを構築できるようにした。

オブジェクト指向とは、冷たい機械の世界に、人間が感じている「現実のリアリティ」を持ち込むための知の革命でした。
あなたが次に「クラス」を書くときは、単なるコードのまとまりだと思わないでください。それは、コンピュータという暗闇の中に、あなた自身が定義した「新しい世界」を写実的に描き出す、クリエイティブな挑戦なのです。

配信元情報

番組名:ゆるコンピュータ科学ラジオ
タイトル:オブジェクト指向は、世界を写実的に描く営み。ルネサンスと同じ。【プログラミングパラダイム・シフト3】#66
配信日:2023-04-02

タイトルとURLをコピーしました