繋ぐことで価値を生む。RABOのバックエンドチームを紹介します
「すべては、猫様のために。」と掲げ、テクノロジーを活用したCatlog事業を展開するRABO社。そんなRABO働くニンゲンについてご紹介しているのがニンゲン課です。4回目となる今回は、初めて現場で働くメンバーにフォーカス。バックエンドチームの@suzuki、@rsky、@bravewoodの3人に、技術面や働き方について語ってもらいました。なお、@bravewoodは取材時は育休中だったのですが、オンラインで参加してくれました。
この記事に関連する人
大谷 勇毅
大学卒業後、複数の企業を経て株式会社メルカリに入社。US版/日本版の数々の機能開発や主に株式会社メルペイでのエンジニアリングマネージャ業務を経験したのち退職。RABOではBackend/インフラ開発運用全般を担当。好きなネコ科の動物はライオン。最近はマンションを買うか猫様のお世話をするか妻と相談中。
RABOバックエンドチームについて
―まずはRABOにジョインしたきっかけなど、簡単な自己紹介からお願いします。
@bravewood:私は前職でPMの@takeoのチームにいまして、猫様へのこだわりというよりは、彼と一緒に働きたい想いから2018年の初めごろにRABOのSlackに加わらせてもらいました。当時のRABOにはまだ「何かデバイスを作って猫様の 様子をチェックしたい」というアイディアしかなかったですね。副業時代を経て社員になったのが2020年7月。前職でも初期サービスの立ち上げに関わることが多く、その経験が活かせると思いました。
@suzuki:私は2019年の春ごろから副業として関わり始めました。きっかけは前職から付き合いのある@bravewoodに誘われたからですね。もともと猫好きなので、猫様に特化したことをやると聞いたときから興味を抱いていました。本当にやれるのかなとも思っていましたね。 当時のRABOはスマホアプリのローンチに向けた開発に力を入れているところでして、副業で携わり始め、2019年秋にローンチ。社員になったのは2021年1月です。
@rsky:私が3人の中で1番新しく、Catlogがリリースしたあとの2021年春ごろに誘っていただき、体験入社を経て10月に正式に入社しました。社名を聞いたことがあるなという程度でしたが、実際に入ってみると、バックエンドエンジニア以外にも見知った人がいて、馴染みやすいなと感じました。
エンジニアとしては、猫様のデータを扱うというこれまでにやったことのない事業領域に面白さと可能性を感じていました。
―ありがとうございます。では、あらためてバックエンドチームの現在の体制について教えてください。
@suzuki: 現在、正社員は私たち3名で、あとは副業メンバーが1名います。副業の方は割ける時間が限られるので、締め切りが緩やかな仕事をお願いしています。
@bravewood: PMの@takeoがチケットにしてくれるので、それで各々が仕事をし ている感じですね。
@rsky: 正社員、副業の垣根はなく、関係性はフラットですよね。それぞれ得手不得手があるので、得意な分野の仕事を進めている感じです。
バックエンドチームが利用している技術について
―次は、バックエンドチームが用いている技術について教えてください。
@suzuki: アプリケーションの開発言語はPHPがメインで、一部にGo言語を使っています。データベースはAurora MySQLですね。
―PHPをメイン言語に選んだのはなぜですか?
@bravewood: 1番得意だったからですね。選択肢としてGo言語もありましたが、採用面を考えると、より一般的なPHPの方がいいんじゃないかなというのも頭にありました。
@rsky: 私は後から入社しているので言語の選定には加わっていないのですが、PHPのフレームワークであるSymfonyを使うことで、非常に信頼性の高いアプリケーションを作れているなと感じました。
@suzuki: システム構成の話は非常にシンプルになるので、「こういうシステムを組んでるからすごいんだぜ」とは言いづらいんですよ。ただ、1つ挙げるのであれば、膨大なデータを扱っているのに、シンプルな処理構造を維持しているのは特徴なのかなと。
@rsky: 巨大なデータを破綻なく、かつパフォーマンスもよくさばく構 造にはなっていると思いますね。新機能を追加するときも、アプリケーションコードよりテーブル設計のレビューが厳しい印象がありますが、そこの信頼性は担保されている気がします。
@bravewood: 開発当時には、どれぐらいのデータ処理をするのかまったく想像ができなかったんですよね。というのも、一般的なシステムだとデータが上がってくるのは決済など何かが起きた瞬間であることに対し、Catlogは猫様1匹から常にデータが送られてくるものですから。そのデータを常にAIに渡し、複数回システム間でやり取りするのは未知な部分が多かった。機械学習も加わり、何度か書き直して構成を変えてきているのですが、サービスを維持しながら書き換えできたのは、慣れている言語やフレームワークだったからなのかなと思います。
@suzuki: どんどん増えていくデータ量に対し、スマホアプリをサクサク動かせる状態をいかにして維持していくのかが苦労した点ですね。
―猫様1匹に対し24時間365日のデータですからね。では、インフラ面で用いている技術についてはいかがでしょうか。
@bravewood: AWSというクラウドサービスの各種データベースやコンテナ、各種マネージドサービスを利用しています。クラウドサービスは別の候補もありましたが、世界的に一番使われており、細かなサービスがあることから選定しました。RABOはこのステージのWebベンチャーにしてはかなりのデータ量がありますので、そこをさばいてくれるAWSはすごいなと思っています。
@suzuki: 初期からコンテナベースのデプロイをしていたのは良かったんじゃないかなと思っています。普通のLinuxサーバ上に構築していくよりもスケールしやすかったり、開発環境を作りやすかったりするので。最近は一般的になってきているやり方ではあるので、RABOの特別な強みとまでは言えないかもしれませんが、それでも先進的な部分があるかなと。
@bravewood: RABOのバックエンドチームにはまだインフラ専任者がいないので、コストをかけてカバーしている状態なんです。今後は何らかのテコ入れをして、コストを減らしていきたいところですね。
@suzuki: インフラに強い人は活躍できる可能性がある。
@bravewood: そうですね。
@rsky: 最初はクラウドプラットフォーム固有のマネージドサービスに依存するものが少なかったんですが、今はコストを圧縮しつつパフォーマンスを維持する観点で、一部データベースをAuroraからDynamoDBへと移行しようとしている段階ではありますね。
@bravewood: 使い慣れているためAurora MySQLを使っていたんですが、データベースの容量やコスト部分で大きな負担がかかっているんです。その割合の多くがデータベースなので、そこを圧縮していきましょうというところで、DynamoDBといういわゆるキーバリュー型のNo SQLデータベースに移行を始めている段階です。
@rsky: 他に開発のしやすさで言うと、固有のサービスを使うと自分のマシンでの開発がしにくい面が昔はあったのですが、最近はlocalstackというAWSの機能をエミュレートするコンテナ環境があるため、やりやすくなったように感じます。
アプリのサクサク感の維持が注力ポイント
―次は、CatlogにおけるAPI開発の注力ポイント、技術的なチャレンジについてお聞きしたいと思います。
@suzuki: やはりスマホアプリをいかにサクサク動かせるかが注力しているポイントの1つですね。技術というよりはデータの持ち方や構造など、設計面での工夫かもしれません。
@rsky: 今、私が担当している案件では日時処理や数時間おきに行うタスクがあるんですが、そこの処理の並列化といいますか、一定時間内にきちんとタスクを終了させる工夫が必要だなと感じているところです。
@bravewood: PHPは得手不得手がはっきりしているんですよね。スマホなどから呼び出して高速に結果を返すという処理は得意なのですが、常に起動していてバックグラウンドで処理を細かく続けるのは苦手なんです。猫様がどういう行動を取ったのかというラベリングは後者に該当します。そのため、メインはPHPでありながら、得手不得手によってGoを使うなど、使い分ける工夫をしています。
@suzuki: このハイブリッド構成はカジュアル面談でお話すると驚かれることが多いですね。
各々のスタイルに合わせたバックエンドチームのワークスタイル
―ここからは、働き方についてお 聞きしたいと思います。RABOは基本的に出社スタイルですが、皆さんはどのような働き方をされているのでしょうか。
@suzuki: RABOは12~16時をコアタイムとするフレックスタイム制で、私は基本的に早めに来て早めに帰るスタイルで出社しています。@bravewoodさんも勤務スタイルは朝早め組ですよね。一方、@rskyさんはお昼ごろに来るスタイルと、各々のスタイルで仕事をしています。そのため、Slackなどを使ってコミュニケーションを取るようにしていますね。
@bravewood: 決められていることとしては、ソフトエンジニアが全員集まるプロダクト定例が隔週、バックエンドチームが集まる定例が隔週あります。そこで困っていることや相談したいことを共有しています。
@rsky: 定例ミーティングは基本的にコアタイム内で行われていますが、プロダクトメンバーには副業メンバーもいるため、本業の終業後に参加してもらえるよう、夜に開くこともあります。
@bravewood: 今、私は朝に保育園に送迎し、帰ってきて自宅で仕事をし、コアタイムを経てお迎えの時間に帰り、また夜に自宅で仕事をするなど、働く時間を分散させています。柔軟な働き方ができる会社だと思いますよ。
@rsky: 私たち3人は猫様とは暮らしていませんが、家族やペットの通院や体調不良で在宅勤務を選んだり、お休みを取りやすかったりする環境ですよね。
RABOの特徴「染み出し」について
―RABO社の特徴の1つが「横への染み出し」ですが、皆さんはどのように他チームと関わっていますか?
@suzuki: アプリチームとやり取りすることが多いですね。そちらの仕事をするわけではありませんが、どういうデータを受けたらやりやすいか相談を受け、話す機会が多いです。
@rsky: 私は昔仕事でPythonを使っていまして、機械学習エンジニアチームがPythonを使っていることから、彼らとやり取りする機会が多いです。過去の経験を元に相談に応じていますね。
@bravewood:私は社歴が長い分、他チームとの関わりが多いんじゃないかと思います。他チームの仕事をするわけではないのですが、必要なことをシステム化するといった関わり方が多いかな。
@suzuki: 前職時代からそういうやり方でしたよね。「これだけやっていればいい」の方が苦手。何かあれば他チームの領域まで話しがちです。
@rsky: そうですね。染み出しているという自覚はないです。できるからやるくらいの感じで。
@bravewood: よりそこのチームの業務がやりやすくできるよう、アイディアを出したりするのが染み出しなのかなと思います。
RABOのバックエンドチームで活躍できる人はこんな人!
―あらためてとなりますが、皆さんの思うRABO社のバックエンドチームで活躍できる人について教えてください。
@suzuki: 重ねてになりますが、「これだけをやっていればいい」タイプはRABOには合わないので、そうではない人ですね。あとは、これはバックエンドだけではなくRABOとしてになりますが、C向けの サービスを提供しているため、Twitterなどでユーザーさんの感想が見られるのは喜びに繋がります。直接的なレスポンスが嬉しいと感じる人は活躍できるんじゃないかなと思いますね。
@rsky: 何かタスクが降ってきたときに、ただ言われたことをすぐやるのではなく、背景に興味を持ち、本当はどういうことがしたいのかを考えたり、もっとこうした方がいいのではと提案できたりする人が合っている会社だと思います。
@bravewood: バックエンドエンジニアは単体では何も価値を生み出せません。いろんなデータをアプリケーションや部署と繋ぎ、プログラムを作ることで会社やサービスに価値を生み出せる。そのため、繋ぐことで効率化していくことが好きな人が向いていると思います。あとは、インフラが得意な人。高確率で活躍の場があるので、お気軽に問い合わせていただけると嬉しいですね。
この記事をシェア
「RABO ニンゲン課」は、RABOのニンゲン社員を紹介するメディアです。Chief Cat Officerのもと、私たちが猫様のためにどのように働いているかをご紹介します。
ニンゲンは猫様の下僕。私の好きな言葉です。
RABO, Inc.
Chief Cat Officer ブリ丸