こんにちは、hachi8833です。来週のRubyKaigi 2017@広島にちなんで、米国から見た日本のRuby事情の翻訳記事をお送りいたします。
概要
原著者の許諾を得て翻訳・公開いたします。
- 英語記事: How is Ruby Different in Japan?
- 公開日: 2017/06/04
- 著者: Noah Gibbs
- ブログサイト: appfolio -- 米国サンタバーバラ、ダラス、サンディエゴに拠点を構える開発会社です。
通常はリンクを日本語版に置換えますが、本記事では米国人が参照したリンクをたどりやすいよう、原則として英語リンクはそのままにしてあります。
米国から見た日本のRuby事情(翻訳)
最近のやりとりの中で「日本のRubyコミュニティにおけるRubyの使いみちは、米国とはだいぶ違うよね」という話題に触れたところ、ポカーンという顔をされてしまいました。
特に、「米国でRubyと言えばほぼRailsやWebアプリと相場が決まっているのにね」(英語圏の皆さまには言うまでもないことですが)と続けたところ「え、じゃ日本でRubyをRails以外の方面に使ってる人たちって、どんなことやってんの?」と一斉に聞き返されてしまいました。
皆がその点に関心を抱く理由を知りたくなったので、そのまま会話を続けました。米国流のRails利用法は、問題に対してメモリやconcurrencyをがっつり割り当てる物量作戦ですが、日本流ではRubyをそういう風に扱いません。こう話すと、決まって「RubyでJITが使えさえすればいいものを...どうしてJITがないんだ?」という話になります。JITは複雑かつメモリ集約的(memory-intensive: 大量のメモリと引き換えに速度や並列性などを向上させる)なので、Webサーバーを実行させれば素晴らしいのですが、◯◯◯に使うにはちょっと...。それはともかく、日本のRubyistたちのRuby活用法を探ってみたいと思います。
(MRIとJITについては、本記事へのツイート返信↓でも話題になりました: JITに関心のある方はどうぞ)
Sweet post. Thanks for writing that up.
So, in your read, is memory really the core concern w/ adding a JIT?
— Matthew Gaudet (@MattStudies) 2017年6月14日
Zachary Scott、島根県松江市の「Ruby City MATSUE」看板前でキメるの図
日本のRubyコミュニティはどこが違うか
米国のRubyコミュニティは、ほぼRailsをきっかけに立ち上げられました。え、「Rubyはもっともっと前からあるゾ!」って?、はいもちろん存じておりますし、実際そのとおりです。しかし米国でRubyが知られるようになったきっかけはやはりRailsだったのです。
そのため、米国におけるRubyの命運はRailsの動向に大きく左右されます。Railsが盛り上がればRubyも盛り上がるというわけです。Railsはほぼピークを迎えて現在ゆるやかに逓減気味ですが、Rubyについても同じことが言えます。もちろん、RubyにはRails以外の使いみちもあることは間違いありません。しかしながら米国や英語圏では、両者は栄枯盛衰をともにしています。
その点日本では少々趣が異なります。日本ではRails登場前からRubyが普及していましたし、日本でのRailsの普及は、Railsが米国で爆発的に広まったときほどに急速ではありませんでした。(米国における)Railsは引き潮気味であり、Rubyカンファレンスで見かける米国人も以前より減りつつあるようです。
一方日本ではあらゆる地域にRubyコミュニティが根付いていて、コミュニティは増加の一途をたどっています。Ruby Centralの日本版であるRuby-no-Kaiは、今年既に6つ以上もの地域RubyKaigi(Rubyカンファレンス)を開催しています。日本国内だけでこれほどの開催数です。新興のカンファレンスもあれば、数年目を迎えたカンファレンスや今年で11年目(!)という古参のカンファレンスまであります。そして、言わずと知れた国際的なRubyKaigiも開催されています。さらに、エンタープライズ向けカンファレンスであるRubyWorld Conferenceもあります。他にも、RubyBizやFukuoka Ruby Awardsといった表彰カンファレンスがいくつも開催され、先のRuby World内でもRuby Prizeの授与式を行っています。Rubyは日本では今も勢いよく成長しています。
面白いことに、Ruby-no-Kaiではカンファレンスの運営をbug trackerで行っているんですね。運営の様子は誰でもここで見ることができます。
違いは他にもあります: 日本政府によるスポンサーシップです。日本では、Rubyが日本で発明されたことが大変誇りに思われており、そのことが今も日本のRubyを支えています。福岡県の下部組織であるFCOCAは、多くの米国Rubyツアー、多くの組み込みRuby関連、さまざまなRuby関連コンテンストや賞のスポンサーを務めています。島根県もRuby関連のスポンサーであり、県庁所在地の松江市も「The Ruby City」を名乗っています。各地域はミニチュア版シリコンバレーとして使われる特区を設置し、地方自治体がRubyによる町おこしに取り組んでいます。取り組みの多くは組み込みRubyやRuby IoT機器を用いています(すべてではありませんが)。
mrubyで日本政府によるスポンサーシップを非常によく見かける理由のひとつがこれです。聴衆の米国人から「なぜ組み込みRubyが必要なのですか?」とよく質問されています。しかし日本人にとっては、日本で既にRubyがそのように使われているから、という面が大きいのです。実際、Rubyはメモリ消費が大きい割にうまく組み込めていますし、mrubyは本当にうまく組み込めています。しかし英語圏のRuby界隈では、組み込みRubyやmrubyはそれほど大きな部分を占めていません。
他にも、日本のRubyコミュニティに(米国との)大きな違いがひとつあります。それはコミュニティの一極集中です。Koichi Sasada、Shyouhei Urabe、Yui Naruse、Zachary Scott、Akira Matsudaといったコアコントリビューターの多くが、10分から15分もあればお互いに行き来できるほどの近所に固まって住んでおり、頻繁に顔を合わせています。言うまでもなく、Matzもコミッターの定例会などでこうしたコアコミッターたちと定期的に会っています。地域カンファレンスの運営組織は1つだけのことが多く、カンファレンスのスポンサーも同じ顔ぶれの少数スポンサーが務めることが多いのです。
もうひとつ、RubyのコアコミッターのRubyに対する技術的な視点に影響を与えているポイントがあります。MatzはHerokuの正社員であり、Koichi(現在のRuby VMの作者であり、Rubyアソシエーションの理事でもあります)も最近までHerokuに在籍していました。Herokuは米国企業であり、親会社はSalesForceです。Herokuはホスティングサービスを提供する企業でもありますが、メモリ使用量(最もコストが高い)とCPU(アイドリングすることが多く、VM間での移動が容易)の折り合いの付け方について、Railsを生のEC2インスタンスにホスティングする米国企業とはいささか考えを異にしています。Herokuは、最小限のHerokuインスタンスでRubyが正しく振る舞うようにすることも真剣に望んでおり、実際にその意向はあらゆる面で十分納得のいくものになっています。
日本のエンタープライズ向けRubyカンファレンス
この他の違いについても見てみたいので、日本の島根県松江市で開催された2016年のRubyWorld Conferenceのプログラムを眺めることにしましょう。
Ruby Worldの最初のスピーチは、車載電子機器制御ユニットのテスト機にRubyを使った話です。2番目は組み込み用ハードウェアのアプリ開発に組み込みのmrubyを使う話でした。そう、組み込みでやってるんです!
3番目はEnechangeという電気料金比較サービスの話題です。既にWebサイトはあるようですが、これも米国で一般的に見かけるRubyベースのスタートアップ企業とはおもむきが違っています。
続いて日立と永和システムマネジメントによるスポンサートークです。永和システムマネジメントの企業ページには「自動車の車載システム開発」とあり、ここでもきっと自動車での組み込みRubyに触れていたのではないかと思われます。
続く2つのスピーチは科学技術系の話題と、機械学習インフラについての話題です。どちらも実用的なトピックであり、かつ英語圏のRuby Worldにもそれぞれ同じテーマのスピーチがありましたが、これらについては日本のRubyコミュニティの方が活発です。日本語データ管理についてはTreasure Dataも見逃せません。同社は日本のRubyコミュニティへの影響力も大きく、著名なRuby開発者も擁しています。
続いてはLego MindStormでmrubyを学ぶという話題です。いかにも英語圏のRubyコンベンションで見かけそうなテーマですが、ここでも組み込みを使っています。R-learning社の「Rubyで企業を成長させる」スピーチの後は、「小さな町で子供向けのプログラミング講座をはじめてみて」で、こちらもカリフォルニアやニューヨークのRubyコンベンションで見かけそうなトピックです。
全般に、Rubyの応用よりも、ビジネスの話題や、アジャイル、DevOps、開発者の仕事の見つけ方など開発手法を話題にしたスピーチが多く目につきます。IoTセンサー企業によるスポンサートークでは酒造への応用を話題にし、続くスポンサートークではRailsコンサルタントが登壇しました。こうしてみると、Rubyの利用法が米国と日本でまったく違うかのように考えるのは正しくありません。
同じだけど違う、違うけど同じ
日本のコミュニティでRuby on Railsを見かけることもあると思いますし、実際使われています。しかしRailsの使われ方が一味違っていることにも気づくでしょう。たとえばクックパッドでは世界最大級の壮大なRailsモノリスを運営していますが、Railsを基本的にCMSとして使っており、コンセプトとしてはTwitterよりもむしろWordPressに近いでしょう。
Rubyアソシエーション近影(Googleストリートビューより)
言うまでもないことですが、英語圏のRubyもRails一色で塗りつぶされているわけではありません。米国のRubyカンファレンスでは機械学習やIoTの話題も取り上げられていますし、もしかしたら米国のどこかを走る自動車でとっくにRubyが動いているかもしれません。RubyとRailsの両方で活躍するAaron Patterson、Akira Matsuda、Richard Schneemanのように、Ruby世界とRails世界は互いに強くつながっていることは間違いありませんが、両者が見つめる世界は同じではありません。
いつの日か「どうしてRubyはRuby on Railsのみに完全に最適化しようとしないのだろうか」と疑問に思うことがあったら、日本のコミュニティを思い出すとよいでしょう。そこはRubyのふるさとであり、Rubyの開発はそこで行われているのですから。もちろん日本でもRailsは使われていますが、日本でメジャーになるのはまだ先のことです。
私よりもずっと日本のRubyコミュニティ事情に通じているZachary Scottに深く感謝いたします。Zacharyが本記事のドラフトをレビューしてくれたおかげで多くの視点に気づくことができ、いくつかの大きな誤りも見つかりました。「日本のRubyコミュニティはどこが違うか」セクションの多くは、Zacharyが親切に教えてくれるまで私がまったく知らなかった情報です。
そしてRubyとmrubyの生みの親であり、本記事でmrubyやHerokuの記述の修正に協力いただいたMatzにも深く感謝いたします。
関連記事
[インタビュー] Aaron Patterson(後編): Rack 2、HTTP/2、セキュリティ、WebAssembly、後進へのアドバイス(翻訳)