採用目的 SUZURI

採用目的2021 SUZURI編

採用目的 SUZURI

はじめに

こんにちはSUZURIでシニアエンジニアリングリードをやっております黒瀧です。今回このブログを書いている目的は採用目的です。よろしくお願いいたします。

採用目的とは?

ペパボの採用コンテンツ(?)として、2016年にPEPABO HEADZ IN DA HOUSE!!1 - GMOペパボの「採用目的」のようなことをやっていました。曲を作ったり、リリックを書いたり、アートワークを作ったりしていますね、2021年採用目的復活ということで、新しいリリックを書いたりはしていませんが、採用目的をやっていきたいと思います。

SUZURIでは採用目的Tシャツも販売しています。こちらからどうぞ!これまでの採用目的に関する記事は、#採用目的 に関する記事一覧から見ることができます。

テックカンパニーを見据えたエンジニア組織

さて、SUZURIでは、すでに明らかになっている課題と、これから課題になっていくことを見据えて事業部のみんなが協力して日々課題解決に取り組んでいます。GMOペパボのエンジニア組織としての方針は「テックカンパニー」をエンジニアリングによって実現するためのエンジニア組織です。 以下は、エンジニア組織と職位制度のアップデートv2020.07に記載されているペパボテックカンパニービジョンの一部です。

テックカンパニーとは、あらゆる人々が常にインターネットにつながり、あらゆる産業がインターネットによってビジネスモデルを革新していく中で生まれる新たな表現形式・手法を背景に、「つくるひと」を増やし・その活動を実現し・成長を支えるためのしくみを、物理空間・スクリーン・XR空間を通じて提供する企業のことである。

と書かれています。私自身、SUZURI事業部としてもテックカンパニーならぬテック事業部になっていく必要があると考えています。「つくるひと」を増やし、その活動を支えることをSUZURIというサービスを通して実現していきたいです。

SUZURIのエンジニア組織は昨年末にブログを書きましたが、それからも継続的にアップデートを重ねています。現在の編成やテックな事業部に向けてどのような目的で行なっているのかは別の記事で紹介したいと思います。現在、事業部の下に複数のチームが存在していて、各自ミッションを持って活動しています。

以下の資料からSUZURIに関わる様々なチームの活動を読むことができますので、ぜひ読んでいって下さい!

SUZURIの技術スタック

ペパボの技術スタックについてはこちらの記事に書かれていますが、サーバーサイドはRailsがメインで、画像変換サーバーはNode.jsとRustを使っています。フロントエンドは元々はCoffeeScriptとBackbone.jsでしたが、TypeScriptとReactで書き直しているところです。インフラはHeroku Enterpriseを使っていて、社内のプライベートクラウドとGCPも使っています。モバイルはiOSがUIKit + SwiftUIのネイティブアプリで、AndroidがFlutter製アプリです。

よくAndroidアプリ開発にFlutterを採用した理由を聞かれることが多いので書いておくと、Hot Reloadや必要なウィジェットやプラグインが揃っていることによるFlutterの開発者体験の良さ、デザイナーの学習コストを考えてもSwiftやKotlinでやるよりは敷居は低いという話もあり、デザイナーと協業しやすいことから、スピード感を持ってAndroidアプリをリリースできそうだと分かりました。またSwiftUIやReactに近い構造なので、iOSアプリを将来的にSwiftUIに移行する際でもメリットがあると思い採用しました。

これからの課題

フロントエンドと画像合成サーバのリプレース

例えば画像変換サーバーは現在2つの言語で書かれたサーバが動いているため、これからはRustで書かれたサーバーをメインで動かしていくというのが一つの課題です。画像合成などの処理時間が早くなりサーバーの台数削減も見込めます。フロントエンドに関してはTypeScriptとReactで刷新しているところです。SUZURIでは画像をアップロードしてアイテムを作成するページやアイテムのお手入れ画面においてJavaScriptで色々と動きをつけているページが多いです。新アイテムがどんどん登場したり、様々なニーズが求められる中で、フロントエンドの改善をすることで、SUZURIのコアとなる機能開発においてユーザー体験を向上させることに直接繋がります。また同時に開発者体験を向上させることにもなりますので、ユーザーがWebブラウザ上で操作するような機能改善をより早く対応できるようになると考えています。

モバイルアプリエンジニアの不足

3人のエンジニアがiOSアプリとAndroidアプリの開発をやっています。SUZURIのエンジニアは「フロントエンドとサーバーサイド両方できます」というようなエンジニアもいますし、「Androidアプリ開発とインフラ両方いけます」みたいな人もいます。ユーザーの課題に対して〇〇エンジニアという役割で線引きをすることなく実行できることが強みですが、例えばインフラの施策に注力したい時に、Androidアプリ開発とインフラ両方できる人がインフラの改善メインで担当してしまうとAndroidの改善が止まってしまうという弱みもあります。

モバイルアプリを継続的にアップデートしていくという点ではまだまだモバイルエンジニアが足りません。SUZURIのモバイルアプリは日々改善を続けていますが、Webブラウザで見ているSUZURIの体験と同じか、もしくは新しい体験ができるようなものを目指してやっていきたいと思っています。過去のモバイルテックカンファレンスの資料を載せておきますので、最近のモバイル開発への取り組みを知りたい方は是非読んで下さい!

検索やミドルウェア周りの継続的改善

サービスの拡大に伴い、Elasticsearchを使った検索サーバの継続的バージョンアップやPostgreSQLのデータベースの安定運用やパフォーマンスチューニングの重要度が高くなってきました。他にもRedisなどのHeroku Add-onsで使われるようなものや、ログや監視に関わる部分の改善など、継続的に改善していく必要があると感じています。今までSREチームでSLI/SLOを設定して取り組んできて、商品詳細・商品購入・TOPページの3つをメインにしていましたが、これからは「検索サーバにおいて95パーセンタイルのレイテンシが〇〇msを95%を維持する」のようなSLI/SLOを追加して、Railsアプリケーションだけでなく、その周りのミドルウェアも含めて、改善する範囲を広げて取り組んでいきます。

他にも色々とあるのですが、今回は3つに絞って紹介しました。これらの改善活動はすべてユーザー体験を向上させることと、エンジニアの開発者体験を向上させるためにも注力して取り組んでいきます。これからもSUZURIを通してクリエイターの方が楽しくオリジナルアイテムを作ったり、クリエイターのファンの方が安心してお買い物ができるように技術を活用し、SUZURIをもっとおもしろくしていきます。

まとめ

今回挙げたような課題について一緒に解決に向けて取り組んでくださる方、SUZURIというサービスを一緒に盛り上げてくださる方を大募集中です。エンジニアのみなさまのご応募お待ちしております!とりあえず話を聞いてみたい〜という感じで良いので、TwitterのDMでもお気軽にお声がけ下さい!お待ちしております!

募集中のポジション