日本で Software Engineer として活動しております。
ある新聞社で Web におけるコンテンツ配信における、サービスの信頼性や読み込み速度といった観点での最適化によるユーザー体験の向上に従事しています。また合わせてチーム内における各種アプリケーションインフラや開発のためのツーリングといった開発インフラといった複雑なドメインにおける、技術的な課題を解消する Complicated Subsystem Engineering 的な活動や他のチームにおける Web 開発で技術選定やアプリケーション設計、メンバーのトレーニングといった面でサポートを行う Enabling Engineering といった活動に注力しています。
技術ドメインとしてはハイパフォーマンスな BFF やフロントエンドを実現するためのキャッシュ戦略、アプリケーションを超えインフラなどまで踏まえたサービス設計や、フロントエンド面での複雑なツーリングをアプリケーションの要件やチームの文化に応じて設計、導入することを生業としています。
また OSS 活動も行っており、個人のプロジェクトだとECMAScript におけるモジュールの副作用を発見するツール (Treeche) の開発や自作ブラウザの作成を行っています。pnpm のメンバーでもあり、タスクランナー周りの開発を主に行っていました。
ソフトウェア開発にまつわるお仕事に関するメッセージは大歓迎です!
~ Present
Node.jsTypeScriptNext.jsGraphQLNest.jstailwind.css
Ubie のプロダクトのデータ基盤となっていたアプリケーションの移行プロジェクトに携わる。Kotlin ベースのものを Node.js ベースのものに移し替えるプロジェクトであったが、移行作業だけでなくそのアプリケーションのクライアント側での migration script や返却する値の等価性を検証する script の開発など、開発生産性の面でも支援を行う。
また異なるリポジトリで管理されていたフロントエンドアプリケーションについてリポジトリ統合の支援も行った。異なる CSS ライブラリでそれぞれ開発されていたが、自動マイグレーションツールの作成といった観点からも貢献を行う。
~
FastlyswclinariaReactNext.jsTerraformGolangpnpmturborepo
プロダクトエンジニアとして、日経電子版の周辺プロダクトの Web 開発に携わる。フロントエンド、BFF 層の開発を行いつつ、事業ドメインに沿ったコードベース上の制約を機械的に縛れる仕組みの導入やコンポーネントカタログのビルド速度の改善など技術的な基盤の改善の面でも貢献する。
その後は Platform Engineer として、日経電子版 Web の技術基盤の開発、改善によるプロダクト開発における技術上の課題解決や周辺 Web プロダクト開発の Enabling に携わる。
などなどに携わる.
~
Nuxt.jsVueESLintpnpm
pnpm ベースのモノレポ構成の中で一部残存していた yarn ベースの workspace のモノレポ統合や, ESLint FlatConfig 化対応の支援を行う.
~
TypeScriptRollupPlaywrightGitHub ActionsCloudFlare Workers
サードパーティスクリプトのオンデマンドビルド基盤のPoC(概念実証)を実施しました。Plaidを通じて配信されるこれらのスクリプトの内容は、顧客設定に基づいて変化します。以前は顧客設定が変更されるたびにビルドされていましたが、エッジコンピューティングを活用してオンデマンドビルドを実現し、CDNにキャッシュする方式を導入しました。このアプローチにより、顧客設定の迅速な反映、システムの簡素化、そして高速なロード時間を実現しました。WebアプリケーションのバンドラーやコンパイラをCloudflare Workers上で実行し、CDN環境内での低メモリ消費と高速化を最適化しました。
また、ブラウザ上でのQAテスト基盤の確立をリードしました。サードパーティスクリプトの複雑なビルドシステムにより、機能の包括的なテストや実際の環境でのテストが困難でした。顧客のビジネスに直接影響を与えるため、高いSLOが要求され、テストの難しさと失敗時の重大な影響から「リリース恐怖症」が生じていました。これを克服するため、堅牢なテスト基盤を構築しました。まず、複雑なビルドシステムを簡素化し、次に、テストシナリオ内で顧客設定をJSONとして定義できるフレームワークを開発しました。これにより、テスト中にスクリプトをビルドし、Playwrightを使用してブラウザで直接検証できるようになり、実際の環境で重要な機能の継続的かつ自動化されたテストが可能となり、アプリケーションの安定性が向上しました。
さらに、QAテスト基盤の構築にも貢献しました。Fastly CDNレイヤー内のVCLを活用し、Cookieベースの制御により、サードパーティスクリプトを実装している顧客の実際のホームページ上で直接開発環境にリダイレクトする仕組みを開発しました。これにより、実際の環境でのQAテストが可能となり、特定の環境や使用パターンでのみ発生する問題の特定と解決が容易になりました。これらの取り組みにより、アプリケーションの信頼性が大幅に向上しました。
最後に、デプロイフローを自動化しました。ビルドプロセスの複雑さから、デプロイフローも同様に複雑で、サービスを更新するにはすべてのコンポーネントをデプロイする必要がありました。さらに、デプロイターゲットが異なるリポジトリで管理されていたため、複雑なクロスリポジトリの変更が必要で、運用コストが高くなっていました。これらのタスクが完全に自動化可能であることを認識し、CI/CD駆動の自動化を実装しました。これにより、約10分かかっていた手動リリースプロセスがワンクリック操作に変わり、現場の運用が大幅に改善されました。
~
ReactTypeScriptstyled-componentsSCSSNext.jsFastly Compute
hack.nikkei.comの技術基盤刷新を主導しました。古いインフラはDXが劣化しており、技術ブログ執筆に影響し、パフォーマンス問題でUXも悪化していました。Next.jsベースの基盤に再構築し、執筆体験とページ読み込み速度を大幅に改善しました。この取り組みによりアドベントカレンダーや発表資料を直接hack.nikkeiで公開できるようになり、技術ブランドを強化しました。
また、日経電子版のニュース動画生成機能の開発も主導しました。バックエンドから送られる順序、テキスト、背景、アニメーションを指定したJSONデータに基づいて、豊富なCSSアニメーションを使ってニュース動画をレンダリングするフロントエンドプラットフォームを構築しました。複雑なアニメーションを独立して宣言的に設定できる基盤を設計し、誰でも簡単に新しいアニメーションを開発できるようにしました。さらに、静的リンターとコンポーネントカタログを確立してリグレッション検出を促進しました。
これらのアニメーションの高品質と拡張性、およびほぼすべての記事でアニメーションコンテンツを生成する能力は、社内外で大きな賞賛を受けました。この成功により最終的に羽田空港のサイネージで動画が配信されることになりました。
最後に、Fastly Computeの技術検証を実施しました。User AgentとIP情報を活用して匿名ユーザーのエッジコンピューティングベースのレコメンデーションを実現するため、Fastly Computeプラットフォームでtensorflow.jsを実行する実現可能性を探りました。
~
TypeScriptRollupGitHub Actions
ユーザーエクスペリエンスの大幅な向上につながったサードパーティスクリプトの最適化に注力しました。プラグインシステムのアーキテクチャは本来小さなファイルサイズをサポートしていましたが、追加のチューニングを実装してファイルサイズを5%以上削減しました。具体的には:
将来の肥大化を防ぐため、CI/CDパイプラインにファイルサイズ変更を開発者に通知するメカニズムも導入し、チーム内でファイルサイズ意識の文化を醸成しました。
~
ReactTypeScriptstyled-components
社内フロントエンドアプリケーションのUIを刷新しました。複雑な機能により「パワーユーザー向け」のUIになっていることを認識し、ユーザーフィードバックを収集して課題を特定しました。解決策として、UIをシンプル化しながら、より親しみやすく改善されたユーザー体験のためにUNIXライクなディレクトリ構造を導入しました。また、Webとフロントエンドのトレンドを調査し、社内製品への潜在的な影響について報告を行いました。
~
lit-htmlTypeScriptParcel
他のインターン生とチームを組み、kintoneの拡張機能を開発しました。プロジェクトの計画から技術選定までをリードし、kintone拡張機能の非機能要件を考慮しながら、lit-htmlなどのバンドルサイズが最小限の技術を選択しました。
~
ReactTypeScriptstyled-components
フロントエンドエンジニアとして、Wantedlyの画面開発を担当し、インクリメンタルサーチなどの複雑なフロントエンド実装に注力しました。デザイナーと密接に協力し、適切なコンポーネント設計を通じて、豊かなユーザー体験と堅牢な開発者体験を実現しました。
~
ReactTypeScriptGolang
ハッカソン形式のインターンシップで、他のインターン生チームと共にSNSのようなウェブアプリケーションを開発しました。フロントエンドエンジニアとして、ユーザー体験のデザインとフロントエンドアプリケーションの開発をリードしました。また、バックエンド開発者と協力して RESTful な API 設計を行い、デザイン部門で賞を受賞しました。
~
HRウェブアプリケーションの開発を担当しました。CodeIgniterとjQueryを使用してフロントエンドを含む複数の機能を実装しました。
~
東京大学工学部システム創成学科で学士号を取得。コンピュータサイエンスとシステム工学を中心に学習し、ソフトウェア開発やシステム設計の基礎を習得した。
~
西大和学園高等学校で3年間学習し、大学受験に備える。