技術文書を執筆する時に意識していること

成瀬允宣氏:技術文書に関してもアドバイスがあります。僕の記事を見ると、込み入った話を体系立てています。

(コメントを見て)「どこかの講演や講義で、絶対に間違えたことを教えないよう注意をしてやっているとおっしゃっていたのを覚えているのですが、その“間違っていないか”の確認はどうやっているんですか?」。それがまさに調査の時です。文献で論文を読んだり、自分のバイアスをなるべく排除して読んだりして、いろいろな情報を集めて総合的に判断していくしかないと思っています。知り合いに「これはこういうことだよね」と聞いたりもします。

僕はよく設計やアーキテクチャの話をしますが、体系立てたほうがいいです。さもないと誤解を生みます。結果的に長くなります。それでも伝わらないし誤解を生みますが、体系立てたほうがいいと思います。

(コメントを見て)「正しい情報が第二、第三の怒り駆動エンジニアを生み出す」(笑)。それはありそうです。(コメントを見て)「言語化に尽きる」、ありがとうございます。

また、僕はよく“言葉を飾る”と言います。みなさんが辞書を開く時は、明確な目的がある時です。興味本位の読者は脱落しちゃいます。その辞書は、文書に対して想定読者に明確な目的があるかを考えて、文章を飾るか飾らないかを決めています。

例えば、バグを踏んだ時の解消法には明確な目的があるんです。それならば言葉を飾らないほうがいい。むしろ端的に書いたほうがいい。逆に、設計のインスピレーションを得るようなものには、辞書的な使い方をしない人が多いんです。

なので、言葉を飾って、理解へ至るストーリーを考えます。その1つが、章立てです。章・節・項を正しく書くと誰かの時間を奪わずに済みます。

例えば、言葉の選び方。(スライドを指して)特にこれが名文というわけではありませんが、僕の書いた言葉を見てみましょう。

「ソフトウェアの中核に位置するオブジェクトを変更することを想像してみてください。そのオブジェクトは多くのオブジェクトに依存されていますし、多くのオブジェクトに依存しています。たったひとつの変更が多くのオブジェクトに影響します。緻密に組み上げられたコードを変更することの厄介さは、ほとんど恐怖と似たような感覚となって開発者に襲い掛かるでしょう」。

これは、けっこう言葉を飾っているのがわかります。特に最後の文章の「緻密に組み上げられたコードを変更することの厄介さは、ほとんど恐怖と似たような感覚となって開発者に襲い掛かるでしょう」。

実を言うと、この文章はなくてもいいんです。これは緩急を入れているんです。なくてもいい文章があることによって、本は読みやすくなります。Web媒体は難しいですが、書籍ではこういったことをしています。

また、読者の状況をよく考えています。緩急をつけますが、どこにポイントを持ってくるか。人間は飽きやすいことをご存じでしょうか。例えば、「食事に不均一性を取り入れる」という話は聞いたことがありますか? 均一に寄せたものはすぐに飽きちゃうから、パセリをちょこっとポタージュに入れたりするんです。

人間は不均一性を好みます。本において一番簡単なものが、太字を入れることです。これで緩急がつきます。でも僕は太字を入れるのが好きではないので、構成に緩急を入れています。要するに、一文の長さや読点を付ける位置、段落の長さに差をつける。

ほかに、先ほどのような読んでも読まなくてもいい遊びの文章を少し入れます。(コメントを見て)「この文章を覚えています。読んでグッとさらにひきつけられた記憶があります」、ありがとうございます。そう言われると少し恥ずかしいです。

想定読者が必要な知識を、その時に得ているかもすごく考えています。想定読者が持っていることを前提としているならいいですが、持っていない知識であれば、その本の中で前提知識として必ず説明しなければいけない。

基本的に本の章立てには意味があって、前から読むことを推奨するものだと思っています。僕は推奨しています。必要な知識は必ず前にあるように説明しています。ブログでも。将来的に説明するのであれば、必ず知識を予告しています。

「これは第何章で解説します」「このあと解説します」というように、必要な情報をいつ・どこで説明したか。すでに説明していれば説明しないし、まだならそのあとに説明すると予告しています。

具体的か抽象的かもあります。具体と抽象。要するに「具体的にやってみました」とか、「抽象的にこういう考え方があります」とか。要点をつかむ抽象的な部分を行ったり来たりするのが、すごくいい。

日本人は割と具体的なことを好みますが、やはり物事の本質は抽象にあります。「抽出して象る」ことなので抽象。でも、一気にそこに行くのは難しいです。どこかで見たことがありますが、日本人にはたぶん抽象的な概念を捉えるのが苦手な人が多い。

それは日本語という言葉があまりにも便利すぎるからだと思っていますが、そういう人たちがどうやって抽象を覚えるのか、抽象を受け入れるにはどうすればいいかというと、具体と抽象を行ったり来たりするんです。

具体的な例を出します、抽象的な話をします、具体的な例を出します、抽象的な話をします。それを繰り返すと、だんだんとその本質の部分をつかめるようになります。Twitterで「“言葉を飾る”というの、すごい納得感ある」(というコメントがあります)、ありがとうございます。

文章を書く時はこれらを意識するとだいぶわかりやすくなります。Web記事は別ですが、特に技術書を書く場合にはこういったことを考えると読みやすくなると思います。

(コメントを見て)「正しさの追求も読者ファースト」、そうなんでしょうか。確かに読者のために書いています。自分のために書いたことはないです。

やる気を出すコツ

これは僕が教えてほしいくらいですが、やる気を出すコツについても少し話します。(スライドを示して)この記事は1週間で書きました。そして、この本も2ヶ月くらいで20万文字くらいの初稿を書きました。結果として燃え尽きました(笑)。本当に燃え尽きたんです。

それでもまだまだ話したい、みなさんに授けることができる知識がきっとあるだろうと思って、がんばって書いているところです。とはいえ、やはりモチベーションが大事で、そのモチベーションを上げるために、やる気を出すためにいろいろやってみたのがこれです。

ポモドーロテクニックや、知識を残す責任があると自分に暗示する(笑)。朝活する、自分に人参をぶらさげる、時間を決めて習慣化することをやってみました。それぞれ結果を見ていきましょう。

ポモドーロテクニックを知っていますか。タイマーで20分測ることです。これはタイマーを押すまでが難しい。「あと5分したらタイマーを押します」と自分に言い聞かせる。それで動画を見ちゃう(笑)。(コメントを見て)2ヶ月で本1冊(制作する)。初稿はその勢いで書きました。

自己暗示をする。自己暗示をしましたが結局責任はないんです。やらなくても誰も怒らない。編集者に怒られるかもしれませんが、基本的に怒られないんです。現業があるのをみなさんわかっているので。

さらに朝活です。朝5時くらいに起きてみました。「やるぞ!」と、1日か2日やりました。3日目、眠かったです。無理でした(笑)。寝ちゃいます。

自分に人参もぶらさげます。でも気付いたんです。僕は人参がほしくないんです。物欲はないんですが、ほしいものはたまにある。そうすると、ほしいものは必需品だと思っちゃうんです(笑)。必需品と思ったら買っちゃう。ダメですね。

時間を決めて習慣化。これができないから困っているんです。

というわけで、私の中で一番今うまくいっているものをみなさんに共有します。(コメントを見て)「ポモドーロテクニックはやったことがないが精神的に疲れそう」、確かに疲れるんです。(コメントを見て)「締切1日前」、そうなんです。でも本は締切1日前には絶対に書けない、数ヶ月前から書かないといけないので、なかなかやる気が出ないんです。

“怒り”はモチベーションになる

うまくいっているものは何か、みなさん覚えていますか? 最初の“怒り”のです。やはり怒りなんです。ネガティブな感情、怒り。これは強い情動を呼び起こします。

人間は、ネガティブな感情によってすごく危機感が働くので、それを避けなければいけない。そのためにがんばらないといけないという思いが働きます。つまり、モチベーションになるんです。だから怒りをうまく使う。

実際にどう使うか。今の世の中のいろいろな情報を見て、自分が書きたい情報を書くということは、そこに何かしらの課題を感じているわけです。課題をわざわざ見に行く。「これはなんとかせんとあかん!」と、ネガティブな感情を呼び起こすんです。

