コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

「関心の分離」をするメリットを料理レシピを通して考える

原典の「関心の分離」の内容を基軸にして、行為そのもののメリットを見出す。

関心の分離とは

まずは関心の分離とはどういうことかを原典とされる文章を参考に見ていく。

「科学的思考の役割について(On the role of scientific thought) 」での関心の分離

関心の分離は Edsger Wybe DijkstraOn the role of scientific thought が初めて使用されたとされているため、その文章で表現している「関心の分離」はどういうことかをまず読み解く。

文章の中では関心の分離を説明するためにプログラムの話をあげている。ざっと意訳すると以下のようなことが書かれている。

一つのプログラムを作るにあたって、取り掛かるべき問題を解決するために製作を進めなければならないが、同時に効率良く動作するようにも製作しなければならない。このような取り組みの際に、ある日は問題の解決の製作を行い、また別の日で効率化の製作を行う、しかし2つの製作を同時に取り組むのは効果が得られにくいのでやることはない。このように自分の行う行動の思考を一つの側面に注意を向けて行うことを「関心の分離(the separation of concerns)」と呼ぶ。

このように関心の分離というのは、一つの取り組みでも、取り組みで行われるアクションで着目するものは変わっていく。そのような着目するものを、分けていくことを「関心の分離」として定義されている。

関心の分離をすることによるメリット

では原典における「関心の分離」がわかったところで、それを行うことのメリットに関して考えていく。

私が考える関心の分離のメリットは大きく2つあると考えている。

  • 関心のある物事(関心事)ごとに内容が整理されるのでスッキリする
  • 関心事ごとにまとめることで全体として見てたときに気づけなかった過不足に気付ける

このメリットは料理のレシピの考え方を使って説明する。

関心の分離のメリットを料理のレシピで考える

「カレーを調理する」ということを例にとって関心の分離を考える。

例えば以下のようなカレーのレシピがあったとする。(なおレシピの引用元はこちら

フライパンにサラダ油を熱し、玉ねぎはみじん切りにしてよく炒める。玉ねぎがすき通ってきたら牛豚ひき肉(250g)を加えて炒める。なす、ズッキーニ(半分)、パプリカ(半分)を準備して切り、フライパンに加えてさっと炒めたらカットトマト(缶の半分)、水を加え、中火で約5分煮込む。いったん火を止め、カレールウ(箱の半分)を割り入れてよく溶かし、再び中火で時々かき混ぜながら約5分煮込む。

料理の工程の説明としては成立しているが、この工程だけ読むと文章の途中で用意するものが出てくるので何を用意して良いのかがわからない。 そこで関心の分離をすることでもうすこしわかりやすくなる。

この文章における関心事は「材料を準備する」「調理を行う」という2つに分けて捉えることができる。そうすると以下のように分離される。

まずは材料を準備する。カレールウ(箱の半分)、牛豚ひき肉(250g)、玉ねぎ、なす、ズッキーニ半分、パプリカ半分、カットトマト缶(半分の量)、サラダ油、水を用意する。

材料を準備したら実際に作る工程にはいる。フライパンにサラダ油を熱し、玉ねぎはみじん切りにしてよく炒める。玉ねぎがすき通ってきたらひき肉を加えて炒めて、なす、ズッキーニ、パプリカを準備して切り、フライパンに加えてさっと炒めたらカットトマト、水を加え、中火で約5分煮込む。いったん火を止め、カレールウを割り入れてよく溶かし、再び中火で時々かき混ぜながら約5分煮込む。

関心事を分離したので調理工程に分量のカッコ書きがなくなりわかりやすくなった。

ここで関心事別に整理したことにより、個別の材料において分量の付記があるものとないものがあることがわかる。これはレシピの書き漏れなので書き足す必要があるので加えると以下のような文章になる。

まずは材料を準備する。カレールウ(箱の半分)、牛豚ひき肉(250g)、玉ねぎ(1.5個)、なす1本、ズッキーニ半分、パプリカ半分、カットトマト缶(半分の量)、サラダ油(大さじ1)、水(250ml)を用意する。

材料を準備したら実際に作る工程にはいる。フライパンにサラダ油を熱し、玉ねぎはみじん切りにしてよく炒める。玉ねぎがすき通ってきたらひき肉を加えて炒めて、なす、ズッキーニ、パプリカを準備して切り、フライパンに加えてさっと炒めたらカットトマト、水を加え、中火で約5分煮込む。いったん火を止め、カレールウを割り入れてよく溶かし、再び中火で時々かき混ぜながら約5分煮込む。

これで材料はすべてわかり、調理工程もわかりやすく分離された。ただ調理工程が炒め始めてからまた材料を切るような工程となっているので、とても複雑な状態になっている。そのため調理工程自体もさらに関心の分離を行う。

調理工程も「材料を切る」「具材を使って調理をする」という関心の分離ができるのでその2点で分離をする。

まずは材料を準備する。カレールウ(箱の半分)、牛豚ひき肉(250g)、玉ねぎ(1.5個)、なす1本、ズッキーニ半分、パプリカ半分、カットトマト缶(半分の量)、サラダ油(大さじ1)、水(250ml)を用意する。


材料を準備したら実際に作る工程にはいる。

最初は材料を切る。
玉ねぎはみじん切りにし、なす、ズッキーニ、パプリカも切る。

続いて調理をする。
フライパンにサラダ油を熱し、玉ねぎをよく炒める。玉ねぎがすき通ってきたらひき肉を加えて炒める。その後、なす、ズッキーニ、パプリカをフライパンに加えてさっと炒めたらカットトマト、水を加え、中火で約5分煮込む。いったん火を止め、カレールウを割り入れてよく溶かし、再び中火で時々かき混ぜながら約5分煮込む。

ここで関心事を切り分けた事によって、玉ねぎ以外の具材の切り方が不鮮明であることがわかったので、それを付記する。

まずは材料を準備する。カレールウ(箱の半分)、牛豚ひき肉(250g)、玉ねぎ(1.5個)、なす1本、ズッキーニ半分、パプリカ半分、カットトマト缶(半分の量)、サラダ油(大さじ1)、水(250ml)を用意する。


材料を準備したら実際に作る工程にはいる。

最初は材料を切る。
玉ねぎはみじん切りにし、なす、ズッキーニ、パプリカは1.5~2cm角に切る。

続いて調理をする。
フライパンにサラダ油を熱し、玉ねぎをよく炒める。玉ねぎがすき通ってきたらひき肉を加えて炒める。その後、なす、ズッキーニ、パプリカをフライパンに加えてさっと炒めたらカットトマト、水を加え、中火で約5分煮込む。いったん火を止め、カレールウを割り入れてよく溶かし、再び中火で時々かき混ぜながら約5分煮込む。

これで最初の文章よりは実際に作るときにわかりやすく、調理するときに作りやすい文章となった。(ちなみに元のレシピは更に見栄えとして関心の分離を行なってさらにわかりやすくしているがそれは割愛する)

まとめ

  • 原典における「関心の分離」とは一連のものごとを着目する側面(≒関心事)ごとに分けていくこと
  • 関心の分離を行うと以下のようなメリットがある
    • 関心のある物事(関心事)ごとに内容が整理されるので、内容がわかりやすくなる
    • 分離する前に不足していた事柄に気づくことができる

参考サイト