仕事上、どうしても数式を書かねばならないことがある。最近では、LaTeXの数式表現をWebページ上で利用できることが多い。JavaScriptでLaTeX数式をレンダリングするMathJaxなどのライブラリが普及したからである。このため、昔に比べると、数式を清書するのはラクになった。筆者もインターネット上のサービスを使って数式を清書することがある。以前紹介したScrapBoxにもLaTeX形式の数式をレンダリングする機能がある。
ワープロ系のアプリケーションには、俗に言う数式エディタなる機能を搭載していることがある。しかし、「分数」や「積分記号」などの形を先に選んで、あとから文字を入れていくタイプが多い。WordやGoogle Documentsの数式エディタがこのタイプだ。短い数式ならこれでもいいのだが、数式の変形などを書いていくときには、かなりストレスを感じる。
たとえば2次方程式の解の公式(図01)は、「x=(-b±√(b^2-4ac))/2a」のように頭で理解している。こうして理解した式では、割り算(分母)は最後に来るのに、数式エディタでは、「x=」の次に分数の入力を選択しなければならない。LaTeXでも、同じように最初に「\frac」を書いて波括弧でくくる必要があるのだが、こちらはあまり精神的な負担を感じない。テキスト入力なので、前後への移動が簡単だからだろう。「/2a」まできて、カーソルを前に戻して「\frac{」と入力すればいいのだから。数式エディタ(Word)だと、前に戻って分子になる部分を選択状態にしてリボンの数式から分数を指定し分母を入力しなければならない。これは結構面倒な手戻りだ。
Wordでは、LaTeX形式の数式表現を使うこともできる。Alt+=(JISキーボードではAlt+Shift+-)キーを押して数式エリアを挿入したら、そこに直接LaTeX形式の数式表現を入れればよい。LaTeXに慣れている人なら比較的簡単な方法だ。Google Documentsの場合にはアドオンとして配付されている数式エディタにLaTeX表現を受け付けるものがある。プログラマ向けのエディタVS Codeでも、拡張機能を入れればMarkdownファイルの編集中にLaTeX数式をプレビューできる。
Wordでは、独自の「UnicodeMath」でも数式を受け付ける。これはユニコード文字を使って記述した数式を解釈して、数式として清書するものだ。たとえば、2次方程式の解の公式なら「x=(-b+-√(b^2-4ac))/2a」と入力すると、これを解釈して数式として清書する。このとき、不要なカッコを自動的に抜いてくれる(写真01)。たとえば、「e^ix=」と入力するとixをeのべき乗として扱う。xをべき乗にしたくない場合には、「e^i x」と間にスペースを入れる(スペースは自動的に抜かれる)。関数なども単純なsin、cosなどは自動認識して前後にスペースを入れると関数名として分離できる。たとえば、虚数単位がsin関数の係数になっているような場合、「i sin x」とすると、iは斜体(正確には数学用英数字記号Mathematical Italic Small I。コードポイントはU+1D456)、sinは関数名なので立体(ASCIIコードの英字)、xはsin関数の引数として認識される。
比較的記述がラクなので便利なのだが、一部、カーソルキーなどで関数の引数が終わったことを示す必要があるなど、数式エディタが顔を出すことがある。たとえば、「sin 」と入力するとsin関数の引数入力になるが、スペースで関数の引数入力状態は終わらない。これを終わらせるには、左カーソルキーを使って、1つ外側にカーソルを動かし引数入力状態から抜ける必要がある。
LaTeXでいう自動数式番号は、Wordでは数式末に#とフィールドの連番(図版番号)を置く(LaTeX数式入力でも利用できる)。こちらも数式エリアの最後でエンターキーを押して数式認識を行わせる必要がある。フィールドによる連番を使い慣れていないとちょっとキツいし、等号揃えなどがうまくいかないことがある。
キーボードからのギリシャ文字などの数学記号、文字の入力は、数式エディタの機能ではなく、数式オートコレクトで行う。式中で「\theta 」(スペースを最後に入れないとオートコレクトが適用されない)が、ユニコードの数学用英数字記号の“θ”(Mathematical Italic Small Theta)になる。
ただ、オートコレクトは、ときどき、思わぬ変換をしてしまうため、オフにしているユーザーも少なくないだろう。数式オートコレクトは数式エリアの中だけと限定は可能だが、数式の前後で数式に含まれる変数などについて本文で記述するときに数学用文字などを入力したくなることがある。文中数式を挿入することもできるが、Wordでは、Alt+xでユニコードのコードポイントと文字の相互変換ができる機能を使うと利用頻度が高い文字を素早く入力できる。文字の直後でAlt+xを打てば、文字はコードポイントに変換される(もう一回Alt+xで元に戻る)。これでコードポイントを簡単に調べることができる。たとえば、Mathematical Italic Small “𝑎”はU+1d44eとなるので、1d44eと入れた後Alt+xを打てばよい。数学用の斜体小文字は、プランク記号となる“ℎ”(U+210e)以外は、この後ろに順番にならぶ。虚数単位に使われる“𝑖”は、U+1d44eの8つ後ろのU+1d456である。IMEの単語登録という方法もあるが、英文の作成中(特に本文中)に数学用英数字記号を入力するのは、こっちのほうがラクだ。
今回のタイトルの元ネタは、E.T.BELLの“MATHEMATICS Queen and Servant of Science(1951)”である。翻訳がハヤカワ書房の「数学は科学の女王にして奴隷」である。かつては、コンピューター業界でもMaster/Slaveなどの用語が使われていたし、Servantという言葉が普通に使われていた1951年の著書である。だが、いまでは、そのまま使うと苦情が殺到しそう、ということで後半を三点リーダーとさせていただいた。
数式といえば、父ちゃんに限りなくそっくりになった寺尾聰が主演した映画にもなったベストセラー本がある。残念ながら筆者はベストセラーには手を出さない主義なので読んでないし映画も見ていない。代わりに数学者が主人公の「ビューティフル・マインド」(A Beautiful Mind。2001年)を見た。以前紹介した映画「ドリーム」でも、考えている様子を黒板に数式を書く映像で表現していたように、この映画も状況をセリフではなく絵として見せてくれるハリウッドらしい映画。日本の映画は登場人物がずっと喋っているので結構苦手(婉曲表現)。