紳士なブログ

紳士すぎてすみません

『グーグル ネット覇者の真実』読んでます

4月に入ってから『グーグル ネット覇者の真実』をちびちび読んでいます。


グーグル ネット覇者の真実 追われる立場から追う立場へ

グーグル ネット覇者の真実 追われる立場から追う立場へ

  • 作者: スティーブン・レヴィ,仲達志,池村千秋
  • 出版社/メーカー: 阪急コミュニケーションズ
  • 発売日: 2011/12/16
  • メディア: 単行本
  • 購入: 8人 クリック: 447回
  • この商品を含むブログ (52件) を見る


素晴らしい内容なのでまとめていこうと思います。

内容がとても濃いので、いくつかに分かれそうです。


まずはグーグルという企業のあり方に迫った3章です。


3章 邪悪になるな


グーグルの企業文化


  • 彼らが開発したテクノロジーはより良い世界をつくるためにあり、彼らがつくった会社もまた同じ目的を共有している。グーグルは理想的な行動規範をもった企業としてほかの会社を導く光となる。社員を第一に考え、データ主導の経営スタイルを取るリーダーシップ。そして、素晴らしく頭の切れる社員たちは、もてる知恵と技術力のすべての注ぎ込んでユーザーに力を与え、広告のクライアントに富をもたらそうとする。
  • 「私たちの野望は、グーグルがより良い世界をつくる企業になることだ。私たちは、ある程度の短期的収益を犠牲にしても世界にとってためになることをする企業になった方が、長期的には株主や他の関係者に利益をもたらすと固く信じている。これは私たちの企業文化の重要な側面であり、社内でも広く共有されている」


  • ラリーとサーゲイは2人とも幼少時代にモンテッソーリ教育を受けていた
    • モンテッソーリ教育は、1870年生まれのイタリアの医師マリア・モンテッソーリの教育哲学に基づくもの
    • 子供には、自分が興味をもったことを追求する自由を与えるべきだという考え方
    • その結果、自分で考えた質問への答えを求め、自分で決めたように行動する
    • 権威を軽視することを学び、何かをするときに道理にかなっているからそうする習慣を身につける
    • 規律を知る個人とは、完全に自らの意思に従って行動できる人間のことを指す
    • 役に立つ人間になるには、自発的な行動を抑圧したり、恣意的な理由で作業に従事させたりするような環境から鉄笛的に自由になる必要がある


  • グーグルは企業として、絶対に遊び心を失わないことを固く決意している
    • グーグルの企業文化にとって最も神聖な祝日はエイプリルフール
    • 想像力を想像力を大きく羽ばたかせるように期待されている社員たちは、この日のために何ヶ月もかけて緻密に計画された悪ふざけの準備をする


  • トイレ内の壁には目の高さにコードのテストに関するメモが貼られている
    • 開発者が仕事を効率化するために、負荷テストやマイクロベンチマークテストにかかわるアイディアをトイレに貼る「テスティング・オン・ザ・トイレット」と呼ばれる取り組み
    • グーグルの高い理想を実現するために毎日大量の仕事をこなしている現場では、1秒もおろそかにできない


  • 次のアップルかマイクロソフト、あるいはそれらを超える企業になるという共通の夢だけがその存在意義だった
    • 一日が終わると、人々が帰宅するような時間になっても、グーグルの若いエンジニアたちはほんの1、2年前まで大学でやっていたような雑談に興じ、仕事について熱く語り合った


  • 毎週金曜日の午後4時30分には、TGIFと呼ばれる全社ミーティングが開かれた
    • ブリンとペイジは出張中でない限り、必ずTGIFを主催した
    • 彼らは社外で話すときより、社員を相手に話しているときの方がはるかにリラックスして見えた
    • 彼らはお互いをからかいあったり、ある意味で高度だけれどもややオタクっぽいユーモアを交えつつ、ミーティングを進行させた
    • TGIFはグーグルプレックスで常にビールが振舞われる唯一の会合だった
    • 時刻がまだ夕方ということもあり、飲み過ぎる者は1人もいなかった
      • 社員の大半は週末に備えて仕事を片付けるために再びパソコンの前に陣取り、2、3時間は残業をした


  • 食事の無料サービス
    • 健康的な食事をたっぷり取りながら、社員同士が心を通い合わせて仕事に関する革新的なアイディアを共有する


