give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

「RSpecとMinitest、使うならどっち?」という発表をしてきました #kanrk06

はじめに

去る2015年7月11日、関西Ruby会議06で「RSpecとMinitest、使うならどっち?」という発表をしてきました。
今回ではこの発表に関する情報と、参加した感想等をあれこれ書いてみます。


f:id:JunichiIto:20150711143828j:plain
発表の前に客席の写真を撮らせてもらいました。会場でかい!


発表のスライド

今回使ったスライドはこちらです。


RSpecとMinitest、使うならどっち? / #kanrk06 - Speaker Deck


発表の動画(本当は練習風景)

イベント当日の動画はありませんが、発表の前に練習用に撮ったスクリーンキャストがあります。(約25分)
発表内容はほとんど同じなので、当日イベントに参加していない人もこれを見ればだいたい内容がわかると思います。


RSpecとMinitest、使うならどっち? #kanrk06 - YouTube


今回の発表で工夫した点や気をつけたポイントなど

事実と意見を分ける

今回の発表ではまず、事実と意見を明確に分けようと思いました。
「機能的な比較はここまで」というスライド(42枚目)までが事実パートで、そこから後が意見パートです。
事実と意見を分ける、というアプローチは昔読んだ「理科系の作文技術」という本を参考にしています。(本当は最初の方しか読んでいませんが・・・)

理科系の作文技術 (中公新書 (624))

理科系の作文技術 (中公新書 (624))

事実パートではできるだけ数字を使ったり、外部の資料を引用したりしてできるだけ客観性を確保しようとしました。
一方、意見パートでは僕の主観をガツンと述べました。(炎上しないかちょっと心配でしたが)
最初作ったスライドでは事実と意見が混在していて話がダラダラしがちだったので、事実と意見を分けることでメリハリが付いたんじゃないかな~と思っています。

シンタックスとフレームワークで比較の観点を分ける

20~28枚目はシンタックスの比較(xUnit形式とSpec形式)で、29~41枚目はフレームワークの比較(RSpecとMinitest)になっています。


これも最初の頃は全部ひとまとめにして「RSpec vs Minitest」という比較をしようとしていたのですが、全然話がまとまりませんでした。
しかし、内容を見直すうちに「Spec形式のシンタックスを持つ、という意味ではMinitestとRSpecは同じ仲間じゃないか」という点に気づき、観点をふたつに分けることにしました。
このおかげでシンタックスとフレームワークの比較がそれぞれしやすくなりました。

比較表を使う

シンタックスの比較とフレームワークの比較は表を使って説明しました。

f:id:JunichiIto:20150713041619p:plain

f:id:JunichiIto:20150713041725p:plain

最初は他のページと同じように箇条書きで書いていたのですが、自分で見ても場所を食う割にはイマイチ内容が頭に入ってきませんでした。
そこで思い切って一枚の比較表にまとめることにしました。
結果としてはいい具合に内容が単純化されてわかりやすくなったんじゃないかな~と思います。

テストコード初心者に配慮する

RSpecとMinitestの比較というテーマはかなりマニアックなテーマだと思います。
最初からいきなり「RSpecとMinitestはこんなところが違う!」という話を始めると、予備知識がない人は完全に置いてけぼりになってしまいそうな気がしました。
そこで最初の方のスライド(13~18枚目)ではごく初歩的な説明を入れています。

f:id:JunichiIto:20150713072055p:plain

まあ、そこからあとは結局マニアックな内容になるのでついていくのがしんどかったかもしれませんが。。。(初心者の方、すいません)

繰り返し練習する

これは今回の発表に限った話ではありませんが、発表の前は自宅で何度も練習しました。(厳密にいうと今回は8回練習しました)
練習の際は本番を想定して時間も計ります。
また、スクリーンキャストを撮って後で見直せるようにします。(最初に紹介した動画もその練習時のものです)


こうやって練習しておくと、以下のようなメリットが生まれます。

  • 本番で堂々と話せるようになる(えー、あのー、えーと、みたいな言葉が出にくくなる、客席を見ながら話せる、etc)
  • 時間が足りなくなって最後が突然駆け足になる、という事態を避けられる
  • 客席にいる人たちの視点で説明やスライドを改善できる


