わからなくても手は止めない。巨大なデータベースと格闘する新卒エンジニア
2020年にfreeeへ新卒入社し、データベースエンジニアとして業務を行ってきた片平 遥。コロナ禍により入社早々リモートワークで働く中でも、手を動かし、周囲を頼り、疑問に対処してきました。本ストーリーでは、プログラミングとの出会いやfreeeに入社した理由、巨大なデータベースとの格闘の日々を語ります。
プログラミングはおもしろい!──初期衝動を持ったまま、freeeのエンジニアに
▲片平がいつも使用しているアイコン
片平がプログラミングに興味を持ったのは小学生のとき。きっかけは、当 時遊んでいたゲーム機でした。
片平 「ゲームボーイアドバンスやニンテンドーDSなどが好きで、小さいマシンの中で画面が動き、押すボタンによって動作がまったく違うのを不思議に思っていました。それからどこかのタイミングで、プログラミングという世界があることを知ったんです。
中学生になり、家のPCにある程度自由に触れるようになると、本を見ながらJavaを使ってプログラミングを始めました。書いて実行すると、計算ができたりするのがおもしろく、のめり込んでいきました」
高校を卒業すると、片平は東京工業大学の工学部・情報工学系に進学。本格的にプログラミングやその仕組みを学び始めます。
片平 「興味のある学部はいろいろとありましたが、自分の中で一番勉強っぽくなく、楽しそうに思えた情報工学へ進みました。
研究室では、分散システム特有の分散競合バグの動的解析を行いました。簡単に言えば、10,000回実行したら1回バグが出るような、プログラムのダメな部分を見つけるためのプログラムを作ったんです。このバグが原因で飛行機の墜落なども過去に起きているので、その解決策の一つとなりうる研究は非常にやりがいがありました。
さらに大学院に進学し、修士過程では分散アルゴリズムで悪意のあるノードが一定数いてもうまくいくようなアルゴリズムの研究をしていました」
大学院1年時には、学業と並行してインターンへの参加をしました。
片平 「freee含め2社の短期サマーインターンに参加し、実際に仕事で使うような技術を教えてもらいました。実際に使う技術は、コード を書くことしか研究内容と一緒の部分がなくて、想像していたものとはまったくの別物でした」
それから就職活動を始めた片平。freeeを選んだ理由をこう語ります。
片平 「freeeのビジネスに信頼を持てたこと。最終面接でCEO・佐々木 大輔の語るビジョンから本気さが感じ取れたこと。『自分たちが作っているプロダクトが世の中的に価値があると本気で思っていて、ミッションやビジョンを大切にしていること』が他の社員から伝わってきたこと。それらの点に惹かれました。
また、フェーズ的にもちょうど小さなスタートアップから開発がスケールするよう整備する段階で、middleware を切り出したりしていたので、興味を持って取り組める仕事内容になりそうだと思いました」
2020年4月、こうして片平はfreeeに入社しました。
散らかったデータを整えることが、データベースチームの役割
研修の後に片平が配属されたのは、データベースチームでした。
片平 「そもそも、データベースとは同時にいろんなデータの読み書きをするとても大きな本棚のことで、各サービスにまつわるデータを貯蔵しています。データベースチームは、その仕組みを学び、アプリケーションが正しく、そして効率よくデータの読み書きをするよう改善策を探るチームです。
たとえば『freee会計』のデータベースには大量のデータが入っていて、読み書きも大量に発生しています。しかし、そのままではどんどん処理速度が遅くなっていき、最終的には使い物にならなくなります。そうなる前に技術的な工夫を施し、数年後もユーザーが問題なくプロダクトを使えるように改善していくことがデータベースチームの担う役割です」
データベースチームは、2020年6月に作られた比較的新しい組織。6月に研修を終えた片平は、チームの発足とともにアサインされています。しかし片平は、配属後すぐにチームに合流したわけではありませんでした。
プロダクトに触れる研修も兼ねて、ユーザーの情報周りを管理するチームで、ユーザー招待機能に関する新機能開発を担当していたのです。そのため、データベースチームには1〜2カ月遅れて合流しています。
片平 「戻ってきてからは、freeeの中で一番大きい『freee会計』のデータベースを、インフラとアプリの両面から改修する業務が始まりました。その作業を行うことこそがデータベースチームができた理由であり、それまでは各々がやっていた仕事をチームとして計画的に行うようになりました」
片平の行ってきた業務に、テーブルの移行作業があります。
片平 「『freee会計』のデータベース内の一部のテーブルを、別のデータベース内に移動させることで、関わる部分の動作を軽くしています。
しかし引っ越した直後が一番きれいなのは家もデータベースも同じで、しだいに散らかって重くなってくるので、定期的なメンテナンスは必須です。これはどこの成長企業も乗り越えてきた問題なのではないかと思います」
大掛かりなメンテナンスは、深夜、サービスを止めて行うこともありますが、小さいものはサービス稼働中に行うこともあり、緊張感があると言います。
片平 「実際、膨大なデータベースの全てを把握できているわけではないので、変更を加えることで想定外のことが起こる可能性も否定できません。なので、データベースの移行の仕方を考えるときは、作業をしても動作が変わらないかケアしながら、最終的にはチームメンバーの経験や知識をもとに答えを出しています。
そしてステージング環境で実験して動作が変わらないことを確認できたら、きっとこれなら大丈夫だろうと、思い切って本番環境に反映させています」
果敢な姿勢を武器に、巨大なデータベースと格闘した2年
片平が入社した2020年、すでにfreeeは創業9年目でした。データベースにもその歴史は積み重なっており、入社後の日々は片平にとって格闘の毎日でした。
片平 「最初はとくに苦労しました。とにかくソースコードもデータベースも巨大で、どこに何があるかもわからなかったんです。
頑張って探していた処理を特定しても『このテーブルはどのチームのどんな機能なんだ?』『この話は誰が知ってるんだ?』『この部分のコードを直して影響が出る箇所は?』『このリソースや設定はいらないものなのか、実は必要なものなのか?』と、アクセスする度に疑問は湧き出るばかり……。
カオス状態のデータベースを目の当たりにして『これが社会なんだ!』と思わされました」
それでも片平はいろいろな方法で一つひとつの疑問と向き合い、解決していきます。
片平 「まずは単純に Ruby on Rails とデータベースとの間でどんな処理が行われているのか、Rails の中身までちゃんと理解できるように、自分の技術力(読む力)を磨きました。
さらにコードを 機械的に読むためのプログラムを書いて、効率的に作業できるように日々努力を重ねていったんです。これは今も続けていて、慣れていくことでしだいに検索能力がつき、どこに何があるかわからない問題は解決できました」
さらに他チームや別のプロダクトと関係している部分は、リモート下にも関わらず、持ち前のアグレッシブさを発揮して解決していきます。
片平 「入社して即リモートだったので、口を開けて待っていても周囲の情報は耳に入ってこず、 いかに自分から情報を見にいけるかが大事でした。そこでいろんなチームのslackに入り、日々流し読みするようにしたところ、何とか感覚が掴めるようになりました。
また、誰が知っているのかわからない問題に関しては、 自分の知らない人でも見知らぬチャンネルでも遠慮せず書き込んだりメンションしたりすることで、 助けてもらいました。
知らないチャンネルでも雑にリアクションスタンプをつけたりして顔(アイコン)を売って、『会ったことはないけどなんか知ってる人』状態をじわじわ増やしていくことで、 他人を巻き込む系の業務はやりやすくなった気がします」
片平はこのように必要な前提知識のキャッチアップと目の前の業務、さらにはfreeeで働くにあたっての環境づくりをバランス良く行ってきたのです。
理想像に近づくために。エンジニアとして成長していきたい
2022年現在、データベースチームは新卒を含めた数名で稼働中。チームにも少し余裕が出て、新たな領域への挑戦も始まりました。
片平 「2年間携わってきた『freee会計』の会計データ ベースも、始めた当初は無法地帯で読み方も荒かったですが、日々改善していくことで動作が早くなったり、実行結果は同じでも紐づいていた別の機能の性能が上がったりと、だいぶ整ってきました。
とはいえ、まだまだ改善点は山積みです。
またチーム発足時の目的は『freee会計』のデータベースを整えることでしたが、実は任されているのはfreeeの全ての既存プロダクトなんです。そこで最近は手を広げ、『freee人事労務』なども少しずつ整えるようになってきています」
最後に片平が、今後の目標を語ります。
片平 「実は入社前は、自社プロダクトの有無をあまり重要視していませんでした。しかし2年働いてみて、自社プロダクトが存在することの重要性をひしひしと感じています。自分が書いたコードや行った改善が社内の生産性に直結するし、その先のユーザーに届く価値にも関わるので、責任感も芽生えてきました。
また私には、入社前からぼんやり思っていた理想のエンジニア像のようなものがあります。それは昔のGoogleのポリシーにもあった『don’t be evil(邪悪なことをするな)』にも似ているのですが、わからなかったり、難しいからといって、諦めてサボったり、簡単にごまかしたりしないこと。そんなことをしなくても、なんとかなるエンジニアになるため、技術的にも人間的にも成長していきたいです」
片平の巨大なデータベースと向き合い格闘する日々は、これからも続いていきます。