グーグルの採用方針


  • 「私たちが採用試験で候補者の面接を行う際には質問への回答を4点満点で評価して、平均点が3点以下なら不採用にする。これは大学で採用されている成績評価システム(GPA)とまったく同じことだ」
  • ペイジとブリンは、会社が成果を出せるかどうかは、トップクラスの知性や能力をもつ人材を採用できるかどうかにかかっていると考えている
  • ペイジはあるとき、グーグルに採用されるほど優秀な人間なら、出張中に空港で待ち時間ができたときに、彼に興味深い話題を提供して飽きさせない程度の知識や利発さがあって然るべきだと語ったことがある
    • たとえば、ジョー・クラウスは入社してから半年後に、社内でこれまで「頭が悪い」人間に1人も会ったことがないことに気づいた。「血の巡りが悪いやつが1人もいないんだ。これだけの規模の会社なのに、ちょっとすごすぎる」
  • 現時点での社員の平均的な能力を超える人材しか採用しない方針
  • 基本的な採用基準は、とてつもなく高い知性と抑えきれないほどの野心を備えていること。さらに、より定義が難しい基準だが、グーグルらしさをもっていること。
  • 会社が本当に人を増やす必要があったとしても、企業文化を犠牲にしてまで社員を採用したくない
  • 採用プロセスの一環として設けられている採用委員会は、入る資格のない者たちは決して中に入れまいとするグーグルの守護者の一団
    • 面接中の彼はどんな様子だったか?相手の目を見て話していたか?好人物であるように思えたか?君だったら隣の席に座ってほしいような人物か?といった質問をを採用担当者に矢継ぎ早に浴びせる
    • 自分の仕事について隅々まで理解しており、自分の行動を弁護したり、自分の考えや気持ちをきちんと相手に伝えたりするスキルを持ちあわせていないとやっていけないので、採用段階で見極める
    • 会社の受付係に無作法な態度を示すような候補者は、問答無用で採用対象からはずす
  • グーグルの採用基準にはエリート主義的な一面もある。設立当初から学歴を重視し、出身校で候補者を分類している。恵まれた環境で育ち、頭が良くて努力家で、SAT(大学進学適正試験)では高得点を取り、学校の成績も優秀で、最高レベルの大学に入れるほど素晴らしいエッセイを書く能力があるーそんな若者たちを採用する。
    • GPAが3.5以上なら大体において及第点で、3.0と3.5の間は採用チームにとってはやや不安な数字。それ以下の場合は相当に問題がある。そして、たとえプロとして立派なキャリアを築いていても、学位を取得していないことは大きなマイナスになる。
    • 一方、「一芸入試」のようなこともしており、それだけひとつのことに集中できる人間なら、広告営業でも必ず能力を発揮してくれるはずだと判断される。
  • 時間の経過とともに、グーグルは採用プロセスを効率化した。かつては、就職希望者の面接回数が最大20回に達する時期もあったが、その回数自体が減らされた。それでもいまだに8回近くの面接を受けることが多い。
  • 委員会は求職者の専門分野に関してある程度の知識を有するメンバーで構成されていたが、直属の上司になる人間は必ず除外された。「どんなマネジャーも部下が1人もいない状況よりは誰かがいる状況を望む」ため、標準以下の求職者にゴーサインを出す誘惑に負けてしまう可能性が大きいからだとピーター・ノーヴィグ。


グーグルの職場環境


  • 社員への特典以上にグーグルが力を注いでいるのが、理想的な職場環境の実現
    • 社内の数百もの会議室にはそれぞれ、遠く離れた世界各地の地名がつけられていた(たとえば、ブルキナファソの首都の名前からとった「ワガドゥグ」という部屋がある)
    • ペンやマーカーなどの備品も常に補充されており、社員が仕事以外に余計な労力を使わないようにあらゆる面で配慮されている
  • このような努力により、数十万時間もの貴重な労働時間が節約される
  • グーグルのこうした配慮は、他社では社員の貴重な労働時間を奪い、頭痛の種となっている様々な手続きや社内プロセスにも及んでいた
    • 社員には自由に使える「魔法のチケット」が与えられ、チケットの登録を行うだけで、自分のデスクや椅子などの作業環境を好きなように変更できる
      • 例えば、立ったまま仕事をする、バランスボールを椅子の代わりに使う


