PyCon JP 2014 基調講演
2014-09-17
資料
-----
Rediscover with Pythonサイボウズ・ラボ西尾泰和質疑応答加筆バージョン2014-09-17 14年9月17日水曜日1
evil pythonista 14年9月17日水曜日2
evil pythonista 14年9月17日水曜日3
evil pythonista •2006年LL Ring「じゃんけん2.0」14年9月17日水曜日3
evil pythonista •2006年LL Ring「じゃんけん2.0」•いろいろな言語のプログラマが各言語でプログラムを書き、通信対戦でじゃんけんする14年9月17日水曜日3
evil pythonista •2006年LL Ring「じゃんけん2.0」•いろいろな言語のプログラマが各言語でプログラムを書き、通信対戦でじゃんけんする•この程度のプログラムなら1行で書ける! 14年9月17日水曜日3
改行のある構文は使えない•if •while •try..except 14年9月17日水曜日4
How to? 14年9月17日水曜日5
How to? •if →and/orの短絡評価を使う14年9月17日水曜日5
How to? •if →and/orの短絡評価を使う•while →無限にyieldする便利ライブラリfrom itertools import count 14年9月17日水曜日5
How to? •if →and/orの短絡評価を使う•while →無限にyieldする便利ライブラリfrom itertools import count •try..except →“例外を投げて死ぬ可能性のある処理"を子プロセスとして起動し、終了時のエラー出力を読む14年9月17日水曜日5
まじめな自己紹介14年9月17日水曜日7
まじめな自己紹介•サイボウズ・ラボ14年9月17日水曜日7
まじめな自己紹介•サイボウズ・ラボ•次世代のグループウェアの基盤となる技術を中長期視点で研究開発14年9月17日水曜日7
まじめな自己紹介•サイボウズ・ラボ•次世代のグループウェアの基盤となる技術を中長期視点で研究開発•ワンライナーは書いていません14年9月17日水曜日7
サイボウズにおけるPython利用シーン•自動化•インフラ•解析14年9月17日水曜日8
自動化•VM・ストレージ・各種設定の管理•テスト:記述するのもモックを作るのも楽•Jenkinsのスクリプトとして→RequestsでkintoneのAPIを叩いたり14年9月17日水曜日9
インフラ14年9月17日水曜日10
インフラ•性能が要求される部分はC++やJava •Pythonでそれらのコンポーネントをつなぎ合わせる14年9月17日水曜日14
解析14年9月17日水曜日15
解析•データの収集14年9月17日水曜日15
解析•データの収集•クレンジング・フィルタリング14年9月17日水曜日15
解析•データの収集•クレンジング・フィルタリング•統計処理もNumPy・SciPyでお手軽14年9月17日水曜日15
解析•データの収集•クレンジング・フィルタリング•統計処理もNumPy・SciPyでお手軽from scipy.stats import chi2_contingency chi2_contingency(data) 14年9月17日水曜日15
サイボウズにおけるPython利用シーン•自動化•インフラ•解析→具体例を話します14年9月17日水曜日16
14年9月17日水曜日17
Recommend charts using statistics of data distribution 14年9月17日水曜日19
What is groupware? 14年9月17日水曜日21
What is groupware? Group + Software 14年9月17日水曜日21
Augmenting Human Intellectソフトウェアによって人間の能力を増強するエンゲルバート"Augmenting Human Intellect: A Conceptual Framework" (1962) 14年9月17日水曜日22
Augmenting Group Intellectソフトウェアによって集団の能力を増強する=グループウェア14年9月17日水曜日23
word2vec文章を与えるとコンピュータが単語の意味を理解する14年9月17日水曜日24
人間コンピュータ14年9月17日水曜日25
人間+コンピュータ=増強された人間人間14年9月17日水曜日26
14年9月17日水曜日27
14年9月17日水曜日28
14年9月17日水曜日“やる気の出るアドバイス"で検索29
14 channels brain wave sensor 14年9月17日水曜日30
Human→Machine keyboard switch mouse camera touch panel (multi-touch) scanner Machine→Human paper CRT liquid crystal e-ink 3D TV HMD 14年9月17日水曜日31
Machine→Human paper CRT liquid crystal e-ink 3D TV HMD book e-book 14年9月17日水曜日32
人間増強の四要素•1:人工物(Artifacts):コンピュータ、ソフトウェア、etc. •2:言語(Language):概念を表す専門用語、デザパタ、etc. •3:方法論(Methodology):問題解決のための手順、戦略、etc. •4:教育(Training): 13を使うスキルを身につける14年9月17日水曜日エンゲルバート"Augmenting Human Intellect: A Conceptual Framework" (1962) 33
人間増強の四要素•1:人工物(Artifacts):コンピュータ、ソフトウェア、etc. •2:言語(Language):概念を表す専門用語、デザパタ、etc. •3:方法論(Methodology):問題解決のための手順、戦略、etc. •4:教育(Training): 13を使うスキルを身につける14年9月17日水曜日エンゲルバート"Augmenting Human Intellect: A Conceptual Framework" (1962) 34
theme of this conference: Rediscover with Python 14年9月17日水曜日35
How to discover? →Methodology to find unknown 14年9月17日水曜日36
14年9月17日水曜日37
14年9月17日水曜日38
14年9月17日水曜日39
How to discover? →Change Perspective 14年9月17日水曜日40
Change Perspective •どんな視点で物事を見ても、かならず見えていない部分がある•見えてない部分を見るために視点を変える14年9月17日水曜日41
known (cid:15511) unknown 14年9月17日水曜日42
明らかに知らない43明らかに知っている14年9月17日水曜日
明らかに知らない不明明らかに知っている14年9月17日水曜日44
盲点(blind spot) •「明らかに知ってる」領域と「明らかに知らない」領域の間に「知らないことを知らない」領域がある。•見えていないのに、見えてないことに気づいていない。それが盲点。14年9月17日水曜日45
明らかに知らない明らかに知っている14年9月17日水曜日「どこまで知っているのか」を明らかにする46
明らかに知らない明らかに知っている14年9月17日水曜日←盲点blindspot 47
明らかに知らない明らかに知っている14年9月17日水曜日←盲点blindspot 48
How to find blind spot? 14年9月17日水曜日49
Comparison History Experience 14年9月17日水曜日50
Comparison History Experience + Abstraction Communication 14年9月17日水曜日51
How to find blind spot? Comparison History Experience Abstraction Communication 14年9月17日水曜日52
Comparison •例:複数言語を比較することで気づく「あれ?Rubyでは0は真なのか?! Pythonでは偽だよな?!」「言語によって何が真か異なるのか?」「他の言語ではどうなってるんだろう?」「Pythonではどう定義されている?」14年9月17日水曜日object.__nonzero__(self) Called to implement truth value testing and the built-in operation bool(); 53
Abstraction •具体例を抽象化したものに触れることで自分の経験を言語化する「ああ、なんとなく使っていたこの書き方って、Mediatorパターンって名前がついていたのか!」14年9月17日水曜日56
Communication •経験の異なる他人と会話することで盲点に気づく「こういう問題に困ってんだよね」「それこうしたらいいんじゃない?」「なるほど、その発想はなかった!」「いや、GUIでは普通の発想だよ」「俺サーバ周りが専門だからなぁ」14年9月17日水曜日57
How to find blind spot? Comparison History Experience Abstraction Communication 14年9月17日水曜日58
Communication 14年9月17日水曜日59
Q:「盲点に気づくチャンス」となる情報を見ても認知的不協和を起こして「そんなはずはない」と思ってしまう人がいるのでは。組織のaugmentを考える上ではそういう人をどうすればよいだろうか?どう啓蒙する? 14年9月17日水曜日62
A:言いたいことは2点ある。まず「他人をどう変えるか」というスタンスではうまくいかない。自分が変わる必要がある。14年9月17日水曜日64
A:次に「見えているのに見ていない」状態にハマることは自分も含めてよくあること、と気づくこと。14年9月17日水曜日65
A:最初は小さなものでよいので、その気付きから有益な結果が得られる「成功体験」を積むこと。これが自信につながる。14年9月17日水曜日66
PDCAサイクルとU曲線の関係U曲線補足スライドU曲線状態行動14年9月17日水曜日67 C・オットー・シャーマー「U理論」
PDCAサイクルとU曲線の関係U曲線補足スライドU曲線←見えているのに思い込みにとらわれてきちんと見てない状態状態行動14年9月17日水曜日68 C・オットー・シャーマー「U理論」
PDCAサイクルとU曲線の関係U曲線補足スライドU曲線←見てはいるが、自分の視点からだけ。状態行動「奴らはしないから」と考えたりする。自己と他者の間に境界線を引いて14年9月17日水曜日69 C・オットー・シャーマー「U理論」
Q:モデリングをどうやってやるかも大事なのではないか? 14年9月17日水曜日70
A:はい、大事です。14年9月17日水曜日71
A:経験から仮説が作られる。「理解した」という気持ちも仮説。仮説は実験によって検証する必要がある。理解に基づいて行動し結果を確認する14年9月17日水曜日73
A:行動した結果が予想と異なった場合はモデルを修正する必要がある。これを繰り返していくことで「正しい可能性の高い」モデルを作り、それを組み合わせることでより大きなモデルを作る。これが一つの方法論14年9月17日水曜日74
A:もう一つの方法論として実験が容易でない人文科学では、KJ法やグラウンデッド・セオリーが使われる。14年9月17日水曜日75
A:まずインタビューなどで大量にデータを集め、それを自分の偏見で「これはノイズだ」とフィルタリングすることなく一覧できるようにする14年9月17日水曜日76
A:人間の作業記憶は7つくらいしかないが、データを紙に書いて机の上に広げれば100とか200とかを見ることができる14年9月17日水曜日77
A: 100のデータを一覧できる状態を作った上で、机の上で動かすことでモデルを組み立てていく、これがKJ法(会場では言いそこねたが、
既存の構造をトップダウンに当てはめるのではなく、データからボトムアップで構造を組み立てていくのも重要なポイント) (ちなみに上記で紹介した拙著書籍・特集記事は14年9月17日水曜日78 KJ法でモデル化されている)
Office Hourでの質問Q:盲点に気づく5つの方法は並列ではなく、時間軸で前後関係があるのではないか? 14年9月17日水曜日79
A:それは盲点だった!確かに抽象はいきなり最初から使うことはできない。プログラミングの経験がない人がデザインパターンの本を読んでも自分の経験と結びつかない。14年9月17日水曜日80
Q:テスタの間でテストのノウハウを共有したいがどうしたらいいか(詳細な状況説明は省略) 14年9月17日水曜日81
A:言語化されていない知識をどうやって共有するかという問題だと思える。一つの方法論は「一緒に作業」だ。14年9月17日水曜日82
A:一緒に作業することでノウハウを言語化しないまま共有することができる。更に「操作せずに指示する人と操作する人」を分ければ指示するために知識の言語化が促される14年9月17日水曜日参考文献“凡才の集団は孤高の天才に勝る" 83
A:言語化が行われて初めて、マニュアル化などができるようになる。言語化は結構難しいタスクなので、そのスキルを鍛えずにいきなり個々人に任せるとうまくいかない。14年9月17日水曜日84
言語化されていない知識補足スライドこのスパイラルを回すことで知識が創造される『知識創造企業』p93 85 14年9月17日水曜日
言語化されていない知識補足スライド↑ペアプロ・共同作業はここに相当するこのスパイラルを回すことで知識が創造される『知識創造企業』p93 86 14年9月17日水曜日
Q:私は情報の言語化のためのテンプレートを作っている。質問に答えていくと必要な情報が揃う。14年9月17日水曜日87
A:それは良いアプローチ。「言語化しろ」と言われてできない人でも、具体的に質問をされると答えられることがよくある。適切な質問を投げかけることは重要。14年9月17日水曜日88
A:そういう意味でテンプレート化にはメリットがある。しかし、テンプレートで表現できない情報が捨てられてしまうデメリットに気をつける必要がある。新しい重要な情報は定型化されていない。14年9月17日水曜日89