いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

ブログ管理者が本を出します

 ようやく出版まで漕ぎ着けました。準備を始めたのは昨年の6月です。ちゃんとした原稿になったのが1月半ばでした。

コンピュータを動かすには何か言語が必要です。人間はその言語でプログラムを書き、コンピュータはプログラムを読んで動くのです。Pythonという言語では、1+2+……+100を計算するのに、例えば次のようにします。

s = 0
for i in range(1, 101):
    s += i
print(s)

電卓みたいに、1+2+……とキーを人間が押して計算するのとはわけが違います。上のようなテキスト、要するに文書をパソコンに渡すだけで合計を計算させなければなりません。初めてだと一体どうやって計算させればいいのか、見当すらつかないはずです。もちろん人間がさせたいことは1から100までの和の計算だけではありません。三角関数の値を求めさせたり、5次方程式の解を(解の公式はありません)数値計算させたりもするのです。そういう言語をどうやってつくるのでしょうか。思いつきでは無理です。必要な勉強をして、ちゃんと設計して、……と時間をかけなければいけません。出版した本では、言語をどうやって作るのか解説しました。
 今まで何回かそういう言語を作っています。今回は初めてPythonを使いました(言語自体も何かの言語で書くのです)。「本にするぞ!」と最初から考えていて、言語の作成と並行して原稿を書いていました。企画が採用してもらえる保証などありませんでしたが、「Pythonで自分の言語を作る」という内容の本は見たことがありません。Pythonを使う人たちは今は多いですし、その中には言語をどうやって作るのか知りたい人もそれなりにいるはずで、一定の需要は必ずあるはずだと思いました。
 本にしようと思った理由がもうひとつあります。どうやって言語を作ったらよいのか、自分が後で読んですぐ思い出せるようにまとめておきたかったということです。人間、弱いもので、外からの強制力というか、「どうしてもやらなければならない」という状況がないとなかなか大きな仕事はできません。レベルは全然違うのでしょうが、数学者ワイルズの話があります。
 ワイルズフェルマーの最終定理を証明しました。秘密裏に研究を進め、結果が出て「これでよさそうだ」と考えましたが、同じフロアの同僚カッツに証明が正しいか確認してくれるよう頼みます。それについてカッツは「これだけの長い証明だと、きちんとした講義の計画を立てることが必要」というようなことを言っています。大学院の授業としてタイトルも決め、カッツ以外にも学生に受講させました。ワイルズもそういう状況だと自分の頭の中を整理し、他人に分かるように、と考えることになったでしょう。この本にありました。

 採用の連絡をもらってからはまた大変でしたが、とにかくいろいろ勉強になりました。なにしろ初めてのことです。「初心者向けにこの表現では伝わらない」、「全体を通して用語が統一されていない」、……。プログラマはソースにあちこちコメントをつけます。「面倒くさいから××で代用しておく」とか「もう疲れた」とか書いてしまうこともあります。今回はそういうふざけたコメントは書きませんでしたが、編集の方からはコメントで使った漢字などについても指摘していただきました。相当迷惑をかけてしまいました……。
 予想外に大変だったのが校正と、索引作りです。校正は精神的にきつかったです。索引は、ないと読む人が困ります。しかしあっちにもこっちにも出てくる単語だってたくさんあります。例えば「変数」など、全体では何百も使っているでしょうが、全部を索引に載せるわけにはいきません。「ここは載せる」、「載せない」といちいち判断しなければならないわけです。
 説明は徹底的に分かりやすくしたつもりです。人によって分からない点は様々ですからどこまでうまくいっているかは分かりませんが、自分が引っかかったところは重点的に解説しました。まあ終わってよかった。ちゃんと本の形に残せたし、読んで自分の言語を作る人もいるでしょう!!
 まだいくつか、書きたいテーマはあります。頑張ってみます。