SlideShare una empresa de Scribd logo
1 de 75
Descargar para leer sin conexión
pythonで
オフィス快適化計画
PyCon APAC 2013
kzfm
自己紹介
•  kzfm (@fmkz___)
–  blog.kzfmix.com
–  Shizuoka.py
•  とある製薬企業の研究員
•  日本酒とdrum n bass好き
•  Python歴は6年くらい
–  (その前はPerl)
•  よく使うのはFlask, Pandas
内容
•  Excelでの書類入力にイライラしない☆
•  社会人としてWordとどう付き合うか?
•  ルーチンワークなスライド作成からの開放
•  xlsx,docx,pptxとは何なのだろう?
どうして社会人はExcelで書
類をつくるのか?
特に総務系のヒトの
Excel好きは異常
表計算完全無視☆Excel
h"p://toge"er.com/li/101450
論破してもムダ(-_-;)
総務のヒトと仲良くするための
Python☆
表計算がしたければ
R(Rpy2)かPandasで
一年に一度くらいのExcel申請
書は耐えられるが、
毎週とか毎日は辛い
例えば
pubmed
•  医学・生物学分野の学術文献検索サービ
ス
•  医学・生物学論文検索界のグーグル
– ないと死ぬ
pythonでオフィス快適化計画
欲しい文献がない場合
•  図書の係のヒトに大学図書館に出向いて
もらって複写をしてもらっていた
– ちょっと前まではpdfなんて少なかった
– Excel申請書類にコピペしてお願いする
pythonでオフィス快適化計画
pythonでオフィス快適化計画
pythonでオフィス快適化計画
pythonでオフィス快適化計画
pythonでオフィス快適化計画
pythonでオフィス快適化計画
めんどくさすぎる!
複写して欲しい論文が何十報
もあるとげんなりする
優秀な人程困る…
そこでPython☆
OpenPyXL+BioPython
•  OpenPyXL
– Excel 2007 xlsx/xlsmを読み書きする
パッケージ
•  BioPython
– PythonでBioinformatics(ゲノム配列や
タンパク質立体構造を扱う)
– PubmedのAPI(xmlが返ってくる)にも対
応
それっぽいxlsx
コード
from	
  Bio	
  import	
  Entrez,	
  Medline	
  
from	
  openpyxl	
  import	
  load_workbook	
  
Entrez.email	
  =	
  ”_____@gmail.com"	
  
handle	
  =	
  Entrez.efetch(db="pubmed",	
  id=["21982300"],	
  re"ype="medline",	
  retmode="text")	
  
records	
  =	
  Medline.parse(handle)	
  
record	
  =	
  list(records)[0]	
  
wb	
  =	
  load_workbook('ref_cp.xlsx')	
  
ws	
  =	
  wb.get_acSve_sheet()	
  
ws.cell('B1').value	
  =	
  record.get("JT",	
  "")	
  
ws.cell('B2').value	
  =	
  record.get("VI",	
  "")	
  
ws.cell('B3').value	
  =	
  record.get("PG",	
  "")	
  
ws.cell('B4').value	
  =	
  record.get("IS",	
  "")	
  
ws.cell('B5').value	
  =	
  record.get("DP",	
  "")	
  
ws.cell('B6').value	
  =	
  "	
  ".join(record.get("FAU")[:3])	
  
ws.cell('B7').value	
  =	
  record.get("TI",	
  "")	
  
wb.save('openbabel.xlsx')	
  
