entry-header-eye-catch.html
entry-title-container.html

entry-header-author-info.html
Article by

複雑なものをより簡単に解決したい!BOOTHのバックエンドエンジニアが大切にするコードを書くまでのプロセス

皆さん、こんにちは。技術広報室のkamikoです。本日はBOOTHチームで活躍するバックエンドエンジニア3名のインタビュー記事を皆さんにお届けいたします。

BOOTHとは、クリエイターが作品やグッズを販売し、それをファンが購入できる、創作のためのマーケットプレイスです。2013年12月にWebサービスをリリースし、現在では累計登録ショップ約45万件、MAU約720万人の規模にまで成長しています。

そんなBOOTHを支えるバックエンドエンジニアたちが、普段どんな技術を駆使してどんなことを考えながら日々の業務にあたっているのか、詳しく話を聞いていきたいと思います。

自己紹介と業務内容について教えてください

RND )クリエイター事業部BOOTH部のサービス開発チームでバックエンドエンジニアをしているRND(らんど)です。2019年4月に新卒入社し、3年間BOOTH部でアプリケーション開発に携わっています。主にRuby on Railsで書かれたバックエンドのコードを書くのが仕事ですが、必要に応じてフロントエンドも書いたりします。最近だと検索機能のリニューアルなどを担当していました。

misakit )同じくBOOTH部でユーザー向けにお問い合わせの対応を行っているカスタマーサポート(以降CSと表記)チームと、倉庫サービスチームのマネージャー代行をしているmisakit(みさきっと)です。2016年4月に新卒入社してから長らくBOOTH部のバックエンドエンジニアとして働いていたのですが、今年4月からチームのマネージャー代行になりました。マネージャー代行視点・エンジニア視点をあわせて、チーム内で出てくる相談にのったり、たまに相談事を解決するためにエンジニアとしてコードを書いたりしています。

tokei )同じくBOOTH部のCSサポートチームでバックエンドエンジニアをしているtokei(とけい)です。2020年4月に新卒入社した当初は、pixivFACTORYチームでフロントエンドの開発にあたっていました。会社の勧めで今年1月からBOOTH部に異動して、バックエンド開発にあたっています。主にRuby on Railsに則ってコードを書いて、カスタマーサポートの人が普段業務で使っている管理画面を改修する仕事をしています。また、以前フロントエンドの開発をやっていたことを活かして、フロントエンドエンジニアのお手伝いをすることもあります。

チーム構成について教えてください

RND )チームは3つに分かれています。

サービス開発チーム:主にユーザーが触るものを作っている

CSサポートチーム:裏側のお問い合わせ等の管理画面などを作っている

倉庫サービスチーム:BOOTHの倉庫サービスについての運用・改善を行っている

misakit )BOOTHのバックエンドエンジニア同士で、コードレビューや実装面での相談をしつつ連携して業務を進めています。基本的にBOOTHで解決したい課題ごとにエンジニアがアサインされて、多くの場合エンジニアが進行管理・ディレクションも意識しながら仕事を進めることが多いです。

tokei )チームのバックエンドエンジニア全員が、コード全体を把握できるようにレビューしあう必要があります。チームにいるバックエンドエンジニアは、正社員3名・アルバイト1名・業務委託1名のみなので、お互い助け合いながら業務にあたっています。

チームに入ってからどんなことが出来るようになりましたか?

RND )ディレクション・進行管理など、エンジニア+α の部分で出来ることが増えました。例えばこういう機能がほしいとか、サービスでこんな問題があります、といった相談があった時、エンジニアならコードを書けばなんでも解決できることが多いです。ですがなんでもコードを書いて解決していると、管理しないといけないコードがどんどん増えてしまいます。エンジニアの視点から少し俯瞰して、サービスにとって何が必要でどんな形が理想かを考えて、コードを書かない解決策まで提案できるディレクション領域のスキルが磨かれたと思います。

なんでもかんでも機能を追加するのではなく、本当に必要かどうか考えて、いらないものは積極的に削っています。 misakit )新卒の時に比べると、相手からやりたいことを聞き出して、仕様を決めたり実装したりすることが出来るようになりました。

あとは相手が複雑なことを実現しようとしている時、そのままより簡単に対応できそうな案を提案することもできます。例えばAを作りたい時に、言われたままやるのではなく、何故それをやりたいのか、どんなことを解決したいのか聞き出して、実はより早く簡単に実現できるBを提案するようなこともあります。

tokei )大きく2つあります。

まずひとつめは技術面です。自己紹介でも話した通り、元々フロントエンド開発に携わっていて、バックエンドはたまに触っていたものの、BOOTHで利用されているRailsはほぼ触ったことがありませんでした。最初は自分で調べつつ、分からないところは素直にRNDさん含め他のバックエンドエンジニアに質問するようにして仕事を進めていました。幸い、チームのエンジニアは「いつでも聞いてください」と言ってくださり、Slackチャンネルで困っているとすぐ反応してくれる環境なのでとてもありがたいです。

その結果、コードの読み書きをしながら、現在バックエンドの仕事ができるようになりました。

ふたつめは心構えです。先ほどmisakitさんからお話しした通り、とにかく言われたことをそのまま作らず、より良い方法を探すことを身につけました。「この機能がほしいです」と言われたとして、果たして相手が何に悩んでいるのか、実は本当に解決したいことはもっと他のアプローチで解決できるのではないか、僕も常に考えるようにしています。ヒアリングする過程で、必ず相手とのコミュニケーションが必要になるため、emojiを使ったり口調を意識したりと、普段から話しやすい雰囲気を作るよう善処しています。

業務のやりがいや、楽しいことを教えてください

