「仕様ですか?」という問い
もともとこのページは #2018-06-18 に作成して、書こうと思うことはありつつ放置していた。それから約 5 ヶ月が経ち、下記のエントリを読んで「それな」と思ったことがきっかけでようやく筆が進むようになった。なので書いていく。 オープンソース製品であってもそうでなくても、あらゆるプロダクトには「仕様」として明確に宣言されている実装と、そうではない実装が存在し得る。
とある、GUI を持ったアプリケーションを例に考えてみよう。
今日、そのアプリケーションにおいて「ログイン」のボタンの横幅が 100px だったとして、これは仕様だろうか?ぼくが考えるに、これは仕様ではないと思う。もしそのアプリケーションの「使い方」みたいな、取扱説明書のようなコンテンツに「このボタンの横幅は 100px です」と明記されていたら話は別だけれど、ボタンの横幅についてわざわざ利用者に明示するアプリケーションをぼくは見たことがない。利用者との間にボタンの横幅についての明確な約束事がなければ、それは仕様ではないと言えるだろう。そうであれば、明日にそのボタンの横幅が 101px になったとしても、利用者は正当な理由をもってそれを糾弾することはできないだろう。もしかしたら、変化に気付くことすらないかもしれない。
こんなふうに、ほとんどすべてのプロダクトには「仕様として約束はしていないが、現状はそうなっている」という部品が多く見られる。
件のアプリケーションが、ある日のアップデートで予期せぬ変更を起こしてしまい、ボタンの横幅が 10px に潰れて、ボタンのラベルがはみだしてしまうような事態に陥ったとしよう。そのとき利用者が「ログインボタンの横幅が 10px なのは、仕様ですか?」と開発者に尋ねたときに、質問にそのまま答えるとすると「いいえ、仕様ではありません」になってしまう。このやりとりで得られる情報量はとても少ない。妙な雰囲気で会話が途絶えるし、利用者が知りたかったことは知れていないのではないか。
極端な話、利用者は仕様を理解しなくてもよいと思う。
利用者として、どんな挙動を期待したか
利用してみて、実際の挙動はどうだったか
くだければ「こうなると思って操作したのに、こうならなかった。なんとかしてくれ」この情報が開発者に伝えられれば、望ましいやりとりがそのあとに続くことだろう。ボタンを押したけど反応しなかったということであれば「ボタンを押しても反応しないのは仕様ですか?」なんて難しい質問をしなくてよい。「反応しなかったんだけど、おかしくないか調べてくれ」というので充分だ。