Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PyConJP Keynote Speech (Japanese version)

4,713 views

Published on

PyConJP Keynote Speech (Japanese version)

Published in: Education

PyConJP Keynote Speech (Japanese version)

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

×