チームでやっている ZenHub x Scrapbox を使ったフルリモートなアジャイル開発の紹介

こんにちは!
マネーフォワード クラウド横断本部のWebエンジニアの はるやま (@linnefromice) です。

現在クラウド横断本部で行っている既存サービスのリプレイスプロジェクトにおける開発チームでの開発プロセスの紹介をさせていただきたいと思います!

背景

プロジェクト発足当時は2人だったのですが、現在5人にまでメンバーが増え、そのうちの1人は海外居住者なので現在入国できておらずフルリモートで参画しています。海外居住者でないメンバーに関しては最低週1出社としていて、チームとしてはほとんどがリモートでの勤務がベースになっています。
(当たり前なことではあるのですが、)途中参画したメンバーはそれまでの経緯や意思決定をキャッチアップも必要ですし、初期メンバーはそれに対するフォローだったり、メンバー同士の相談などもなるべく低コストでスムーズにしたいです。

上記のような背景があり、仮にフルリモートだとしてもチーム開発を問題なく継続していけるためのルール/仕組みづくりを行ってきました!

その前にリモートにおけるコミュニケーション問題

エンジニア周りに限った話ではないのですが、リモート化によって、何よりコミュニケーション自体の難しさがどのチームにもあり、今もまだ話題になることが多いです。
リアルで集まっていたときのような空気感による気軽さがなくなり、直接対面して会話していたときには伝わっていたようなニュアンスも伝わらなくなり…と、他にも様々な課題があると思いますが、新規参画者においては特に顕著に起こりやすく、自分たちのチームにはグローバルメンバーもいるので、参画当初は前述のような課題がありました。

続きを読む

開発者でも取り組める!発展期のサービスこそ、SLOやDatadogダッシュボードで状態を可視化してメンバーに安心を届けよう

こんにちは。
2021年10月からマネーフォワード クラウド勤怠の開発チームでSREとして働いています、VTRyo です。

入社2週間経過ブログを書いて以来の登場です。
https://moneyforward.com/engineers_blog/2021/10/28/mf-on-boarding/

現在の僕は、チーム一人目のSREとして活動しています。せっかくなので、SRE立ち上げ記を綴っていきます。

第1話は 「サービスの状態を可視化して、まずはチームメンバーに安心を与えていこうな」 という話をします。

話さないこと

  • SREそのものについて
  • 具体的な作業ログ

経緯

10月某日。入社オリエンや開発オリエンが終わって徐々にSRE活動を始めることになりました。

必要なチャンネルに一通り招待され、どんなやり取りが発生するかを把握していきます。
そこで、真っ先に気になったのはモニタリングに関することでした。

errorsチャンネルに、Rollbarでトラッキングされたエラーが四六時中ずっと流れています。

通知だけされていて「あ、これは通知はされていますがユーザ影響のないものです」といった、いわゆるオオカミ少年と化していました。

続きを読む

MUI v5 化を経て気づいたやっておいたよかったこと/やっておけばよかったこと

こんにちは!
マネーフォワード クラウド横断本部のWebエンジニアの はるやま (@linnefromice) です。

現在クラウド横断本部では BtoB 向けサービスのリプレイスプロジェクトの開発を行っており、その過程で実施した UI ライブラリのバージョンアップを通して学んだことを紹介させていただきたいと思います!(@thinceller)、一緒にこちらの対応方針を考えたり対応をしました!)

背景

現在進行中のプロジェクトは2021年初から着手しており、UIライブラリとして他PJでも利用実績のあった MUI (当時 Material-UI ) を選定しました。
当時の最新バージョンは v4 でしたが、開発を進めるうちに v5 の情報が上がってきました。
v5 のスケジュールを見ると、プロダクトリリース前に v5 が正式バージョンとなることがわかったので、v5 にあげるための活動をスプリントに組み込み、実際にバージョンアップに取り組むことにしました。

参考

取り組んだこと

こちらはバージョンアップ時の実際の Pull Request です。

続きを読む

サーバサイドの進捗に依存しないための Next.js x GraphQL のフロントエンド開発の工夫

こんにちは!
マネーフォワード クラウド横断本部のWebエンジニアの はるやま (@linnefromice) です。

現在クラウド横断本部では BtoB 向けサービスのリプレイスプロジェクトの開発を行っており、今回は とフロントエンド開発においてそのプロジェクトで悩んだ点とそれに対する工夫の紹介をさせていただきたいと思います!(Special Thanks かわかみさん(@thinceller)、一緒にアーキテクチャの実現とこのフローを考えてもらいました)

