設計

純粋なクラス 設計

純粋なクラス

今、『なっとく!関数型プログラミング』という本を読んでいます。関数型プログラミングの考え方として重要視される概念として「純粋関数」というものがあります。『なっとく!関数型プログラミング』の中で、以下のように書かれています。 純粋関数の定義 関数の戻り値は常に1つだけ 関数は引数にのみ基ずいて戻り値を…
巨人の肩から降りるとき 設計

巨人の肩から降りるとき

ソフトウェア界隈では、よく「巨人の肩に乗る」という比喩表現が使われます。 「巨人の肩に乗る」というメタファーはフリーソフトウェア運動を推進しその正当性を示すためにも用いられる。 レッドハットのボブ・ヤングは2002年の著書『リチャード・ストールマンと自由ソフトウェア革命(英語版)』で、人々が巨人の肩…
関数型言語でのTDDについての妄想 設計

関数型言語でのTDDについての妄想

OOPの言語(自分がやっているのはPHP)でプログラムを書く場合、TDD(テスト駆動開発)を愚直に実践しています。 この話は、関数型言語を使うようになったら、開発プロセスがどのように変わるのだろうかという妄想です。 『関数型ドメインモデリング』 最近、『関数型ドメインモデリング』の関数型言語のF#で…
モジュールとは何か? 設計

モジュールとは何か?

様々な設計原則やデザインパターンの中でモジュールという言葉が登場します。モジュールという言葉の意味は「部品」のようなイメージはありそうです。しかし、それ以上明確な定義を求められると困ってしまうかもしれません。 モジュールというのは、どう捉えるべき概念なのでしょうか? Wikipediaで見るモジュー…
ビジネスロジックとは何か? 設計

ビジネスロジックとは何か?

業務システムの設計/開発/運用の文脈での、ビジネスロジックについて考察してみたいと思います。   ソフトウェア設計についての本やブログ記事などで、「ビジネスロジックは重要である」ということは、何度も何度も言われていて常識になっていて否定する人はほとんど居ないと思います。この点については文字…