おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Rails Developers Meetup で綺麗なテストコードの書き方について発表した

昨日のRails Developers Meetupで綺麗なテストコードの書き方について発表してきました。

Rails Developers Meetup #1(東京会場) - connpass

資料はこちら

余談

もともと数年前くらいから、テストコードの書き方についてまとめたいなーと思っていたのですがなかなかキッカケがなくて手を付けられていませんでした。今回のミートアップ駆動で一通り形にするところまでいけて今とてもスッキリした気持ちです 😇 もっと多くの人にテストコードの書き方を意識してもらいたいので、また機会があればどこかで喋りたいですね。

昨日発表した内容はGitHubリポジトリにまとめたものの一部です。綺麗なテストコードの書き方について詳しく知りたい方は下記のリンクからどうぞ。

willnet/rspec-style-guide

お願い

今回まとめた内容はあくまで僕が考えるテストコードの書き方なので、異論反論あると思います。意見ある方はIssueなりPull Requestなり、ブログエントリにまとめるなりしていただけるととても嬉しいです!

メドピア開発者ブログに寄稿した

お手伝いしているメドピアさんのブログに、Railsのコード可読性を保つための知見の一つであるform objectについて寄稿させていただきました。

form objectを使ってみよう - メドピア開発者ブログ

最近は技術顧問として複数社のエンジニアに対して、主にRailsアプリケーションを可読性を保ちつつ作るための知見を伝えるような仕事をやっています。具体的な仕事内容については別エントリで書くかもしれません。

寄稿した内容の補足

エントリ後半の、「Active Recordモデル中のvalidationやメソッドをform objectに移してモデルをスリムにする」話はジョーカーさんのツイートのように、チーム全体で徹底できていないとダメなので取り入れるには若干のハードルがあります。

ただ、エントリ前半のActive Recordを使わないケースでform objectを使うのはデメリットがほぼないはずなので全国的に広まってほしいなという気持ちです :pray:

寄稿先のエントリでも書きましたが、複数の会社で同じことを何度も説明するのは大変です><。説明回数を減らすために、他の知見もこのブログやお手伝い先のブログなどで積極的にまとめていくつもりなのでご期待ください*1。もし、うちにも寄稿してほしい!という会社さんありましたらご連絡ください*2

*1:忙しいので時間かかるかもしれません><

*2:予め断っておくと有料です><

株式会社ウィルネットを設立した

いわゆる法人成りです。

かっこいい会社の名前が全然思いつかず*1、結局ハンドルネームを採用しました。このブログのタイトル(おもしろwebサービス開発日記)もだいぶアレな感じで、自分の命名センスの無さに震えますね><

単に名義が変わっただけで、特に何があるわけではないのですがこれからも引き続き頑張っていこうと思います。よろしくお願いします。

一応例のリスト置いておきますね (( ⁰⊖⁰)/)

*1:あまりに思いつかなかったので株式会社ベホマズンなどが候補に入っていた

ソフトウェア開発者採用ガイドを読んだ

読みました。自分はフリーランスなので直接誰かを採用することはないですが、お手伝いしている会社の方に「どうやったらいいwebエンジニア採用できますかねー?」と聞かれることがよくあるので、そのヒントになるかなと思い。

ソフトウェア開発者採用ガイド
Joel Spolsky
翔泳社
売り上げランキング: 406,688

感想

基本的に自分の考えているやり方で間違ってなさそうだという気持ちになれました。

  • エンジニアにとって良い環境を整える
  • いいエンジニアはまず応募してこないので基本こちらから出向いて探す
    • コミュニティやインターンシップなどを利用する
  • 面接の時は、その人が問題に対してどのようにアプローチするのか見る
  • 迷うくらいの人であれば採用しない

よくweb上で見かけるエンジニア採用関係の文章は、この本が元になっていることが多いので違和感なく読めて当然なのかもしれません。

しかし「どうやったらいいwebエンジニア採用できますかねー?」にはやっぱり「頑張るしかないですね」としか答えようがないですね。難しい。

Rails 5.x について発表した

