SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
2016年9月21日
パッケージングを支える技術
PyCon JP 2016
Atsushi Odagiri
1 お前だれよ
• 小田切篤
• Beproud, Inc.
2 これまでのお話
• 2013 パッケージングの今と未来
• 2014 パッケージングの今
• 2015 Packaging最前線
3 アジェンダ
• パッケージングを支えるツール
• ソースパッケージ
• バイナリパッケージ
• パッケージングを支える技術に支えられてみ
よう
4 パッケージングを支える
ツール
• PyPA ってなに?
4.1 PyPA
• Python Packaging Authority
• パッケージングツールをメンテするグループ
• github.com/pypa
• bitbucket.org/pypa
4.2 PyPAの基本ツール
• setuptools
• virtualenv
• pip
• wheel
4.3 setuptools
• 配布物を作成する
• setup.pyで使われる
• easy_install使うのはもうやめましょう
• distributeも、いい加減忘れてください
• egg? あれは幻です
4.4 今日のsetuptools
• 27.2.0
• 去年(2016/9/6)18.3
4.5 virtualenv
• python環境を仮想化する
• プロジェクトごとに使うライブラリを隔離
• python3.3以降では同等の機能がpython本体か
ら提供されている(pyvenv)
4.6 pip
• インストーラ
• sdistとwheelを取り扱える
• requirements.txt でライブラリを構成管理する
4.7 wheel
• wheel形式パッケージを作成するツール
• setuptools に bdist_wheel サブコマンドを追
加する
4.8 ツールの導入方法
• python3.4以降ではpip,setuptoolsを導入する
ensurepipが入っているのでpythonインストー
ル後にpipを利用可能
• virtualenvは環境作成時にpip,setuptools,wheel
を導入する
• pyvenvはバージョンによって作成後のツール
導入が異なる
– 3.3 なし
– 3.4以降 ensurepipでpip,setuptoolsが導入さ
れる
• どの環境でもget-pip.py で
pip,setuptools,wheelを最新にできる
4.9 例えばubuntuのpyvenv
• 14.04 の python3.4 は ensurepipが消されてい
るため、–without-pipをつけないとエラーに
なる
• 16.04 の python3.5はensurepipが
pkg_resources-0.0.0という謎のパッケージメ
タデータを作成する
– そのままpip freezeしたrequirements.txtを
作ると他の環境でエラーになる
• 回避策は –without-pip で環境を作ってから
get-pip.py でツールを導入する
5 python標準の仕組み
• pypaツールはどのようにパッケージをインス
トールしてpythonインタプリタに認識させる
のか?
5.1 PYTHONPATHとsys.path
• 環境変数PYTHON_PATHで複数のディレク
トリを指定できる
• 指定した内容は ‘sys.path‘ に入る
• モジュールやパッケージを ‘import‘ するとき
は ‘sys.path‘ のディレクトリを探しに行く
• よくわからないところにインストールしても
sys.path に追加できればよい
5.2 site-packages/user-site-packages
• サードパーティ製ライブラリの標準インストー
ル先
• debianではさらに dist-packages という謎の
ディレクトリが存在する
• user-site-packages はユーザー権限でインス
トールできる
• user-site-packages にインストールするには
pipで ‘–user‘ オプションを使う
5.3 .pth
• site-packages などに配置されるファイル
• 中にファイルパスを羅列しておくと、インタプ
リタ起動時にすべて ‘sys.path‘ に追加される
• ‘./‘ 以外で始まる行があるとpythonコードとし
て実行されるという謎仕様
• easy_install が活用していた
5.4 distutils
• setup.py で使う setup 関数の大元
• setuptoolsはdistutilsの拡張
• 直接使うことはもうないはず
• 昔はこれで setup.py install などとしていた
6 バイナリディストリビュー
ション wheel
• wheelもう使ってるよね?
6.1 PEP 427 – The Wheel Binary
Package Format 1.0
• バイナリ形式の配布フォーマット
• 既に利用されている
• C拡張を含まない場合はpy2.py3で共通の配
布物
6.2 PEP 513 – A Platform Tag for
Portable Linux Built Distributions
• これまではLinux向けwheelはpypiにあげられ
なかった
• manylinux1
• linux向けのwheelを作るために決められた
6.3 Linux向けwheelパッケージのつら
いところ
• どのようなライブラリがあると想定してよ
いか?
• 依存するライブラリのABIが合わないなどのト
ラブル
• 依存ライブラリ同梱のためのハックがsetup.py
に散らばる
6.4 Python の ABI
• pymalloc
• ucs-4
• python3ではすべてucs-4ビルド
6.5 wheelの名前規約からわかること
• numpy-1.11.2rc1-
cp35-cp35m-manylinux1_x86_64.whl
– numpy という名前のパッケージ
– 1.11.2rc1 というバージョン
– CPython 3.5 のAPI
– CPython pymallocビルドのABI
– manylinux1_x86_64 プラットフォーム
6.6 manylinux1が想定するLinux環境
• Centos5.11相当
• x86とx86_64の両方
• その他前提としてよいライブラリ
6.7 manylinux1でインストールを期待
してよいライブラリ(1)
• libpanelw.so.5
• libncursesw.so.5
• libgcc_s.so.1
• libstdc++.so.6
• libm.so.6
• libdl.so.2
• librt.so.1
• libcrypt.so.1
• libc.so.6
• libnsl.so.1
6.8 manylinux1でインストールを期待
してよいライブラリ(2)
• libutil.so.1
• libpthread.so.0
• libX11.so.6
• libXext.so.6
• libXrender.so.1
• libICE.so.6
• libSM.so.6
• libGL.so.1
• libgobject-2.0.so.0
• libgthread-2.0.so.0
• libglib-2.0.so.0
6.9 auditwheel
• linux向けwheelをmanylinux1に変換する
ツール
• manylinux1を満たしているかチェック
• 依存ライブラリをwheelに同梱させる
• wheelファイル名のplatform tagをmanylinux1
に変更
6.10 dockerを利用してパッケージを作
成する
• docker イメージが用意されている
– quay.io/reposi-
tory/pypa/manylinux1_x86_64
• CIでこのイメージを利用してパッケージング
する
– werckerやgitlabでは直接dockerイメージを
利用できる
– travisなどでもCIのワークフロー中にdocker
イメージを利用できる
6.11 werckerでやってみよう
box:
id: quay.io/pypa/manylinux1_x86_64
registry: quay.io
build:
steps:
- script:
name: build
code: |
/opt/python/cp35-cp35m/bin/pytho
- script:
name: test
code: |
/opt/python/cp35-cp35m/bin/pytho
- script:
name: pack
code: |
/opt/python/cp35-cp35m/bin/pytho
- script:
name: audit
code: |
auditwheel repair dist/*.whl -w
7 ソースディストリビューショ
ン sdistとはなにか?
• setuptoolsとpipの実装でなんとなく決まって
いる
• ‘setup.py install‘ ができればsdist?
7.1 setuptoolsがなくてもwheelパッ
ケージは作成できる
• wheelツールはsetuptoolsと独立して作られて
いる
• distlibにもwheelを作成する処理が実装されて
いる
7.2 sdistを考え直す意味
• setuptools依存からの脱却
• 明確なインストールフロー
7.3 現状のインストール手順
• pipがsdistをダウンロードする
• pipがsdistを展開する
• pipがsetup.py bdist_wheelを実行する
• できあがったwheelパッケージをpipがインス
トールする
• setup.py install は関係なかった
7.4 PEP 518 – Specifying Minimum
Build System Requirements for
Python Projects
• パッケージング方法やそれに必要なツールを支
持する
• pypi上でwheel作成する目的?
• パッケージングに必要なツールを記述
• pyproject.toml
• TOMLフォーマット
7.5 pyproject.toml
[build-system]
requires = ["setuptools", "wheel"]
7.6 PEP 516 – Build system abstraction
for pip/conda etc
• ビルドツールの指定や依存性を記述する
• 指定のツールでどのようにビルドするのかも
指定
• pypi.jsonというファイルで話が進んでいるっ
ぽい
• でも多分pyproject.tomの tool セクションが同
じものを指しているはず
8 プログラミングPythonパッ
ケージ
• setuptoolsに依存せずにパッケージングしてみ
よう
8.1 distlibでできること
• wheelパッケージ作成
• wheelパッケージインストール
• メタデータ作成
• パッケージリポジトリからのダウンロード
• インストール済パッケージのリストアップ
8.2 bib - reversed pip
• distlibと標準ライブラリのみで実行するパッ
ケージングツール
• 本日作成しました
8.3 distlibを使う準備
>>> import sys
>>> import os
>>> sys.path.append(
... os.path.join(
... os.getcwd(),
... ’distlib-0.2.3-py3-none-any.wh
>>> import distlib
>>> distlib
9 プロジェクトの作成
• bib.init_project
9.1 パッケージメタデータ
• dist-info ディレクトリ
• pydist.json/package.json
10 パッケージの作成
10.1 wheelパッケージを作成する
• 作業ディレクトリを作成
• パッケージ名.dist-info ディレクトリを作成
• dist-info ディレクトリ以下に pydist.json をコ
ピー
• インストール対象を作業ディレクトリにコピー
• distlib.wheelでWheelを作成する
11 パッケージの配布
• 作成したパッケージを公開してインストール可
能にする
• simple package repository形式のサイトで公開
する
• ダウンロードしてインストールする
11.1 PEP 503 – Simple Repository API
• pypiもこの形式
• 登録やアップロード方法は決められてない
• ‘httplib.server‘ などでも実現可能
11.2 wheelファイルをsimple package
repository形式に配置する
• distlib.wheelでメタデータを取得
• パッケージ名でディレクトリを作成
• wheelファイルをコピー
• そのディレクトリを対象に ‘httplib.server‘ を
立ち上げる
12 インストール
• パッケージをリポジトリからダウンロード
• パッケージのメタデータを読み取る
• Wheelで読み取って、対象ディレクトリにイン
ストール
12.1 パッケージをリポジトリからダウ
ンロードする
• distlib.locators
• SimpleScrapingLocator
• result.download_urls でURLを取得
• 一時ディレクトリに保存
12.2 wheelパッケージをインストール
する
• distlib.scripts ScriptMakerを作成
• distlib.wheelの install メソッドでインストール
12.3 インストール一覧
• PEP 376 – Database of Installed Python
Distributions
• パッケージによってインストールされたファイ
ルの情報
• どのモジュールがどのパッケージでインストー
ルされたか
• インストール時のファイルのハッシュ
• distlib.database
13 まとめ
• setuptoolsやpipがなくてもパッケージングは
できる
• いろんなツールがエコシステムに参加できるよ
うにsdistの定義が検討されている
• wheelはがんがん使いましょう

Weitere ähnliche Inhalte

Was ist angesagt?

Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
 

Was ist angesagt? (20)

macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414ネットワークOS野郎 ~ インフラ野郎Night 20160414
ネットワークOS野郎 ~ インフラ野郎Night 20160414
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化
 
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
NTTデータ流Infrastructure as Code~ 大規模プロジェクトを通して考え抜いた基盤自動化の新たな姿~(NTTデータ テクノロジーカンフ...
 
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話すWebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
 
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdevApache OpenWhiskで実現するプライベートFaaS環境 #tjdev
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 

Andere mochten auch

パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
Atsushi Odagiri
 
Sqlalchemy sqlの錬金術
Sqlalchemy  sqlの錬金術Sqlalchemy  sqlの錬金術
Sqlalchemy sqlの錬金術
Atsushi Odagiri
 

Andere mochten auch (20)

パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
Python3 移行への軌跡
Python3 移行への軌跡Python3 移行への軌跡
Python3 移行への軌跡
 
データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016
 
CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)CTF超入門 (for 第12回セキュリティさくら)
CTF超入門 (for 第12回セキュリティさくら)
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料
 
Sqlalchemy sqlの錬金術
Sqlalchemy  sqlの錬金術Sqlalchemy  sqlの錬金術
Sqlalchemy sqlの錬金術
 
セールスエンジニアとして今後身につけていきたい技術
セールスエンジニアとして今後身につけていきたい技術セールスエンジニアとして今後身につけていきたい技術
セールスエンジニアとして今後身につけていきたい技術
 
Import community pycon jp
Import community pycon jpImport community pycon jp
Import community pycon jp
 
自分のチームをどう作る?
自分のチームをどう作る?自分のチームをどう作る?
自分のチームをどう作る?
 
Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016Python入門 コードリーディング - PyConJP2016
Python入門 コードリーディング - PyConJP2016
 
PyCon JP 2016 Talk#024 ja
 PyCon JP 2016 Talk#024 ja PyCon JP 2016 Talk#024 ja
PyCon JP 2016 Talk#024 ja
 
ビックデータとPythonではじめる野球の統計分析 #pyconjp
ビックデータとPythonではじめる野球の統計分析 #pyconjpビックデータとPythonではじめる野球の統計分析 #pyconjp
ビックデータとPythonではじめる野球の統計分析 #pyconjp
 
あなたのScalaを爆速にする7つの方法
あなたのScalaを爆速にする7つの方法あなたのScalaを爆速にする7つの方法
あなたのScalaを爆速にする7つの方法
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)
 
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
 
Pythonではじめるロケーションデータ解析
Pythonではじめるロケーションデータ解析Pythonではじめるロケーションデータ解析
Pythonではじめるロケーションデータ解析
 
はてなブックマーク in Scala
はてなブックマーク in Scalaはてなブックマーク in Scala
はてなブックマーク in Scala
 
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
 
Kubernetesを触ってみた
Kubernetesを触ってみたKubernetesを触ってみた
Kubernetesを触ってみた
 

Ähnlich wie パッケージングを支える技術 pyconjp2016

Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
 
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
Shogo Kawahara
 
Code4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェストCode4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェスト
Masao Takaku
 

Ähnlich wie パッケージングを支える技術 pyconjp2016 (20)

Products.PloneOrg
Products.PloneOrgProducts.PloneOrg
Products.PloneOrg
 
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4dodaiのProvisioning周辺探訪 - dodai勉強会 #4
dodaiのProvisioning周辺探訪 - dodai勉強会 #4
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
 
go-apt-cacher/mirror
go-apt-cacher/mirrorgo-apt-cacher/mirror
go-apt-cacher/mirror
 
210728 mpy
210728 mpy210728 mpy
210728 mpy
 
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
 
今さら聞けない人のためのGit超入門 OSC2018名古屋版
今さら聞けない人のためのGit超入門 OSC2018名古屋版今さら聞けない人のためのGit超入門 OSC2018名古屋版
今さら聞けない人のためのGit超入門 OSC2018名古屋版
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
Firefoxの開発ツール
Firefoxの開発ツールFirefoxの開発ツール
Firefoxの開発ツール
 
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
ひしめき合うOpen PaaSを徹底解剖! PaaSの今と未来
 
200527 ur
200527 ur200527 ur
200527 ur
 
Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座Cloud Foundryで学ぶ、PaaSのしくみ講座
Cloud Foundryで学ぶ、PaaSのしくみ講座
 
2分でパッケージを作ってインストールする
2分でパッケージを作ってインストールする2分でパッケージを作ってインストールする
2分でパッケージを作ってインストールする
 
Apache sparkでつぶやきビッグデータ クローンをつくってみた
Apache sparkでつぶやきビッグデータ クローンをつくってみたApache sparkでつぶやきビッグデータ クローンをつくってみた
Apache sparkでつぶやきビッグデータ クローンをつくってみた
 
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
 
Osoljp201210 oi swift
Osoljp201210 oi swiftOsoljp201210 oi swift
Osoljp201210 oi swift
 
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
 
Code4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェストCode4Lib 2010報告会・発表ダイジェスト
Code4Lib 2010報告会・発表ダイジェスト
 
Zabbixで楽して監視を開始 @OSC 2019 Tokyo/Spring
Zabbixで楽して監視を開始 @OSC 2019 Tokyo/SpringZabbixで楽して監視を開始 @OSC 2019 Tokyo/Spring
Zabbixで楽して監視を開始 @OSC 2019 Tokyo/Spring
 

Mehr von Atsushi Odagiri

パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri
 
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europythonPyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
Atsushi Odagiri
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid unique
Atsushi Odagiri
 
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
Atsushi Odagiri
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
Atsushi Odagiri
 
フレームワークなしでWSGIプログラミング
フレームワークなしでWSGIプログラミングフレームワークなしでWSGIプログラミング
フレームワークなしでWSGIプログラミング
Atsushi Odagiri
 

Mehr von Atsushi Odagiri (20)

async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
 
pyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptoolspyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptools
 
Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定
 
Pythonとパッケージングと私
Pythonとパッケージングと私Pythonとパッケージングと私
Pythonとパッケージングと私
 
Clack meetup #1 lt
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 lt
 
Pyramid入門
Pyramid入門Pyramid入門
Pyramid入門
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
Bplt11 form alchemy
Bplt11 form alchemyBplt11 form alchemy
Bplt11 form alchemy
 
Python3でwebアプリ
Python3でwebアプリPython3でwebアプリ
Python3でwebアプリ
 
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europythonPyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid unique
 
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
 
World plonedaylt
World plonedayltWorld plonedaylt
World plonedaylt
 
Setup.pysetup.cfg
Setup.pysetup.cfgSetup.pysetup.cfg
Setup.pysetup.cfg
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
 
Form libraries
Form librariesForm libraries
Form libraries
 
フレームワークなしでWSGIプログラミング
フレームワークなしでWSGIプログラミングフレームワークなしでWSGIプログラミング
フレームワークなしでWSGIプログラミング
 
Form libraries
Form librariesForm libraries
Form libraries
 
Aodag scaffold
Aodag scaffoldAodag scaffold
Aodag scaffold
 

パッケージングを支える技術 pyconjp2016