Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データ分析におけるより良いコードの書き方

 データ分析におけるより良いコードの書き方

8月8日(木)に開催したDS集会で発表したスライドです。

いそひまかん

August 08, 2024
Tweet

More Decks by いそひまかん

Other Decks in Programming

Transcript

  1. 2 Copyright 2023 @Isokan_DD 2 Copyright 2023 @Isokan_DD はじめに
 ⽬的

    - より分かりやすく、理解しやすいコードを書く重要性と意識を芽⽣えさせる 対象者 - データサイエンスに興味ある初学者、学⽣ - 駆け出しのアナリスト、DS このLTで取り扱わないもの - パフォーマンス向上の観点からのコーディング 注意 現時点での考えのまとめであり、ベストプラクティスではありません。 より良い実践⽅法があれば、学ばさせていただきたいと思います。
  2. 3 Copyright 2023 @Isokan_DD 3 Copyright 2023 @Isokan_DD ⾃⼰紹介 •

    VRCでは ‧DS集会運営主催 ‧たまにLT登壇します • 普段のお仕事 ‧データサイエンティスト/WEBエンジニア ‧通販/⾦融業界向けへのデータ解析 ‧機械学習系プロダクト開発 • 趣味 ‧ご飯巡り/飯テロ ‧ホラーワールド巡り おつきみ / Otsukimi ©HYPERSPACE ©GBXD
  3. 4 Copyright 2023 @Isokan_DD 4 Copyright 2023 @Isokan_DD こんな悩みを経験した事はありませんか? 


    - コードが汚くて、何をしたか分からない(理解に時間がかかる)
 - しばらくぶりにnotebookを実行したら動かない
 - 引継ぎで苦労
 

  4. 5 Copyright 2023 @Isokan_DD 5 Copyright 2023 @Isokan_DD 本当にあった大変だった話 


    - 半年毎に報告する定期の分析タスクで弊害が
 - 1回目は保守性よりも示唆だしやスピード優先で解析
 - 分析コードもデータも整理されていなかった
 - 2回目の案件で3か月間の納期でコードや集計条件の解読に1か月もか けてしまった
 - 引継ぎするもドキュメントの整理で手間取る事に…
 - 1からやり直した方が早かったのでは?

  5. 6 Copyright 2023 @Isokan_DD 6 Copyright 2023 @Isokan_DD 背景
 -

    保守性を意識した分かりやすいコードを書く事は、以下の背景がある分析業 務において優先度を上げにくい
 - 再利用性より分析からのスピード優先
 - データ探索や分析要件の再利用する機会がない
 - そんな時、ある記事を発見
 - オブジェクト指向に学ぶデータサイエンスのコーディング術
 
 出所:オブジェクト指向に学ぶデータサイエンスのコーディング術 (https://zenn.dev/zenkigen_tech/articles/f15988969d9c3f)

  6. 7 Copyright 2023 @Isokan_DD 7 Copyright 2023 @Isokan_DD 背景
 -

    分かりやすいコード書く方法として挙げられる「リーダブル・コード」
 - 全てを取り入れることは難しいが、初心者でも取り入れやすいノウハウがある
 - 今回は個人的におすすめできるノウハウを紹介する
 
 出所:amazonから(https://x.gd/34PHs)

  7. 10 Copyright 2023 @Isokan_DD 10 Copyright 2023 @Isokan_DD コメントを書くことは実現したい要件の整理につながる
 実現したい分析内容を説明するように簡潔にコメントを書くことで、


    - 分析要件の見落としが見つかる
 - 上手く書けない(説明できない)時は詳細が明確になっていない
 - 集計条件が雑
 - 異常系の考慮漏れ
 
 
 2. コメントを書く 

  8. 11 Copyright 2023 @Isokan_DD 11 Copyright 2023 @Isokan_DD 書くべきでないコメント 


    - コードを読めばすぐわかる内容
 - 代名詞が含まれている
 
 書くべきコメント 
 - コードの意図
 - 全体像が分かるもの
 
 2. コメントを書く 

  9. 12 Copyright 2023 @Isokan_DD 12 Copyright 2023 @Isokan_DD - 単体テストを書く


    - カバレッジ100%を目指すのではなく、
 入力に対して100%動くか怪しい部分に導入す る
 - 慣れたらpytestなどのテストツールを導入する もあり
 - フォルダの構成を整理する
 その他

  10. 13 Copyright 2023 @Isokan_DD 13 Copyright 2023 @Isokan_DD 参考文献
 -

    Dustin Boswell, Trevor Foucher,リーダブルコード, オライリー・ジャ パン
 - オブジェクト指向に学ぶデータサイエンスのコーディング術 (https://zenn.dev/zenkigen_tech/articles/f15988969d9c3f)
 - 高橋威知郎, 白石卓也, 清水景絵, データサイエンティストの秘密ノー ト, SBクリエイティブ