グーグルの組織体制


  • ペイジとブリンは、数千人のエンジニアを抱える大企業を抱える大企業を円滑に運営すると同時に、自由な発送や創造性を重視したのびのびとして職場環境を実現したいと考えていた
  • ペイジ「人は誰にも管理されたくないものです」キャンベル「いや、実は管理されたがっているんだ」
    • エンジニアを1人ずつ呼び出して聞いてみたところ、みんな管理されたいと答えた
    • 社員たちは誰か学べる相手が欲しいのだ、同僚と意見が食い違って議論が行き詰まったときに、両方の意見を聞いて白黒をつけてくれる誰かが欲しいのだ
  • ペイジはエンジニアの言うことを理解できるほど頭の良いプロダクトマネジャーを探しているわけではない。彼が探しているのはプロダクトマネジャーになれるエンジニアなのだ。
    • グーグルは就職経験がなく、先入観を刷り込まれていない若者たちを直接大学から青田買いする
    • まだ未開発のスキルと洞察力を持った素質の高い若者を採用し、大きな責任を伴う仕事を任せる
    • グーグルのPMは命令を出す権限をもっておらず、極めて高いIQを持つエンジニアたちを一定の考え方に従うようにうまく誘導することが仕事だった
    • それを実現する唯一の方法は方法は具体的な数字を示すこと。情報だけがエンジニアと同じ土俵で戦うことを可能にした
    • このプロセスにおいては、データが常に意思決定の中心に据えられるという意味では、APMの経験不足はグーグルにとって有利に働いた
  • グーグルの経営陣は、社内のチームが肥大化していないかと常に心配していた
    • グーグルは社員のモチベーションを維持するために、自分たちがプロジェクトの責任者であることを実感できるくらい小規模なチーム編成にこだわってきた
    • プロジェクトの肥大化が目立ち始めると、プロジェクトを分解し、複数のより小さなチームに分散させた。社員たちがまるでデータセンターのサーバーであるかのように調整する、このプロセスを「ロードバランシング(負荷分散)」と呼んだ
  • OKR: 目標と主要な成果
    • 自分が何をやりたいかやりたいかではなくて、作業をセグメント化し、どんな結果をいつまでに出せるか、時期を決めて定量化するという手法
    • グーグルにとって定量化できるというのは大きな魅力。OKRは従来の主観的なパフォーマンス評価を数値化するためのデータだと考えられた。
    • 社員は全員、四半期ごとと年間を通じてのOKRを設定し、承認を受ける必要があった
    • ×「Gmailを成功させる」◯「9月にGmailのサービスを開始させ、11月までに100万人のユーザーを獲得する」
    • OKRを達成できないことより悪いのは、目標を大幅に上回る成果を上げること
      • これは、社員が誠実ではない、安全策をとって目標を意図的に低めに設定していたことを示す
      • グーグルにはチャレンジ精神に欠け、能力以下の仕事しかしようとしない社員を残しておく余地はなかった
    • 理想的なのは、OKRで設定した目標の0.7か0.8を達成すること
    • OKR設定の6週間後にマネジャーと面接し、進捗状況を報告、評価をもらう
      • 青: そのまま進んでよし、黄: 問題発生の可能性あり、赤: 深刻な問題あり
    • OKRはマネジャーだけでなく社内全体と共有されていた
    • ペイジとブリンのOKRでさえ簡単に閲覧可能


改めてすごい会社だと感じています。

それにしても630ページは長い…。

Vimで意外に知らなかった10つのこと

すごくすごくすごく今さらですが、vimtutorやってみました。
とてもよくまとまっていてびっくりした。


基本的な内容だったけど、自己流でやっていたせいか
意外と知らなかったことがあったのでまとめてみます。

今まで無駄なことしてたなと少し反省(-_-;)


% vimtutor


  • オペレータとモーション
    • w - カーソル位置から空白を含む単語の末尾まで。
    • e - カーソル位置から空白を含まない単語の末尾まで。


  • モーションにカウントを使用する
    • 0をタイプして行頭に移動
    • ^でも戻れますが0でも戻れるということをすっかり忘れていた!微妙に違うので個人的には^が好きです。


  • 変更コマンド
    • ミスタイプした単語の途中でcwとタイプすると、その単語のカーソルより後ろの部分が消えてインサートモードになる。
    • cw は単語を変更するだけでなく、挿入も行える点が便利。


  • 位置とファイルの情報
    • ファイル内での位置とファイルの状態を表示するには CTRL-G をタイプ。
    • 設定で常に表示しておけばいい話だけど。


  • 置換
    • :%s/old/new/g ファイル全体で見つかるものに対して変更する。
    • :%s/old/new/gc ファイル全体で見つかるものに対して、1つ1つ確認をとりながら置換する
    • 今までファイル全体を対象とする際も行番号指定してた。あほやー。


  • 外部コマンドを実行する方法
    • :! の後に実行する外部コマンドをタイプ。
    • すると外部シェルコマンドが実行できる様に。引数もとれる。


  • 選択した書き込み
    • 文字や行を選択した状態で:w ファイル名するとその部分だけをそのファイル名で保存


  • ファイルの取込と合併
    • ファイルの中身を挿入するには :r ファイル名 とタイプ
    • 外部コマンドの出力を読み込むことも出来るとのこと
    • 例えば、:r !ls は ls コマンドの出力をカーソル以下に読み込む。
    • これはびっくり。使う機会があるかはわからないけど。


  • その他の置換方法
    • 1文字以上を置き換えるにはRとタイプ。
    • 既存の文字を削除しつつ、挿入も行う。


  • 補完
    • CTRL-D と TAB でコマンドラインを補完
    • CTRL-D : コマンドの一覧を表示
    • TAB : コマンド名を補完
    • CTRL-Dは普段あまり使ってなかった。


我ながら基本的なことすぎてあきれてしまう/(^o^)\

