「プログラミングをはじめたいのですが、入門書はどれがよいですか?」
「学生が使っているプログラミングの入門書はどれですか?」
といった質問をよくいただきます。実は、金子研でオススメのプログラミング入門書があるわけではなく、学生に入門書を使うように言っているわけでもありません。どんなコトにもメリットとデメリットがある!、が口癖でして、プログラミングの入門書にもメリットとデメリットがあると思います。このあたりの説明をします。
まず、プログラミングは手段という位置づけでして、目的は別にあります。たとえば 「化学データや化学工学データを用いて、データ解析や機械学習をすること」 です。なので、データ解析や機械学習をメインにして、本を出版したり、
連載をしたりしています。
目的が 「化学データや化学工学データを用いて、データ解析や機械学習をすること」 あれば、上の本や連載を大いにオススメします!(そのために書きました!)
ただ、金子研の学生の目的は少し違います。「化学データや化学工学データを用いた、データ解析や機械学習の新たな手法を開発すること」 です。データ解析や機械学習をするだけではないのですね。なんらかの手法を提案したあと、それを実現するためのアルゴリズムを考えたり、アルゴリズムに基づいてプログラミングしたりする必要があります。
“新たな” 手法ですので、これまでに例はなく、自分で考えてプログラミングするわけです。そのためのプログラミングのスキル、研究者としてのスキルが必要です。特に、自分で仮説を立てて、プログラミングしてみて、自分で考えた結果になるか検証して、それに基づいてまた仮説を立てて、、、といった試行錯誤が大事です。
もちろん、「データ解析や機械学習をすること」 を目的にしたとき、上のような入門書を使うことで早く目的を達成できると思います。Hello World! を表示させたり、データを読み込んだり保存したり、基礎統計量を計算したり、といったことはすぐにできるようになると思います。しかし、「データ解析や機械学習の新たな手法を開発すること」 まで道のりは遠いです。本を使わないことで、「データ解析や機械学習をする」 までは時間がかかっても、その過程でのプログラミングにおいて、試行錯誤したほうが 「データ解析や機械学習の新たな手法を開発すること」 のためのスキルが身についたりします。データを読み込んで、基礎統計量を計算して、それを保存するには、どのようなアルゴリズムにしればよいのか、それをどうプログラミングしたらよいのか、ここで試行錯誤のトレーニングができるわけです。急がば回れ、ですね。
まとめると、入門書にはそこに書かれていることをできるようになるまでを早くなるというメリットがありますが、試行錯誤する機会を失ってしまうというデメリットがあります。そのため、「データ解析や機械学習をすること」 を目的にしたときには入門書は有効ですが、「データ解析や機械学習の新たな手法を開発すること」 を目的にしたときには、そうではなく仮説と検証の試行錯誤を繰り返したほうがよいと思います。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。