play + intellij、jQuery API、StackOverflowについて

play + intellij

EclipseのScala + Playプラグインが使い勝手悪いのでintelliJ Ideaでやろうと思った。インストールしてScala + play統合プラグインを導入するが…。Playプロジェクトを認識してくれない。scala.htmlを開いてもまるでプレーンテキストファイルを編集しているかのごとく、色も付かないしコード補完もしてくれない。そもそも、Playプロジェクトを作れない。Playコマンドのパスを通さないとだめなのか?そんな馬鹿な。もう最新版はTypesafe版しかないぞ。と、思いつつもパスを通してみるが、やっぱりダメ。

そしてようやく気付いたのだが、Play Frameworkのサポートは有償のUltimate版のみらしい。

IntelliJ IDEA Editions Comparison

そんな、だってプラグインにScala + Play 2.0 supportと書いてるじゃないですか。そのプラグイン入れたら動くと思うじゃないですか。わっかりにくいよ!分からなかったの俺だけ?

と、思ったら公式ブログに少なくとも3人は私と同じことで悩んでいる人がいた。

Scala and Play 2.0 Plugin for IntelliJ IDEA 14 EAP is Out

StackOverflowにもいた。

Play with Activator Issue on IntelliJ Idea 14

ということは、やっぱり分かりにくいという事だと思う。俺は悪くない。しっかし、Personal Lisenceが$199かあ。ちょっと高いなー。高いけど欲しいなー。どうすっかなー。

jQuery APIについて

「jQuery日本語リファレンス」というサイトがある。本サイトはjQueryのAPIをそれぞれ日本語で解説してくれているが、更新が長らく止まっている。古い情報が多いため、あてにしない方が良い。面倒くさがらず本家の英語を読んだ方が良い。

jQuery API

私は参照しないようにしているが、Google検索を行うと高確率でこのサイトがヒットするので邪魔なことこの上ない。暇だったら代替サイトを作りたいくらいだ。けど、プログラミング系のコンテンツは問題が解決したらそこで終わりで、製作者の収入に結び付きにくいというのが経験上分かってきているのでやる気が起きない。ボランティアでやるほど私は意識が高くない。

Webフレームワークや関連ライブラリの更新速度は物によってはかなり早いので、1年、下手したら数か月したら使い物にならなくなる。なのに、リファレンス本などが売られているのはどういう事だろう。上記サイトをブラウザ内のタブで常時開いているほうが一発で検索もできて便利だと思うが、ああいう本は売れてるんだろうか。APIを和訳しただけでバカスカ売れるなら俺もやりたい。

StackOverflowについて

StackOverflowは非常に有益なプログラミング系Q&Aサイトだ。基本的なシステムはYahoo!知恵袋などと似ているが、大きく異なるのは質問と回答に閲覧者がvote(投票)出来ることである。

Yahoo知恵袋はベストアンサーを質問者が決定し、そのベストアンサーがトップに表示される。しかし、StackOverflowはvote順にソートされて表示される。これはすなわち、より多くの人によって良いと認定された回答が頭にくるということである。で、あるから、たとえば「ちゃんと調べてから質問しているのでしょうか。公式ドキュメントを読んでください」などというイラっとするだけで何の建設性もない質問はちゃんと隅に追いやられる。「公式ドキュメントのここに書いてある通りです。つまり、サンプルコードを挙げるならばこうなります」という親切な回答が上位に来る。

さらに、回答にコメントを書くことができるので、回答同士で「Xの回答者はYYYと言っていますが~」なんてやり取りを書く必要がない。質問に対して最も適した回答が頭にくるような仕組みになっている。

例を示そう。たとえば、下記ページは「ある文字列が特定の文字列で終わっているかどうかを判定する関数がJavascriptにあるか」という質問である。

endsWith in javascript

これに対して、一番voteされた回答(意訳)は、

下記のように書けば安全にString.endsWithメソッドを使えますよ

if (typeof String.prototype.endsWith !== 'function') {
 String.prototype.endsWith = function(suffix) {
 return this.indexOf(suffix, this.length - suffix.length) !== -1;
 };
}

というものである。この回答は閲覧時点で1155票も獲得しており、かなり多いほうである。

対して、得票数が少ない回答というのは、たとえば

CoffeeScriptではこう

String::endsWith = (suffix) ->
 -1 != @indexOf suffix, @length - suffix.length

という回答で、これは得票数ゼロであった。誰もCoffeeScriptの話なんかしていない。Javascriptって言ってんだろ。こういうのは有益とは言えない。回答になっていない回答はページ下方に追いやられる。

あとは、他の回答者が示した方法に対して

正規表現を使うな。処理が遅いだろ。あとはString.prototypeに関数を追加するの、それ、注意な。

とかほざいている回答も得票数ゼロ。

こういう回答を排除しつつ、真に有益な回答を皆で選ぶというシステムが構築できているのがとても素晴らしいと私は思う。

そんな素晴らしいStackOverflowに日本語版サイトが誕生した。

スタック・オーバーフロー beta 

あれだな。カタカナで書くと途端にダサくなるね。

日本語圏でもこの素晴らしさがはやく広まるといいな、と思っています。