今回は、平澤章さんの「オブジェクト指向でなぜ作るのか 第2版」について、お話していきたいと思います。

オブジェクト指向でなぜ作るのか 第2版 表紙

この本を手に取った意図

僕がこの本を読むことにした理由は、次のようなことについて、いまいち理解していなかったからです。

  • なぜこのようなパラダイムに移り変わっていったのか
  • オブジェクト指向プログラミングで書いたプログラムがどういう原理で動作するのか

「オブジェクト指向でなぜ作るのか」には、このあたりの説明が章で割かれており、理解するには丁度いいかなと、手にとった次第です。

本の内容

本の内容はざっくり2パートに分かれていて、前半はOOPの技術の話。OOPを構成するクラスなどの要素の話題から、メモリ管理の話題があります。 後半は、OOPで作るシステム設計の話。OOPがベースになって、設計や開発手法にまで大きく影響している、という話に近いかなと思います。 設計にもOOPの概念が及んでいるから、OOPで作ろう、という感じでしょうか。

学んだ部分のまとめ

もともと手にとった意図が、原理と変遷の話だったので、ほんの前半を読んだだけで十分でした。 OOPへと移り変わっていく歴史は、それまでの歴史を説明する形で紹介されていました。

  • 機械語
  • アセンブリ言語
  • 高級言語(人間に読みやすい言語)
    • 構造化プログラミング(GOTOレスプログラミング)
      • 基本三構造(順次実行、条件分岐、繰り返し)
      • サブルーチン、メインルーチン

割とこのあたりは、大学の授業でも扱う範囲で、復習のような感じ。構造化プログラミングの概念が出てくる背景についても、他の書籍でちらっと読んだ記憶がありました。

あとは原理の話。とくに、メモリ管理の話。 ざっくり以下の3つで構成されていました。

  • 静的領域
  • ヒープ領域(動的な領域)
  • スタック領域

静的領域はプログラムの開始時にメモリを確保し、以降はそのまま維持されるスタティックな領域。 スタック領域は、プログラムを実行する各スレッドが持っていて、サブルーチン(メソッド)の引数やローカル変数などをスタックしている(処理の実行順序の管理っぽいかな?)。 ヒープ領域は、メモリを間借りする領域。実行に必要になったらメモリを確保し、不要になったら返却する領域のこと。

OOPの言語はだいたいこの構造なので、読んでよかったです。

まとめ

オブジェクト指向プログラミングに至る背景、動作原理の概要を知るため、「オブジェクト指向でなぜ作るのか」を読みました。 この本は、OOPを学び始めた人、これから学ぶ人に、おすすめできる本かなと思います。