SlideShare a Scribd company logo
今年使って良かったPythonモ 
ジュール・パッケージ・ツール 
pip-tools percol alfred-workflow 
defaultdict 
2014/12/06 Shizuokapy#4 
14年12月6日土曜日
自己紹介 
@aoshiman 
静岡市で社内SEやってます 
Pythonは趣味です(2008年位から) 
Flask製のブログやってます 
http://blog.aoshiman.org 
今年後厄でした 
14年12月6日土曜日
今年はプライベートで殆どPythonを弄るこ 
とが出来ませんでした。 
それでも少しずつ面白そうなことを見つけて 
遊んでいました。 
今日は今年使ってみて良かった、面白かった 
Pythonモジュール、パッケージ、ツールを 
紹介します。 
使ったことある、あるいは使っているものが 
ある方もいると思いますが生暖かい目で見守 
って下さい。 
14年12月6日土曜日
pip-tools 
https://github.com/nvie/pip-tools 
pipとは Pythonのパッケージ管理ツール(3.4 
2.7.9 よりPython本体に同梱) 
pip-toolsとは pipの補佐的な機能を提供するツー 
ル 
補佐的とは 
パッケージのアップデート支援(pip-review) 
パッケージリストの作成(pip-dump) 
インストール pip install pip-tools(システムの 
Python、virtual env どちらでも可) 
14年12月6日土曜日
pip-review 
自身の環境下にあるパッケージのバージョンとPyPIにある 
パッケージのバージョンを比較する 
pip-review --auto(-a) でオートマチックに最新版 
にアップグレード 
pip-review --interactive(-i) でパッケージ毎個別に 
アップグレード出来る 
14年12月6日土曜日
pip-dump 
自身の環境下にあるパッケージのリストをテキストファイ 
ル(*requirements.txt)に出力する 
そのファイルを元に他環境下で同じパッケージ郡を用意す 
ることが簡単に出来る 
$ pip install -r requiremrnts.txt 
14年12月6日土曜日
pip-dump 
基本的な使い方 
$ pip install pip-tools 
$ pip-dump 
$ cat requirements.txt 
Flask==0.10.1 
gnureadline==6.3.3 
ipython==2.3.1 
itsdangerous==0.24 
Jinja2==2.7.3 
MarkupSafe==0.23 
pip-tools==0.3.5 
Werkzeug==0.9.6 
ダンプしたテキストより一括インストール 
$ pip install -r requirements.txt 
14年12月6日土曜日
直接必要なパッケージとそうでないものと分けたい 
$ touch dev-requirements.txt 
$ cat dev-requirements.txt 
ipython 
qnureadline 
$ touch requirements.txt ※空ファイル 
$ pip-dump 
$ cat requirements.txt 
Flask==0.10.1 
itsdangerous==0.24 
Jinja2==2.7.3 
MarkupSafe==0.23 
Werkzeug==0.9.6 
$ cat dev-requirements.txt 
gnureadline==6.3.3 
ipython==2.3.1 
14年12月6日土曜日
Percol 
https://github.com/mooz/percol 
percol is an interactive grep tool in 
your terminal 
Emacsのanything.elみたいなもの(よく知ら 
ない) 
開発者は日本人(moozさん) 
Python2.7.xで動く(Python3はブランチ) 
似たようなツールにpeco(golang)など 
14年12月6日土曜日
Percolの導入と使い方 
基本的な使い方 
$ sudo pip install percol 
$ ls | percol 
zshのコマンド履歴検索に使う 
よく行くディレクトリを絞り込んで移動 
gitのブランチを絞り込んでcheckout 
14年12月6日土曜日
alfred-workflow 
https://github.com/deanishe/alfred-workflow 
demo 
14年12月6日土曜日
alfredとは 
Mac用 ランチャーアプリ 
似たようなアプリにQuicksilverがある 
Powerpackという有料オプションを買うと 
様々な機能がアンロックされる 
例:iTunesコントロール、クリップボード履 
歴操作、1Password連携 
ユーザーが作成したworkflowを使うことが 
出来る(今回紹介する箇所) 
14年12月6日土曜日
workflowとは 
alfredをプラットフォームにして 入力->処 
理->出力 というGUIアプリを作成出来る(超 
概略)workflowはキーワードで呼び出し 
使用言語はShellscript Perl PHP Ruby 
Python等 
Packal(workflowのリポジトリ)に397 
ものworkflowがある(2014.11.30現 
在) 
私のおすすめ(デモ) 
14年12月6日土曜日
alfred-wokflow 
https://github.com/deanishe/alfred-workflow 
Pythonで書かれたalfred workflow作成 
用ヘルパーライブラリ 
アウトプット周り(XML出力や通知)凄く楽 
Python3はサポート外(OSXのPythonバ 
ージョンに合わせていると考えられる) 
ドキュメント(特にチュートリアル)が超絶 
親切(作者はたぶん凄くいい人) 
https://alfredworkflow.readthedocs.org/en/latest/ 
14年12月6日土曜日
気になった機能 Self-Updating 
Github Releases との連携 
tagを付けたリポジトリにリリースノート 
を記載出来たり添付ファイルをアップロー 
ド出来る 
versionをtagとし、ローカルにある 
workflowフォルダ内のversionと比較 
し、ローカルのversionが古ければ添付さ 
れたworkflowをダウンロードする 
https://github.com/deanishe/alfred-workflow/ 
blob/master/workflow/update.py 
14年12月6日土曜日
defaultdict 
例えば ‘mississippi’ という単語に使われている 文字の 
出現回数をカウントして辞書にしたい 
Python 3.4.2 (default, Oct 8 2014, 19:29:32) 
Type "copyright", "credits" or "license" for more information. 
IPython 2.3.1 -- An enhanced Interactive Python. 
? -> Introduction and overview of IPython's features. 
%quickref -> Quick reference. 
help -> Python's own help system. 
object? -> Details about 'object', use 'object??' for extra details. 
In [1]: s = 'mississippi' 
In [2]: d = dict() 
In [3]: for c in s: 
...: d[c] += 1 
...: 
14年12月6日土曜日
Pythonの組み込みの辞書機能では、存在しないキーにア 
クセスしようとすると Keyerror が発生する 
In [3]: for c in s: 
...: d[c] += 1 
...: 
--------------------------------------------------------------------------- 
KeyError Traceback (most recent call last) 
<ipython-input-3-239838da436f> in <module>() 
1 for c in s: 
----> 2 d[c] += 1 
3 
KeyError: 'm' 
ダイレクトに d[‘m’] を求めてエラーになるのと同じ 
In [4]: d['m'] 
--------------------------------------------------------------------------- 
KeyError Traceback (most recent call last) 
<ipython-input-4-267d51a5bba9> in <module>() 
----> 1 d['m'] 
KeyError: 'm' 
14年12月6日土曜日
なので 前もってキーの存在を調べたりする 
In [7]: s = 'mississippi' 
In [8]: d = dict() 
In [9]: for c in s: 
...: if c in d: 
...: d[c] += 1 
...: else: 
...: d[c] = 1 
...: 
In [10]: d 
Out[10]: {'p': 2, 'i': 4, 's': 4, 'm': 1} 
※他にもやり方はあります 
(d.get(c, 0) or setdefault(c, 0)) 
14年12月6日土曜日
defaultdict を使う 
In [11]: from collections import defaultdict 
In [12]: d = defaultdict(int) 
それぞれのキーが最初に出現したとき、マッピングが存在 
しない。defaultdictは第一引数に指定したfactory関 
数を使ってデフォルト値を作成する。 
この場合はintを使っているので、mississippiの各々の 
文字が最初に出現したときに 0 を生成する。 
In [13]: for c in s: 
....: d[c] += 1 
....: 
In [15]: dict(d) 
Out[15]: {'p': 2, 'i': 4, 's': 4, 'm': 1} 
14年12月6日土曜日
但し、単純に数え上げるならば、 
Counterのほうが... 
In [18]: from collections import Counter 
In [19]: c = Counter('mississippi') 
In [20]: dict(c) 
Out[20]: {'p': 2, 'i': 4, 's': 4, 'm': 1} 
14年12月6日土曜日
defaultdictでtree(木構造)を作る 
https://gist.github.com/hrldcpr/2012250 
In [32]: def tree(): 
return(defaultdict(tree)) 
In [33]: d = tree() 
In [34]: d['japan']['shizuoka-ken']['shizuoka-shi']['aoi-ku'] = 'hoge' 
In [35]: d['japan']['shizuoka-ken']['shizuoka-shi']['suruga-ku'] = 'fuga' 
In [36]: d['japan']['shizuoka-ken']['shizuoka-shi']['suruga-ku'] = 'foo' 
In [37]: d['japan']['shizuoka-ken']['fuzi-shi'] = 'fooo' 
In [38]: d['japan']['shizuoka-ken']['mishima-shi'] = 'bar' 
In [39]: pprint(d) 
{'japan': {'shizuoka-ken': {'fuzi-shi': 'fooo', 
'mishima-shi': 'bar', 
'shizuoka-shi': {'aoi-ku': 'hoge', 
'suruga-ku': 'foo'}}}} 
14年12月6日土曜日
defaultdictでtreeを作る② 
Adaway広告除去リストdomain一覧 
(31856件)でドメインツリー作成 
コード https://gist.github.com/aoshiman/a3ddec9e5c829bab22c3 
結果 https://gist.github.com/aoshiman/c8513d191c7fca666b44 
元ネタ http://sonickun.hatenablog.com/entry/2014/07/12/231443 
14年12月6日土曜日
(本発表とあまり関係ない) 
まとめ 
Web アプリケーションフレームワークやコ 
マンドラインツール、研究目的等、Python 
の守備範囲は広い 
サーバサイドで言えばPaaSがコンテナサポ 
ートし始めているので(たぶん)どこでも 
Pythonで書けばよいよ 
なのでこれからも富士山見ながらPython書 
きましょう 
14年12月6日土曜日
良いお年を 
14年12月6日土曜日