でも改めて普段自分が使っているツールを見直して
改善するのって大事だと改めて感じました。

RailsでテンプレートエンジンのSlimを使ってみる

Rails環境でテンプレートエンジンのSlimを使ってみる。

Slim -A Fsst, Lightweight Templating Engine for Ruby

f:id:mathemathiko:20130317152406p:plain


前々から気になってはいたんだけど、

昨日のRuby会議で@hsbtさんも利用してたので早速使ってみることに。


ちなみに環境はこんな感じ。


Gemfileに以下を追加。

gem 'slim', :require => 'slim-rails'
gem "slim-rails", "~> 1.1.0"


いくつかエントリがあったけど、

どれでやっても微妙に上手くいかなかったので自分なりのやり方でやってみた。


もしかしたらRails4.0環境ゆえかもしれない。


h1 I love h1.


とすると、


<h1>I love h1.</h1>


となる。

慣れるまではちょっと苦労しそうだけどもうちょっと試してみようと思います。

Rails4.0導入してみた

まだ正式リリースされていないので4.0.0.beta1です。

➜  ~  gem install rails --version=4.0.0.beta1
Fetching: i18n-0.6.4.gem (100%)
Successfully installed i18n-0.6.4
Fetching: multi_json-1.7.0.gem (100%)
Successfully installed multi_json-1.7.0
Fetching: tzinfo-0.3.37.gem (100%)
Successfully installed tzinfo-0.3.37
Fetching: atomic-1.0.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed atomic-1.0.1
Fetching: thread_safe-0.1.0.gem (100%)
Successfully installed thread_safe-0.1.0
Fetching: activesupport-4.0.0.beta1.gem (100%)
Successfully installed activesupport-4.0.0.beta1
Fetching: builder-3.1.4.gem (100%)
Successfully installed builder-3.1.4
Fetching: rack-1.5.2.gem (100%)
Successfully installed rack-1.5.2
Fetching: rack-test-0.6.2.gem (100%)
Successfully installed rack-test-0.6.2
Fetching: erubis-2.7.0.gem (100%)
Successfully installed erubis-2.7.0
Fetching: actionpack-4.0.0.beta1.gem (100%)
Successfully installed actionpack-4.0.0.beta1
Fetching: activemodel-4.0.0.beta1.gem (100%)
Successfully installed activemodel-4.0.0.beta1
Fetching: arel-4.0.0.beta2.gem (100%)
Successfully installed arel-4.0.0.beta2
Fetching: activerecord-deprecated_finders-0.0.3.gem (100%)
Successfully installed activerecord-deprecated_finders-0.0.3
Fetching: activerecord-4.0.0.beta1.gem (100%)
Successfully installed activerecord-4.0.0.beta1
Fetching: mime-types-1.21.gem (100%)
Successfully installed mime-types-1.21
Fetching: polyglot-0.3.3.gem (100%)
Successfully installed polyglot-0.3.3
Fetching: treetop-1.4.12.gem (100%)
Successfully installed treetop-1.4.12
Fetching: mail-2.5.3.gem (100%)
Successfully installed mail-2.5.3
Fetching: actionmailer-4.0.0.beta1.gem (100%)
Successfully installed actionmailer-4.0.0.beta1
Fetching: thor-0.17.0.gem (100%)
Successfully installed thor-0.17.0
Fetching: rdoc-3.12.2.gem (100%)
rdoc's executable "rdoc" conflicts with /Users/masumi/.rbenv/versions/2.0.0-p0/bin/rdoc
Overwrite the executable? [yN]  y
rdoc's executable "ri" conflicts with /Users/masumi/.rbenv/versions/2.0.0-p0/bin/ri
Overwrite the executable? [yN]  y
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
Successfully installed rdoc-3.12.2
Fetching: railties-4.0.0.beta1.gem (100%)
Successfully installed railties-4.0.0.beta1
Fetching: bundler-1.3.4.gem (100%)
Successfully installed bundler-1.3.4
Fetching: hike-1.2.1.gem (100%)
Successfully installed hike-1.2.1
Fetching: tilt-1.3.5.gem (100%)
Successfully installed tilt-1.3.5
Fetching: sprockets-2.9.0.gem (100%)
Successfully installed sprockets-2.9.0
Fetching: sprockets-rails-2.0.0.rc3.gem (100%)
Successfully installed sprockets-rails-2.0.0.rc3
Fetching: rails-4.0.0.beta1.gem (100%)
Successfully installed rails-4.0.0.beta1
Done installing documentation for i18n, multi_json, tzinfo, atomic, thread_safe, activesupport, builder, rack, rack-test, erubis, actionpack, activemodel, arel, activerecord-deprecated_finders, activerecord, mime-types, polyglot, treetop, mail, actionmailer, thor, rdoc, railties, bundler, hike, tilt, sprockets, sprockets-rails, rails (0 sec).
29 gems installed
➜  ~  rails -v
Rails 4.0.0.beta1



