SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

イベントレポート

現在地からオブジェクト指向プログラミングを捉えなおす、リ・オリエンテーション【OCC2024基調講演レポート】

  • X ポスト
  • このエントリーをはてなブックマークに追加

 AI時代の開発にオブジェクト指向は必要か、現代の開発における「オブジェクト指向プログラミング」とは何か──。3月24日に開催されたObject-Oriented Conference 2024で「オブジェクト指向のリ・オリエンテーション〜歴史を振り返り、AI時代に向きなおる〜」と題して羽生田 栄一氏が基調講演を行った。

  • X ポスト
  • このエントリーをはてなブックマークに追加

「オブジェクト」とは? Alan Kayより、3つのメッセージ

 講演冒頭、羽生田氏は「リ・オリエンテーション」と題した本セッションの意図を、以下のように説明した。

羽生田 栄一氏
株式会社 豆蔵 取締役 羽生田栄一氏

 「一つは『オブジェクト指向ってこんなもんだよ』というオリエンテーションをするということ。もう一つは、そうは言っても『AI時代にオブジェクト指向いらないんじゃないの』という声もあるので、単純にオブジェクト指向にどういう方向性があり得るのか『向き直る』という意味をかけています」

 まずは、オブジェクト指向をソフトウェア工学の歴史から捉えていく。1970年代の構造化プログラミングの時代を終えて、1980年代はCASEツールの時代だった。その後、1990年代にオブジェクト指向が始まるが、日本は米国の動向から10年ほど遅れて2000年代に一般的になった。

 オブジェクト指向という言葉を生んだのはAlan Kayだ。彼はこの分野に限定した人物ではなく、ハッカーかつギタリスト、人文教養主義者と多くの肩書きを持っていた。羽生田氏は、「『オブジェクト』という言葉をプログラミングの世界に閉じて提唱したわけではない」と言い、以下のAlan Kayの「3つのメッセージ」を紹介した。

Alan Kayの3つのメッセージ
Alan Kayの3つのメッセージ

 1つ目の主張は、一見今のオブジェクト指向と違って見えるが、ここでのメッセージとはアブストラクション(抽象)の仕組みのことを指す。「クラスだけで抽象化するのは不合理で、メッセージも抽象化の仕組みである」という考え方として捉えられる。「そういうわけで、カプセル化だけにこだわった抽象化に対するアンチテーゼだと理解するといいかもしれません」と羽生田氏は指摘した。

 2つ目は、ダイナブックについての言及。羽生田氏によると「ダイナブック=パソコンと考えて、Alan Kayはパーソナルコンピュータの父と言われることも多いが、その言い方は半分間違い」。真のダイナブックとは社会の中でみんなが一緒に考え、仕事をしたり、発信したりできる環境のことだ。その環境を作り上げることの大切さを主張しているのである。

 3つ目の「未来を予測する最も確実な方法は、自分たちの手でそれを作り出すことである」というメッセージについては、「これとオブジェクト指向がどうつながるのか、講演の最後にお示しします」と予告した。

 ただし、オブジェクト指向という発想は、Alan Kayだけでなく、コンピュータに関わるさまざまな分野で同時多発的に生まれたとも言える。Simulaという言語やAlan Kayの発想を理論として発展させたActor理論、フレーム理論、OSのケイパビリティの考え方などもその一種である。

「抽象データ型」はどのような歴史の中で生まれたのか

 また、重要な考え方として「物事を捉える時にデータ的な観点と、機能的な観点、どちらを軸にしても正しい。よって両方のマトリクスで捉えるのが一番妥当だ」という話を紹介した羽生田氏。

 「ただ、マトリクスだと複雑でどこに注目すればいいかわからないので、列と行をシャッフルして、できるだけ真ん中に意味の塊が来るように変換をしようという発想が生まれる。それが抽象データ型であり、オブジェクトの考え方の根本です」

データ的な観点と機能的な観点のマトリクス
データ的な観点と機能的な観点のマトリクス

 さらに、抽象データ型をプログラミング言語の歴史から捉えると、以下のように説明できる。

 ビット列をそのまま扱うのは大変なので、記号・ラベルを付けたのがアセンブラだ。しかし、これでも人間が管理するのは難しいので、頻繁に使用される記号のシーケンスをサブルーチンの形でコールできるようにしたのが手続き抽象である。また、この手続きを3つのパターン(順次、分岐、反復)で構造化した。それでも大規模なシステムには対処しきれず、手続きをまとめたモジュールが生まれた。さらに、手続きを意味的に扱うために生まれたのが「抽象データ型」だ。

 羽生田氏いわく「オブジェクト指向では抽象データ型をクラスと言うが、本来の意味の抽象データ型は定義しきれていない」そうだ。本来の抽象データ型は、実装と仕様を切り離し、操作の意味をシグニチャと操作どうしの関係性(一種の代数)として定義する考え方である。

 羽生田氏は、PythonのStackを例に出し、「Stackのサイズがわかれば、中をarrayで実現していようが、linked listで実現しようが関係ない。pushを2回やって、popを2回やったらis Empty Trueになる。このように、操作の間の関係でデータ型を定義できるということ」と説明した。「気持ちとして、抽象データ型的な発想で操作定義しようというのが、クラスを使った抽象データ型の実装」だと述べた。

 そして、オブジェクト指向が登場したことで「問題領域で、意味のある重要な概念に対してクラスを割り当てて、それを使ってプログラミングができる」ようになった。これによって、人間はビットなどの「文字列」ではなく、「概念」を使ってプログラミングできるようになったわけだ。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
オブジェクト指向プログラミングの5段階

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
イベントレポート連載記事一覧

もっと読む

この記事の著者

岡田 果子(オカダ カコ)

 IT系編集者、ライター。趣味・実用書の編集を経てWebメディアへ。その後キャリアインタビューなどのライティング業務を開始。執筆可能ジャンルは、開発手法・組織、プロダクト作り、教育ICT、その他ビジネス。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

大河原 由貴(編集部)(オオガワラ ユキ)

 2023年に新卒で翔泳社へ入社し、CodeZine編集部に配属。筑波大学卒。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/19450 2024/06/11 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング