現在内定者インターンシップで使っているLaravelとDockerを中心に勉強しているFラン文系生です。インターンシップ中に上司から「この本オススメ」と言われた本を読んでみたところ、この本はエンジニアを目指している方や、現役エンジニアの方にもオススメできる本だと思ったため、今回は 『数学文章作法 基礎編』 を紹介していきます。
『数学文章作法 基礎編』
基礎編では、正確で読みやすい文章を書く方法について説明しています。エンジニアはコードを書くだけでなく、クライアントにアプリを分かりやすく提案したり、開発メンバーに進捗状況を話したり、先輩に分からないところを質問するなど、話す状況もたくさんあると思います。
本書は、話すではなく、書く方法について書かれていますが、正確で読みやすい文章を書くことが出来るということは、分かりやすい説明をすることが出来るということに繋がるのではないかなと感じてるので、本書をオススメしました。
1章
1章では、本や設計書などを読む人である読者について書かれています。私たちが書いた本や設計書を読む人は、どの程度の知識を持っているのか、そして、どれだけ読みたいと思ってくれているのか、何のために読んでいるのかを考えて書く方法について説明しています。
例えば、大学受験で数学を勉強する時に多くの人がお世話になったであろうチャート式。チャート式には黄色、青色、白色などがありますが、色によって読む対象の人は違ってきます。全く数学を勉強してこなかった人が青色を読んだら全く理解出来ないと思いますし、数学がすごく得意な人が白色を読んだら物足りなくなると思います。
このように、本や設計書などを書く際は、読む人がどの程度の知識を持っているのかなど、読者のことを考えて書く必要があります。
2章
2章では、形式の大切さや、文章の構造という基本的なことがらについて書かれています。形式というのは、どういうタイトルにするか、どういう章立てにするか、何の語句を使うかといったものです。そして、文章は構造を持っています。ひとつひとつの語句が集まって文が出来て、ひとつひとつの文が集まって段落が出来て、その次は節、そして章、最後にはひとつの文章ができあがります。
これらのパーツはどれも大切な役割を果たしています。語句でいえば、わざわざ漢字で書くよりも、ひらがなで書いた方が伝わる場合もあるでしょう。
(例)
然し
しかし
このように、「しかし」をわざわざ漢字で書く人はあまりいないと思います。少し大げさな例えになってしまいましたが、漢字で表すべきか、ひらがなで表すべきか正確に判断出来ている人は、少ないんじゃないかなと思います。
そして、ひとつの段落にはひとつの主張をするようにしたり、二重否定を使った文は使わないようにしたりする必要もあります。
3章
3章では、伝えたい内容の順序と階層を意識して書く方法について書かれています。文章を書くうえで順序はかなり大切だと思います。たとえば時系列で書いていくとしたら、多くの場合は過去→現在→未来という順序になると思います。また、場合によっては未来→現在→過去となることもあると思いますが、過去→未来→現在とはならないでしょう。朝→夕方→昼→夜という順序もすごく読みにくい文章になってそうですね。
(例)
私は朝は6時に起きて、プログラミングを勉強しています。16時頃には、2年前から継続している筋トレをします。12時にお昼ご飯を食べ、21時頃から友人とマイクラで遊んでいます。
私は朝は6時に起きて、プログラミングを勉強しています。12時にお昼ご飯を食べ、16時頃には2年前から継続している筋トレをします。21時頃からは友人とマイクラで遊んでいます。
このように、朝→昼→夕方→夜という順序に書くことによって、読みやすい文章にすることが出来ます。
4章
4章では、数式や命題をどのように書けば分かりやすくなるのかについて書かれています。まずは、分かりづらい数式や命題とはどういうものか紹介します。
シェルソートのソート回数を $s$ とする。次に、クイックソートのソート回数を $q$ とする。最後に、マージソートのソート回数を $m$ とする。
上記の悪い例では、単語が3つ使われています。上記のように短い文ならこれでも悪くはありませんが、長い文でずっとこの3つの単語が使われ続けると、どの単語がどのソート回数なのか忘れてしまう可能性もあると思います。そこで、
シェルソートのソート回数を $(O)$shell とする。次に、クイックソートのソート回数を $(O)$quick とする。最後に、マージソートのソート回数を $(O)$merge とする。
このように、使う単語は統一して、単語で分ける以外の方法を使うことによって、「この単語は何のソート回数なのか」といったことを防ぐことが出来ます。
5章
5章では、良い例の作り方について書かれています。良い例を考えることは、文章を書くときだけでなく、人に説明するときにもかなり重要なことだと考えています。特にエンジニアは、エンジニアとは全く関係ないクライアントに説明や提案をすることもあるでしょう。知識が全くない人に説明をするときには、例はかなり大切な役割を果たします。良い例を作る方法の内のひとつは、本を読んでいる人(説明を聞いている人)の知識に合わせた例を作ることです。アプリの提案をしていて、セキュリティの知識が全くない人にゼロデイ攻撃やSQLインジェクションという単語を使って例を作っても全く理解してもらえないでしょう。
6章
6章では、問いと答えの作り方について書かれています。5章の例と同じように、問いと答えを作るというのは、読者の理解をさらに深めるためにとても大切なことだと思います。また、適切な問いを出すことで、読者が本を読むのを飽きるのを防ぐことも出来ます。
そして、問いに対する答えも必要です。「そんなの当たり前じゃん」と思うかもしれませんが、意外と問いを用意しておいて答えが用意されていないことはあります。
また、答えが用意されていたとしても、問いと答えが呼応していないというのはあまり良くありません。「~は成り立つ?」という問いには「成り立つ(成り立たない)」というように、問いと答えが呼応していることも大切なことです。
7章
7章では、目次と索引について書かれています。目次は、読者が 「どういう題材を扱っているのか」 、 「どういう順序で書かれているのか」 を知るために必要なものです。そのため、目次を作る時は「ここの見出しだけではどういう題材を扱っているのか分からない」といった見出しがないようにしなければいけません。
そして、索引は、特定の単語に関連するページを見つけたいときなどに必要なものです。
(例)
オブジェクト 234, 237, 250, 256, 286, 312, 334, 354, 376, 377, 383, 384, 390, 395
オブジェクト 234, 237, 250, 256, 286, 390, 395
オブジェクト指向 312, 334, 354, 376, 377, 383, 384
上記の悪い例では、「オブジェクト」という単語で一括りにして、索引を作っています。ページ数が少ない場合、一括りにしてもいいと思いますが、上記のようなページ数の場合、かなり見づらい索引になってしまっています。このような場合、「オブジェクト」と「オブジェクト指向」に分ける方法などが有効です。
8章
8章では、『数学文章作法 基礎編』のまとめについて書かれています。どの章も実行していくうえで考えなければいけないのは、読者のことを考えることです。たとえ自分自身は全て教えたいことを教えることが出来ていたり、書きたいことを書くことが出来ていたりしても、読者に伝わらなければ全く意味がありません。とにかく読者のことを考えることが大切です。そして、人に分かりやすい説明をする時も、説明を聞いている人の事を考えることが大切です。
最後に
私は今回でQiitaで記事を書いて3回目となりますが、本書を読んだ上で記事を書いても、まだ全然みんなにとって読みやすい文章を書くことは出来てないなと思っています......
本書を何度も読み返して、これからもみんなにとって有益な情報を提供できる記事を書けるように頑張っていきたいです。
なお、今回紹介した 『数学文章作法 基礎編』 以外にも、 『数学文章作法 推敲編』 という本もあります。推敲編では、読みやすい文章に直す方法について書かれていて、こちらの本もおすすめしたい本なので、是非読んでみてください。
ありがとうございました。