カレー作り、もはや誰も見ていないであろうが第4弾
こんにちは、Javaおじさんのシキムです。
40才目前で、プログラム工学に興味を持ったので本や記事で読んだ難しい話を
咀嚼して簡単な言葉で語りたいと思います。
今回は、インターフェース分離の原則 (Interface segregation principleというものについてです。
ざっくりと、、、
インターフェースは、特化したものを用意する。
詳しくは偉い人の話を読んでください。
ここでは、この原則をカレー作成装置に見立てて解説したいと思います。
では、さっそくカレー作成装置を作りましょう。
今回は真カレー装置(夏)をベースに進めていきます。
(真カレー装置(夏)の詳細は第2弾をご確認ください。)
野菜BOX作成キット
容器
剥き方ノート(白紙)
切り方ノート(白紙)
人参BOX
容器:人参
剥き方ノート:ピーラーで皮を剥く
切り方ノート:輪切りに切る
ジャガイモBOX
~省略~
玉ねぎBOX
~省略~
野菜BOXコンテナ
人参BOX
ジャガイモBOX
玉ねぎBOX
野菜下ごしらえ装置
入れるもの:
野菜BOX
作業:
①容器の野菜を剥き方ノートと同じように剥く
②皮を剥いた野菜を切り方ノートと同じように切る
出てくるもの:
下ごしらえ野菜
肉下ごしらえ装置
入れるもの:
肉
作業:
①肉を切る
出てくるもの:
下ごしらえ肉
カレー作成装置
入れるもの:
野菜BOXコンテナ、肉
作業:
①野菜下ごしらえ装置に野菜BOXコンテナのBOXを1つづつ入れて下ごしらえする
②肉下ごしらえ装置に、肉を入れて下ごしらえする。
③具材を鍋に入れて煮込む
④カレールーを入れる
⑤ご飯にかける
⑧カレーにとんかつをトッピングする
出てくるもの:
カレー
おじさんは、ひらめきました。
カレーの野菜は、人参、ジャガイモ、玉ねぎがの3つが必ず入っています。
なので、こんな感じでカレー野菜BOXキットを作ってしまえばいいのではないでしょうか?
カレー野菜BOX作成キット
容器A
剥き方ノートA(白紙)
切り方ノートA(白紙)
容器B
剥き方ノートB(白紙)
切り方ノートB(白紙)
容器C
剥き方ノートC(白紙)
切り方ノートC(白紙)
では、カレー野菜作成キットを使って簡単カレー装置を作っていきましょう。
カレー野菜BOX
容器A:人参
剥き方ノートA:ピーラーで皮を剥く
切り方ノートA:輪切りに切る
容器B:じゃがいも
剥き方ノートB:芽に気を付けて皮を剥く
切り方ノートB:乱切り
容器C:玉ねぎ
剥き方ノートC:白くなるまで皮を剥く
切り方ノートC:半月切り
カレー野菜下ごしらえ装置
入れるもの:
カレー野菜BOX
作業:
①容器Aの野菜を剥き方ノートAと同じように剥く
②皮を剥いた野菜を切り方ノートAと同じように切る
③容器Bの野菜を剥き方ノートBと同じように剥く
④皮を剥いた野菜を切り方ノートBと同じように切る
⑤容器Cの野菜を剥き方ノートCと同じように剥く
⑥皮を剥いた野菜を切り方ノートCと同じように切る
出てくるもの:
3種類の下ごしらえ野菜
肉下ごしらえ装置
入れるもの:
肉
作業:
①肉を切る
出てくるもの:
下ごしらえ肉
カレー作成装置
入れるもの:
カレー野菜BOX、肉
作業:
①カレー野菜下ごしらえ装置にカレー野菜BOXを入れて下ごしらえする
②肉下ごしらえ装置に、肉を入れて下ごしらえする。
③具材を鍋に入れて煮込む
④カレールーを入れる
⑤ご飯にかける
出てくるもの:
カレー
簡単カレー装置の完成です!
これで、コンテナも使わないシンプルな装置ができましたね。真カレー装置(夏)よりもいいように感じるところもあるかもしれません。
しかし、簡単カレー装置にインターフェイス分離の原則を無視している為に問題が発生します。
それが玉ねぎの欠品!!!
真カレー装置(夏)であれば、玉ねぎBOXを抜いたコンテナを用意するだけで玉ねぎ抜きカレーを作ることができました。
しかし、簡単カレー装置ではどうでしょうか?野菜を3つ入れることを前提としてしまったため、一か所空白になってしまいます。
この状態では、カレー野菜下ごしらえ装置が容器Bのやさいの皮を剥こうとしますが、野菜が取得できずに正常に動作することができず問題が発生してしまいます。
真カレー装置(夏)のほうがよさそうであることがわかりました。
以上が、おじさんなりのインターフェイス分離の原則の理解です。
カレー作りシリーズ