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
Python開発に役立つツールの紹介 - NIFTY Tech Talk #11
Search
ニフティ株式会社
PRO
May 30, 2023
Video
Resources
Programming
0
670
Python開発に役立つツールの紹介 - NIFTY Tech Talk #11
ニフティ株式会社
PRO
May 30, 2023
Tweet
Share
Video
Resources
新人エンジニアに贈る最強の開発環境 - NIFTY Tech Talk #11
https://nifty.connpass.com/event/284175/
More Decks by ニフティ株式会社
See All by ニフティ株式会社
GitHubで育つ コラボレーション文化 : ニフティでのインナーソース挑戦事例 - 2024-12-16 GitHub Universe 2024 Recap in ZOZO
niftycorp
PRO
0
120
Grow on GitHub Collaboration Culture: Case Study of InnerSource Challenge - GitHub Universe 2024 Recap in ZOZO
niftycorp
PRO
0
20
これが俺の”自分戦略” プロセスを楽しんでいこう! - Developers CAREER Boost 2024
niftycorp
PRO
0
200
継続的な改善のためのmodulesの適切な分割単位 - NIFTY Tech Talk #23
niftycorp
PRO
0
110
Re:ゼロから始めるTerraform生活 ~IaC入門編~ - NIFTY Tech Talk #23
niftycorp
PRO
0
110
Terraformにベストプラクティスを取り入れた - NIFTY Tech Talk #23
niftycorp
PRO
0
130
AWS AppSyncを用いた GraphQL APIの開発について - NIFTY Tech Talk #22
niftycorp
PRO
0
140
「天気予報があなたに届けられるまで」 - NIFTY Tech Talk #22
niftycorp
PRO
0
170
@nifty天気予報:フルリニューアルの挑戦 - NIFTY Tech Talk #22
niftycorp
PRO
0
150
Other Decks in Programming
See All in Programming
なまけものオバケたち -PHP 8.4 に入った新機能の紹介-
tanakahisateru
1
130
103 Early Hints
sugi_0000
1
260
Kaigi on Railsに初参加したら、その日にLT登壇が決定した件について
tama50505
0
110
情報漏洩させないための設計
kubotak
4
860
KMP와 kotlinx.rpc로 서버와 클라이언트 동기화
kwakeuijin
0
190
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
830
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
990
Fibonacci Function Gallery - Part 1
philipschwarz
PRO
0
230
テストコード文化を0から作り、変化し続けた組織
kazatohiei
2
1.5k
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
1
270
ChatGPT とつくる PHP で OS 実装
memory1994
PRO
2
130
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
222
9k
4 Signs Your Business is Dying
shpigford
182
21k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Thoughts on Productivity
jonyablonski
68
4.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
32
2.7k
Optimising Largest Contentful Paint
csswizardry
33
3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Building Adaptive Systems
keathley
38
2.3k
Practical Orchestrator
shlominoach
186
10k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Transcript
Copyright © NIFTY Corporation All Rights Reserved. Python開発に役⽴つツールの紹介 ⼩倉聡司 NIFTY
Tech Talk #11 「新⼈エンジニアに贈る最強の開発環境」 2023/05/30
Copyright © NIFTY Corporation All Rights Reserved. ⾃⼰紹介 ⼩倉 聡司(おぐら
さとし) ニフティ株式会社 基幹システムグループ 課⾦システムチーム 新卒⼊社3年⽬ 担当業務 書⾯発送システム、課⾦請求系システム等の開発・運⽤
Copyright © NIFTY Corporation All Rights Reserved. 話すこと ❏ 効率性や品質向上に繋がる便利な以下のツールについて紹介します
❏ Poetry パッケージ管理ツール ❏ Ruff Linter ❏ Black Formatter ❏ Mypy 静的型チェッカー ❏ Pytest 単体テストツール
Copyright © NIFTY Corporation All Rights Reserved. Poetry Pythonパッケージ管理ツールの⼀種 依存関係の管理、パッケージングを効率化するツール
❏ 特徴 ❏ 依存関係の管理 ❏ プロジェクトの仮想環境 ❏ パッケージング
Copyright © NIFTY Corporation All Rights Reserved. Poetry ❏ メリット
❏ 依存関係の管理を簡素化してくれる ❏ バージョンの衝突や互換性を回避 プロジェクト内のライブラリの⼀貫性を保つのに役⽴つ
Copyright © NIFTY Corporation All Rights Reserved. Poetry Poetryインストール curl
-sSL https://install.python-poetry.org | python3 - # 新規プロジェクトの場合 poetry new <project_name> # 既存プロジェクトの場合 poetry init プロジェクトのセットアップ
Copyright © NIFTY Corporation All Rights Reserved. Poetry [tool.poetry] name
= "techtalk" version = "0.1.0" description = "" authors = ["ogura <メールアドレス>"] readme = "README.md" [tool.poetry.dependencies] python = "^3.11" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" pyproject.toml
Copyright © NIFTY Corporation All Rights Reserved. Poetry # 本番環境で必須のパッケージ
poetry add pydantic # 開発環境でのみ必要なパッケージ poetry add mypy ruff black pytest --dev パッケージの追加 [tool.poetry.dependencies] python = "^3.11" pydantic = "^1.10.8" [tool.poetry.group.dev.dependencies] pytest = "^7.3.1" mypy = "^1.3.0" ruff = "^0.0.269" black = "^23.3.0"
Copyright © NIFTY Corporation All Rights Reserved. パッケージのインストール Poetry 仮想環境外からの操作
poetry run <command> poetry install 仮想環境に⼊る poetry shell
Copyright © NIFTY Corporation All Rights Reserved. Rustで記述されたPython⽤Linter ❏ Linterとは︖
❏ Linterは特定のコード規約に従っていないコードがないかを静的解 析によりチェックするツール ❏ 特徴 ❏ 静的コード解析 ❏ さまざまなlintルールの選択 ❏ ⾃動修正 Ruff
Copyright © NIFTY Corporation All Rights Reserved. Ruff ❏ メリット
❏ エラーの早期発⾒ ❏ コードの可読性向上 ❏ チームでのコーディングルールの共通化 プロジェクトの品質とメンテナンスの容易化に役⽴つ
Copyright © NIFTY Corporation All Rights Reserved. Ruff Lintルール選択 ruff
. --select E --select W ruff . --ignore E501 ruff . --select E --select W --ignore E501 --fix 適応しないルール ⾃動修正 チェックのみ(修正はしない) ruff check .
Copyright © NIFTY Corporation All Rights Reserved. BlackはPEP8に準拠したPython⽤Formatter ❏ Formatterとは︖
❏ コードのスタイルを静的解析を⾏いチェックするツール ❏ 特徴 ❏ ⾃動フォーマット ❏ フォーマットの⼀貫性 Black
Copyright © NIFTY Corporation All Rights Reserved. ❏ メリット ❏
コードのフォーマットを⾃動化してくれる ❏ チーム全体でコードのスタイルを統⼀してくれる Black 開発効率向上、品質と保守性の向上に役⽴つ
Copyright © NIFTY Corporation All Rights Reserved. Black 1⾏における最⼤⽂字数の指定 チェックのみ(フォーマットはされません)
フォーマットの差分を確認 black --line-length 120 . black --check . black --check --diff .
Copyright © NIFTY Corporation All Rights Reserved. MypyはPythonの静的型チェックを実⾏するツール ❏ 静的型チェック
❏ Pythonの型ヒントを活⽤し、コードの型エラーを検出 ❏ メリット ❏ エラーや意図しない動作を事前に防ぐことが可能 ❏ 信頼性の⾼いコードを実装し、効率的なデバッグ、保守が可能 Mypy 品質向上とバグの早期発⾒に役⽴つ
Copyright © NIFTY Corporation All Rights Reserved. Mypy 型チェック 厳格に型チェックをする場合
mypy . mypy --strict .
Copyright © NIFTY Corporation All Rights Reserved. Pythonで書かれたテストを実⾏するツール Pytest ❏
特徴 ❏ シンプルな構⽂ ❏ 豊富なアサーション ❏ テストランナー機能と柔軟性 ❏ テストカバレッジのサポート
Copyright © NIFTY Corporation All Rights Reserved. Pytest ❏ メリット
❏ シンプルな構⽂と豊富な機能を持つ ❏ さまざまなテストパターンに活⽤できる 品質を確保するのに役に⽴つ
Copyright © NIFTY Corporation All Rights Reserved. Pytest テストの実⾏ pytest
カバレッジの計測 # install pip install pytest-cov # カバレッジの計測 pytest –cov=<対象のディレクトリorファイル>
Copyright © NIFTY Corporation All Rights Reserved. ツールの設定値をpyproject.tomlにまとめる [tool.ruff] select
= [ # pyflakes "F", # pycodestyle errors, warnings "E", "W", # isort "I", # flake8-2020 "YTT", # flake8-bugbear "B", ] target-version = "py311" line-length = 120 [tool.mypy] warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true strict = true [tool.black] line-length = 120 target-version = ["py311"] [tool.pytest.ini_options] testpaths = [ "tests", ] 今まで紹介したツールはpyproject.tomlに⼀元管理できる
Copyright © NIFTY Corporation All Rights Reserved. まとめ ❏ 紹介したツールを活⽤することでコードの品質向上やバグの早期発⾒
に役⽴ちます。 ❏ チームに導⼊することで開発における品質と⽣産性を向上させ効率的 な開発プロセスを実現しましょう。 *Docker環境で今回紹介したツールを活⽤する⽅法は以下のページに記述 https://engineering.nifty.co.jp/blog/16673
Copyright © NIFTY Corporation All Rights Reserved.