give IT a try

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

Tama Ruby会議01で「テストコードの役割」について発表してきました #tamarubykaigi01

はじめに

2019年7月6日、渋谷のGMO Yoursさんで開催されたTama Ruby会議01で「なぜテストを書くの?(または書かないの?) 〜テストコードの7つの役割〜」という発表をしてきました。

スライドはこちらです。

このエントリではこの発表の紹介やイベントの感想を書いていきます。

この発表テーマを選んだ経緯

スライドの9枚目にも書いたとおり、もともとは「RSpecを題材にしたテックな話を」とお願いされていました。

f:id:JunichiIto:20190707082424j:plain

しかし、ネットなどを見ていると、「テストって難しい」「RSpecがわからん」と言っているプログラミング初心者さんたちは、テストについて何か根本的な思い違いをしているんじゃないか?という漠然とした疑問や懸念を僕は持っていました。

テストにおける「土台となる考え方」を会場のみなさんと共有したかった

そういう状態でRSpecのテクニック的な話をしてもどこか歯車がかみ合わないというか、発表を聞いた直後は「なるほど、完全に理解した」と思っても、数日経つと結局めぐりめぐって「テストって難しい」「RSpecがわからん」と同じことを言い始めるような予感がしました。
なので、「魚を与えるよりも魚の釣り方を教える」ではなく、「魚の釣り方を教えるよりも、なぜ魚を釣るのか、それは魚でないといけないのか」という話をしたいなと思いました。

また、僕自身、テストを書くときは「○○○だから書く」と何か一つに理由が定まっているわけではなく、あるときはこういう目的で、またあるときはこんな目的で、と、テストを書く目的がいくつかのパターンに分かれていることをなんとなく感じていました。
ただ、これも「なんとなく自分の頭の中にある」というだけで、きれいに整理整頓したことはありませんでした。
そこで、この機会に「なんとなく自分の頭の中にあるパターン」を整理して言語化しようと思いました。

せっかくたくさんの人が集まるいい機会のなので、表面的なテクニックよりもあえて「土台となる考え方」を語って、参加者のみなさんとそれを共通認識として共有する方が価値があるんじゃないか、そして、Tama.rbというRubyコミュニティも比較的初心者向けのRubyコミュニティなので(たぶん)、参加者層を考慮してあえて「基礎の基礎」を語ることはそんなに悪くないのでは?と思い、今回はこのような発表テーマを設定してみました。

当たり前のことをあえて明文化することの価値

とはいえ、発表をする前は「簡単すぎる」「基礎的すぎる」「テック要素が薄くて物足りん」とdisられるんじゃないかと、ちょっと心配していました。
ですが、蓋を開けてみると思いのほか好評だったようで、「このテーマを選んで正解だった」と胸をなで下ろしました。

みなさんの感想はこちらのtogetterページにまとめられています。

ところで、僕は以前どこかで「テーブル設計における正規化理論は、効率良くデータを保存しようとすると誰もが行き着く当たり前の考え方だ。しかし、これをあえて言語化、明文化したことに正規化理論の価値がある」というような話を聞いたことがあります。
自画自賛するわけではないですが、今回の僕の発表も「テストを長年書いている人なら、誰でも経験則として当たり前に思えること」をあえて明文化したことに価値があったんじゃないかなーと思っています。

はじめての基調講演

今回の発表はTama Ruby会議01における基調講演(キーノート)として依頼されたものでした。
基調講演をお願いされたのは今回が初めてで、何をすればよくわかっていなかったのですが、「基調講演の役割は、参加者全員の意識を統一して、あとに続く発表へスムーズにつなげていくことなんじゃないか」と僕は考えました。

そこで、今回の発表では「普段通りの発表 + 最後にこのイベント全体について当てはまりそうな話」という構成にしてみました。
おそらくですが、「基調講演っぽい発表」にはなったんじゃないかと思います。(実際に参加されたみなさん、どうでしたか?)

自己紹介タイムはなし!

あと、これは余談ですが、今回は実験的な試みとして「自己紹介をまったく入れない発表」にチャレンジしてみました。
Twitterの反応を見る限り「で、あんた誰?」とは言われなかったようなので、これはこれで成功だったかもしれませんw

f:id:JunichiIto:20190707095356j:plain
登壇中の僕です(photo by @katsumata_ryo)

イベントの感想等

ここからあとは、Tama Ruby会議01で印象に残っている話をいくつか書いていきます。

持ち時間=10分制が意外と良かった

Tama Ruby会議01で面白いなと思ったのは基調講演の僕と五十嵐さんを除いて、各発表者の持ち時間が10分間だったことです。
最初は「LTでもないのに、持ち時間10分は短すぎるのでは?」と思いましたが、実際に聞いてみると意外とそうでもありませんでした。
持ち時間が短いぶん、いろんな人の発表が聞けるというメリットがあるので、これはこれでアリかもしれません。

