はじめに
こんにちは!テクノロジー戦略本部、開発3部の那仁です。
バイセルでGYROという買取領域を司るプロダクトの運用に携わってきました。最近はCosmosへの移行を推し進めるためのプロジェクトに参加しています。
私は2023年に新卒でバイセルに入社し、執筆時点ではおよそ1年が経とうとしているところです。
このタイミングで、私自身がバイセルの新卒エンジニアとしての1年をどのように過ごしてきたか?どのような経験ができたか?を中心に振り返りを書きます。
私がバイセルに入社した理由は、ズバリ成長機会がたくさんありそうと思ったからです。CTOの今村さんが入ってから、エンジニア組織が30名→100名に拡大しているフェーズで、事業としてもCosmosというプロダクト群を鋭意開発中でした。ダイナミックに動く中で、エンジニアとして成長できる機会、学べることがたくさんあることを期待していました。振り返りの最後は、その期待はどうだったのか?の感想で締めます。
この記事を通して、「バイセルの新卒エンジニアってどのような働き方をしているの?」という疑問が少しでも解消できれば幸いです。
また、「新卒エンジニアの1年目ってどんな感じなの?」という一般的な観点も参考にして頂ければと思います。
研修
全体研修
社会人生活は、慣れないスーツを着てコンラッド東京での入社式に参加するところから始まりました。23卒のエンジニア同期は11名ですが、入社式ではバイセルグループ全部署合わせて200人超の新卒が一堂に会していました。
その後、1週間かけて全部署合同の研修に参加しました。 社会人としての基礎的な考え方を学ぶとともに、各部署の業務内容の紹介や、自社で保有する船橋の倉庫見学を通して、バイセルの事業についての理解を深めることができました。また、tech以外の部署の方と同じグループで行動していたため、部署を超えた繋がりを作ることができました。
テクノロジー戦略本部の研修
全体研修を終えた後は、2週間のtechの研修が始まりました。研修内容は、テーマに沿ってアプリを開発するというものです。2023年は2チームに分かれて行い、私のチームは「ChatGPTを全社で安全に利用できるサービスの開発」というテーマで進めることになりました。研修といいつつ、実際にユーザーにサービスを公開し、恒久的に利用してもらうことを前提として開発することが求められました。
チーム開発やディスカッションを通してお互いの考え方、価値観を知ったり、役割分担をして進めるなどチームワークを深める良い機会になりました。
ユーザーとなる社内の事業部の方々やCTOの今村さんに積極的にヒアリングをしたり、成果発表のプレゼンをする機会もありました。座学の研修のイメージとは全く違う、新規事業開発と言っても良い活動だったなと思います。
ユーザーからのフィードバックをどう捉えるかの意見がまとまらなかったりと、大変なこともありましたが、その分同期と交流を深めたり、社内のメンバーと繋がれたり、社会人としてスタートダッシュを切る良い機会となりました。
研修後も、作成したアプリは社内で使われ、一部のメンバーによってUpdateされていきました。バイセル独自のLLM構想に向けての第一歩を推し進めるテーマでもありました。
新規APIの実装
私は内定者インターンの頃からGYROチームに携わっていたので、研修後はGYROチームに戻って業務を再開する形となりました。 内定者インターンの頃は、フロントエンドのバグ修正を主に取り組んでいました。
やったこと
6月ごろに新規APIの実装タスクを任されることになりました。宅配案件がDeliという独自システムに切り離されたため、その対応になります。
GYROはある程度汎化されて利用できますが、あくまで出張訪問ドメインを中心としたサービスです。商品を郵送してもらい査定する宅配の業務フローをGYROだけで運用するとなると、非効率な点がありました。それを改善するため、宅配独自の業務フローに特化したDeliというサービスが別チームで開発されていました。
DeliはGYROのデータベースを利用するため、Deliから指定のリクエストでデータを取得、更新するAPIを複数GYROのバックエンドに実装することになりました。その一連のタスクを私が担っていきました。やったことは順に以下になります。
- eKYC用の新規カラムを追加した。
- Deliの担当者とコミュニケーションを図りながら仕様を決めた。
- 仕様をOpenAPIに記載した。
- GYROのBEにAPIを実装した。
- 後続のAPIの実装を手伝ってもらうため、業務委託の方に引き継ぎをした。
- 結合テストの調整をした。
まず、電子本人確認のeKYCを導入することにもなったので、新規カラムを既存テーブルに追加するMigrationを行いました。 その後、Deliの担当者と話しながらAPIの仕様を決め、OpenAPIに記載しました。
GYROのBEは、BFFというAPIの入り口から、細分化されたマイクロサービス(CRM系、予約系、商材系など)に繋がっています。各サービス間はgRPCで通信をします。いずれもRailsを元に開発されています。バックエンドの実装にあたっては、RailsのAPI、gRPCのAPI両方を実装する必要があります。また、処理だけでなくバリデーションやテストコードも書く必要があります。実際にタスクを進める際は、1週間単位のスクラムに沿ってチケットを分割してから、各項目を進めていきました。
APIは複数あり、途中から新たにJoinした業務委託の方にも、実装者として手伝ってもらうことになりました。 スムーズに業務委託の方が実装を進められるように、ドメインの背景や要件、仕様、実装の仕方などを説明しました。
最後には、Deliのサービスが結合テストをスムーズに行えるよう、staging環境にデータを用意しリリース日の調整などを行いました。
これらのタスクが一通り完了し、リリースされるまでおよそ3ヶ月の期間を要しました。
振り返り
私自身本格的なAPI実装は初めての経験だったので、学んだことがたくさんありました。
技術面に関しては、以下のように幅広い要素に触れることができました。
- データベースのMigration
- OpenAPI
- バックエンドの実装
- gRPCの通信規格
- テストコード
技術面以外に関しても以下の事柄を経験することができました。
- 仕様の決め方
- スクラムの期間に合わせたチケットの細分化
- 実装タスクの引き継ぎ
- 結合テストのための調整
こうやって列挙して見ると、たくさんの要素に触れる機会になったなと改めて思います。 エンジニアの仕事はコードを書くだけでなく、多岐に渡ることも理解できました。仕様を決めたり、リリース日の調整をしたり、スクラムにタスクを落とし込んだり、引き継ぎをしたりと、コミュニケーションを取る機会が多かったのは印象的でした。
インフラサービスの一部移行
新規APIの実装タスクを終え、9月頃からインフラのタスクを任されました。
GYROでは全てのAPIの実行ログをBigQueryに保存しています。そのパイプラインとして以前はPub/Sub→Dataflow→BigQueryの構成を取っていましたが、DataflowのEOLがよく来ることや、動作が不安定といった問題がありました。一次調査の結果、Pub/SubにBigQueryサブスクリプションが追加されていることが分かりました。コストも安くなるとのことで、利用検討から移行までを実施しました。
初めは、サービスの概要を知ることから始まり、ドキュメントや先行記事を読んだり、Google Cloudの練習環境で触りながら理解を進めました。 そして、GYROの開発環境で導入を検証しながら、本番環境での移行手順書を作成していきました。 最後に、本番環境での移行をダブルチェック体制で実施し、無事移行を完了させることができました。
Google Cloudは今まであまり触ったことがなかったので、自分にとってはチャレンジングなタスクでした。 インフラエンジニアの方々には色々質問したり、ペアプロやレビューを頂いたりしながら進めていったので学びがたくさんありました。 それぞれのサービスの概要やGYROのアプリケーションとどう関連しているのかを知る機会にもなりましたし、手順書を作成して実行するといったインフラの考え方を知ることができました。
私はこのタスクをきっかけに、もっとGoogle Cloudのことを知りたいと思いました。 その手段としてAssociate Cloud Engineerという資格の学習を開始し、11月に無事取得することができました。 これは入門者向けの資格ではありますが、網羅的にGoogle Cloudやその周辺知識を学習できます。 バイセルは全社的にGoogle Cloudを利用しているので、これの学習後は社内LTや普段の議論の内容がスッと頭に入ってくる効果を実感できました。
新卒からインフラに触れることができ、非常に良い経験を積むことができました。
24卒内定者インターンのメンター
10月、24卒の内定者インターンの方がチームにJoinすることが決まり、私がメンターになりました。 私自身は学生時代にプログラミングスクールのメンターをしたことがあったので、緊張もなくスムーズに対応することができました。
内定者インターンは、まず実務の準備としてTodoアプリ開発のカリキュラムを1~2ヶ月ほど実施します。
カリキュラムは、いずれ現在のGYROチームで自走して活躍できることをイメージして独自に作成しました。 技術スタックを合わせるのは勿論、GitHubのPRの出し方、Jiraチケットの切り方、OpenAPIの記載、Google Cloudを利用したコンテナデプロイなど開発の流れを一通り体験できるようにしました。 また、カリキュラム期間中にチームメンバー全員と1on1で自己紹介をしてもらうようにしました。 カリキュラム期間を個人でもくもく進めるだけで過ごすのではなく、チームに早く馴染める機会を作ることを意識しました。
カリキュラムの最後にはチームメンバーを招待して成果発表をし、コメントを頂きます。その後、正式にチーム所属となり実務を開始します。
私は、この経験を通して相手の現在のスキルをヒアリングし、チームにJoinして活躍できるためにはどのようなオンボーディングが必要かを考える良い機会となりました。
Cosmosとの連携
Cosmosはリユースプラットフォームとして新規開発しているサービスで、将来的にはGYROを置き換える立ち位置のものです。 私はその中でも、訪問買取ドメインを扱うVisitサービスとの連携を取るタスクを任されました。
GYROのリプレイスは段階を踏んで進んで行きます。 GYROが開発された当時、Salesforceから内製化サービスに移行する際に混乱が大きかったことが背景にあったため、慎重にリプレイスを進める運びとなりました。
リプレイスの初期段階では、GYROのバックエンドにAPIの窓口を用意し、GYROのデータベースを利用する形となっていました。 私は、インフラエンジニアの方と協力しながらVisit専用のAPIの窓口を構築していきました。 GYROのバックエンドはKubernetesで構築されているので、新たなDeploymentを追加しました。 次に、そのサーバーに既存のAPIを呼び出すコードを記述していきます。そのコードの実装方法をドキュメントにまとめ、Visitチームが開発できる体制を整えました。
また、Visitの実装タスクの一部を手伝ったりしました。 GYROの商材登録時のバリデーションコードが複雑な構成だったので、実装を手伝って欲しいとの依頼がきっかけでした。 まずは、Railsで書かれているバリデーションのコードを読み込み、理解します。 そしてGoで書かれているVisitのバックエンドにその内容を移植していきます。
この実装タスクをする上では、RubyとGoの言語間の違いを実感しました。 Rubyは動的型付け言語なので変数の型を定義せずに書いていきますが、Goは静的型付け言語のため型を明示して書いていきます。 特にパラメータがNullの可能性があるかどうかは、Goでランタイムエラーとなるリスクがあるため必ず明らかにする必要がありました。 そのため、Rubyで書かれたGYROの処理を精緻に調べる必要があり、骨の折れる作業でした。
他にはスケジュール調整をしたり、データベースのカラムの役割など、諸々の質問について調査し報告する活動などをしていました。
執筆時点で現在進行中のプロジェクトではありますが、リプレイスする上で留意すべきことを色々知ることができる良い機会となりました。
通期で取り組んでいたこと
問い合わせ対応
GYROユーザーからの問い合わせを、ヘルプデスクを通して対応していました。 GYROユーザーは主に社内の査定員やインサイドセールス、商品部、セールスコンプライアンス課の方々が対象です。
平均して週に2件ほど対応していました。
対応内容としては、操作が分からないといった質問から、バグの報告とそれについての対応検討、データ修正依頼、開発依頼などがあります。 基本はテキストベースでやり取りをしますが、内容を掴むのが難しい場合もあります。 そのような場合は、ミーティングを設定して直接話しながらヒアリングすることもありました。
バイセルのような事業会社で内製化サービスを運用する場合は、ユーザーが社内にいることが多いのでコミュニケーションが取りやすいです。 ユーザーが近いことで、エンジニアリングがどのように事業に貢献しているのかが見えやすいメリットがあります。 ユーザー課題を解決できた瞬間はとてもやりがいを感じる瞬間の一つです。
イベントワーキンググループでの活動
バイセルでは、裏から組織を支えるワーキンググループという活動があります。主に新卒社員が担います。 ワーキンググループには、本社のtechフロアの備品を管理するグループ、イベント運営を管理するグループ、テックブログを管理するグループがあり、私はイベントワーキンググループに所属しました。
イベントワーキンググループは、techフロアのイベントスペースで実施するイベントのお手伝いや、月に1回実施する本部会後の懇親会を企画しています。 私は、CTO協会や生成AIなどのイベントの運営に携わり、ついでに参加者と交流も深めたりしました。
11月の本部会の懇親会は23卒中心で企画立案をし、運営まで行いました。 新入社員が多いタイミングでもあったので、お互いの名前と顔を知り、仲良く交流できる企画として質問ビンゴ大会を企画しました。 まず、Yes/Noで答えられる質問がランダムに9つの枠に書かれたビンゴを社員に配布します。 3人のグループを作ってもらいYesの回答者が出た場合に枠を埋めるというルールで、何度も入れ替えながら交流をしていきました。 とても盛り上がって好評だったので、企画した甲斐があったなと感じています。
12月には、イベントスペースを利用した合同イベントの企画を持ち込んで運営したこともありました。 株式会社ゆめみさんとバイセルの合同イベントで若手を対象としたLT、交流イベントです。 私自身が元々ゆめみの同期と友達で、勉強会をしたいという話が出たことがきっかけでした!
このように裁量を持って活動しやすい体制だったので、アイデアを企画し実現するところまで担う経験も積むことができました。
その他自主的な活動
内定者インターンの頃から、23卒で定期的に集まって勉強会を開いていました。内容は有名な本の輪読会であったり、LT会であったり、アルゴリズム勉強会などを実施してきました。
私はその中でアルゴリズム勉強会を企画、運営していました。 これは二分探索や、bit演算などのアルゴリズムに関する問題を解くことを通して、普段使っている技術の背景を学ぶといった目的で実施しました。内容は以下にまとめています。
おわりに
新卒エンジニアとしての1年を振り返りました。新卒という枠に捉われず、色々な取り組みを主体的にできた1年だったなと思います。
研修は、座学ではなく自分たちで行動してアプリを開発するというチャレンジングな課題に取り組みました。 与えられたテーマをどのように具現化するのか?どのように事業に貢献できるのか?を突き詰めて考える良い機会になりました。 作成したアプリは、実際にユーザーに使ってもらっているので嬉しい限りです。
実務の技術面では、バックエンド領域を中心に新規API開発からインフラの移行タスクまで経験することができました。 新卒の頃から幅広い技術領域に挑戦させてもらえたのは学びになりましたし、エンジニアとしての視野がぐんと広がったと感じています。
また組織面においても、イベントの企画運営などを経験できました。
総じて言えることは、意思を持って行動し続けると色々な経験や学びを得ることができたなということです。 振り返ってみると、成長機会がたくさんある環境だったので、それを期待する方にはぴったりな環境だと思います!
最後に、BuySell Technologiesでは新卒エンジニアを募集しています。興味がある方はぜひご応募ください! recruit.buysell-technologies.com