bootjp

分散システムを専門とするプリンシパルエンジニア・在野研究者です。事業ニーズと運用制約を設計に落とし込み、自ら手を動かして実装・導入まで担います。強みは次の 2 点にあります。

1. 分散システム・分散データベース・合意アルゴリズムに関する深い知識

Raft をはじめとする分散合意アルゴリズムを、論文の読解から Go による自作実装まで一貫して扱います。Raft ベースの Redis 互換 KVS や、Lucene と MicroRaft を組み合わせた Elasticsearch 互換の分散検索エンジンを設計・実装してきました。Spanner の TrueTime、TiDB の Timestamp Oracle、Aurora / Aurora DSQL に代表される「Log is the Database」やコンピュート・ストレージ分離といったアーキテクチャを、スケーラビリティと一貫性のトレードオフとして整理し、DB Tech Showcase やクラウドネイティブ関連のカンファレンスで継続的に発表しています。特定の製品に閉じない知識のため、決済や予約のように不整合が許されない領域でのデータストア選定と設計判断にそのまま接続できます。

2. 低レイテンシーで低コストな大規模コンテンツ配信基盤の設計・実装・運用

広告配信、数千万ユーザー規模のキャリア向け通知基盤、CX プラットフォームの大量配信基盤と、低遅延・高スループット・スパイク耐性が求められる配信システムを一貫して担当してきました。速いだけでなく安く回り続けることを重視しており、クライアント中心一貫性モデルによってノード間の同期コストを削減する低遅延分散 KVS の提案と論文化、DNS のキャッシュヒット率と応答速度を改善する手法の提案(情報処理学会 学生奨励賞)、SLO の再定義とプリエンプティブルインスタンスの安全な運用による配信基盤のコスト削減などに取り組んできました。キャッシュ、名前解決、データの配置といったレイヤーごとに、遅延とコストの両方を下げる余地を見つけて実装します。個人でも VRChat 向けの画像配信 CDN(resize.gg)を設計・運用しています。

現在は hacomono のプリンシパルエンジニアとして、マルチプロダクト戦略に向けた部分的なマイクロサービス化と、疎結合なスキーマ駆動イベントバスの設計・実装を主導しています。理論(論文研究・自作実装)と実践(大規模商用開発)を往復しながら、堅牢でスケーラブルなシステム基盤を構築します。

個人では、etcd/raft と Pebble を用いた実験的な分散KVS・FUSEファイルシステム elastickv を開発し、ホームラボで実運用しています。研究では、LSM-tree のブロックキャッシュ最適化と、プロセスストールやカーネルのハングアップを考慮したリーダーリースの安全性に取り組んでいます。

Skills

分散システム / 分散データベース / 合意アルゴリズム
  • Raft / Multi-Raft、MicroRaft、etcd/raft、HashiCorp Raft(実装・検証)
  • 分散KVS / 分散検索基盤 / FUSEファイルシステムの設計・実装
  • NewSQL / 分散データベースのアーキテクチャ(Spanner、TiDB、CockroachDB、Aurora / Aurora DSQL)
  • Lucene、Pebble(LSM-tree)
  • 互換APIの実装:Elasticsearch主要API(業務)、Redis / DynamoDB / S3主要API(個人開発)
  • イベント駆動アーキテクチャ(イベントバス / Pub-Sub)
データベース / キャッシュ / データ処理
  • Redis(Streams / Pub/Sub)、MySQL、MariaDB、MongoDB、Memcached
  • Bigtable、Spanner、DynamoDB
  • Amazon MemoryDBの運用知見
  • Apache Spark、Hadoop(HDFS / Hive / MapReduce)、BigQuery
  • ログ集計 / ETL / データ移行、DBのインデックス未使用クエリ検知
大規模配信 / キャッシュ / DNS
  • 低遅延コンテンツ配信基盤の設計・実装・運用(スループット / テールレイテンシー / スパイク耐性)
  • 分散キャッシュ / DNSキャッシュ・名前解決の最適化
  • CDN・エッジ配信:CloudFront、Akamai / DNS:Route 53
  • 個人開発:CoreDNSプラグイン、Cloudflare DNSを用いたGSLB、画像配信CDN
  • パーソナライズ配信向けのデータ配置・データティアリング
言語 / アプリケーション
  • Go、Java、Kotlin(サーバーサイド)、PHP、Lua、C
  • JavaScript / TypeScript、SQL / 過去の開発経験:Ruby、Perl
  • 実行環境・フレームワーク:Node.js、Laravel、Netty、Jetty、Ruby on Rails
  • API設計:REST / gRPC、JWT
  • スキーマ駆動開発:Protocol Buffers、Buf、protovalidate、互換性チェック / 共通バリデーション / SDK整備
  • リアルタイムネットワークシステム / メタバースの同期通信・空間提供バックエンド
