HerokuにおけるRubyのサポート体制

メリークリスマス。[Heroku Advent Calendar 2014](http://qiita.com/advent-calendar/2014/heroku)の最後はHerokuエバンジェリストのワタクシ、@ayumin がつとめさせていただきます。

ご存知の方も多いと思いますが、[Heroku](https://www.heroku.com/home) はもともと[Ruby on Rails](http://rubyonrails.org/)アプリケーション専用のクラウドプラットフォームでした。2011年に発表された[Cedarスタック](https://devcenter.heroku.com/articles/cedar)、つまり現在のデフォルトの実行環境では[Ruby](https://devcenter.heroku.com/articles/getting-started-with-ruby#introduction) だけではなく[Java](https://devcenter.heroku.com/articles/getting-started-with-java#introduction) 、[PHP](https://devcenter.heroku.com/articles/getting-started-with-php#introduction) 、[Python](https://devcenter.heroku.com/articles/getting-started-with-python#introduction) 、[Node.js](https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction) などのメジャーなプログラム言語・フレームワークを公式にサポートしています。

公式にサポートしているというのはHeroku自身がそれらの実行環境のメンテナンスを行っているという意味です。Heroku上で単に実行可能か？という意味では[buildpack](https://devcenter.heroku.com/articles/buildpacks) という仕組みをつかってLinux上で稼働させることができるあらゆるプログラム言語・フレームワークを実行可能です。Herokuは2つや3つではなく、ありとあらゆる言語を実行可能であるということから『Polyglot（多言語）プラットフォーム』という言われ方もします。

さて、そんなPolyglotプラットフォームのHerokuですが、歴史的経緯もあってHeroku上で稼働しているアプリケーションで最も多いのはやはりRubyです。RubyはHerokuが公式にサポートしているプログラム言語というだけでなく、Herokuの内部でも最も使われているプログラム言語でもあります。また、Herokuの社員のほとんどはそれなりの開発スキルを持っているのですが、一番人気もRubyです。というわけで、Herokuでは自然とRubyに関するサポートがオフィシャル・アンオフィシャル含めて相対的に厚くなっています。

今回のエントリーではHerokuにおけるRubyのサポート体制がどんな感じなのか、という裏話を書いてみたいと思います。

# Language チーム

Herokuが公式にサポートするプログラム言語はいくつもありますが、具体的に言語別の環境を管理しているのがLanguadgeチームと呼ばれる部隊です。このチームには言語別にHeroku上で使われる処理系の担当者が割り当てられています。

Rubyの担当は[Terence Lee](https://twitter.com/hone02) というなぜかいつも水色の帽子を被っている人です。2012年の[Sapporo Ruby Kaigi](http://sapporo.rubykaigi.org/2012/ja/) の際に来日していたのでもしかしたら見かけた人もいるかもしれませんね。Terence以外にもう一人、[Richard Schneeman](https://twitter.com/schneems)（発音がよくわからない）という人もこのLanguageチームでRubyのサポートをしています。

# Core Support チーム

お客様からのお問い合わせを最前線で回答しているのがCore Supportチームです。このチームはRubyに限らずHerokuに関するあらゆる問い合わせを受け付けて回答しています。とはいえHerokuではRubyのアプリケーションがとても多いので、実践的なRubyアプリケーションの運用ノウハウやトラブル回避に関する知見が最も蓄積されているチームです。このチームには日本人のサポート担当として[織田敬子](https://twitter.com/keiko713) さんが所属しています。

Rubyの特定のバージョンに依存した根の深い問題などについては、上記のLanguageチームと連携して問題解決を行っていきます。

# Technical Account Manager

Core Supportチームがお客様の技術的な問い合わせに対して回答するのに対し、Technical Account Managerは個別のお客様のユースケースに踏み込んだコンサルティングを提供します。Core Supportチームと同じく対応範囲はHerokuの全域にわたり、さらにHerokuと連携するシステムや、Herokuを活用するための開発組織体制、手法に関するアドバイスを行うこともあります。

Technical Account Managerの担当範囲は原則としてエンタープライズ利用のお客様なので、個人でHerokuをつかっている方にはあまり馴染みがないかもしれませんね。日本のお客様担当は私、[相澤](https://twitter.com/ayumin) がたまたまRubyのコミッターでもあり、個人的にRubyにちょっと詳しいため、エンタープライスでRubyを使ってくれるお客様には（他の言語などに比べて）気持ち手厚いサポートを提供しているかもしれません。

# Matzチーム

Herokuの正式なサポートの担当ではないですが、[まつもとゆきひろさん](https://twitter.com/yukihiro_matz) 、[中田伸悦](https://twitter.com/n0kada) さん、[笹田耕一](https://twitter.com/_ko1) さんはRubyそのものの開発をHerokuの社員として行っているちょっと特殊な存在です。

彼らはもっぱらRubyそのものの改善や情報収集、子守、（Rubyに関する）原稿の執筆などを行っているのですが、Heroku上で動いているRubyパフォーマンス問題やバージョン間の非常に細かい問題の解決などに力を貸してくれることがあります。

# まとめ

というわけで、別に知らなくても特に困ることはないですが、Herokuの中でどんな人達がRubyのサポートをしているのかちょっと書いてみました。この記事が公開される12月25日にはRuby2.2がリリースされる予定で、[Heroku上でもすぐに利用できるようになる](https://devcenter.heroku.com/changelog-items/574)はずです。

> 2014年12月25日 18:42(JST)に無事リリースされました！
> https://www.ruby-lang.org/en/news/2014/12/25/ruby-2-2-0-released/

> 2014年12月26日 00:00(JST)に無事Herokuでもruby2.2.0が使えるようになりました！
> https://devcenter.heroku.com/changelog-items/574

Heroku上で運用しているRubyアプリケーションがRuby2.2で動くかどうか試してみたい人は以下の手順で簡単にRubyの処理系を差し替えることができます。

### GemfileでRubyのバージョンを指定する

````ruby:Gemfile
+ ruby '2.2.0'
...
````

### 変更をコミットしてHerokuにpushする

````shell
$ git add Gemfile
$ git commit -m 'ruby2.2!'
$ git push heroku master
````

もしもうまく動かなかったら、[Herokuのサポートページ](https://help.heroku.com/search?utf8=%E2%9C%93&q=ruby2.2+does+not+work+well)から問い合わせチケットを送ってくださいね。

## ローカルのrubyを更新

[先ほどruby-buildにruby2.2.0のアップデートが入った](https://github.com/sstephenson/ruby-build/commit/e455975286e44393b1b33037ae1ce40ef2742401) ので、rbenvをつかってruby2.2.0をインストールする方法も書いておきます。

### ruby-buildを更新
````shell
$ cd ~/.rbenv/plugins/ruby-build/
$ git pull
...
 create mode 100644 share/ruby-build/2.2.0
````
### ruby2.2.0をインストール

````
$ rbenv install 2.2.0
Downloading ruby-2.2.0.tar.gz...
...
Installing ruby-2.2.0...
Installed ruby-2.2.0 to /Users/ayumin/.rbenv/versions/2.2.0
````

### デフォルトのrubyを2.2.0に切替え
````
$ rbenv global 2.2.0

$ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
````

# One more thing...

既にご存じの方もいるかも知れませんが***2015年1月からHerokuに新しい日本人メンバーが入社***します！
新メンバーの紹介は1/13に開催する[Heroku Developer Meetup](http://herokujp.doorkeeper.jp/events/18242) にておこないますので、是非ご来場ください。

![](https://dzpp79ucibp5a.cloudfront.net/events_banners/18242_normal_1418121172_%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2014-12-09_19.31.29.png)

それでは！