先日、Songmuさん(@songmu)にお会いした時に、「宮川達彦さんのYAPCのキーノートは観といた方が良いよ」と仰られていたので、観ました。
16年前の映像が残ってるのが本当に有難いですね。
どういうお話か
PerlのPlackのお話で「なぜPlackはさまざまな企業に使われるほど成功したのか?」という成功の要因を解説されています。
このキーノート内では8つの"成功の秘密"が話されていました。
Good artists borrow, Great artists steal.(優れた芸術家は模倣し、偉大な芸術家は盗む。)
まず、初めにピカソの名言から。動画内でも仰られていますが、ピカソが言ったかどうかは怪しいみたいですね。
例としてHTTP::Engineを挙げられており、WSGI/Rackをインスパイアし、そのもととなったCatalyst::Engineのコードベースに引きずられていた、と。これはまさしく"模倣"であり、それは最高なものではなかった。逆にPlackはRackとWebOb.pyを"盗む"ことが良かったのではと仰られています。
Better late than too early
2つ目は「早すぎるより、遅いほうが良い」というお話。
WSGIは2003/12、Rackは2009/8にリリースされたが、Plackは2009/10に0.01がリリース。2012/10に1.0000がリリースされている。
「今更なぜ作るの?」という問いに対しては、鍋パの画像を映しながら「遅く来ると準備とかをすっ飛ばして、さまざまなものが残っている」ということを例えとして、後発だと盗める余地が多くあって、それをベースに開発することができるよね、ということを仰られています。遅く始めることのメリットですね。
JFDI
3つ目は「Just Fucking Do It」。ナイキの「Just Do It」に一単語足されてますね。この中で取り上げてた「やるしかない🔥」ってなんだっけ?と思ってたが、ちょうどサイバーエージェントの内定式の話がありましたね、当時。

まぁそんな感じで「You don't need someone's permission to write code.(コードを書くのに、誰かの許可なんて要らない)」という意識でウダウダ言わずにやれよ、ってお話。PlackではIRCでの2時間の会話の後に、ドラフト書いてたら寝て起きたら、tokuhiromさん(@tokuhirom)がPlackのリポジトリを作って半分くらいは作られていた(早い)。許可なく勝手にやればいいじゃん、の例としてちょっと危ない例えもされてらっしゃって、時代だなぁと。
STFUAWSC
4つ目は「Shut the fuck up and write some code.(ウダウダ言わずにコード書け)」。
まさしくそれを実践した例として、コミット数をグラフ化したものを出されてました。鬼コミット。
TIMTOWTDI / BSCINABTE
5つ目は「There is more than one way to do it.(やり方はひとつではない)」。 TIMTOWTDIは読みにくいんで、Tim Toadyと読む。これを広めたLarry WallのIRC、X、GitHubの名前はこれが由来。(知らなかった
もう一個が、「But sometimes consistency is not a bad thing either.(しかし、一貫性も時には悪いものじゃない)」。やり方はひとつじゃないけど、共通のやり方があってもいいよねというお話。
PSGIの話に当てはめると、統一インターフェースとして共通のやり方を生んだが、それに派生する形でTIMTOWTDIとしてさらにフレームワーク・サーバが生まれる余地が出来たと。
KISS
6つ目は「Keep it simple and stupid.(シンプルかつ、愚直に)」。
これは有名なやつですね。最初、UNIX哲学周りの本で覚えた記憶が。(「UNIXという考え方」だっけか?)
PSGIでもこの原則に従っていて、入力としてハッシュリファレンスを受け取り、出力として配列リファレンスを返すという凄くシンプルなものなんですね。「$envのハッシュリファレンスからAPIにしないの?」という質問もあったみたいですが、「シンプルじゃない」と一蹴しています。
※ ここからは個人のメモ
Perlをあんまり知らないので、ここがどういうことか改めて理解をしてみた。
まずは、これがそもそもの形。
で、多分APIの話はこんな感じで入力をオブジェクトにしてくれって話なんですかね。
一理ある、という感じではあるものの、シンプルさを優先するとたしかにハッシュリファレンスの方がいいのか。
glue language
7つ目、「Perlはglue language」。
Webフレームワークは色々あるが、考え方も色々。PSGIはPerlのこの考え方に薫陶を受けて、先ほどのKISSにあるように、極めてシンプルにすることで簡単にサーバ・フレームワークをつなぐことができる方が、HTTP::Engineと違って幸せになれるのではというお話。
Naming
最後は名前について。最初の「There’re only two hard things in Computer Science: cache invalidation and naming things. by Phil Karlton」は知らなかったのですが、「コンピュータサイエンスで難しいことは2つしかない。キャッシュの無効化と、名前を付けることだ」ってな言葉があるんですね。ちょこちょこ笑いが起こってたので、ジョーク格言とも言うべきか。
PlackはCPANのよくある名付けとは違っているというお話で、::が多すぎる!というスタートで、これ大昔にPerl触った時に同じこと思った記憶が。ここでRubyから"盗む"ことで、本来なら「Net::Server::HTTP::Prefork::PSGI」と名付けるところを「Starman」にしたり、面倒なところを省いたって感じですね。ただ、名付けは大変だが、使うのは簡単ですよねと。あと愛着が湧くし。
最後に
RubyやPythonから良いものがあるなら盗もう、そしてシンプルにして、glueでつなげていきましょうという締めではあるのですが、最後の最後に9つ目として「People」を挙げられておりました。なんかこうコミュニティって良いですねというお気持ちと、けいおんがチラチラ映っていて、16年前に放送してたのかそういえば・・・と時の流れを感じました。
最後のこれ、グッときました。