結果
あとはウェブサービスにしてブックマークレット用意しておけばOK
ここまでのまとめ
•  PyOpenXLを使うことで、既存の
Excelファイルをテンプレートとした入
力作業を自動化できる
•  時間の節約
•  無駄な作業からの開放
他にPythonでExcelを扱う
モジュール
XlsxWriter
•  https://github.com/jmcnamara/
XlsxWriter
•  PerlのExcel::Writer::XLSXのポート
•  xlsxファイルの書き込みのみサポート
•  既存のファイルを読み込んで修正して出力
みたいなことはできない
xlrd/xlwt
•  xlrd
– Excelファイルを読む(read)
•  xlwt
– Excelファイルに書き出す(write)
•  読み書きできるので既存のExcelファイ
ルをテンプレートとして編集した後別の
ファイルに出力できる
•  古いフォーマットにも対応
社会人としてWordと
どう付き合うか?
wordで文書作成
•  報告書のようなもの
–  誰に報告したいのか?
–  報告書は再利用されるのか?
–  そもそも読まれるのか?
•  申請書類のようなもの
–  テンプレートに記入
•  原稿っぽいもの
–  章立て
–  校正、修正
wordで文書作成
•  報告書のようなもの
–  誰に報告したいのか?
–  報告書は再利用されるのか?
–  そもそも読まれるのか?
•  申請書類のようなもの
–  テンプレートに記入
•  原稿っぽいもの
–  章立て
–  校正、修正
実験レポート
•  いつ誰がどういう実験をしてどういう結果を
出したかというレポート
•  トレーサビリティ重要
–  word(doc)フォーマットでファイルを作って深
い(不快)フォルダに入れるルール
•  /部門/研究室/年度/月度/実験者/区分/id.doc
•  これは使いづらかった
–  アクセスしにくい
–  全体の把握をしにくい
–  同僚が何やっているのか全然分からん
もっと楽をしたい
•  簡単に編集したい
•  レポートを簡単に検索したい
•  webブラウザでも見たい
•  で、Wikiを使うことにした
FSWiki
•  perlで書かれ
たwikiエンジ
ン
•  タグで分類
•  XML-RPCに
対応
•  pdfで出力で
きる
FSWiki
•  報告書をpdfで
出そうとしたら
wordで出せと
•  RTF::Writer
というモジュー
ルを使ってdoc
に出力するプラ
グイン作った
docのテンプレートに埋め込む
学んだこと
•  WIKIでレポートまとめていくので編集が
容易、仕事とレポートを並行して行う
TDDっぽい仕事感が得られる(リズムが
気持ちいい)
•  レポート作成の心理的障が下がった
•  軽いバージョン管理
•  必要十分な検索機能
コンテンツと見た目の分離重要
•  コンテンツはできるだけシンプルな記法
(markdown,ReST)で持っておく
– バージョン管理システムと相性がいい
– フォーマットの変換が簡単にできるように
•  epubとかmobiとか重要度上がってるし
•  docにするとコンテンツの再利用性が下
がる(doc->docならいいけど)
– word立ち上げる時間もバカにならない
– ファイルの管理コストも(SharePoint?)
doc(x)でコンテンツを管理しな
いというスタイルに転向した
Sphinxとかよく使う
Sphinx
•  「美しいドキュメントを簡単に生成する
ことができるドキュメンテーションツー
ル」ですね!
•  pdfとかepubに出力できて便利ですが
もちろんdocxに出力する拡張もあります
sphinx-docxbuilder
•  https://bitbucket.org/haraisao/
sphinx-docxbuilder
便利( ・ิω・ิ)
Sphinxの詳細は今日の午後のセッ
ションのスライドとかSphinx-
Users.jpのサイトをご覧下さい
Sphinxをはじめよう
h"p://www.oreilly.co.jp/books/9784873116488/
python-docx
•  word2007形式のファイルの読み書き
ができる
•  xmlを直接操作するような感じ
•  個人的にはもうちょっと高レベルなAPI
のほうが嬉しいかも
コード
from	
  docx	
  import	
  *	
  
relaSonships	
  =	
  relaSonshiplist()	
  
document	
  =	
  newdocument()	
  
body	
  =	
  document.xpath('/w:document/w:body',	
  namespaces=nsprefixes)[0]	
  
body.append(heading(u"日本酒",	
  1))	
  
sake_list	
  =	
  [{"name":u"開運",	
  "image":"kaiun.jpg",	
  "desc":u"(静岡)美味い"},	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"name":u"庭のうぐいす",	
  "image":"uguisu.jpg",	
  "desc":u"(福岡)スパークリング"},	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  {"name":u"空木",	
  "image":"utugi.jpg",	
  "desc":u"(宮城)カップの絵柄が素敵"}]	
  
コード(続き)
for	
  sake	
  in	
  sake_list:	
  
	
  	
  	
  	
  body.append(heading(sake["name"],	
  2))	
  
	
  	
  	
  	
  body.append(paragraph(sake["desc"]))	
  
	
  	
  	
  	
  relaSonships,	
  picpara	
  =	
  picture(relaSonships,	
  sake["image"],	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  sake["name"],	
  pixelwidth=100,	
  pixelheight=100)	
  
	
  	
  	
  	
  body.append(picpara)	
  