More Related Content

What's hot

QtでHello, World!!
QtでHello, World!!QtでHello, World!!
QtでHello, World!!
treby
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた
Shohei Tai
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
真哉 杉野
 
XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由
Ransui Iso
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようKenji NAKAGAKI
 
PySide/QtWebkitで楽々 slideshare Hack
PySide/QtWebkitで楽々 slideshare HackPySide/QtWebkitで楽々 slideshare Hack
PySide/QtWebkitで楽々 slideshare HackKazushige TAKEUCHI
 
wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)
泰 増田
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
masahitojp
 
Python twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめPython twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめYukitaka Uchikoshi
 
素振りのススメ at Python入門者の集い
素振りのススメ at Python入門者の集い素振りのススメ at Python入門者の集い
素振りのススメ at Python入門者の集い
Takayuki Shimizukawa
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3Atsushi Odagiri
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
dcubeio
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
Atsuo Ishimoto
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Katsuhiro Morishita
 
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
SaitoTsutomu
 
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
Daisuke Miyakawa
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来Atsushi Odagiri
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
Atsuo Ishimoto
 
Python入門
Python入門Python入門
Python入門
Shohei Okada
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
Aki Ariga
 

What's hot (20)

QtでHello, World!!
QtでHello, World!!QtでHello, World!!
QtでHello, World!!
 
