is Neet

ネトゲしながら暮したい

ruby world conference 2016 1日目のmatzさんの話のメモ

本当にただのメモ

冒頭

  • 過労死の話を海外でしてきた
  • 1週間のバカンスを取った話を海外でしてきたら、マジかよ働きすぎワロタみたいな反応だった
  • 家族をないがしろにしながらも、生きるために働くのではなく、働くために生きている人もいる

alpha syndrome

  • コンピュータは疲れたりしない、1週間1ヶ月でも連続して働ける
  • しかも計算が早い。エニアックは1秒に5000回計算していた。今は何百億の計算が出来ている
  • 集団の中でのリーダーの事をalphaと呼ぶ。群れの序列のトップがalphaという個体
  • 犬をずっと可愛がったら、この子のためなら何でも出来るという気持ちになってくる
  • あまり可愛がってたら犬はalphaだと思うようになるので、他人が来たら吠えたりする
  • ↑のように行儀が悪くなっていく事を、alphaSyndromeという
  • コンピュータと人間の関係性もそういうところがあったいする
  • コンピュータがやっている仕事を、コンピュータに問題が起きないように働く、みたいなシーンが出てきてしまう
  • コンピュータのために働いてしまう
  • 人間の中で、無意識にコンピュータをalphaだとしてしまう傾向が出てきてしまう
  • reverse ALPHA syndromeだと呼んでいる
  • 自分達がコンピュータ様のために働いているような
  • 忘れてはならないのは、コンピュータは道具であって、私達がコンピュータの主人である
  • そのためには働きすぎてはいけない、もっとlazyでないといけない

Rubyの哲学

  • 生産性、開発効率をあげたい、プログラマを幸福に、人間にフォーカスする

duck typing

  • 分類をしない
  • タイプチェックをしない
  • ただ、命令する。その結果アヒルのように振る舞えばそれでオッケー
  • 継承や内部データは気にしない
  • 何か命令した時に、どう振る舞うかだけが重要である
  • コンピュータに仕事を押し付けることに、duck typingの本質がある
  • できるだけコンピュータに働いて欲しい

DRY

  • 重複、冗長性、コピペを禁止
  • 有るコードが重複した時に、間違えていたらバグもコピーしてしまう
  • DRYが徹底されていれば、一箇所の修正で済むよね
  • なによりも私達はlazy
  • 全部保守するのって面倒だよね
  • できるだけ仕事を増やしたくない、出来ればコンピュータに仕事を押し付けたい

つまり

  • dtもdryも怠け者精神
  • spirits of laziness
  • 偉大なプログラマの3つの得、laziness, impatience, hubris
  • 怠けるためにはどんな苦労も厭わない
  • 怠惰: 自分の仕事を楽にするソフトを作るわけじゃなくて、沢山の人が同じ質問を繰り返すのもダルいので、ドキュメントを書く 怠惰の原則がなければ、プログラマは自発的にソフトウェアを作らない
  • 短気: コンピュータが怠けるのは許さない。自分の目的を達成するソフトを書くだけじゃなくて、自分のやりたいことを先回りしてやってくれるソフトを作りましょう より質の高いソフトを作るために必要な資質
  • 傲慢: 文句を言われないように良いものを作ってやろうという気質
  • 怠惰が最も重要な気質である
  • パールのラリーさん
  • 働きすぎるのはよくない。積極的に怠惰であろう
  • enjoy Programming !
  • rubyでは楽しい部分、クリエイティブな部分に集中できるようにしていきたい
  • rubyの4原則のために、プログラマに力が必要なのではないか
  • 一生懸命働かない。余裕をもってソフトウェアを作り上げたい。コンピュータは主人ではない、そうならないために個人個人の開発者が力を持たなければならない
  • ruby/rails give power
  • よりストレスが少ない形で、ソフトウェアを完成させる事ができる。それはすなわち力である
  • empowering Programmings

スパイダーマンみたいな話

  • 偉大な力には責任が伴う
  • rubyは社会に様々な良い影響を与えている反面、トロイの木馬rubyで書かれてしまった事もあった
  • もっとプログラマに力を与えたいと考えている

rubyの功績

  • より怠惰にした laziness
  • 生産性。より安く、より早く productivity
  • 開発者の幸せ development happiness
  • ecosystemの構築
    • resources 資産がある. railsやmruby,jruby,gems
  • 着実な進歩 steady progress
  • オープンソースの世界は、人々の集まりなので変化がないと退屈してしまう傾向にある
  • rubyは極端な変化はあまり起きない。が、着実によりよいrubyになるために継続的な努力を続けていくつもりである
  • コミュニティってなに?組織?入会金がいるもの?
  • rubyコミュニティの一員であると本人が思った瞬間にコミュニティメンバーであったりする。いいなと思った瞬間に取り込まれているようなもの。定義がない
  • コミュニティのなかで文化を作ってきた功績もある
  • first ruby conf
    • フロリダで行った。出席者は38人だった
  • first ruby kaigi
    • 最初は日本人のための会議だった
    • 今では国際的なものになってきた
    • 日本人の発表には通訳がつく、英語の発表には通訳がつかない
    • 日本人はヒアリングするしかない
  • 国際化を推し進めていった功績も有る

今後の怠惰に関して

  • コンピュータの特質が変化しているのでそれに対応していかなければならない
  • 数年後にver3を考えている
  • 3つの柱を考えている
    • パフォーマンスの改善
      • 今後数年で劇的に改善したい
    • コンカレンシー、複数の仕事を同時にできるようにしたい
      • ruby作り始めた時は1 cpuだったが、いまだと4-8とか普通にあったりする
      • 複数cpuがあるんだったら全部使いたい
      • 今はそこが弱いので、活用できるように改善していきたい
      • クラウドで数百台のサーバが稼働する所でもパフォーマンスが出せるように
    • エラーチェックを厳しくしたい
      • 実行しないとエラーが分からない
      • 静的解析を強化していきたい
  • 現在は実験中だが、数年後を目処に作っていきたいと考えている