Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開発でより良いコードを書くために
Search
gs
May 27, 2020
Programming
0
25
開発でより良いコードを書くために
pythonで開発する場合に、どのようにコードを書くべきかまとめました。
gs
May 27, 2020
Tweet
Share
More Decks by gs
See All by gs
bayesian_machine_learning 1
gggggssss
0
46
Other Decks in Programming
See All in Programming
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
370
Python札幌 LT資料
t3tra
6
1k
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
600
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
960
[AtCoder Conference 2025] LLMを使った業務AHCの上⼿な解き⽅
terryu16
5
710
チームをチームにするEM
hitode909
0
370
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
190
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
290
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
120
AI時代を生き抜く 新卒エンジニアの生きる道
coconala_engineer
1
420
生成AIを利用するだけでなく、投資できる組織へ
pospome
2
400
マスタデータ問題、マイクロサービスでどう解くか
kts
0
120
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
Navigating Team Friction
lara
191
16k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
30
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
New Earth Scene 8
popppiees
0
1.2k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
29
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
90
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
45
The Curse of the Amulet
leimatthew05
0
4.7k
The untapped power of vector embeddings
frankvandijk
1
1.5k
Transcript
開発でより良いコードを書くために
参考文献
変数名で中身がわかるようにする 例えばresultやgraphだけでは対象が何かわからないので、対象をつけるもしくは、 resultは使わない 例 result → detection_rate_result、total_detection_rate 例 graph →
loss_graph
導入 開発での良いコードとは ☓短いこと △最速で動くこと ◦他の人(1年後の自分含めて)が最短時間で理解できること
名前は短くしない 他の人が読んですぐに意味が理解できるように、一般的ではない、誤解を招く省略形は使わない bad examples ・gen→generate ・no → number ・epoch→ep good
examples ・directory→ dir ・maximize→max 例外・iterator→i (for i, name in enumerate(names))
関数名で処理内容がわかるようにする おすすめは def 動詞_名詞() 動詞は具体的にする 例 get_score()→calculate_score() 例 def loss_graph()
→ def draw_loass_graph()、def draw_save_loss_graph()
変数の型は書いておく intやstrと型の指定も重要だが、最低限 data frameなのか、listなのかは書いて置くとわかりやすい names_df names_list names_dic names_set names_array names
型チェックするmypy https://qiita.com/k-saka/items/8f05c89f675af219e081
単数と複数の区別を明確に イテレータでの単数と複数を明確にしておくとわかりやすい name_list = [“Mike”, “Taro”] for name in name_list:
name XXXX names_list = [“Mike”, “Taro”] for name in names_list: name XXXX
同じ変数に繰り返し違うものを代入しない 同じ変数に繰り返し違うものを代入すると中身が把握しづらくなる data = pd.read_csv(data.csv) data = f1(data) data=f2(data) total_price=f3(data)
return total_price data = pd.read_csv(data.csv) price = f1(data) price_including_tax = f2(price) total_price=f3(price_including_tax) return total_price
処理2 Detect 構造ごとにコードを分ける (class文で分けることをおすすめします) 前処理 処理1 グラフ作成 main main文 from
preprocess import Preprocess from detect import Detect from praph import Graph data = pd.read_csv(data.csv) for epoch in epochs: preprocess = Preprocess(data) detction = Detect(data) Preprocess Graph
処理2 Detect 構造ごとにコードを分ける 上位概念でまとめるとより良い 前処理 処理1 グラフ作成 main main文 from
object_detection import ObjectDtection data = pd.read_csv(data.csv) for epoch in epochs: obj = ObjectDtection(data) object_detection Preprocess Graph
フローは手書き画像のほうがわかりやすい アルゴリズムやコードの流れはコメントではなく、手書き画像が入れるのが Best ・手書きの画像をコードに入れられる VSCodeの拡張機能がある ・手書きできるデバイスが必要になる https://qiita.com/tkrkt/items/2fc9a9a59ce679aab728
PEP8に従っているかは拡張機能で確認 書いたコードがPEP8に従っているかはFlake8やBlackで自動検証すべき ・Flake8 Flake8はコードがこの規約通りに書けているか、シンタックスエラーがないかなどをチェックしてくれるツール ・Black Blackはpep8に関するエラーをチェックするだけでなく、自動で修正してくれる。さらに、改行の仕方やクォー テーションの使い方まで統一してくれる。 多人数開発でコードを合わせるのなら Blackがよい? https://www.macky-studio.com/entry/2019/07/04/152323
読みやすさも 考えないとね 人間だもの