weblog

パスタ作りもオブジェクト指向なのかも

Monta

先日パスタの記事を書いている時に、ふと思いました。「これってオブジェクト指向だなぁ」って。
まだお読みで無い方は、以下の記事↓から先に読むと話が分かりやすくなると思います。

みんな大好きパスタの時間
みんな大好きパスタの時間

「オブジェクト指向」…多くの方には聞き覚えのない言葉かも知れません。
ただそう意識せずとも、頭の中ではこの考え方を使っている人も多いと考えています。
IT屋さんは「繰り返される作業を自動化」することが仕事なので、この考え方が重要です。

端的に言うなら、複数のものの共通することと、違うことを分けて整理した上で、
繰り返される作業の流れを「ここは同じ」「ここは条件によって変える」と示すことです。
それをコンピュータに分かる言語で書いていくのがプログラミングというわけです。

  • システムエンジニアの頭の中を知りたい方
  • IT技術の裏側にある「考え方」に興味がある方
  • プログラミングに1歩踏み出そうとしている方

そんな方々のお役に立てる記事になっています。
単に「世の中にはこういう考え方をする人もいるのね」と読み物としても面白いと思います◎

分かりやすいように、パスタ作りを例に説明していくね!

もんた
もんた
1

オブジェクト指向を構成するもの

クラスとインスタンス

オブジェクト指向では、親子関係にあるグループを「クラス」「インスタンス」と示します。

パスタで例えるなら「クラス」は、どんなソースでも共通する部分ですね。
・「パスタ」クラス:茹でた乾麺にソースをあえて食べるもの

パスタで例えるなら「インスタンス」は、どのソースのパスタかの違いですね。
・「オイルベース」インスタンス  : オリーブオイル
・「トマトベース」インスタンス  : オリーブオイル + トマト缶
・「クリームベース」インスタンス : バター     + 生クリーム

さらに具材の違いで分けるなら、それは「子インスタンス」となります

もんた
もんた

プロパティ(特徴)とメソッド(動作)

更にそれぞれのインスタンスについて、「特徴」「動作」に分けて整理します。

パスタで例えるなら特徴(プロパティ)は以下の通り。
・オイルベース:「あっさり」「シンプルで食べやすい」
・トマトベース:「見た目が華やか」「子どもが服を汚しやすい」
・クリームベース:「味がマイルドで食べやすい」「カロリー高め」

そして同じく「動作」(メソッド)は以下の通り。
・オイルベース:「具材を入れた後、茹で汁と油を乳化させる」
・トマトベース:「具材を入れた後、トマトを加えて一煮立ちさせる」
・クリームベース:「オリーブオイル+バターを熱する」「具材を入れた後、生クリームを加えて一煮立ちさせる」

確かに、前回の記事ではソース別に作り方を整理していたね!

もんた
もんた

オブジェクト

これは、上で説明した「特徴(プロパティ)」と「動作(メソッド)」が含まれる概念のことを指します。
「レシピ」のようなものだと考えて頂ければ良いです。

インスタンスは、このレシピを元に作られた「モノ」というわけです。

すなわち、オイルベースのパスタというインスタンスを作るにあたって、
オイルベースパスタのオブジェクト(レシピ)を使って作る、ということになります。

ふんわりしているけれど、オブジェクト(レシピ)は実体が無い、”概念”ということデス

もんた
もんた
2

オブジェクト指向のメリット

現実世界に似ている

これは人がプログラミングをするにあたって、大事な要素ですね。
現実の物や事象をそのままプログラムに取り入れるので、人が理解しやすいという特徴があります。

管理しやすい

たくさんの「レシピ」が体系的に整理されることで、管理が簡単になります。
パスタで共通する手順(パスタを茹でる工程など)、ソースごとに違う手順を分けて整理しておくことで
頭の省エネ、コンピュータのリソース節約に繋がります。

再利用性がある

一度整理した「レシピ」は、他の場所でも使い回すことができます。
共通する手順は全メニューのページに書かなくて良くて、前ページ参照、と飛ばしておけば良いわけです。

重複も無駄もないプログラム、これをIT業界では「美しい」と表現します。笑

もんた
もんた
3

もしもパスタ作りをプログラムで書くなら・・・?

どんなふうになるのだろう??ということで、試しに生成AIに書いてもらいました。
まとめ方は上述の内容と違う部分(サブクラス使ってたり)もありますが、イメージとしてはこんな感じです。

Q
興味のある方はどうぞ(クリックして展開)

こりゃ目が回る~

もんた
もんた

まとめ

  • オブジェクト指向は、物事を特徴・動作と紐づけて整理する考え方
  • 一連の作業について、共通する部分・特有の部分を分けて考えることで、共通部分の記憶負担を減らせる
  • 実はITに関わらない人も頭の中ではきっと、こんな脳内整理をしているハズ・・・?

IT業界に入って、勉強を始めると、このオブジェクト指向でつまずく人が多い印象です。

でもプログラム特有の話というのではなくて、思考整理術の一つとして考えてもらうと、
「そう言われれば、無意識でそういう考え方してるかも…」と気づくと思うんです。
脳が記憶容量を節約するために、アレコレやってくれているんですよね。

ITで実現する自動化というのは、人の頭で何を考えているか?を明文化することでもあるので、
私のように文系だけど情報の仕事をやっている人がいるのも、納得できる気がします。

最後までお読み頂きありがとうございました!

次の記事はコチラ
子どもとの「しりとり」が楽しくなるコツ
子どもとの「しりとり」が楽しくなるコツ
ABOUT ME
もんた
もんた
システムエンジニア歴15年、2児の父。
仮想サーバ・ネットワーク・データベース・クラウド・コンテナ・生成AI等、
様々な分野の業務に携わりながら、異動のたびに何度も”初心者”になり、学習を繰り返す。

会話形式でサラッと読み進められるIT技術講座を展開中。
読みやすいのに気づいたら基礎から応用まで身に付いている!そんな記事が目標です。
記事URLをコピーしました