久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた久しぶりのPythonでgoogleのアレを制御してみた
久しぶりのPythonでgoogleのアレを制御してみた
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由XML-RPC : Pythonが「電池付属」と呼ばれる理由
XML-RPC : Pythonが「電池付属」と呼ばれる理由
 
Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
PySide/QtWebkitで楽々 slideshare Hack
PySide/QtWebkitで楽々 slideshare HackPySide/QtWebkitで楽々 slideshare Hack
PySide/QtWebkitで楽々 slideshare Hack
 
wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)wxPython入門(大阪Pythonユーザの集まり2014/03)
wxPython入門(大阪Pythonユーザの集まり2014/03)
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
Python twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめPython twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめ
 
素振りのススメ at Python入門者の集い
素振りのススメ at Python入門者の集い素振りのススメ at Python入門者の集い
素振りのススメ at Python入門者の集い
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
 
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
 
"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach"Continuous Publication" with Python: Another Approach
"Continuous Publication" with Python: Another Approach
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
 
Python入門
Python入門Python入門
Python入門
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
 

Viewers also liked

PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
Hironori Sekine
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集Hikaru Takemura
 
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようPython東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしよう
Hiroshi Funai
 
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
antibayesian 俺がS式だ
 
Gensim
GensimGensim
Gensim
saireya _
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門Atsushi Hayakawa
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
Shinichi Nakagawa
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
敦志 金谷
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
Etsuji Nakai
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
Hisao Soyama
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
Takami Sato
 
