米国から見た日本のRuby事情(翻訳)

こんにちは、hachi8833です。来週のRubyKaigi 2017@広島にちなんで、米国から見た日本のRuby事情の翻訳記事をお送りいたします。

RubyKaigi 2017

概要

原著者の許諾を得て翻訳・公開いたします。

通常はリンクを日本語版に置換えますが、本記事では米国人が参照したリンクをたどりやすいよう、原則として英語リンクはそのままにしてあります。

米国から見た日本のRuby事情(翻訳)

最近のやりとりの中で「日本のRubyコミュニティにおけるRubyの使いみちは、米国とはだいぶ違うよね」という話題に触れたところ、ポカーンという顔をされてしまいました。

特に、「米国でRubyと言えばほぼRailsやWebアプリと相場が決まっているのにね」(英語圏の皆さまには言うまでもないことですが)と続けたところ「え、じゃ日本でRubyをRails以外の方面に使ってる人たちって、どんなことやってんの?」と一斉に聞き返されてしまいました。

皆がその点に関心を抱く理由を知りたくなったので、そのまま会話を続けました。米国流のRails利用法は、問題に対してメモリやconcurrencyをがっつり割り当てる物量作戦ですが、日本流ではRubyをそういう風に扱いません。こう話すと、決まって「RubyでJITが使えさえすればいいものを…どうしてJITがないんだ?」という話になります。JITは複雑かつメモリ集約的(memory-intensive: 大量のメモリと引き換えに速度や並列性などを向上させる)なので、Webサーバーを実行させれば素晴らしいのですが、◯◯◯に使うにはちょっと…。それはともかく、日本のRubyistたちのRuby活用法を探ってみたいと思います。

(MRIとJITについては、本記事へのツイート返信↓でも話題になりました: JITに関心のある方はどうぞ)

Zachary Scott、島根県松江市の「**Ruby City MATSUE**」看板前でキメるの図

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もあります。他にも、RubyBizFukuoka 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 SasadaShyouhei UrabeYui NaruseZachary ScottAkira 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アソシエーション近影(Googleストリートビューより)

言うまでもないことですが、英語圏のRubyもRails一色で塗りつぶされているわけではありません。米国のRubyカンファレンスでは機械学習やIoTの話題も取り上げられていますし、もしかしたら米国のどこかを走る自動車でとっくにRubyが動いているかもしれません。RubyとRailsの両方で活躍するAaron PattersonAkira MatsudaRichard Schneemanのように、Ruby世界とRails世界は互いに強くつながっていることは間違いありませんが、両者が見つめる世界は同じではありません。

いつの日か「どうしてRubyはRuby on Railsのみに完全に最適化しようとしないのだろうか」と疑問に思うことがあったら、日本のコミュニティを思い出すとよいでしょう。そこはRubyのふるさとであり、Rubyの開発はそこで行われているのですから。もちろん日本でもRailsは使われていますが、日本でメジャーになるのはまだ先のことです。

私よりもずっと日本のRubyコミュニティ事情に通じているZachary Scottに深く感謝いたします。Zacharyが本記事のドラフトをレビューしてくれたおかげで多くの視点に気づくことができ、いくつかの大きな誤りも見つかりました。「日本のRubyコミュニティはどこが違うか」セクションの多くは、Zacharyが親切に教えてくれるまで私がまったく知らなかった情報です。

そしてRubyとmrubyの生みの親であり、本記事でmrubyやHerokuの記述の修正に協力いただいたMatzにも深く感謝いたします。

関連記事

RubyWorld Conference2016 初日レポート

RubyWorld Conference2016 二日目&まとめレポート

RubyWorld Conference 2016に今年もスポンサー登録しました&紹介

[インタビュー] Aaron Patterson(前編): GitHubとRails、日本語学習、バーベキュー(翻訳)

[インタビュー] Aaron Patterson(後編): Rack 2、HTTP/2、セキュリティ、WebAssembly、後進へのアドバイス(翻訳)

『ふくおか経済』に弊社関連会社ウィングドア代表の福原のインタビューが掲載されました。

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833

コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。
これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。
かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。
実は最近Go言語が好き。
仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

BPSアドベントカレンダー

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