image Rediscover with Pythonサイボウズ・ラボ西尾泰和質疑応答加筆バージョン2014-09-17 14年9月17日水曜日1

image evil pythonista 14年9月17日水曜日2

image evil pythonista 14年9月17日水曜日3

image evil pythonista •2006年LL Ring「じゃんけん2.0」14年9月17日水曜日3

image evil pythonista •2006年LL Ring「じゃんけん2.0」•いろいろな言語のプログラマが各言語でプログラムを書き、通信対戦でじゃんけんする14年9月17日水曜日3

image evil pythonista •2006年LL Ring「じゃんけん2.0」•いろいろな言語のプログラマが各言語でプログラムを書き、通信対戦でじゃんけんする•この程度のプログラムなら1行で書ける! 14年9月17日水曜日3

image 改行のある構文は使えない•if •while •try..except 14年9月17日水曜日4

image How to? 14年9月17日水曜日5

image How to? •if →and/orの短絡評価を使う14年9月17日水曜日5

image How to? •if →and/orの短絡評価を使う•while →無限にyieldする便利ライブラリfrom itertools import count 14年9月17日水曜日5

image How to? •if →and/orの短絡評価を使う•while →無限にyieldする便利ライブラリfrom itertools import count •try..except →“例外を投げて死ぬ可能性のある処理”を子プロセスとして起動し、終了時のエラー出力を読む14年9月17日水曜日5

image 14年9月17日水曜日6 http://www.nishiohirokazu.org/blog/2006/08/python_12.html

image まじめな自己紹介14年9月17日水曜日7

image まじめな自己紹介•サイボウズ・ラボ14年9月17日水曜日7

image まじめな自己紹介•サイボウズ・ラボ•次世代のグループウェアの基盤となる技術を中長期視点で研究開発14年9月17日水曜日7

image まじめな自己紹介•サイボウズ・ラボ•次世代のグループウェアの基盤となる技術を中長期視点で研究開発•ワンライナーは書いていません14年9月17日水曜日7

image サイボウズにおけるPython利用シーン•自動化•インフラ•解析14年9月17日水曜日8

image 自動化•VM・ストレージ・各種設定の管理•テスト:記述するのもモックを作るのも楽•Jenkinsのスクリプトとして→RequestsでkintoneのAPIを叩いたり14年9月17日水曜日9

image インフラ14年9月17日水曜日10

image Remote Backup 14年9月17日水曜日https://enterprise.cybozu.com/topics131111/ 11

image P2P automatic failure recovery system 14年9月17日水曜日http://developer.cybozu.co.jp/tech/?p=5799 12

image P2P automatic failure recovery system 14年9月17日水曜日http://developer.cybozu.co.jp/tech/?p=5799 13

image インフラ•性能が要求される部分はC++やJava •Pythonでそれらのコンポーネントをつなぎ合わせる14年9月17日水曜日14

image 解析14年9月17日水曜日15

image 解析•データの収集14年9月17日水曜日15

image 解析•データの収集•クレンジング・フィルタリング14年9月17日水曜日15

image 解析•データの収集•クレンジング・フィルタリング•統計処理もNumPy・SciPyでお手軽14年9月17日水曜日15

image 解析•データの収集•クレンジング・フィルタリング•統計処理もNumPy・SciPyでお手軽from scipy.stats import chi2_contingency chi2_contingency(data) 14年9月17日水曜日15

image サイボウズにおけるPython利用シーン•自動化•インフラ•解析→具体例を話します14年9月17日水曜日16

image 14年9月17日水曜日17

image おすすめグラフChart recommendation •データからグラフを作る•どんなグラフを作るか選択肢が色々•コンピュータが支援14年9月17日水曜日http://developer.cybozu.co.jp/tech/?p=3874 18

image Recommend charts using statistics of data distribution 14年9月17日水曜日19

image おすすめグラフChart recommendation •プロトタイプにFlask、NumPy •標準ライブラリのcollectionsも便利•製品版はJavaScriptで実装されてます14年9月17日水曜日http://developer.cybozu.co.jp/tech/?p=3874 20

image What is groupware? 14年9月17日水曜日21

image What is groupware? Group + Software 14年9月17日水曜日21

image Augmenting Human Intellectソフトウェアによって人間の能力を増強するエンゲルバート”Augmenting Human Intellect: A Conceptual Framework” (1962) 14年9月17日水曜日22

image Augmenting Group Intellectソフトウェアによって集団の能力を増強する=グループウェア14年9月17日水曜日23

image word2vec文章を与えるとコンピュータが単語の意味を理解する14年9月17日水曜日24

image 人間コンピュータ14年9月17日水曜日25

image 人間+コンピュータ=増強された人間人間14年9月17日水曜日26

image 14年9月17日水曜日27

image 14年9月17日水曜日28

image 14年9月17日水曜日“やる気の出るアドバイス”で検索29

