ナイルのかだん 「生のナイル」を発信するオウンドメディア

働くヒト

「走りながら考える」短期間でのサーバーレス化を実現したカルモエンジニアの哲学とは

2018年1月にリリースした「マイカー賃貸 カルモ」。先日大型の資金調達も発表し、順調に事業を拡大するその裏で、サービス自体の変化に開発が追いつかない状態が生まれていました。その解決策として取り組んだのが、AWS Lambdaを活用したサーバーレス化。「すべて作り直し」に至った決断と、その開発にはどのような思いがあったのか。カルモのエンジニア、田中創基と山本準の二人に話を聞きました。


ナイル株式会社
モビリティサービス事業部 エンジニア
山本 準(やまもと じゅん)(写真左)
2016年新卒入社。大学4年の8月にエンジニアインターンとしてナイル株式会社に参加し、大学卒業後に伴い入社。入社から2年間SEOレポーティングツール Refractの開発に携わり、その後「マイカー賃貸カルモ」にジョインし現在に至る。趣味は卓球とウクレレで、どちらも6年以上の経験を持つガチ勢。
田中 創基(たなか そうき)(写真右)
2010年新卒入社。大学在学中よりナイル株式会社(当時、ヴォラーレ株式会社)にてインターンとして参加し、大学卒業に伴い入社。インターン時代より社内のシステムの構築を担当し、アプリ紹介メディア「Appliv」では立ち上げからサービス黎明期の開発責任者として関わった。現在はカルモの業務支援システムの開発担当。マイナーなゲームを好むSteamゲーマー。

「新しい技術に触れたい」上司に打診してカルモへ

――お二人がカルモに加わったのはいつごろですか?

山本:2017年の11月です。以前は、SEOレポーティングツール開発に携わっていました。開発が落ち着いたこともあり、上長に「新しい技術をやってみたい」と打診したと結果、カルモに加わることになりました。以前からScalaで開発をしてみたくて、自分なりにキャッチアップをしていたんです。当時カルモはScalaで構築されていたので、ぜひやってみたいです、と。

田中:私は2018年2月からですね。カルモのリリース(2018年1月)から1ヶ月後でした。入社してからずっとエンジニアで、Applivの立ち上げ時は開発チームのトップとして携わっています。トップと言っても3名ほどのチームでしたけどね(笑)。 過去には開発責任者を経験しており、カルモにもエンジニアとして参画しています。

――現在、カルモではどのような業務を担当されているのでしょうか。

田中:現体制では全員がさまざま箇所に携わっているので、ちょっと説明が難しいのですが……。私はセールス支援の部分を主に触っています。顧客管理、契約後の請求管理、商品管理など、裏で動いている部分の開発全般を担当しています。

山本:私は田中とは異なり、サイト改善やグロースハックなど、表に見える部分の開発がメインです。お客様からの契約申込を受け付け、田中の担当部分まで送るところを担っています。一部例外もありますが、ざっくり分けるなら私がフロントエンド、田中がバックエンドですね。

ドラスティックな変更にも耐えうるシステムを

――今回は「カルモでの挑戦」ということで、システムの「サーバーレス化」について聞かせてください。まず前提として、2018年1月のリリース時はどのような環境でカルモは稼働していたのでしょうか?

田中:Amazon EC2を冗長化し、Scalaで動かしていました。初めて立ち上げる事業かつ、リース契約が関わってくるということで、当初の設計思想としては「かっちりしたシステム」を重視したと思うんです。アーキテクチャもDDDを使い、業務ロジックを固めてからシステムを作る流れでした。でも実際立ち上げてみると……そうではなかった。

山本:車が商品であるという特性上、頻繁に商材が入れ替わったり、業務フローの改善が必要だったりで、ドラスティックにサービス自体を変えていかねばならなかったんです。BtoCのカーリースという、業界でも新しいことをオンラインでやるわけですから、手探りで進める部分も多くて。開発スピードを保つには、堅牢さではなく柔軟性のほうが大切でした。

――なるほど。それは実際にやってみないとわからないところですね。そこでサーバーレス化の話になるわけですね。

山本:そういう状況で、開発責任者から「AWS Lambdaを用いたサーバーレス構成にガラッと変えよう」と。改造というレベルではなく、完全に作り直しですね。