クラウド / インフラストラクチャ
  • AWS:EC2、ECS、Lambda、API Gateway、SQS、ALB
  • Google Cloud:Compute Engine、Cloud Storage、Pub/Sub
  • Linux、Docker、Kubernetes、コンテナ移行
  • NGINX、Apache、リバースプロキシ
  • マルチAZ構成 / 耐障害性設計、Vertical SaaS向け基盤設計
  • SLO再定義・スポット / プリエンプティブルインスタンス活用によるコスト最適化
可観測性 / 開発運用 / 信頼性
  • OpenTelemetry、Datadog、Sentry、Fluentd
  • 監視・ロギング・トレーシング設計、SLI/SLO・エラーバジェットに基づく運用
  • GitHub Actions、Jenkins、CI/CDパイプライン構築
  • 負荷試験、停止通知時の安全なデータフラッシュ、障害時のデータ欠損検知
研究・設計検討で扱う専門領域
  • コンピュート・ストレージ分離 /「Log is the Database」アーキテクチャ
  • 一貫性モデル(線形化可能性 / クライアント中心一貫性)、リーダーリースの安全性
  • 分散システムの時刻とグローバル順序づけ(TrueTime / HLC / Timestamp Oracle)
  • キャッシュ設計・アルゴリズム(AdaptSize等)、LSM-treeのブロックキャッシュ最適化
研究 / 技術発信
  • 分散システム・データベース論文の調査・要約
  • 技術ブログ・カンファレンス登壇資料の執筆
  • VRChat上での技術コミュニティ運営(分散システム集会)
  • 日本語・英語での技術ドキュメンテーション

Creations

bootjpが作成したプロダクトのコレクションです。

分散システム / 合意アルゴリズム

  • create-raft-redis — GoとHashiCorp Raftによる教材用Redis互換KVS。「Goで作って理解するRaftベースRedis互換KVS」のコード。elastickvとは別の実装
  • go-kvlib — 上記教材向けに作成したRaft対応KVS用ライブラリ
  • elastickv — Go製の実験的な分散KVS・FUSEファイルシステム。etcd/raftによる複製、Pebbleによる永続化、複数Raftグループのシャードルーティングと、Redis・DynamoDB・S3の主要APIとの互換機能を実装。OSSとして開発し、ホームラボで実運用中

低レイテンシー・低コストな配信基盤

  • resize.gg — VRChat向けの画像配信CDN。リサイズを含む画像配信を設計・運用
  • dcache — CoreDNSプラグインによる非同期分散キャッシュ。Redis Pub/Subで名前解決結果をノード間共有し、インメモリのまま高クエリ環境でのレイテンシーを改善(DNSキャッシュ改善手法の論文の実装・評価)
  • cloudflare-gslb — Cloudflare DNSレコードに対するヘルスチェックと自動フェイルオーバーを行うGSLB
  • simpleDNS — DNSフォワーダ / キャッシュサーバ

ツール・ライブラリ

著作(技術同人誌)

  • Goで作って理解する Raftベース Redis互換KVS — 技術書典16。Redisを題材に、Raft合意アルゴリズムを用いた強整合性KVSの構築を学ぶハンズオン書籍。単なる実装解説に留まらず、分散システムにおいてなぜRaftが必要なのか、AWS等の実際の故障事例と併せて「止まらない・壊れない」システムの設計思想を解説。分散KVSを一から組み上げて動かすことで、分散合意の実践的な理解を目指す一冊。

VRChat関連ツール / 終了したサービス

Publications

国内査読なし論文

  • 上田義明, 碓井利宣, パーソナライズされたコンテンツ配信のための低遅延分散 KVS の構築
    • 第 82 回全国大会講演論文集, 2020-02-20, ページ 87 - 88
    • PDF / 書誌
  • 上田義明, 分散システムのための DNS キャッシュヒット率及び応答速度の改善手法の提案
    • 第 84 回全国大会講演論文集, 2022-03-05, プレプリント, 学生奨励賞

