私が卒業した工業高校には「産業デザイン科」(現在、デザイン科)という科がありました。
当時、デザイン科のある公立の工業高校は県内で2校だったと記憶しています。母校の歴史は古く特にデザイン科は「図案科」として1915年(大正4年)に設置されたようです。
「図案」という言葉がでてきたとおり、ここでいう「デザイン」は、「意匠」であり、図案や模様、装飾などを考案することを意味しています。母校で教えていたことも恐らくそうだと思います。私は電子科でした。
この投稿でお話したい内容は、「設計」という意味のデザインで、ソフトウェアデザインです。
ソフトウェアデザインについては、Web上にたくさんの記事があり、学術的なものから具体的にコードのサンプルまで様々ですが、開発の現場で開発者が心得ておくべき、知っておくべきものをお話ししたいと思います。その内容の詳細については、あとあと投稿するつもりです。
1回の投稿では語り尽くせないので、何回かにわけてソフトウェアデザインについて話していくことになると思います。
参考書に、Robert C. Martin著の「Clean Architecture 達人に学ぶソフトウェアの構造と設計」(以下、Clean Architecture)を使用しています。
SOLID原則
Robert C. Martin氏が提唱した、プログラミングのガイドラインを、Michael Feathers氏が、5つの頭文字をとって名付けました。
それぞれ以下のとおりです。
- Single Responsibility Principle:単一責任の原則(SRP)
- Open/closed principle:オープン/クロースドの原則(開放閉鎖の原則)(OCP)
- Liskov substitution principle:リスコフの置換原則(LSP)
- Interface segregation principle:インターフェース分離の原則(ISP)
- Dependency inversion principle:依存性逆転の原則(DIP)
SOLIDの目的は、Clean Architectureによると、以下の3つです。
変更に強いこと
理解しやすいこと
コンポーネントの基盤として多くのソフトウェアシステムで利用できること
では、次回からそれぞれの原則を見ていきましょう。
写真は横浜中華街で私が撮ったものです。記事の内容とは全く関係ありません。(笑)
あえて理由をつければ、壁のレンガに書かれたデザイン? Clean Architectureに出てくるレンガの話? こじつけです。