徳之島コーパスの研究が一つのヤマ場を迎えた(と勝手に思っている)今、自分とコンピューターとの関わりを振り返りながら研究に対して意味づけをしてみたい。
プログラミングの初体験をしたのは修士課程にいたときだから今から半世紀近く前のことになる。恐ろしいことだ。もうそんなになるのか。沖縄の宮古方言の動詞の活用がちょっと複雑なのでこれをコンピューターでやってみたらどうなるのかというのが動機だった。
当時、東大で学生が使えるのは教育用計算機センターの大型計算機しかなかった。文学部には自前の計算機はない。センターの計算機の使用方法は当ブログ内の「真鍋叔郎さんのノーベル賞」に書いたが、恐ろしく不便なものだった。パーソナルコンピューターなど全然視界に入っていないし、そういうものがある未来など想像ができなかった。ところがその「未来」が6年後ぐらいに現実になるのだ。
動詞の活用はパターンマッチなど文字列処理が得意な言語でプログラムしたほうがいいという助言に従って、SNOBOL4という聞いたことがない言語を使うことにした。センターの機械は三菱製だったが、SNOBOL4を使った人はほとんどいなかったのではないか。このあともSNOBOLを主に使っている人には会ったことがないので超レアな言語であることは断言できる。
まったくの初心者だったが、やりたいことははっきりしていたので必要な機能だけ覚えてプログラムを作った。特に苦労した記憶はない。
そのあと、SNOBOLを使う機会は訪れず、基本的な関数やコマンドもすっかり忘れてしまって、家の整理をしているときに昔のプログラムが出てきても古文書と同じで全くちんぷんかんぷんである。
でもこの経験があったからこれ以後コンピューターに対して抵抗感を持つことがなかった。プログラム言語を使うときに必要な機能だけ知っていればいいという割り切りができるようになったのもSNOBOLのおかげだ。
次にコンピューターに対面したのは国研に入ったときだった。行動研究部の神部さんのところで実験制御用にアメリカDEC社のPDP11が入った。DEC社はミニコンピューターという新しいジャンルを開拓して急成長した会社で、PDPシリーズは主力商品だった。UNIXが最初に作られたのはPDP8上だったというくらい研究者には重宝されたのだ。私は部外者だったが、PDPをかなり自由に使わせていただいた。
PDPはその数年後に日本に出現したパーソナルコンピューターのように使えたが、その一番のメリットはソフトが充実していたことだった。ハードウェアについては今から見れば非常に原始的なものだったが、それでも能力的には国研の当時の主力の大型計算機に匹敵するものだった。
PDP11で私ははじめてBASIC言語を使うことになった。実はFORTRANも使えたのだが、BASICが文字列処理のための関数を持っていることを知ってBASICを使うことにしたのだった。
PDP11のもう一つの利点がエディターを持っていてコンピューター上でデータが作れることだった。
PDP11で私が作ろうとしたのは日本語の動詞の活用規則を実行するプログラムだった。これの最大の問題は現代日本語の活用規則が簡単すぎてコンピューターのプログラムにするだけのメリットが見いだせないことだった。でもBASIC言語はすぐに使えるようになった。これもやりたいことがはっきりしていたからだと思う。
そして1979年にはNECからPC8001が発売される。家電として使われることを前提としたパーソナルコンピューターである。これは約20万円という価格でありながらかなりの性能もあり、ヒット商品になったのだが、個人で使えるコンピューターを切望していた私も購入した。このころのパソコンのソフトは買うのではなくて自分で作るものだった。BASIC言語が使えたのでそれを使って作るのだ。
BASICはPDP11で経験済みだったので、PC8001は抵抗なく使えた。一番最初に作ったのはエディターだった。と言ってもいわゆるスクリーンエディターではなく、コマンドを打ち込んで修正や行の挿入を行うラインエディターだった。もちろん、PDP11のものをお手本にしてほぼ同じように動作するようにしたのだ。おぼろげな記憶によれば全部で200行ぐらいのものだが、実用に使うためにはエディターがどうしても必要だと思って作った。
PC8001は8ビットのCPUを使い、入出力装置はカセットテープレコーダーだった。計算も入出力も今から見れば非常に遅い。しかも内部メモリーたるや増設しても32Kバイトしかない。この非力なコンピューターでいろいろなことをしようとした結果、アルゴリズムに対する関心が非常に強くなった。遅いCPUではアルゴリズムによる能率の違いがはっきりとわかる。
今でも一番効率的なアルゴリズムでプログラミングをするように心がけているのはこの時代の経験による。
国研時代に大量のプログラムを書いて作業したのは、東京語アクセント資料のプロジェクトとGAJのデータの出力(調査結果の報告をオリジナルの通り発音記号で印刷した。それがそのまま『資料一覧』の版下になった。)だった。どちらも大量のプログラムが必要だったが、最終的に何とか形にすることができ、自信につながった。東京語アクセント資料は8ビット機を使い、印刷だけ大型計算機のレーザープリンターを使った。GAJのときはNECのPC98シリーズ(16ビット機)だった。
国研時代の最後の5年間はプログラミング言語としてターボパスカルを使っていた。
1990年に信州大学に転出したが、このあともコンピューターから離れたことはない。プログラミングに限定して話をすれば、大学で教えるようになってプログラミングを教えるようにもなった。教育用のプログラム言語として最初は自分が使い始めたawkを使ったのだが、pythonを使ってみたり最後のころはエクセルに付属しているVBAを使ったりした。
pythonやVBAは教えるために自分で覚えたのだが、VBAを使ってみるとエクセルのデータをプログラムで読み書きできて非常に便利だということが分かった。自分の研究でもメインで使う言語はVBAになった。言語データはエクセルで入力することが多い。
この50年近くのあいだ興味があってちょっとかじっただけの言語はここに名前を出していないが、名前を挙げたものを含めて全部で10以上の言語に触ったことがある。プログラム言語というのはよほど変わった言語でなければ自分の得意な言語の知識で何とか使えるようになるものだ。
VBAに話を戻すと、教えることがなければVBAをわざわざ覚えようとしなかっただろうから教えることは単なる負担ではなく大いにメリットがあった。
ただ、肝心の教えることにおいては成功したとはとても言えない。10人の学生に教えて、まともにプログラミングができるようになったのは1人いるかいないかという惨状である。
最大の理由はプログラミングが何の役に立つのか学生には全然見えてこないからではないか。私のようにやりたいことが先にあってそれを常に意識しながらプログラミングを学習するのと違って、学生諸君はプログラムを作ったからと言ってそれを何かに使うということはない。呪文のようなコマンドをせっかく覚えても次の週までには忘れてしまう。
卒業研究でデータの整理をしているのを傍で見ているとこれを個別に手作業でやるよりプログラムを書いたほうが速いのにと思うことがある。だがそれはプログラミングを知っている人間の感想で、学生にしてみれば「プログラミングを学習しているときはこんなプログラムで楽になる作業があるなんて知らなかった」ということになる。
方言研究者の間でプログラミングが普及していない現状を見て、言語研究者のためのプログラミング教本を作ろうと思ったことがある。コンピューターを使うことでこんな研究ができると提示して、そのためにはこういうことをするプログラムが必要と説明し自然にプログラミングに誘導するという組み立てである。目的がはっきりしていれば、学習意欲が起きやすいし、ちょっとしたことを覚えただけで目に見える成果が出せれば喜びも生まれる。
そう思ってテキスト作りをしたりしているが、問題はそれまでの研究とは別の新しいテーマが研究者にとって魅力的かどうかである。人間というのは慣性で生きているものなので、新しいことをするのにはエネルギーがいる。このブログを見て、プログラミングを習得したいと思った人は私に連絡していただきたい。教本を作るためにも私のメソッドの成功例を作ってみたいのである。
ここまでのまとめをしてみよう。ちょっと強引にまとめる。
1 プログラミング言語を一つ知っていれば他の言語を学ぶときに応用が利く。
2 目的がはっきりしていれば、プログラミング習得の強い動機になる。自分のコンピューターを持って最初に作ったプログラムがエディターだという人はあまりいないかもしれないが、どうしてもそれが必要だと思えばやってしまうものだ。
(強引すぎて全然まとめになっていない)