はじめに
はじめまして。 Data Hub Engineering グループの北澤です。
2021 年の4月に入社してから、あっという間に1年が経過してしまいました。
今回は私の新卒1年目の振り返りをお伝えできればと思います。
Sansan Data Hub とは
私は Sansan に入社してからはずっと Sansan Data Hub というサービスの開発に携わっています。
Sansan Data Hub とはあらゆるデータを整理、統合する名寄せエンジンのことで、具体的には人物や会社の情報の
- 情報が古くなっている
- 表記ゆれで複数のデータが存在する
- データが重複している
- 電話番号などのデータが不足している
という問題を、 Sansan 独自の名寄せ技術で解決するプロダクトのことです。お客様の顧客データをクレンジングし、外部情報ソースと連携した情報でリッチ化して提供しています。
自己紹介
アプリケーションを開発して他人のストレスを解消したり、笑顔になってもらうことが好きな人間です。学生時代は個人で Windows デスクトップアプリケーションや、 Discord Bot などを開発していました。
Sansan に入社したきっかけ
私は学生の時から C# に強い想いがあり、 C# エンジニアとして働ける会社を探していました。とある逆求人に参加したことがきっかけで Sansan の C# サーバサイドインターンに一カ月参加しました。
当時 Sansan という会社を全く知らなかったのですが、インターン中に「この会社なら、この人たちの下でなら納得して働ける」と思い、入社を決めました。
Sansan に入社してから
やったこと
さまざまなタスクに取り組みました。内部の解約処理の改善を行うプロジェクトに携わったり、外部との連携が必要なプロジェクトを設計段階からリリースまで一人で任せてもらったりすることもありました。
その中でも一番印象が大きいのは、最近取り組んだ管理者用 Web サービスの開発プロジェクトです。
このプロジェクトではクライアントとして Blazor WebAssembly を使い、 BFF として ASP.NET Core を利用しています。クライアント - BFF 間の通信には C# コードファーストな gRPC-Web を利用するという全てが C# な技術選定が行われており、C# 大統一理論の素晴らしさを体験できるプロジェクトでした。特にバリデーション部分はクライアント - サーバ双方が C# であることによって、一元化できたのがかなり良い体験でした。
私はクライアント側を触りつつも主に BFF の実装、テストを行いました。
学生時代に Web サービス開発の経験が無かった私は、Web サービスに関わるさまざまなこと、例えばセキュリティ的脅威とその対策についてや認証についてなどを学ぶことができました。
実装面でもさまざまなことを学ぶことができました。 個人開発ではクラスごとの責務や依存関係について特に考えずに(そもそも学生時代は SOLID 原則さえまともに知りませんでした!)実装していましたが、プルリクエストでもらった指摘に対応する内に、責務や依存関係を適切に整理すると、テスタビリティが大きく向上したり、コードそのものの安全性が大きく増すことを経験しました。
まだまだ学ぶことはとても多いですが、先を見据えた設計をする力は、このプロジェクトで大きく成長することができたと思います。
個人開発との違いで感じたこと
まずは開発の規模です。
今まで行ってきた開発と一番大きな差を感じた部分でした。個人開発で「全てを把握していることが当たり前」だった私は、大きな規模感に半ば打ちのめされた気分でした。
初めて振られたタスクはある機能の改修だったのですが、その改修対象に入ってくるデータを追ってみようとして、「ここからデータが流れてくる、このデータはどうやって作られている?さらに前に遡ろう。このデータはどうしてこうなってるの...?」と、とても多くの時間を使ってしまいましたが、得られたものは多くはありませんでした。
そこからの反省で、調べつつもとにかくタスクに対して手を動かしてみることにしました。分からなくても前に進もうとしてみる。手を動かしてみると少しずつ狭い範囲の知識を得ることができました。そうしてゲームのマップの霧を晴らすように狭い範囲の知識を少しずつ集めていったことで、今でも霧は晴れ切っていませんが、当時より何十倍にも広い視野を持てるようになったと思います。
当時全てを理解しようとしていたら、今より知識は少なく、また知識の吸収に使った時間は今の数十倍になっていたと思います。
大きいものを知るには「小さく少しずつ、詰まったら周囲を頼る」が大事だと感じました。
次に感じたことはパフォーマンスの追求です。
私がしていた趣味範囲の開発では、膨大なデータを利用するものはなく、パフォーマンスに関わる部分は全く考えていませんでした。
しかし Sansan Data Hub では毎日数億というデータが処理されています。多くのデータが飛び交う中では、たった一行のコードが影響して実行速度が低下してしまったり、ストレージに対する負荷やメモリの消費量がとても大きくなったりしてしまいます。 最悪の場合、サービスの一部が止まってしまうような事態にもなります。
私が入社して初めて提出したプルリクエストでもらったのは、パフォーマンスに関する指摘でした。
そこでもらった他の複数の手段との実行速度の計測、速度が速くなるケース、安定性の比較の結果を元にした指摘で Sansan エンジニアのパフォーマンスへの本気度を知り、また個人開発には味わえなかった種類の感動を覚えました。
この経験から少しずつ自分のコードのメモリ消費量、ストレージへのアクセス量、実行速度を気にかけるようになりました。 この点も入社前の自分とは違った成長した点だと思います。
終わりに
私は Sansan に入って良かったなと今心から思っています。
Sansan のエンジニアはプロダクトに対して常に真剣です。ユーザにクオリティの高いものを届けるにはどうすればよいか、一分一秒でも早くするにはどうすればよいのかといったことに対して本気で取り組んでいます。そのためには変化を全く恐れません。
とてつもなく大きな変更することもありますし、新しいことへの挑戦も多いです。変化を起こすことは大変ですが、それに対してネガティブな人はいません。
いろんな変化を経験したことで、この1年間に多くの学びを得ることができました。
今後も成長を続け、ユーザに対し最大のパフォーマンスが出せるエンジニアになれるよう努力したいと思います。
Data Hub Engineering グループでは共に働く仲間を募集しています!
.NET に運命を感じている方、世の全てのデータを名寄せしてみたいと思ってる方は、ぜひ Data Hub で一緒に働きましょう。お待ちしております!