見出し画像

データサイエンスインターン生 馬場開陸の記録【後編】

はじめに


 前回は自己紹介とインターンに関する志望動機が対象でしたが、次回は実際にインターン業務を経験したうえでの体験談を紹介します。

前編はこちら:https://note.com/cykinso/n/n83d75275783f

特に苦戦した点


 まず最初期の段階において、前編で述べた「pythonプログラミング以外の知識/技術」と向き合うことになります。細かいところでは色々ありますが、主な対象はシェル操作、git、dockerです。特にgitとdockerに関しては、完全に個人で分析していた頃には無かったところで特に困りはしなかったものの、組織において円滑にプロジェクトを進めていくうえでは強力なツールであり、自分のインターン活動においてもすぐに必要となりました。また、それらを効率的に操作するうえで、相応のシェル操作能力も必要でした。

 最初は右も左も分からない状態で、とにかく教わった通りに操作するだけで精一杯でしたが、あくまでも想定していた事態であり、そのような知識/技術を学ぶことが大きな目的でもあったので、自分にとっては歓迎すべき事態でした。加えて、苦しかったのは非常に短い間だけであって、気が付いたときにはある程度の知識/技術が身に付いていました。いずれも業務において都度当然のように使用するものであることから、明確な目的意識を持って何度も繰り返し実践していくうちに自然と慣れていったのです。こう書いてみると当たり前のような感じがしますが、そのような機会をゼロからの独学において用意することは困難であり、実務経験というものが誇る特色として重要な点であると思います。

分析環境


 このインターンは自分の通っていた大学の関係でフルリモート体制で活動させていただいたのですが、それによる不便等を感じることは(最初期を除いて)全くありませんでした。その点に関して、Zoomによるミーティングも一因ではありますが、特に分析に関しては同じサイエンスユニットに属する久保さんが構築された分析環境が大きな支えになりました。具体的には、アドホックな(ローカル環境ありきの)分析環境ではなく、前述したgitやdockerを用いることでローカル/リモート間の再現性が確保された環境です。これによって、分析結果だけを切り取って報告するのではなく、その過程も含めて確認およびダブルチェックをしていただくことが可能だったため、フルリモートでありながら直接指導していただく場合とほとんど遜色のない体制で業務を進めていくことができました。

pythonによる分析業務


 上記の件と比べれば、こちらに関しては小さな苦労で済みました。新たに学ぶことも少なくありませんでしたが、なんといっても既に土台となる経験が存在していたので、スムーズに進みました。データ解析に関しては、古典的な統計処理から機械学習モデリングまで、ときに菌叢解析に適した専門的な分析であったりと、幅広く取り扱う機会がありました。

 個人的に興味深かったのは、分析手法そのものというよりも、プロジェクトの性格に応じて適切な手法を適用し、目的に沿った結果を得るという一連のプロセスでした。インターンという立場の自分は、既にプロジェクトの方針が概ね練られた状態で具体的な指示をいただいて取り組むことになります。これはすなわち、安全な立場において上記の一連のプロセスを観察してじっくり学べる美味しい立場とも捉えられます。「ケーススタディの蓄積による分析センスの鍛錬」などと称してみると伝わりやすいかもしれません。そのようにして段々と経験を積んでいくうちに、少しずつではありますが、プロジェクトのお話を伺う際の呑み込みの早さや勘の冴えといったものの具合が向上していく実感を得られています。これも独学で参考書などで座学するのとは一線を画する経験であり、インターン活動の醍醐味として欠かせない点です。

 大学の研究活動においても類似した体験ができるとは思いますが、そもそも本質的な目的が異なるため、往々にして「選択と集中」の度合いが強く、少数のタスクに時間をかけてじっくり取り組んでいくものだと思います。それに対して、業務活動では基本的に1つ1つのタスクが円滑に進んでいくため、矢継ぎ早に様々な経験を積んでいくことになり、経験値の蓄積効率は非常に高くなります。

 具体的なプロジェクトの流れに関しては、どれもハッキリとしたシナリオのうえで無理のない速度で進めていけるため、ともすれば大学の研究室などで起こりがちな「実際に何をやっているのか分からないままとりあえず手を動かす」というようなこともなく、着実に対応していけました。また、プロジェクト毎に性格も様々で、濃厚な仮説を確実に裏付けにいくような場合もあれば、面白そうな事実が得られないかどうか探索的に解析するような場合もあり、なんというか、バランスが良いのです。それはつまり、解析担当者としてのモチベーションが全く停滞しないということを意味します。「あくまでも仕事なのだから、自分の好き嫌いに関わらずやらねばならないことをやる」などといったネガティブな思考に陥ることは皆無でした。加えて、直属の上司である渡辺さんによる綿密な進捗管理のおかげでロスの類いを最小限として着実に進めていけたため、ただでさえ魅力的な業務に対して盤石な体制で以て臨むことができました。

図1v2

↑Backlogによるタスク管理画面の一部:このようなプロジェクト管理体制に触れるのも初めてでしたが、すぐに利便性を実感するようになりました。


最も刺激的だった業務


 2020年末頃から着手した菌叢データ解析のための関数化作業です。それまでは様々なタスクに際して都度書いていた前処理コードの数々に関して、汎用できる部分を関数化することで効率化を図ってはどうかと提案していただき、一念発起して着手し始めました。それまでにどのようなタスクを担当してきたのか、その際に扱ったデータはどのような性格だったか、自分が実際にコードを書いていてどういうときに苦労したか、といった自身の経験をよく振り返りつつ、簡素な機能だけの状態から段々と作り込んでいって、使い勝手の良い便利な代物を目指しました。自分は機械学習モデリング等に勝るとも劣らぬ程に前処理が大好物であるため、種々のデータを睨み付け、取っ組み合いながら理想的な構造を模索していくというプロセスは非常に刺激的でした。また、pandasに代表される前処理技術に関しても、インターン以前と比べて引き出しの数や設計の柔軟性に格段の磨きがかかっていたため、その成長を実感しながらホクホク気分で作業を進められました。結果的に生み出した関数は、現在進行形で業務効率化に役立っており、実用面でも満足の仕上がりになったと思います。

図2

↑実際に作成した関数:データに出生日と検体登録日の情報しか存在しない場合に、それらに基づいて10歳区切りの年齢層を算出します。


おわりに


 自身のインターン活動を総括すると、「想定を遥かに上回る勢いで多角的・飛躍的に成長できた絶好の機会」でした。不足している知識/技術を補い、比較的得意であった部分に関しては更なる強化を果たし、目的に応じた統計的戦略設計のセンスを学び、インターン開始以前の自分とは一線を画する水準にまで成長できたと確信しています。株式会社サイキンソー様、温かく見守ってくださったサイエンスユニット の皆様、度々分析環境構築面での質問に応えてくださった久保さん、そして終始お世話になりっぱなしであるユニットリーダーの渡辺さん、サイエンス部門全体をまとめている竹田さんに、この場であらためてお礼を申し上げます。まだ不確定の話ではありますが、今後もサイキンソーでの活動を続けていくことができそうなので、到底返しきれていない圧倒的な御恩に少しでも報いるべく邁進していきたいと思います。

画像3