インストール完了。

試しにrails newなう。

➜  ~  rails new test -T
       exist
      create  README.rdoc
      create  Rakefile
      create  config.ru
    conflict  .gitignore
Overwrite /Users/masumi/test/.gitignore? (enter "h" for help) [Ynaqdh] y
       force  .gitignore
      create  Gemfile
      create  app
      create  app/assets/images/rails.png
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/views/layouts/application.html.erb
      create  app/mailers/.keep
      create  app/models/.keep
      create  app/controllers/concerns/.keep
      create  app/models/concerns/.keep
      create  bin
      create  bin/bundle
      create  bin/rails
      create  bin/rake
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
      create  config/environments
      create  config/environments/development.rb
      create  config/environments/production.rb
      create  config/environments/test.rb
      create  config/initializers
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/filter_parameter_logging.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/secret_token.rb
      create  config/initializers/session_store.rb
      create  config/initializers/wrap_parameters.rb
      create  config/locales
      create  config/locales/en.yml
      create  config/boot.rb
      create  config/database.yml
      create  db
      create  db/seeds.rb
      create  lib
      create  lib/tasks
      create  lib/tasks/.keep
      create  lib/assets
      create  lib/assets/.keep
      create  log
      create  log/.keep
      create  public
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/favicon.ico
      create  public/robots.txt
      create  tmp/cache
      create  tmp/cache/assets
      create  vendor/assets/javascripts
      create  vendor/assets/javascripts/.keep
      create  vendor/assets/stylesheets
      create  vendor/assets/stylesheets/.keep
         run  bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Installing rake (10.0.3)
Using i18n (0.6.4)
Installing minitest (4.6.2)
Using multi_json (1.7.0)
Using atomic (1.0.1)
Using thread_safe (0.1.0)
Using tzinfo (0.3.37)
Using activesupport (4.0.0.beta1)
Using builder (3.1.4)
Using erubis (2.7.0)
Using rack (1.5.2)
Using rack-test (0.6.2)
Using actionpack (4.0.0.beta1)
Using mime-types (1.21)
Using polyglot (0.3.3)
Using treetop (1.4.12)
Using mail (2.5.3)
Using actionmailer (4.0.0.beta1)
Using activemodel (4.0.0.beta1)
Using activerecord-deprecated_finders (0.0.3)
Using arel (4.0.0.beta2)
Using activerecord (4.0.0.beta1)
Using bundler (1.3.4)
Installing coffee-script-source (1.6.1)
Installing execjs (1.4.0)
Installing coffee-script (2.2.0)
Using json (1.7.7)
Using rdoc (3.12.2)
Using thor (0.17.0)
Using railties (4.0.0.beta1)
Installing coffee-rails (4.0.0.beta1)
Using hike (1.2.1)
Installing jbuilder (1.0.2)
Installing jquery-rails (2.2.1)
Using tilt (1.3.5)
Using sprockets (2.9.0)
Using sprockets-rails (2.0.0.rc3)
Using rails (4.0.0.beta1)
Installing sass (3.2.7)
Installing sass-rails (4.0.0.beta1)
Installing sqlite3 (1.3.7)
Installing turbolinks (1.0.0)
Installing uglifier (1.3.0)
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

Ruby2.0導入してみた

まずはHomebrewをupdate。

➜  ~  brew update
error: The following untracked working tree files would be overwritten by merge:
	Library/Formula/cmigemo.rb
	Library/Formula/pbrt.rb
Please move or remove them before you can merge.
Aborting
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master



すると予期せぬエラーが。

http://br.0r2.info/2012/11/brew-update-mac.htmlを参考に対応してみる。

➜  ~  cd `brew --prefix`local git:(master) ✗ git fetch origin
 remote: Counting objects: 37, done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 31 (delta 13), reused 27 (delta 10)
Unpacking objects: 100% (31/31), done.
From https://github.com/mxcl/homebrew
   3b16755..3fd8a47  gh-pages   -> origin/gh-pages
   0019042..9e8ffa9  go         -> origin/go
➜  local git:(master) ✗ git reset --hard origin/master
HEAD is now at 9a069ed vim 7.3.865local git:(master) ✗ brew update
Already up-to-date.



ひとまず問題解決。

というわけで早速rbenvのインストール可能なRuyバージョン確認。

