TDDの勉強会に参加したらSoftware Designに寄稿することになった話
Software Design 2022年3月号に寄稿した
嬉しいことに、2月18日発売の Software Design 2022年3月号に寄稿する機会を頂いた。 特集のタイトルは「自動テストとテスト駆動開発、その全体像」。自動テスト、テストファースト、テスト駆動開発(TDD)の全体像を解説する第1章を @t_wada さん(和田さん)が執筆し、自分は TDD を JavaScript で実践する第2章、第3章の執筆を担当した。
寄稿の経緯は以下の通りだ。 昨年12月に技術評論社の @akito912912 さん(以下、中田さん)から Twitter で特集の一部を執筆しないかと DM を頂いた。願ってもない機会と思い二つ返事でお受けした。以前書いた TDD の解説記事 を目にして頂いたことが声掛けのきっかけになったそうだ。
実は、中田さんから連絡を頂いたのはこれで2回目だった。 去年5月にも同氏から Software Design で React の特集を組む ことになったので、 「React を深く知るための入口」 という記事のような内容で執筆可能かと連絡を貰っていた。
しかし、当時自分は Twitter の DM を頻繁に見ておらず、メッセージに気づいたのが原稿の締め切り1ヶ月後だった。これは2021年でトップ3に入るくらい悔しいことで、DM を確認していないことに内心忸怩たる思いがあった。それ以来、TweetDeck に DM のカラムを追加して、連絡が入ればすぐに対応できるようにした。
この再発防止策が功を奏して、数ヶ月後に再び中田さんから連絡を頂いた時は「ぜひ!」とすぐに返事ができた。 返事をした時間を見ると、それはメッセージを貰ってからたった1時間半後だった。
さて、TDD の勉強会に参加して記事を書いたら雑誌への寄稿の機会を頂いた、という本記事のタイトル回収は以上で終わりである。 ここからは、その勉強会中とその後にあったことを紹介していきたい。
2019年にTDDの勉強会に参加した
全ての始まりは2019年11月に TDD の勉強会に参加したことだ。 勉強会の名前は TDDBC Sendai 9th(以下、TDDBC)。 BC は Boot Camp の略だ。
当時私は「プロフェッショナルは TDD を実践するものだ」と述べられているボブおじさんの Clean Coder (Clean Code ではない)を読んで、自分もやるぞと意気軒昂たる若者だった。 しかし、「最近新版が出た」と噂になっていた TDD本 を買ってみるも、いまいち実践方法がわからなかった。
そんな折、何がきっかけだったか忘れたが TDDBC 開催の情報を目にした。しかも TDD 本の訳者の和田さんが講師になるという。
ただし、開催地は仙台。東京から仙台へは新幹線代がかかる。当時、日本の給与所得者の平均給与も貰っていなかった自分には痛い出費だ。一応、会社から勉強会の交通費は出る。しかし、それは都内または関東近郊までの範囲の勉強会だけだ。なので仙台への往復代2万円超は全額自己負担になるとわかっていた。 それでも、自己投資と考えて思い切って参加ボタンを押した。
仙台には何度か訪れたことがある。そのうち一度は中学生の時だ。親に頼んで親しい友人と一緒に連れて行ってもらい、ジョジョの聖地巡りをした。仙台はジョジョ4部の舞台だったからだ。作中に登場する靴のムカデ屋にのモデルになった店にも行った。
あの頃、友人と二人で店の中に入り「この店がジョジョに登場する店なんですね」と初老の店主に尋ねたら「そうなんだよ。でも漫画の中だと私は爆破されて死んでしまうんだけどね!」と泣き笑いの一歩手前のような、嬉しさと寂しさが入り混じった顔で彼は笑っていた。聖地巡礼という言葉が一般化し、ジョジョはアニメ化されてさらに人気に火がついた今、もっと多くの人が訪れているのだろうか。
仙台の勉強会で古い友人に再会した
閑話休題。仙台駅を降りて地下鉄に乗り、 TDDBC の会場に向かう。 会場はコワーキングスペースとして使われているマンションの一室だ。部屋にいくつも長テーブルが置かれており、1テーブルあたり2人が着席できるようになっている。ペアプロをしやすいような座席配置をしているのだろうということは想像ができた。
勉強会が始まる前、トイレに行くため席を立った。するとトイレにパープル色のウルトラライトダウンを着ている短髪男がいた。この上着を着る男は自分が知る限り一人しかいないと思い、もしやと思って話しかけてみるとやはり大学の寮(熊野寮)時代の友人だった。 実に4年ぶりの再会だ(写真はメルカリから)。
久闊を叙しているうちに、勉強会開始の時間になったので席に戻った。彼は卒業前に「地元で公務員になる」と言って去っていったのだが、その後エンジニアになったことは風の噂で耳にしていた。
しかし、仙台の勉強会で彼と再会したのは驚きだった。 彼と最後に連絡を取ったのは自分が新卒で入社した総合商社(経理配属)を辞めてエンジニアになるという相談だった。それは自分が実際にエンジニアとして就職する前だったので、向こうからしても本当にエンジニアとして働いていることは驚きだっただろう。
彼は頭がキレる男だった。そして、その頭の良さをマージャンで特定の牌を引く確率をひたすら計算するなど変なところで発揮している愛すべき男だった。 思えば熊野寮にはそんな人ばかりいた。これはたまたまだが、熊野寮の自分が住んでいたブロックの同期や後輩たちは、卒業後の進路にソフトウェアエンジニアを選んだ者が多い。自分も含め、転職して未経験からエンジニアになった人も何人もいる。この話はまたどこかで書きたい。
さて、一緒に席に戻るとたまたま彼が確保した席は自分の斜め前だった。勉強会が始まり、和田さんが基調講演をしている間、前を向くとどうしても彼のパソコンの画面が目に入る。何をしてるんだろうと見てみると彼は Twitter でタイムラインに延々と流れてくるマンガの投稿を一つずつ拡大して読んでいた。
自分は必死にメモを取っていた一方、全然話を聞いてないように見える彼はやはり愛すべき男だと思っていた。すると、彼は要所要所で @t_wada さんの重要な発言をツイートしていた。相互フォローの関係になったのでタイムラインに彼のツイートが流れてくるのだ。
しかも、たまに自分が聞き逃したところだったり、すぐに理解できないところを「これはこういうこと」と解説するツイートをするので思わず舌を巻いた。 そんな面白い男だ。
TDDBC はとても温かい勉強会だった
一通り予定されていたメニューをこなした後、最後に懇親会があった。 懇親会の中で飛び込み LT があったので、自分も記念にと「主要なPHPフレームワークをテストの点から見る」という社内用に準備していたスライドを発表した。内容は Slim4、Lumen(Laravel の代わりに)、BEAR.Sunday でテストの書き方を比較したものだ(LT は前のパソコンに入っていたので残念ながらスライドは行方不明)。
この LT 会で一つだけ後悔していることがある。LT の掴みに「ここ仙台は特別な地。スタンド使いとスタンド使いが引かれ合うように、大学時代の友人と思わぬ再会をしました」と話したら、オーディエンスの方から「あなたのスタンドは何ですか!」と聞かれ、何も準備していなかったのでしどろもどろになってしまった。
せっかく聞いてくれた人に申し訳ない。何と答えば場を沸かせられたのだろうか、いまだに答えは出ていない。 兎にも角にも、TDDBC に参加している人はみな優しくて志高く、1日を通してとても温かさを感じる勉強会だった。
TDD 本に和田さんからサインを貰った
懇親会も終盤に差し掛かり、終電の時間が近づいてきた。友人とまた会う約束をして後ろ髪を引かれつつ会場を去った。新幹線に乗り込んで発車待ちの間その日の出来事を思い返していると、なんと前の車両に和田さんが乗ってくるのが見えた。 この日は一日中和田さんを見ていたので見間違えるはずがない。
実は懇親会の最後の方に、TDD本や他のテストの本の販売があって、買っても持参した本でもその場で和田さんからサインを貰えるという流れになっていた。自分は TDD 本を持参していたのだが、何となく気恥ずかしくて終電を口実にサインを貰いに行かなかった。
しかし、これはせっかくの機会と思い、意を決して前の車両の和田さんの席まで向かった。 そして「和田さんですよね。勉強会とてもためになりました。先ほど TDDBC に参加したものです。もしよければサインお願いします!」と TDD 本を出したところ、快く引き受けてくださった。
サインを書いてもらっているあいだ、少し間があったので「率直に自分の LT の内容どうでしたか」と恐る恐る尋ねてみた。すると、「有名なフレームワークの比較はよくあるが、テストの点から比べたところに特色があって良かった」と答えてくださった。これはとても嬉しかった。続いてサインの宛名を尋ねられたので、パンダでお願いしますと答えた。
達成感と満足感の中、日帰りでも参加してよかったと充実した気持ちで東京に帰った。
アドベントカレンダーで記事を書いたら初めてはてブのトレンド入りした
話はここで終わらない。東京に戻って数週間後、TDDBC で学んだことを社内勉強会で発表した。さらに、社内で初めてアドベントカレンダーをやるということで、それならと興奮冷めやらぬうちに TDD をテーマに記事を書くことを決めた。
それまでいくつか技術ブログはいくつか書いていたものの、いまいちどんなことを書けば読んでもらえるかわからず、多くない分量で Tips を書くというようなことをしていた。
しかし、今回は長くても書いてみようと思い、気合を入れて土日を使って執筆して自分の技術ブログに公開した(「テスト駆動開発(TDD)とは何か。コードで実践方法を解説します」)。本当に記事は読まれるだろうかと「記事を公開しました」とツイートをした。すると、いいねとリツイート数が見る見るうちに増えていった。
自分のブログに仕込んだ Google Analytics のリアルタイムの数字もこれまで見たことのない数字になっていた。数字が伸びていることに驚いていると、同僚が「はてブのトレンド入りしてる」と教えてくれた(記事公開時はオフラインで出勤していた)。
これが初めてのトレンド入りだった。 また、当時のマネージャーが 1on1 で「トレンド入りおめでとう!ブログにはてブのシェアボタンを置いたらもっと伸びると思うよ」とアドバイスをくれたので、その日の夜に早速実装してみた。
この経験から「自分が語るのに相応しいか不安を感じる骨太なテーマであっても、時間をかけて網羅的でまとまった分量の記事を書くと読んでもらえる」ことがわかった。 しかも、長い記事を書くと多くの方があとで読む目的ではてなブのスターを押してくれることも理解した。
これ以降、技術記事を書くモチベーションが上がった。Twitter で「ためになる」「わかりやすい」という感想を頂いたことも、もっと記事を書いていこうと思う原動力になった。翌年の2020年に記事を合計44本書いたことがその証左だ。以上のことから、この TDD の記事は自分にとって思い入れのある記事となった。
Software Design への寄稿の機会を頂いた
さて、そんな3年前の記事を編集者の中田さんに読んで頂き、Software Design への寄稿のチャンスを頂いた。しかも、あの時サインを貰った和田さんが監修してくださるという。 過去に参加した勉強会の経験と、過去に作成した記事が今でも自分に機会をもたらしてくれる資産となったと思った。
自分はコスパという単語はあまり好きではない。もしコスパを気にしてあの時の新幹線代をケチっていたら、上に書いたようなお金で買えない経験は得られなかっただろう。
リターンは将来自分が想像できない様々な形で発生することを考えると、その時点で見えているコストとベネフィットを比較してコスパを考えることは、実は割に合わないのではないだろうか。 コスパには時間軸はなく、特定のコストに対する将来のリターンを考慮するとむしろ ROI で考える方が良い。
まとめ
思えば、TDDBC への参加がミラクルの始まりだった。 勉強会で古い友人に偶然再開し、和田さんにサインを貰い、書いた記事がはてブとTwitterでバズり、果ては専門誌 Software Design への寄稿の機会まで頂いた。
新幹線代という金銭面、記事を執筆した土日という時間面のコストは無駄にならない自己投資だった。過去の自分の意思決定に感謝している。確かに パレートの法則 の通り、自分が書いた記事の8割は全然読まれていないと考えている。しかし、残りの2割が全体のコストを上回るリターンをもたらしてくれるということを信じて今日も記事を書き続けている。
もちろん、執筆の目的はリターンではなく、自分は書くことが好きだから純粋に楽しんで書いているということが大前提だ。その気持ちで技術記事でもエッセイでもどんどん書いていきたい。
最後に。TDD というテクニックはダイレクトにコーディング体験を変えてくれる。 やるべきことに集中できるし、自分のコードに自信を持てるようになる。ぜひ興味のある方は Software Design 2022年3月号 を手に取ってみてください。また、動画で TDD を体験してみたい方は和田さんの YouTube 動画 をご覧ください。
Happy Coding 🎉