『How Google Works』読んだ

去年話題になった、Google 会長が Google について書いた本。 去年のうちに一度読んだけど、あらためて読み返してみた。

Google の強さは、『スマートクリエイティブ』と呼ばれる飛びぬけて優秀な人材に、 自由と権限を与えていることに尽きる。 規則で彼らの手足を縛らないことで、予想以上の成果をあげてもらう。 『エンジニアに聞け』という言葉がすべてだと思った。

ただ、魅力的なプロダクトやオフィスや福利厚生を持ち、 AdSence という絶対的な収益源がある Google だからこそ成功した感が強い。 スマートクリエイティブが集まってくる好循環がすでに出来上がっている。

Google と同じことをやろうとしたら、 自由にやらせて成果が出なくても耐えられるだけの体力が企業に必要。 大企業ならその体力があるだろうけど、規則でがんじがらめでは無理。 トップダウンで改革すればいけるかもしれないが。

一方、身動きがとりやすいスタートアップだと、 スマートクリエイティブを引き寄せる武器が、 プロダクトの成長性やストックオプションくらいしかない。 収益が安定していないとスマートクリエイティブは他所に移ってしまうから、 成長し続けなければいけない。

結局、『Google みたいにするのは至難の業』という、 わかっていたけどうむむな感想。 真似しようと思って真似できるものではないね。

How Google Works

How Google Works

『SQL 実践入門』読んだ

SQL実践入門』という名前だけど、 実行計画がバンバン出てくるので、とても初心者向けではない。 SQL と実行計画の解説がたっぷりの、中級者以上向けの本だった。

SQL の実行計画が読めれば、SQL のパフォーマンス問題の大半が解決できそうに思える。 例えば、テーブルに何度もアクセスしていたり、インデックスが使われていなかった、 といったことが原因なら実行計画を見れば判断できる。 また、結合時に TMP 落ちしていて余計なディスク IO が発生している、ということも 実行計画を見て推測できる、かもしれない。

ただ、実行計画は統計情報から作成されるので、統計情報が実際のデータと違っていたら、 実際のデータに即した実行計画は作成されない。実行計画を100%鵜呑みにはできない。 モデルの設計を変更しないと根本的に解決できないようなケースも存在するので、 実行計画が読めれば全て OK というものでもないのがツライところ。

自分の場合、実行計画については無頓着だったので、実行計画を意識して SQL を書くように心がけよう。 本当は実行計画を意識しないで済むのが一番いいし、SQL はそれを理想としているみたいだけど、 理想にまだ現実は追いつけていないから。

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)

博多 元助

無性につけ麺が食べたくなったので、 薬院にある『博多 元助』に行ってみた。 あらかじめ地図で場所を確認したんだけど、通りを間違ってしまい、 たどり着くまで15分くらい彷徨ってしまった・・・。

f:id:griefworker:20150419184059j:plain

着いたら早速、特製つけ麺を注文。麺は中太。 大盛りにするか迷ったけど、昼食が遅かったんで中盛にしておいた。 ツルっとしていてのど越しが良い。

f:id:griefworker:20150419183113j:plain

魚介豚骨のつけ汁は濃厚で旨みたっぷり。 濃すぎるというわけではないので、万人受けしそう。 チャーシューも柔らかくて美味。

f:id:griefworker:20150419183032j:plain

ここ数日つけ麺に飢えていたので、つけ麺分を補給できて満足。 兼虎が夜営業をやめている現在、夜につけ麺を食べる店としては筆頭候補かもしれない。

なにより、テーブルに IH ヒーターが設置してあって、つけ汁を保温できるのが最高。 熱々のまま食べることができて、大変気分が良い。

関連ランキング:ラーメン | 薬院大通駅薬院駅渡辺通駅

ラーメン TAIZO

住吉にあるラーメン TAIZO に行ってみた。 福岡のラーメン本によく登場する有名店なんだけど、 福岡に 9 年住んでいるのに、まだ一度も行ったことがなかったな、そういえば。

f:id:griefworker:20150417183415j:plain

がっつり食べたい気分だったので、 ラーメンとミニチャーハンと餃子のセットを注文した。

ラーメンはもちろん豚骨。 臭みやクドさを感じない飲みやすいスープで、かなり自分好み。

f:id:griefworker:20150417183946j:plain

ミニチャーハンはラーメン屋のチャーハンにしては珍しく、 アッサリした味付けだった。

f:id:griefworker:20150417183915j:plain

餃子は一口サイズ。 博多の一口餃子は食べやすくて良いね。

f:id:griefworker:20150417184210j:plain

このセットで 1000 円というのはコスパ悪くないな。 チャーハンはもっと濃い味付けの方が好みだけど、あっさり味も嫌いじゃないので、 全体としては満足。