人数は少ないものの、女性の方が元気そうだった

僕は「女性が参加しやすい(でも女性限定ではない)Rubyコミュニティ」である、TokyoGirls.rbの主催者なので、女性の参加率もちょっと気になっていました。
ぱっと見た感じ、女性の参加率は1割ぐらいかな、という印象です。

f:id:JunichiIto:20190707100251j:plain
当日の会場の様子です

理想は男女半々、最低でも3割ぐらいは女性に参加してほしいと考えている人なので、「やっぱりまだまだ女性は少ないなあ」という感はあります。

ただ、参加していた女性エンジニアは、みなさんアクティブで元気そうという印象を受けました。
登壇者の中に女性が2人いたのも評価したいポイントです(しかも、お二人とも短い経歴のわりに骨太な発表だった!)。

そういう意味では「女性エンジニアがもっとグイグイとRubyコミュニティを盛り上げてくれる余地は十分にある!」と感じました。

TokyoGirls.rb Meetup vol.2も開催せねば!

懇親会では女性エンジニアの方から「TokyoGirls.rb Meetupの2回目はやるんですか?1回目がすごく良かったんで、また行きたいです」と質問&リクエストも受けました。

はい、やります!(断言)

ただし、なかなか手が回らなくて開催はもう少し先になるかもしれません。
ですが、「1回やって終わり」にするつもりはありませんので、もうしばらくお待ちください!!

顔と名前とTwitterアイコンが一致しない問題

懇親会等では「伊藤さん、いつもチェリー本やQiitaでお世話になっています!」とたくさん声を掛けてもらいました。
そんなふうに声を掛けてもらうのは、ちょっと気恥ずかしい反面、大変ありがたいです。

ただ、非常に申し訳なく思うのが、ほとんどの人について「ごめんなさい、僕はあなたのことをよく知らないんです」状態になってしまうことなんですよね・・・。
でも、イベントが終わったあとにふと振り返ってみると、「あ、もしかしたら、あのとき声を掛けてくれたあの人は、もしかしたらこのTwitterアイコンの人だったのかもしれない!(でも、もはや確認するすべがない・・・)」と思うことがちらほらありました。

Twitterアイコンがわかれば、まだ何とかなるかも?

Twitterでよくいいねやリツイートをしてくれたりする人は、なんとなく「よく見かけるTwitterアイコンの人」という形で僕の記憶に残っていたりします。
なので、名札にTwitterアイコンをドカーンと大きく載せてくれていれば、僕も「あ、このアイコン見たことあります!」と、話しかけてくれた人を認識できていたかもしれません。

ですので、イベントの主催者さんは、参加者各人のTwitterアイコンシールを作って名札に貼ってもらう、みたいなことをしてくれると、懇親会での参加者同士のコミュニケーションがさらに盛り上がるかもしれません。
(僕も次回のTokyoGirls.rbとかで、ちょっと検討します)

ちなみに余談ですが、僕はこんなふうにオフラインで会ったときに「顔と名前とTwitterアイコンが一致しない問題」を極力避ける目的もあって、あえて実名と顔写真アイコンでネット活動をしております。

f:id:JunichiIto:20190707102611p:plain:w300
SNSも実名と顔写真アイコンにしておけば、覚えてもらいやすいですよ!

まとめ

というわけで、このエントリではTama Ruby会議01での僕の発表内容と、このイベントの感想をあれこれ書いてみました。

素敵なイベントを主催してくれたTama.rbのみなさん、会場や美味しい料理・飲み物を提供してくださったスポンサーのみなさん、そして参加者のみなさん、登壇者のみなさん、どうもありがとうございました!

次回は渋谷を離れて、多摩地域での開催ですかね?
僕の好きなTMネットワークが多摩出身らしいので、多摩開催も期待しています!w

参考文献

スライドの中で紹介していた、各種書籍のリンクを載せておきます。

テスト駆動開発

テスト駆動開発

はじめて学ぶソフトウェアのテスト技法

はじめて学ぶソフトウェアのテスト技法

leanpub.com

ちなみにスライドの33枚目に出てきたRGB変換プログラムのコードは、拙著「プロを目指す人のためのRuby入門」からの抜粋でした。

あと、僕の発表スタイルは「パワー・プレゼンテーション」という書籍の影響を大きく受けています。
自分も上手に発表できるようになりたい!と考えている方はチェックしてみてください。

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

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


あわせて読みたい

この発表で使ったスライドの作り方(Keynoteの便利テクニック)をこちらのエントリで紹介しています。
blog.jnito.com