トップ «前の日記(2016-06-14) 最新 次の日記(2016-06-17)» 編集

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|

ToDo:


2016-06-16

_ Rubyが今のPythonの地位にいない理由

歴史のことなんぞなんも知らんけど、「技術的には今のPythonの地位はRubyでもよかったのに、そうならなかった」のが何故か、その理由を書いてみよう。僕はRubyの歴史なんて知らないし、以下の文章は全部、まるで見てきたかのように書いてますが、適当に書いたくせに何故か断言口調になっている怪文書の類いです。

https://twitter.com/mametter/status/741950239662170112

まめさんの書いた理由リストはどれも関係ない。いやカスってるけど。難しいというのも関係ない。

僕がRubyを知ったころ…最初に書いた通りRubyの歴史なんて知らないので、別に早くもないわけだけど…Rubyというのは全く使われていない言語だった。どっかの好き者がPerlの替わりに単純な処理に使って、「ウフ、美しくかけた、グフッ」とかつぶやいているくらいだった。もちろん、僕はこの頃はPerlを使っていた。

当時のスクリプト言語界はCGIやmod_perl全盛。PerlはCGIを書くための情報やライブラリが豊富で、かつ実績のあるmod_perlで高速化もできる。CGIのためにPerlの替わりにRubyを使う理由は、ちょっと無かった。かといって、小規模なスクリプトだとRubyのオブジェクト指向だのなんだのが、あまり生きてこなくて、Perlでいいや、となってしまっていた。

そんな時にキラーアプリ(笑)が現れた。tDiaryである。tDiaryというのは、ここを書くのに使っているシステムであるが……まあすごく有名というほどのものだったわけではない。日本でRubyの知名度を上げるのに貢献したとはいえると思う。オタクのオモチャだったRubyが「なんだか知らないけどtDiaryを使うために必要なもの」くらいに地位向上したのだった(当時別にプログラマじゃないオタもWebサーバにCGI置くとかしてたことを考慮してください)

とはいえしょせん日記システムである。ある時「OCamlて誰も使ってないですよね?」と関数型屋に聞いたことがあって、誇らしげに「あのみんな使ってるUnisonはOCamlで書かれているんだよ!」と返答されたことがある。うん、Unisonなんて知らないよね。「RubyのキラーアプリはtDiary!」というのは「OCamlのキラーアプリはUnison!」ていう程度のなにかではないかと思う。そもそも海外知名度ゼロだし。

さてそんな時に本物のキラーアプリが現れた。Railsである。たぶんTomcatあたりから発生しはじめた、Apacheとかやめてアプリケーションサーバ直接動かすような選択肢があってもいいんじゃない?という雰囲気が現われ、CGI/mod_perlが廃れていた時流にうまく乗っていたのだと思う。どうせ今までCGIとかで培った資産が生きないなら、言語も見直してもいいんじゃない?というような雰囲気もあったのだろう。

さて、ライバルのPythonはRailsブームの2,3年前くらいから、少しずつじわじわと知名度を上げていっていた。例えばLinuxディストリビューションの管理システムはshell scriptとPerlが常識だったけど、RedHatやGentooなどがPythonを使いはじめていたり……というように。まあなんせ英語圏の言語だし。DjangoというRailsのライバル(たぶん)もあったけど、Railsとの争いに破れた……がPythonは既に色んなところで支持基盤を作っていたため、Webアプリフレームワーク市場がいかに当時大きかったとはいえ、この敗北は致命傷ではなかった。

