bootjp

キャリアビジョン


「分散システムの高い専門性」と「組織・事業への理解」で、技術から事業成長にレバレッジをかけるエンジニア

## 分散システムを専門領域として取り組んできたこと 私は、分散システム・分散ストレージを専門領域として、技術そのものを深く理解するだけでなく、研究領域に蓄積された知見と、顧客・事業への理解を組み合わせることで、価値のある課題を解決できるエンジニアを目指しています。 これまで、大規模なコンテンツ配信基盤、分散KVS、キャッシュ、Raftを用いた分散ストレージ、複数プロダクトを接続するイベントバスなど、分散システムに関わる設計・実装に取り組んできました。 ## 実務の課題を、研究領域まで遡って考える その中で感じているのが、実務で直面する課題の多くは「まだ誰も解いていない課題」ではないということです。 一見すると新しい技術課題に見えても、研究領域では過去に同種の問題に対して複数の解決方法が提案され、その前提やトレードオフまで評価されていることがあります。 そのため、技術課題に直面したときは、現在使われている製品や一般的な実装方法だけではなく、関連する研究論文まで遡って調べるようにしています。 論文を読むことで、 - その課題がどのように定義されているのか - 既存手法では何が解決され、何が未解決なのか - どのような前提のもとで成立するのか - 性能・一貫性・可用性・コストの間にどのようなトレードオフがあるのか - どのような方法で有効性が評価されているのか といったことを知ることができます。 すでに存在する知見を知らずに同じ問題を一から解き直すことを避けられるだけでなく、自分が持てる解決策の選択肢そのものを広げることにもつながります。 分散システムやデータベースの論文は継続的に読んでおり、得られた知見は技術メモや登壇資料として公開しています。 論文・技術メモ: https://memo.bootjp.me/ 発表資料・活動一覧: https://about.bootjp.me/#Publications:~:text=%E7%99%BB%E5%A3%87%E3%83%BB%E7%99%BA%E8%A1%A8%20(Presentations) ## 自分自身でも研究を続ける また、自分自身でも研究活動を続けています。 現在は、分散システムの安全性を確保する仕組みや、LSM-treeを用いたストレージの効率化について研究し、データベース・分散システム分野の国際会議へ論文を投稿しています。 現在は査読過程にあるため、研究内容の詳細はまだ公開できません。 ## 技術だけでは解けない問題がある 一方で、研究上優れた解決方法を知っていることや、高度な技術を実装できることだけでは、ビジネスにおいて価値のある課題解決にはならないことも、これまでの経験から学びました。 特にそれを強く意識したのが、以前プレイドで働いていたときの経験です。 当時は技術的に難しい問題を解くことに強く関心を持っていましたが、実際のビジネスでは、技術力だけで顧客に価値を提供できるわけではありませんでした。 顧客が何を実現したいのか、その実現を阻害しているものは何なのかを理解して初めて、技術を使って何を解くべきかを考えることができます。 ## 顧客や事業を見る視点を取り戻すための独立 もともと私は、独立して自社サービスを開発した経験や、所属企業で市場調査を行い、その結果をもとに新規サービスを立ち上げた経験があります。 その一つが「忍者アクセスランキング」で、市場を調査し、その中で見つけた需要と、自社が持っていた技術や強みを組み合わせてサービスを立ち上げました。 (詳細は年収評価シートの「市場調査からの新規サービス立ち上げ(忍者アクセスランキング)」をご覧ください) プレイドでの経験を通じて、技術を深く追いかける一方で、こうした顧客や市場を見る視点が以前より弱くなっていることにも気づきました。 そこで、もう一度技術だけに閉じずに仕事をしたいと考え、2023年に独立しました。 一人で法人を運営すると、技術だけを考えているわけにはいきません。 顧客にはどのような課題があるのか、自分の専門性でどのような解決策を提供できるのか、それに価値を感じてもらえるのかを日々考える必要があります。 この経験を通じて、技術的に解ける問題を探すのではなく、まず顧客や事業の側から解くべき問題を考えることを、改めて意識するようになりました。 ## 顧客が実現したいことから、解くべき課題を考える 技術的に解決可能な問題と、顧客が本当に解決したい問題は必ずしも同じではありません。 まず顧客が何を実現したいのかを理解し、そのうえでどのようなアプローチを取るべきかを考える必要があります。 たとえば、 - 顧客が実現したい状態は何か - 現在それを阻害しているものは何か - その問題はどの程度重要なのか - どこまで解決すれば十分なのか - 性能、信頼性、開発速度、運用コストのうち何を優先するべきなのか といったことは、技術だけを見ていても決められません。 顧客や事業を理解して初めて、研究や技術から得た選択肢の中から、その状況に合った方法を選べると考えています。 ## プリンシパルエンジニアとして、解決策を組織に広げる 現在のプリンシパルエンジニアとしての仕事でも、単に技術的に高度なシステムを作るのではなく、複数のプロダクトやチームが抱えている問題を整理し、必要な保証や制約を見極めたうえで、アーキテクチャや共通基盤として解決することを意識しています。 マルチプロダクト展開を支えるイベントバスの設計も、その一例です。 単に非同期メッセージング基盤を作るのではなく、サービス間の依存関係、障害の波及、開発者の認知負荷、既存システムからの移行コストまで含めて考え、設計・実装・導入を進めました。 発表資料: 「疎結合でスキーマ駆動開発を実現するイベントバスの設計」 https://speakerdeck.com/hacomono/building-an-event-bus-for-schema-driven-development-in-a-loosely-coupled-architecture プリンシパルエンジニアとして仕事をするようになってからは、自分一人が難しい問題を解くことだけではなく、その解決を他のチームでも利用できる形にすることも以前より意識するようになりました。 アーキテクチャや共通基盤、開発の仕組みとして残せれば、自分が直接実装できる範囲を超えて、プロダクトや組織全体に影響を与えることができます。 ## 今後目指していきたいこと 今後も、分散システムという専門性はさらに深めていきたいですし、研究領域の知見も継続的に取り込んでいきたいと考えています。 一方で、それだけを目的にはしたくありません。 顧客が何を実現したいのかを理解し、解くべき課題を見つける。 そのうえで、研究で積み重ねられてきた知見から解決方法を探し、自分の技術的な専門性を使って実際のシステムに落とし込む。 そして、その解決を一つの機能だけに閉じず、プロダクトや組織、事業全体に広げていく。 そうした形で、より大きな事業を技術からスケールさせられるエンジニアでありたいと考えています。

