accepts_nested_attributes_forを使わず、複数の子レコードを保存する

この記事は Money Forward Advent Calendar 2018 15日目の記事です。

こんにちは、マネーフォワードでマネーフォワードクラウドの開発をしている @kamille です。
今年の10月に新卒で入社して、今はマネーフォワードクラウドの全体的な課題を解決する横断チームにてRailsエンジニアをしています。
今日はRailsの accepts_nested_attributes_for メソッドについてお話したいと思います。

はじめに

突然ですが皆さん accepts_nested_attributes_for は好きですか?僕は複数リリースの同時保存・更新が超お手軽にできて素敵なコンセプトだなと思います。
でもこのメソッドはあまり評判が良くなく、特にRails生みの親のDHHがaccepts_nested_attributes_forを消したいと言っていたり、代わりとなる公式なformオブジェクトのプロジェクトが立ち上がったり(残念ながら途中でなくなってしまったようです 😥 )している等、あまりいいメソッドと思われていないようです。

社内でも accepts_nested_attributes_for は今後は使わないようにして、既存のコードもリプレイスしていく活動が始まっているので accepts_nested_attributes_for を使わずに、 FormObject を使って複数リリースの同時保存を行うコードを書いてみました。

続きを読む

[iOS 12]Siri Shortcutsの最小実装 – Intent編

この記事は iOS (その2) Advent Calendar 2018 の 14 日目の記事です。

こんにちは。
iOSエンジニアの玉井(@tamadon3776)です。

今回はマネーフォワード MEのiOSアプリで実装したSiri Shortcutsについてご紹介します。

Siri Shortcutsの実装方法はNSUserActivityを用いた方法とIntentsを用いた方法がありますが、本記事ではIntentsを用いたSiri Shortcutsの最小実装 だけ を紹介します。

NSUserActivityを用いた方法については、本Advent Clendar1日目の[iOS 12]Siri Shortcutsの最小実装 – NSUserActivity編 が参考になるかと思います。
タイトルを真似させてもらいました。

実装方法を理解するためにサンプルアプリを作成しました。
SiriShortcutIntentSample

続きを読む

新卒から始めるアカウントアグリゲーション

これは MoneyForward Advent Calendar 2018、14日目の投稿です。

新卒でマネーフォワードに入り、アグリ村で働いているつっきーです。

アグリ村は、正式名称はアカウントアグリゲーション本部で、マネーフォワード社内で「アグリ村」と呼ばれています。
ここではアカウントアグリゲーション(以下、アグリ)サービスと呼ばれる銀行や証券、仮想通貨、ECサイトなどの金融機関との連携を行っています。

アグリが目指す未来はこちらに書かれているので、ぜひご一読ください!(3年前の記事)

https://moneyforward.com/engineers_blog/2015/08/25/toward-the-future/

アグリ村に新卒で入ったのは僕一人で、他の部署がいろいろ規模拡大やメンバーが入れ替わっているなか、メンバーの入れ替わりが少ない安定した部署です。

業務の面白さとかあまり書かれてない気がするので、アドベントカレンダーの力を借りて書いてみます。

そもそもアグリってなにしてるんだっけ?

続きを読む

マネーフォワード社内PRに見られるRubyの書き方について (1)

エンジニアの澤田です。

マネーフォワード社内のGitHubプルリクエストに見られるRubyの書き方について、気になったところをもとにして、関係することを連載で考察していきます。

※ 題材とするコードは、社内のGitHubプルリクエストで実際に見かけたコードから問題点に関係する部分を抽出し、抽象化したもので、見かけたものそのままではありません。

配列の生成

初回の今回は、配列の生成について考察します。

プログラム中で使う配列には、他の情報から導かれない一次的なものと、もととなる他の情報を変形させて得られる二次的なものがあります。
前者の場合、次のようにプログラム本体や設定ファイルなどのどこかにリテラルとして書くより他にありません。

[23, 12938, 382]

対して、上の配列が既にどこかに書かれていて、その各要素を2倍にして次の別の配列を作った場合、これは後者の例です。

[46, 25876, 764]

あるいは、次のハッシュがどこかに書かれているとして、

続きを読む

新卒が絶対にサンタさんに来てもらうために Rails バージョンアップを頑張った話

この記事は MoneyForward Advent Calendar 2018 の 11 日目の記事です。

昨日は iOS デベロッパーの tamadon さんの 育児とやっていきの両立について という記事でした。

育児とやっていきの両立が偉大すぎて、僕には一生到達できぬ高みなんじゃないかとビビっています。

自己紹介

改めて、2018 年 4 月入社の新卒でマネーフォワードクラウドの横断チームにて Rails のエンジニアをやっています、古濱 (@furuhama) といいます。

