Google Cloud Platform

Google Cloud Platform における Ruby への取り組み

先月開催された Google Cloud Next '17 において、私たち Google は App Engine flexible environment の 正式リリース(GA)を発表しました。これにより、Rails や Sinatra など、Rack ベースのウェブ フレームワークを使用する Ruby ユーザーが App Engine の便利さを享受できるようになりました。

私たちによく寄せられる質問の 1 つに、「C 拡張を含む gem(たとえば nokogiri)やデータベース アダプタを App Engine で使えますか」というものがあります。もちろん答えはイエスです。

私たちは 1,000 に上る主要な Ruby ライブラリ、つまり gem をテストして、依存関係が満たされるようにしました。また paperclip のように、ビルド時には C ライブラリが不要でも実行時には必要となる一般的なツールもテストしました。

さらに私たちは、Ruby と Rails にはさまざまなバージョンが存在することも考慮しています。App Engine では Ruby のバージョンを .ruby-version ファイルで指定できるほか、現在サポートされているすべてのバージョンの MRI に対応しています。また、gem は Rails 3、Rails 4、Rails 5 でもテストしました。Next '17 では Google Cloud SQL での PostgreSQL のサポート(ベータ)も発表しています。

こうしたことから、Rails や Sinatra アプリケーションは容易に App Engine に移行できるようになっています。Google Cloud Platform(GCP)での Ruby サポートの詳細は、こちらのページをご覧ください。

新しい gem が利用可能に

Stackdriver LoggingGoogle Cloud DatastoreGoogle Cloud Storage にそれぞれ対応する 3 つの gem も GA リリースとなっています。Google BigQueryGoogle Cloud Translation APIGoogle Cloud Vision API 用の 3 つの gem もベータ段階にあります。

私たちは gem に取り組むにあたっての基本的な考え方として、「プログラミングは楽しくなければならない」という Ruby の精神を尊重しています。また、Google の gem が Ruby ユーザーにとって自然で理にかなったものになることを目指しています。たとえば、Google のロギング ライブラリは、標準の Ruby ロガーの代わりに簡単に導入できます。

  require "google/cloud/logging"
logging = Google::Cloud::Logging.new
logger = logging.logger "my_app_log", resource, env: :production
logger.info "Job started"
logger.info { "Job started" }
logger.debug?

Cloud Datastore gem でエンティティを作成することは、ActiveRecord を使ってテーブルを作成することに似ています。Cloud Storage では、ファイルのアップロードも Ruby IO Object のアップロードも可能です。

Google のプロダクトを使用しても、開発タスクの負荷は、感覚的にはほとんど増えないはずです。私たちの gem は “By Rubyists for Rubyists”(Ruby ユーザーによる Ruby ユーザーのための)に基づいており、簡単に使うことができるでしょう。

RailsConf でお会いしましょう

こうしたライブラリの一部を試してみたい方や、App Engine でアプリケーションを立ち上げてみたい方は、4 月末に米国アリゾナ州フェニックスで開催される RailsConf 2017 の Google ブースにお越しください。

私たちは光栄にも、今年もこのイベントのゴールド スポンサーを務めます。前回からのフィードバックを踏まえ、コードラボやデモ、そしてもちろんステッカーも用意し、よりインタラクティブなブースで皆さんをお迎えします。

RailsConf では Google Ruby チームの 3 人がセッションを行います。

Daniel Azuma の『What's my app really doing in production?』(本番稼働時にアプリは何を行っているのか?)は、Rails アプリの環境整備や不具合のデバッグに利用できるツールやコツを紹介します。Remi Taylor の『Google Cloud <3 ruby="" span="">』は、Ruby 開発者向けに Google が提供している各種ツールについて解説します。私が担当する『Syntax isn't everything : NLP for Rubyists』(シンタックスがすべてではない : Ruby ユーザーのための NLP)は、Google Cloud Natural Language API と Ruby の変わったコツを使って、自然言語処理の世界に触れていただきます。

RailsConf に参加される方は、ぜひ私たちに声をおかけください。

* この投稿は米国時間 4 月 11 日、Developer Advocate である Aja Hammerly によって投稿されたもの(投稿はこちら)の抄訳です。

- By Aja Hammerly, Developer Advocate