マネーフォワードCTOが考えていること(2020年9月)

こんにちは。
マネーフォワード CTOの中出(なかで)です。

CTOの私が、普段「なにを感じて、どんなことを考えているか」について、四半期に一回社内へ共有している内容を一部編集し、エンジニアブログに公開したいと思います。

前回はこちら:マネーフォワードCTOが考えていること(2020年6月)

 

目次

  • 技術ポートフォリオの配分を変える
  • ベトナム拠点とグローバルエンジニアについて
  • コロナ禍の新入社員への影響について

 

技術ポートフォリオの配分を変える

マネーフォワードは創業期からこれまで、Railsに集中する形で技術のポートフォリオを構成してきました。しかし私たちが中長期的に価値あるサービスを社会に提供し続けるために、技術戦略として、他の技術の割合を意識的に高めていく必要があると感じています。

これまでは、統一した技術で開発することのメリットが勝っていました。しかし多くのプロダクトがグロースしたため適材適所な技術選定を行う重要性が増しており、マイクロサービスアーキテクチャへの移行を行うことで、技術選定が柔軟に行えるようになりました。そしてエンジニア組織が拡大し、かつ世の中の技術がどんどん進化していく中で、中長期的にどんな技術が生き残るかを予測することは難しく、一つの技術に集中することのリスクが大きくなってきています。

まだまだRailsは人気がありますし、今後も多くのWeb系企業で広く使われ続けると考えていますが、以前と比べると、他の技術の選択肢が選ばれるケースが増えてきています。

続きを読む

攻撃して学ぶJWT【ハンズオンあり】

こんにちは。
マネーフォワードの新卒Railsエンジニア、きなこ と申します。
マネーフォワードX という組織で、日々プロダクトの開発に勤しんでおります😊

突然ですが皆さんは JWT という技術をご存知でしょうか?
私は趣味でCTFというセキュリティコンテストに出場するのですが、最近ホットだと感じるのがJWTに関連する攻撃です。

今年の1月に初めてJWTを題材にした問題に遭遇し、その後JWTの出題頻度が強まっていると感じ、社内に向けてJWTにまつわる攻撃を通して学ぶための記事を書いたところ、たくさんの反応をいただきました。

今回の記事はその内容を社外向けにアレンジし、ハンズオンを通して実際にJWTを改竄し、受け取るAPIを攻撃することでJWT自体を学べるようにしたものです。

本記事はJWTに興味があるWeb開発者を想定していますが、そうでない方も楽しんでいただけるようにハンズオンを用意したので是非ご覧ください🙇‍♂️

JWTの定義

JWTはRFC7519で定義されています。
しかし今回はjwt.ioを提供しているAuth0によるJWTの定義が分かりやすいため、こちらを用いて説明します。

続きを読む

「Money Forward Techbook#3」を技術書典9に出品します

こんにちは、Androidエンジニアのsyarihuです。

マネーフォワードの有志の社員が集まって立ち上げた「まねふぉ執筆部」では、技術書典7技術書典 応援祭で「Money Forward TechBook」を頒布してきました。
そして2020年9月に開催される技術書典9では、まねふぉ執筆部としては3冊目となる「Money Forward Techbook #3」を出品します。

Forward Techbook #3:まねふぉ執筆部
https://techbookfest.org/product/5886292476821504

技術書典9は、2020年9月に11日間にわたって開催される、技術書典オンラインマーケットと、それを盛り上げるYouTube Liveでのスペシャルオンラインイベントのことです。

たくさんの技術本が販売されており、いろいろな技術に出会うことができる素敵なイベントです。ぜひ一緒に盛り上げていきましょう。

「Money Forward Techbook #3」とは

「Money Forward Techbook #3」は、マネーフォワードの有志の社員によって執筆した技術同人誌です。
ドキュメント管理のためにセキュアなポータルサイトを構築した話や、マネーフォワード クラウド会計Plusの各チームメンバーによるスクラム導入話、GoとAmazon SQSを用いた非同期処理の入門、Fat Modelへの実践的な対応方法、FactoryBotの詳しい解説などマネーフォワードを支える技術が盛りだくさんの内容となっています。

続きを読む

An engineering visualization tool at Money Forward

Hi, I’m Son (ソン) at the CTO office.

One of the projects that I am currently involved in is called Fadil  -  A Web app for visualizing engineering performance. In the following, I want to explain more about the motivation behind this project, what we are doing, and what’s future of this project.