RND )業務で使っている技術についてどんどん知識が深まっていくのがやりがいですね。日々サービスの課題の解決策を模索する中で、「Railsにこんな機能あったんだ」とか「このデザインパターンがつかえるな」など日々発見があります。

あとは単純かもしれないですがTwitterを見ていて、実装した機能がクリエイターやファンのみなさんに喜んでもらえていたりするとすごく嬉しいです。

misakit )エンジニアのときだと、自分が相手側に提案した省エネでより良い提案が採用された時は嬉しくなりますね。エンジニア冥利に尽きるなぁと。

マネージャー代行になってからだと、仕事の範囲が広がったことです。具体的にはお知らせの内容など、ユーザーに関わる部分について、相談や確認がくるようになりました。より広く仕事を見ることができるようになったのかなと思います。 tokei )自分ができるようになったことと近いのですが、相手側の実現したいことに対して、より良い提案を一緒に考えられた時ですかね。

課題を抱えている相手と一緒に、過程を共有しながら道筋を辿って最善策を導き出して、一緒に物事を解決するステップを踏むことができるのは、僕にとって面白いと感じますしBOOTHのバックエンドエンジニアのやりがいなのかなとも思います。

今後どんなことにチャレンジしていきたいですか?

RND )今後BOOTHは「変化に強いコードとチームを作る」ことに取り組まなければいけないと思っています。BOOTHは今年の12月で、リリース9年目を迎えます。約9年の間にBOOTHのあり方やチーム編成がどんどん変わっていて、現状と合わない部分が多数出てきているので、アップデートしていくことにチャレンジしていきたいです。

例えばBOOTHは長らくフロントエンドエンジニアが不在の時期があり、バックエンドエンジニアがメンテナンスしやすいようなフロントエンドを組んでいました。

ですが現在はフロントエンドエンジニアが増えてきたため、フロントエンドエンジニアが主体性を持って開発できるモダンな設計に少しづつ改修していくことに取り組んでいます。ニーズの変化に合わせてフロントエンドエンジニアの手で、素早く価値を提供できる形を目指しています。

あと個人的には新卒入社直後に触れていた検索やレコメンドに思い入れがあるので、リニューアルに取り組んでみたいと思っています。

misakit )まず個人としては他のバックエンドエンジニアと変わらず、複雑すぎるものをつくらないで、ちゃんとメンテできるサービスの運営をしていきたいと考えています。

CSサポートチームでは、「問い合わせ (= ユーザーの困りごと) を元に、より使いやすくサービスの改善をする」「日々発生するCS業務の負担を減らすために管理画面を改善する」ようなことを中心にしていきたいと思っています。大きな新機能開発というよりは、「今のサービスの困りごと」を一つずつ解決していくことに注力していきたいです。

tokei )BOOTHにきてから「本質とは何か」「一緒に解決したいことを、一緒に歩む」ことを考えるようになったのですが、異動して10ヶ月たち自分の中ではまだマスターできた実感はありません。都度misakitさんの仕事の運び方を見ながら、よりよい進め方を学んでいる途中です。このあたりのスキルを身につけることができれば、自分としても面白いなと考えています。

もうひとつプロダクトの話になると、現在CSサポートチームに所属していることもあり、CSメンバーが苦労したり辛そうな場面を見かけることがあり、結果エンジニア側に依頼がくるのを何度も見ているので、そのあたりはもっとお互い日々の業務が楽になるようにチャレンジしたいと思っています。

ずばり!どんなマインド・経験を持っている人が活躍できそうですか?

RND )エンジニアの裁量が大きくて何でも任せてもらえるので、要件のヒアリングから実装まで自分でコントロールしたい人にとっては仕事がやりやすい環境だと思います。技術的な面で言うと、BOOTHは9年目と長く続いているサービスなのでレガシーなRailsのサービス特有の問題を抱えています。そういったサービスでの開発経験があれば、それがそのまま活きると思います。

あとはエゴサ力がある人でしょうか。BOOTHの使われ方をSNSで探してみたり、データを眺めてみたり。ユーザーからいただくフィードバックがどのくらい一般的なものなのか、そのあたりの感度もある方ですと活躍できると思います。

misakit )言われた通りのものをつくらず、より良い提案ができるエンジニアが活躍しやすいと思います。良くも悪くもエンジニアが自分自身の業務を管理したり、仕様策定のために他の社員に尋ねていかないといけないチームなので、きちんと話を聞いて仕様を決めていける方だと頼もしいです。

tokei )BOOTHのバックエンドエンジニアは、技術力の高さよりも問題の本質を見極めてより良い提案を一緒に考えることができる力を求められることが多い環境だと思っています。勿論、技術力があれば申し分ないのですが、一人一人がそれぞれのプロジェクトを管理してどのようなアプローチをしたらいいかを考えられるようになるというチームの思想があるので、問題の本質がどこにあるのかを一緒に考えられる方だと、楽しく働けるんじゃないでしょうか。

あとはCSサポートチームですとGoogle Meetで一対一の対話することが多いので、その状況で相手の課題を引き出して、どこがゴールなのかを探るのが楽しい・好きな方だと活躍できそうです。

最後に

いかがでしたでしょうか?ピクシブでは現在BOOTHチームで働くバックエンドエンジニアを募集しています。

本日のインタビュー記事をお読みいただき、興味をお持ちの方は下記URLよりエントリーをお待ちしております。 https://hrmos.co/pages/pixiv/jobs/056hrmos.co

それではみなさんごきげんよう、さようなら!

20191219012121
kamiko
2016年1月にピクシブ株式会社に中途入社。人事部を経て現在は技術広報室でエンジニア職の技術ブランディングを担当しています。採用イベントや会社説明会によく現れます。