プロジェクトの特徴

今回のプロジェクトはリプレイスのため、既存のサービスで実現している機能の再現/改善または新規機能の開発を行うのですが、

  1. 現行サービスのコアモデル/データをベースに扱う必要がある
  2. サービスの特徴として、他のクラウドサービスとの連携により実現したい機能が多い

のような特徴があります。
これらの特徴により、

  • サーバサイドの開発
    • 要件定義/設計および他サービスとの連動の詳細設計など上流でやるべき活動のコストが高く、すぐ開発着手はできない状態
  • フロントエンドの開発
    • リプレイスにおける機能要求/要件整理と現行システムの挙動の整理ができれば、デザイン->開発とサーバサイドより比較的早く開発着手ができる状態

フロントエンドがサーバサイドより比較的早く開発着手ができる状態なので、サーバサイドに極力依存しない開発フローで出来る限りproductionレベルのフロントエンド構築を進める方法を考えました。

続きを読む

Github Actionsを利用して作業を自動化してみよう

こんにちは。
CTO室マイクロサービス推進部で働いている元(Won)です。

マイクロサービス推進部では、Github Actionsを利用した自動化の取り組みを進めています。
今回は、以前のブログ記事で紹介した「メール取込」の開発で行われている自動化の取り組みと、改善した内容について紹介します。

目次

  1. Github Actionsとは?
  2. Issue作成自動化
  3. PR作成自動化
  4. まとめ
  5. 終わりに

Github Actionsとは?

https://github.com/features/actions
Githubイベントをトリガーにして一連のワークフローを実行する機能です。

Github Actionsのトリガーで利用される例としては

  • Issue
    • open
    • close
  • Pull Request
    • open
  • Scheduled events(定期実行)

などなど多くのイベントを扱うことができます。

続きを読む

本番稼働中のEKSクラスタにCluster Autoscalerを導入した話

こんにちは。
マネーフォワードでエンジニアとして働いているgotoken(@kennygt51)です。
今回は、当社の提供するサービスの一部が稼働しているEKSクラスタにCluster Autoscalerを導入した話をします。

Cluster Autoscalerとはなにか

Cluster AutoscalerとはKubernetesクラスタのNodeのオートスケーリングを実現するツールです。需要に応じてKubernetesクラスタのNodeを自動的に追加・削除します。

Cluster Autoscalerがトリガされるタイミングは2つあります。Nodeが増えるタイミング(スケールアウト)と、Nodeが減るタイミング(スケールイン)です。

スケールアウトはリソースが足りない状態になるとトリガされます。ここでいう「リソースが足りない」とは、Podが起動できない状態になった(Pending状態のPodが存在する)という意味です。逆にスケールインは、リソース過多の状態になるとトリガされます。「リソース過多」とはPodのResource RequestsをみたときにそのNodeで動いているPodが他のNodeで動かせるという意味です。

つまり、クラスタ全体やNodeのロードアベレージが上下した際にスケールするのではなく 「Pending状態のPodができたタイミングであったりNodeのリソースに対して稼働中のPod数が少なくなったタイミングでスケールする」 という挙動になります。

なぜCluster Autoscalerを導入しようとしたのか

実は当社のEKSクラスタは当初、Cluster Autoscalerを導入していませんでした。

理由としては次の2点です。

続きを読む

StepFunctionsを使ってSageMakerエンドポイントのデプロイを実行する

こんにちは、CTO室AI推進部@ken11です。
みなさんカナリアは好きですか?
僕は大好きです。
華麗なパスさばき、高速ドリブル、迫力のシュート、カナリア軍団ブラジル代表のプレーはいつ見ても美しい…

ええ、もちろんここはエンジニアブログなのでサッカーの話をしに来たわけではありません。サッカーの話がしたい人は恵比寿に来てもらえれば夜な夜なCLの試合を見守る僕とサッカー談義を繰り広げることが可能かもしれません。

今日話したいのはカナリアはカナリアでもカナリアリリースの話です。
SageMakerエンドポイントってカナリアリリースできるの?

SageMakerエンドポイントのデプロイ

結論からいえば、頑張ればカナリアリリースできます。
そもそもSageMakerエンドポイントってデプロイ作業とかみなさんどうしてますか?

続きを読む

マネーフォワードは 一般スポンサー として JSConf JP を応援します

皆さんこんにちは、技術広報のluccafort(ルッカフォート)です。