➜  ~  rbenv install -l
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
  1.8.7-p352
  1.8.7-p357
  1.8.7-p358
  1.8.7-p370
  1.8.7-p371
  1.9.1-p378
  1.9.2-p180
  1.9.2-p290
  1.9.2-p318
  1.9.2-p320
  1.9.3-dev
  1.9.3-p0
  1.9.3-p125
  1.9.3-p194
  1.9.3-p286
  1.9.3-p327
  1.9.3-p362
  1.9.3-p374
  1.9.3-preview1
  1.9.3-rc1
  2.0.0-dev
  2.0.0-preview1
  2.0.0-preview2
  2.0.0-rc1
  jruby-1.5.6
  jruby-1.6.3
  jruby-1.6.4
  jruby-1.6.5
  jruby-1.6.5.1
  jruby-1.6.6
  jruby-1.6.7
  jruby-1.6.7.2
  jruby-1.6.8
  jruby-1.7.0
  jruby-1.7.0-preview1
  jruby-1.7.0-preview2
  jruby-1.7.0-rc1
  jruby-1.7.0-rc2
  jruby-1.7.1
  jruby-1.7.2
  maglev-1.0.0
  maglev-1.1.0-dev
  rbx-1.2.4
  rbx-2.0.0-dev
  rbx-2.0.0-rc1
  ree-1.8.6-2009.06
  ree-1.8.7-2009.09
  ree-1.8.7-2009.10
  ree-1.8.7-2010.01
  ree-1.8.7-2010.02
  ree-1.8.7-2011.03
  ree-1.8.7-2011.12
  ree-1.8.7-2012.01
  ree-1.8.7-2012.02



