Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
データ分析におけるより良いコードの書き方
Search
いそひまかん
August 08, 2024
Programming
0
25
データ分析におけるより良いコードの書き方
8月8日(木)に開催したDS集会で発表したスライドです。
いそひまかん
August 08, 2024
Tweet
Share
More Decks by いそひまかん
See All by いそひまかん
洋書で輪読会をした話
isohimakan
0
290
勉強会のすすめ
isohimakan
0
290
データを整理する技術
isohimakan
0
63
【数式を恐れない】文系からの統計検定2級合格法
isohimakan
0
48
Other Decks in Programming
See All in Programming
Jakarta EE meets AI
ivargrimstad
0
140
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
1.9k
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
100
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
260
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
860
CSC509 Lecture 09
javiergs
PRO
0
140
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
Compose 1.7のTextFieldはPOBox Plusで日本語変換できない
tomoya0x00
0
190
Macとオーディオ再生 2024/11/02
yusukeito
0
370
「今のプロジェクトいろいろ大変なんですよ、app/services とかもあって……」/After Kaigi on Rails 2024 LT Night
junk0612
5
2.1k
Amazon Qを使ってIaCを触ろう!
maruto
0
400
受け取る人から提供する人になるということ
little_rubyist
0
230
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
The Language of Interfaces
destraynor
154
24k
The Invisible Side of Design
smashingmag
298
50k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Building Your Own Lightsaber
phodgson
103
6.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
16
2.1k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Transcript
Copyright 2024 @Isokan_DD データ分析におけるより良いコードの書き方 Made by いそひまかん 2024/08/08
2 Copyright 2023 @Isokan_DD 2 Copyright 2023 @Isokan_DD はじめに ⽬的
- より分かりやすく、理解しやすいコードを書く重要性と意識を芽⽣えさせる 対象者 - データサイエンスに興味ある初学者、学⽣ - 駆け出しのアナリスト、DS このLTで取り扱わないもの - パフォーマンス向上の観点からのコーディング 注意 現時点での考えのまとめであり、ベストプラクティスではありません。 より良い実践⽅法があれば、学ばさせていただきたいと思います。
3 Copyright 2023 @Isokan_DD 3 Copyright 2023 @Isokan_DD ⾃⼰紹介 •
VRCでは ‧DS集会運営主催 ‧たまにLT登壇します • 普段のお仕事 ‧データサイエンティスト/WEBエンジニア ‧通販/⾦融業界向けへのデータ解析 ‧機械学習系プロダクト開発 • 趣味 ‧ご飯巡り/飯テロ ‧ホラーワールド巡り おつきみ / Otsukimi ©HYPERSPACE ©GBXD
4 Copyright 2023 @Isokan_DD 4 Copyright 2023 @Isokan_DD こんな悩みを経験した事はありませんか?
- コードが汚くて、何をしたか分からない(理解に時間がかかる) - しばらくぶりにnotebookを実行したら動かない - 引継ぎで苦労
5 Copyright 2023 @Isokan_DD 5 Copyright 2023 @Isokan_DD 本当にあった大変だった話
- 半年毎に報告する定期の分析タスクで弊害が - 1回目は保守性よりも示唆だしやスピード優先で解析 - 分析コードもデータも整理されていなかった - 2回目の案件で3か月間の納期でコードや集計条件の解読に1か月もか けてしまった - 引継ぎするもドキュメントの整理で手間取る事に… - 1からやり直した方が早かったのでは?
6 Copyright 2023 @Isokan_DD 6 Copyright 2023 @Isokan_DD 背景 -
保守性を意識した分かりやすいコードを書く事は、以下の背景がある分析業 務において優先度を上げにくい - 再利用性より分析からのスピード優先 - データ探索や分析要件の再利用する機会がない - そんな時、ある記事を発見 - オブジェクト指向に学ぶデータサイエンスのコーディング術 出所:オブジェクト指向に学ぶデータサイエンスのコーディング術 (https://zenn.dev/zenkigen_tech/articles/f15988969d9c3f)
7 Copyright 2023 @Isokan_DD 7 Copyright 2023 @Isokan_DD 背景 -
分かりやすいコード書く方法として挙げられる「リーダブル・コード」 - 全てを取り入れることは難しいが、初心者でも取り入れやすいノウハウがある - 今回は個人的におすすめできるノウハウを紹介する 出所:amazonから(https://x.gd/34PHs)
8 Copyright 2023 @Isokan_DD 8 Copyright 2023 @Isokan_DD - コード実行時に影響を与えないが、入出力に期待される型を把握する目的で
有効 1.型を適用する
9 Copyright 2023 @Isokan_DD 9 Copyright 2023 @Isokan_DD どんなデータが入るか分からない分析 業務では、ソフトウェア開発と比べて型
の恩恵は限定的 1.型を適用する
10 Copyright 2023 @Isokan_DD 10 Copyright 2023 @Isokan_DD コメントを書くことは実現したい要件の整理につながる 実現したい分析内容を説明するように簡潔にコメントを書くことで、
- 分析要件の見落としが見つかる - 上手く書けない(説明できない)時は詳細が明確になっていない - 集計条件が雑 - 異常系の考慮漏れ 2. コメントを書く
11 Copyright 2023 @Isokan_DD 11 Copyright 2023 @Isokan_DD 書くべきでないコメント
- コードを読めばすぐわかる内容 - 代名詞が含まれている 書くべきコメント - コードの意図 - 全体像が分かるもの 2. コメントを書く
12 Copyright 2023 @Isokan_DD 12 Copyright 2023 @Isokan_DD - 単体テストを書く
- カバレッジ100%を目指すのではなく、 入力に対して100%動くか怪しい部分に導入す る - 慣れたらpytestなどのテストツールを導入する もあり - フォルダの構成を整理する その他
13 Copyright 2023 @Isokan_DD 13 Copyright 2023 @Isokan_DD 参考文献 -
Dustin Boswell, Trevor Foucher,リーダブルコード, オライリー・ジャ パン - オブジェクト指向に学ぶデータサイエンスのコーディング術 (https://zenn.dev/zenkigen_tech/articles/f15988969d9c3f) - 高橋威知郎, 白石卓也, 清水景絵, データサイエンティストの秘密ノー ト, SBクリエイティブ
Copyright 2023 @Isokan_DD ご清聴ありがとうございました