All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2goMoriyoshi Koizumi
 
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
AtCoder Inc.
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来Atsushi Odagiri
 
Python エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpPython エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpTakeshi Komiya
 
Pythonによる画像処理について
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理について
Yasutomo Kawanishi
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
Alisue Lambda
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
 

Viewers also liked (20)

PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
 
Python東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしようPython東海Vol.5 IPythonをマスターしよう
Python東海Vol.5 IPythonをマスターしよう
 
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
 
Gensim
GensimGensim
Gensim
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
 
All I know about rsc.io/c2go
All I know about rsc.io/c2goAll I know about rsc.io/c2go
All I know about rsc.io/c2go
 
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
Python エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjpPython エンジニアの作り方 2011.08 #pyconjp
Python エンジニアの作り方 2011.08 #pyconjp
 
Pythonによる画像処理について
Pythonによる画像処理についてPythonによる画像処理について
Pythonによる画像処理について
 
Django learning Part2
Django learning Part2Django learning Part2
Django learning Part2
 
Djangoのススメ
DjangoのススメDjangoのススメ
Djangoのススメ
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
 

Similar to 今年使ってみて良かった、Pythonモジュール、パッケージ、ツール

とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。
Kouhei Maeda
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
Takami Sato
 
Offline Hoogleで何処でもはすはす
Offline Hoogleで何処でもはすはすOffline Hoogleで何処でもはすはす
Offline Hoogleで何処でもはすはすKiwamu Okabe
 
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Kenichiro MATOHARA
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo LinuxについてTakuto Matsuu
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Ransui Iso
 
boost::shared_ptr tutorial
boost::shared_ptr tutorialboost::shared_ptr tutorial
boost::shared_ptr tutorial
NU_Pan
 
Rancher meetup 20161007
Rancher meetup 20161007Rancher meetup 20161007
Rancher meetup 20161007
Tetsurou Yano
 
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup ) Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
Ai Makabi
 
Dodai projectの紹介
Dodai projectの紹介Dodai projectの紹介
Dodai projectの紹介Osamu Habuka
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
Tetsuya Morimoto
 
Rancher で Docker 利用!
Rancher で Docker 利用!Rancher で Docker 利用!
Rancher で Docker 利用!
Tetsurou Yano
 
ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)
ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)
ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)
Masahito Zembutsu
 
OpenMDAOをUbuntu12.04にインストールする(第24回オープンCAE勉強会@関西)
OpenMDAOをUbuntu12.04にインストールする(第24回オープンCAE勉強会@関西)OpenMDAOをUbuntu12.04にインストールする(第24回オープンCAE勉強会@関西)
OpenMDAOをUbuntu12.04にインストールする(第24回オープンCAE勉強会@関西)TatsuyaKatayama
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
AromaBlack
 
PostgreSQLとpython
PostgreSQLとpythonPostgreSQLとpython
PostgreSQLとpython
Soudai Sone
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今Atsushi Odagiri
 
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
Yusuke Miyake
 
使えるDjango1.4
使えるDjango1.4使えるDjango1.4
使えるDjango1.4
hirokiky
 
バージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティスバージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティス
Yuji Tokuda
 

Similar to 今年使ってみて良かった、Pythonモジュール、パッケージ、ツール (20)

とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。とあるWeb企業でのDebianシステムの使い方。
とあるWeb企業でのDebianシステムの使い方。
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
Offline Hoogleで何処でもはすはす
Offline Hoogleで何処でもはすはすOffline Hoogleで何処でもはすはす
Offline Hoogleで何処でもはすはす
 
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
Lessfs をかじってみた(小江戸らぐオフな集まり第110回)
 
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
 
Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1Lisp tutorial for Pythonista : Day 1
Lisp tutorial for Pythonista : Day 1
 
boost::shared_ptr tutorial
boost::shared_ptr tutorialboost::shared_ptr tutorial
boost::shared_ptr tutorial
 
Rancher meetup 20161007
Rancher meetup 20161007Rancher meetup 20161007
Rancher meetup 20161007
 
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup ) Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
Ansibleを使ってローカル開発環境を作ろう ( #PyLadiesTokyo Meetup )
 
Dodai projectの紹介
Dodai projectの紹介Dodai projectの紹介
Dodai projectの紹介
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
 
Rancher で Docker 利用!
Rancher で Docker 利用!Rancher で Docker 利用!
Rancher で Docker 利用!
 
ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)
ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)
ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)
 
OpenMDAOをUbuntu12.04にインストールする(第24回オープンCAE勉強会@関西)
OpenMDAOをUbuntu12.04にインストールする(第24回オープンCAE勉強会@関西)OpenMDAOをUbuntu12.04にインストールする(第24回オープンCAE勉強会@関西)
OpenMDAOをUbuntu12.04にインストールする(第24回オープンCAE勉強会@関西)
 
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
 
PostgreSQLとpython
PostgreSQLとpythonPostgreSQLとpython
PostgreSQLとpython
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
 
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
 
使えるDjango1.4
使えるDjango1.4使えるDjango1.4
使えるDjango1.4
 
バージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティスバージョンアップに負けないためのプラクティス
バージョンアップに負けないためのプラクティス
 

Recently uploaded

FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
atsushi061452
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
iPride Co., Ltd.
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
atsushi061452
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
yassun7010
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
NTT DATA Technology & Innovation
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
Sony - Neural Network Libraries
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
Fukuoka Institute of Technology
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
harmonylab
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 

Recently uploaded (15)

FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdfFIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
FIDO Alliance Osaka Seminar: LY-DOCOMO-KDDI-Mercari Panel.pdf
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdfFIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
FIDO Alliance Osaka Seminar: NEC & Yubico Panel.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
FIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdfFIDO Alliance Osaka Seminar: CloudGate.pdf
FIDO Alliance Osaka Seminar: CloudGate.pdf
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdfFIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
FIDO Alliance Osaka Seminar: PlayStation Passkey Deployment Case Study.pdf
 
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdfFIDO Alliance Osaka Seminar: Welcome Slides.pdf
FIDO Alliance Osaka Seminar: Welcome Slides.pdf
 
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
単腕マニピュレータによる 複数物体の同時組み立ての 基礎的考察 / Basic Approach to Robotic Assembly of Multi...
 
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
【DLゼミ】XFeat: Accelerated Features for Lightweight Image Matching
 
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 