プロジェクト経験

2025年/2年以上

マルチプロダクト展開を支えるスキーマ駆動イベントバスの設計・開発・導入

## プロジェクト概要・担当 株式会社hacomonoにて、マルチプロダクト展開と部分的なマイクロサービス化を支える、社内共通のスキーマ駆動イベントバスを設計・実装しました。プリンシパルエンジニア(分散システム)として、課題整理、アーキテクチャ設計・実装から、プロダクトチームへの導入支援、運用体制の整備までを主導しました。 ## 背景・解決すべき課題 既存のhacomonoと新規プロダクト間でデータを連携するにあたり、サービス同士が個別にAPIを呼び合う構成では、依存関係や変更の影響範囲が複雑になり、開発者の認知負荷や障害の波及リスクが増大することが課題でした。また、入退館・予約・決済など高い可用性を要求される機能を含むため、開発速度だけでなく、サービス間の障害分離も考慮する必要がありました。 そこで、既存基盤を活かした段階的なサービス分割を前提に、各サービスが連携先の実装ではなく、共通のイベント契約に依存する構成を採用しました。 ## 技術的な取り組み・設計判断 ### 1. イベントの受け付けと配信を分離したアーキテクチャ Publish/SubscribeとFire-and-Forgetを基本方針とし、送信元が個々の購読先や、その処理完了を意識しないイベント連携を設計しました。Amazon API GatewayとAWS Lambdaによる受信処理でイベントを検証し、Amazon SQSへの保存成功を確認してから送信元へ応答します。その後の配信は別のLambdaで非同期に実行し、他AWSアカウントのSQSや各サービスのWebhookへの配信に対応しました。 単に通信を非同期化するだけでなく、イベントを受け付けたかどうかは送信元が判断できるよう、同期処理と非同期処理の責任境界を明確にしました。 ### 2. スキーマとバリデーションを中心にした開発フロー Protocol Buffersでイベントスキーマを管理し、Bufの互換性チェックをCIに組み込むことで、破壊的なスキーマ変更を自動検出する仕組みを整備しました。イベントのシリアライズ形式にはJSONを採用しています。 また、protovalidateを用いて、形式・文字数・値の制約などのバリデーションをスキーマとともに管理し、サービスごとに検証ロジックが分散・乖離することを抑制しました。送受信には社内SDKを用意し、利用側がイベント連携の内部実装を都度作り込まずに済む開発フローを整備しました。 ### 3. 誤送信・不正イベント・重複発行への対策 サービスと環境ごとに異なる非対称鍵を用いたJWT署名・検証を導入し、送信元のなりすましや開発環境から本番環境への誤送信を拒否する構成としました。署名とスキーマの検証を通過したイベントのみを配信対象にしています。 加えて、Amazon DynamoDBに送信元とイベントIDの組み合わせを保持し、同一イベントの再投入を拒否することで、重複発行に起因する障害の抑制を図りました。この重複抑制をExactly-once保証とは区別し、Exactly-onceは保証対象としない設計を選択しました。保証を強めることで増える実装・運用の複雑さと、求められる信頼性のバランスを重視しています。 ## 導入・運用への取り組み 新規プロダクトFitFitsとhacomonoをつなぐ基盤として、施設情報、予約枠情報、店舗スタッフ情報、プログラム情報などの非同期データ連携から段階的に導入しました。既存の予約処理やジョブ基盤を一括で置き換えるのではなく、非同期化に適した処理から適用範囲を広げる方針を採りました。 導入にあたっては、新規プロダクト開発チームとイベント契約・導入手順・運用ルールを調整し、オンボーディングや問い合わせ対応を推進しました。あわせて、SLI/SLOの定義・計測と、Datadogのダッシュボード・アラートによる監視を整備し、実装だけでなく継続して運用できる状態まで取り組みました。 ## 成果・発揮した価値 hacomonoと新規プロダクトを疎結合に接続する共通基盤を構築し、実際のプロダクト間データ連携に導入しました。各サービスが個別に実装・管理する必要のある連携処理を、スキーマ、検証機構、SDKを通じて共通化し、開発者が共通の契約に基づいて機能を追加できる基盤を整備しました。 分散システムにおける信頼性と運用コストのトレードオフを具体的な設計に落とし込み、技術実装とチーム横断の導入・運用をつなぐ役割を担いました。設計思想と段階的な導入プロセスは、Platform Engineering Kaigi 2025で「疎結合でスキーマ駆動開発を実現するイベントバスの設計」として発表しました。 https://speakerdeck.com/hacomono/building-an-event-bus-for-schema-driven-development-in-a-loosely-coupled-architecture https://www.cnia.io/pek2025/sessions/e11d6f4d-eccf-47c5-95e9-f2664f5ab0c4/ https://techblog.hacomono.jp/entry/2026/04/07/110000

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

