カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

これからのプログラミングにおいては、「仕様としてのテスト」が重要になるのではないか

概要: Rebuild.fm #29を聴いていて思ったコト


今日Rebuild.fm #29を聴いていたら、

について言及されていて、それで色々と思ったコトがあるので、それをつらつらと書いてみる。


ぶっちゃけ僕はWeb系の人間で、かつ実務経験も無いので、言ってるコトが微妙な感じではあるんですが、僕が思うに、これからの、プログラミングにおいては、

  • 仕様書としてテストを書く

という風にしていったら良いのではないのかなぁと思います。

というのも、そのサービスの、

  1. マントラ=コアバリュー=核となる信念
  2. ビジネスモデル=顧客にどのような価値を提供して対価を得るか

辺りはまあ文書でしか表現できないにしても、

  • サービス内のコンポーネントの仕様書

なんて作る必要あるの? と思うんです。

無論、バグが命に関わる車の制御関連のプログラミングとか、そういうバグってたら人が本当に死ぬ系は、仕様書とかが必須だとは思うんですが、僕の関わってるWeb系なんかだと、仕様書とか作る意味あるのかなーと思うんです。

というか、僕がプログラミングするときに、ライブラリの使い方とか調べる場合、ドキュメントは多少見るにしろ、大体はテストコードを見て使い方調べたり、example code見たり、あるいはgolangとかだとgodoc.orgで自動生成されたドキュメントを見たり、とかするんですよね。

で、そのときに仕様書というかドキュメントが最重要か、っていうと、それは微妙に違っていて、僕らプログラマにとっては、

  • どのような メソッド、クラス、モジュールがあるか

より、

  • どのように そのメソッド、クラス、モジュールを使うか

が重要だと思うんです。

で、その どのように を知るために、僕らはテストコードを見るワケでして、それならば、仕様書とかドキュメントとか充実させるより、

  • How to useとしてのテストコードを充実させる

というようなのが重要、というかそっちの方が便利だよね、と思うんです。

で、最近の傾向だと、

みたいな、副作用を持つテストコードみたいなのが作られ始めていて、じゃあドキュメントや仕様書の類いも、

  • How to use としてのテストコード から 自動生成

してやれば良いんじゃないかなぁと僕は思うんです。

無論、その辺り専用のツールというか、まあライブラリが無いとちょっとしんどいとは思うんですが、これからは仕様書とかこだわらずに、

  • How to useとしてのテストコード から 仕様書とかドキュメント生成する

という風にしていけば、仕様書やドキュメントとコードが食い違ってるとか、あるいは引き継ぎしたコードの使われ方がわかんねーとか無くなるんじゃね? とか僕は思います。


あ、でも一応補足しておくと、ビジネスモデルとかコアバリューに関連すうる、

  • そのサービスでどのような価値を提供し、その対価を得るか

のドキュメントというか事業案みたいな仕様書っぽいものは要りますよ。当然のコトながら。それは司令官用の羅針盤なんで。

で、ドキュメントが生成しづらい、あるいは生成できないUI/UXなんかについても、ペーパープロトタイピングとか、あるいは専用アプリでのUI/UXのプロトタイピングは、 プログラミングの過程として は必要だと思います。っていうか、そういうのって、あれです、 非コード的 ではあるものの、それは UI/UXのプログラミングそのもの だと僕は思います。


まあ一応、今日、

を聴いていて、思ったことはそんな感じです。まあ、うまく言いたいことを言えているかどうか、が、ちょっと微妙ですが。

まあそんな感じなコトを思ったということで。はい。おわります。