ポジティブだったんだよね、12年前は。松本:そこはちょっと違うんだよね、今は。昔は、「驚き最小の法則」は大事だと思ってたし、一貫性も、いまよりも重要だと思ってた。ここに書いたわけですね。松本:今となってはね、驚き最小の法則って、特に言語設計の議論をするときは、邪魔にしかならないっていうことが明らかになった。実際に、Rubyという、すでにあるものを使ってみて、それに対して、ネガティブな驚きが少ないというときに使ってたのね、元々は。なんだけど、使う人はバックグラウンドが違うから、自分のバックグラウンドと違うと、どうしてもびっくりするわけだ。笹田:「代入がある!」とか。松本:そうそう、場合によってはね。「ローカル変数が書き換えられるとはどういうことだ」とか。笹田:それは驚きだからよくない。いう風に思われるということがあって、そう思う人も当然いるわけで。それに対して「驚き最小の法則」に反するみたいに言われるとすると、それはちょっと違うということになる。言語仕様の言語設計の議論において、驚き最小の法則ってのが邪魔になると。松本:この12年の経験で分かったと。他の人たちとのディスカッションの中で、これで説得するのがしんどい、というのが分かってきた。松本:逆に、それで説得しようとする人がいて、しんどい。笹田:あー、なるほど。松本:それは、あんたの驚きだけど、僕の驚きではないから、という話になってるくるわけね。共通の議論の土台にならない。「Rubyの真実」を書いていた頃は、Rubyのデザインにかかわろうなんて人はほとんどいなかったので、我々で決めていた。それが自分の感性にあっていて驚きが少ないか、驚きがあっても、新しいことを学んだという、ポジティブな驚きだった。松本:なんだけど、この後、コミュニティも広がって、もっとRubyを良くしよう、変更しようという議論に参加しようという人が増えてきた。すると、そういう議論が始まるわけで、そのときに、「驚き最小の法則」みたいなものを持ち出して来られることが多くて。「驚き最小の法則」があるって言ったのは僕だから(笑)、当然といえば当然なんだけど、逆に、それってめんどくさいっていうか。あなたの驚きのバックグラウンドを、我々は共有していないよっていうことが多くなって。言語設計の議論においては、「驚き最小の原則」については、言わないようにしようっていう。笹田:で、どうするべきか、と。自分にとって、良いか悪いか。それを理由にしてはいけないわけ。僕が驚いたからではなくて、これがあると、こう嬉しいから、としないといけない。前提条件が明らかにならないものに「驚き最小の法則」に反するって言われると、それは、あなたにとってはそうだろう、っていう話で終わってしまう。笹田:ユースケースや利害得失をベースに議論しましょうということになった。なると、一貫性はないんだけど、こういうケースだとメリットがある、というような議論に。松本:あ、一貫性の話は置いておいてね、まだ。「驚くかもしれないけれども、あなたの常識とも反するかもしれないけれども、それは受け入れてください」って、言わなければならないこともある。笹田:そこで、求めるべき内規っていうのは、ユースケース。松本:ユースケースだったり。いう嬉しさがあるかっていうことを表現しないと。「ここはこうあるべきだ、なぜなら、私がこれに驚いたからだ。驚き最小の原則に反するから」っていうロジックがあまりにも多くて。それって話にならない。それはあなたにはそうかもしれないけれども、そのあなたの提案した機能を入れたら、ほかの人が驚くかもしれないし。ほかの人の驚きに対して、責任を取らなくちゃいけない身としては(笑)、あなたが驚くっていう理由だけでは入れられないよねっていう話。笹田:元々、まつもとさんが驚くのを最小にしようっていうニュアンスだった。松本:そうでもないんだけど。驚くかどうかっていうのを、言語に入れるべきかどうかの基準にしてはいけない。これを入れると、良いっていうかどうか、便利であるかどうか、あるいは、より良くなるかどうか。その良くなるっていう基準も、もちろん議論ごとに提示しなくてはいけないんだけど。その基準で良いかどうかっていうことで議論するべき。笹田:便利っていうのも、ここでは便利だけども、他のところでは良く分からないっていうのもありますよね。松本:もちろんそうですよね。笹田:そこは、どう判断されているんですか。松本:それは、提案ごとに、こういう基準で良い、ということを明示しないといけない。笹田:で、明示して、確かにここでは良いということがわかった。他の機能との整合性が取れていないっていう場合は。トレードオフになるよね。笹田:そこはどう決めますか?松本:それは僕が決めるしかないんじゃない(笑)笹田:で、そのユースケースは良くあるから、ぜひやるべきであるとか、それはあんまりないよね、とか。ない割に、ほかに影響があるから、トレードオフ的には採用できないというのはある。そこは、まつもとさんの技術者としての勘で、最終的に決める?松本:まぁ、そうだよね。結局、提案する人はトレードオフに対する責任は取らないわけじゃない?笹田:そうですね(笑)松本:で、あなたの言う機能を入れて、それでほかに不便があるからって、文句を受けるのは僕なので。僕がトレードオフを享受できるかどうか、耐えられるかどうか、1つ心の中の基準にはなってる。