そのおかげで本番当日もきっちり時間通りに終わることができました。(以下のツイートがその証明)


まあ8回も練習するのはやりすぎかもしれませんが、イベントで発表する前は2~3回ぐらい実際に声を出して練習することをオススメします。


ちなみに声を出して練習することの重要性は以下の本に載っていました。

パワー・プレゼンテーション (グロービス思考シリーズ)

パワー・プレゼンテーション (グロービス思考シリーズ)

僕の発表は毎回この本を参考にして実践しているポイントが他にも多数あります。
「発表は苦手だ」という人は一度読んでみると良いかもしれません。


僕の発表に関する参考情報は以上です。
ここからは「イベント参加者」としての感想を簡単に書きます。

イベントに参加した感想等

人数すごい、会場すごい

関西Ruby会議06でビックリしたのが、その参加者の多さですね。
200人以上の人が集まるイベントになるとは思いませんでした。
(ちなみに2年前の関西Ruby会議05は100人程度だったようです)
東京方面だけでなく、関西でもRubyがだんだん盛り上がってきているのは純粋に嬉しいですね。


200人も入れる会場ってどんな会場なんだろう?と思いましたが、エムオーテックス株式会社さんの会場ホールがこれまたすごかった!ほとんど映画館ですね。
スクリーンも大きいし、客席も階段状になっているので「後ろの方だとスライドが見えない」なんていうことは全くありませんでした。


ちなみに当日の発表ではスクリーンが巨大すぎたために、必要以上にバカでかい自分の顔が映し出されてしまいました。。

f:id:JunichiIto:20150713101025j:plain
Photo: @tanaka4410さん


「魂の浮力」

Matzさんと笹田さんの基調講演をはじめ、他の発表者の方の講演やLTもテクニカルで興味深いものばかりでした。
中でも一番印象的だったMatzさんの「魂の浮力」というフレーズです。
過去のインタビュー記事に「魂の浮力」の説明が載っていたので引用してみます。

プログラマによって、情熱を注ぐ対象はさまざまだ。まつもとゆきひろのように、特定のOS(オペレーティングシステム)やCPUに依存しないプログラミング言語処理系に情熱を注ぐ人もいる。OSの実装に情熱を注ぐ人もいれば、ミドルウェアやフレームワークに情熱を注ぐ人もいる。人によっては情熱を注ぐ対象が情報システムの設計やアプリケーションプログラムの開発である場合もある。
(中略)
プログラマには「魂の浮力」があり、それぞれ最も情熱を注げる場所でプログラミングをするようになる
 

まつもとゆきひろが語る"Hellow World"までの辛さ |転職ならDODAエンジニア IT


なるほど、確かにそう言われてみると自分にしても周りの人にしても、みんな「魂の浮力」に従って動いているよな~、と思います。


あと、以前から気になっていた「MatzはどれぐらいRubyを使っているのか?」という点もご本人に直接質問できて良かったです。
Matzさんいわく、「8-9割はCを書いているので、私はCプログラマです」とのこと。
うーん、やっぱり。納得です(苦笑)。

まとめ

というわけで今回は関西Ruby会議06での発表内容と参加者としての感想を書いてみました。
当日はスタッフのみなさんをはじめ、他の発表者のみなさん、イベントに参加されたみなさん、どうもありがとうございました!
おかげで楽しい一日を過ごすことができました。
今後も一緒に関西のRuby業界を盛り上げていきましょう!

あわせて読みたい

他の発表者さんのスライドはこちらにまとめてもらっています。

関西Ruby会議06 スライドまとめ #kanrk06 - NAVER まとめ


PR:Everyday RailsにMinitestの副読本が付きました!

発表の最後でもお知らせしましたが、先日Everyday Railsに「RSpecユーザのためのMinitest入門」という副読本を追加しました。

「Minitest?使う予定ないわ~」と思っていても、オープンソースプロジェクトにプルリクエストを送ろうとしたらMinitestを使ってた、なんてことがあるかもしれません。
なので勉強していて損はないと思います。
よかったら読んでみてください!

Everyday Rails - RSpecによるRailsテスト入門

f:id:JunichiIto:20150713053846p:plain