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とぼくです、他が全員アイコンでウケる〜。

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

続きを読む

Goのcontext.Contextに入れる値をリクエストスコープに限る理由

こんにちは!
京都開発本部テクニカルアーキテクトグループの櫻(@ysakura_)です。
クラウド会計Plusの性能問題の解決を担当しています。

先日Goの開発をしていて、 context.Contextに入れる値をリクエストスコープに限るべき理由をパッと説明できない事がありました。
そこで、自分なりの意見を纏めてみました。

 

はじめに

contextパッケージのコメントによると、Contextに入れる値はリクエストスコープなものに限るべきとされています。

// Use context Values only for request-scoped data that transits processes and
// APIs, not for passing optional parameters to functions.

contextの値は、プロセスやAPIを通過するリクエストスコープなデータに限って使ってください。
関数にオプショナルなパラメータを渡す目的で使うべきではありません。

 

Contextに入れる値を限定するべき背景

大きな理由として、ContextにおけるValueの扱いが難しい事が挙げられます。
Contextを使う必要がなければ、グローバル変数や構造体で値を持つ方が良いです。
扱いが難しい点に関して、以下の2点を取り上げます。

  • Valueの型がinterface{}である事
  • 推奨されるValueへのアクセス方法

 

Valueの型がinterface{}

ContextにはKey-Valueの形式で値を入れる必要があります。
その際の型は、空のインターフェース(interface{})になります。

続きを読む

社内で短期留学してきました!

こんにちは。マネーフォワード京都開発部の伊藤です。

京都開発拠点では技術力の違うチームへの短期留学ができないか計画しています。

先日の『マネーフォワード京都拠点について気になる事』で紹介していた『社内短期留学制度』が始まりまして、早速活用してみました。

とても良い体験だったのでレポートしたいと思います。

 

社内短期留学制度

特定タスクをテーマに公募が行われ、別チームのメンバーが応募できます。

現在所属するチームから異動することなく、他チームにタスクベースでジョインできる制度です。

誰でも応募できて、留学の期間なども前もって設定されます。

 

テクニカルアーキテクトグループへ留学 ~ Docker, AWS に触れて~

京都開発拠点はメンバーが増えており、複数のチームがあります。
今回は、私が所属する『会計Plus開発チーム』から『KTA(京都開発本部 テクニカルアーキテクトグループ)』に短期留学しました。

続きを読む

京都拠点でRailsのフルリモートなスクラム開発をした知見

こんにちは!
マネーフォワード京都開発拠点の井上(@ino_dev)です。

マネーフォワードさんの中では現状比較的珍しく(?)、業務委託のメンバーとして、2019年12月頃から開発をお手伝いさせていただいております。
今日はそんな自分の立場から客観的に見て、いつもの京都拠点でのスクラム開発において、ここが良いなーというところなどをお話しできればと思っています。

 

目次

  1. マネーフォワードの京都拠点って何やってるの?
  2. 緊急事態宣言でフルリモートでのスクラム開発に
  3. リモートワークでのスクラム開発の知見
  4. リモートワークでの反省
  5. 京都拠点メンバーを大募集中だそうです

 

マネーフォワードの京都拠点って何やってるの?

京都拠点では主に、IPOを目指されている企業向けに内部統制を強化する機能を追加した「クラウド会計Plus」と言うサービスの開発を行っています。
他にもいくつかのプロジェクトが並行して動いていますが、スクラムでクラウド会計Plusの開発に携わっているエンジニアメンバーが中心となっています。

続きを読む

学習をフォワードする取り組み 〜 京都拠点〜

京都開発拠点所属 マネーフォワード会計Plusチームの @luccafortです。
最近 TypeScript Deep Dive を朝会で読んでいるのですが大変面白いですね、JS苦手だー!というかたにもオススメです。

さて今日はぼくがマネーフォワードに入ってから享受してきたさまざまな「学習をフォワードする取り組み」をご紹介しようと思います。

マネーフォワードにはいろいろな学習を加速させる仕組みや取り組みがあって大変ハッピーなのでエンジニアブログで世間にオープンにすることで「マネーフォワードいいじゃん!」とか「マネーフォワードよさそう!」という流れに繋がってほしいと思ってます。

あわよくばそれで京都拠点の採用応募や採用者にインパクトしてめっちゃ優秀なエンジニアや優秀な若手エンジニアと働けたら最高!!!っていう邪な気持ちで書いています。

|д゚)チラッ

|д゚)……オマチシテマス

|彡サッ

 

地方におけるエンジニアの学習コストは高い

東京にいると毎日のように何かしらの勉強会やカンファレンス、イベントが溢れており自分から情報を取りにいかなくても自動的に大量の情報がインプットされやすいという特殊な状態があります。

ところが地方にはそもそもの分母が東京よりも少ないため、勉強会やそれらのイベントの数も比例して少なくなります。
京都と東京でいうと人口差はおおよそ10分の1なのでそもそもエンジニア・デザイナーの数も推して知るべしというところです。

続きを読む