coreprops	
  =	
  coreproperSes(Stle="sake",	
  subject="",	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  creator="kzfm",	
  keywords=[])	
  
appprops	
  =	
  appproperSes()	
  
conten"ypes	
  =	
  conten"ypes()	
  
websegngs	
  =	
  websegngs()	
  
wordrelaSonships	
  =	
  wordrelaSonships(relaSonships)	
  
savedocx(document,	
  coreprops,	
  appprops,	
  conten"ypes,	
  websegngs,	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  wordrelaSonships,	
  'sake.docx’)	
  
できること
•  段落
•  リスト
•  数字付きリスト
•  見出し
•  表
•  ページ分割
•  画像挿入
wordで文書作成
•  報告書のようなもの
–  誰に報告したいのか?
–  報告書は再利用されるのか?
–  そもそも読まれるのか?
•  申請書類のようなもの
–  テンプレートに記入
•  原稿っぽいもの
–  章立て
–  校正、修正
ルーチンワークなスライド作
成からの開放
例
•  Naverまとめから
画像を取り出して
pptxにする
–  【
新宿】ガチで美味い
ラーメン屋だけまとめ
た
python-pptx + requests
prs = Presentation()
bullet_slidelayout = prs.slidelayouts[1]
c = requests.get('http://matome.naver.jp/odai/2136205629354777701').content
urls = [x.group(1) for x in re.finditer(r'<img src="(.+)".*?class="MTMItemThumb".*?/>', c)]
for i, url in enumerate(urls, 1):
img_path = "{}.jpg".format(i)
r = requests.get(url)
if r.status_code == 200:
with open(img_path, 'w') as f:
f.write(r.content)
shapes = prs.slides.add_slide(bullet_slidelayout).shapes
shapes.placeholders[0].text = '新宿のガチで美味いラーメン ({})'.format(i)
pic = shapes.add_picture(img_path, Inches(2.1), Inches(2), Px(280 * 1.427), Px(280))
prs.save('ramen.pptx')
ガチで美味いスライド
創薬研究は様々なデータを収集
•  異なる技能をもった複数人のチームでゴールを目
指す
–  化合物合成するヒト(ケミスト)
–  効き目を実験するヒト
•  タンパク質
•  細胞
•  動物
–  体内での薬の動きをみるヒト、毒性みるヒト
•  細胞
•  動物
–  予測モデル作ったりシミュレーションしたりするヒト
•  コンピュテーショナルケミスト
–  データサイエンティスト
•  バイオインフォマティクス
•  ケモインフォマティクス
それぞれ違う人間が関わっている
XX0035	
   XX0036	
 XX0049	
 XX0088	
  
合成者	
 chemistA	
 chemitA	
 chemistB	
 chemistC	
Structure	
 
Molecular	
  weight	
  440	
 378	
 477	
 529	
AcSvity	
  10.0	
 0.99	
 0.24	
 5.5	
Stability	
   10	
 20	
 0	
 5	
logD	
  3.1	
 2.8	
 2.3	
 2.6	
Solubility	
  17	
 <1	
 36	
 42	
PAMPA	
  15	
 23	
 22	
 33	
hERG	
 5	
 3.3	
 -­‐	
 -­‐	
dGSH	
 N.D.	
 N.D.	
 -­‐	
 -­‐	
PPB	
 99.3	
 95	
 -­‐	
 -­‐	
PK	
 136	
 48	
 122	
 147	
PK	
  t1/2	
 17	
 3.7	
 5.2	
 5.2
コピペの問題
•  時間がかかる
– まとめるだけでも労力が要る
– それぞれの研究者からレポートを集めてせっ
せとコピペ作業は忙しい時には発狂する
•  ミスる
– 数字を間違えたり、入れるべきカラムを間違
えたり
– それを避けるための無駄なダブルチェック
pythonで解消
•  Python-pptx+SQLAlchemyで必要
なデータを取ってきて、表にまとめるのを
自動化できる
•  コピペからの開放☆
•  資料作成時間というムダの削減
パッケージまとめ
xlsx	
• XlsxWriter	
• xlrd/xlwt	
• OpenPyXL	
docx	
• python-­‐
docx	
pptx	
• python-­‐
pptx	
これでほとんど困らない
そもそも
xlsx pptx docx
とはなにか?
Office Open XML
•  Office Open XML (OpenXML、
OOXML) とは、XMLをベースとしたオ
フィススイート用のファイルフォーマット
である。
– http://ja.wikipedia.org/wiki/
Office_Open_XML
– ECMA標準(ECMA-376)
xmlを含むもろもろをzip圧
縮して拡張子を変えたもの
詳しく知りたいヒトは
•  仕様
– http://www.ecma-
international.org/publications/
standards/Ecma-376.htm
•  書籍
– 入門 OfficeOpen XML
例(prs1.pptx)
unzip prs1.pptx ; tree
.	
  
├──	
  [Content_Types].xml	
  
├──	
  _rels	
  
├──	
  docProps	
  
│	
  	
  	
  ├──	
  app.xml	
  
│	
  	
  	
  ├──	
  core.xml	
  
│	
  	
  	
  └──	
  thumbnail.jpeg	
  
└──	
  ppt	
  
	
  	
  	
  	
  ├──	
  _rels	
  
	
  	
  	
  	
  │	
  	
  	
  └──	
  presentaSon.xml.rels	
  
	
  	
  	
  	
  ├──	
  presProps.xml	
  
	
  	
  	
  	
  ├──	
  presentaSon.xml	
  
	
  	
  	
  	
  ├──	
  printerSegngs	
  
	
  	
  	
  	
  │	
  	
  	
  └──	
  printerSegngs1.bin	
  
	
  	
  	
  	
  ├──	
  slideLayouts	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  _rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout1.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout10.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout11.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout2.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout3.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout4.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout5.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout6.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout7.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout8.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  └──	
  slideLayout9.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout1.xml	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout10.xml	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout11.xml	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout2.xml	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout3.xml	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout4.xml	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout5.xml	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout6.xml	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout7.xml	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  slideLayout8.xml	
  
	
  	
  	
  	
  │	
  	
  	
  └──	
  slideLayout9.xml	
  
	
  	
  	
  	
  ├──	
  slideMasters	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  _rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  └──	
  slideMaster1.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  └──	
  slideMaster1.xml	
  
	
  	
  	
  	
  ├──	
  slides	
  
	
  	
  	
  	
  │	
  	
  	
  ├──	
  _rels	
  
	
  	
  	
  	
  │	
  	
  	
  │	
  	
  	
  └──	
  slide1.xml.rels	
  
	
  	
  	
  	
  │	
  	
  	
  └──	
  slide1.xml	
  
	
  	
  	
  	
  ├──	
  tableStyles.xml	
  
	
  	
  	
  	
  ├──	
  theme	
  
	
  	
  	
  	
  │	
  	
  	
  └──	
  theme1.xml	
  
	
  	
  	
  	
  └──	
  viewProps.xml	
  
書き換えればよろしい
$	
  zip	
  -­‐r	
  prs2.pptx	
  [Content_Types].xml	
  _rels	
  docProps	
  ppt
簡単☆
pythonでやってみる
{{title}}	
{{name}}
Torii	
  of	
  Miyajima	
  /	
  nobusue
コード
from	
  jinja2	
  import	
  Template	
  
from	
  zipfile	
  import	
  ZipFile	
  
f	
  =	
  ZipFile("template.pptx")	
  
w	
  =	
  ZipFile("sample.pptx",	
  "w")	
  
for	
  name	
  in	
  f.namelist():	
  
	
  	
  	
  	
  s	
  =	
  f.read(name)	
  
	
  	
  	
  	
  if	
  name	
  ==	
  "ppt/slides/slide1.xml":	
  
	
  	
  	
  	
  	
  	
  	
  	
  template	
  =	
  Template(s.decode("ux-­‐8"))	
  
	
  	
  	
  	
  	
  	
  	
  	
  s	
  =	
  template.render(Stle=u"髭もいいけど神社でしょ(^_^)v",	
  name="@kzfm")	
  
	
  	
  	
  	
  	
  	
  	
  	
  s	
  =	
  s.encode("ux-­‐8")	
  
	
  	
  	
  	
  w.writestr(name,	
  s)	
  
f.close()	
  
w.close()	
  
髭もいいけど神社でしょ(^_^)v	
@kzfm
Torii	
  of	
  Miyajima	
  /	
  nobusue
zipfile(とlxml)モジュール
があればOK
Office文書をPythonで
生成することのメリット
•  何度もくり返すような作業を毎回手でやる
必要がなくなる
•  ドキュメント構築のプロセスを再利用で
きる
•  Gitのようなバージョン管理システムで管
理できる
MS Officeだけでなく
Pythonを使うことで
あなたのオフィスも
快適になるかも☆
ご清聴ありがとうございました

Más contenido relacionado

La actualidad más candente

Apache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsApache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsYoshiyasu SAEKI
 
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話mdome
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)Tetsuya Hasegawa
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLab Inc. / Tech
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAmazon Web Services Japan
 
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたLinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたHiraku Toyooka
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるAtsushi KOMIYA
 