プロジェクトカテゴリ
担当工程
経験した職種・役割
あなたが実際に使っていた技術
このプロジェクト詳細は公開されていません

マネージメント能力

アピール項目


アウトプット

GitHub アカウント
あり
Qiita アカウント
あり
Zenn アカウント
あり
Speaker Deck アカウント
あり
SlideShare アカウント
あり
特にアピールしたいアウトプット
あり

今後、身につけなければいけないと思っている技術は何ですか?

# 発信力とテクニカルライティング 私は分散システムにおいてある程度の知識を有している自信と実績があります。 しかし、文章で発信することが得意ではありません。 この情報社会において、情報をもっているだけでは認知されず、今後はより発信が重要となっていくと考えています。 その克服の一環として、技術書典では「Go 言語で作って理解する Raft ベース強整合性 Redis Cluster」という本を書いていたりしますが、より様々なな形で発信とテクニカルライティングスキルを向上させていきたいと考えています。

あなたが一番パフォーマンスを出せるのはどんな環境ですか?

# 裁量の範囲が明確化されている環境 私は自身にそれを決定していいか不明な環境ではパフォーマンスが出せません。 自身の会社のような明確に裁量があり、それが明確である環境においてパフォーマンスを発揮します。 裁量の大小も大事ですが、裁量の範囲が明確であることが大事だと考えています。 それは、仮に裁量を超える範囲の判断が必要となった場合は、適切なフローを取ることができるためです。 # 中長期的なビジョンやゴールを目的とした業務 これは裁量の明確さとも関連しますが、業務において通常取り得る選択肢は無数にあります。 その中で、ビジョンや中長期的な目標が明確であるとその確度は高いものとなり結果として高いパフォーマンスを発揮できます。 私はそのような背景情報があるなかで業務を行うことが最もパフォーマンスを発揮します。