僕が最近メインでやっていた Rails のバージョンアップとその他の改善のお話に関して書いてみたいと思います。

この記事で扱うこと

この記事で書くこと

  • バージョンアップ作業をやるときに考え・取り組み
  • 継続的にサービスをメンテナンスしていくための取り組み

この記事で書かないこと

  • バージョンアップ作業の具体的で詳細な手順
  • バージョンアップ作業時にハマった問題の解決方法

 

続きを読む

はじめまして! 京都開発拠点

この記事は マネーフォワードアドベントカレンダー🎄 の2日目の記事です!


みなさん、こんにちは。
マネーフォワードでインフラエンジニアをやっている村上です。

 
先日以下の発表させていただきました。
関西地区(大阪・京都)における営業・開発力強化の取組みに関するお知らせ:日本経済新聞

 
それに伴いエンジニアの募集を始めています。
京都にプロダクト開発拠点を新設!コアメンバーとなってくれるエンジニア募集!

 
私が京都拠点の立上げをしていることもあり、
関西のエンジニアの皆様へ向けて「え?マネーフォワード、関西来るってよ!?」というお話をさせていただきます。

続きを読む

Money Forward Advent Calendar 2018

みなさん、こんにちは。

2018年も残すところあとわずかとなりましたね。。。

ん、12月?

12月といったらアレだろ。アレ。

ということでマネーフォワードでもAdvent Calendarやります。

Money Forward Advent Calendar 2018

techな話だけでなく、マネーフォワードのみんな(エンジニア、デザイナー、CS、マーケティング、営業、etc)が色々なお話をします。

年の瀬のお忙しい時期かと思いますが、お楽しみいただければ幸いです。

続きを読む

CircleCIのPerformance Planが控え目に言って最高という話

こんにちは。18新卒でサービスインフラチームの小笠原 (@0gajun) です。

今日はCircleCIのPerformance Planを用いて、CI環境の改善を行った話をします。
 (決してCircleCIの回し者ではありません 😉 )

 

Summary

  • 今までJenkinsをCI環境として用いており、様々な問題を抱えていた
  • CI環境を改善するためにCircleCIに移行した
    • CircleCIにはPerformance Planという従量課金プランが存在する
      • コンテナの並列実行数に制限がなく、実行時間ベースでの従量課金
      • ただし、まだ Early Accessの段階。
  • JenkinsからCircleCIに移行することで、次のメリットが得られた
    1. CI時間の短縮
    2. CIジョブがキューイングされる問題からの開放
    3. CI環境のメンテナンスコスト削減
    4. CIコストの削減
  • CircleCIのPerformance Plan最高

 

マネーフォワードにおけるCI環境のこれまで

マネーフォワードでは長い間、JenkinsをCI環境として用いてきました。
しかしながら、社内のJenkinsを用いたCI環境では以下の問題が生じていました。

続きを読む

プロダクトにSwiftGenを導入してタイポ0の世界を作る

こんにちは。
自動貯金サービス『しらたま』でiOSエンジニアをしています、Objective-ひろC(@hirothings)です。

今回はマネーフォワードのiOSアプリで活用しているSwiftGenというコードジェネレータについてご紹介します。

 

SwiftGenとは?

下記のように、タイプセーフにリソースが扱えるコードジェネレータツールです。
文字列直打ちの指定と違って、typoでランタイムエラーになることを防ぐことができます。
https://github.com/SwiftGen/SwiftGen

// Before
imageView.image = UIImage(name: "icon20Star")

// After
imageView.image = Asset.Common.icon20Star.image

リソースの削除や名前の変更があった場合は、コンパイル時にエラーになるので便利です。

続きを読む

マネーフォワードに新卒入社してからの3ヶ月を振り返ってみた

こんにちは!18新卒の内西です。

前の記事では新卒研修について紹介しましたが、
今回は新卒研修以外のプライベートや業務について、入社3か月に体験したことを紹介させていただきます。

 

入社から2週間で、CTOと一緒にハッカソンに出てきた

もともと短期間に何かを作るのが好きで、趣味で2ヶ月に1度程度のペースでハッカソンに出場していました。
そして、入社の翌週にAQUAのハッカソンがある事を知り、行きたい!とウズウズしていました。

そんな時、社内の部活動「MFハッカソン部」の存在を知り、早速チャットで募集をかけてみました。
するとCTOの中出さんから「行こう!」との一言が!!

えっ!新卒まだ2週間の若造と一緒に行ってただけるなんて!他社だったら絶対ありえない!!これはいくしかない!断然燃えました。

社内懇親会でデザイナーの稲毛さんを誘い、現地でフロントエンジニアのいのもとさんと合流し、MFハッカソン部で参戦!!

続きを読む