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
コードをBlackにしよう
Search
Yuki Okuda
July 14, 2019
Programming
1
2.4k
コードをBlackにしよう
PythonのコードフォーマッターのBlackはいいぞというLTです。
Yuki Okuda
July 14, 2019
Tweet
Share
More Decks by Yuki Okuda
See All by Yuki Okuda
競技プログラミング入門
ikura1
1
280
Other Decks in Programming
See All in Programming
ファインディ株式会社におけるMCP活用とサービス開発
starfish719
0
1.9k
Updates on MLS on Ruby (and maybe more)
sylph01
1
180
もうちょっといいRubyプロファイラを作りたい (2025)
osyoyu
1
450
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
130
プロパティベーステストによるUIテスト: LLMによるプロパティ定義生成でエッジケースを捉える
tetta_pdnt
0
3.3k
速いWebフレームワークを作る
yusukebe
5
1.7k
詳解!defer panic recover のしくみ / Understanding defer, panic, and recover
convto
0
250
概念モデル→論理モデルで気をつけていること
sunnyone
3
290
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
4
2.9k
AIでLINEスタンプを作ってみた
eycjur
1
230
JSONataを使ってみよう Step Functionsが楽しくなる実践テクニック #devio2025
dafujii
1
600
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
120
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
What's in a price? How to price your products and services
michaelherold
246
12k
For a Future-Friendly Web
brad_frost
180
9.9k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Large-scale JavaScript Application Architecture
addyosmani
513
110k
Writing Fast Ruby
sferik
628
62k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
920
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
Transcript
コードをBlackにしよう
自己紹介 • Twitter / GitHub ◦ ikura1 • 仕事 ◦
スポーツデータを用いた統計や機械学習 • 最近やってること ◦ Djangoと戯れてる
好きなスタイル教えてください
どのスタイルが好きですか? def replace( text, old, new ): ... txt =
'Hello, World' replace(txt, 'World', 'Osaka') def replace( text, old, new ): ... txt = "Hello, World" replace( txt, "World", "Osaka" ) def replace(text, old, new): ... txt = "Hello, World" replace(txt, "World", "Osaka") A B C
人によって好きなコードは違う
Pythonを使っていても PEP8に守っていても 違いは出る
人のコードを読む機会はよくある • ブログ • 仕事 ◦ チーム ◦ 前任者 •
OSS • 1ヶ月前の自分のコード
読みにくいコードもある
わたしの場合は前任者のコード • 仕事としては機能追加 • 来たコードは ◦ スタイルが意識されていないコード ◦ 可読性がなくて読むのに時間がかかる ◦
人力で直すのはつらいコード量
フォーマッターは使った • 指定されたフォーマットに直してくれるだけの機能 • 人が処理できない行数を簡単にフォーマットできる • コーディング時にスタイルを気にする必要がなくなる • レビュー時にスタイルを指摘することがなくなります
考えることが減らせる! 必要な所に集中できる!
フォーマッターはいいぞ!
有名なフォーマッター • autopep8 • YAPF • Black
Blackはいいぞ • 名前がかっこいい • 設定をすることができない
Blackは設定することができない • それが魅力でそれが全て ◦ 使っているコードならスタイル気にせず読める ◦ 細かい調整をする必要がない ◦ チームでスタイルの議論をする必要がなくなる ◦
個人の好みでスタイルが変化することがなくなる
Pythonを使っていても PEP8に従っていても 違いは出る
Blackを使えば違いは出ない
Blackが使われているプロダクト • pytest • SQLAlchemy • Pyramid • Sanic •
Tornado • Poetry • Pipenv
Blackが使われているプロダクト • pytest • SQLAlchemy • Pyramid • Sanic •
Tornado • Poetry • Pipenv
DjangoもBlackが提案され承認されている • 既存・新規の障壁を取り除ける • スタイルを気にする必要がない • 設定を調整する必要がない • ハードルが一つ少なくなる •
ベータなので安定したら実行する
Blackの使い方 $ pip install black $ black hoge.py reformatted hoge.py
All done! ✨ ✨ 1 file reformatted.
コードをBlackにしませんか?