2.0.0-p0がないヽ(`Д´)ノ

というわけでrbenvをupgrade。

➜  ~  brew upgrade rbenv
Warning: A newer Command Line Tools for Xcode release is available
You should install the latest version from: http://connect.apple.com
==> Upgrading rbenv
==> Downloading https://github.com/sstephenson/rbenv/tarball/v0.4.0
######################################################################## 100.0%
==> Caveats
To enable shims and autocompletion add to your profile:
  if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

To use Homebrew's directories rather than ~/.rbenv add to your profile:
  export RBENV_ROOT=/usr/local/var/rbenv
==> Summary
 /usr/local/Cellar/rbenv/0.4.0: 31 files, 152K, built in 5 seconds


➜  ~  brew upgrade --HEAD ruby-build
Warning: A newer Command Line Tools for Xcode release is available
You should install the latest version from: http://connect.apple.com
Error: ruby-build-HEAD already installed



嫌な予感…。
ひとまず再度バージョン確認。

➜  ~  ruby-build --definitions
1.8.6-p383
1.8.6-p420
1.8.7-p249
1.8.7-p302
1.8.7-p334
1.8.7-p352
1.8.7-p357
1.8.7-p358
1.8.7-p370
1.8.7-p371
1.9.1-p378
1.9.2-p180
1.9.2-p290
1.9.2-p318
1.9.2-p320
1.9.3-dev
1.9.3-p0
1.9.3-p125
1.9.3-p194
1.9.3-p286
1.9.3-p327
1.9.3-p362
1.9.3-p374
1.9.3-preview1
1.9.3-rc1
2.0.0-dev
2.0.0-preview1
2.0.0-preview2
2.0.0-rc1
jruby-1.5.6
jruby-1.6.3
jruby-1.6.4
jruby-1.6.5
jruby-1.6.5.1
jruby-1.6.6
jruby-1.6.7
jruby-1.6.7.2
jruby-1.6.8
jruby-1.7.0
jruby-1.7.0-preview1
jruby-1.7.0-preview2
jruby-1.7.0-rc1
jruby-1.7.0-rc2
jruby-1.7.1
jruby-1.7.2
maglev-1.0.0
maglev-1.1.0-dev
rbx-1.2.4
rbx-2.0.0-dev
rbx-2.0.0-rc1
ree-1.8.6-2009.06
ree-1.8.7-2009.09
ree-1.8.7-2009.10
ree-1.8.7-2010.01
ree-1.8.7-2010.02
ree-1.8.7-2011.03
ree-1.8.7-2011.12
ree-1.8.7-2012.01
ree-1.8.7-2012.02
➜  ~  rbenv install 2.0.0-p0
ruby-build: definition not found: 2.0.0-p0



ruby-buildの最新版ではruby2.0は開発版しかないとのこと。。。
一度アンインストールしたほうがいいっぽかったので、いったんアンインストール。

➜  ~  brew uninstall ruby-build
Uninstalling /usr/local/Cellar/ruby-build/HEAD...



再度インストール。

➜  ~  brew install --HEAD ruby-build
Warning: A newer Command Line Tools for Xcode release is available
You should install the latest version from: http://connect.apple.com
==> Installing ruby-build dependency: pkg-config
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/pkg-config-0.28.lion.bottle.tar.gz
######################################################################## 100.0%
==> Pouring pkg-config-0.28.lion.bottle.tar.gz
  /usr/local/Cellar/pkg-config/0.28: 10 files, 636K
==> Installing ruby-build
==> Cloning https://github.com/sstephenson/ruby-build.git
Updating /Library/Caches/Homebrew/ruby-build--git
==> ./install.sh
  /usr/local/Cellar/ruby-build/HEAD: 72 files, 320K, built in 8 seconds



再度確認。

➜  ~  ruby-build --definitions
1.8.6-p383
1.8.6-p420
1.8.7-p249
1.8.7-p302
1.8.7-p334
1.8.7-p352
1.8.7-p357
1.8.7-p358
1.8.7-p370
1.8.7-p371
1.9.1-p378
1.9.2-p180
1.9.2-p290
1.9.2-p318
1.9.2-p320
1.9.3-dev
1.9.3-p0
1.9.3-p125
1.9.3-p194
1.9.3-p286
1.9.3-p327
1.9.3-p362
1.9.3-p374
1.9.3-p385
1.9.3-p392
1.9.3-preview1
1.9.3-rc1
2.0.0-dev
2.0.0-p0
2.0.0-preview1
2.0.0-preview2
2.0.0-rc1
2.0.0-rc2
2.1.0-dev
jruby-1.5.6
jruby-1.6.3
jruby-1.6.4
jruby-1.6.5
jruby-1.6.5.1
jruby-1.6.6
jruby-1.6.7
jruby-1.6.7.2
jruby-1.6.8
jruby-1.7.0
jruby-1.7.0-preview1
jruby-1.7.0-preview2
jruby-1.7.0-rc1
jruby-1.7.0-rc2
jruby-1.7.1
jruby-1.7.2
jruby-1.7.3
maglev-1.0.0
maglev-1.1.0-dev
rbx-1.2.4
rbx-2.0.0-dev
rbx-2.0.0-rc1
ree-1.8.6-2009.06
ree-1.8.7-2009.09
ree-1.8.7-2009.10
ree-1.8.7-2010.01
ree-1.8.7-2010.02
ree-1.8.7-2011.03
ree-1.8.7-2011.12
ree-1.8.7-2012.01
ree-1.8.7-2012.02



2.0.0-p0ある\(^o^)/

早速インストール

➜  ~  RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install 2.0.0-p0
title:8: parse error
Downloading ruby-2.0.0-p0.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz
Installing ruby-2.0.0-p0...
Installed ruby-2.0.0-p0 to /Users/masumi/.rbenv/versions/2.0.0-p0

➜  ~  rbenv rehash
➜  ~  rbenv global 2.0.0-p0
➜  ~  ruby -v
ruby 1.9.3p362 (2012-12-25 revision 38607) [x86_64-darwin11.4.0]



あれ…。。。


ここで指定したバージョンは~/.rbenv/versionファイルに書き込まれて保持されるけど、

このバージョンは.rbenv-versionか$RBENV_VERSIONによって上書きされるそう。
(.rbenv-versionか$RBENV_VERSIONのどちらも1.9.3p362になってたorz)

ひとまず以下で対応。

➜  ~  rbenv shell 2.0.0-p0
➜  ~  ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin11.4.0]
➜  ~  rbenv versions
  system
  1.9.3-p362
* 2.0.0-p0 (set by RBENV_VERSION environment variable)



ひとまずインストール完了。

HomebrewでSpiderMonkeyをインストール

今更ながらコンソールでJavaScriptを実行するために。
以前やろうとしたときはたぶんHomebrewに慣れてなかったから挫折したんだろうなー。

➜  ~  brew install spidermonkey
==> Installing spidermonkey dependency: nspr
==> Downloading http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v4.8.8/src/nspr-4.8.8.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/nspr/4.8.8 --enable-strip --enable-optimize --enable-64bit
==> make
==> make install
Warning: Non-executables were installed to "bin".
Installing non-executables to "bin" is bad practice.
The offending files are:
/usr/local/Cellar/nspr/4.8.8/bin/prerr.properties
==> Summary
/usr/local/Cellar/nspr/4.8.8: 99 files, 1.5M, built in 28 seconds
==> Installing spidermonkey
==> Downloading http://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz
######################################################################## 100.0%
==> Downloading http://ftpmirror.gnu.org/autoconf/autoconf-2.13.tar.gz
######################################################################## 100.0%
==> ./configure --program-suffix=213 --prefix=/private/tmp/spidermonkey-bAim/js-1.8.5/ac213
==> make install
==> /private/tmp/spidermonkey-bAim/js-1.8.5/ac213/bin/autoconf213
==> ../js/src/configure --prefix=/usr/local/Cellar/spidermonkey/1.8.5 --enable-readline --enable-threadsafe --with-system-nspr
==> make
==> make install
==> Caveats
This formula installs Spidermonkey 1.8.5.
If you are trying to compile MongoDB from scratch, you will need 1.7.x instead.
==> Summary
/usr/local/Cellar/spidermonkey/1.8.5: 101 files, 11M, built in 4.0 minutes
➜  ~  js
zsh: correct 'js' to 'jps' [nyae]? n
js> print('Hello' + 'World.');
HelloWorld.
js> quit();
➜  ~

東京Ruby会議10に行ってきた


昨日と今日、東京Ruby会議という名の千葉Ruby会議に行ってきました。

東京Ruby会議10 #tkrk10 - Regional RubyKaigi 会期:2013/01/13(日)〜14(祝・月)


自分には上手いことあれこれコメントできないので、
聴講したプレゼンの資料とかまとめておきたいと思います。
よろしかったら参考にしてください。

資料見つけられなかった方はtwitterやブログのリンク先だけ載せておきます。


アップロードされたよ!抜けてるぞコノヤロー(゚Д゚)ノなどあれば遠慮なくしばいてくださいm(_ _)m


皆さん、大雪の中、面白いお話をありがとうございました!


一日目 1/13(日)

井原正博さん(@ihara2525)「Rubyと過ごした半年間 」

ihara2525's blog

@takkanmさん「やさしいRails勉強会@東京のつづけ方」

ガブリ途中下車の旅〜マサイ族の砦〜

生井智司さん(@ainame)「趣味とRubyと私」

趣味とRubyと私 // Speaker Deck

田垣亜季さん(@akiinyo)「プログラミング未経験なんて怖くない!」

プログラミング未経験なんて怖くない!リターンズ // Speaker Deck

蓮尾高志さん(@thso83)「周囲の助けを得ながら楽しく開発するためのアレコレ」

TokyoRubyKaigi10 // Speaker Deck


ここで2階を抜けて4階の「Rubyistのためのデザイン講座」へ。


@machidaさん 「RailsエンジニアのためのTwitter Bootstrapカスタマイズ例」

RailsエンジニアのためのTwitter Bootstrapカスタマイズ例 // Speaker Deck


@ken_c_loさん 「少ない手間と知識で "それなり" に見せる、ズルいデザインテクニック」

zurui-design // Speaker Deck


ここで2階に戻って来ました。


とみたまさひろさん(@tmtms)「本当はこわいエンコーディングの話」

本当はこわいエンコーディングの話 // Speaker Deck


西川茂伸さん(@shishi4tw)「Jenkinsと分散ビルド」

Distributed build with Jenkins // Speaker Deck


前橋孝広さん(@tmeb4)「Rubyによるお手軽分散処理」

Rubyによるお手軽分散処理


瀬宮新さん(@shin_semiya)「できる!1人で作るWebサービス開発。」

TokyoRUbyKaigi_10 // Speaker Deck


鳥井雪さん(@yotii23)「Herokuでつくる50人のためのRailsアプリ」

herokuでつくる 50人のためのRailsアプリ // Speaker Deck

河野誠さん(@ginkouno)「日本酒評価サイトとxDD」

情報…。

@kwappaさん「Padrino in Production」

Padrino in Production // Speaker Deck

ダニーさん(@f96q)「Inside Tripclip」

Inside Tripclip // Speaker Deck


すみません、実はここで帰ってしまいました。
Ruby会議の内容が気になって仕方ないです(´;ω;`)


