WEB+DB PRESS Vol.129 からコラム「サバンナ便り」を連載します

はじめに

本日(2022年6月24日)発売される WEB+DB PRESS Vol.129 からコラム「サバンナ便り」を連載させていただく運びになりました。何卒よろしくお願いします。

このコラムでは、私の専門である自動テストやテスト駆動開発を軸足に、連載という形でプログラミングやソフトウェアエンジニアリングに関する小さめのトピックを書き続けていく予定です。隔月で2ページ書くというペースで、ジョギングのようにマラソンのように走り続けていく所存です。

gihyo.jp gihyo.jp

目次

きっかけ

連載のきっかけは同誌編集長の稲尾さん (@inao) から直接オファーをいただいたことです。タイミングは Software Design 誌の脱稿からしばらく経った頃(「自動テストとテスト駆動開発、その全体像」を執筆しました(Software Design 2022年3月号))。力を入れて10ページの原稿を書き終えた後、一段落しつつも雑誌記事執筆の感覚が残っているタイミングで DM をいただきました。このタイミング、さすが稲尾さんです。

稲尾さんと最後に仕事をしたのは WEB+DB PRESS Vol.102 の特集1「はじめてのペアプロ/モブプロ メキメキと人が育ち,プロダクトの質を高める」 です。それからしばらくは、特集記事の執筆や節目となる号に掲載するエッセイなどの依頼をいただいたにもかかわらず、私自身の多忙のため執筆依頼にお応えできない時期が続いていました。

しかし、今回いただいた依頼は、これまでとは若干毛色が異なり、連載、それもコラムの連載でした。コラムの分量は毎回2ページから4ページとのこと。この分量であれば短時間で一気に書き上げることも不可能ではありません。

コラムという新たな挑戦

これまでの講演や研修の中で、プログラミングやソフトウェアエンジニアリングに関する細かい話題もたくさん話してきましたので、2ページほどの小さい話題はそれなりにストックがあります。隔月で短いページ数でコラムを書いていくという企画は達成可能であると考えただけでなく、私自身にとって魅力的な依頼であるとも思いました。

コラム連載には、考えを短くまとめる訓練を続けるという側面もあります。見開き2ページのコラムは字数に大きな制限があり、講演に例えるとライトニングトークのようなものです。テーマを広げる余地はなく、1テーマに集中し、それを短い時間で読者にどう伝えるかという勝負です。私は紙幅があればあるだけ内容を詰め込んで脱線していく傾向にあるので、強い制約の下で1テーマに絞って文章を書き、それを隔月のペースで継続するという負荷を自分に与えるのはちょうど良い挑戦に思えました。

Software Design 誌に渾身の記事を書き終えた後だったということもあり、気が大きくなっていたところもあるのでしょう。しばらく迷った後に、稲尾さんにコラムを連載させていただきたいという旨の返事を書きました。稲尾さんの作戦勝ちです。

WEB+DB PRESS という雑誌は、私が尊敬する人たちが様々な記事を書き、連載を行ってきた雑誌でもあります。私も何度か特集記事を書かせていただきました。今度は特集記事ではなく連載というかたちで再び関わることができることには少なからぬ喜びがあります。もちろん、喜びだけでなく責任も重くのしかかってきます。

商用誌、締め切り、編集者の存在

商用誌への執筆はなかなか良いものです。厳格な締め切りがあり、プロの編集者さんがいる雑誌記事という形式は、怠惰な私にとってはありがたいです。

締め切り

締め切りは書くきっかけを与えてくれます。自分自身強く心当たりがあるのですが、やる気が出てから始めるという姿勢では、いつまで経っても着手できず、結果が得られません。自分に深くブーメランが刺さります……。

「やる気があるから書くのではなく、書いていくうちにやる気が出てくる」という方がより現実を捉えているのではないでしょうか。これはよく「作業興奮」という名前で説明されている現象です(作業興奮という名前の起源や元となる研究との差異には 諸説 あり)。

つまりやる気と集中力が出てくるために必要なのは、まずやる気とは関係なく着手することであり、着手するために良くも悪くも強い動機となるのが締め切りの存在というわけです。実際このブログ記事自体も、雑誌発売日の午前に投稿するという締め切り駆動により執筆されています。

編集者の存在

質の高い編集者の存在は本当にありがたいものです。アウトラインのレビューから、語彙の統一や表現の揺れの補正、一貫性の維持、説明の流れの改善、読みやすい文章へのリファクタリング、数え上げればきりがありません。説明不足のところや暗黙の思い込みについての指摘も含め、第三者の視点から文章をレビューし、大幅な改善を行ってくれます。

