PyConJP Keynote Speech (Japanese version)
description
Transcript of PyConJP Keynote Speech (Japanese version)
Rediscover with Pythonサイボウズ・ラボ西尾泰和
質疑応答加筆バージョン2014-09-17
114年9月17日水曜日
evil pythonista
214年9月17日水曜日
evil pythonista
314年9月17日水曜日
evil pythonista
• 2006年LL Ring「じゃんけん2.0」
314年9月17日水曜日
evil pythonista
• 2006年LL Ring「じゃんけん2.0」
• いろいろな言語のプログラマが各言語でプログラムを書き、通信対戦でじゃんけんする
314年9月17日水曜日
evil pythonista
• 2006年LL Ring「じゃんけん2.0」
• いろいろな言語のプログラマが各言語でプログラムを書き、通信対戦でじゃんけんする
• この程度のプログラムなら1行で書ける!
314年9月17日水曜日
改行のある構文は使えない
• if
• while
• try..except
414年9月17日水曜日
How to?
514年9月17日水曜日
How to?
• if → and/orの短絡評価を使う
514年9月17日水曜日
How to?
• if → and/orの短絡評価を使う
• while → 無限にyieldする便利ライブラリfrom itertools import count
514年9月17日水曜日
How to?
• if → and/orの短絡評価を使う
• while → 無限にyieldする便利ライブラリfrom itertools import count
• try..except → “例外を投げて死ぬ可能性のある処理” を子プロセスとして起動し、終了時のエラー出力を読む
514年9月17日水曜日
http://www.nishiohirokazu.org/blog/2006/08/python_12.html
614年9月17日水曜日
まじめな自己紹介
714年9月17日水曜日
まじめな自己紹介
• サイボウズ・ラボ
714年9月17日水曜日
まじめな自己紹介
• サイボウズ・ラボ• 次世代のグループウェアの基盤となる技術を中長期視点で研究開発
714年9月17日水曜日
まじめな自己紹介
• サイボウズ・ラボ• 次世代のグループウェアの基盤となる技術を中長期視点で研究開発
• ワンライナーは書いていません
714年9月17日水曜日
サイボウズにおけるPython利用シーン
• 自動化• インフラ• 解析
814年9月17日水曜日
自動化
• VM・ストレージ・各種設定の管理
• テスト:記述するのもモックを作るのも楽• Jenkinsのスクリプトとして→RequestsでkintoneのAPIを叩いたり
914年9月17日水曜日
インフラ
1014年9月17日水曜日
https://enterprise.cybozu.com/topics131111/
Remote Backup
1114年9月17日水曜日
http://developer.cybozu.co.jp/tech/?p=5799
P2P automatic failure recovery system
1214年9月17日水曜日
http://developer.cybozu.co.jp/tech/?p=5799
P2P automatic failure recovery system
1314年9月17日水曜日
インフラ
• 性能が要求される部分はC++やJava
• Pythonでそれらのコンポーネントをつなぎ合わせる
1414年9月17日水曜日
解析
1514年9月17日水曜日
解析
• データの収集
1514年9月17日水曜日
解析
• データの収集• クレンジング・フィルタリング
1514年9月17日水曜日
解析
• データの収集• クレンジング・フィルタリング• 統計処理もNumPy・SciPyでお手軽
1514年9月17日水曜日
解析
• データの収集• クレンジング・フィルタリング• 統計処理もNumPy・SciPyでお手軽
from scipy.stats import chi2_contingencychi2_contingency(data)
1514年9月17日水曜日
サイボウズにおけるPython利用シーン
• 自動化• インフラ• 解析 →具体例を話します
1614年9月17日水曜日
1714年9月17日水曜日
おすすめグラフ
• データからグラフを作る• どんなグラフを作るか選択肢が色々• コンピュータが支援
http://developer.cybozu.co.jp/tech/?p=3874
Chart recommendation
1814年9月17日水曜日
Recommend charts using statistics of data distribution
1914年9月17日水曜日
おすすめグラフ
• プロトタイプにFlask、NumPy
• 標準ライブラリのcollectionsも便利
• 製品版はJavaScriptで実装されてます
http://developer.cybozu.co.jp/tech/?p=3874
Chart recommendation
2014年9月17日水曜日
What is groupware?
2114年9月17日水曜日
What is groupware?
Group + Software
2114年9月17日水曜日
Augmenting Human Intellect
エンゲルバート"Augmenting Human Intellect: A Conceptual Framework" (1962)
ソフトウェアによって人間の能力を増強する
2214年9月17日水曜日
ソフトウェアによって集団の能力を増強する=グループウェア
Augmenting Group Intellect
2314年9月17日水曜日
文章を与えるとコンピュータが
単語の意味を理解する
word2vec
2414年9月17日水曜日
人間
コンピュータ
2514年9月17日水曜日
人間
人間+コンピュータ=増強された人間
2614年9月17日水曜日
2714年9月17日水曜日
2814年9月17日水曜日
“やる気の出るアドバイス”で検索2914年9月17日水曜日
14 channels brain wave sensor
3014年9月17日水曜日
Machine→Human
Human→Machine touch panel
liquid crystal
(multi-touch)
switch
mousekeyboard
camerascanner
paper CRT 3D TV
HMDe-ink
3114年9月17日水曜日
Machine→Human
liquid crystalpaper CRT 3D TV
HMDe-ink
book e-book
3214年9月17日水曜日
人間増強の四要素• 1: 人工物(Artifacts):
コンピュータ、ソフトウェア、etc.
• 2: 言語(Language):
概念を表す専門用語、デザパタ、etc.
• 3: 方法論(Methodology):
問題解決のための手順、戦略、etc.
• 4: 教育(Training): 1~3を使うスキルを身につけるエンゲルバート"Augmenting Human Intellect: A Conceptual Framework" (1962)
3314年9月17日水曜日
人間増強の四要素• 1: 人工物(Artifacts):
コンピュータ、ソフトウェア、etc.
• 2: 言語(Language):
概念を表す専門用語、デザパタ、etc.
• 3: 方法論(Methodology):
問題解決のための手順、戦略、etc.
• 4: 教育(Training): 1~3を使うスキルを身につけるエンゲルバート"Augmenting Human Intellect: A Conceptual Framework" (1962)
3414年9月17日水曜日
theme of this conference:
Rediscover with Python
3514年9月17日水曜日
How to discover?→Methodology to find unknown
3614年9月17日水曜日
3714年9月17日水曜日
3814年9月17日水曜日
3914年9月17日水曜日
How to discover?→Change Perspective
4014年9月17日水曜日
Change Perspective
• どんな視点で物事を見ても、かならず見えていない部分がある
• 見えてない部分を見るために視点を変える
4114年9月17日水曜日
known ↔ unknown
4214年9月17日水曜日
明らかに知っている
明らかに知らない
4314年9月17日水曜日
明らかに知っている
明らかに知らない
不明4414年9月17日水曜日
盲点(blind spot)
• 「明らかに知ってる」領域と「明らかに知らない」領域の間に「知らないことを知らない」領域がある。
• 見えていないのに、見えてないことに気づいていない。それが盲点。
4514年9月17日水曜日
「どこまで知っているのか」を明らかにする
明らかに知っている
明らかに知らない
4614年9月17日水曜日
←盲点 blindspot明らかに知っている
明らかに知らない
4714年9月17日水曜日
←盲点 blindspot明らかに知っている
明らかに知らない
4814年9月17日水曜日
How to find blind spot?
4914年9月17日水曜日
ComparisonHistory
Experience
5014年9月17日水曜日
ComparisonHistory
Experience+
AbstractionCommunication
5114年9月17日水曜日
ComparisonHistory
ExperienceAbstraction
Communication
How to find blind spot?
5214年9月17日水曜日
Comparison
• 例:複数言語を比較することで気づく「あれ?Rubyでは0は真なのか?! Pythonでは偽だよな?!」「言語によって何が真か異なるのか?」「他の言語ではどうなってるんだろう?」「Pythonではどう定義されている?」
object.__nonzero__(self)Called to implement truth value testing and the built-in operation bool();
5314年9月17日水曜日
History
• 例:歴史を追うことで盲点に気づく「PythonってなんでNew-styleクラスとそうでないのの2つあるの?→歴史を知る→型とクラスを融合する目的のためにメソッドの名前解決の順序の決め方を変える必要があったことに気づく
Unifying types and classes in Python 2.2 | Python.orghttps://www.python.org/download/releases/2.2.3/descrintro
5414年9月17日水曜日
Experience
• 実際に使うことで盲点に気づく「あれ?1/2は0.5になると思ったが 0になったぞ?」
PEP 238 -- Changing the Division Operatorhttp://legacy.python.org/dev/peps/pep-0238/
5514年9月17日水曜日
Abstraction
• 具体例を抽象化したものに触れることで自分の経験を言語化する「ああ、なんとなく使っていたこの書き方って、Mediatorパターンって名前がついていたのか!」
5614年9月17日水曜日
Communication
• 経験の異なる他人と会話することで盲点に気づく「こういう問題に困ってんだよね」「それこうしたらいいんじゃない?」「なるほど、その発想はなかった!」「いや、GUIでは普通の発想だよ」「俺サーバ周りが専門だからなぁ」
5714年9月17日水曜日
ComparisonHistory
ExperienceAbstraction
Communication
How to find blind spot?
5814年9月17日水曜日
Communication
5914年9月17日水曜日
Office Hour13:00-13:30
Blog, Mailsee http://nhiro.org/
6014年9月17日水曜日
Q&A
PyCon JP 2014 Day 3 感想とノート #pyconjp | こえむの編集後記http://www.koemu.com/blog/2014/09/15/pycon-jp-2014-day3/
↓質問を思い出すのにとても役に立ちました!ありがとう!
6114年9月17日水曜日
Q: 「盲点に気づくチャンス」となる情報を見ても認知的不協和を起こして「そんなはずはない」と思ってしまう人がいるのでは。組織のaugmentを考える上ではそういう人をどうすればよいだろうか?どう啓蒙する?
6214年9月17日水曜日
A: まさにその点に対して答えようとしている「U理論」について9/24から京都大学サマーデザインスクールで解説する予定なのでその資料を…http://www.design.kyoto-u.ac.jp/sds2014/ja/theme01.html
6314年9月17日水曜日
A: 言いたいことは2点ある。まず「他人をどう変えるか」というスタンスではうまくいかない。自分が変わる必要が
ある。
6414年9月17日水曜日
A: 次に「見えているのに見ていない」状態にハマることは自分も含めてよくあること、
と気づくこと。
6514年9月17日水曜日
A: 最初は小さなものでよいので、その気付きから有益な結果が得られる「成功体験」を積むこと。これが自信につな
がる。
6614年9月17日水曜日
U曲線PDCAサイクルとU曲線の関係U曲線
C・オットー・シャーマー「U理論」
状態
行動
補足スライド
6714年9月17日水曜日
U曲線PDCAサイクルとU曲線の関係U曲線
C・オットー・シャーマー「U理論」
状態
行動
←見えているのに思い込みにとらわれてきちんと見てない状態
補足スライド
6814年9月17日水曜日
U曲線PDCAサイクルとU曲線の関係U曲線
C・オットー・シャーマー「U理論」
状態
行動
←見てはいるが、自分の視点からだけ。自己と他者の間に境界線を引いて
「奴らは~しないから」と考えたりする。
補足スライド
6914年9月17日水曜日
Q: モデリングをどうやってやるかも大事なのでは
ないか?
7014年9月17日水曜日
A: はい、大事です。
7114年9月17日水曜日
この特集の3章がまるまるその内容です
WEB上で読めますhttp://gihyo.jp/lifestyle/feature/01/engineer-studying
7214年9月17日水曜日
A: 経験から仮説が作られる。「理解した」という気持ちも仮説。仮説は実験によって検証する必要がある。理解に基づいて行動し結果を確認する
7314年9月17日水曜日
A: 行動した結果が予想と異なった場合はモデルを修正する必要がある。これを繰り返していくことで「正しい可能性の高い」モデルを作り、それを組み合わせることでより大きなモデルを作る。これが一つの方法論
7414年9月17日水曜日
A: もう一つの方法論として実験が容易でない人文科学では、KJ法やグラウンデッド・セオリーが使
われる。7514年9月17日水曜日
A: まずインタビューなどで大量にデータを集め、それを自分の偏見で「これはノイズだ」とフィルタリングすることなく一覧できるようにする
7614年9月17日水曜日
A: 人間の作業記憶は7つくらいしかないが、データを紙に書いて机の上に広げれば100とか200とかを見ることがで
きる
7714年9月17日水曜日
A: 100のデータを一覧できる状態を作った上で、机の上で動かすことでモデルを組み立てていく、これがKJ法
(会場では言いそこねたが、既存の構造をトップダウンに当てはめるのではなく、データからボトムアップで構造を組み立てていくのも重要なポイント)(ちなみに上記で紹介した拙著書籍・特集記事は
KJ法でモデル化されている)7814年9月17日水曜日
Office Hourでの質問Q: 盲点に気づく5つの方法は並列ではなく、時間軸で前後関係があるのではないか?
7914年9月17日水曜日
A: それは盲点だった!確かに抽象はいきなり最初から使うことはできない。プログラミングの経験がない人がデザインパターンの本を読んでも自分の経験と結びつかない。
8014年9月17日水曜日
Q: テスタの間でテストのノウハウを共有したいがどうした
らいいか(詳細な状況説明は省略)
8114年9月17日水曜日
A: 言語化されていない知識をどうやって共有するかという問題だと思える。一つの方法論は「一緒に作業」だ。
8214年9月17日水曜日
A: 一緒に作業することでノウハウを言語化しないまま共有することができる。更に「操作せずに指示する人と操作する人」を分ければ指示するために知識の言語化が促される
参考文献 “凡才の集団は孤高の天才に勝る”8314年9月17日水曜日
A: 言語化が行われて初めて、マニュアル化などができるようになる。言語化は結構難しいタスクなので、そのスキルを鍛えずにいきなり個々人に任せるとうまくいかない。
8414年9月17日水曜日
言語化されていない知識
このスパイラルを回すことで知識が創造される 『知識創造企業』p93
補足スライド
8514年9月17日水曜日
言語化されていない知識
このスパイラルを回すことで知識が創造される 『知識創造企業』p93
補足スライド
↑ペアプロ・共同作業はここに相当する
8614年9月17日水曜日
Q: 私は情報の言語化のためのテンプレートを作っている。質問に答えていくと必要な情
報が揃う。
8714年9月17日水曜日
A: それは良いアプローチ。「言語化しろ」と言われてできない人でも、具体的に質問をされると答えられることがよくある。適切な質問を投げ
かけることは重要。8814年9月17日水曜日
A: そういう意味でテンプレート化にはメリットがある。しかし、テンプレートで表現できない情報が捨てられてしまうデメリットに気をつける必要がある。新しい重要な情報は定型化されていない。
8914年9月17日水曜日