軽快な語り口でプログラミング初学者にもわかりやすく解説してくれる辻真吾氏。ご自身もスタートアップでの事業立ち上げから、大学でのバイオインフォマティクス研究など幅広い立場での経験をもとに、これからの時代を生き抜くために何が必要か語っていただきました。
【プロフィール】
辻 真吾(つじ しんご) 博士(工学)
東京大学 先端科学研究センター ゲノムサイエンス分野 特任助教
1975年生まれ、東京大学理科I類から同大学院計数工学専攻修了。スタートアップ企業でJavaによるWebアプリ開発を経験した後、博士課程の学生として大学に戻り、バイオインフォマティクスの研究に携わる。現在も東京大学で特任助教として勤務する傍ら、これまでプログラミング経験が無い方々へもPythonの魅力を伝える活動として、「みんなのPython勉強会」コミュニティの主宰や、「Pythonスタートブック(技術評論社)」をはじめとした多数のPython関連書籍の執筆・監修を手掛けている。
【Crossroad①】
東大からベンチャーへ就職

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