投稿記事一覧に戻る


これはNITMic Advent Calendar 2021 - Adventarの9日目の記事です。
## はじめに
先日オブジェクト指向でプログラムを書くという記事を書かせていただきました。

今回はその続きになっております。

が!

今回の記事は短めになるかもしれません。

というのも、「モデリングして作ろうぜ!」ぐらいのことしか私の浅い知識では書くことが見つからなかったからです。

OOPからの発展という意味で、フレームワークやコンポーネントの設計はあるかもしれませんが、それは「オブジェクト指向でものを作る」ということなのか...?どちらかと言うとプログラムを書くのほうではないか...?と思い悩んだ結果、リストラされました。

気が向いたらフレームワークとライブラリの違いとか書こうと思います。気が向いたら。

というわけで、参りましょう。

オブジェクト指向でものを作る、とは。

私が思うに、オブジェクト指向でものを作るということは、「現実で起こっていることをモデリングして整理した上でものを作る」事です。

※オブジェクト指向についてまだ勉強不足を感じるので、間違いがあった場合は教えていただけると幸いです。

例えば、現状人間が手作業で行っている作業があるとします。

そこにはモデリングすべき要素として、そこで扱うデータそのものの構造や、データ同士の関連や、インスタンス(人や組織)同士の関係や応答(相互作用)、それらが行う仕事の様子、実現するシステムで何ができるか、システムの流れと条件分岐、状態や状態遷移といった、様々な要素が渦巻いています。

人が仕事をする場合は、このようなものをモデリングする必要性は薄いでしょう。

なぜなら、モデリングされていなくとも臨機応変に必要な仕事を学び、見つけて行動することができるからです。

しかし、コンピュータにさせるには、明確に「AしたらBにCする...」といった定義をしておかなければなりません。

それを楽に、そして漏れなく行うためにモデリングを行うのです。

そして、そういったモデリングを行いながら物を作るということ、すなわち「現実で起こっていることをモデリングして整理した上でものを作る」事が、オブジェクト指向でものを作るということなのかなと解釈しています。

モデリングする


さて、実際にモデリングを行うにはどうすれば...?と考えるわけですが、ここで登場するのがUMLといわれるものが出てきます。

これは要するに、統一された図の書き方のことです。

上記でモデリングすべき要素としてあげたものたちは、このUMLを使ってモデリングされていくわけです。

データそのものの構造、データ同士の関連を表すにはオブジェクト図やクラス図

インスタンス(人や組織)同士の関係や応答(相互作用)、それらが行う仕事の様子を表すにはコミュニケーション図やシーケンス図

実現するシステムで何ができるかを表すにはユースケース図

システムの流れと条件分岐を表すにはアクティビティ図

状態や状態遷移を表すにはステートマシン図

といった対応があると考えるのですが、正直、量が多いため1つの記事でそれぞれの図に対して詳細な解説をすることは難しいと判断しました。

かんたん UML入門[改訂2版]

もし、必要に駆られたり興味を引かれたら、ぜひこちらを使って学んでみてください。

## あとがき

詳細な解説を期待されていた方には、大変申し訳なく思います。

しかし、この記事を書いたのには理由があります。

それは、ただ「モデリングをして物を作ると楽になるかもしれない」「モデリングにはUMLを使うといいかもしれない」といった事を知ってもらいたかったからです。

痛感することとして、「知らない世界を見ることはできない」訳です。

そこで、少しでも「見ることのできる世界」を広げることができればと思い書かせていただきました。

この記事を読んで「へ~UML学んでみようかなぁ」と思っていただければうれしい限りです。

ここからは余談です。

私自身、無知なのでまだまだ見えない世界がたくさんあるんだと思います。

最近は数学にお熱ですが、基礎的なのに考えもしなかった事がたくさん出てきます。

「学ぶ」とは、「見えない世界を見えるようにする」ことだと思っていて、見える世界が広ければ広いほど人生は楽しいのだと信じています。

また記事を書く機会があれば「学ぶこと」についてでも書きたいですね。そう思いました。

では、次回は13日の「CSR・SSR・SSG・ISRってなんだ」にてお会いしましょう!

こちらは書くべき対象が4つなので、記事にまとめることができると思います!

では、皆さんよいクリスマス(イブ)<sup>16</sup>を!!

餅草 よもぎ

物を作る/競争が苦手/徐々にレイヤが下がっていく

本当にお気軽にDMください。

Twitter:@kusa_yomogi
GitHub:Sora513
LottieFiles:Sora513
Powered by