L.A.を走っていて考えた事

いつだったか忘れたが、ビジネス雑誌に、ハイブリッドカーは比較的裕福な人しか買わないって書いてあった、多分同じような車だと、ハイブリッドカーの方が7千ドル(70万円)程高いから。ホンダのシビックのセダンだと1万5千ドルくらいから、ハイブリッドだと2万2千ドルくらいから。

以前住んでいたニューイングランド(ボストン周辺)、今住んでいる北カリフォルニア(サンフランシスコ・シリコンバレー周辺)では、ハイブリッドカーを良く見かける。10台に1台くらいの割合?アメリカでも環境問題を真剣に考えている人が増えてきたのだなーと単純に考えていた。もしかしら、温室効果ガス排出量削減も何とかなるのでは?と思い込んでいた。

しかし今回のL.A.への旅ではほとんどハイブリッドカーを見かけなかった。L.A.には裕福な人も沢山住んでいるが、そうでない人たちが大多数なのであろう。そういう僕も10年前は15年落ちのNissan Stanzaに乗っていた、廃棄ガスを撒き散らしていたに違いない。南アメリカからの移民が多いL.A.でハイブリッドカーを買える人が多いとは思えない。

廃棄ガス規制を全米で実地するのは大変難しそうだ。温室効果ガスの地球に及ぼす悪影響を教育するだけでなく、排気ガスの排出量の少ない車の価格を今以上に下げる必要がある。エンジンとモーターの両方を積んでいる車の値段が高くなるのは単純に考えても当たり前なので、ハイブリッドカーの価格が急激に下がるとは想像できない。価格をさげるためにのイノベーションが必要である。

自動車会社のエンジニアのみなさんがんばってイノベーションして下さい。よろしくお願いします。

もう一つ、大型トラックのディーゼルエンジンなんとかならないのかな?

約9年ぶりのL.A.

先週末は月曜日が娘の誕生日&President Dayという事もあり、Anaheim (Disneyland) とL.A.に車で行って来た。Route 5を南下して行ったのだが遠い遠い。映画の中でアメリカの国道(周りに何もない道)を車が走っているシーンがたまにあるが、そんな状態でした。

L.A.は自分が10年前にアメリカに引っ越して来た時に住んだ最初の場所。実際にはL.A.のダウンタウンからフリーウエイで南に30分くらいの所にあるトーランスという町。約1年ちょっとそこに住んだ。東海岸に引っ越してからは、西海岸に来る機会は殆どなかったので、今回の旅は約9年ぶりくらいにL.A.を訪れる機会となった。Disneylandも9年ぶりくらいに行ったのだが、あんまり変わってなかったし、サンタ・モニカの町もあまり変わっていない様に見えた。あまり感傷に浸る事もなく、昔ここのコーヒー屋さんに来たなーとか、この道の名前覚えてるとか、ちょっと思い出したりしたくらいだった。このエントリーで、昔話でも書こうかと思ったが、あまり思い出せない。それくらい9、10年ってのは長いんだなー。

UI=おもてなし

先日のエントリーの中であげた、3つのキーワード「人を幸せにする」、「感情を考慮する」、「美学にこだわる」を一言の日本語で表現すると、中島さんが普段から言っている「おもてなし」だなと思った。昔から言われている事かもしれないが、ユーザーの立場に立ってユーザーインターフェースを作る事が大事である。

「素晴らしいソフトウェアを作るということ」 by Joel

すばらしいソフトを作るには、カリスマが講演 <- ものづくりをしている人は読んだらいいと思う。

プレゼンテーションをしているJoelは「Joel on Software」のブロガーです。

Joelはプレゼンの中で次にあげる3つが重要だと言っています。

  • 人を幸せにする
  • 感情を考慮する
  • 美学にこだわる

要するにソフトウエア(ウエブを含む)はユーザー・インターフェースが重要だと言う事ですね。デザインだけでなく、ユーザービリティが重要なんですね。

Joi ItoさんもUIが悪くて成功できないウエブの会社はたくさんあるって言ってました。

Hackers and Painters: バベルの塔

Hackers and Painters やっと半分程読み終わった。表紙になっている バベルの塔 が何を言いたいのかがやっと分った。Paul Grahamはプログラマーはみんな好き勝手なプログラム言語を使った方が良いよって言いたいらしい。もしすべてのプログラマーが同じ言語を使っていたら多分それは悪い言語だな。ちなみにPaul GrahamはLISP使いです。

Wikipedia: バベルの塔

Gパズル

ランチタイムにパズルの話題をする事がたまにある。今日まで知らなかったが、Googleでは下記のパズルを聞くらしい。有名すぎてもう使われていないと思うが。

“How do you determine good ways of sorting one million 32-bit integers in two megabytes of RAM?”

