見出し画像

VRなのにRuby?広い工程に関わり高品質なものづくりを実現するスペシャリスト集団に迫る

今回のインタビューでは、人事チームのヨシダが、サーバーサイドエンジニアである浅川にお話をうかがいます。Ruby on Railsを使った開発の実態や今後の展望をお聞きしました。ハイクオリティなものを生み出すための工夫や開発に向かう姿勢、ジョリーグッドのサーバーサイドエンジニアならではの成長機会をお伝えしていきます。


ー簡単に自己紹介をお願いいたします。

前職は、2012年より博報堂DYグループでソーシャルアカウントを利用したギフトサービスの企画・開発・運用に携わっていました。その後、テレビ番組やCMのメタデータを利用した購買データの分析やインターネット広告に関する業務に従事しました。

ジョリーグッド代表の上路とは、上路がテレビ局で働いていた時に私がアルバイトとしてWeb関連の開発をしていたことで知り合いました。その後、上路がジョリーグッドを始めてまだ社員が数人の時に声をかけられたのが、入社を考え始めた1つのきっかけです。

博報堂DYグループではサーバーやアプリなどいろんなものを作っていたので、転職においてもサーバーサイドにこだわるよりも、エンジニアとしていろんなものを実験的に作りたいという思いがありました。また、当時はまだVRという言葉が一般の人には馴染みが薄かったため、単純にジョリーグッドの仕事を面白そうだと思ったことも、入社の決め手となりました。

2016年にエンジニアとしてジョリーグッドにジョインし、現在はサービス開発全般を担当しています。主にJOLLYGOOD+(ジョリーグッドプラス)という医療VRのコンテンツを提供するサービスを支えるWebページや、データ保存を行う部分を作っています。

Rubyを用いた開発でスピーディーに“まだ世にないもの”を生み出す

ー現在Ruby on Railsでどのようなプロダクト・機能の開発をしていますか?

弊社は医療機関向けにVRに関連したサービスを提供していますが、Unityで開発しているVRゴーグルやタブレットのアプリ、Ruby on Railsで開発するWebサービス部分の大きく2つに分けて開発が進められています。

Ruby on Railsでは、上記図で言うと「クラウドサーバー」に関与する部分と、「Webサイト・アプリケーション」の部分を開発しています。具体的には医療機関のユーザーが動画コンテンツを管理、閲覧するためのマイページや請求などの設定ページ、VRゴーグルで動画コンテンツを閲覧するためにWebと通信するためのAPI、社内向けの管理画面などを開発しています。

例えば、JOLLYGOOD+(ジョリーグッドプラス)というプロダクトでは、医療系の動画コンテンツがNetflixのように数多く並び、視聴したい動画を選択してVR体験をすることができます。大学では、先生が医学生向けに視聴してもらいたい動画を設定した上で、API連携されたタブレット側でVRゴーグルをコントロールし、学生はVRゴーグルで体験をします。このような一連の動作の中でのWebアプリケーション部分をRuby on Railsで作っています。

ーサーバーサイドの開発にRuby on Railsを採用した経緯を教えてください。

ドキュメントやライブラリが充実していて使いやすかったためRuby on Railsを採用しました。私が入社した時にはすでにRuby on Railsである程度のシステムが出来上がっており、現在も継続して利用しています。日本の有名企業でも使われていることもあり、素早く開発ができる点で重宝しています。