生成AIの活用状況

日常的な情報収集・業務活用
ChatGPTやGeminiなどのチャットツールを、情報収集、ドキュメント作成、翻訳に日常的に活用
業務でコード補完系の生成AIを活用
GitHub Copilot等のコーディング支援ツール
業務でコード生成、コーディングエージェント系の生成AIを利用
コードレビュー、テストコード生成、デバッグに生成AIを活用
サービス・プロダクトへの応用
既存のサービスやプロダクトに生成AI(API利用など)を組み込み、LangChainやLlamaIndexなどのフレームワークを使った開発経験
生成AIをコアとした開発
生成AIを主要技術としたサービス・プロダクト・機能の企画や、RAGなどの高度な手法を用いた開発経験

キャラクター

直近で一番やりたいこと
技術を極めたい
好きなスタイル
一人で黙々
どちらかといえば一人で黙々
どちらともいえない
どちらかといえばみんなでワイワイ
みんなでワイワイ
好きな規模
小さい会社
どちらかといえば小さい会社
どちらともいえない
どちらかといえば大きい会社
大きい会社
水とプログラミングどっちが大事?
自信を持って人より秀でていると言える点
分析力 / 問題解決力 / 交渉力
スキルのタイプ
ゼネラリスト
どちらかといえばゼネラリスト
どちらともいえない
どちらかといえばスペシャリスト
スペシャリスト
得意なフェーズ
0 → 1
どちらかといえば0 → 1
どちらともいえない
どちらかといえば10 → 100
10 → 100
会社を選ぶ一番の基準
風通しの良さや意思決定ライン
やりたくない分野
未入力です
その他の特徴
使用言語にはこだわらない / レガシーな環境を改善できる / 新しい技術はとりあえず試す / 3年以内には海外で働きたい / 勉強会でLTをよくする / 趣味は仕事 / 起業/創業期のベンチャーにいた / OSSのコミッターである
その他のやりたいこと・やりたくないこと
未入力です

やりたい事

手を動かして設計してコードを書きたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
価値あるプロダクトを作り成長させたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
学び続けて技術力でプロダクトに貢献したい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
意義があることや社会に貢献できる仕事がしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
人や計画の調整・マネジメントをしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
レガシーなシステムの保守・運用・改善をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
企画や仕様を考えるところから関わりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
業務効率を改善して一緒に働く人のためになりたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
全社横断的な共通基盤作りや強化をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい
組織や文化を作る・成長させる仕事をしたい
絶対やりたくない
あまりやりたくない
別に普通
やりたい
絶対やりたい

基本プロフィール

年齢
今年で30代中盤
好きなテキストエディタ
Goland
希望勤務地
東京都 / リモート勤務
集まる必要性がない場合は基本リモートが許可される環境が必要
希望年収
1200万円
ご意見箱

要望、不具合報告、使いづらい点や感想など、お気軽にお寄せください。
いただいたご意見は、今後のサービス向上に活用させていただきます。

なお、このフォームは受付専用のため、返信を行っておりません。
返信を希望する場合はお問い合わせよりご連絡ください。

  • {{error}}
転職ドラフトを友人や同僚に薦める可能性はどのくらいありますか?