新会社「MF KESSAI」はどのような技術・インフラ・体制で開発しているのか

はじめまして。
MF KESSAI株式会社(以下、MF KESSAI)の技術責任者(自称?)を務めております篠原(@shinofara)といいます。

MF KESSAIの設立は今年3月でしたが、先日公式発表しましたので、改めましてMF KESSAIの開発について紹介します。

MF KESSAIは、BtoB間の決済をよりよくする為のサービス開発を進めています。

技術ブログに書きたいネタはいっぱいあるのですが、1回では盛りだくさんになってしまうため、分割連載でお届けいたします。

 
では、初回の当投稿では、開発・本番環境、そして開発体制について紹介します。

  • 開発言語
  • 開発・本番環境のインフラ
  • 開発体制
  • 今後のブログの予定

 

開発言語

メイン言語はGo言語(Golang)です。

Go言語のロゴ、マスコットは2009年にRenée French( http://reneefrench.blogspot.jp/ )さんによって作成・公表されました。
これらはCreative Commons Attribution 3.0 Unported License( http://creativecommons.org/licenses/by/3.0/ )で保護されています。
ライセンスの全文は https://golang.org/doc/gopher/README をご覧ください。

なぜ、Go言語を採用したのか

MF KESSAIのサービスは、企業名・取引金額・口座情報のようなデータを取り扱うため、たとえ小さなバグでも業務影響が大きいサービスです。
その為、セキュリティ対策やインフラなども含めたアーキテクチャ設計、テスト実施などを当たり前に実施し、バグの無いコードを目指す事は勿論の事、言語レベルにも幾つかの要件を求めた結果、Go言語を採用することにしました。

Go言語を採用した理由

  • 型が厳密な為、型が無いことで生じる不安と対策に悩まず安心する事が出来る
  • 厳密ではあるが、スクリプト言語の様に柔軟性も兼ね備えている
  • コンパイル言語なので、デプロイ前に、コードの正当性の検証を行える
  • 言語レベルでlint等のツールが揃っている。
  • 容易にクロスコンパイルが行えるので、動作環境に適応した実行ファイルを作って、配布という感じに、シンプルにデプロイする事が出来る
  • 新鮮な気分で開発したい!!
  • なんか「Goに入ってはGoに従え」ってのがかっこいい
  • Go言語を用いた開発の実務経験があるエンジニアが在籍していた

 

開発・本番環境のインフラ

GCP(Google Cloud Platform)Dockerは並列に語るべきではないと思いますが、アプリケーションを動かす為の土台は、Dockerで、Docker Continerを動かすインフラとして、GCPを採用しています。

なぜ、Dockerを採用したのか

今回、新しい会社で開発を進めて行くにあたって一番初めに決めたことは、Dockerをベースとした開発・運用を行うことでした。
最初は言語・フレームワークは決めていませんでしたが、Dockerを使えば、以下の課題をクリアできると思い採用しました。

  • 環境の再現性を高め、共有、展開を行いやすくする為
  • デプロイの度に、毎回クリーンな環境で実行させる為
  • コンテナを再構築してイメージをデプロイするだけなので、Goなどのアプリケーションレベルのバージョンアップが簡単に行える為

なぜ、GCPを採用したのか

マネーフォワードとしても、僕個人としてもAWSには馴染みがあったのですが、今回はGCPを選択しました。
採用した理由としては

  • コンテナ・オーケストレーターのkubernetesで動くGoogle Container Engineの存在
  • G Suiteのグループ機能とGCP権限管理の連携
  • Spannerなどワクワクするサービスが登場するようになってきた(残念ながらまだ使えていません)

このように最初はアプリケーションを動かす環境から考え、そして権限管理と幅広く考えた結果、GCPを採用して進めて行く事になりました。

 

開発体制

会社設立準備期間〜6月まで

2月初旬(立ち上げ準備)から6月頃までは、エンジニア2人体制でした。

  • インフラ・技術責任者 兼 Go言語エンジニア(僕)
  • プロダクト責任者 兼 Go言語エンジニア

ベンチャー感がすごいでてます。

6月〜現在

現在、更にフロントエンドエンジニア1名、Go言語エンジニア2名が増え、エンジニア5名の体制で開発しております。
フロント、Go言語、インフラなどと書いておりますが、それぞれの得意領域を発揮する事は勿論のこと、それ以外の領域でも失敗を恐れずどんどん手を出し、そして全力でサポートし合いながら、よりよいサービスををより早く出せるように、全力で開発しています。

例えば、フロントエンジニアがDockerfileを修正したり、Go言語での開発をしたりと、必要な場所にはどんどん手を入れていってます 笑

そしてこれから

これからサービス、そして会社もどんどん大きくなって行きますが、下記のような開発環境を作り、そして変わらず維持していければと思っております。

  • 過去の経緯に囚われず、その時その時で最適な選択していける環境
  • 役割を狭めず、興味があればどんどん広げていける環境
  • 当たり前の事を当たり前に出来る環境
  • 負債回収より新規開発に専念できる環境

 

今後のブログの予定

今回はMF KESSAIについて、ざっくりとした開発に関してでしたので、近いうちに下記内容で公開したいと思います。

  • Go言語での開発編
  • Docker,GCPなどのインフラ編

 

最後に

MF KESSAIでは、サービスだけではなく環境なども一緒に開発してくれる Gopher(Go言語、Golangエンジニア)の募集しています。

興味がありましたら、是非とも気軽にご連絡いただければと思います。
一緒に開発できるできる事を、楽しみにしてます!!
https://www.wantedly.com/projects/95011

【採用サイト】
マネーフォワード採用サイト
Wantedly | マネーフォワード

【プロダクト一覧】
自動家計簿・資産管理サービス『マネーフォワード』
Web
iPhone,iPad
Android

ビジネス向けクラウドサービス『MFクラウドシリーズ』
会計ソフト『MFクラウド会計』
確定申告ソフト『MFクラウド確定申告』
請求書管理ソフト『MFクラウド請求書』
給与計算ソフト『MFクラウド給与』
経費精算ソフト『MFクラウド経費』
入金消込ソフト『MFクラウド消込』
マイナンバー管理ソフト『MFクラウドマイナンバー』
資金調達サービス『MFクラウドファイナンス』

メディア
くらしの経済メディア『MONEY PLUS』

Pocket