Why we built it?

As Money Forward is growing, there are around ~600 repositories handled by hundreds of engineers, which leads to difficulty in understanding the current performance of engineering in general. We already tried other engineering intelligent tools to track commit history , PR related metrics… However, every company has its own metric to know, these tools just don’t meet our requirement. Each business is unique and would require a certain level of customization. Therefore we decided to build our own engineering visualization tool (from scratch).

(Some metrics in our dashboard)

続きを読む

goroutine内のpanic handling

こんにちは。
京都開発本部の櫻(@ysakura_)です。

今回のテーマは、goroutine内のpanic handlingです。

panic handlingを行う事でアプリケーションの予期せぬ終了を防止できます。
今回扱うgoroutine内のpanic handlingを把握する事で、予期せずAPIサーバーが終了する事や、レスポンスを返さない事を防止できます。

panicとは

panicのおさらいです。
panicは、コールされるとプログラムが終了するビルトイン関数の事です。

panicの使い方

panic("hoge")といった様に、ビルトイン関数であるpanicを呼ぶと使えます。
recoverというビルトイン関数を呼ぶ事で、panicによるプログラムの終了を止める事も出来ます。

panicの挙動

Goの仕様によると、以下の様に書かれています。

続きを読む

新卒エンジニアと話した「制度」と「役職」の捉え方

はじめに

こんにちは。
マネーフォワードでVPoEをやらせていただいている渋谷といいます。

マネーフォワードでは2020年の新卒エンジニアの入社に合わせてマネジメントメンター制度を導入しました。
上長やメンターとの1on1とは別に、CTO/CISO/VPoEsといった面々が新卒エンジニアの方々と月次で1on1を実施しています。

コロナ禍でのリモート勤務でもスムーズに就業開始できるようにサポートする意味もありましたが、雑談からキャリア相談や悩み相談まで、様々な話をさせてもらっています。

その中で、『そういえばこの話題、他の人にも伝えたなー』と思うような、共通で新卒エンジニアに伝えている事があり、『自分が1on1担当じゃない新卒にもどうやったら伝わるかな』と思ったときに、『いっそ社外向けに書いちゃえば、どうせ社内の人も読んでくれるんじゃ』という めんどくさがり 効率的なやり方を思いついたので書いてみてます。

 

「制度を守ることと同じぐらい、制度を変えることを考えてほしい」

多くの人が気持ちよく働くために、制度を守ることはすごく大事です。
一方で、それと同じぐらい「制度が適切か」を考える習慣も大事だな、と思っています。
※ ここでは 制度 という言葉を使いましたが、 運用ルール なども同様に思っています。

マネーフォワードはおかげさまでエンジニアが200人を超える規模にまで拡大しました。
一方で、創業してまだ8年のベンチャー企業でもあります。
ほんの少し前までは、エンジニアの数も桁一つ少ない状況でした。

続きを読む

EKSへのデプロイを楽にするためにGitHub Appsを導入しました

こんにちは。
マネーフォワードでインフラエンジニアとして働いているkappy(@kappyhappy)です。
今回は、Amazon EKSへのデプロイを効率化するために導入したGitHub Appsのdeploy-botを紹介します。

なぜdeploy-botが必要だったのか

デプロイに使用しているコンポーネント

deploy-bot導入の経緯の説明の前に、デプロイのために使用しているコンポーネントとその用途を説明します。

  • AWS ECR
    • 作成したDocker Imageを保存します
  • AWS EKS
    • AWSマネージドなKubernetesを実行します
  • GitHub
    • ソースコードを保存します
  • CircleCI
    • GitHubでPRのマージをトリガーにECRにDocker Imageをpushします
  • ArgoCD
    • GitHubのリポジトリ更新をトリガーに、更新されたKubernetes Manifestsのapplyを行います
    • Kubernetes Manifestsの作成にはKustomizeを使用しています

導入の背景

2020年7月現在、弊社ではいくつかの本番サービスをAmazon EKS上で稼働させています。また我々は、複数サービスをEKSクラスタで稼働させる為に、いくつかの理由から1つのクラスタ上に複数のサービスを同居させるマルチテナント構成を採用しました。マルチテナント構成におけるマニフェスト管理の運用として、マニフェストファイルを単一のGitHubリポジトリに集約し、サービス単位でディレクトリを作成しています。

続きを読む

Google Playのin-app updatesを使って最高のアップデート体験を実現する

