本記事はモチベーションクラウドシリーズ Advent Calendar 2022の24日目になります。
リンクアンドモチベーションでデータサイエンティストをしている東山です。
突然ですが、みなさんgoogle colabなどの分析のレビューってどうしていますか?
弊社ではレビューをできるようにStreamlitを導入してみましたという記事です。
まだまだ試験的な取り組みですが、少しメリット/デメリットが見えてきたのでまとめてみました。
課題: 新人の育成
弊社のデータチームは現在7名なのですが、中途のエンジニアはマネージャーの僕を含めて3名で、まだまだ新人が多い状況です。
そのため、彼らの育成がチームのケイパビリティをあげていく上でもっとも重要なポイントと考えています。
データサイエンティスト育成のためにコードレビューを実施したい
自分が受けてきたアプリエンジニアとしての「育成」を振り返ってみて、もっともありがたかったなと思うのは「コードレビュー」でした。
良い名前の付け方の指摘は、自分の認知と他者の受け取り方の差分を明確にしてくれます。
先輩の指摘でどんどんシンプルになるコードが魔法のようでした。
また、昼休みなどに同僚の受けているコードレビューを見ていると勉強になる瞬間が多くありました。
この個人的な経験からコードレビューに期待する育成効果をまとめると、下記になると思います。
- チームで保守しやすいコーディングの習得
- 他の人が受けてるコードレビューの知見の習得(集合知化)
コードレビューで新人育成したいけどDiffが見にくい
コードレビューを通して育成していくうえで、通常のアプリエンジニアとデータサイエンティストでは若干環境が異なる部分があると考えています。
データサイエンティストが実務でよく使うのは、google colabやjupyter notebookなど、メタデータを含むjson形式が多いと思います。
これをgit管理してPRを作成すると、Diffがとても見づらいのです。
実際、それを補うためのnbdimeというライブラリも存在し、この課題感がある程度共有可能なものだという証拠かなと思います。
この差分把握の煩雑さから、これまで細かいところまで分析コードのレビューが十分にできませんでした。
打ち手: Streamlitでコードレビューできるようにした
この課題に光明が差したのがStreamlitの登場です。
多くの記事で紹介されているのでStreamlit自体についてはあまり語りませんが、フロントエンドの知識をほとんど必要とせず、pythonだけでデータwebアプリケーションを作成することができるフレームワークです。
これにより、純粋なpythonコードだけでnotebookのような分析結果を確認できるなと思いました。
メリット/デメリット
データサイエンティストの育成目的で導入したStreamlitですが、副次的な効果もいろいろ見えてきたので、メリット/デメリットをまとめてみました。
- メリット
- (狙い通り)コードレビューは格段にやりやすくなった
- (副次的)google colabで分析を行なっていると散らかりがちだったnotebook群が複数ページにまとめて体系化することが可能になった
- (副次的)CI/CDを組み合わせることができるようになった
- デメリット
- ちょろっとした分析をして軽く共有したいような内容の場合、いちいちPRまで作成するのは煩雑
- colabに慣れた新人たちにはstreamlit自体の学習コストがかかる → そもそもPR作成が遅れがち
- colabではなかった個人ごとのPCでの環境差の影響を受けやすい
結論: とはいえ、おすすめです
メリットの1をもう少し補足すると、streamlitでのPRが作成されることにより、「適切にディレクトリを作成し再利用可能なコードを作成しましょう!」というインセンティブが働くようになりました。
メリットの3と合わせて、時間が経つほど開発効率が向上するのではないか?と考えています。
デメリットの2に関しても、習熟と共にカバーできるようになると楽観視してます。
今後としては、コードレビューをたくさん積み上げて、新人たちにそれぞれのコードレビューでの学びの共有会を実施して集合知として行けたら良いなと思っています。
むすびに
データサイエンティストの育成に関して、今回はコードレビューを取り上げましたが、うちではこんな工夫しているよ!というアドバイスなどあれば是非とも交流させて下さい!
以上です、最後までお読み頂きありがとうございました。