Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
pythonで気軽にパッケージを作るのは良いという話。
Search
Yamaguchi Takahiro
June 18, 2021
Technology
9.9k
14
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
pythonで気軽にパッケージを作るのは良いという話。
2021/06/18 分析コンペLT会#2 での発表資料です。
Yamaguchi Takahiro
June 18, 2021
More Decks by Yamaguchi Takahiro
See All by Yamaguchi Takahiro
関西Kaggler会_不確実性最適化ゲーム入門
nyk510
1
1.2k
コンペを気楽に開催しよーぜ!@関西Kaggler会
nyk510
0
1.5k
Django のセキュリティリリースを見る
nyk510
0
140
3分でMLアプリを作る 〜推論コードにちょっとのStreamlitを添えて〜
nyk510
1
1.2k
硬派で真面目なグラフを描く
nyk510
0
580
CORSをちゃんと理解する atmaバックエンド勉強会#4
nyk510
0
470
RestAPIのページネーション atma バックエンド勉強会 #3
nyk510
1
1.1k
AWS CPU Credit を完全に理解する
nyk510
0
530
atmaCup#8 Opening
nyk510
0
330
Other Decks in Technology
See All in Technology
USB PDを使ってスマホを労わりたい
raspython3
0
120
OR学会2026年秋期大会_機械学習と数理最適化の融合による、配合レシピ最適化システム開発事例
brainpadpr
0
120
並行性の問題を防げ!実践トランザクション入門
occhi
0
280
プロダクト価値を、 チームが使える判断軸に変える
vivion
0
140
購入ドメインでの課題と取り組み
ykagano
0
220
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
130
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.2k
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
790
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
320
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
6
4.3k
オブザーバビリティを高める AI エージェント体験を考える / Designing AI Agent Experiences That Enhance Observability
aoto
PRO
2
320
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
530
Utilizing Notion as your number one productivity tool
mfonobong
4
610
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
390
Ethics towards AI in product and experience design
skipperchong
2
420
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
570
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
310
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
320
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
470
The Pragmatic Product Professional
lauravandoore
37
7.5k
Ruling the World: When Life Gets Gamed
codingconduct
0
390
Transcript
pythonで気軽にパッケージを 作るのは良いという話。 2021/06/18 分析コンペLT会 nyk510
Hello! 山口貴大 twitter @nyker_goto atma(アートマ)株式会社 取締役 atmaCupというデータコンペを開催している会社です。 京都大学大学院 最適化数理卒 SGDが好き😆
Kaggle Master kaggle.com/nyk510 2
みなさんは、自分でパッケージを 作成したことがありますか? 3
意外と無い人が多い? 気がします。 4
話は変わりますが… 複数コンペをやると 「前と似たこと、やりたいな」 ってなりますよね 5
それ毎回コピペで済ませていませんか? 6
そして、 こういう経験はありませんか? 7
• 前のプロジェクトの似たような部分をコピペ したけど依存部分があって動かない • One-Dayコンペで前のコードをコピペしたら バグがでて動かず時間をロスした • コピペを編集をコピペして…使った結果 なにやってるかよくわからなくなった 8
つらいですね… 9
悲しい事件をへらすため 自分のパッケージを作りましょう! 10
パッケージがあると嬉しいこと • つよくてニューゲーム ◦ 最初からつよい武器がある ◦ 特にスタートダッシュが大事な某atmaCupなどで便利 • 引き継がれること前提の行動を取りやすい ◦
汎用的になりそうな部分を最初から切り分けて実装 → 可読性向上 ◦ ドキュメント記述など使いやすさを高めるモチベーションが湧きやすい • かっこいい ◦ pip install おシャイ (感じ方は個人差があります) 11
最小構成のパッケージは、意外と簡単 さっくり始めるパッケージ開発 • パッケージ用のリポジトリを作成 • setup.py を作成して各種のプロジェクト 情報を記入 ◦ setup.py
の構成の例 → • おわり! 12
最小構成のパッケージは、意外と簡単 setup.py さえあれば pip install できるしバージョン管理も出来る! • pip install git+<repo-url>@tag
◦ gitのtagでinstallするversionを指定できる ◦ tagがないときは最新version(master)でinstallされる 例: pip install git+https://github.com/nyk510/
[email protected]
これをスタートにして、気が向けばいろいろ追加すればいい • CI / テストなどなど • 長ったらしいのは面倒な人は pypi に登録することも出来ます。 13
最小限の構成を作ってみました https://github.com/nyk510/my-awesome-package に作りました。 14
分析用パッケージは、結構作っている人がいます • nyanpさん: nyaggle (Code for Kaggle and Offline Competitions)
◦ https://github.com/nyanp/nyaggle • u++さん: ayniy (Ayniy, All You Need is YAML) ◦ https://github.com/upura/ayniy • Ynakatsukaさん: kaggle_utils (My utility scripts for Kaggle Competitions) ◦ https://github.com/Ynakatsuka/kaggle_utils 僕も前の分析コンペLT会では自分の分析パッケージのお話をしました。 1
ふむふむ、 2
あれ、もうあるなら なぜいまさら自分でパッケージを作るの? 3
すごい人が作ってる奴があるし、 自分で作らなくても十分じゃない? 車輪の再発明っていうやつだ! 4
再発明をやってみてわかった、よいこと 1. 機械学習を抽象化して考えられる 2. 抽象化の失敗の体験をできる 3. 一般的な開発に必要なものの必要性がわかる 4. 機械学習以外でも使える 5
機械学習を抽象化して考える 私のコードは何をしているのか、を改めて考えられる • ただ個別の事案をコピーするだけではパッケージには成り得ない • 共通部分は何か・個別の事案への対応性・拡張性はあるか etc… 全部0から考える必要はないし、答えはない • 人のパッケージ構造を読んでいいところを考えるのもコードを理解する力がつく
• 自分なりの答えを出して実装することで思考・実装力がつく • atmaCupで僕が多用する BaseBlock とかもその一つ 6
抽象化を失敗する体験ができる 抽象化は、失敗する。 • 直したい処理を直せず結局パッケージの該当部分全部コピペして修正する 失敗は成功の母 • 失敗すること自体はそんなに悪いことでもない(と思う) • どの構造の仮定がまずかったのかを考えて手直しする →
論理構造を考える訓練になる • 人はどうやってるのか調べる → 人のコード・抽象化理解の訓練になる • 壊れてから初めてデザインパターン等の有り難みを知れる 7
一般的な開発周りの体験ができる / テスト 書き方がわからない? 最初から書けなくっても大丈夫! • 先人のリポジトリを参考にして、コピーしつつ。無理ないところから。 テストコードを書くようになると有り難みを感じられる • テストで確認されたコード群のみを持っていけるのはとても安心
• 分析当日にバグ見つけた!が減る 残念ながらテストを書いたって、バグはある • テストの何がまずかったか、振り返ることができる • 自分の思考の何がまずかったのか考えるきっかけになる https://github.com/nyk510/vivid/pull/47/files: numpy.inf が None 扱いにならないこと起因のバグ 8
一般的な開発周りの体験ができる / CI 人は怠惰 • テスト手動でするのだるい: master merge するときに自動でテストしたい •
pypi upload だるい: バージョンを作成したら自動的に pypi へ登録したい 自ずとCIが欲しくなる • CIツールの使い方を学習するきっかけになる • CIでのテストでバグが見つかるとえもいわれぬ快感がある(個人差があります) 書き方がわからない? 最初から書けなくっても大丈夫! • そもそも別になくても困りはしない(ちょっと面倒なだけ) • 必要だと思ったら先人のリポジトリを参考にして、無理ないところから。 9
機械学習以外でも使える 機械学習以外のプロジェクトでもパッケージをつかえると便利なことは多いです • web application の共通部分管理 ◦ 機械学習のツール ◦ Djangoでよく出てくる処理の管理
• CLI ツールの作成 ◦ guruguru cli • などなど 10
まとめ! パッケージ開発は、共通部分の管理以外にも、良いことがいっぱいあります。 さっくり始めるのは、意外と簡単です。 みなさん、気軽に自分のパッケージを作ってみるのは如何でしょうか。 11
さいごにおしらせ 12
直近atmaCupやります! 詳細決まり次第connpassで告知します ;) 13
EOC 14