Crossroads of my life -人生の岐路-Vol.1 辻 真吾氏
スタートラボがお届けする、インタビューシリーズ “Crossroads of my life”
ゲストの人生の岐路から、Pythonに携わる人々の熱い想いや信念を探っていきます。
第一回目のゲストは、軽快な語り口でプログラミング初学者にも分かりやすい解説に定評のある辻真吾氏。スタートアップ事業の立ち上げから、大学でのバイオインフォマティクス研究など幅広い立場での経験をもとに、これからの時代を生き抜くために何が必要かを語っていただきました。
【プロフィール】
辻 真吾(つじ しんご) 博士(工学)
東京大学 先端科学研究センター ゲノムサイエンス分野 特任助教。東京大学理科I類から同大学院計数工学専攻修了。スタートアップ企業でJavaによるWebアプリ開発を経験した後、バイオインフォマティクスの研究に携わる。現在も東京大学で特任助教として勤務する傍ら、これまでプログラミング経験が無い方々へもPythonの魅力を伝える活動として、「みんなのPython勉強会」コミュニティの主宰や、「Pythonスタートブック(技術評論社)」をはじめとした多数のPython関連書籍の執筆・監修を手掛けている。
Crossroad -1- 東大からベンチャーへ就職
実は天才的な理論物理学者にあこがれていた時期がありました。
東京大学理科I類に入ったけど理学部物理学科に進むことは本当に難しくて、結局3年生からは工学部の計数工学科という、特定分野に特化せずにコンピュータと数学を使って何でもやる学科に進みました。子供のころからコンピュータは大好きで、親に買ってもらったMSX2でプログラミングはやっていましたので、好きな分野に進めたと思います。
卒業後も名の通った日本の大企業に就職するつもりはなくて、当時(2000年)は珍しかったと思いますが、東大から新卒でベンチャー企業に就職しました。ゴールドマンサックスの投資銀行部門の5人が出資し生活情報のWeb配信サービス会社を起業するってことで面白そうという理由で、インターンを経てそこに就職することにしました。
創業者5人はIT開発の経験がないので、まずはITエンジニアを集めるところからのスタートでした。開発を担うエンジニアは、役員の親戚と、私、そして私の大学院の後輩のたった3人でした。Sun MicrosystemsのサーバーにSolarisをいれて、DBはOracle、WebアプリサーバはWebLogic、その上にJavaでWebアプリ作っていました。それをデータセンターに持って行き設定していました。データセンターでは、マシンのために真冬でも冷房効かせた中で設定をしていましたね。当時のWebLogicは高価なのに今と比べると機能が充実していなくて、DB接続も自分たちで作り込む必要がありました。今はあっという間にWebサービスを立ち上げることができてしまうので、PythonのMVTフレームワークの「Django」と比べたらびっくりしますよ。当時は、社内で作ったWebフレームワークを利用し、顧客のニーズに合わせてアプリを作りこんでいました。主に、不動産屋が間取りや写真をアップロードすると、それをWebからユーザーが検索できるシステムを作っていました。
学生の頃はC++で修士論文を書いていて、自分ではそれなりにプログラミングができるつもりでしたが、仕事の中では全然そんなことなかったですね。Javaも最初は苦労しましたが、実務をこなしながら独学で習得していきました。プログラミングは好きだったので、全体像が分かるようになったらJavaプログラミングも大好きになっていきました。会社も次第に大きくなって人が増えてくると、大企業でシステム開発してた人や高専卒の人などは本当に優秀で、すごい人達と一緒になって時間も密度も濃く働くことでプログラミング能力を伸ばすことができました。小さい組織だったので受け持った仕事の領域も、顧客からの要望ヒアリングから、機能設計、プログラミング実装まですべて自分でこなしていました。顧客から直接フィードバックをもらって早いサイクルを回すことで実力が上がったと思います。そして何よりも直接やり取りすることが楽しかったですね。
Crossroad -2- バイオインフォマティクスを志して博士課程に
そんな会社も2年半働いて辞めることになりました。土日休日もなく毎日終電まで働き、手元に貯金もできていたので、高級車(フェアレディZ)でも買ってこのまま社会人として働き続けるか、そのお金で大学院に行って博士課程に進むか迷いました。会社も2年半で社員数が増え、自分の仕事を周りの人が担当できる状況も整いつつありました。仕事に不満はなく楽しいけれど、ずっとこれをやり続けるのも何か違うと思い、思い切って会社を辞めました。当時の私は生命科学の知識は全く無かったのですが、興味のあることを今やらないと後悔すると思い、今の東大先端研の油谷教授のところに面接に行き、2003年秋入学で博士課程に入ることになりました。
生命科学・生物学は数学やコンピュータと全然関係ないようなイメージがありますが、当時、バイオ分野がデータ解析に変わりつつある時代でした。DNAマイクロアレイという、遺伝子の全ての発現状態を調べることができる装置ができたり、今だと次世代シーケンサーですごい勢いでDNA配列が解析できるようになって、1回実験をするとめちゃくちゃな量のデータが出てきます。そのデータをコンピュータシステム上に蓄積し、解析して結果を出す”バイオインフォマティクス”と呼ばれる生物学と情報科学が融合した分野の人材が不足していました。
バイオインフォマティクス専門の研究室では、コンピュータによるデータ解析(ドライ研究)が専門ですが、私が所属した研究室では、手術切除した生体癌細胞組織からDNAを抽出して、癌細胞の中で遺伝子のどの部分が変異しているかを調べる(ウェット研究)こともやっていました。ウェットの研究者がいる研究室に入ることができて、何もかもが新鮮で本当に楽しかったのを覚えています。3年で無事に博士号を取り、そのまま先端研で働くことになりました。
Crossroad -3- Pythonとの出会い
話は少し戻って、バイオインフォマティクスの博士課程3年間の前半(2004年頃)になりますが、それまでDNAの配列解析するアプリケーションをJavaで自作していたのですが、ある日突然Javaに飽きてしまって。次に乗り換えるプログラミング言語をいろいろと探していてPythonを始めました。
最初に習得したC言語の影響もあり、コーディングの際はインデントを揃える習慣がついていたので、インデントを制御構造に取り入れていることに惹かれたのがきっかけだったと思います。当時既に、大量の文字列・配列を結合する” join “というライブラリがPythonにありました。Javaだったらfor文で回さなければいけなかったので、思っていることがで簡単にできるライブラリが充実していることがとても新鮮に感じました。でも当時のPythonは今と比べると足りないところがたくさんありました。例えば、scikit-learn(サーキットラーン:機械学習ライブラリ)にまだランダムフォレストが無く、自分で実装する必要がありました。その頃と比べ今は、Pythonライブラリはさらに充実し優れているので、ライブラリを使いこなすことで、自分の能力拡張が手っ取り早く容易にできると思います。
初めて出版した「Pythonスタートブック(技術評論社)」も書き始めてから出版までに2年程かかり、全く進みませんでした。プログラミング初心者向けの本は難しく、自分では当たり前のことを上手に伝えるための発想の転換が必要でした。Pythonの技術的な側面を解説する本ではなく、プログラムを書いたことのない人が、プログラミング言語の中でも比較的簡単なPythonを使ってプログラムを書けるようになるには何を知る必要があるのか、どういう考え方をしなければいけないのか、プログラミングをどうしたら分かってもらえるか、を突き詰めることに時間がかかり、とても悩んで書きましたね。
Crossroad -4- プログラミング学習の不思議と向き合う
プログラミング学習においてずっと不思議に思っていることがあって、世間では「プログラムなんて誰だってできるようになる」という考え方と、「プログラムを書くことはなんらかの特殊能力が必要」という考え方の2通りあって、私自身もこの2つの考えの間で揺れることが今でもあるということです。
高学歴だったり、偏差値が高い人でもプログラムができるようにならない事例をいっぱい見てきました。プログラミング習得は天性によるのか、後天的に鍛えられるものなのかを知りたいという気持ちがあります。鍛えられるのであれば、それはどんな能力なのかを理解すれば、誰もがプログラミングができるようなコンテンツが作れると考えています。けれどそれが何なのかわからないでいる。興味を持って取り組むとプログラミング習得もできるようになるのだろうか。ITエンジニアの中には、プログラミングに興味があるわけではないけれど、仕事としてしっかりプログラミングができるようになっている人もいることを考えると、単純に熱量の問題でもない気がします。
未経験者のプログラミング習得においては、汎用言語であるPythonから始めるのは良いと思います。データサイエンスなどの統計、データ解析に特化するなら、PythonではなくR言語のほうがやりやすいですが、これからプログラミング言語を習得するのなら汎用性は大事だと思います。汎用的であれば何にでも使えるし、コードさえ書ければ何でもできる世の中になりつつあります。たくさんのデータもインターネットにオープンになっています。コードを書くこと自体に興味持ってもらえると一番良いのだけれど、とにかく汎用プログラミング言語を習得することで、そこから派生した領域が広がる可能性が高まっています。そうやって広がった領域は、自分でもまだ気付いていない興味の網にも引っかかるはずです。自分自身の選択肢を広げるための準備としてもプログラミング習得はやってほしいと思います。
最先端分野であるプログラミングをこれから学ぼうとしている人たちにとって、効果的な学習方法はまだ未知のことが多いですが、私自身の経験や生命科学における多様性をテーマにしてよりよい学びを作ることができると楽しいだろうなと思います。
Crossroad -これから-
自分の人生はただ興味あることをやる、そんな人生だと思います。興味あることは長時間やっても苦痛にならないし、生命科学もプログラミングももっと知りたいと思っていました。計算していたわけではないですが、小さなスタートアップ企業で会社全体の動きを見ながら、ビジネスとは何かを知れたことは結果としてよかったと思うし、その後に博士課程でバイオインフォマティクスにチャレンジできたことは現在のすべてに繋がっていると思います。振り返ってみても、色々な経験をすることが大事だなと思います。
まだまだ解明されていないところもありますが、人間という生命体には何十兆という細胞が集まってそれぞれが同期し全体をうまく回して、ウイルスが体内に入っても何段階もの防御・攻撃のシステムが働いていて、容易には死なないようにできています。細胞レベルや、生物レベルにおいても多様性を保つことが重要で、これは人類社会のレベルにおいても言えることだと思います。なぜ多様であることが重要なのか、多様性を失うとなぜおかしなことが起こるのか、生命体の営みからエッセンスを抽出して人類の社会的課題解決の一端として考えを提供できると面白いのではないかなと最近思います。
多様性のある仕組みがどうしてそんなにうまくいくのか、一個の細胞は数十マイクロメートル、それがみんな集まって、どうして人間として歩いたり走ったり何かを思考したりできていることはすごいことだと思っていて、それがどう成り立っているのかの真理がわかれば、多様な人類が仲良く暮らせる社会につながらないか。。。
そんな人類の永遠の課題にも通じるテーマに、バイオインフォマティクスや多様性のアプローチからチャレンジしてゆきたいと思っています。