こんにちは、CTOのあんちぽちゃんです。
ハンドメイドマーケット minneでの取り組みが評価され、12月17日、栄えあるRuby biz グランプリで特別賞をいただきました!ありがとうございます!
本受賞に際して、あらためて「ペパボにとってのRubyってなんだろうか?」と、想定問答のような形式で考えてみました。
(本エントリはPepabo Advent Calendarの21日目の記事です。)
Rubyとペパボ
Q. Rubyについて、ペパボとしてどういう取り組みを行っているか?
A. 創業当初からPHPを使ってサービス開発を行ってきましたが、Ruby on Railsの人気の高まりといった技術環境の変化に対応するべく、minneもそうであるように、2011年以降の新規サービスについては基本的にRubyを採用しており、また、既存サービスをRubyに書きかえていくということも行っています。
Q. Rubyの他にはどういう言語を使っているか?Rubyのどういうところがよいのか?
A. Rubyの他には、Webアプリケーションの開発言語としては創業以来PHPを活用しています。現状、大きな利益を生んでいるサービスはPHPで作られているものが多く、そのためPHPにも力を入れているところです。たとえば、最新バージョンへの追従や新しい技術の導入など。
Rubyについては、まずRubyという言語自体を愛好しているエンジニアが多いというのがいいところ。使っている道具への愛情を持っている方が生産性が高まるでしょう。また、Railsという広く使われるWebアプリケーションフレームワークがあるため、ノウハウを共通化しやすいというメリットもあります。現に当社でも、Rubyの導入以降、サービスを超えての技術交流が進みました。
Q. 今後もRubyを使い続けるのか?他に選択肢があるとしたら何か?
A. minneのようなWebアプリ、あるいは、Web APIと連携するようなモバイルアプリの場合、プラットフォームとなるWeb部分は、現状ではRailsを使うのが当社の場合は最も開発面・人財面からいって効率的であると考えています。その理由は、RailsというWebアプリケーションフレームワークを中心に、周辺ライブラリも含めたエコシステムが他の言語に比べても充実しているから。当社のエンジニアも含め、日本からの貢献も多いのもいいところです。
ただし、Rubyに限らずではありますが、どんどん移り変わっていくエコシステムにサービスの歩調を合わせられるかどうかが条件だと考えています。当社は、Rubyのスターエンジニアを多く抱えており、エコシステムをうまく活用できる条件を整えています。
一方で、今後については、サービスの大規模化・複雑化にともない、サービスのすべてのコンポーネントをRubyだけで作るのは必ずしも効率的ではなくなると見ています。その際は、最近注目されているGoやElixirのような言語を適材適所で用いることになると思います。既にそのような取り組みも進みつつあるところです。
Q. Rubyやオープンソースへのフィードバックや貢献を行っているか?
A. 当社は、オープンソースソフトウェアを最大限活用してサービス開発を行っています。プログラミング言語としてのRubyやPHPに限らず、LinuxのようなOSや、データベースのMySQLのようなミドルウェアなどシステムを構成するソフトウェアはたいていはOSSです。
OSSを活用して事業を行っているからには、社外の開発者を含めたエコシステムに社内の開発体制や技術力をうまく合わせていくこと、そのことでより新しく、効率的な開発ができますし、また、コミュニティに出来る限り恩返しをしていくことが必要だと考えています。
具体的には、Ruby関連の技術イベントへの協賛や主催、業務に関連する内容のOSS活動(GitHub上でpull requestを送ったり、業務で作ったライブラリをOSSとして公開するなど)の推奨などがあげられます。また、チーフエンジニアとしてRubyコミッターを抱え、Rubyの開発そのものをわずかながらではあるが支えてもいます。
ビジネス面
Q. Rubyを使うことでビジネス的なメリットはあるか?
A. 単純にあるシステムを作り上げるというだけの意味では、他の言語ではなくRubyだからこそできるというような何かは、それほど多いとは考えていません。しかし前述の通り、多くのエンジニアがRubyを好きであるため楽しく仕事に取り組めること、Railsを始めとしたエコシステムが充実しているために、基本的なものについてはライブラリがそろっており、素早く機能開発ができることが利点です。
繰り返しになりますが、当社がRubyのそのようなメリットを享受できるのは、単にRubyを使うだけではなく、アウトプットの推奨や、コミュニティへの貢献を通して、社外のエコシステムと社内の開発組織との同期を手間暇をかけて取っているためです。それなしでは、機動的な開発は行えず、メリットも活かせないでしょう。
Q. Rubyを使うことがminneのサービスにとってどういう意味があるか?
A. 今年、minneは大規模な投資を行い、採用や社内での人員移動も大規模に行いましたが、RubyやRailsという、世の中で広く使われているツールを使っていることで、エンジニアがスムーズに、素早く開発サイクルに入っていき、すぐに高い生産性を発揮できました。
大規模投資のような大きいものに限らず、minneもそうであるような、複雑かつ変化する要求に素早く対応していかなければならないコンシューマ向けWebサービスにとっては、RubyやRailsのような柔軟性と、広く愛され、使われているという性質を併せ持つ技術を採用することが大切です。そのどちらかだけではいけません。
人財面
Q. Rubyをメイン言語として採用する上で、人財的な面で心配はないか?
A. 社内のエンジニアがRubyを新たに身に付けることについては、特に問題なくスイッチできていると見ています。
当社には、もともと技術的にチャレンジングなことに挑戦するエンジニアが多く、それを会社としても大いに推奨しています。また、業界でも有名なスター級のRubyエンジニアが多く在籍しているため、社内での技術交流によって自然と新しい技術が得られるという体制を作ってもいます。
人財採用に限らず、Rubyを単にひとつの技術要素としてだけ見ると、道を誤ると思っています。社内外を含めた体制、エンジニアの成長ビジョンに基づく活動の推奨などを含めて総合的に考えなければなりません。その上で、Rubyという言語の持つ魅力は、そのような強い組織を作ることに大いに役立っています。
Q. Rubyを使うことは人財採用にメリットがあるか?
A. エンジニア採用市場全体において人気があるプログラミング言語ということでいえばJavaの方が多いようですが、海外と比べると日本ではRubyの人気も大きく遜色があるわけではないようです(参考: 【Javaが恐ろしく強い】転職時に希望するプログラミング言語ランキング - paiza開発日誌)。また、当社はRubyを広く活用している会社としても認知が広がってきているため、新しいことを学習して、成長していこうという気持ちを持っている優秀なエンジニアを惹きつけられていると思います。
こんな感じでペパボはRubyを広く、深く愛し、活用しています。みなさんも是非、ペパボでRubyを書いてみませんか?