関連ランキング:ラーメン | 渡辺通駅薬院駅天神南駅

けごんらーめん

警固にある『けごんらーめん』に行ってみた。 ここは福岡では珍しい味噌ラーメンのお店。

f:id:griefworker:20150408192007j:plain

『けごん味噌らーめん』は豚の背脂が入っていて、 味噌ラーメンにしてはコッテリした味。 結構イケル。

f:id:griefworker:20150408192747j:plain

ご飯ものが欲しかったんで、半ライスと半餃子のセットも注文。

f:id:griefworker:20150408192753j:plain

餃子は皮がもちっとしていて旨かった。

f:id:griefworker:20150408192924j:plain

チャーハンがあれば注文したんだけど、無いものは仕方ない。 ラーメン屋のチャーハン好きなんだよなぁ。

久しぶりに味噌ラーメン食べたけど、やっぱり味噌もいいもんだ。

関連ランキング:ラーメン | 赤坂駅薬院大通駅桜坂駅

LINQ でランキングを作成

LINQ でランキングを作成するサンプルを書いてみた。

using System;
using System.Linq;

namespace LinqRankingSample
{
    class Student
    {
        public string Name { get; set; }
        public int Score { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var students = new Student[]
            {
                new Student()
                {
                    Name = "香川",
                    Score = 70,
                },
                new Student()
                {
                    Name = "本田",
                    Score = 85,
                },
                new Student()
                {
                    Name = "柴崎",
                    Score = 70,
                },
                new Student()
                {
                    Name = "宇佐美",
                    Score = 80,
                },
                new Student()
                {
                    Name = "長友",
                    Score = 60,
                },
                new Student()
                {
                    Name = "岡崎",
                    Score = 65,
                },
            };

            var ranking = from s1 in students
                          let higher = from s2 in students  // 現在の生徒より点数が良い生徒を取得
                                       where s2.Score > s1.Score
                                       select s2
                          select new
                          {
                              s1.Name,
                              s1.Score,
                              Rank = higher.Count() + 1, // 現在の生徒より点数が良い生徒の人数 + 1 が順位
                          } into s3
                          orderby s3.Rank  // 順位で並び替え
                          select s3;

            foreach(var student in ranking)
            {
                Console.WriteLine("{0} 位 {1} {2} 点", student.Rank, student.Name, student.Score);
            }

            Console.ReadLine();
        }
    }
}

f:id:griefworker:20150416215636p:plain

ある生徒の順位は、「その生徒よりも点数が高い生徒の人数 + 1」で求めることができるので、 それを LINQ に落としんだ。

『Yコンビネーター』読んだ

Kindle 版があったので購入してみた。 本書はそのものずばり、著者がY コンビネーターの2011年夏学期に密着取材して書いた本。 それも、やるなら徹底的にだと言わんばかりに。

例えば、応募チームをYコンビネーターが採択するかどうかを決める面接。 面接で交わされた質疑応答だけでなく、面接後のスタッフ間だけの会話まで載っていて、 当時ポール・グレアムがどう評価したのかを本人の言葉で知ることができた。 学期内に何度も行われるミーティングでの、ポール・グレアム達と応募者のやりとりでも、 その光景が容易に思い浮かぶほどの情報量で、Yコンビネーターの雰囲気が文面から伝わってきた。

MongoHQ や Parse、そして Codecademyといった、 自分が知っているスタートアップが出てきたのも嬉しい。 MongoHQ や Parse のチームは優秀で、終始順調だったみたいだ。 読んでいて正直、Y コンビネーターに応募する必要がなかったのではとさえ思った。

ドラマチックだったのは Codecademy。 なんと、投資家へのお披露目『デモ・デー』の一週間前までサービスをローンチできていなかったが、 ローンチしてから数日で急激にユーザーを集めたという、小説家でも書かないような逆転劇。 当事者たちにとって、ものすごいプレッシャーだったことは想像に難くない。

ポール・グレアムが優れたエンジニアだったから、Yコンビネーターは注目を集めたし、 優れたビジネスセンスも持ち合わせていたから、成功したんだろうな。 両方が備わっていたからこそ、シリコンバレーハッカーがアドバイスに耳を傾けるし、アドバイスを求める。 スタートアップに投資するベンチャーキャピタルはこうであって欲しいという理想像だ。

非常に面白かった。 著者の取材力もさることながら、ここまでの密着取材を許可したYコンビネーターの懐の広さも素晴らしい。 起業を目指す人は読んで損は無い。 むしろ「○○市を日本のシリコンバレーに」なんて考えている人にこそ読んで欲しい。 Yコンビネーターみたいなベンチャーキャピタル、 いや、ポール・グレアムみたいな存在が必要だと思うはず。

Yコンビネーター

Yコンビネーター