Take Your Time

仕事や研究、コンピューターとの付き合い方

アホのためのプログラミング入門

学部時代数学をすべて落第したのはまあいいとして、パソコンも苦手で学部時代javaだかなんだかのクラスをあまりのわけの分からなさに途中でドロップして以来、授業で強制的に触らされたTSPとSTATA以外、いわゆるマウスで操作できないソフトウェアは一切触ってこなかった。
RやMATLABを触り始めたのは1−2年前のことで、当初はOLSとめんどくさい計算を代わりにやらせる以外に使い道がわからなかった。本格的にコードを読まされたのはAiyagari(1994)で、しかもGAUSSとかいうマイナーなソフトウェアを使わされて徹夜で宿題を解くも一見して間違いとわかる回答を拵えることしかできず苦手意識は募るばかりであった。
そんな自分でも最近は数百行にわたるコードを書いていることに気づき、どうしてこうなったのかちょっと考えてみた。
そんな人がいるかどうかはわからないが、パソコン音痴でiterationという単語を聞いただけで身の毛がよだつ人のための心構えを記しておこうと思う。

1.1+1からはじめましょう
まあ、fortranみたいな言語はそれだって難しいが、RだとかMATLABといった言語は1+1は誰でもできるようになっている。これは革命的である。パソコン音痴は何が怖いかというとそもそもパソコンが自分の言うことをきいてくれるかどうか不安なのだ。
Rの最初の画面で
> 1 + 1
とうつと、
[1] 2
と出てくる。これはまさにレボリューションであり、パソコンが自分の言うことを聞いてくれた!という快感が得られるのである。
調子に乗って代数の計算をやらせてみる

> a <- 1
> b <- 2
> a+b
[1] 3

奇跡である。なんとRくんはそこらへんの出来損ないの中学1年よりは賢くしかも素直であることがわかる。大概のプログラミングの教科書は最初に1+1をやってみましょうとか、"Hello World"と言わせてみましょうと書いてある。これを「へっバカにすんな」と飛ばしてしまうのがパソコン音痴の悲劇である。まずはパソコンの素直さを感じ取り、恐怖心をなくすのが第一である。

2.頭の良い人が書いたコードは見ない
頭の良い人はとても洗練されたコードを書く。そして僕らには何が書いてあるか全くわからない。1日中紙に打ち出したコードとにらめっこして出てきた関数を片っ端からサーチし何をやっているのか把握するなんてことは僕らにはできない。コードの読みやすさと速さ(洗練度)は反比例するのが原則なので当たり前である。だいたい、僕ら凡人は早く回るコードなんか必要なく、エクセルでできないことができれば十分なのである。
なので、とにかく簡単なコードを探すのが第一である。サーチエンジンで「R 入門」などと検索すればいくらでも簡単なサイトがでてくる。まずはひとつひとつ例にあるコートを書いてそれが回ることを実感するのが第一である。時間はかかるが、頭の良い人においつこうと四苦八苦するよりできることを確認するほうが精神衛生上よい。
コードを書くときも洗練されたコードを書く必要なんてない。コンピュテーションで勝負する気があるのなら止めないが、他にエキスパティーを見つけてこの方面は最低限のことを抑えておけばいいのだ。どうしても速いコードが書きたかったらそれができる友達に一杯おごって書きなおしてもらうほうが早い。

3.紙に書く
経済学のプログラミングはやたら行列が多い。そして僕ら数学の苦手な人種は行列を頭の中で視覚的に操作することなんて到底不可能なのである。なので、とにかく紙に書く。縦が何をあらわしてて横が何を表しているのか。行列の(1,1)は一体誰のどの状態なのか。いちいち確認していくことが大事である。

4.ウェブ講座もある
ホントはマニュアルを一番初めから読めばいいのであるが、そういうのは面倒だしすぐにyoutubeでお笑いの動画をみたくなる。なので、いっそのことyoutube で勉強するという手もある。今はニコニコやyoutube で統計やら回帰分析の説明をしてくれる暇な人親切な人がたくさんいる。とりあえずやってみる動機になる。

5.ブログを書く
動機といえば、ブログを書いてみるのもいい。このブログだって自分ができなくてできたことを書いているだけだが、意外にあとから参照することも多い。いろいろ書いてるとなんだか自分がスーパープログラマーになった気分で良い感じだ。

6.プログラマーにならなくてもいい
コードを書いて何かできたときに考え有ることは、「こんなこと誰でもできるよな」「凄い奴らから見たらこんなの子どもがおもちゃで遊んでるだけだよな」「彼らみたいになれる日が来るのだろうか」という鬱鬱とした感情である。しかし待って欲しい。僕らは彼らにならなきゃいけないのだろうか。登らなくていい頂上を見て目の前の道を歩むことを拒否しているのではないだろうか。僕らは彼らにはなれない。なる必要もない。その事実をきちんと受け止めれば自然に前に向かって進めるようになる。

終わりに
プログラミングというとおおごとのようだが、結局は普段やっているワードやらエクセルの操作をマウスからテキストに変えているだけである。なぜマウスでやれないからというと現状のパソコンとソフトが馬鹿で使えないからだと僕は思っている。いずれ時が経てば人間様が考えたリサーチを口頭で伝えればパソコン君がやってくれるようになると思う。そうなったら「彼ら」と僕らは対等になるので、そんなに頑張ってもしゃーないという感じで気楽にやればいいと思う。