あと、そうすると、呼び出しがメソッドかマクロかを調べないと、どっかで分かるようにしないといけなくって。Lispとかだと、関数呼び出しもマクロ呼び出しもあんまり関係ないので。松本:で、あれはできないし、かといって、マクロ専用の記法が入ると、すごい気持ち悪いので(笑)。笹田:あの、1つの案として、さっきASTを取り出して、それをいじって、また戻すっていったんですけど、ASTは取り出せて、終わり。戻せないっていうモデルはどうですかね。ほかの言語へのトランスレーションを考えるときには、木構造が取れました、それでほかの言語にやりましたとか。RubyからSQLに変換するという例だと、ブロックの中の文字列を取り出してパースして、それをRDBMSへ送る。evalみたいな感じで。define_methodで渡して、そっちでやるとかっていうのは。松本:その場合、ここからここまでの範囲のASTを欲しいっていうのを、どうやって書くかって話だよね。笹田:ブロックでいいんじゃないですか。松本:このブロックで...。したら、ブロック全部でASTを保存しておくってこと?笹田:うん。後生大事に取っておくってことだよね。笹田:えっと、実装の話をすると、ええと...ソースコードだけを保存しておく。ファイルは変わらないということを前提で、ファイル中の位置だけ取っておいて、ぱっと文字列取ってこれるので、改めてそこからパースする。松本:っていう風にする?笹田:うん、というのは別にコストはかからない。やろうやろうって前から言ってる話ですけど。松本:それ、でも、元になるファイルが存在しないevalでは動かないよね。笹田:evalのときは、動かすプログラムをがんばって保存する。保存する?(笑)そっか。...ASTを取り出すことそのものは、実はあんまりネガティブではなくて。やったほうがいい?松本:どうでもいい、やってもいい。どれぐらい嬉しいか、どのぐらい影響があるか、ちゃんと見積もらないと、断言はできないけど。仕様を決めるときに波乱になると思うんですけど。松本:まぁ、そうなんだけど。いわゆるマクロを導入しましょうっていう提案に比べると、ずいぶん拒否感は少ない。笹田:なるほど、そうなんですね。...すみません、だいぶ、こう、たぶん...。松本:これは記事には載せられない(笑)笹田:見かけに関しては、12年の経験は、そんな感じで。松本:基本的に、大事にしている原則については、そんなに変わってなくて、ただ、いくつかの点について、一貫性についての重要と思っている度合いが下がったとか、あと、それに関連して「驚き最小の法則」っていうのを、言語設計については重要視しないというふうになったというのはあった。それは何かというと、たぶん、2003年の時点で、言語設計の判断って、基本的にぜんぶ僕がしてたんだよね。新しい機能を入れるかについても、僕がするっていう。笹田:自分でアイディアを出してた。松本:自分でアイディアを出して、自分がこれはいいんじゃないっていって、ほかの人にダメ出しをされて、採用されなかったケースは、このときからあったような気はするけど(笑)で、そういうのはあったんだけど、現代においては、どちらかというと、いろいろな人がRubyに対して提案を出すようになって、僕はそれを取捨選択することが多くなってきたんだよね。松本:で、そうすると、そういう議論の進め方が変化してきたっていうのは大きいかな?目次に戻るコミュニティ笹田:コミュニティに関して。「Rubyの真実」の中では結構短いんですよ。「開発コミュニティも良いやつばっかりだぜ」、って感じで書いてあって、開発コミュニティのことしか書いてないんですよ。インタプリタ開発コミュニティの話しか書いていない。オープンソースで、こんなふうにして、うまく回ってますって書いてない。10年で変わりましたよね。松本:変わったのはそうだよね。この時点だと、たとえば、PerlにはCPANがあるけど、Rubyにはないってずっと言われてたんだけど、いまやPerlがRubygemsを真似する時代になってたりするので。松本:ライブラリの数でも、カバーしている範囲内でも、圧倒的に勝ってるっていう現状を考えると、プログラミング言語を選択するときに、あの言語は美しいから選ぶって人は、むしろ少数派で、どっちかっていうと、あの機能、あの仕事をしたいときに、こういうライブラリが定義されているので、仕事が早く進むから、言語を選ぶっていう人が、圧倒的に多いので。いう意味では、インタプリタ開発コミュニティの外側の、Railsであったり、Rubygemsであったりっていうコミュニティが果たす影響っていうのは、ものすごく大きくなっているというのは確かですよね。笹田:たぶん、この頃って、日本国内がやっぱりおっきかったと思うんですよね。松本:そうですね、はい。笹田:日本で閉じた印象で、「Rubyの真実」は書かれていると思います。現在では、Rubyは世界中に広まっています。Railsで、バーっと広がりました。何か変わったとかありますか。松本:Rubygemsもそうだし、その他のものもそうだし、そういう開発コミュニティを超えた、より広いRubyコミュニティの成長ってのは...。笹田:ユーザコミュニティ。ユーザコミュニティってのは、Railsによるものが、かなり大きい。何をここに書くと面白いのかな。松本:コミュニティの国際化ってのは1つあるよね。メーリングリストの流量が、海外のものが、国内を超えたのが、何年だったっけ。グラフ書いている人がいたけど。そこから先は、指数関数的というか、ものすごい勢いで差が開いていく一方だったりとか、あるいは、カンファレンスも、日本で細々と開かれたり開かれなかったり、勉強会したりしなかったりだったのが、アメリカで定期的にRubyカンファレンスができて、最初は30人だったのが、いまだと、何百人参加があって、さらに、それに加えて、Railsカンファレンスが出席者二千人とかってのがあって。それだけで飽き足らず、世界各地で、Rubyのカンファレンスが開かれるようになって。それぞれのカンファレンスが、数百人とか出席者があって。それも1回だけじゃなくて、レギュラーのものが。笹田:まつもとさんも、毎年色々なところに行って。