中学生ハルキのエンジニア体験記

こんにちは。ハルキです。
4月から中学二年生になりました。

僕はこの春休み、パパが働いているマネーフォワードに職業体験インターンという形でお世話になりました。
プログラミングを始めたきっかけは、Scratchという子供向けのプログラミング学習サービスです。
小学校3年生の時にどハマりし、そこから6年生まで夢中になってやり込みました。

ただ、やはり子供向けなので最低限のことしかできず卒業。
その頃、マネーフォワードの方が開催してくれたバーベキューで酒井さんと出会い、そこでPythonを教わりました。
(酒井さんはビジネスマンなのにプログラミングもできちゃうすごい人なのです!)

そこから、Chatworkで酒井さんとコミュニケーションを取るようになり、プログラミングで悩んだことがあったら酒井さんに報告して、バグがあれば直し方を教わるようになりました。
酒井さんは面白い記事を紹介してくれたり、それまで誰にも相談できなかったことに答えてくれたので、それはすごく嬉しいことでした。

それからしばらくして、マネーフォワードクラウドの渋谷さんから「ハルキくんにぜひインターンにきてほしいです!」と誘っていただき、パパも「よし、じゃあ頑張ってみる?」ということで今回の職業体験がスタートしました。

 

一日目

今回の職業体験インターンで大変だったのは(もちろんお仕事も大変だったのですが)、満員電車での通勤です。僕は普段全く電車に乗らないので、初日は満員電車と路線を覚えるのがすごく大変でした。

続きを読む

ActiveRecordのincludes, preload, eager_load の個人的な使い分け

マネーフォワード福岡拠点の責任者をしております 黒田 です。
普段はRailsエンジニアとして マネーフォワードクラウド経費 の開発を担当しています。

普段Railsを使って開発されている方であれば、N+1問題に悩まされた経験は大抵の方がおありではないでしょうか。

N+1なクエリの発見には bullet を使うと良いですね。
bulletを使うとN+1なクエリを発見してくれ、さらに、具体的にここにincludesを追加しなさいと指摘までしてくれるので大変助かります。

しかし、先日bulletに言われるがままにincludesを付けてみたところ、N+1は解消したものの、スロークエリに見舞われることとなったので、includes,preload, eager_loadについて改めて調べてまとめてみることにしました。
(ソース調査したRailsのバージョンは 6.0.0.beta3 です。)

 

includesの挙動については正しく知っておきたい

includesの挙動について、「preloadeager_loadをよろしく使い分けしてくれるもの」と認識しているRailsエンジニアは結構いるのではないでしょうか?

そういったエンジニアの方の中には、先日の私のようにN+1問題の対策で深く考えずに「includesつけとけばOKでしょ。ほらbulletのN+1のアラート止まったし。」という方もいらっしゃるのではと思っています。「とりあえずincludes」で、データが少ないうちは問題にならなくてもデータが増えてきた時に問題が顕在化する事がよくあります。

続きを読む