技術同人誌

  • Goで作って理解する Raftベース Redis互換KVS
    • 技術書典16(技術同人誌 / 全79ページ, ver 1.2)
    • 本書の狙い
      • Redis 互換 KVS を実装しながら、分散システム・一貫性モデル・Raft の要点を手を動かして学ぶ入門書。
    • 構成
      • 前半で「分散システムの基礎」「Redis/Redis Cluster の特性と限界」「一貫性モデル」「Raft の主要概念(リーダー選出・ログ複製・安全性)」を整理。
      • 後半で Redis 互換 KVS 実装を通じて、理論と実装を接続。
    • ハンズオン実装(Go)
      • hashicorp/raft を採用し、データストア、Snapshot、StateMachine (Apply/Snapshot/Restore) を実装。
      • RESP は redcon を使って実装し、GET/SET/DEL をサポート。
      • フォロワー受信時は MOVED でリーダーへリダイレクトし、3ノード構成で動作確認。
    • 実務との接続
      • 強整合性と可用性が求められる実例として、PayPay の TiDB 採用事例にも触れ、設計判断の背景を理解できる構成。
    • TechBookFest 商品ページ / BOOTH

登壇・発表 (Presentations)

Experience

プリンシパルエンジニア(分散システム)

株式会社hacomono

ウェルネス業界向け垂直統合型SaaSにおいて、事業ニーズと運用制約を踏まえた基盤刷新を担当。マルチプロダクト化に向けたロードマップ提案から設計・実装・導入・運用開始までを推進。

  • マルチプロダクト戦略に向け、既存基盤を前提とした部分的なマイクロサービス化の計画策定と設計
  • メインプロダクトと新規プロダクトを疎結合に接続する、スキーマ駆動イベントバスの設計・実装・本番導入 (登壇資料)
    • 新規事業 FitFits の店舗情報・予約情報連携に採用。(導入事例)
    • Protocol Buffersによる信頼できるスキーマ定義と共通バリデーションロジックの導入
    • CIによる互換性チェック(破壊的変更の自動検知)と社内向けSDKの整備による開発効率向上
    • OpenTelemetryによるトレーシング・ロギングとSLI/SLOの計測、Datadogダッシュボード/アラートを整備し、イベント配信時間・応答速度・ダウンタイムを監視
    • 新規プロダクト開発チームと連携し、イベント契約・導入フロー・運用ルールを整備
    • チーム横断での基盤導入に向けて、オンボーディング・運用フロー整備・問い合わせ対応をリード
  • SaaSの突発トラフィックに対応するためのスケーラブルなアーキテクチャ刷新計画の策定と設計
  • 運用改善:インデックス未使用クエリの自動検知をCIに組み込み、継続的な性能改善を支援
  • 分散システム設計指針の策定と社内外への技術啓蒙
    • メッセージキューの信頼性向上: Workerクラッシュ時のデータ消失を防ぐため、可視性タイムアウト(Visibility Timeout)の導入や、Luaスクリプト/Redis Stream等を用いたアトミック処理の標準化を推進 (解説記事)
    • クラウドネイティブDB選定: 「Log is the Database」アーキテクチャやコンピュート・ストレージ分離モデルに基づき、スケーリング特性と整合性のトレードオフを評価 (解説記事)
    • 分散システムの時刻と整合性: Spanner(TrueTime)やTiDB(Timestamp Oracle)を例に、ノード間の時刻差異が一貫性に与える影響と解決策を体系化・解説 (解説記事)
  • プリンシパルエンジニアとして、分散システム設計の相談役・レビュー担当として組織横断で支援
    • 複数チーム/プロジェクトの設計ミーティングや定例に継続的に参加し、社内アーキテクチャの全体像と課題を把握
    • リーダー職・VP/役員との1on1を通じて優先課題を整理し、チーム横断の課題解決を推進
    • 必要な場面で相談パスをつなぎ、意思決定と実行のボトルネック解消を支援

2024年9月 - 現在

代表 / 分散システムエンジニア

btj.systems合同会社

分散検索エンジンおよびメタバース基盤のバックエンド開発を担当。

  • Elasticsearchのライセンス変更を背景に、LuceneとMicroRaftを組み合わせた分散検索基盤を設計・実装。シャーディングとElasticsearch主要APIとの互換性を備え、検証・試作を経て本番運用可能なシステムとして納品。
  • オンプレミスのハードウェア制約を考慮し、書き込み成功応答だけに依存せず、データの欠損を検知する仕組みを実装。
  • メタバースプラットフォームにおけるネットワーク同期通信および空間提供に関わるバックエンドサービスを設計・開発。

2023年1月 - 2025年4月

ソフトウェアエンジニア(分散システム / 配信基盤)

株式会社プレイド(PLAID)

CX プラットフォームを支える大量配信・データ処理基盤の開発を担当。低レイテンシーと低コストの両立が主要テーマ。

  • 大量トラフィックを扱う配信システムのリプレースと性能改善
  • 停止シグナル受信時にデータを安全にフラッシュする仕組みを導入し、プリエンプティブルインスタンスの利用を拡大。Bigtable・Spanner・Compute Engineのリソース最適化と併せ、大幅なコスト削減を実現。SLOの再定義も担当
  • パブリッククラウド等の技術論文を調査し、社内の開発チームへ知見をフィードバックする技術アドバイザー的役割を兼務
  • 分散データストアおよびイベント駆動アーキテクチャに関する技術的な相談窓口として、複数チームを横断して支援
  • 運用を意識した疎結合アーキテクチャの設計指針を整理し、ドキュメントとして共有