追記

ささたつさん(@sasata299)が導入部分の資料(?)をUPしてくださったのでご紹介します。黒い…。
https://speakerdeck.com/sasata299/hei-rubyhui-yi



二日目 1/14(月)

Matzさん(@yukihiro_matz)「How to change the world」

録画かと思ったらライブ中継だった。

曽我部崇さん(@rev4t)「軽量Rubyで実現する柔軟なルータ -SEILへの軽量Rubyの組み込み-」

Tokyo ruby kaigi 10 (sogabe)


田籠聡さん(@tagomoris)「Fluentd: The ruby-based middleware across the world」

Fluentd in #tkrk10

本間紀史さん(@norifumi777)「Ruby、RoRでのオフショア開発をハノイで行ってみたら・・・」

無。

Jun Fukayaさん(@fukajun)「東京にきて僕が作ったものについて」

DeckNotes


@yaottiさん「Sole Rubyist's Fight」

Sole Rubyist's Fight // Speaker Deck


前島真一さん (@netwillnet)「ブログのススメ」

ブログのススメ // Speaker Deck


大雪のため、今回はここで終了となってしまいました。
発表はできませんでしたが、すがまさおさんが発表予定だった資料をUPしてくださっているので紹介させていただきます。


すがまさおさん(@sugamasao)「巻き込まれ型人間のボッチ脱出計画」

巻き込まれ型人間のボッチ脱出計画 // Speaker Deck



大雪のため途中で終了となってしまい残念ではありますが、とても楽しかったです。
スタッフのみなさんはやりきれないかもしれませんが、素晴らしい会を開催してくださり感謝の言葉しかありません。


今回は初の参加だったので様子見でしたが、次回以降はもっといろんな方と交流したいな〜と思ってます反省してます。


最後になりますが、発表してくださった皆さん、運営してくださった皆さん、そして何よりもいっしょに行ってくださった@hitoshi_horioさん、どうもありがとうございました!