一方でRubyといえばRailsである。不完全にしておよそ正しくないプログラミング言語小史(http://www.aoky.net/articles/james_iry/brief-incomplete-and-mostly-wrong.htm)には

この言語は後に本当の作者であるデビッド・ハイネマイヤ・ハンソン(DHH)によりRuby on Railsと改名された。
[MatzがRubyという言語を作ったというくだりは間違いだから次に改訂するときに取った方がいいよ - DHH]

などと書かれているのだけど、まあこういうジョークが言われる程度には、Ruby==Railsというのが皆の共通認識だと思う。

あと、Railsと時をほぼ同じくして、海外のXP/リファクタリングオタクどもが、何故かRubyに注目して、エモいことを言い始めた。いわく「Rubyでコード書くと気持ちいい」とかなんとか。あとそういう人たちの影響もあり、デザインがどうとか、テストファーストがどうとか、開発体勢がどうとか、良いコードは美しいとか、なんだか、いや、技術と関係あるんだけど、もうちょい実装の話とかないの?みたいな話が特に海外のカンファレンスでは多かった。まあインタプリタやよく使われるライブラリを実装してる人たちが日本にいるってのはあるだろうけど。

つまりRailsとエモい外人の発生が起きた(日本ではRails以前からいたエモい人たちは、海外への普及への影響力ゼロなのでここでは関係ない)。どちらもRubyの知名度を上げ、企業などがマジメに使いはじめるなど、Rubyの発展や普及に大いに貢献した……が2つの副作用が起きた。

  • PHPが受け皿になってくれていた層がRailsに流入した
  • エモい人二世三世が現わた

さて、本来PHPを学ぶべきだった人たちが、Railsファンボーイになり、Rubyのカンファレンスに行き、エモい発表を聞いて二世三世になったのである。こういう人達の中には残念ながら、技術的な背景が足りない人もいて、そういう人達が人類がコンピュータサイエンスとして培ってきた歴史とかをある程度把握しないままに、なんだか適当な発言をするのである。例えば「テストファーストはRuby発祥」的な。

そういう人達はどこの世界にもいるものだけど……Rails界隈には許容量を越える量で発生してしまった。で技術がわかるRails関係ない人の感想は残念ながら、「Ruby?あれなんかキモい。Pythonで十分だし」みたいな感じになってしまったのであった。Hacker Newsから一例をひいてみよう。

https://news.ycombinator.com/item?id=5157886

"To me the biggest annoyance about the Ruby community is the belief that they invented everything"

「Rubyコミュニティの連中はヤツラが全てのことを発明したと信じてやがってムカつく」

"People don't hate ruby, people hate the ruby on rails community" "This" "+1 to this"

「Rubyが嫌いなんじゃなくて、Railsコミュニティが嫌いなんだよ」「それな」「ほんこれ」

いやあ……ひどい言われようである。こんな謎宗教みたいな扱いを受けてれば、ある程度規模の大きい企業、まぁデカいのではマイクロソフトとか、の人が採用しよう、って感じにはならない。Webアプリフレームワークならともかく、他の分野ではPythonという十分に強い代替があるならなおさら。というわけで、Rubyが今のPython地位を確立できてない理由は「なんかキモそうだから」なのである。

一方で、Railsの勃興とエモい人の流入みたいなのが無ければRubyが今ほど流行ってたかというと……それもあやしいと思う。この文章の前半部分でムダに書いた通り、Rails以前は知名度ゼロに近かったので、むしろRailsのおかげでRubyは本来集める予定だった以上の注目を集めている、という感もある。どうすれば良かったとかは知らない。まぁ海外に対してもうちょっとマーケティングできてれば、特にRailsが流行ってる間に「XXならRuby」ていうジャンルをもう1つくらい作れていれば良かったんだろうけど、まあどっちも難しいし。

まあ心配しなくてもRailsは落ち目ぽいし、PHPを学ぶべきだった人達はnode.jsが分担して受け皿になってくれてるし、そもそも現在のPythonの役目もGoあたりが引き継ぐんじゃねーの、とか思ってるんで、まあ。

なんかもっと適当に書くつもりだったんだけど、中途半端な適当さになってしまった……本当にここに書いたようなことが重要な要因かは知らないけど、なんにせよ流行り廃りに技術的な要因はたいして無いんでないかな、とは思ってる。運だよ運

(11:35)

_ 追記

うわあ言語いじりは反響大きいな。一応原文に書いたつもりだったことが多いけど、反応見てて思ったことなど。

  • 結論あってる/間違ってる→最後に書いた通り、本気で「キモい」だけが理由だとは思ってないです。まあ現実にはもうちょい複合的なもんでしょうし。あと最初に怪文書とも書いたわけで。
  • PHP dis→上記の文章ではPHPや、今現在PHPを使ってる人、PHPからRailsに移行した人、をdisる意図はなかったです。「よしプログラムはじめちゃうぞー」的な人がPHPを登竜門としていた時代があったのは間違いなくて、そういう人達の一部がRailsを登竜門とするようになったことは、まあ事実だと思います。それはRailsが流行っているということであり、喜ばしいこと。
  • エモdis→エモいノリ嫌い、という人いると思いますが、一般にはそれ単体では致命的ではないと思います。僕個人としても今はエモいのには積極的には近付かないですけど、積極的に嫌いでもないです。エモ一世は技術的にも優れた人が多かったんじゃないでしょうか。実際僕もdave thomasのウサギ本を読んで「おおおこれはすごいぞー」とRuby始めたと思います。
  • じゃあ何がダメなのか→技術をわかってない人がエモいこと言ってる、の2点がそろって始めて僕が嫌いなものになります。引用したHacker Newsでも、エモいだけで叩いたりとかはしてなかったです。
  • Rails以前からエモいのいたよ→日本にはいました。そのいくつかは今でも僕の好きな飲み会会話トピックだったりもしますが、海外への影響は皆無でしょうし、Python vs Rubyという文脈では特に関係がないと思います。あとRails以前にいたエモい人は技術的に問題ない人が多かった印象。
  • 科学技術/機械学習系が重要→numpyは大変重要な例だけど、それだけということはない気がします。既に書いたけど、もっと前からディストリビューションが使ってたとかも重要な気がします。
  • node.js→ごめんそこ適当。node.jsはブラウザJSから流入した、あまりコンピュータサイエンスとか知らなさそうな人が、ひどく昔からある概念を指してnode.jsはすげえぞ、って言ってるように見えたことがあったので。
  • Go→ごめんそこ適当。一応根拠はDocker。個人的にはある程度規模大きくなるグルーコードは型欲しいと思ってて、例えば機械学習のコードとかもGoとかの方がいいんでないかなぁ。オペレータオーバーロードをどのくらい人々が愛してるかとかいう話になるかもしれないなとも。
  • Googleのおかげ→どうだろうなあ趨勢を決したほどかというと。

個人的には、今Pythonが強いところでRubyが逆転する、ってよりは、なんか新しい分野のデファクトがRubyになる系の逆転劇が見たいですね。

(19:48)

本日のツッコミ(全6件) [ツッコミを入れる]
_ morrita (2016-06-17 10:50)

本題とは関係ないですが、機械学習はほんとに Python が妙な勢いで流行っていて, それまでは R でいいじゃん、とかいってた人々が徐々に Python に乗り換えたりのりかえてなかったりしてます。R vs Python は検索すると Ruby vs Python とはまた違った Python の底力が見られて面白いです。

この文脈での Python 支持者は (R と違って) プロダクションにもって行ける、というのを理由の一つとして推しているけれど、大前提として (R と同様に) 対話的に使えるというのがあり、それが R 的な場面で流行っている理由かな、と思います。

僕は Python3 移行に手こずりすぎたせいで Python はだいぶしょぼくれたな・・・とおもってましたが、R 代替品としての流行りを見て考えを改めました。

_ shinh (2016-06-17 12:01)

あーIPythonが重要なんですね。。それだとGoではダメか。ではここでまさかのOCaml

グルー言語として、つまり「なんか重い部分はCとかで書いてあるけどロジックはスクリプトで書くよん」みたいな用途だと、機械学習の外でもすぐ出てくるなーとか思ってます。僕の使いたい範囲だとPIL、z3、gdbなど。最近だとCTFやってる人がみんなPython使ってるのもあり。。使わないものだとなんかアプリのプラグインとかよくPythonですよねえ。

_ あめ玉 (2016-06-17 21:28)

MITとかのプログラミング入門コースがしばしばPython、というのはどの程度影響してるんでしょう。Pythonでnumpyとかcupyが進化したのはむしろそっちから、とかいうことを考えてたんですが、歴史の順序が逆かもしれない。

_ shinh (2016-06-17 21:32)

昨今ではアカデミアは後手に回ることが多いと思ってるので、おっしゃる通り順序あやしいと思ってます。ですが逆の強い証拠もちょっとぐぐった感じでは見つからないので聞かないとわからないかな、と思ってる感じです。

_ nuc (2016-06-18 05:59)

ちょっと誰も Python の言語本体を擁護しないらしいので、あえてしますけれども、Python のいいところは「技術的に足りない人が自己陶酔しにくくできている」ところだと思っております。
つまり、lambda が式のみ許すといった諸々の制限によって、技術的に足りない人が快感を覚えるようには書きにくくなっているように思うのです。名前空間をましにした BASIC 程度ですので。
Ruby だとこうはいかない気がするのですよね。

_ spilits (2016-06-18 20:13)

使う奴らがエモかったから他の言語が流行った
という考え方が最高にエモいと思う

お名前:
E-mail:
コメント:
人生、宇宙、すべての答え
本日のリンク元

2016年
6月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
1.spilits(2016-06-18 20:13) 2.nuc(2016-06-18 05:59) 3.shinh(2016-06-17 21:32)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h