Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

Ad 絶賛発売中です! 🔍 Firestore Testing JavaScriptにおけるテスト Firestoreに関するテスト  に興味のある方はぜひ! 7 https://techbookfest.org/product/5732781973831680?productVariantID=5768446107189248

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

EC モール対応の新規開発 - 2018/秋 ● サービス開始から20年ほど経っているECサイトで、Goで開発 したシステムを商用利用開始 ● Why ○ テスト駆動・仕様駆動開発 ○ 堅牢性(静的型付けであり、実装時点の確実性が高い) ○ 既存システムとの親和性 ● Key Points ○ チームとして新しい技術への抵抗感を減らすため、運用 ツールをいくつか開発して慣れておいた ○ 確度が高く、既存システムとの境界が明確な案件でトライ 9

Slide 10

Slide 10 text

EC 一部機能をマイクロサービス化して更改 - 2019/春 ● レガシーシステムの一部を、マイクロサービス化。その一部を Goで実装した ● Why ○ 仕様フィット:キューを受信し続け、一定数溜まったらまとめ てリクエスト 10

Slide 11

Slide 11 text

スポーツ観戦アプリのバックエンド - 2020/春 ● スポーツ観戦アプリ向けのバックエンドシステムを担当し、 一部でGoを採用 ● Why ○ データ連携速度、安定性 ● Why Not ○ メンバーのスキルセット(アプリがReactNativeで、Nodeならみれるメン バーが多かった) ○ 初期開発コスト・柔軟性(試合状況データから解説文(日本語文)を自動 生成するタスクなど) 👉ref: Wantedly における Go 導入にまつわる技術背景 https://www.wantedly.com/companies/wantedly/post_articles/193633#h3-一般的考察と結論 11

Slide 12

Slide 12 text

Summary ● Goの特性を生かしての開発 ○ テスト駆動開発・仕様駆動 ○ パフォーマンス、安定性 ○ キューを一定数受信し、まとめてリクエスト ● 技術選定で考えたこと ○ メンバーのスキルセット ○ 初期開発コスト      適材適所な選択を! ● マインドセット ○ 手を上げてみる、やってみる ○ 実現性 vs 効果 → 無理なく始める ○ 他人と比べすぎない 12