マネーフォワードは 一般スポンサー として JSConfJP を応援させていただきます!
マネーフォワードではJSConf JPのORGANIZING TEAMメンバーである古川陽介さん(@yosuke_furukawa)に技術顧問をしていただき、日々さまざまなフロントエンドの相談や月イチ社内勉強会を開催していただいています。

よりユーザに価値を届けていくためにもフロントエンドへの投資は必須であり、なによりも ~~古式ゆかしい~~ Ruby on Railsのフロントエンドをよりユーザ体験が向上するものへと大刷新していきたいと考えています。

【開催概要】
日時:2021年11月27日(土)
主催:日本Node.js協会

【参加申込】
以下のイベント申込ページよりお申込みください。
https://jsconf.jp/2021/

フロントエンドをよりパワフルに前進させるにはエンジニアの力がまだまだ必要です。
JSConf JPを通してマネーフォワードに1mmでも興味を持ってもらえれば嬉しいと考え、このたびスポンサードをさせていただきました。

マネーをフォワードする会社のフロントエンドを我々と一緒にフォワードするエンジニアのかたのご応募をお待ちしています。
株式会社マネーフォワード エンジニア の求人一覧

とだけ書くと採用目的だけかと思われてしまいますが、テックコミュニティの交流を通してよりコミュニティ全体が活性化し楽しんでいただけると嬉しいです。
奇しくもコロナ禍でよりコミュニティの大切さを再認識することとなり、マネーフォワードとしてJSConf JPにスポンサードできることを嬉しく思っています。

マネーフォワードではテックコミュニティに対するさまざまなコントリビューションを応援しています。
スポンサードだけではなく、OSSに対するコミットやIssueの報告、その他テックコミュニティの運営などできる範囲でのコントリビューションを実施しています。
今後もテックコミュニティへの貢献を継続していきたいと考えていますので、よろしくお願いします!

続きを読む

PrivateなCocoaPodsライブラリの作り方

こんにちは、皆さんエッジで機械学習してますか?僕はしています。
CTO室AI推進部の幸野です。
CTO室AI推進部については、以前noteを書いたのでこちらを御覧ください。
AI推進部って何だ?
初めての技術ブログ投稿となる今回は、iPhone, iPadで機械学習(ML)を実行すべく非公開なCocoaPodsライブラリを作成した話です。

背景

MLモデルをサービスに導入する際、スマートフォンで実行できると、サーバとの通信が発生しないためパフォーマンスに大きく利があります。また、ユーザのセキュリティも担保できます。
一方、アプリにML機能を追加する場合、MLに馴染みのないアプリエンジニアに実装をお願いすることは学習コストの観点から厳しいことも多いですし、MLエンジニアがアプリのソースコードに手を入れると密結合となり、保守性が下がってしまいます。
そこで、Swift向けの依存管理ツールであるCocoaPodsでML機能を提供し、アプリと疎結合な関係にすることで開発しやすい環境を実現しました。

モチベーション

「iOSアプリ開発もSwiftも何も分からん」状態で、社内向けの非公開CocoaPodsを作成するにあたり、情報が散らばっており少し苦労したため、非公開CocoaPodsの作り方をここに纏めます。

用意するもの

  • Xcode(13.0)
  • GitHubレポジトリ
    • プロジェクト用とCocoaPods用1つずつ
  • CocoaPods
  • Pod化したいプロジェクト

続きを読む

転職の不安を吹き飛ばす、入社2週間で溶け込むマネーフォワード流オンボーディング

こんにちは。
2021年10月からマネーフォワード クラウド勤怠の開発チームで働いています、VTRyo です。

今回は、入社2週間という圧倒的短期間ではありますが、マネーフォワードのクラウド勤怠グループチームがどのように新入社員を受け入れているのかをお伝えできればと思います。(短期間で経験したことだからこそ意味があるのだ!)

  • 入社1日目
  • 入社2日目〜7日目
  • 入社8日目〜14日目

これからマネーフォワードに入社される方、弊部署に所属される予定の方、弊部署に興味のある方はぜひ最後までお付き合いください。

入社1日目

前職で残した39日間の長い有給を終え、僕はマネーフォワードの入社アシスト用Slackにログインしました(事前にサインインする)。

人事さんからメールで案内された時間に従って、PCを受け取りに初出社。田町の大きな高層ビルの下につくと、(SES経験があるため)お客さんの現場に来たかのような錯覚に陥ります。
上がって受付につくと、きれいなオフィスがお出迎え。今日からここは弊社です。

PCを受け取り、一通り必要なセットアップを済ませます。

続きを読む