マネーフォワード×ナレッジワーク 『ビジネス課題をGoで解決する 』
ビジネス課題をGoで解決する− Money Forward XでのGo利用事例について
View Slide
自己紹介● 宍戸 啓太郎(Shishido Keitaro)● 2020/12 マネーフォワード入社● 法人向けサービスを開発するグループのグループリーダー● Go歴5年● 職歴○ SIer○ 住宅設備機器メーカー○ ソーシャルゲーム開発○ 人材系● 興味○ 競馬○ サッカー観戦(ベガルタ仙台)○ ストロングゼロ(ダブルレモンが至高 )
Agenda1. Money Forward Xの抱えていた課題2. Goの利用事例3. Goを利用するメリット4. Goを利用したことで見えてきた課題5. まとめ
Money Forward Xの抱えていた課題● 2020年頃の状況○ 一部バッチ処理でGoを採用していたが、Rubyプロダクト・エンジニアが中心○ 会社方針としてのGoの採用■ マネーフォワードCTOが考えていること(2020年9月)○ Goのエンジニア0人■ Go経験者を採用し、開発力向上・普及を目指す● 金融機関向けサービスに求められるもの○ 安定性○ スケジュール○ 品質
2020年のPush配信集計バッチでの利用に始まり、Goを利用するプロダクトが続々と増えています。Goの利用事例2020 2021 2022 2023★ ★★★★★★Push配信集計バッチ X Cloud StorageX Insight MarketingXIM-BI Mikatano IDBANK APPMikatano 課金基盤
Goの利用事例● Mikatano ID○ Serverless Framework (Lambda) × Go○ GraphQL (gqlgen)
Goの利用事例● Mikatano 課金基盤○ EKS × Go○ gin○ sqlboiler○ GraphQL (gqlgen)
Goを利用するメリット● 静的型付けがある○ 変更時にテストコードやビルドでミスに気付きやすい(影響範囲がわかりやすい)○ 保守性の高さ○ 型を使って堅牢に実装出来る(金融機関向けにより安心して使えるようになった)○ interfaceを使ったテストしやすいコード○ 静的解析を利用したコードチェック
Goを利用するメリット● 習得の容易さ○ 記法がシンプルで習得へのハードルが低い○ ツールの充実 (gofmt, goimport, golang-cilint)○ キャッチアップはどのように?● 基本的には自習● マネーフォワード社内のGo採用プロダクトを参考に● Go経験者によるレビュー● reviewdogを使っての静的解析
Goを利用したことで見えてきた課題● フレームワーク・ライブラリのデファクトスタンダードが無い○ Goエンジニアが少ない場合、どれを使うか迷ってしまう○ 開発止まってしまうものも多い→ どうしたか● コード量が多くなる○ エラー判定(if err != nil)多すぎる○ Generics(まだ使ったことない)でどのくらい変わるか(コード量、パフォーマンス)
Goを利用したことで見えてきた課題● 採用難しい○ Goエンジニアなかなか見つけられない○ 市場感■ Goエンジニアは増えている■ Goを採用する企業はもっと増えている● goconのスポンサー増えている(MoneyForwardシルバースポンサー)
まとめ● Money Forward X では2020年頃からGoを採用し、Go製のプロダクトも増えてきました● 金融機関向けのサービスに求められる堅牢性という意味でもGoはより向いていると言えます● Goは比較的習得も容易なので普及に向けたハードルは高くないです● Goエンジニアの採用は苦戦するかもしれません● Money Forward X ではGoエンジニアを募集しています
We are Hiring!https://hrmos.co/pages/moneyforward/jobs/0004293