Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Goとの歩み / History with Go

Df3136f800e7ed9931ed5f9f1afad935?s=47 mtskhs
March 10, 2021

Goとの歩み / History with Go

Gopher道場 同窓会2021

Df3136f800e7ed9931ed5f9f1afad935?s=128

mtskhs

March 10, 2021
Tweet

Transcript

  1. Goとの歩み 〜レガシーシステム更改・OSS開発〜 2021.3.10 Gopher道場 同窓会2021 Hisayuki Matsuki @mtskhs

  2. History with Go 2018/4-6 Gopher道場一期生   2018/秋 EC モール対応の新規開発  

    2019/春 EC 一部機能をマイクロサービス化して更改       GoCon登壇   2020/春 スポーツ観戦アプリのバックエンド    /夏 OSS: fsrpl (CloudFirestoreの運用ツール)    /冬 技術書展10 Firestore Testing 2
  3. Private work 2018/4-6 Gopher道場一期生   2018/秋 EC モール対応の新規開発   2019/春

    EC 一部機能をマイクロサービス化して更改       GoCon登壇   2020/春 スポーツ観戦アプリのバックエンド    /夏 OSS: fsrpl (CloudFirestoreの運用ツール)    /冬 技術書展10 Firestore Testing 3
  4. Who am I • 松木久幸(@mtskhs) • Gopher / TypeScript /

    React Native • スポーツ解説アプリ SpoLive • GoにおけるAPI Client @Go Conference Autumn https://speakerdeck.com/matsu0228/api-client-implementation-pattern-in-go • fsrpl :Firestore運用ツール (homebrew) https://firebaseopensource.com/projects/matsu0228/fsrpl/ • Agile (シリコンバレーで3ヶ月働いて体感した自律型組織のス スメ) https://speakerdeck.com/matsu0228/organizationtheory-of-engineering 4
  5. Who am I • 松木久幸(@mtskhs) • Gopher / TypeScript /

    React Native • スポーツ解説アプリ SpoLive • GoにおけるAPI Client @Go Conference Autumn https://speakerdeck.com/matsu0228/api-client-implementation-pattern-in-go • fsrpl :Firestore運用ツール (homebrew) https://firebaseopensource.com/projects/matsu0228/fsrpl/ • Agile (シリコンバレーで3ヶ月働いて体感した自律型組織のス スメ) https://speakerdeck.com/matsu0228/organizationtheory-of-engineering 5
  6. Who am I • 松木久幸(@mtskhs) • Gopher / TypeScript /

    React Native • スポーツ解説アプリ SpoLive • GoにおけるAPI Client @Go Conference Autumn https://speakerdeck.com/matsu0228/api-client-implementation-pattern-in-go • fsrpl :Firestore運用ツール (homebrew) https://firebaseopensource.com/projects/matsu0228/fsrpl/ • Agile (シリコンバレーで3ヶ月働いて体感した自律型組織のス スメ) https://speakerdeck.com/matsu0228/organizationtheory-of-engineering 6
  7. Ad 絶賛発売中です! 🔍 Firestore Testing JavaScriptにおけるテスト Firestoreに関するテスト  に興味のある方はぜひ! 7 https://techbookfest.org/product/5732781973831680?productVariantID=5768446107189248

  8. History with Go 2018/4-6 Gopher道場一期生   2018/秋 EC モール対応の新規開発  

    2019/春 EC 一部機能をマイクロサービス化して更改       GoCon登壇   2020/春 スポーツ観戦アプリのバックエンド    /夏 OSS: fsrpl (CloudFirestoreの運用ツール)    /冬 技術書展10 Firestore Testing 8
  9. EC モール対応の新規開発 - 2018/秋 • サービス開始から20年ほど経っているECサイトで、Goで開発 したシステムを商用利用開始 • Why ◦

    テスト駆動・仕様駆動開発 ◦ 堅牢性(静的型付けであり、実装時点の確実性が高い) ◦ 既存システムとの親和性 • Key Points ◦ チームとして新しい技術への抵抗感を減らすため、運用 ツールをいくつか開発して慣れておいた ◦ 確度が高く、既存システムとの境界が明確な案件でトライ 9
  10. EC 一部機能をマイクロサービス化して更改 - 2019/春 • レガシーシステムの一部を、マイクロサービス化。その一部を Goで実装した • Why ◦

    仕様フィット:キューを受信し続け、一定数溜まったらまとめ てリクエスト 10
  11. スポーツ観戦アプリのバックエンド - 2020/春 • スポーツ観戦アプリ向けのバックエンドシステムを担当し、 一部でGoを採用 • Why ◦ データ連携速度、安定性

    • Why Not ◦ メンバーのスキルセット(アプリがReactNativeで、Nodeならみれるメン バーが多かった) ◦ 初期開発コスト・柔軟性(試合状況データから解説文(日本語文)を自動 生成するタスクなど) 👉ref: Wantedly における Go 導入にまつわる技術背景 https://www.wantedly.com/companies/wantedly/post_articles/193633#h3-一般的考察と結論 11
  12. Summary • Goの特性を生かしての開発 ◦ テスト駆動開発・仕様駆動 ◦ パフォーマンス、安定性 ◦ キューを一定数受信し、まとめてリクエスト •

    技術選定で考えたこと ◦ メンバーのスキルセット ◦ 初期開発コスト      適材適所な選択を! • マインドセット ◦ 手を上げてみる、やってみる ◦ 実現性 vs 効果 → 無理なく始める ◦ 他人と比べすぎない 12