Web開発のためのプログラミング言語の需要動向をRubyスクリプトで分析

Editor’s note: 筆者のMarc GayleはRailsデベロッパで5KMVPのファウンダだ。5KMVPとは? 彼はわずか$5Kの資金でMinimum Viable Products(必要最低限の機能しかない製品)を作っているのだ。彼をフォローしたい人はTwitterのここへ。
数か月前に、フリーのプログラマがリモートの仕事を見つけるのは、Craigslistがいちばんいいかな、と思いついた。手作業で100件ほど求人を調べたが、だんだんかったるくなって、収集と分析の作業を自動化するためのスクリプトをRubyで書いた。
そうやって集めたデータを調べてみると、おもしろいことに気づいた。ぼくはシリコンバレーでなくジャマイカに住んでいるが、バレーのニュースやブログ記事などには毎日たくさん触れている。まあ、ぼくの日常は、この“バレー・エコーチェンバー”の影響下にある。その副作用の一つが、ぼくのRubyとRuby on Railsへのこだわりだ。そして全世界的にも、この美しくてエレガントな言語がトップ人気だろう、と信じ込んでいた。
ところが、驚いたことに、そうではなかった。
集めたデータの話を始める前に、ぼくが書いたスクリプトの説明をしよう。Craigslistの上でWebデベロッパの求人を調べるには、URLのサブパスの/cpg/と/web/を拾う。そこでぼくのスクリプトは、すべての都市のリストを作って、そのURLの末尾に/cpg/と/web/をくっつける。Craiglistには、こういうことが簡単にできるクリーンなRESTful APIがないのだ。
求人エントリを拾ったら、それが本当に当の都市のか調べる。なぜかというと、その都市に求人がないときCraiglistは“近隣都市”のエントリを掲載するからだ。重複を避けるためには、そういう他都市のエントリは捨てなければならない。ただし同じ求人案件が複数の都市にあるときには、どちらも拾うべきだ…その部分はまだコーディングしてないんだけど。
こうやって各都市の求人情報を集めたら、各都市の最初のページにある100件のリンクをいくつかのキーワードで調べる(Craiglistの1ページは100項目なのだ)。そうするとだいたい、各都市の最新の求人情報が分かる。ただし件数のとても多い都市では、‘最新の100’が必ずしも代表的な標本であるとは限らないが。
Railsに関しては、次のキーワードを調べた: rails, (ruby on rails), (ruby on rails 3), (rails 3), (rails 2)。
Rubyに関しては: ruby, (ruby 1.8.7), (ruby 1.9.2), (ruby 1.9.3), ruby187, ruby192, ruby193。
この検索は大文字小文字を区別しないので、Ruby、rUbY、RUBYなどがみな引っかかる。今、”Rails”だけでそれがRuby on Railsのことだと分かる文脈情報を見つけようと努力しているところだ。
ただし今のぼくのアルゴリズムでは、’Ruby’の結果に’Ruby on Rails’で見つけた結果も入ってしまう。どちらもRubyで拾われちゃうるから。
スパム臭い項目は、ぼくの肉眼と手作業で選り分けて捨てた。
というわけで、以下にご紹介する結果は、フリーのプログラマに対する求人の、だいたいの動向を示しているとおもう。
前置きはこれぐらいにして、ではデータと分析の結果をご覧に入れよう。
標本総数
- 対象都市数: 720
- 求人件数: 11992〜12,076(スクリプトは正確を期すために複数回動かした。)
- スクリプトの一回の実行所要時間: 16分〜1.25時間
検索した言語
サーバサイド言語とフレームワーク
- C# (C-Sharp)
- CodeIgniter (PHP Framework)
- Django (Python Framework)
- Dot-Net
- Java
- Lisp
- Perl
- PHP
- Python
- Rails (Ruby Framework)
- Ruby
クライアントサイド言語とMVCフレームワーク
バッチ1 – 言語
- HTML
- CSS
- Javascript
- Flash
バッチ2 – JavaScript MVCフレームワーク
- Backbone.js
- Closure
- Ember.js
- Knockout.js
- Node.js
サーバサイド言語では、PHPがまさにウサイン・ボルト的にダントツだ。Rubyはかろうじて5位、2位はJava、3位4位はそれぞれ、.NETとC#だ。
クライアントサイドでいちばん驚くのは、Flashの需要がまだあることだ(上図)。毎日シリコンバレーの情報漬けになっていると、“Flashは死んだ”と洗脳されてしまうが、現実にはJavaScript並の需要だ。
JavaScriptのフレームワークに関しては、今複数の製品間の競争が激しいはずだが、ぼくが今回やった非科学的で非精密な調査では、上の図・表のようになる。
たとえばEmberは最初、14の結果があった。でもそれらのリンクはすべて“Member”や”Membership”などの中の’ember’だった。探している Ember.jsやEmberは、結局なかった。というわけでクライアントサイドのMVCフレームワークとしては、BackboneとNodeしか拾えなかった。〔余計な訳注: Rubyって標準ライブラリに正規表現はないの?〕
全部の言語とフレームワークの結果を一つのグラフと表にまとめると、下のようになる。数か月前にGroupTalentのファウンダから聞いた話では、今いちばん求人件数が多いのはサーバサイドではなく、クライアントサイド、とくにJavaScriptフレームワークだそうだ。
以下の図と表が、総集データだ:
結論
この記事は、いろんな勢力間の論争に火を付けることがねらいではない。プログラマ(とくにWebデベロッパ)の市場に関する、非科学的な分析にすぎない。その市場のプロキシとして、Craigslistを利用している。
これからプログラミング言語やフレームワークを勉強する方にとっては、こういう、市場の需要という要素も、選択の参考になるかもしれない。でも、それをとくに勧めるわけではない。ぼくなんか、市場のシの字も需要のジの字も無視して、Rubyが好きだからRubyプログラマになったにすぎない。
だから、いろんな言語を試してみて、気に入ったのを選ぶとよい。最初のうちは仕事もお金も関係のないプログラミングばかりだから、それでいいと思う。
ぼくが自分の会社5KMVPで作ったきたWebアプリケーションでは、RubyとRuby on Railsを使った。好きな言語だから。クライアントも、満足してると思うよ。
そのほかの分析に興味のある方(たとえばモバイル vs. サーバ言語とか)は、この記事のコメントやTwitterでリクエストしてほしい。
ぼくが過去に書いた記事の中では、Dropboxに関する記事やキャッシュフローと利益に関する記事あたりがおもしろいと思う。
今回書いたRubyのスクリプトは、GitHubのここにある。出力のサンプルもある。この記事で使った求人案件すべてのリストもある。
今後の要望や改良アイデアなども、どしどしお寄せいただきたい。