image 14 channels brain wave sensor 14年9月17日水曜日30

image 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

image Machine→Human paper CRT liquid crystal e-ink 3D TV HMD book e-book 14年9月17日水曜日32

image 人間増強の四要素•1:人工物(Artifacts):コンピュータ、ソフトウェア、etc. •2:言語(Language):概念を表す専門用語、デザパタ、etc. •3:方法論(Methodology):問題解決のための手順、戦略、etc. •4:教育(Training): 13を使うスキルを身につける14年9月17日水曜日エンゲルバート”Augmenting Human Intellect: A Conceptual Framework” (1962) 33

image 人間増強の四要素•1:人工物(Artifacts):コンピュータ、ソフトウェア、etc. •2:言語(Language):概念を表す専門用語、デザパタ、etc. •3:方法論(Methodology):問題解決のための手順、戦略、etc. •4:教育(Training): 13を使うスキルを身につける14年9月17日水曜日エンゲルバート”Augmenting Human Intellect: A Conceptual Framework” (1962) 34

image theme of this conference: Rediscover with Python 14年9月17日水曜日35

image How to discover? →Methodology to find unknown 14年9月17日水曜日36

image 14年9月17日水曜日37

image 14年9月17日水曜日38

image 14年9月17日水曜日39

image How to discover? →Change Perspective 14年9月17日水曜日40

image Change Perspective •どんな視点で物事を見ても、かならず見えていない部分がある•見えてない部分を見るために視点を変える14年9月17日水曜日41

image known (cid:15511) unknown 14年9月17日水曜日42

image 明らかに知らない43明らかに知っている14年9月17日水曜日

image 明らかに知らない不明明らかに知っている14年9月17日水曜日44

image 盲点(blind spot) •「明らかに知ってる」領域と「明らかに知らない」領域の間に「知らないことを知らない」領域がある。•見えていないのに、見えてないことに気づいていない。それが盲点。14年9月17日水曜日45

image 明らかに知らない明らかに知っている14年9月17日水曜日「どこまで知っているのか」を明らかにする46

image 明らかに知らない明らかに知っている14年9月17日水曜日←盲点blindspot 47

image 明らかに知らない明らかに知っている14年9月17日水曜日←盲点blindspot 48

image How to find blind spot? 14年9月17日水曜日49

image Comparison History Experience 14年9月17日水曜日50

image Comparison History Experience + Abstraction Communication 14年9月17日水曜日51

image How to find blind spot? Comparison History Experience Abstraction Communication 14年9月17日水曜日52

image Comparison •例:複数言語を比較することで気づく「あれ?Rubyでは0は真なのか?! Pythonでは偽だよな?!」「言語によって何が真か異なるのか?」「他の言語ではどうなってるんだろう?」「Pythonではどう定義されている?」14年9月17日水曜日object.nonzero(self) Called to implement truth value testing and the built-in operation bool(); 53

image History •例:歴史を追うことで盲点に気づく「PythonってなんでNew-styleクラスとそうでないのの2つあるの? →歴史を知る→型とクラスを融合する目的のためにメソッドの名前解決の順序の決め方を変える必要があったことに気づく14年9月17日水曜日Unifying types and classes in Python 2.2 | Python.org https://www.python.org/download/releases/2.2.3/descrintro 54

image Experience •実際に使うことで盲点に気づく「あれ?1/2は0.5になると思ったが0になったぞ?」14年9月17日水曜日PEP 238 — Changing the Division Operator http://legacy.python.org/dev/peps/pep-0238/ 55

image Abstraction •具体例を抽象化したものに触れることで自分の経験を言語化する「ああ、なんとなく使っていたこの書き方って、Mediatorパターンって名前がついていたのか!」14年9月17日水曜日56

image Communication •経験の異なる他人と会話することで盲点に気づく「こういう問題に困ってんだよね」「それこうしたらいいんじゃない?」「なるほど、その発想はなかった!」「いや、GUIでは普通の発想だよ」「俺サーバ周りが専門だからなぁ」14年9月17日水曜日57

image How to find blind spot? Comparison History Experience Abstraction Communication 14年9月17日水曜日58

image Communication 14年9月17日水曜日59

image Office Hour 13:00-13:30 Blog, Mail see http://nhiro.org/ 14年9月17日水曜日60

image Q&A ↓質問を思い出すのにとても役に立ちました!ありがとう! PyCon JP 2014 Day 3感想とノート#pyconjp |こえむの編集後記http://www.koemu.com/blog/2014/09/15/pycon-jp-2014-day3/ 14年9月17日水曜日61

image Q:「盲点に気づくチャンス」となる情報を見ても認知的不協和を起こして「そんなはずはない」と思ってしまう人がいるのでは。組織のaugmentを考える上ではそういう人をどうすればよいだろうか?どう啓蒙する? 14年9月17日水曜日62

