Slide 1

Slide 1 text

ビジネス課題をGoで解決する − Money Forward XでのGo利用事例について

Slide 2

Slide 2 text

自己紹介 ● 宍戸 啓太郎(Shishido Keitaro) ● 2020/12 マネーフォワード入社 ● 法人向けサービスを開発するグループのグループリーダー ● Go歴5年 ● 職歴 ○ SIer ○ 住宅設備機器メーカー ○ ソーシャルゲーム開発 ○ 人材系 ● 興味 ○ 競馬 ○ サッカー観戦(ベガルタ仙台) ○ ストロングゼロ(ダブルレモンが至高  )

Slide 3

Slide 3 text

Agenda 1. Money Forward Xの抱えていた課題 2. Goの利用事例 3. Goを利用するメリット 4. Goを利用したことで見えてきた課題 5. まとめ

Slide 4

Slide 4 text

Money Forward Xの抱えていた課題 ● 2020年頃の状況 ○ 一部バッチ処理でGoを採用していたが、Rubyプロダクト・エンジニアが中心 ○ 会社方針としてのGoの採用 ■ マネーフォワードCTOが考えていること(2020年9月) ○ Goのエンジニア0人 ■ Go経験者を採用し、開発力向上・普及を目指す ● 金融機関向けサービスに求められるもの ○ 安定性 ○ スケジュール ○ 品質

Slide 5

Slide 5 text

2020年のPush配信集計バッチでの利用に始まり、 Goを利用するプロダクトが続々と増えています。 Goの利用事例 2020 2021 2022 2023 ★ ★ ★ ★ ★ ★ ★ Push配信集計バッチ X Cloud Storage X Insight Marketing XIM-BI Mikatano ID BANK APP Mikatano 課金基盤

Slide 6

Slide 6 text

Goの利用事例 ● Mikatano ID ○ Serverless Framework (Lambda) × Go ○ GraphQL (gqlgen)

Slide 7

Slide 7 text

Goの利用事例 ● Mikatano 課金基盤 ○ EKS × Go ○ gin ○ sqlboiler ○ GraphQL (gqlgen)

Slide 8

Slide 8 text

Goを利用するメリット ● 静的型付けがある ○ 変更時にテストコードやビルドでミスに気付きやすい(影響範囲がわかりやすい) ○ 保守性の高さ ○ 型を使って堅牢に実装出来る(金融機関向けにより安心して使えるようになった) ○ interfaceを使ったテストしやすいコード ○ 静的解析を利用したコードチェック

Slide 9

Slide 9 text

Goを利用するメリット ● 習得の容易さ ○ 記法がシンプルで習得へのハードルが低い ○ ツールの充実 (gofmt, goimport, golang-cilint) ○ キャッチアップはどのように? ● 基本的には自習 ● マネーフォワード社内のGo採用プロダクトを参考に ● Go経験者によるレビュー ● reviewdogを使っての静的解析

Slide 10

Slide 10 text

Goを利用したことで見えてきた課題 ● フレームワーク・ライブラリのデファクトスタンダードが無い ○ Goエンジニアが少ない場合、どれを使うか迷ってしまう ○ 開発止まってしまうものも多い → どうしたか ● コード量が多くなる ○ エラー判定(if err != nil)多すぎる ○ Generics(まだ使ったことない)でどのくらい変わるか(コード量、パフォーマンス)

Slide 11

Slide 11 text

Goを利用したことで見えてきた課題 ● 採用難しい ○ Goエンジニアなかなか見つけられない ○ 市場感 ■ Goエンジニアは増えている ■ Goを採用する企業はもっと増えている ● goconのスポンサー増えている(MoneyForwardシルバースポンサー)

Slide 12

Slide 12 text

まとめ ● Money Forward X では2020年頃からGoを採用し、Go製のプロダクトも増えてきました ● 金融機関向けのサービスに求められる堅牢性という意味でもGoはより向いていると言えます ● Goは比較的習得も容易なので普及に向けたハードルは高くないです ● Goエンジニアの採用は苦戦するかもしれません ● Money Forward X ではGoエンジニアを募集しています

Slide 13

Slide 13 text

We are Hiring! https://hrmos.co/pages/moneyforward/jobs/0004293