AWS Outposts/LocalZones/Wavelength勉強会
AWS Outposts/LocalZones/Wavelength勉強会AWS Outposts/LocalZones/Wavelength勉強会
AWS Outposts/LocalZones/Wavelength勉強会Mamoru Ohashi
 
TiDBのトランザクション
TiDBのトランザクションTiDBのトランザクション
TiDBのトランザクションAkio Mitobe
 
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution EngineAsuka Nakajima
 
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...J On The Beach
 
AWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツールAWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツールMasaki Suzuki
 

La actualidad más candente (20)

Apache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once SemanticsApache Kafka 0.11 の Exactly Once Semantics
Apache Kafka 0.11 の Exactly Once Semantics
 
GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話GitとCIとかチャットとかをオンプレで運用する話
GitとCIとかチャットとかをオンプレで運用する話
 
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについてeBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
 
DevOps勉強会
DevOps勉強会DevOps勉強会
DevOps勉強会
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
 
golang profiling の基礎
golang profiling の基礎golang profiling の基礎
golang profiling の基礎
 
Consistent hash
Consistent hashConsistent hash
Consistent hash
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
KLabのインフラエンジニア 〜 こんな感じで働いてます 〜
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
 
LinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみたLinuxのFull ticklessを試してみた
LinuxのFull ticklessを試してみた
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
 
