ダイアモンドヘッド株式会社 / バックエンドエンジニア
慶應義塾大学|法学部から情報系へ。Python&Djangoのインターン|札幌の長期インターンシップインタビュー|Diamondhead Engineer Careers|note
この記事は私へのインタビューをもとに、ダイアモンドヘッド株式会社さんが書いてくださった記事になります。
Discover companies you will love
慶應義塾大学 / 環境情報学部
SFC4年(修士進学予定のため27卒)の坂内理人と申します。多様な実務経験、チームやプロジェクトを主導するリーダーシップ・チームワーク力、成長速度、行動力が強みです。これまで3年ほど、数社でエンジニアとしてインターンをしてきました。ソフトウェアエンジニアとして2年、機械学習エンジニアとして1年、SREとして数ヶ月の実務での開発経験があります。また、BtoB / BtoC、受託開発 / 自社開発の両方を経験してきました。
現在はKubernetesにコントリビュートをしていることもあり、Kubernetesのような基盤となるミドルウェアやフレームワークなどの開発に取り組めたらと思っています。
法学部からSFCに編入しました。SFCではコンピュータサイエンスの勉強を行っています。村井純合同研究会の分散システムを専門とする研究室ではサブリーダーを務めており、Kubernetesのリソーススケジューラーの研究を行っています。他にもWakamonogでの登壇、IETF、WIDEプロジェクト、JANOGなどのカンファレンスへの参加もしてきました。
SFCに転部する前は法学部に在籍していました。法学部在籍中に、コンピュータに興味を持つようになったため、SFCの研究室に所属させていただき、江戸川区さんと協力してゴミ収集車等のドライブレコーダー映像から道路の損傷箇所を自動検出するAIモデルを作成したり、論文の執筆・発表を行いました。
GPUクラウドサービスの構築 https://zebra-ai.net/
プログラム委員として活動しています。WIDEプロジェクトは、1988年に複数の大学間を跨いで結成された、インターネットに関する研究・運用プロジェクトで、結成以来、インターネットに関係する技術を日本国内に導入する役割を担ってきました。
ABEMAには『今日、好きになりました。』という人気番組があるのですが、リアルタイム視聴をするユーザーが多く、放送が開始する時刻前後で急激なトラフィックのスパイクが発生することが特徴です。このスパイク時のヒーププロファイラを確認したところ、あるメソッドだけ異常に大量のメモリ割り当てが発生していることに気がつきました。 調査をしたところ、そのメソッドは推薦システムのスコアリング結果に基づいてコンテンツの並び替えを行う処理を行なっており、実際にはユーザーに対して表示するコンテンツは多くても数十個ほどなのに対して、不必要に数千個のコンテンツの並び替えを行なっており、その際にデータのコピーが多く発生するようなロジックになっていたことが原因だとわかりました。 それらを改善するようなコードの修正を行ったところ、スパイク時の20分間のメモリ割当量を累計で2TiB削減し、数十GiB程度に抑えることに成功しました。これにより、スパイク時の各Podのメモリ消費量を削減することに繋がり、サービスの安定性を改善することができました。
DMMの就業型インターンに参加し、オンプレミス環境で30PBの動画データと1000Gbps近いトラフィックを扱っているDMM TVの動画配信基盤の開発に1ヶ月間フルタイムで携わりました。
GOはマイクロサービスになっており、今回開発に携わった後部座席タブレットの決済を扱うサービスに対して、他サービスから決済データの一部データを更新できるようにするために、新たにAPI(gRPC)を実装しました。
Express, JavaScript/TypeScript、Go、GCPなどを使い、ユーザー数30万人の完全有料制ファンコミュニティサービスFaniconの開発を行いました。主に機能開発のほかに、技術的負債を解消し、開発効率を高めるため、開発プロセスの改善やパフォーマンスチューニング、レガシーコードの自動テストの作成とリファクタリング、Flaky Testの改善、アラートの改善等を行っていました。
プロジェクトでは、コードのpush時にインテグレーションテストが自動で実行されるようになっているのですが、高い確率で正常なテストが失敗することがあり、テストを通すために何度もテストを実行し直す必要がありました。 CircleCIでFlakyなテストを調べたところ、Stripeのテスト用APIを使用しているテストケースの失敗が目立ったため、Stripe APIのモックを作成し、なるべくStripe APIを叩かないようにすることで、Flakyなテストを大幅に減らすことに成功し、push時に安定してテストを実行できるようにしました。
サービスで大きなイベントが控えており、ECサイトなどでの購入が急増すると見込まれていたため、想定する負荷に耐えられるのかを確かめるとともに、耐えられない場合はパフォーマンスチューニングを実施する必要がありました。 負荷テスト基盤がなかったため、Kubernetesを用いて本番環境とほぼ同じ環境を構築し、これまでのAPIに対するリクエスト数をもとに、イベント時の負荷を想定してLocustを用いて負荷テスト用のシナリオを記述し、負荷テストを実施しました。 DatadogやGCPのQuery Insightなどを確認した結果、ロックの取得待ち時間と、N+1問題が発生している箇所がボトルネックとなっていたため、最低限のロック取得で済むようにロジックを変更し、Eager Loadingを用いてコードを改善した結果、負荷テストをパスさせ、本番のイベントについても無事成功させることができました。 特に決済処理部分では、Stripe APIに決済リクエストを出し、その結果をデータベースに記録するということを1つのトランザクション内で行っていましたが、タイムアウト(THECOOのサービスで設定されているタイムアウト時間を超過したなど)等によってトランザクションがアボートされると、Stripeでは決済処理が行われたのにデータベースには決済が行われたことを示すデータがないという障害が発生する原因にもなっていました。そのため、新たに決済処理に保留ステータスを追加することでトランザクションを分離してロックの取得待ち時間を短縮するとともに、必ず決済記録が残るようにすることができました。
NICT(国立研究開発法人情報通信研究機構)主催のセキュリティハッカソンで、高速なファイルシステムの開発に取り組み、発表しました。
フランス発のエンジニア養成機関です。 現在は、世界29カ国にて展開されており、日本の42東京はDMM.comが主導し、一般社団法人『42 Tokyo』として設立されました。
東大松尾研究室発のAIスタートアップで、SREとアルゴリズムエンジニアとしてインターンをしていました。アルゴリズムエンジニアとしてはディープラーニングモデルの精度評価・改善を行うとともに、SREとしては会社全体で使用するAIシステム開発基盤とCI//CDパイプラインの構築を行いました。
GitHub Actions、Terraform、AWSを用いて、会社全体で使用するAIシステムの開発環境とCI/CDパイプラインの構築を行いました。具体的には本番環境を模した開発環境をTerraformとAWSを用いて構築し、またコンテナをビルドして、イメージをECRにpushし、ECSに最新のコンテナをBlue/GreenデプロイするCI/CDパイプラインをGitHub ActionsとAWS CodeDeployを用いて作成しました。
Interop Tokyo 2023にて日本最大のネットワーク展示であるShowNetのネットワークの構築にデプロイチームとして携わりました。
筑波大学発のスタートアップで、2つのプロジェクトを経験しました。うち1つではチームリーダーとして開発プロジェクトを主導しました。サービスの要件定義、設計、実装、テストという一連の開発プロセスを経験するとともに、開発プロジェクトのリーダーとしてプロジェクトマネジメントも経験しました。
電気配線工事の顧客管理システムを開発するプロジェクトに携わりました。プロジェクト全体で20人ほどが参加しており、その中で私は工事物件と見積書のCRUD機能の実装を担当しました。
チームリーダーとして、社内営業用ツールの開発プロジェクトに携わりました。チームメンバーは5人で、私は、スクラムの導入の他に、要件定義、システム設計、DB設計などの設計と、実装を行いました。 私がチームリーダーになる前は、各自がバラバラに開発していたこともあり、プロジェクトの進捗が停滞していました。私はリーダーになると、スクラムを導入し、ビジネス要件とその優先順位を明確化して、スプリントごとに「動くプロダクト」を成果物として得られるようにすることで、プロジェクトの進捗の停滞を改善し、3ヶ月後にリリースすることができました。
ランク王株式会社(旧Candle)にて、主にWebマーケーティング業務、ライターさんの採用と教育、マネジメントを担当していました。当時は大学1年生でしたが、コロナ禍で授業が完全オンラインだったこともあって週40hフルタイムで半年間働いたことから、仕事とはどういうものなのかを知り、将来の自分の選択肢について深く考えるきっかけになりました。
高校生のときには受験勉強を一番頑張りました。予備校に行かず、自分で過去問を研究し、合格するための戦略を練って、独学で最終的に第1志望の慶應法学部に合格することができた経験は、当時の私にとって大きな成功体験であり、以降の私の主体性や向上心、挑戦をする姿勢の基礎となりました。
高校生の頃、1年間ニュージーランドの現地高校に通っていました。今まで学校という狭い世界で生きてきて、将来に対して何も具体的なビジョンを描けないまま大学に進学するであろう自分に対して危機感を覚え、全く違う環境に身を置くことで、自分自身をより客観視し、視野を広げるきっかけになればと思い、留学を決意しました。
ダイアモンドヘッド株式会社 / バックエンドエンジニア
この記事は私へのインタビューをもとに、ダイアモンドヘッド株式会社さんが書いてくださった記事になります。