田中:Scalaを廃止することで、フロントからバックエンドまですべてJavaScriptで統一できたのも、サーバーレス化の大きなメリットでした。フロントのWebブラウザはもちろん、AWS LambdaもAmazon DynamoDBもJavaScriptで動いており、データ連係するkintoneもJavaScriptでカスタマイズ可能です。JavaScriptさえわかれば、全員がカルモのどの領域も触ることができる。私が先ほど担当について「説明が難しい」と言ったのはまさにこれで、フレキシブルに人員を動かせる体制ができているからなんです。

「3ヶ月で作り直し」走りながら考える開発プロセス

――サーバーレス化への移行はどのようなスケジュールで行われたのでしょうか。

山本:2018年10月に着手して、2018年12月に最初のリリースを行っています。ただ私はAWSの経験はあっても、サーバーレス向けのサービスは使ったことがなかったんです。それなのに3ヶ月で全部書き換えると聞いて、正直「マジか」と(笑) 。データ連係部分をすべて任されたので、AWS LambdaやAmazon SQSの調査には時間をかけてキャッチアップしていきましたね。

田中:移行自体はスムーズに進みましたね。以前は事業の変化に開発が追いつかず、マンパワーで業務をカバーしていたところも多かったんですね。せっかくScalaで堅牢に作り込んだのに、一部稼働していない機能もありました。幸か不幸か、動いている部分だけ乗せ替えるだけなら、そこまでヘビーなことにならなかったんです。

山本:この時はほぼフロントだけのリニューアルでしたしね。開発責任者はAWSの知見もあるので、その見通しもあっての納期だったと思います。

田中:でもAWS Lambdaで動くようになって、インフラ保守運用の面でも安心材料が増えたよね。エラーが起きても自動復旧できるから、冗長構成などを真面目に考える必要がなくなった。その分、開発にもリソースを割ける。

山本:そうですね。以前は社内のインフラチームにサーバー構築やチューニングをお願いしていましたけど、サーバーレスになってからはアプリエンジニアでもある程度設定できるようになりましたから。僕でもここまでインフラを構成できるんだ、と感動しました(笑)。

――サーバーレス化を経て、残された課題や今後の方針などありますか?

田中:サーバーレス化については現在進行中で、4月段階でScalaの部分がまだ残っています。あと数ヶ月で完全移行できる見通しです。

山本:6月には新たに中古車リースサービスのリリースを予定しており、こちらは完全サーバーレス化で構築しています。JavaScript統一によって開発しやすい環境が整いましたので、いかにチューニングして効率を上げていくかが今後のカギとなると思います。

自分の芯を持ちながら、最高のパフォーマンスを

――お二人が今後ナイルで挑みたい「挑戦」について教えてください。

山本:これまで開発が中心だったのですが、現在開発中の中古車リースでは、プロダクトのスケジュール管理や要件定義、新人のマネジメントなどを初めて任されるようになりました。キャリアアップには欠かせないチャレンジですので、最高のパフォーマンスを出していきたいですね。

田中:カルモはBtoCのサービスなので、電話によるオペレーションも多く存在します。例えば、ここにAmazon Connectを導入すると、クラウドベースでコールセンターを構築できるんです。固定回線からPCに着信ができますし、JavaScriptと連携して発信相手の情報を画面に表示することできる。Webエンジニアにとって、「電話」という存在はほぼ無縁だったもの。新たにチャレンジできる領域が、どんどん広がっていると感じます。

――最後に、どんなエンジニアと一緒に働きたいですか?

山本:走りながら考えられる人でしょうか。ナイルは個人の裁量が大きく、自分の意見をきちんと表明すれば技術選定にも関われます。それでいて、開発にはスピード感もある。自分の芯を持ちながら、変化に柔軟である人と働けたら嬉しいですね。

田中:今のフェーズであれば「狭く深く」よりも「広く浅く」のタイプが向いているかな、と感じます。もちろん技術を伸ばしていくことはエンジニアとして前提ですが、ナイルにはビジネスサイドのことがわかるエンジニアも多いんです。ひとつの技術に固執せず、さまざまな物事に興味を持てる方であれば、十分に活躍できる環境だと思います。

終わりに:モビリティ×Tech領域での新規事業を一緒に創ってくれるメンバーを募集してます!

先日15億円の大型資金調達を実施し、自動車領域での投資にさらに加速していきます。自動車領域での新しい当たり前を作ることに挑戦したいエンジニアの方はぜひご応募ください!

モビリティサービス事業部についての情報はこちら

ナイル株式会社についての情報はこちら

募集中の求人一覧はこちら(プロダクトマネージャー、プロジェクトマネージャー、テックリード、Webエンジニア)

関連記事