iostatの見方
iostatの見方iostatの見方
iostatの見方
 
AWS Outposts/LocalZones/Wavelength勉強会
AWS Outposts/LocalZones/Wavelength勉強会AWS Outposts/LocalZones/Wavelength勉強会
AWS Outposts/LocalZones/Wavelength勉強会
 
TiDBのトランザクション
TiDBのトランザクションTiDBのトランザクション
TiDBのトランザクション
 
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
 
AWS OpsWorksハンズオン
AWS OpsWorksハンズオンAWS OpsWorksハンズオン
AWS OpsWorksハンズオン
 
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
A race of two compilers: GraalVM JIT versus HotSpot JIT C2. Which one offers ...
 
AWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツールAWS Lambdaのテストで役立つ各種ツール
AWS Lambdaのテストで役立つ各種ツール
 
Nginx lua
Nginx luaNginx lua
Nginx lua
 

Similar a pythonでオフィス快適化計画

卒研発表
卒研発表卒研発表
卒研発表yayugu
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Ransui Iso
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう幹雄 小川
 
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...Insight Technology, Inc.
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOKohei Noda
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 TokyoYoshiyuki Asaba
 
Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約Yusaku Kawaguchi
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?Yosuke Onoue
 
Tech Fielders 2009/9/18 LT
Tech Fielders 2009/9/18 LTTech Fielders 2009/9/18 LT
Tech Fielders 2009/9/18 LTterurou
 
コミケの取りまとめをしたので
コミケの取りまとめをしたのでコミケの取りまとめをしたので
コミケの取りまとめをしたのでKenichiro MATOHARA
 

Similar a pythonでオフィス快適化計画 (20)

卒研発表
卒研発表卒研発表
卒研発表
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
R超入門機械学習をはじめよう
R超入門機械学習をはじめようR超入門機械学習をはじめよう
R超入門機械学習をはじめよう
 
Drupal補完計画
Drupal補完計画Drupal補完計画
Drupal補完計画
 
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
[db tech showcase Tokyo 2014] B22: Hadoop Rush!! HDFSからデータを自在に取得、加工するにはどうする? ...
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
Tokyo r38
Tokyo r38Tokyo r38
Tokyo r38
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
 
Haikara
HaikaraHaikara
Haikara
 
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
 
Tokyo r30 beginner
Tokyo r30 beginnerTokyo r30 beginner
Tokyo r30 beginner
 