それは“寂しさ”が根底にあるのかもしれませんが、結局は怒りだと思うんです。怒りの底には寂しさがありますが、怒りを感じることで、それを使ってうまいこと「やらないとあかん!」と筆を執る。

ただし注意として、もしみなさんが怒り駆動をするのであれば、ラフまでにしてください(笑)。相当思いが詰まってしまうので、冷静になると文章がかなり粗いです。

(コメントを見て)「スーパーサイヤ人みたい」、そうですね(笑)。Twitterでも「やっぱり、どげんかせんと駆動開発!!」(というコメントあります)(笑)。怒り駆動はアウトプットを進めるという意味ではすごくおすすめですが、精神的にはよくないです。

アウトプットをすることで何を変えられるのか?

最後の話をしましょう。アウトプットが世界に与える影響。正直いうと、こういう言葉が頭に浮かんでくるんです。「もうやらなくていいんじゃない?」と。

(コメントを見て)「怒りはネガティブなことだけじゃない」、そのとおりだと思います。モチベーションとしては使えるので、うまく付き合う必要があると思います。(コメントを見て)「アウトプットしない人は怒りが足りない」、違います(笑)。怒りがモチベーションになるというだけです。(コメントを見て)「闇のフォースの話になってきた」、違います。

一度ある程度やってしまうと、「もうやらなくていいんじゃない?」という思いが(頭を)もたげてくる。正直、ここで言っているアウトプットはお金になりません。時給換算するとプログラマーであくせく働いたほうが絶対にマシです。

もしくは、お金を稼ぐためにあくせく働くぐらいだったら何か楽しいことをしたい。ゲームや個人の趣味や、家族と触れ合う時間に割きたい。個人的なライブラリを作りたいといった趣味(をしたい)。

では、なぜ続けているのか。中毒症状と言えば終わりですが、やはりいろいろな葛藤はあるんです。新作ゲームをやりたいとか、あのライブラリを作りたいとか、アイデアをPoC(Proof of Concept)したいとか。それもアウトプットに見えますが、趣味がプログラミングだと、趣味でやっていることになります。

趣味をやりたいと思う時もありますが、今回のアウトプットをなぜ続けるのかを掘っていくと、アウトプットでできることは何だろう。何かの媒体に発表すると、それが誰かに伝わって何かが起きるのか。何かを変えられるのか。今この場でみなさんに向かって話していますが、「これで何か変わるのか」と考えるんです。

何が変わるでしょうか。Twitterで「アウトプットはお金にならない!」(というコメントがあります)、そうです。非常にプログラマーやオープンソースソフトウェアが発達して、特に日本人は自己犠牲心が強いんじゃないかと思います。なので、余計にお金にならない。僕もお金のためにやっているかというとやっていません。

アウトプットでできることはなんだろう。みなさんの何を変えられるのか。

実は、僕が変えられること、アウトプットでできることは、誰かの時間を節約することではないかと思っています。

今日話した内容も、「文章をよくするためにはどうすればいいだろう」と考えた時に、調べる内容があります。その時のヒントとして僕の言葉を使うと、ヒントを見つける時間を節約できます。

本を書きました。その本を使ってみんなが知識を得て、より先に進むことができる。僕の後ろから追いつけ・追い越せと、手早くキャッチアップして追いついてほしい。なんなら先に進んでほしい。そして僕に教えてほしい(笑)。アウトプットでできることは、こういうことだと思っています。自分が1人で考え、膨大な時間をかけてかたちにした答えを提示することによって、みなさんの時間を節約することができる。人を変えることはできませんから。

アウトプットは世界を加速させる可能性を秘めている

まとめます。アウトプットで世界は変わるのか。世界は変わりません!(笑)。人は変えられません。人は自発的にしか変わりません。こんな言葉はいろいろな小説や映画でよく使われています。人は自発的にしか変わらない。

でもアウトプットをする意味。「なぜアウトプットをするの?」「それで何ができるの?」。

ここでやっと「世界を加速させるアウトプット」というタイトルに戻ってくるわけです。アウトプットは誰かの時間を節約できる。世界を加速させる可能性を秘めている、という内容でした。

みなさんがよい方向に進む意思を持っていることを切に願います。みんなで世界を加速させましょう。そして、みんなでよい方向に進んでいきましょう。

ありがとうございました。