スーツ姿のプロダクトマネージャー

ITで新しいプロダクトを生み出したいすべての人を応援するブログです。

30過ぎのデータサイエンティスト見習い(2) ExcelからPerlへ

前回、業務系SE職から研究職への社内転職したところまで書きました。

この社内転職では、職種こそ大きな変化があるものの、ミッションが「製品化検討・企画」という話だったので、ビジネス経験を活かせるだろうと思っていました。しかし、実際に業務を始めてみると製品化検討などの仕事はなく、純粋に技術開発をやることになりました。
これはちょっとマズイかも…と感じた時には後戻りできない状況でした。


周りは新卒で研究所に配属された方が大半で、アカデミックな雰囲気に満ちていました。一方、私は研究員としての素養も、技術の積み上げもない中で、1年生として再スタートを切ることになりました。そのとき、すでに30台の前半。まさに見習い研究員・データサイエンティストとなったのでした。

まず初めに苦労したのは、プログラミングです。

仕事でよく使う道具がExcelからPerl、OSはWindowsからLinuxになりました。
今もSIerのドキュメントはExcelが多いと思いますが、SE時代には設計書も管理表もメモも全部Excelを使っていました。もちろん、Excel方眼紙もマスターしていました。
www.excite.co.jp

 

私自身はプログラミングが嫌いではなかったのですが、開発系のSEとはいえ設計やマネジメントが中心で、コーディングからはすでに離れていました。しかし、実験をしたりモデリングをやるためには、コーディングをしなければなりません。

今であればPythonを使っている人が多くなってきたと思いますが、当時はスクリプト言語としてもPerl, Ruby, Pythonを使う人がそれぞれいる感じでした。*1
たまたま先輩にいただいたサンプルコードがPerlだったので、Perlから入りました。主に前処理とか、文字列加工のための道具でしたが、10年近くExcelばかり使っていた人間には刺激が強すぎました。

だいぶ忘れてしまったのですが、こんな雰囲気のコードを渡された記憶があります。

  my %d;
  while(<>) {
      chomp;
      my @a = split /\t/;
      $d{$a[0]} = $a[1];
      …
  }

標準入力からデータを受け取って、タブ文字で分割して多次元ハッシュにつっこんでいろいろやる的なコードです。*2

気持ちの良いほど省略されていて、おまけに変数名の頭についている記号がいろいろ変わるので、大変に混乱しました。
恥ずかしながら、たった20行程度のコードを理解するのに1日以上かかりました。正直、自分はここで何をやっているのだろう…とダークサイドに落ちそうになりました。何せ、少し前までExcelをポチポチたたきつつ、担当製品の戦略とかデモシナリオを考える生活をしていたのですから…。

慣れるために、入門書を読みつつGoogle先生の助けを借りて、たくさんのコードを書くことにしました。その甲斐もあって徐々に慣れていき、データ加工などはできるようになってきました。

しかし、慣れとは恐ろしいもので、実験のためのコードを書くうちにPerlのことが好きになってしまい、自分でもメンテ不能なコードを量産し、自分自身に苦しめられることになったのでした。スクリプト言語の洗礼を受けるにはちょうど良かったと思います。

今ではPerlは使うことはなくなりましたが、Perlワンライナーは時々使います。リストコンテクストの参照方法や、ハッシュのハッシュを使ったデータ処理は手になじむものでした。途中でRubyを使っていた時期もありましたが、今ではPython中心です。*3

こんな風にして前処理ができるようになったころ、いよいよ機械学習を使ったモデル作りに取り組むことになりました。

続きはこちら
ku2t.hatenablog.com

*1:中には、AWKを中心にしている先輩もいて、妙にあこがれたものです。

*2:実際には、この後にテキストデータから文字を切り出すためにMeCabを呼ぶ処理が入っていて、さらには後処理で正規表現が入り乱れており、初心者には大変つらいものがありました。

*3:Pythonでもハッシュのハッシュを使いたくなって、いろいろ調べました。例えば、prima materia - diary : Pythonで多次元の辞書を扱う