こんにちは。Androidエンジニアのsyarihuです。

私が開発を担当しているサービス「マネーフォワード ME」では、日々たくさんのアップデートを行っています。新しい機能の提供であったり、不具合の修正など、アップデートの内容はさまざまです。

たとえばAndroid版「マネーフォワード ME」の場合は、Playストアからアプリを配信しています。アプリのアップデートを受け取るためにはPlayストアからの自動アップデートを待つ、あるいは自動アップデートを有効にしていない場合はユーザーが自らアプリのアップデートがあるかを確認し、アップデートがある場合は明示的にアップデートボタンを押すことでアプリのアップデートをユーザーのAndroid端末に反映します。

新機能の提供や致命的な不具合の修正などのアップデートはアプリの提供者からするとなるべく早めにアップデートをしてほしいところですが、すべてのユーザーがアップデートをしてくれるとは限りません。
そもそもアップデートに気づいていなかったり、Playストアにいってアップデートボタンを押してアップデートが完了するのを待つのが手間でアップデートをする気が起きないなど、アップデートをしないのはユーザーによってさまざまな理由が考えられます。

そこで、アップデートに気づけない問題やPlayストアアプリに遷移してアップデートをしなければならないなどの手間を解決するための手段として、Googleが公式で提供するアプリ内でアプリのアップデートを提供できるin-app updatesという仕組みがあります。
in-app updatesを利用することで、アプリ内でアップデートを検知してユーザーにアップデートを促したり、バックグラウンドでアップデートのダウンロードを行うなど、柔軟にアップデートを提供できます。

本記事では、in-app updatesについての概要やAndroid版「マネーフォワード ME」でのアプリ内アップデートの利用例、AACを使ったin-app updatesのサンプル実装、そしてInternal app sharingを利用したin-app updatesの検証方法について解説します。

in-app updatesとは

in-app updatesとは、Googleが公式に提供するアプリ内アップデートの仕組みです。
Play Core Library 1.5.0以上を導入することで利用できます。最低動作バージョンはAPI Level 21以上のため、Android 5.0以上のデバイスで利用できます。

続きを読む

Scrum Fest Osaka 2020 @ Online に登壇&参加してきました

こんにちは。京都開発拠点の村上です。

もうあの熱気から1ヶ月も経ってしまったか。
という感じですが、2020/6/26(Fri) – 27(Sat)にかけて行われたスクラムフェス大阪@オンラインに、登壇・参加したのでそのレポートです。

参加した複数名連名で感想ブログを書きたいと思います!

一言でいうと、 オンラインカンファレンス という新しい業態の可能性を感じた熱気あるイベントでした!またオンラインカンファレンスでやってほしい!

スクラムフェス大阪とは

スクラムフェス大阪 | Scrum Fest Osaka 2020

毎年関西圏のアジャイル・スクラムの発表等を行う場です。
2019年にマネーフォワードも京都開発拠点を立ち上げて関西圏に進出しましたし、
スクラム開発をガッツリ&ディープにやっているので
こりゃ成果発表せねばならない!と意気込んで参加したイベントです。

※ プロポーザル落ちたんですが、オンライン開催になった事で登壇の機会を得ました!
エリアオーナーの大友さんお声がけありがとうございます!

続きを読む

フロントエンド勉強会@Nkzn 〜主催者レポート編〜

京都開発拠点の @luccafortです。
最近帳票出力を高速化するチームに短期留学しているのでGo書いてます、RubyもJSも書いてません :waiwai:

フロントエンド勉強会@Nkznとは?

先日エンジニアブログに『学習をフォワードする取り組み 〜 京都拠点〜』というタイトルで記事を投稿しました。

外部講師に呼んでフロントエンドのワークショップ&ハンズオンを開催する予定です。
後日その様子や何故行おうと思ったのかも書かせてもらおうと考えてます、よければその際も読んでもらえると嬉しいです!

後日報告するといってしまって自分で自分の首を締めてしまったので、供養としてここに主催者側の視点から外部講師を招いた際のレポートを書いておこうと思います。
今回外部講師として知人だったNkzn氏にオファーを出させてもらいました。

画像はイベント開催時のzoomの様子をキャプチャしたものです。
顔出ししてるのが講師のNkznとぼくです、他が全員アイコンでウケる〜。

参加者側のレポートはまた別の誰かが書いてくれると信じてます!

続きを読む