今年使ってみて良かった、Pythonモジュール、パッケージ、ツール

  • 1. 今年使って良かったPythonモ ジュール・パッケージ・ツール pip-tools percol alfred-workflow defaultdict 2014/12/06 Shizuokapy#4 14年12月6日土曜日
  • 2. 自己紹介 @aoshiman 静岡市で社内SEやってます Pythonは趣味です(2008年位から) Flask製のブログやってます http://blog.aoshiman.org 今年後厄でした 14年12月6日土曜日
  • 3. 今年はプライベートで殆どPythonを弄るこ とが出来ませんでした。 それでも少しずつ面白そうなことを見つけて 遊んでいました。 今日は今年使ってみて良かった、面白かった Pythonモジュール、パッケージ、ツールを 紹介します。 使ったことある、あるいは使っているものが ある方もいると思いますが生暖かい目で見守 って下さい。 14年12月6日土曜日
  • 4. pip-tools https://github.com/nvie/pip-tools pipとは Pythonのパッケージ管理ツール(3.4 2.7.9 よりPython本体に同梱) pip-toolsとは pipの補佐的な機能を提供するツー ル 補佐的とは パッケージのアップデート支援(pip-review) パッケージリストの作成(pip-dump) インストール pip install pip-tools(システムの Python、virtual env どちらでも可) 14年12月6日土曜日
  • 5. pip-review 自身の環境下にあるパッケージのバージョンとPyPIにある パッケージのバージョンを比較する pip-review --auto(-a) でオートマチックに最新版 にアップグレード pip-review --interactive(-i) でパッケージ毎個別に アップグレード出来る 14年12月6日土曜日
  • 6. pip-dump 自身の環境下にあるパッケージのリストをテキストファイ ル(*requirements.txt)に出力する そのファイルを元に他環境下で同じパッケージ郡を用意す ることが簡単に出来る $ pip install -r requiremrnts.txt 14年12月6日土曜日
  • 7. pip-dump 基本的な使い方 $ pip install pip-tools $ pip-dump $ cat requirements.txt Flask==0.10.1 gnureadline==6.3.3 ipython==2.3.1 itsdangerous==0.24 Jinja2==2.7.3 MarkupSafe==0.23 pip-tools==0.3.5 Werkzeug==0.9.6 ダンプしたテキストより一括インストール $ pip install -r requirements.txt 14年12月6日土曜日
  • 8. 直接必要なパッケージとそうでないものと分けたい $ touch dev-requirements.txt $ cat dev-requirements.txt ipython qnureadline $ touch requirements.txt ※空ファイル $ pip-dump $ cat requirements.txt Flask==0.10.1 itsdangerous==0.24 Jinja2==2.7.3 MarkupSafe==0.23 Werkzeug==0.9.6 $ cat dev-requirements.txt gnureadline==6.3.3 ipython==2.3.1 14年12月6日土曜日
  • 9. Percol https://github.com/mooz/percol percol is an interactive grep tool in your terminal Emacsのanything.elみたいなもの(よく知ら ない) 開発者は日本人(moozさん) Python2.7.xで動く(Python3はブランチ) 似たようなツールにpeco(golang)など 14年12月6日土曜日
  • 10. Percolの導入と使い方 基本的な使い方 $ sudo pip install percol $ ls | percol zshのコマンド履歴検索に使う よく行くディレクトリを絞り込んで移動 gitのブランチを絞り込んでcheckout 14年12月6日土曜日
  • 12. alfredとは Mac用 ランチャーアプリ 似たようなアプリにQuicksilverがある Powerpackという有料オプションを買うと 様々な機能がアンロックされる 例:iTunesコントロール、クリップボード履 歴操作、1Password連携 ユーザーが作成したworkflowを使うことが 出来る(今回紹介する箇所) 14年12月6日土曜日
  • 13. workflowとは alfredをプラットフォームにして 入力->処 理->出力 というGUIアプリを作成出来る(超 概略)workflowはキーワードで呼び出し 使用言語はShellscript Perl PHP Ruby Python等 Packal(workflowのリポジトリ)に397 ものworkflowがある(2014.11.30現 在) 私のおすすめ(デモ) 14年12月6日土曜日
  • 14. alfred-wokflow https://github.com/deanishe/alfred-workflow Pythonで書かれたalfred workflow作成 用ヘルパーライブラリ アウトプット周り(XML出力や通知)凄く楽 Python3はサポート外(OSXのPythonバ ージョンに合わせていると考えられる) ドキュメント(特にチュートリアル)が超絶 親切(作者はたぶん凄くいい人) https://alfredworkflow.readthedocs.org/en/latest/ 14年12月6日土曜日
  • 15. 気になった機能 Self-Updating Github Releases との連携 tagを付けたリポジトリにリリースノート を記載出来たり添付ファイルをアップロー ド出来る versionをtagとし、ローカルにある workflowフォルダ内のversionと比較 し、ローカルのversionが古ければ添付さ れたworkflowをダウンロードする https://github.com/deanishe/alfred-workflow/ blob/master/workflow/update.py 14年12月6日土曜日
  • 16. defaultdict 例えば ‘mississippi’ という単語に使われている 文字の 出現回数をカウントして辞書にしたい Python 3.4.2 (default, Oct 8 2014, 19:29:32) Type "copyright", "credits" or "license" for more information. IPython 2.3.1 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]: s = 'mississippi' In [2]: d = dict() In [3]: for c in s: ...: d[c] += 1 ...: 14年12月6日土曜日
  • 17. Pythonの組み込みの辞書機能では、存在しないキーにア クセスしようとすると Keyerror が発生する In [3]: for c in s: ...: d[c] += 1 ...: --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-3-239838da436f> in <module>() 1 for c in s: ----> 2 d[c] += 1 3 KeyError: 'm' ダイレクトに d[‘m’] を求めてエラーになるのと同じ In [4]: d['m'] --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-4-267d51a5bba9> in <module>() ----> 1 d['m'] KeyError: 'm' 14年12月6日土曜日
  • 18. なので 前もってキーの存在を調べたりする In [7]: s = 'mississippi' In [8]: d = dict() In [9]: for c in s: ...: if c in d: ...: d[c] += 1 ...: else: ...: d[c] = 1 ...: In [10]: d Out[10]: {'p': 2, 'i': 4, 's': 4, 'm': 1} ※他にもやり方はあります (d.get(c, 0) or setdefault(c, 0)) 14年12月6日土曜日
  • 19. defaultdict を使う In [11]: from collections import defaultdict In [12]: d = defaultdict(int) それぞれのキーが最初に出現したとき、マッピングが存在 しない。defaultdictは第一引数に指定したfactory関 数を使ってデフォルト値を作成する。 この場合はintを使っているので、mississippiの各々の 文字が最初に出現したときに 0 を生成する。 In [13]: for c in s: ....: d[c] += 1 ....: In [15]: dict(d) Out[15]: {'p': 2, 'i': 4, 's': 4, 'm': 1} 14年12月6日土曜日
  • 20. 但し、単純に数え上げるならば、 Counterのほうが... In [18]: from collections import Counter In [19]: c = Counter('mississippi') In [20]: dict(c) Out[20]: {'p': 2, 'i': 4, 's': 4, 'm': 1} 14年12月6日土曜日
  • 21. defaultdictでtree(木構造)を作る https://gist.github.com/hrldcpr/2012250 In [32]: def tree(): return(defaultdict(tree)) In [33]: d = tree() In [34]: d['japan']['shizuoka-ken']['shizuoka-shi']['aoi-ku'] = 'hoge' In [35]: d['japan']['shizuoka-ken']['shizuoka-shi']['suruga-ku'] = 'fuga' In [36]: d['japan']['shizuoka-ken']['shizuoka-shi']['suruga-ku'] = 'foo' In [37]: d['japan']['shizuoka-ken']['fuzi-shi'] = 'fooo' In [38]: d['japan']['shizuoka-ken']['mishima-shi'] = 'bar' In [39]: pprint(d) {'japan': {'shizuoka-ken': {'fuzi-shi': 'fooo', 'mishima-shi': 'bar', 'shizuoka-shi': {'aoi-ku': 'hoge', 'suruga-ku': 'foo'}}}} 14年12月6日土曜日
  • 22. defaultdictでtreeを作る② Adaway広告除去リストdomain一覧 (31856件)でドメインツリー作成 コード https://gist.github.com/aoshiman/a3ddec9e5c829bab22c3 結果 https://gist.github.com/aoshiman/c8513d191c7fca666b44 元ネタ http://sonickun.hatenablog.com/entry/2014/07/12/231443 14年12月6日土曜日
  • 23. (本発表とあまり関係ない) まとめ Web アプリケーションフレームワークやコ マンドラインツール、研究目的等、Python の守備範囲は広い サーバサイドで言えばPaaSがコンテナサポ ートし始めているので(たぶん)どこでも Pythonで書けばよいよ なのでこれからも富士山見ながらPython書 きましょう 14年12月6日土曜日