(注:弁当とブリトーのメタファーは、Twitter の Israel Ferrer さんが提唱しているものです。)
弁当、ブリトー。それらの概要
弁当と言えば、箱のなかに様々なおかずがつめ込まれた日本の伝統的な携行食です。そしてブリトーと言えば、トルティーヤと呼ばれる薄い小麦粉の生地の中に、様々なおかずがつめ込まれたメキシコの伝統的な料理です。どちらも、小さな箱かトルティーヤかの違いはあるものの、それらの中に様々なおかずがつめ込まれたものであることには変わりありませんが、そのおかずのつめ込まれ方には明確な違いがあります。
弁当、ブリトー。それらの違い
弁当には仕切りがあります。この仕切りの中におかずを詰め込んでいくことで弁当が完成しますが、この仕切りは時に自由に配置することができ、好みのおかずのために場所を広くとることができます。そして何より、仕切りがあることで異なるおかず同士味が混ざり合うことはありません。
一方、ブリトーのおかずは混ぜることが前提となります。豚ひき肉、トマト、レタス、米、サワークリーム、パクチー等を混ぜたものをトルティーヤで巻くため、例えば、パクチーが嫌いな人にとってははじめからパクチーが入っていないものを選択する以外にパクチーを抜く手立てがありません。
弁当とブリトーに見る、メンテナンスのし易い設計とは
Use Fragments at your risk... They use the tasty Burrito pattern, but that means you can't remove an ingredient unless you make another one🌯
— Israel Ferrer (@rallat) 2015年12月15日
つまり、メンテナンスのし易い設計とは、ブリトーのようにパクチーだけを抜く為に別のブリトーを作らなければならない設計ではなく、弁当のように、他のおかずに影響なくおかずを好きに組み替えられる仕切りを持った設計のことを指します。
よりプログラミングに近い言葉で言えば、問題のある箇所を修正したらそれに引きずられて全体が崩壊したり、ある箇所にコードを追加したら全体に影響を与えてしまう設計のことをブリトーのような設計と言い、問題のある箇所を修正したりある箇所にコードを追加しても他の箇所が壊れない設計を弁当のような設計と言います。
おいしい弁当を作ろう
ではどのようにして弁当のような設計を作ればよいでしょうか。
今日では様々な方法論があります。
Qiita にも沢山の投稿がありますので、何か困ったときに読んでみると良いでしょう。
- 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則
- 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡
- 何かのときにすっと出したい、プログラミングに関する法則・原則一覧
参考
- http://fragmentedpodcast.com/2016/01/
- https://twitter.com/rallat/status/676800521924050944
- https://github.com/rallat/effectiveandroid
最後に
私はパクチーが大嫌いなのでブリトーにはパクチーを絶対に入れませんが、それでもブリトーは美味しいと思います。
私個人としてはパクチーは、カメムシ草という別名もあるように、カメムシの臭いがするので食べられません。外国の方はパクチーの味を石鹸の味と喩えるようです。いずれにしても食べたくはありませんね。