腕のある編集者さんの編集作業を経た後の文章を編集前のものと読み比べると、すっきりと頭に入ってくる文章になっていることに驚きを覚えます。

コラムのタイトルについて

コラムのタイトルは「サバンナ便り」といいます。

私とサバンナと聞いて連想するのは例のライオンのアスキーアートという方が多いのではないでしょうか。当たりです。

日本でテスト駆動開発について啓蒙を始めておおよそ17年ほどになります。テストを書きながら開発をしていくスタイルを伝え広める活動を続けていく過程で、いつしか2ちゃんねる発祥のライオンのアスキーアートと私が強く結びつけられる奇妙な流れを目の当たりにしました。

このあたりの経緯はインタビュー記事にもまとめていただいた過去がありますが(「テスト書いてないとかお前それ〜」が私の代名詞になるまで。テスト駆動開発とともに歩んだキャリア)、私のハンドルネームで検索すると画像検索のタブにライオンのアスキーアートがたくさん出てくるのは疑いようもない事実です。ちなみにライオンのアスキーアートの雑コラを作成したのは 古川陽介さん (@yosuke_furukawa) です。

ともあれ、私のパブリックでの活動とライオンがイメージとして結合される数年間を過ごしてきましたので、いっそのこと一種のネットミームと化しているライオンを、これから書いていくコラムのイメージとして採用してみてはどうだろうかという判断をしました。タイトルに直球でライオンが入るのも面映いので「ソフトウェア開発の荒野を歩む」イメージでサバンナという言葉を選択しました。

この選択には、これからコラムをいろいろ書いていくにあたり、タイトルを特定のテーマに絞りすぎないようにしようという意図もあります。テーマとしては自動テスト軸足にしていく形になりますが、自動テストの以外のテーマも無理なく書いていけるように、内容に強い縛りを設けないようなタイトルにしたかったという狙いです。

ただここだけの話、連載タイトルが雑誌の表紙に掲載されるとは不覚にも思い至りませんでした。そのため WEB+DB PRESS Vol.129 の表紙が速報で Twitter 上に出てきたとき、私にも少しだけ動揺があったことをここに告白しておきます。

技術的な背景

コラムは Markdown フォーマットで原稿を書き、WEB+DB PRESS 記事執筆用の方言として伝家の宝刀 md2inao の力を借ります。

基本的な作戦としては、まずコラムのトピックをある程度ネタ帳に収集しておき、記事として書けそうなトピックについてアウトラインを起こしていきます。アウトラインは、以前 Software Design 誌に寄稿した際に使用した VSCode のアウトライン拡張 Markmap を引き続き使います。

アウトラインで構成を試行錯誤し、構成が定まったらその中を書いていくわけですが、今回アウトラインが定まった中での各段落レベルの文章は音声入力で書く(?)という手法を試しています。アウトラインに従った各段落について音声入力をオンにして、書きたいことをしゃべっていきます。現代の技術を使えばある程度精度の高い変換ができますので、音声入力を行った内容をエディタで補正していく方が効率が良いのではないかと考えました。アウトラインの試行錯誤は VSCode で行いますが、音声入力した原稿の編集は慣れた Emacs で行います。実際に連載の第1回はこの方法で初稿を書いています。

分量見積りや簡易 PDF の自動化

とはいえ、いざやってみると2ページに収めるのはなかなか難しいものがあります。私の場合はどうしても饒舌に書きすぎて(喋りすぎて)しまう傾向があり、すぐに分量をオーバーしてしまいます。ただ、本コラム執筆においては稲尾さんの手によって分量の概算見積りや簡易 PDF 作成は自動化されています。これも稲尾さんがずっと行ってきた「雑誌の制作自体をプログラミング対象にする」という試みの賜物でしょう。実際に組版段階まで進まずとも現在記述している文章の分量がページに収まるかどうかがわかるだけでも、書いている方としては安心感が違います。

初回テーマ

初回のテーマは「学習用テスト(Learning Test)」です。地味なネタで始まったと思われる方もいらっしゃるかもしれません。しかし、未知の技術の学びを自動テストを活用しながら学習していく実践的なテクニックであり、個人的には初回にふさわしいと考えています。詳しくはコラムをぜひ読んでいただけますと幸いです。

おわりに

繰り返しになりますが、本日(2022年6月24日)発売される WEB+DB PRESS Vol.129 からコラム「サバンナ便り」を連載させていただく運びになりました。Twitter や Blog 記事などでコラムを読んだ感想をいただけると大変励みになります。 Twitter のハッシュタグは #サバンナ便り をつけていただけますと幸いです。

今後も無理のないペースでコラム執筆を続けていければと考えておりますので、皆様何卒よろしくお願いいたします。

gihyo.jp gihyo.jp