Ruby on Railsで作られているサービスは世の中に数多くあると思いますが、私たちが作っているものは社会的な価値が大きく、まだ世の中にないという特徴があると考えています。Ruby biz グランプリ(https://rubybiz.jp/ リンク貼り付け)というコンテストに出場し、受賞したこともあります。過去に2度応募し、1回目は発達障害支援施設向けのVRプログラムでVertical Solution賞を、2回目は医療教育を変えるソリューションとしての医療VR「JOLLYGOOD+」で特別賞を受賞しました。

プロダクトに積極的に関与し、良いものを作るスペシャリスト集団

ーサーバーサイドの開発ではどのようなプロセスで開発を進めていますか?

弊社ではウォーターフォールとアジャイルを使い分けながら、プロダクト開発を行っています。まだ世にないものを作っているので、アジャイルでの開発も多く、要件定義からエンジニアが関わりながら開発していることが特徴的ですね。

まず、営業やマーケティング担当などのビジネスサイドのメンバーが中心となって要件を作りますが、それが本当に技術的に可能なのか、ビジネスとして成立するのかといった意見をエンジニアからも出し、議論しながら進めています。

要件作成後、実際にどうやって作っていくかはエンジニアに一任されています。開発にかかる段階では、サーバーサイドチームもアプリチームも一緒に議論を行いながら開発しています。

ーサーバーサイドチームのカルチャーや雰囲気を教えてください。

新しいものや技術をキャッチアップして、自分達で調べ、いいものを作っていこうという空気があります。そういう目指す方向性の認識が合っていて、とてもやりやすいチームだと思いますね。みんなそういう新しいものづくりが好きなんだと思います。

仕事への取り組み方としては、業務に集中すべきタイミングは深く集中して開発を進めています。結果としてクオリティが高いものが出来上がるという、スペシャリスト集団のような印象がありますね。とはいえ、サーバーサイドのエンジニアは人数が少ないので、これから試行錯誤しながら独自のカルチャーを作っていけるのではないかと思います。

品質を高めるための積極的なプロセス改善

ー開発プロセスや品質をよくするために工夫していることを教えてください。

品質を上げるためには、まずエンジニアのコーディングスキルを上げていくことが重要です。コードレビューなどでお互いのコードを見て勉強する機会を設け、その中で新技術についてお互いに教えあって使い方や応用方法を学んでいます。

また、開発プロセス自体の見直しも進めています。最近、新たなテストプロセスの方針が決まりました。テストを自動化して工程や時間を削減するとともに、同じミスをしないことや脆弱性につながる部分を自動的に検出する仕組みも取り入れているところです。

以前より人数が増えたこともあって、ドキュメントやルールが未整備だった部分についても整備しています。ドキュメントでワークフロー開発の方針を明示したり、障害や不具合の基準、リリースの基準を明確にしています。そういった基準がないと個人の基準や感覚に頼ることになってしまうので、チーム全体の意識をそろえるためにも必要な整備です。

ー今後サーバーサイドとしてどういう開発を進めていきたいか教えてください。

先ほどお話ししたテストに加えて、アプリケーションをサーバーにリリースする工程の自動化を進めたいと思っています。今は手動で行っている部分があるので、時間削減はもちろん、誰がやっても同じようにできる自動化の仕組み作りに力を入れていきたいです。

ーサーバーサイドエンジニアのポジションでは、どのような成長機会がありますか?

ジョリーグッドのサーバーサイドエンジニアは、サーバーサイドのプログラムだけでなくインフラ管理も担当しており、幅広い知識が身につく環境です。また、先ほどお話ししたテストの自動化のような新しい取り組みもあるので、開発だけにとどまらずさまざまな知識を吸収していけるのではないでしょうか。

また、R&Dの一環で、弊社のVRソリューションに関連するシステムを作る機会も多いです。例えば、VR空間でユーザーが今どこを見ているのかのデータを収集し、それらを分析・活用するシステムも作っているため、VR特有のデータに触れることや、その活用に関しても知見を得ていただける環境かと思っています。

ジョリーグッドが求めるのは、いいものを作りたい気持ち

ージョリーグッドでは一人ひとりのエンジニアにフォーカスし、各々が自ら社内外に情報発信して能動的にプロダクトやチームに向き合うような仕組みを整えてきています。このような動きの中で、ご自身の成長に繋がったと感じるものがあれば教えてください。

私は今まで開発に集中していればいい立場でしたが、最近はテックリードとしてサーバーサイドチームを運営する立場を経験し、チームとしての視点をもって開発に関われるようになってきたと思います。

また、開発体制の見直しにより、多くのエンジニアが開発のいろいろなフェーズに関われるようになりました。それによりエンジニア一人ひとりが「なぜこれを作るのか」といった開発の意義・目的をより理解できるようになったと思います。

「こういうお客様がいて、この課題を解決したいんだ」と理解して取り組めると、開発に向かうモチベーションを高く保つことができます。加えて、アウトプットを具体的にイメージできるようになったことで、開発に充てられる時間やスピードも意識できるようになりました。

こうした体制の変更や新しい取り組みは負担が大きいように思えるかもしれませんが、困ったことがあれば、他のチームやマネージャーにすぐに相談できる体制があるので、そこまで大変とは感じていません。

また、ジョリーグッドは一人ひとりが自ら発信していく文化があります。勉強会や登壇の機会に積極的に参加したり、Ruby bizグランプリのようなコンテストに参加したりして、一人ひとりの発信力が向上していると感じています。

ーどのような価値観を持った方と一緒に働きたいですか?

人や社会のためになるものを作りたいという考えを持った人となら、一緒にいいものを作っていけるのではないかと思います。また、開発のいろんなフェーズで新機能の提案など発言の機会があるので、積極的に発言したりアイデアを出したりして議論できる人と一緒に働きたいです。