- 氏名: 佐藤信吾 / Shingo Sato
- Eメール: shinsugar@gmail.com
- Webサイト: https://shingosato.com
- LinkedIn: https://www.linkedin.com/in/shingosato/
- GitHub: https://github.com/sugarshin
独学でデザインとプログラミングを学びながら、2012年までフリーランスとして様々な職種を経験したのちに、有限会社イエロー・グラフィック・ステューディオ・ジャパンに入社。マークアップやWebデザイン、グラフィックデザイン、DTP、動画制作などの経験を積む。2014年、株式会社つみきに入社。Filmarksの開発や受託Webサイト制作に従事。2016年、株式会社Oneteam(事業譲渡済み)に入社。業務コラボレーションソフトウェアの開発に従事。開発チームリードを経験。2018年、株式会社メルカリにソフトウェアエンジニアとして入社。CSツールのリアーキテクチャや、メルカリWebのリアーキテクチャ、メルペイでいくつかのマイクロサービスの立ち上げや開発などに携わる。2018年末にインスタンスゼロ株式会社を共同創業。受託ソフトウェア開発に従事。2020年、LINE株式会社(現LINEヤフー株式会社)にソフトウェアエンジニアとして入社。主にLIFFとLINEログインの開発に携わり、2022年、エンジニアリングマネージャに就任。2025年3月、株式会社ダイニーに入社。
- EM: 1名(自分)
- SWE: 4名
組織内開発者のDXをソフトウェアで改善するチームのエンジニアリングマネージャとして従事しました。
具体的にチームが担っているのは、社内プライベートクラウド上に構築されたオブジェクトストレージとCDNサービスのラッパープロダクトや、OSS (Verdaccio) を利用した社内用のnpmパッケージレジストリ、また、Kubernetesをベースにした、社内用Node.jsアプリケーションプラットフォームや、OSS (Renovate) を利用した社内用パッケージアップデート検知システムなどの開発・運用です。
技術をリードする役割をメンバーが担い、自分はエンジニアリングマネージャとして技術的側面以外の以下のような役割を担いました。
- ティーチングやコーチングによるメンバーの支援
- メンバーとの対話によるコンディションサポートやモチベーションマネジメント
- プロダクトの機能的仕様に関する意思決定の主導とアドバイス
- チームの方向性の策定主導やチーム目標の設計・運用
- 採用業務
- 中途採用の職務記述書の作成
- 新卒採用の1次面接
- EM: 1名(自分)
- SWE (Frontend): 2 ~ 3名
エンジニアリングマネージャとして、LIFFやLINEログイン、LINE公式のLINEミニアプリのWebフロントエンド領域の開発に携わるチームの設計や採用、ピープルマネジメントに従事していました。
- ティーチングやコーチングによるメンバーの支援
- メンバーとの対話によるコンディションサポートやモチベーションマネジメント
- 開発タスクアサインメント設計と運用
- 担当チームおよび担当プロダクトのテックリードの制度設計と移譲
- チーム目標設計・運用
- 採用業務
- 新卒採用の1次面接
- 中途採用の職務記述書の作成・書類選考・技術試験採点・1次面接
開発チーム構成は3年間で変動がありましたが、概ね以下のような構成でした。
- SWE (Frontend): 1 ~ 5名(自分)
- SWE (Backend): 2 ~ 4名
- SWE (iOS, Android): 2 ~ 4名
- PM: 1 ~ 3名
- QA: 2 ~ 4名
LINE上で動作するWebアプリケーションの開発プラットフォームであるLIFFのJavaScript SDKの開発を担当しました。
- 各機能要件、非機能要件の設計および実装
- プラグイン機構の設計および実装
- Monorepo化の設計および実装
- リリース戦略の改善とCI/CDパイプラインの設計および実装
- オンコール体制の設計とルール策定
- Webブラウザ用のJavaScript SDKという成果物に対して適切なルールと体制をとれるように設計
LINEアカウントを使ったソーシャルログインサービスのWebフロントエンドの設計と実装を担当しました。
- 各機能要件のWebフロントエンドに関わる設計および実装
- リリース戦略の改善とCI/CDパイプラインの設計および実装
担当プロジェクト共通で利用するためのツールの作成や、インフラの整備を実施しました。
- デプロイのためのCircleCI Orbの設計および実装
- GitHub IssuesとJira Issuesを相互連携するためのシステムの設計および開発、運用
- OSSを利用した社内用ツールの構築および運用
- Webhookペイロードのプロキシツール
- 依存ライブラリのアップデート自動検知ツール
- GitHub ActionsのSelf-hosted runnerの構築および運用
- Terraformによる各担当領域のインフラのコード化
- 社内用データ分析基盤で管理している分析ダッシュボードをWeb UIベースの手作業による管理と更新から、コードによる管理へと移行するためのツールの考察および立案、PoC開発
- 共同創業者: 5名(自分)
- ソフトウェア開発者: 2名(自分)
- インフラエンジニア: 1名
- デザイナー: 1名
- QA, ゼネラルマネージャ: 1名
様々な顧客から請けたWebアプリケーション開発に従事し、主にWebフロントエンドの設計および実装を担当しました。
- Webフロントエンドの技術選定、設計、実装
- Backend Web Platformチーム
- EM: 1名
- SWE: 10名前後(自分)
- Web DevOpsチーム
- Lead: 1名
- SWE: 2名(自分)
- CSツールチーム
- SWE (Frontend): 3 ~ 4名(自分)
- SWE (Backend): 複数名
- PM: 複数名
PHPモノリスで開発されているCSツールの機能要件の実装や、巨大なCSツールのうちの1つのドメインを切り出し、フルリプレイスを伴うWebフロントエンドのアーキテクチャ設計、技術選定、実装を担当しました。また、開発ツールやデプロイツール、エラートラッキング、Kubernetesマニフェスト、CI/CD、IaCなどに責務を持つ、Backend Web PlatformチームやWeb DevOpsチームに所属し、メルカリWeb版の機能要件の実装やリアーキテクチャにも携わりました。メルカリWeb版のリリースエクスペリエンスを改善するために、Slackbotの企画・設計・開発を行いました。
- CSツール(PHPモノリス)の機能要件の実装
- CSツールのリアーキテクチャ
- フルリプレイスを伴うWebフロントエンドのアーキテクチャ設計、技術選定および実装
- 社内マイクロサービス基盤上での構築
- メルカリWeb(PHPモノリス)の機能要件の実装
- メルカリWebのリアーキテクチャ
- 機能要件および非機能要件の実装
- リリース用Slackbotの企画、設計および実装
2019年01月から半年間の期限付きで株式会社メルペイへ出向し、メルペイフロントエンドチームに所属しました。
- フロントエンドチーム
- EM: 1名
- SWE (Frontend): 5 ~ 7名(自分)
キャンペーンサイトやメルペイクーポンの開発に携わりました。
- メルペイの各キャンペーンで利用するランディングページを配信するサービス
- アーキテクチャ設計および実装
- 社内マイクロサービス基盤上での構築
- メルカリモバイルアプリ内WebViewで開発、提供されているクーポン機能の機能要件および非機能要件の設計、実装
- 開発チーム
- PM: 1名
- SWE: 3 ~ 8名(自分)
- Designer: 1名
- QA: 1名
業務用コレボレーションソフトウェアの開発に従事し、主にWebアプリケーション版とElectronによるデスクトップアプリケーション版の設計や開発を担当しました。Design Docによる設計とその承認フローや、スクラムによるアジャイル開発を経験し、在籍途中から開発チームリードとして、開発チームとしての意思決定の主導や開発フローの見直し等を実施しました。
- 複雑な状態遷移とリアルタイム性を持つWebアプリケーションのWebフロントエンド(SPA)およびデスクトップアプリケーションのアーキテクチャ設計、技術選定および実装
- CI/CDパイプラインの設計および実装
- Design Docの作成およびレビュー
- 顧客ヒアリングによる次の施策の考察および計画、実施
- フロントエンドチーム
- フロントエンドエンジニア: 3 ~ 4名(自分)
顧客から請けたWebサイト制作に従事する傍ら、Filmarksの開発にも携わりました。
- 受託Webサイト制作
- Ruby on Railsによるフルリプレイスに伴うWebフロントエンドの設計や技術選定および実装
- SprocketsからNode.jsのエコシステムを利用したビルドパイプラインへのマイグレーションの設計および構築
グラフィックデザインアシスタントやDTP、またイベント動画の制作に従事し、その傍らで、WebデザインやWebサイトの実装、またエクセルデータから業務に利用しやすいフォーマットに変換するためのVBAスクリプトのコーディングなどを担当しました。
- グラフィックデザインアシスタント
- DTP
- 動画制作
- Excel VBAによる業務効率化スクリプトのコーディング
- Webデザイン
- Webサイト実装
エンジニアリングマネージャおよびテックリードとして、以下の3つのマネジメントドメインのスキルを有しています。
- ピープルマネジメント
- 採用に関わり、チームやプロジェクトが必要とする人材の定義および選考が可能です。定期的な1on1ミーティングによる対話での基本的なモチベーションマネジメントをはじめとし、チームやプロジェクトの問題やメンバーの業務の阻害要因の早期発見と解決ができます。チーム成果の最大化を最優先し、チームやメンバーを取り巻く課題解決のために必要であれば組織で未導入の制度やルールを設計してチーム内に適用するなどの施策を実行することができます。
- プロジェクトマネジメント
- リリーススコープやスケジュールの管理、また開発タスクのアサインメント手法の改善などの実績があります。また、リードタイム改善のためにPMやQAチームと協力し、プロセスの自動化や環境に応じた成果物の生成など、リリースフロー全体に着目した上でコストと価値提供のバランスをとった施策を提案、実施が可能です。
- テクノロジーマネジメント
- 技術的な意思決定の主導および担当メンバーや成果物の特性を考慮した技術選定が可能です。また、技術的な課題の洗い出しやそれらの中長期での解決を目標にしたプランニング、また将来的に提供したい価値から逆算した機能開発の優先度プランニングなどの経験があります。
ソフトウェアエンジニアとして、Webフロントエンドに関わるアーキテクチャ設計や技術選定および配信インフラやCI/CDパイプラインまで含めた一気通貫での設計、実装、構築が可能です。また、小規模のWebシステム全体のアーキテクチャ設計から実装まで行うことができます。
これまでの業務経験において、深く携わる技術の中心だったのはWebフロントエンドです。ネットワークやDB、インフラ全般などに対する専門性は高くありません。
これまでに技術選定や設計、実装に直接的に携わった主な直近の業務を日付降順にまとめます。
あるWebアプリケーションの開発をチームで担当することをきっかけに、社内プライベートクラウドにProjectを作成するにあたって、利用するリソースとGitHub orgの管理をTerraform化しました。Terraformの専門性がそこまで高くないチームでも管理維持していきやすいように、Resourceの書き方やディレクトリ構成を工夫し、GitHub Actionsによるリンティング, plan, applyの自動化を行いました。
- 利用技術: Terraform, terraform-provider-github, GitHub Actions
- 深く触れた技術: Terraform, GitHub Actions
LIFF SDKのプラグイン機構の設計・実装を担当しました。Yarn Workspaceを用いて、SDKのAPIごとのMonorepo構成にし、APIをプラガブルにすることで、LIFFアプリ開発者が必要なAPIだけをバンドルできるようにしました。
ref: LIFF SDKを拡張できるLIFFプラグイン機能を追加しました
- 利用技術: TypeScript, Rollup, Monorepo
- 深く触れた技術: TypeScript, Rollup, Monorepo
チームの課題からうまれたシステムで、企画・設計・開発すべてを担当しました。社内で提供されているNamespace as a ServiceにあたるKubernetesサービスをインフラとして、チケットの連携状態をRDBで管理し、GitHubとJiraからのWebhookを受けるバックエンドをGitHub Appとして実装しました。Webアプリケーションを構築するためのKubernetesマニフェストを一から書き、リリースの自動化も含めて対応しました。アプリケーションはDDDに基づき設計・実装し、厳密さを求めて静的解析ツールでディレクトリや依存関係のリンティングを施しました。ORMとしてPrismaを採用し、各Webhookを受ける実装は、GitHubはProbotを利用し、JiraはExpressで自前で実装しました。また、アプリケーションの課題を解決するために、Probotへのコントリビューションを行いました。
- 利用技術: TypeScript, Probot, Express, Prisma, CircleCI, Docker, Kubernetes, MySQL
- 深く触れた技術: Probot, CircleCI
所属組織用のRenovateを構築しました。Renovate公式のHelm chartを利用し、社内で提供されているNamespace as a ServiceにあたるKubernetesサービス上に構築しました。同時期に、RenovateのOSSに対してコントリビューションもいくつかしています。renovatebot/renovate, renovatebot/helm-charts
- 利用技術: Renovate, Kubernetes, Helm
- 深く触れた技術: Renovate
メルカリWebのリリースオペレーション時に利用するSlackbotを企画・設計・実装しました。GoogleカレンダーAPIやSlackbotによる通知を駆使し、リリース時に能動的にアクションを起こさなければいけなかったステップを受動的に処理できるようにしました。Slack謹製のSlackbot開発フレームワークBoltを利用し、GAEにデプロイすることによってマネジメントコストを低減しました。
- 利用技術: TypeScript, Bolt, GAE, CircleCI
- 深く触れた技術: Bolt
メルペイの各種キャンペーンで配信するランディングページのためのマイクロサービスを、社内のマイクロサービス基盤を利用して構築しました。WebアプリケーションフレームワークはNuxtを利用し、画面の要件でバックエンドでの認証処理が必要だったため、SSRで実装しました。SREやMicroservice Platformチームのサポートを受けながら、Deploymentなどの一部Kubernetesリソースの管理やオンコールも担当しました。
- 利用技術: TypeScript, Nuxt, Kubernetes
- 深く触れた技術: Nuxt
巨大なCSツールの一部のドメインを切り出し、マイクロサービスでリアーキテクトするプロジェクトでFrontendサービスの技術選定・設計・実装を担当し基盤を構築しました。 ref: Frontend Service | 商品通報対応をgRPCとGraphQLとReactでリプレースしてみた
フロントエンドアプリケーションはSPAとして実装し、GCSとCloud CDNでフロントエンドアセットを配信するシンプルな設計です。インフラの選定やアプリケーションの設計、技術選定を担当しました。
- 利用技術: TypeScript, React, Apollo Client, Blueprint, GCS, Cloud CDN, CircleCI, webpack
- 深く触れた技術: React
業務コラボレーションソフトウェアのWebアプリ版、デスクトップアプリ版の設計・開発を担当しました。ReactによるSPAで、リアルタイム性が高く非常に複雑な画面遷移と状態管理を伴うアプリケーションでした。Draft.jsを利用して、オリジナルのWYSIWYGエディタを実装しました。Draft.jsの周辺ツールをいくつも自作し、プロダクトに取り込んでいました。
- 利用技術: JavaScript, React, Redux, CircleCI, Electron, Draft.js
- 深く触れた技術: React, Redux, CircleCI, Draft.js
- 2022-05-11, 登壇: 【LINEミニアプリ】LIFF Deep Dive【LIFFプラグインリリース記念】
- 2022-03-20, 登壇: フロントエンドエンジニア 座談会 - プラットフォームの開発に携わるエンジニアたちの話
- 2021-10-26, 登壇: LINE フロントエンドエンジニア採用説明会
- 2021-04-09, 取材: UXからWebの世界を広げるLIFFの可能性:LINE テクノロジー&エンジニアリング大全
- 2019-07-13, 登壇: Mercari x Merpay Frontend Tech Talk vol.2