ActiveRecordを拡張するgemでテストを書くには?

エンジニアの越川です。ActiveRecordを拡張するgemを作りたい。そんなときテストで使うダミーのモデルのテーブルをどう作るかに悩みますね。

本格的なRails拡張ではrails pluginコマンドを用いて開発することが多いと思います。その際は自動で作成されるspec/dummy配下のダミーアプリでmigrationを書くのが楽です。

一方そこまで大きくないActiveRecordの拡張ではもっと手軽に書きたいですね。

例として、protectedカラムがtrueのとき、destroyが出来ないようにするActiveRecordの拡張を考えてみましょう。(今回作成したgemは、github.com/ppworks/kienaideに置いてあります。)

続きを読む

Swiftで学ぶ関数型 〜 immutable 〜

こんにちは、マネーフォワードでスマホアプリの開発を担当しています高地です。

ちょっと釣り気味なタイトルになっていますが、Swiftはマルチパラダイム言語と言われており、関数型のエッセンスも持っています。
簡易的な文法の言語ですので、関数型を学ぶきっかけづくりには、丁度よい言語だと思います。今回は、Swiftを使ってimmutableについてピックアップしてみました。

記載してありますサンプルに不備がありましたので、修正を行いました。ご指摘下さった方ありがとうございました。
(2015/03/24)

immutable(イミュータブル)

そもそもimmutableとは何でしょうか?wikipediaによると

オブジェクト指向プログラミングにおいて、イミュータブル(immutable)なオブジェクトとは、作成後にその状態を変えることのできないオブジェクトのことである。対義語はミュータブル(mutable)なオブジェクトで、作成後も状態を変えることができる。…イミュータブルなオブジェクトを使うと、複製や比較のための操作を省けるため、コードが単純になり、また性能の改善にもつながる。

一度作成された、オブジェクトは不変であるということですね、これをSwiftで説明していきます。

続きを読む

【レポート】2/19 ベストアプリ勉強会@Sansan

みなさんこんにちは、エンジニアの西信です。

今回のエンジニアブログは、2/19(木)にSansan株式会社にて開催されました、ベストアプリ勉強会@Sansanのイベントレポートをお届けします。

本イベントでは、弊社のCTO浅野と黒田が発表させていただきましたので是非スライドをご覧ください。
 

概要

ベストアプリ勉強会@Sansan

Google Play ベストオブ 2014に選出されたEightマネーフォワードFrilのエンジニアが集結!
モバイルアプリ開発の裏側や開発体制など、3社×2セッションの合計6セッションでざっくばらんにお話ししました。
 
 
以下、セッションの様子です。(敬称略)

続きを読む

【レポート】MF Geeks Night (2015年2月)

1601051_1044091815606499_1353010086004415704_n

エンジニアの越川です。
今回は、2/19(木)夜に開催したマネーフォワードのエンジニアイベント「MF Geeks Night 2015-02」をご紹介します。

同時間帯にベストアプリ勉強会@Sansanも開催していましたが、それはまた別な投稿で紹介!

今回もゲストをお招きして、ピザをつまみにビールで乾杯。
 

なぜrailsなのか

まず越川から「なぜrailsなのか」の発表を行いました。

10550964_1044091838939830_6736562048534193227_n

続きを読む

10分コーディング! Rubyでつくる Slack時報

こんにちは、エンジニアの杉本です。
マネーフォワードではRailsエンジニアとして働いています。

エンジニアはパソコンに向かっている時間が比較的長いため、一日のメリハリがなくなりがちです。

そこで今回は、APIを使ってSlackに時報を流す方法をご紹介しようと思います。

今回はHubot等は利用せず、Rubyを使った方法をお伝えします。
 

初期設定

まずはスクリプトの置き場所を作ります。
ディレクトリを作成してGemfileを生成します。

続きを読む

もうひとつのデザインについての話をしよう

こんにちは、Javaエンジニアの内波です。

前職では企業向けの業務システムをカスタムで作っていたりしました。

今回は、その前職で新人の頃に先輩から教わり、今後もずっと鍛えていかなければいけないと思っている、「システムのデザイン」についての考え方をお話しようと思います。
 

ロジックではなくデザインを考えろ

あるシステム開発プロジェクトの終盤、機能テストにて問題を発見しました。

その原因は単純なものに見え、それを解決するための対応案をすぐに考え付いた私は、意気揚々とその解決策を先輩へ伝えましたが、あっさりと却下されました。

先輩曰く

目先のことに捕われすぎている。
君が言っているのは今回の問題を解決するための『ロジック』だ。
ロジックを考えてはいけない。我々はシステムを設計しているんだ。
ロジックではなくデザインを考えなければいけない。

続きを読む

Railsでリファクタリングにオススメな gem 5選

みなさん、こんにちは。
ウェブ・サーバーサイドを担当しています、Railsエンジニアの黒田です。

マネーフォワードも早いもので、サービスインしてから2年以上が経過しました。
サービスをご愛顧してくださっている皆様には、心から感謝しております。
 

さて、今回のエンジニアブログは「リファクタリング」についてです。

マネーフォワードのように、ユーザーファースト&デリバリー優先で爆速開発を進めていると、サービスとしてはイケてても、コード的にイケてるとは言い難い部分が発生してしまいがちです。

「思いやりのないコード」「可読性が悪いコード」「必要以上に複雑なコード」は、バグ発生率を高め、開発スピードを低下させ、何よりエンジニアの気分を憂鬱にさせてしまいます。。。

マネーフォワードでは継続的かつ積極的にリファクタリングの時間を創る取組みをしていますが、そのなかで今回はRailsのリファクタリングでとても便利に活躍してくれているGem 5選を紹介したいと思います。
 

1. draper

続きを読む

Safari Books Online のすすめ - エンジニアなら当然読んでおきたい英語の書籍をお得に読む方法

こんにちは。エンジニアの山口です。

皆様、Safari Books Onlineをご存知でしょうか。
Safari Books Online とは、O’Reilly Media 社の子会社で、デジタルライブラリーサービスを提供している会社です。
と言われてもよくわからないと思いますが、要するに月額課金で O’Reilly Media などの書籍やカンファレンスの動画などが見放題のサービスを提供する会社です。
safari-logo
今日は Safari Books Online のデジタルライブラリー愛用者の私が、同サービスの良い所を紹介していきたいと思います。
 

豊富なラインナップ

一番の魅力は、なんといっても豊富な書籍のラインナップです。

続きを読む

Railsに慣れたRubyistに捧げるUnderscore.js便利メソッド 5選

マネーフォワードではサーバーサイドのエンジニアがRails/JavaScriptともに担当しています。

どうしてもRailsに比べJavaScriptは記述量が気になることが多かったのですが、Underscore.jsを入れてから劇的に便利になりましたので、ご紹介します!

http://underscorejs.org/
 

1. where, findWhere

published_books = books.where(published: true)

ActiveRecordを使っているとこのようにとてもシンプルにかける処理ですが、JavaScriptで基本に則って書くと、

続きを読む