Tokyo r50 beginner_2
Tokyo r50 beginner_2Tokyo r50 beginner_2
Tokyo r50 beginner_2
 
Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?
 
Rでreproducible research
Rでreproducible researchRでreproducible research
Rでreproducible research
 
TwitterToDayOne
TwitterToDayOneTwitterToDayOne
TwitterToDayOne
 
Tech Fielders 2009/9/18 LT
Tech Fielders 2009/9/18 LTTech Fielders 2009/9/18 LT
Tech Fielders 2009/9/18 LT
 
コミケの取りまとめをしたので
コミケの取りまとめをしたのでコミケの取りまとめをしたので
コミケの取りまとめをしたので
 

Más de Kazufumi Ohkawa

ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67Kazufumi Ohkawa
 
ClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅKazufumi Ohkawa
 
SAR精度70% その先へ
SAR精度70% その先へSAR精度70% その先へ
SAR精度70% その先へKazufumi Ohkawa
 
視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけること視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけることKazufumi Ohkawa
 
量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMOKazufumi Ohkawa
 
あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史Kazufumi Ohkawa
 
IPython notebookを使おう
IPython notebookを使おうIPython notebookを使おう
IPython notebookを使おうKazufumi Ohkawa
 
実践コンピュータビジョン8章
実践コンピュータビジョン8章実践コンピュータビジョン8章
実践コンピュータビジョン8章Kazufumi Ohkawa
 
エンジョイ☆スクレイピング
エンジョイ☆スクレイピングエンジョイ☆スクレイピング
エンジョイ☆スクレイピングKazufumi Ohkawa
 
Redmineでもめない会議☆
Redmineでもめない会議☆Redmineでもめない会議☆
Redmineでもめない会議☆Kazufumi Ohkawa
 
入門機械学習読書会9章
入門機械学習読書会9章入門機械学習読書会9章
入門機械学習読書会9章Kazufumi Ohkawa
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptKazufumi Ohkawa
 
入門機械学習読書会二回目
入門機械学習読書会二回目入門機械学習読書会二回目
入門機械学習読書会二回目Kazufumi Ohkawa
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章Kazufumi Ohkawa
 

Más de Kazufumi Ohkawa (20)

圏論walker
圏論walker圏論walker
圏論walker
 
ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67ハッピーハッピー構造生成まつり’67
ハッピーハッピー構造生成まつり’67
 
ClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅClickでCLIをお手軽につくるぅぅぅ
ClickでCLIをお手軽につくるぅぅぅ
 
SAR精度70% その先へ
SAR精度70% その先へSAR精度70% その先へ
SAR精度70% その先へ
 
視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけること視覚化サービス構築の際に気をつけること
視覚化サービス構築の際に気をつけること
 
量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO量子化学計算外伝 すごいよ!! FMO
量子化学計算外伝 すごいよ!! FMO
 
あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史あまり知られていない静岡の言語戦争の歴史
あまり知られていない静岡の言語戦争の歴史
 
IPython notebookを使おう
IPython notebookを使おうIPython notebookを使おう
IPython notebookを使おう
 
Mishimasyk141025
Mishimasyk141025Mishimasyk141025
Mishimasyk141025
 
実践コンピュータビジョン8章
実践コンピュータビジョン8章実践コンピュータビジョン8章
実践コンピュータビジョン8章
 
R -> Python
R -> PythonR -> Python
R -> Python
 
ChEMBLを使おう
ChEMBLを使おうChEMBLを使おう
ChEMBLを使おう
 
Unigram mixtures
Unigram mixturesUnigram mixtures
Unigram mixtures
 
エンジョイ☆スクレイピング
エンジョイ☆スクレイピングエンジョイ☆スクレイピング
エンジョイ☆スクレイピング
 
Redmineでもめない会議☆
Redmineでもめない会議☆Redmineでもめない会議☆
Redmineでもめない会議☆
 
入門機械学習読書会9章
入門機械学習読書会9章入門機械学習読書会9章
入門機械学習読書会9章
 
入門機械学習6章
入門機械学習6章入門機械学習6章
入門機械学習6章
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScript
 
入門機械学習読書会二回目
入門機械学習読書会二回目入門機械学習読書会二回目
入門機械学習読書会二回目
 
入門機械学習1,2章
入門機械学習1,2章入門機械学習1,2章
入門機械学習1,2章
 

pythonでオフィス快適化計画