「テストファースト」の成り立ち?
「テストファースト」(テスト駆動開発 Wikipedia 日本語版)は余り聞かれなくなりましたが、これも(成り立ちの面で)関数型と軌を一にしていた様に思います。
狭義のソフトウェア開発と広義のそれが有り、プログラミング言語は前者の又、一部分ですが、
- プログラミング言語に終始した議論では、
- テストがプログラミング言語関連の中で、一番(自然言語による)仕様・要求に近いものだった。
- プログラミング言語に終始して議論することで、良い事を、ローコスト、ノーコストで得られる利点を確保する為には、
- (自然言語による)仕様・要求に言及する訳には行かず、
- その(仕様・要求の分野での使い勝手が、(流石に)本物の仕様・要求には負ける)代替品としてのテストを持ち出した
のが成り立ちだったのでは無いでしょうか?
「テスト」の多義性
「テスト」とは、もしかすると、
- 狭義のソフトウェア開発におけるテスト
- 広義のソフトウェア開発におけるテスト
に分かれるのでは無いでしょうか?
(プロジェクト管理が狭義の開発には全く無力なのとは様相を異にします。)
この場合の狭義とはここでは、
- 「要求を紐解き、プログラムを作って、テストをして、デプロイする」
を指し、広義とはここでは、
- 狭義の開発がある程度進んだ後に、後付けで、より良い開発経験となる様に出来る営み
を指しますが、smallなテストは前者に、largeなテストは後者になると思います。
「テストファースト」が余り聞かれなくなった理由
狭義のソフトウェア開発のさらに一部分のプログラミング言語のみで議論する「テストファースト」は、
当然、
- 広義の議論にたどり着きません。
良い事を、ローコスト、ノーコストで得られる利点と引き換えに、本物の仕様・要求には負ける、代替品の位置に永久に留まる事を余儀なくされるのです。
結論
これからも「関数型の誤解」でプログラミングが嫌いになる人は存在し続けることでしょう。