業務経験 === 現職では、電子帳簿保存法に対応したSaaSプロダクトの開発にプロダクトエンジニアとして携わっています。フロントエンド開発を強みとしながら、近年はバックエンド、インフラ領域にも責任範囲を広げ、プロダクト全体のパフォーマンスや信頼性の向上に貢献してきました。 キャリアの基盤であるフロントエンド開発では、大規模で複雑なSaaSのリプレイスプロジェクトを主導しました。Next.js/React/TypeScriptといったモダンな技術スタックへの移行を推進し、開発者体験と長期的な保守性を大幅に向上させました。また、デザイナーと密に連携し、デザインシステムとコンポーネントライブラリを構築。UIの一貫性を担保しつつ、ビジュアルリグレッションテストの自動化によって、チーム全体の開発効率を高めました。 最近では、バックエンドやインフラの課題解決にも注力しています。GoやRubyを利用するアプリーケーションにて、マイクロサービスのパフォーマンス改善に取り組み、ファイルダウンロード機能のアーキテクチャを見直し、Kubernetesマニュフェストの見直しを通じたリリースの改善に関わりました。Terraformを用いたIaCによるインフラ管理や、Datadogを用いたSLO/SLIの設計・監視といった、システムの信頼性を高める取り組みも担当しています。 プロジェクトリードとしては、公式言語を英語化した開発組織にて10名規模の多国籍チームでスクラムマスターの役割を担いました。アジャイル開発のプラクティスを導入・推進することで、チームの開発プロセスを改善し、生産性の向上を実現しました。 このように、フロントエンドの専門性を持ちながら、バックエンド、インフラまでを一貫して見通せる総合力を強みとしています。今後は、この幅広い技術的知見を活かし、ビジネス要件の実現と、プロダクトの長期的な成長に貢献できるアーキテクチャ設計・開発をリードしていきたいと考えています。 |期間|プロジェクト|使用技術|ポジション|取り組み|雇用形態| |---|---|---|---|---|---| |2023/5~現在|証憑ストレージサービス/関連マイクロサービス開発|Next.js/React/TypeScript/Go/Echo/Ruby on Rails|フロントエンド,バックエンド|デザインシステム導入/新規機能開発の要件定義/アーキテクチャ設計/機能開発・スクラムマスターとしてスクラム開発の推進/プロジェクトリード/採用活動|正社員| |2021/8~2023/5|クラウド会計サービス|Next.js/React/TypeScript/Ruby on Rail/GraphQL|フロントエンド|Railsアプリケーションのフロントエンド分離(Next.js/React)、新規機能開発の要件定義/設計/機能開発、プロジェクトチームリード・採用活動|正社員| |2021/3~2021/10|リーガル領域オンライン調停サービス開発|Nuxt.js/TypeScript/Kotlin/Ktor|フロントエンド|デザイナーと協力した設計、要件定義、開発|業務委託(副業)| |2020~2021|FinTech領域 toB サービス開発|Vue/TypeScript/Node.js/Express|フロントエンド/サーバーサイド|新規機能開発の要件定義/設計/機能開発・デザイン|正社員| |2019~2020|匿名型SNSサービス開発|Nuxt.js/Vue.js/TypeScript/Ruby on Rails/React Native|フロントエンド/サーバーサイド|新規機能開発の要件定義/設計/機能開発|正社員| |2019|リユース系サービス開発|React/Ruby on Rails|フロントエンド/サーバーサイド|アプリケーション保守・運用・新規機能開発の要件定義/設計/機能開発|正社員| ## 請求書を取り扱うマイクロサービスの保守運用・開発 #### ポジション: バックエンドエンジニア/プロジェクトマネージャー #### 期間: 2024年4月〜現在 ### Goマイクロサービスの信頼性・可観測性の向上と機能開発 Goで実装された請求書関連マイクロサービス群の保守運用と機能開発を担当しました。アーキテクチャはKafkaやSQSを利用したイベント駆動型を特徴としていましたが、メッセージ処理におけるエラーハンドリングの信頼性や、サービス全体の健全性を定量的に把握する点に課題がありました。 これらの課題に対し、まずシステムの信頼性を高めるため、メッセージ処理に失敗した際のデータ損失を防ぐKafkaのDLQを設計・実装。これにより障害発生時の原因調査とリカバリーを容易にし、システムの耐障害性を大幅に向上させました。並行して、新規機能開発のプロジェクトリードとして、要件定義から技術設計、他チームとの連携調整までを一貫して担当し、計画通りのリリースを牽-引しました。 さらに、サービスの可観測性を向上させるため、Datadogを用いてビジネス指標に直結するSLI/SLOを再定義し、監視ダッシュボードとアラート設定を最適化。また、属人化していた知識の解消を目的としてアーキテクチャ図の整備や**ADRの導入を推進**し、チーム全体の開発効率とメンテナンス性の向上に貢献しました。 ### 使用技術 | カテゴリ | 技術 | | :--- | :--- | | **サーバーサイド** | Go, Echo | | **メッセージング** | Kafka, AWS SQS | | **クラウド/IaC** | AWS (EKS, SQS), Kubernetes, Terraform | | **監視/エラー追跡** | Datadog, Rollbar | ## 電子帳簿保存法対応SaaS開発 ### ポジション: フロントエンド、バックエンド、スクラムマスター、プロジェクトマネージャー、一部チームマネージメント業務 ### 期間: 2023年5月〜現在 ## 複雑なドメインを扱うSaaSフロントエンド開発 15名程度の開発チームにて主にフロントエンドを主軸にしつつバックエンド、DevOps、インフラを含めたアプリケーション開発に関わりました。またスクラムを中心とした開発の推進に当たりスクラムマスターの役割、プロジェクト管理を経験しました。 サービスリリースしてから比較的新しいチームかつ、海外在住メンバーとのコミュニケーションを英語とした開発ということもあり開発手法の導入から定着までの取り組みといったチームの再構築といった部分から生産性の安定に向けた取り組みに関わりました。 電子帳簿保存法という複雑なドメインであり、プロダクトオーナーとのビジネス要求・仕様整理に関わり、エンジニアへ向けたタスクの整理を行い、ビジネス側と開発側の理解がずれないように気をつけながら開発をすすめました。 デザイナーとのコミュニケーションではデザインシステムのアプリケーションへの導入による開発の効率化、UI/UXの向上に向けた取り組みを行っています。 機能開発と並行したリファクタリング、速度を優先してきた既存アプリケーションの再設計、チームメンバーの生産性を高めるための開発フローの整備など未整備な部分を安定した環境に近づける取り組みを行いました。 |使用技術|| |---|---| |フロントエンド|Next.js, React, TypeScript| |サーバーサイド|Go, echo, Ruby, Ruby on Rails| |インフラ|ECS, AWS関連サービス| |DBMS|MySQL| ## ストレージサービス開発での既存アーキテクチャ変更プロジェクト ### ポジション: バックエンドエンジニア, プロジェクトマネージャー ### 期間: 2024年11月〜2025年4月 ### ファイルダウンロード機能のアーキテクチャ刷新によるパフォーマンス改善 従来、APIサーバーがリクエストに応じてファイルをBase64エンコードし、レスポンスとして返却する方式を採用していました。この方式では、サーバーへの高負荷によるレスポンス遅延や、システム全体のスケーラビリティの低下が課題となっていました。 この課題を解決するため、クライアントがオブジェクトストレージ(AWS S3)から直接ファイルをダウンロードする署名付きURL方式へのアーキテクチャ変更を、設計から実装、関係チームとの調整まで一貫してリードしました。APIサーバーの責務をファイルの実体を扱う処理から署名付きURLを発行する責務のみに縮小することで、サーバー負荷を抜本的に改善し、サービスのスケーラビリティを大幅に向上させました。 また、セキュリティを担保するため、署名付きURLの導入にあたっては既存アーキテクチャのレビューを実施しました。さらに、技術選定の経緯や設計に関する意思決定をADRとしてドキュメント化するプロセスを導入し、チーム内の合意形成を円滑に進め、プロジェクトの透明性を高めました。 #### 使用技術 | カテゴリ | 技術 | | :--- | :--- | | **サーバーサイド** | Ruby, Ruby on Rails | | **インフラ** | AWS (S3, CloudFront) | ## 会計領域SaaS開発 #### ポジション: フロントエンド #### 期間: 2021年8月〜2023年5月 ### 長期運用される会計サービス開発 フロントエンドチームに所属し、長期間運用される中小企業向け会計サービスのフロントエンド開発に関わっています。特にNext.js, React, Ruby on Railsにて運用されるアプリケーションのフロントエンドの継続的リファクタリングを行いながら、新規機能開発に取り組んでいます。 会計サービスという性質上、定期的な法令変更に合わせて改修が必要であり、既存の機能を理解しつつ利用者に使いやすいUI/UXをどのように実現していくか要件定義といった上流工程から開発に参加し、主体的に開発に関わっています。 既存の機能追加ではRailsで構築され、改修を重ね複雑化し、テストも十分でないフロントエンドをReact化しつつ各種テストの充実を行い品質を高める取り込みを行いました。 また、レガシーなRailsアプリケーションのフロントエンドリプレイスプロジェクトでは、RailsのフロントエンドをNext.jsへ漸進的に変更していく取り組みに参加しました。 |使用技術|| |---|---| |フロントエンド|React, Next.js, TypeScript, JavaScript| |サーバーサイド|Go, Ruby, Ruby on Rails| |インフラ|ECS, AWS関連サービス| |DBMS|MySQL| ## リーガル領域オンライン調停サービス #### ポジション: フロントエンド #### 期間: 2021年3月〜2021年10月 ### 新規サービス開発でのフロントエンド開発 6名程度のチームにてフロントエンド開発を業務委託として行っています。比較的新しいサービスのため新規開発が主でありビジネス側からの要望をもとに要件定義、仕様確定から実装までを行い、サービス方針を決めるビジネス側寄りの業務にも参加するなど単にエンジニアとして実装のみを行うのではない役割を担えるよう主体的に取り組みを行っています。より良い機能のUI、UX実現のためデザイナーと協力し自身もデザインの学習に努めながら開発を行っています。 |使用技術|| |---|---| |フロントエンド|Nuxt.js, TypeScript| |サーバーサイド|Kotlin, Ktor| |インフラ|ECS, AWS関連サービス| |DBMS|Postgresql| |デザインツール|Figma| ## FinTech領域 toB サービス開発 #### ポジション: フロントエンド #### 期間: 2020年6月〜2021年7月 ### 金融機関と連携した車両起動制御toBサービスのフロントエンド開発 6名程度のチームにて主にフロントエンドの新規機能開発、運用保守を主に行い、UIデザインまで担当。その他、ビジネス側からの要望の集約、ビジネス側、開発チーム間での調整等に関わっています。 組織改善に関心を持ち、業務効率化、働きやすい組織の実現に向けた取り組みにも関わっています。 |使用技術|| |---|---| |フロントエンド|Vue.js, Vuex, TypeScript, JavaScript| |サーバーサイド|Node.js, Express, TypeORM, TypeScript, JavaScript| |テスト|Jest, Puppeteer, Cypress| |インフラ|AWS, EKS, Code build, Lambda, Lambda Edge, CloudFront| |DBMS|MySQL| |デザインツール|Figma| ### 取り組んだ課題(技術) - Micro Frontend 導入に当たり設計の見直しと実装 - Atomic Designに基づくメンテナンス性の高いコンポーネント設計と既存設計のリファクタリング - CSSのリプレイスなどメンテナンス性を高めるマークアップ実装の定着とコーディング規約の設定 - Vue.js, TypeScriptを利用した大規模開発に耐える実装 - パフォーマンス向上を目指したAPIの導入、また改善の提案 - フロントエンドではほぼ導入されていなかったJestでのUnitテストと導入とCypress, puppeteer を利用したE2Eテスト導入 - マーケティングチームと協力したGoogle Analyticsを利用したコーポレイトサイト、LPのSEO改善の取り組み ### 取り組んだ課題(業務改善) - リモート勤務下における非同期コミュニケーションの円滑化と負債の解消の取り組み実現のためQiita Team導入とドキュメント文化の推進 - 技術負債への取り組みとして基本設計、要件管理の仕組みの導入 - 技術向上、負債への対処を目的としたペアプログラミングの積極導入 - 利用者要望の処理を見直すなかでスクラムでの開発からカンバン方式へ移行などよりよい開発体制の検討とツール導入 - 海外エンジニアチームとの定期コミュニケーションチャンネル確立と要望管理の仕組みの実現 - エンジニアチーム間での技術共有の土壌整備とコミュニケーションチャンネルの確立 - エンジニア採用にあたり手法改善の提案参加、働きやすい組織づくりへの取り組み ## 匿名型SNSサービス開発 #### ポジション: フロントエンド #### 期間: 2019年9月〜2020年5月 ### 大規模ユーザーを抱えるSNS連携型サービスにてフロントエンド、サーバーサイド開発 多くのユーザーを抱え比較的速いスピード求められる10名程度のチーム開発にて、フロント、サーバーサイドでの新規機能開発を担当 |使用技術|| |---|---| |フロントエンド|Vue.js, Nuxt.js, TypeScript, JavaScript| |テスト|Jest| |マーケティングツール|Google Analytics| ### UXを意識したフロントエンド開発 Vue.js, Vuex, Nuxt.js, TypeScriptのフロントエンドではいつ誰が開発に参加できるようになるように実装を心がけ、アトミックデザインの実践とStorybookでのコンポーネント管理、共通コンポーネントの整理、またVueコンポーネントのJavaScript実装部分のTypeScript化などに取り組みました。 ### 取り組んだ課題 - 決済機能の導入にあたり外部決済サービスを利用する際の外部APIの仕様を理解しての携帯会社経由の決済機能実装 - チャットサービスの改修にあたり時間制限等の実装にてフロント側でのみ実装を完結するため、外部ライブラリの仕組み、影響を理解しての実装 - Vue.jsライブラリー(Vue carusel)実装にての公式にアナウンスされておらず特定の条件で発生するバグに対しての対応を調べ処理 - 統一が行われていない過去の実装に対してアトミックデザインを意識したコンポーネント設計の導入、StoryBookでのコンポーネント管理を行い、属人的な設計、実装による負債を防ぐよう取り組みました - Vuexでの状態管理に際して、基本的な理解を行うため Fluxの概念から学習し、Vue.jsにて単方向データフローを意識した開発の実践 - Nuxt.js での新機能開発にてServer-side-rendering特有の実装テクニックを随時対応しつつ実装 - TypeScriptでのVue.js/Nuxt.js開発にて、Vue.jsとTypeScriptの相性を理解するなどTypeScript運用の知見を獲得しつつの実装 - Google Analytics, tag, adsense周辺の実装、不具合の対応のなかで運用知見の獲得 ### 今後の課題 - フロントエンドの設計など個人の考え方がばらつきがあると思われる部分はコーディング規約を導入するなど考え方の事前に統一を行いたい。Vue.js等にてアトミックデザインの導入のレイヤーのレベル、VuexでのStateの管理をどこまでやるのか個人間の差異がでており決めれるなら決めたかった。 ## 大規模ユーザーを抱えるSNS連携型サービスにてフロントエンド、サーバーサイド開発 ### ポジション: バックエンド ### 期間: 2019年9月〜2020年6月 多くのユーザーを抱え比較的速いスピード求められる10名程度のチーム開発にて、フロント、サーバーサイドでの新規機能開発を担当 ## 膨大なデータを扱う処理を意識したサーバーサイド開発 Ruby on Railsのサーバーサイドでは、API実装、定期実行Jobの作成と関連する設定(sidekiq, Redis, Jenkins)など担当しました。実装においてはDB負担の軽減が求められRedisでのキャッシュ、SQLのパフォーマンスを意識した実装を求められました。 |使用技術|| |---|---| |サーバーサイド|Ruby on Rails (6系), Ruby| |テスト|RSpec| |RDMS|MySQL, CloudSQL| |インフラ|GCP, GKE, Kubernetes, Cloud Build| ### 取り組んだ課題 - ユーザーのプロフィール情報を管理する機能の改修にて新たな情報を扱うためのDB設計、model, controllerの追加の設計、Active Model Selializerを使用しフロント側に渡すデータを意識したAPI実装 - Twitter経由での新規通知機能の追加に当たり、定期実行の必要からRailsのActive job、sidekiqとredisの機能/仕組みを理解し実装を行う、またJenkins経由でjobの実行を行うため新規jobを設定 - テーブル追加、変更においてDB設計における正規化、非正規化それぞれのメリット、デメリットを理解し、SQLのチューニングと必要に応じたcacheサーバー(Redis)の利用等パフォーマンス改善の知見を獲得しながらの実装 - 実装にあたりRspecでのTDDを実践しているが、リアルタイムでの処理が非常に難しいケースでのRedis cacheを利用したSpecの実装の知見の獲得 - Google Cloud SQL経由での本番DBでの調査、レコードの操作を通じてGCPのサービス知見の獲得 - Active Adminを導入した管理画面のカスタマイズ ## リユース系サービス ### ポジション: フロントエンド、バックエンド ### 期間: 2019年6月〜2019年9月 7名程度のチームでのスクラム開発にてサーバーサイドとフロントエンドを担当しました。長期で運用されるサービスに対して、新規実装ではいかに負債を残さないか、既存の実装ではどのように新規部分と既存実装を組み合わせて行くかという取り組みを求められました。 |使用技術|| |---|---| |フロントエンド|React, Mobx, JavaScript| |サーバーサイド|Ruby on Rails (6系), Ruby| |テスト|RSpec, Jest| |RDMS|MySQL| |インフラ|GCP, GKE, Kubernetes, Cloud Build| ### 長期運用サービスのリファクタリング 過去の負債が新規機能開発に支障をきたし、長期運用されるサービスにて実装者以外わからない部分の洗い出し、難読化した実装の仕様確認、またそのドキュメント化、リファクタリング方針の提案と実装等に関わりました。リファクタリングはビジネス側等非エンジニアには成果が伝わりにくいため、実装によるメリット、なぜ必要なのかを示すとともに工数管理を適切に行い理解を確認しながら実装をするという点に特に気をつけました。 ### 取り組んだ課題 - ユーザーの流入量が多いメディアサイト開発にてSEO対策のための基本的実装 - 取り扱い業者の契約形態によってフロントにて表示を変更する機能改修のなかで、表示変更のロジックを誰も把握していない実装となっており仕様の確認をビジネス側を再度確認し、ドキュメント化を行いながら変更の実装に取り組む - Railsのviewにおけるcss負債改修をおこなうことで、フロントエンドの開発工数の短縮に取り組む(ほんの一例では、relativeが存在しないabsoluteが散見しており、しかし機能しているケース等の対応) - 既存Railsコードにてcontrollerとmodelのロジックまで含まれてしまっていた肥大化したView Helper層objectの改修作業にてRails のMVC基本構造の理解と責務の分離という基本的な理解を確認して、不足分のテストを書きながらのリファクタリングの実装 - Kubernetesで運用されるサービスに対して、GKE, Kubernetesの基本的な仕組みを理解するように努め、GKEでのコンテナ内でのデバッグまで対応