image A:まさにその点に対して答えようとしている「U理論」について9/24から京都大学サマーデザインスクールで解説する予定なのでその資料を…http://www.design.kyoto-u.ac.jp/sds2014/ja/theme01.html 63 14年9月17日水曜日

image A:言いたいことは2点ある。まず「他人をどう変えるか」というスタンスではうまくいかない。自分が変わる必要がある。14年9月17日水曜日64

image A:次に「見えているのに見ていない」状態にハマることは自分も含めてよくあること、と気づくこと。14年9月17日水曜日65

image A:最初は小さなものでよいので、その気付きから有益な結果が得られる「成功体験」を積むこと。これが自信につながる。14年9月17日水曜日66

image PDCAサイクルとU曲線の関係U曲線補足スライドU曲線状態行動14年9月17日水曜日67 C・オットー・シャーマー「U理論」

image PDCAサイクルとU曲線の関係U曲線補足スライドU曲線←見えているのに思い込みにとらわれてきちんと見てない状態状態行動14年9月17日水曜日68 C・オットー・シャーマー「U理論」

image PDCAサイクルとU曲線の関係U曲線補足スライドU曲線←見てはいるが、自分の視点からだけ。状態行動「奴らはしないから」と考えたりする。自己と他者の間に境界線を引いて14年9月17日水曜日69 C・オットー・シャーマー「U理論」

image Q:モデリングをどうやってやるかも大事なのではないか? 14年9月17日水曜日70

image A:はい、大事です。14年9月17日水曜日71

image この特集の3章がまるまるその内容ですWEB上で読めます14年9月17日水曜日http://gihyo.jp/lifestyle/feature/01/engineer-studying 72

image A:経験から仮説が作られる。「理解した」という気持ちも仮説。仮説は実験によって検証する必要がある。理解に基づいて行動し結果を確認する14年9月17日水曜日73

image A:行動した結果が予想と異なった場合はモデルを修正する必要がある。これを繰り返していくことで「正しい可能性の高い」モデルを作り、それを組み合わせることでより大きなモデルを作る。これが一つの方法論14年9月17日水曜日74

image A:もう一つの方法論として実験が容易でない人文科学では、KJ法やグラウンデッド・セオリーが使われる。14年9月17日水曜日75

image A:まずインタビューなどで大量にデータを集め、それを自分の偏見で「これはノイズだ」とフィルタリングすることなく一覧できるようにする14年9月17日水曜日76

image A:人間の作業記憶は7つくらいしかないが、データを紙に書いて机の上に広げれば100とか200とかを見ることができる14年9月17日水曜日77

image A: 100のデータを一覧できる状態を作った上で、机の上で動かすことでモデルを組み立てていく、これがKJ法(会場では言いそこねたが、既存の構造をトップダウンに当てはめるのではなく、データからボトムアップで構造を組み立てていくのも重要なポイント) (ちなみに上記で紹介した拙著書籍・特集記事は14年9月17日水曜日78 KJ法でモデル化されている)

image Office Hourでの質問Q:盲点に気づく5つの方法は並列ではなく、時間軸で前後関係があるのではないか? 14年9月17日水曜日79

image A:それは盲点だった!確かに抽象はいきなり最初から使うことはできない。プログラミングの経験がない人がデザインパターンの本を読んでも自分の経験と結びつかない。14年9月17日水曜日80

image Q:テスタの間でテストのノウハウを共有したいがどうしたらいいか(詳細な状況説明は省略) 14年9月17日水曜日81

image A:言語化されていない知識をどうやって共有するかという問題だと思える。一つの方法論は「一緒に作業」だ。14年9月17日水曜日82

image A:一緒に作業することでノウハウを言語化しないまま共有することができる。更に「操作せずに指示する人と操作する人」を分ければ指示するために知識の言語化が促される14年9月17日水曜日参考文献“凡才の集団は孤高の天才に勝る” 83

image A:言語化が行われて初めて、マニュアル化などができるようになる。言語化は結構難しいタスクなので、そのスキルを鍛えずにいきなり個々人に任せるとうまくいかない。14年9月17日水曜日84

image 言語化されていない知識補足スライドこのスパイラルを回すことで知識が創造される『知識創造企業』p93 85 14年9月17日水曜日

image 言語化されていない知識補足スライド↑ペアプロ・共同作業はここに相当するこのスパイラルを回すことで知識が創造される『知識創造企業』p93 86 14年9月17日水曜日

image Q:私は情報の言語化のためのテンプレートを作っている。質問に答えていくと必要な情報が揃う。14年9月17日水曜日87

image A:それは良いアプローチ。「言語化しろ」と言われてできない人でも、具体的に質問をされると答えられることがよくある。適切な質問を投げかけることは重要。14年9月17日水曜日88

image A:そういう意味でテンプレート化にはメリットがある。しかし、テンプレートで表現できない情報が捨てられてしまうデメリットに気をつける必要がある。新しい重要な情報は定型化されていない。14年9月17日水曜日89