設計

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

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

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

モジュールとは何か?

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

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

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

『整理して分解する』 〜 複雑なソースコードをコントロールする方法 〜

継続的なソフトウェア開発で複雑になってしまったソースコードに対処する方針について説明してみます。 手に負えない複雑さ 業務で扱っているソースコードをちょこっと修正したつもりなのに、他の場所でバグが発生する。機能追加するための調査に時間がかかる。そのような状態は、ソースコードが複雑になりすぎて手に負え…
技術書のサンプルコードと業務コードの間にある壁 設計

技術書のサンプルコードと業務コードの間にある壁

主にソフトウェア設計やプログラミングについての本を読んでいるとサンプルコードが書いてあるんだけど、説明のためのコードなので、小さいコードであることが多い。紙面の都合上、仕方のないことだし、説明を判り易くするために余分な記述を排除するので当然と言えば当然です。 技術書から学ぶことで、仕事でもより良いコ…