CEOのEric Schmidtは大統領候補にこのパズルを聞いたらしい。参照

ランチ中の僕の答え:ソートの問題には反射的にQuickSortと答えてしまう。ComplexityはO(n log n)だし、Memory UsageはO(1)。

友人:友人いわく、これはEfficientではない。Bitを使うらしいよ。1,000,000のintegerをパースして、1が見つかったら、2Mbytesのメモリーの1つ目のBitをたてる、99が見つかったら2Mbytesのメモリーの99番目のBitをたてる、それをone million times繰り返えせば、O(n)でソートできると言っていた。

家に帰って考えてみた(確かめてみた):32-bitのIntegerだから、単純化して整数のみを考えるとIntegerの値は0から2の32乗の値(4,294,967,296) 、使えるメモリーは 2Mbytesだからビットで考えると2*1024*1024*8 = 16,777,216 bits。よって友人が言っていた方法では16,777,216より大きい値が含まれている場合は対応できない。

現状:多分何かトリックがあるのだと思う。考案中。

パズルを解いてみた

vol.6 今回は、日本からシリコンバレーにやってきて働いている石塚さんの話(2/2)の中で紹介されている、インタビューに用いられるパズル・クエッションを解いてみた。近い内に必要になるかも知れないので。必要にならないのに越した事はないが。

『競馬トラックが一つあり、競走馬が25匹いる。一度に走れるのは5匹まで。タイムは計測できないとして、一番早い5匹を選ぶには何セット走らせる必要があるか』

僕の答え: 10レース

セットアップ:競走馬を5頭づつ5つのグループに分ける。
レース1-5:グループ毎に走らせ、グループ内で順位をつける。
レース6:各グループで一番早い馬を走らせる。これで、1番早い馬が見つかる。
レース7:レース6で一番早い馬がいたグループの中でその次に早い馬とレース6で一番になれなかった残り4頭を走らせる。これで2番目に早い馬が見つかる。
レース8:レース7で一番早い馬がいたグループの中でその次に早い馬とレース7で一番になれなかった残り4頭を走らせる。これで3番目に早い馬が見つかる。
レース9:レース8で一番早い馬がいたグループの中でその次に早い馬とレース8で一番になれなかった残り4頭を走らせる。これで4番目に早い馬が見つかる。
レース10:レース9で一番早い馬がいたグループの中でその次に早い馬とレース9で一番になれなかった残り4頭を走らせる。これで5番目に早い馬が見つかる。

だれか僕の答えがあっているか教えて下さい。

PHPの中身はC言語

僕はPHPは書かないが(書けないが)、PHPのセミナーに参加してきた。セミナーでは、PHPのデバックの仕方などを教えてくれた。PHPはC言語で書かれているので、メモリーリークを見つけるにはオープンソースのValgrindを使えと言っていた。PHPは初心者にやさしいと言われているが、PHPのデバッキングなどは、初心者には優しくなさそう。今日も、このセミナーのおかげで楽しい1日となりました。

職業プログラマーからの脱却

ハッカー hacker = (ハッカー) 職業プログラマー;

上記の説明: 職業プログラマーからハッカーへタイプキャスト。

正直に言うと自分は職業プログラマー(デベロッパー/エンジニア)である。ある人に言わせると、職業プログラマーはC/C++又はJavaを使いPalo Altoより南の会社で働いている。自分の中での職業プログラマーの定義は、人(雇い主)の為にコードを書くプログラマー。

職業プログラマーから脱却して、どうなりたいかと言うと、次の2つを満たしたものを作っているプログラマー(デベロッパー/エンジニア)。

  • 作りたいものを作る。(「やりたい事をやる」、「好きな事をする」、と同じ意味合い)
  • 新規性のあるものを作る。(斬新な物でなくてよい。小さなイノベーションの積み重ねが、大きなイノベーションへとつながる考えるから)

上記の2つを満たしているプログラマーの事をハッカーと呼んでも良いのではと思っている。

注)悪い意味でのハッカーではありません。

Machine Learningなど

今日の昼間はMachine Learningワークショップに参加してきた。自分はコンピューター・サイエンス・メジャーではないので、Data Miningとか、Machine Learningなど、複雑な数式を使って説明される分野が苦手である。と言うか、僕には今日まで関係ない分野であった。しかし、現在の仕事を通し、ウエブ・サービスの質を改善する為には、Machine LearningやData Miningを駆使する必要がある事を学んだ。そう言う事に気付くと、面白いもので、今まで自分には関係ないと思っていたものが、急に自分にとって面白い分野となるのである。だから、友人が進めてくれた、「Programming Collective Intelligence: Building Smart Web 2.0 Applications」も、即購入してしまった。今までの自分だったら読もうと思わなかったと思う。興味を持っている内になんとかモノにしたい。