昨日開催された、Increments ++ Tech TalkにてRails 5.xというタイトルの話をしました。

内容はWEB+DB PRESSの連載ではページ数の関係で載せられなかったRails 5.0のトピックと、Rails 5.1で入る(入りそう)な機能の話です。分量が多くなってしまい、いろいろ端折りながら喋りました。

スライド中でも触れていますが、発売中のWEB+DB PRESS Vol.93でRails 5のメジャーな変更について取り上げ済みですので、気になる方はぜひ一読ください。

WEB+DB PRESS Vol.93
WEB+DB PRESS Vol.93
posted with amazlet at 16.08.19
原田 騎郎 吉羽 龍太郎 松浦 隼人 須藤 涼介 生沼 一公 森下 雅章 前島 真一 鍛治 匠一 伊藤 直也 のざき ひろふみ うらがみ 高山 温 佐々木 健一 わかめ まさひろ ひげぽん 遠藤 雅伸 海野 弘成 はまちや2 竹原 藤田 正訓
技術評論社
売り上げランキング: 10,216

また、来週発売予定のvol.94ではRails 5で標準サーバになったPumaをテーマにしています。こちらも気になる方はどうぞ。

WEB+DB PRESS Vol.94
WEB+DB PRESS Vol.94
posted with amazlet at 16.08.19
藤原 俊一郎 朽木 拓 八木 俊広 吉田 太一郎 うらがみ のざき ひろふみ うさみ けんた 水嶋 淳貴 佐々木 健一 柴崎 優季 前島 真一 伊藤 直也 遠藤 雅伸 ひげぽん 海野 弘成 はまちや2 竹原
技術評論社
売り上げランキング: 650

LTなどではなくて、きちんと喋るのは久しぶりだった気がします。素晴らしい機会を提供していただきありがとうございました > Increments 社のみなさん

せっかくスライド作ったので、機会があれば再演しにいこうかなーとも思っています。うちの勉強会でも内容シェアして欲しい!という人いたらお声がけください(今忙しいのでタイミングなどうまく合えばですが…)。

WEB+DB PRESS でRubyの連載を始めます

今月の24日発売のVol 93から、WEB+DB PRESS で Ruby の連載をすることになりました。よろしくおねがいします。

初回の題材は、みんな大好き Ruby on Rails の最新バージョンである Rails 5 です。もうじき正式リリースとなる Rails 5 にどんな機能が追加されたか、気になる方はぜひ一読ください!

WEB+DB PRESS Vol.93
WEB+DB PRESS Vol.93
posted with amazlet at 16.06.19
原田 騎郎 吉羽 龍太郎 松浦 隼人 須藤 涼介 生沼 一公 森下 雅章 前島 真一 鍛治 匠一 伊藤 直也 のざき ひろふみ うらがみ 高山 温 佐々木 健一 わかめ まさひろ ひげぽん 遠藤 雅伸 海野 弘成 はまちや2 竹原 藤田 正訓
技術評論社
売り上げランキング: 807

ロシアンドールキャッシュでN+1を解決する

youtube に DHH がしゃべっている動画があったので観ました。

The Complete Guide to Rails Performance という、Railsのパフォーマンスを改良するノウハウが書かれた本のコンテンツ*1の一つらしく、DHH に Rails のパフォーマンスについてインタビューをしています。

英語の聞き取りに自信がないので間違っているかもしれませんが、DHH は動画中で「Russian Doll Caching で N+1 を解決できる」ようなことを言っています。

例えば投稿の一覧と著者情報を表示したいとき、次のように書くと、二回目以降、 post が変更されない限り、post.author のクエリは実行されません。

<% cache @posts do %>
  <% @posts.each do |post| %>
    <% cache post do %>
      <%= post.title %>
      <%= render post.author %>
    <% end %>
  <% end %>
<% end %>

キャッシュが十分効いている状態では includes メソッドなどで eager loading するよりも速そうですが、個人的にはなんか怖くて手を出しにくいなという印象です。

このような書き方をしている方、他にも居るようなら話聞いてみたいなー。

*1:買いましたが絶賛積読中です><