2021年10月 - 2023年1月

ソフトウェアエンジニア(検索基盤 / 大規模データ配信 / 通知基盤)

Supership株式会社

スマートフォンキャリア向けの大規模データ配信、通知管理基盤、および検索基盤の開発・運用を担当。低遅延と高スループットが同時に要求される環境で、配信基盤の設計と運用に従事。

  • 検索エンジンおよび検索連動型広告システムの開発、およびSparkを用いた大規模集計基盤の構築・運用
  • インターバルツリーを用い、GPS座標が行政区域ポリゴンに含まれるかを高速判定するエンジンの設計・開発
  • 数千万ユーザー規模のキャリア向け通知管理システムのバックエンド開発と安定稼働の実現
  • 高トラフィック環境下での大量データ配信におけるパフォーマンス最適化とインフラ設計
  • ログ転送基盤のDocker移行とスポットインスタンスの活用で大幅なコスト削減を実現し、表彰。(移行事例)
  • Fluentdに起動時の転送先接続確認機能を追加し、PR #2184が本体に採用。

2018年3月 - 2021年9月

ソフトウェアエンジニア(広告配信 / Webサービス基盤)

ソフトウェア開発企業(社名非公開)

広告配信・アクセス解析・Webサービス基盤の開発を担当。

  • ソーシャルボタン配信サービスをVMからDockerへ移行。Javaのキャッシュとヒープメモリ割り当てを調整し、コンテナのOOM Killを解消。
  • NGINX・Lua・Redisを用いた社内アドサーバーを構築。複数SSPへの配信切り替え、広告非表示の検知、Fluentd・HDFSによるログ集計を実装。
  • アクセスログ分析と市場調査からアクセスランキングサービスを企画・開発し、不正リファラーへの対策を実施。
  • 売上・ユーザー数・PV/UU等を自動集計・可視化する社内KPI測定の仕組みを構築。

2014年12月 - 2018年1月

代表 / 開発者

ベストネットワーク / 株式会社BestNetWork

2005年8月に個人事業として創業し、2011年5月に法人化。

  • 広告収益を基に無料レンタルサーバーを提供。企画・設計・開発からサーバー運用、顧客サポートまでを担当。

2005年8月 - 2015年4月

主宰 / オーガナイザー

分散システム集会(VRChat上の技術コミュニティ)

VRChat上で分散システムに特化した勉強会コミュニティを運営。

  • Aurora Serverless v2, MemoryDB, AdaptSize など最新の分散システム・データベース論文の輪読・解説を継続
  • 初学者向け〜実務者向けまで、レベル差を吸収するための資料構成と進行設計を担当
  • コミュニティ運営を通じて、業界全体の分散システムリテラシー向上に貢献

2018年 - 現在

在野研究者(分散システム・データベース・分散KVS・分散ストレージ)

在野研究

分散ストレージ・データベースの性能改善と、障害時の安全性を研究しています。

  • LSM-treeのブロックキャッシュ最適化:国際会議投稿後、再投稿中。
  • リーダーリースの安全性:プロセスストールやカーネルのハングアップを考慮した仕組みを研究し、論文を執筆中。
  • Raft を用いた分散ストレージの実装・検証を通じて、強整合性システムの挙動とトレードオフを整理
  • パーソナライズド配信向けの低遅延分散KVSに関する論文執筆・発表。クライアント中心一貫性モデルに着目し、ノード間のデータ同期にかかる帯域コストを削減する構築手法を提案 (論文)
  • 分散システム向けにDNSのキャッシュヒット率と応答速度を改善する手法を提案し、情報処理学会 全国大会にて学生奨励賞を受賞。CoreDNSプラグイン (dcache) として実装・評価
  • 分散システム関連論文の調査と実装を通じた技術検証

2018年 - 現在

個人開発者

個人開発・個人活動

技術的興味に基づくプロダクト開発およびツール作成。

  • 論文インプットを効率化するための自作システム(PDF/HTML等のMarkdown変換、翻訳、VOICEVOXによる音声生成パイプライン)の構築・運用
  • VRChat 関連のツール群(resize.gg, 自動再入室ツール等)の開発・運用
  • 日常の課題を解決するための技術的な試行錯誤とアウトプット
  • 分散KVS・FUSEファイルシステムelastickvをOSSとして開発し、ホームラボで実運用。

2010年 - 現在
サードパーティー一覧