l'essentiel est invisible pour les yeux

Saturday, February 24, 2007

シリコンバレーが得た教訓

via (2/13)シリコンバレーのいつか来た道(安藤茂彌氏)

  • 手持ちの現金に常に目を光らす企業たれ

  • ベンチャーキャピタルから受けた投資資金は、自社のリスクを軽減するために使え

  • 流行りものに興じる人種とは距離を置け

  • 金を払ってくれる顧客がいて、はじめて事業は成り立つ

  • デザインの専門家を呼び込め

  • 売り込むのではなく、惹きつけろ

  • 金のために働くな、情熱ために働け

どれも自分のクルドに書き留めておきたい言葉です。
私も25歳までにアメリカに渡りたいと思う。

Wednesday, February 21, 2007

[本] 知的ストレッチ入門と知識への冒涜



知的ストレッチ入門」という魅力的なタイトルにとても期待を寄せていたのだが、話題は分散し何か1つに対して焦点を絞り論理が展開されるわけではなく、ビジネス・中国の労働力・メモや仕事術的なLife Hacks・本棚の整理・恋愛・うその見破り方・ブログ・など話が発散している。重要な事はすべて据え置き(「まぁそうなるものだと思ってください。」的な言い回し)となっている。




依頼者にとっては、少なくとも自分が依頼したものに、相手が十分に答えてくれたかどうかどうかが全てなのであって、例えば私のいる文筆業界の場合、評価件は依頼しお金を出してくれた出版社とお金を出して買ってくれる読者にあるということです。

と著者が述べているので、お金を払い本書を購入した評価件を持つ一人として書くことにした。著者が何万冊もの本を所持し、何万冊の本のなかから目的のものを2秒で探し出す事が可能で、本書の執筆のために何十冊も本を読んだかもしれないが、本書は文としてのまとまりに欠け話が発散している。余計な話があちらこちらに存在し、著者の伝えたい主旨が読み取れない。読み終わった際に私が張ったポストイットの数は、おすすめの本棚の商品名が書かれたページ一枚だけだった。

具体的に気になった箇所を挙げる。

択一で悩む無駄という節では、意思決定において即決できない人間が無能の烙印が押される正当な根拠を持っていると結論付け、意思決定においての速度こそが重要であるとしている。

この本文を見て、著者は何度も重大な意思決定に関わった経験がある上でこういった論理に至ったのだろうか?と思った。重大な意思決定の経験がないのではないだろうか?

私は重大な影響を及ぼす意思決定の経験は無い。
しかし、重大な意思決定においてどれだけ熟考されるべきかぐらいは理解しているつもりである。決してまめな人間でなかったGMのアルフレッド P. スローンが人事に対しての自分の決定を、何度も何度も切り捨てそれでも最後まで残った決定のみを人事においての決定とした話は有名である。

もちろんケースバイケースである。
即決する事のみに価値がある決定などファミレスでのメニューの決定ぐらいではないだろうか。(本書にファミレスの例が出てくるので。)少なくとも、高級な店なら「どのメニューがおいしいか?」「この料理にはどのワインがあるか?」十分に悩んで決定する。折角お金を払っていい店に来て安易な即決で満足できないなど馬鹿ばかしい。

フィニッシュの回数という節にはこんな記述がある。


小説を書き始めることは、誰にでもできます。でも、出だしだけ面白いモノを書くことは、体験と少しの文才があれば、確実にできることだけれど、フィニッシュしなければ作品にならないので意味がありません。例え30ページでもいいから、たくさん小説を完成させた人は、きっと小説家になっていけると思います。どんなにつまらなくても、最後に「完」と書けるものをどれだけやったか。それだけが、蓄積される体験、仕事の正体なのではないでしょうか?

この記述を読んだ時に納得できた。
新聞社のメディアのサイトを「深さがない」と批判しながら、全く深さの無い本に仕上がっている。浅く広く集めた内容をまとめ「完」と書いたのだと(少なくとも)私は思った。

Life Hacks的な内容については、オススメの本棚や手帳が商品名で紹介されているのでそれらは参考になるかもしれない。しかし、何万冊もの本をあいうえお順に並べてダンボールにしまうとかそういった内容は著者の作家という職業柄的内容が強いので、私にはほとんど参考にならなかった。メモの使い方についても、GoogleでLife Hacksとググッた方がGTD実践のためのより良い方法が見つかるのではないだろうか。

幅では無く、1つの分野で知識の権威として深いアウトプットをしてきた権威との圧倒的な知識量の差を感じた。


カバンにこだわる
少し話を変えます。カバンにこだわることの素晴らしさの話が本書に出てくるのですが、本書中ではオーダーメイドで著者が欲しい機能全てをつけたカバンにとても満足された様子が書かれていました。

しかし、オーダーメイドでカバンを0から作るというのも面倒な話なので、
私は「Felisiの8637/2」のワインレッドを使用していますが、A4サイズのThinkpadに本2冊・PDFのPaper Book1冊・USBカード・万能ナイフと収納量は十分。そして、何よりもデザインがカッコイイのでとても気に入ってます。Felisiのカバンのナイロンと皮のコラボレーションは他に無いオサレ感があります。写真は左上です。

Monday, February 19, 2007

ルイス・バラガンの世界

ルイス・バラガン邸と仕事場(メキシコ)

世界遺産に指定されるバラガン自邸に心を打たれた。
色・自然・音。全ての絶妙な調和に自分がその空間にいるような気持ちになった。
一面バラガンピンクでとても綺麗な部屋があるかと思えば、水や木といった自然。
水の音がバラガン邸の静けさの中に音楽を奏でるというのが素敵だった。

生涯独身だったルイス・バラガンの言葉がある。

孤独とともにあるときのみ、人は自分自身を見いだすことができます。孤独とはよき友のことです。私の建築は、孤独を恐れたり避けたりする人のためのものではありません。
(ルイス バラガン / プリツカー賞受賞講演から)


下記の写真集が値段も高すぎずお手ごろ。
「この空間に自分がいたら・・・」と考えるだけで楽しくなりそうな一冊。

[本] Best of Ruby Quizで知識活用能力を高めよう

If you stop and think about it, programming knowledge is nearly useless
by itself. What exactly are you going to create with all that expert
programming skill, if it’s all you have? The world needs only so many
text editors.
Best of Ruby Quizはこのようなイントロダクションから始まる。
Ruby Quizを一冊にまとめたこの本は頭の体操が大好きなプログラマにとって十分楽しめる一冊である。

Best of Ruby Quizの第一問目"MadLibs"を解いてみる。

次のような文章が与えられた時に、丸括弧内を質問してその答えで丸括弧内を置換し出力するという問題である。また、質問の答えは問題文中で再利用できる。:で区切られた場合には、コロン内のキーワードを全て質問し、:以前のキーワードの答えで置換し出力する。

Our favorite language is ((gem:a gemstone)). We think ((gem)) is
better than ((a gemstone)).


ユーザインタフェースの指定は特になく自由である。
WEBインタフェースがRuby Quizのサイトで提供されている。

Ruby Quiz Madlibs

ユーザインタフェースとしてコマンドラインインタフェースを使用して問題を解いてみた。

madlibs.rb

#!/usr/bin/env ruby

class MadLibs
attr_reader :template
attr_accessor :questions

def initialize(template)
@template = template
@questions = template.scan(/\(\(([^)]*?)\)\)/).flatten.inject({}) do |ret, val|
if val.index(':').nil?
ret[val] = ""
else
val.split(':').each {|q| ret[q] = ""}
end
ret
end
end

def run
@questions.each do |key, ans|
print "Give me #{key}. < "
@questions[key] = STDIN.gets.chop
@template.gsub!(%r{\(\((#{key})\)\)|\(\((#{key}:[^\)]*?)\)\)}, @questions[key])
end
print @template
end
end
if $0 == __FILE__
if ARGV[0].nil?
puts "Usage: ./madlibs.rb <template file>"
exit 1
end
template = File.open(ARGV[0], 'r').read
MadLibs.new(template).run
end


template.txt

Our favorite language is ((gem:a gemstone)). We think ((gem)) is better than ((a gemstone)).



実行結果

% ./madlibs.rb template.txt
Give me a gemstone. < Perl
Give me gem. < Ruby
Our favorite language is Ruby. We think Ruby is better than Perl.
%


高度な知識をたくさん持つプログラマ。
学習し得た知識も活用出来なければただの死知識となる。

エレガントに解く。
パフォーマンス重視で解く。
Cの拡張ライブラリで解く。
1つの問題でも解き方は自由です。

日常から知識の活用能力を磨いておく事で、現実の解決困難な問題に遭遇しても筋道を立て考える事ができます。また、解決困難な問題にはひらめきも必要です。
一日一問。Best Of Ruby Quizはどうですか?

Sunday, February 18, 2007

How Steve Jobs Played Hardball In iPhone Birth

How Steve Jobs Played Hardball In iPhone Birth

※ユーザ登録が必要です。

Motorola ROKRでの失敗から先日のMacworldでのiPhone発表までの軌跡です。
Steve JobsのAppleらしさへの真剣勝負にいつも魅了されてしまいます。

関連記事とあわせてあとでよむ。

Jobs played hardball on iPhone? No, he just marketed it properly
How Steve Jobs Played Hardball In iPhone Birth - Wall Street Journal (subscription)


しかし、Appleとの交渉は過酷ですね。

Saturday, February 17, 2007

[Cell] アセンブリレベルでのSPUプログラミングチューニング::コンパイル編

CELLで本格的にプログラムを書くための低レイアに関する知識が全く無いことに気づいたため、1ヶ月半ほど低レイア関連の勉強をしていました。久しぶりのCELLに関するエントリです。

SPUプログラミングのチューニングはCELLプログラミングにおいて大変重要です。
そのためには、SPUのアーキテクチャ・アセンブリ・ABIを知らないと何もできません。
まずは前提知識となる参考資料のリンク集です。


とりあえず、あとでよむ。

このエントリでは、
  1. 簡単なSPUプログラムを作成する。
  2. アセンブリコードの作成
  3. 奇数/偶数パイプラインでの命令2重実行に関するアセンブリレベルでの静的プロファイリング
  4. アセンブリから実行可能オブジェクトファイルの作成
を扱う。

基本だけどアセンブリレベルでのチューニング&コンパイルができるようになれば、低いレベルでのチューニングが可能になる。


まず、SPUプログラムhello.cを作成する。

hello.c

#include <stdio.h>
#include <stdint.h>
#include <profile.h>

int main(uint64_t speid __attribute__((unused)), uint64_t argp __attribute__((unused))) {
prof_cp0();
prof_cp30();
printf("Hello, world from SPU.\n");
prof_cp31();
return 0;
}


Makefile

PROGRAM_spu = hello
LIBRARY_embed = hello.a
include /opt/ibm/cell-sdk/prototype/make.footer


C言語のソースファイルからアセンブリコードを生成する
CBE SDK付属のMakefileを使用して、アセンブリコードを生成するには次のように実行する。SPU_TIMING=1は必須ではないが、設定することで奇数/偶数パイプラインでのCPUサイクル単位での命令実行の静的プロファイリング結果を得ることができる。ファイル名は#{プログラム名}.s.timmingとなる。

% SPU_TIMING=1 make hello.s
/opt/cell/toolchain-3.3/bin/spu-gcc -W -Wall -Winline -Wno-main -I. -I /opt/ibm/cell-sdk/prototype/sysroot/usr/spu/include -include spu_intrinsics.h -O3 -S hello.c ; /opt/ibm/cell-sdk/prototype/bin/spu_timing -running-count hello.s
%


hello.s : 作成されたアセンブリ
SPUは3アドレス方式のアーキテクチャです。$0~$127は128bit幅のレジスタファイルを参照します。

.file "hello.c"
.section .rodata.str1.16,"aMS",@progbits,1
.align 4
.LC0:
.string "Hello, world from SPU."
.text
.align 3
.global main
.type main, @function
main:
hbra .L3,puts
stqd $lr,16($sp)
stqd $sp,-32($sp)
ai $sp,$sp,-32
and $0,$0,$0; lnop
and $30,$30,$30; lnop
ila $3,.LC0
.L3:
brsl $lr,puts
and $31,$31,$31; lnop
ai $sp,$sp,32
fsmbi $3,0
lqd $lr,16($sp)
bi $lr
.size main, .-main
.ident "GCC: (GNU) 4.1.1"


CPUサイクル単位でのパイプラインごとの命令実行を示すspu_timingファイル。
[番号][パイプライン] [クロック] [オペランド] [オペコード]の順に並んでいて、0が偶数パイプ、1が奇数パイプラインを表す。Dとついている場合は、偶数パイプ命令と奇数パイプ命令が2命令同時に実行されていることを表している。偶数/奇数パイプで2命令同時することで性能が向上する。

.file "hello.c"
.section .rodata.str1.16,"aMS",@progbits,1
.align 4
.LC0:
.string "Hello, world from SPU."
.text
.align 3
.global main
.type main, @function
main:
000000 1 012345 hbra .L3,puts
000001 1 123456 stqd $lr,16($sp)
000002 1 234567 stqd $sp,-32($sp)
000003 0 34 ai $sp,$sp,-32
000004 0 45 and $0,$0,$0; lnop
000005 0 56 and $30,$30,$30; lnop
000006 0D 67 ila $3,.LC0
.L3:
000006 1D 6789 brsl $lr,puts
000007 0 78 and $31,$31,$31; lnop
000008 0 89 ai $sp,$sp,32
000009 1 9012 fsmbi $3,0
000010 1 012345 lqd $lr,16($sp)
000016 1 -----6789 bi $lr
.size main, .-main
.ident "GCC: (GNU) 4.1.1"


上記の静的プロファイリング結果を元に、アセンブリプログラム(hello.s)に変更を加えた際にはアセンブリプログラムからオブジェクトコードを生成する必要がある。

そこでアセンブリコードから目的のオブジェクトファイルを生成するためのシェルスクリプトを作成する。このファイルはmakeコマンドの実行結果を貼り付けソースファイル名を「ソースファイル.s」に変更する。

※CBE SDKで用意されているMakefileを使用してアセンブリからオブジェクトコードを生成するもっとエレガントな方法があるかもしれません。
make

% cat > make-obj-file
/opt/cell/toolchain-3.3/bin/spu-gcc -W -Wall -Winline -Wno-main -I. -I /opt/ibm/cell-sdk/prototype/sysroot/usr/spu/include -include spu_intrinsics.h -O3 -c hello.s
/opt/cell/toolchain-3.3/bin/spu-gcc -o hello hello.o -Wl,-N
/opt/cell/toolchain-3.3/bin/ppu-embedspu -m32 hello hello hello-embed.o
/opt/cell/toolchain-3.3/bin/ppu-ar -qcs hello.a hello-embed.o
% chmod +x make-obj-file

コンパイル

% ./make-obj-file


SPUは演算実行パイプラインを2本持っています。
それぞれの役割は次の通りです。

偶数パイプ
  • 論理演算
  • 整数加減算
  • 浮動小数点演算
  • 整数乗算
  • SIMDシフト
  • SIMDロテート


奇数パイプ
  • ロード・ストア
  • チャネル命令
  • 128ビットシフト
  • 128ビットロテート
  • シャッフル演算
  • 分岐命令


と、ここから実際にアセンブリレベルでチューニングを開始するには、SPUのアーキテクチャ・アセンブリ言語・ABIに関する理解が必須です。CELLは本当に技術者心をくすぐってくれます。

再掲。参考リンク集です。
プリントアウトして手元においておくのがよさそうです。
4つ目はMITでのCELLプログラミングに関する講義資料です。



Thursday, February 15, 2007

DoCoMo N703iμは買い?

2月20日に発売するDoCoMoのN703iμのデザインが写真を見る限りでは、カッコイイ。
厚さ11.4mm, 重さ90g 世界最薄です。

実物を見てみないとわかりませんが、よければ買うかも。
http://www.nttdocomo.co.jp/product/foma/703i/n703imu/index.html

Tuesday, February 13, 2007

[本] デザイニング・インタフェースが在庫切れで高騰?

ソフトウェア開発の現場では、デザインパターン名を良く耳にします。
ユーザインタフェースについてのブレストは、話が発散しやすいのでユーザインタフェースにおけるデザインパターンがあれば想定するユーザにとって必要とされるUIに集中してブレストできるかもしれません。

先日デザイニング・インタフェースを購入したのですが、在庫切れの影響か価格が高騰しています。
どんな時にどのパターンを用いればよいか?UIのリファレンスとしても使えるのでオススメです。デザイナー・開発者両方に。イノベーションの達人の人類学者・実験者・経験デザイナーの章と合わせて読めば、デザインに対しての考え方に刺激をうけます。

ユーザインタフェースへのこだわりと言えばApple.Inc.
その魂は多くの人々の心をひきつけます。次の記事も参考に。

Appleに学ぶUIの部品化とガイドライン

PS
via isamuさんのコメント
オライリーには在庫があるようです。
購入はそちらで。確かに8000円はひどい。


[雑記] 技術は気合?

私はドリコムで3年間プログラミングのいろはを教わり、学生ベンチャーが上場企業へと変化していくところを肌で感じさせていただいた。本当にお世話になった。

第三四半期の決算発表の影響もありS安となり某掲示板での議論もヒートアップしている。
上場前大株主であった主要取引先の第三者割り当てにより約2億の売り上げで上場を果たし、ロックアップ解除後全株売却による利益を受け取った大株主の企業。私には経営学についての知識が無いのでトップマネジメントのIPOの意思決定について正しいか?正しくないか?を理論的に考える事はできない。

ただ技術者として次の記事中の二点がどうしても納得がいかない。

足りないもの

  • 最高技術責任者の「技術者は気合だ」とも解釈できる発言
  • 技術者において気合が、一人ひとりをスーパーサイヤ人にすると結論付けられている点

まず、技術は気合ではない。
技術者のモチベーションは気合で高まるものではない。
本当に最高技術責任者の発言だろうか?と疑いたくなる。

この記事では「技術者の仕事の質を何と定義するか?」について具体的に書かれていない。
最も売り上げ構成比が高いのがブログ事業である事から、カスタマイズや導入などの能率を仕事の質と定義するなら、生産性が上がらない事は個人の責任ではなく、知識労働者である技術者のマネージメントに根本的な問題があるだろう。それらはトップマネジメントの仕事である。能率や生産性を技術者の仕事の質と定義すれば、技術者一人一人に"スーパーサイヤ人のような役割"(ブログ参照)を期待する事は矛盾している。

人を魅了する新サービスを開発する能力を技術者の質と定義するなら、「技術者に足りないのは気合」と最高技術責任者が語る会社に自分が作り出すサービスに強烈に情熱や愛情を注ぎ込む優秀な技術者が集まるだろうか?

技術者は気合により突き動かされる人種ではない。
自らが生み出すサービスへの情熱や愛情、そして社会的認知される事が技術者をつきうごかす。
本物の技術者が持つ物は気合ではなく、魂である。

技術者に気合を求め、"ヒーロー"(ブログ参照)である事を求める。
この前提で集まる優秀な技術者の顔がどうしても見えてこない。
本当に高い技術力をコア・コンピタンスとするなら考え方を改める必要があるだろう。


もう一点。
もう学生ベンチャーではないので、"スーパーサイヤ人"とか"ヒーロー"という単語ではなくそれ相応の用語を用いるべきだと思う。他の事でCEOが目立ってしまうからこそ、そういった発言一つ一つに注意を向け適切な言葉を用いる上場企業としての自覚が必要ではないだろうか。


追記
「どうも会社も100人を超え、大きくなってくると昔のようにスーパーサイヤ人のような勢いですごい結果を出す人の割合が相対的に減ってきた気がする。」と言う言葉をみて、テクノロジストの条件第6章のベンチャーのマネジメント(この章はイノベーションと起業家精神より抜粋)が頭によぎった。社員数約130人、気合などで企業の成長をマネジメントできる人数の限界を超えてしまった結果であろう。

Monday, February 12, 2007

光と影の2枚組みFPMB

2001年~2006年までの21世紀の全てを詰め込んだという、FPMのベストアルバムFPMBがとてもイイ。FPMの光のGOLD SIDEと影のBLACK SIDEの二枚組み。とっても心地よい音でカッコよくセクシー。この二枚のアルバム計30曲で、当分おなかいっぱいです。

iTunes Storeで買うなんて損です。是非、是非CDで。

素朴な疑問::人は企業のどこに強烈なパッションを感じるのか?

大学は就職活動シーズン中である。

私の周りの範囲内だけでの見解だが、文系の学位を持つ人のほうが理系の学位を持つ人に比べて、自分がやりたい仕事について考え就職を決定しているように思える。理系の学位を持つ周りの知人で言えば、内定を貰えたところに就職を決定している率が高い。(理系学生も修士や博士になるともう少し結果が異なるかもしれない。)

人は企業のどこにパッションを感じるのか?

学生の場合、おそらく第1位は給与ではなく企業のカルチャーだろう。
「自由を追求する風土」や「トップマネジメントへの距離感の無さ」などはベンチャーへの就職を決定する大きな要因ではないだろうか。

そして企業側からすれば人を惹きつける為の自社のブランディングを行うことが今後ますます重要となる。優秀な頭脳はどこでも枯渇しており、どこの企業も喉から手が出るぐらい欲しいからだ。しかも、これがフラット化の影響により国内レベルでなくグローバルなレベルで進行する。Googleは世界中から優秀な頭脳を惹きつけるからこそGoogleたる由縁である。

例えば今就職活動をしていて「あなたは企業に何を求めますか?」という面接官の問いについて答えるとすれば次のようになる。
「自分よりも優秀な頭脳が集まる環境です。」

これは面接官に「俺には知識があるんだぜ!」と言っているわけではなく、膨大な知識が存在する現在において自分がどれだけ無知であるかと言うことを自覚しているからこそ優秀な頭脳と共に働けることを望んでいますと言いいたいのである。哲学者ソクラテスの言葉、無知の知とはよく言ったものであるなと感心する。(私は無知の知に気づくまで4年もかかった。)


就職に関連した楽しそうな記事を見つけた。

内定者インタビュー

友達の就職話を聞いたときにいつも思うのだが、私には同期と呼べる人たちがいない。
年齢が近い人もあまりいない。内定者飲み会の話などを聞くと時々羨ましくなる。
入社後待ち受けているのは新人研修や合宿ではなく、プロジェクトマネージャーが用意してくれる大量の仕事と期待というプレッシャーである。

1年前なら上記インタビューのような記事で企業を選択したかもしれない。

しかし、
現在なら(比較が極端だが・・)MITやIITの出身者といった世界有数の頭脳が集まる職場があればそちらに強烈に惹かれてしまう。かわいい女の子と一緒に働ける職場よりも、IIT出身のインド人女性の知識を共有できるほうが楽しいと感じる。同年代の友達から「変わってる」と言われるのも仕方が無い。。

自由は規律の土台に上になりたつ。
土台を形成するのは優秀な知識労働者の自己マネージメントである。
21世紀を創造する企業は、グローバルなレベルで優秀な人材のパッションを強烈に刺激し筋肉質な組織を作らなければならない。

と書いていて、UIEJで「金銭のためだけに働いているわけではない!」というある人の言葉を思い出した。組織の技術者魂と企業としての利益のバランスを保つためにも、魂を持つ天才技術者集団だけでなく、経験豊富でプロフェッショナルなトップマネジメントの存在が絶対条件となる。「ここで、なぜ日本では外部から雇うCEOのマーケットが無いのだろう?」とまた疑問が1つ出たが、教えてください社長。

Sunday, February 11, 2007

GoogleによるBlackboxな支配を許さないユーザの力

via グーグルを超える中国の検索サービス「百度」、その強さの秘密とは

中国で62%を誇る検索エンジンBaidu. Googleと違いコミュニティ機能が充実・ユーザが作り上げる辞書・Q&Aサービス等の集合体のようである。2007年には日本市場に参加する考えもあるとの事。

さて、どんなサイトかと覗けばGoogleそっくりのインタフェースに思わず笑ってしまった。さすが中国である。しかし莫大な人口を持つ中国のユーザによるアップロードの力を過小評価すればGoogleとて笑ってはいられない。

NHK“グーグル革命”の衝撃 あなたの人生を“検索”が変えるでもGoogleの検索結果により莫大な損害を被った会社が取り上げられていた。SEO会社はGoogleがPageRankをBlackboxにしてくれるのを喜ぶが、Googleの独占体制にいい気がしない人は少なくないはずである。

卒論でユーザのアップローディングにより、検索エンジンのランキングを作っていけないだろうか?というテーマについて一部考えたのだが、21世紀急増する人口の力を活用し、インターネットにおけるランキングやアクセスパスもアップローディングにより決定されるような「現実の世界にある人間の暖かみのようなもの」を旨くアルゴリズム化しWWWの世界に適用することができれば、"Google政府"が考える、全てを(Googleの)プログラムが決定する無機質なWWWの世界の牙城を崩すことができるかもしれない。

と考えてみる。

Thursday, February 08, 2007

自分がいなくなった未来の世界に対して自分が与えるインパクトを真剣に考える

NHK プロフェッショナル 仕事の流儀 第40回~コンピューター研究者・石井裕~」の放送が今終了した。石井氏が番組中で残した言葉にとても共感した。ここに番組中での石井氏の言葉を列挙させていただく。


自分は凡人である
重圧を楽しむ
チャレンジせずに人生を終えるのは情けない
自らをとことん追い詰め努力する
屈辱感が原動力
逸脱をとがめない
Why?


「最後に石井氏がプロフェッショナルとは何か?」との問いに対してこう答えていた。

自分がこの世からいなくなったあと、その未来の世界にどういう影響を与えられるか、インパクトを残せるか。そこまで真剣に考えれれる人だと思います。


しかしMITは凄い所である。
私が通う大学の一般的な研究室とは桁違いのプレッシャーである。

少し前から自分がこの世の中に存在している時間に関して強く考えるようになった。
有限な時間を最大限有効活用し世界の発展に貢献するためにはどう行動しなければならないか?と考える。考えることは大事である。しかし、石井氏が「Why?の問いに対して曖昧な答えしか出せない場合は知識・思考に自信が無いということだ」と語るように、

考えることで何かに対する解を出した場合は、何故自分がそのように考えるか?あらゆる角度からWhy?と問いかけなければならない。客観的立場から考えたあらゆるWhy?の試練を跳ね除けたThinkこそ本物である。常に頭の中にThinkと客観的立場からのWhy?を持たなければならない。
私も凡人だ。だから訓練する必要がある。

と自分に言い聞かせる。

Wednesday, February 07, 2007

UIEJapanの人材募集広告を見て

3月でUIEJに参加して一年になる。
この一年の自分の中の核となる思考や知識の成長はかなり大きかった。

一年前Life is beautifulでGoogle Baseを通じてUIEJの立ち上げメンバー募集をしている時、ほんと無意識のうちに、何も考えず申し込みをしようとGoogle Baseの採用ページ開け、しかしエラーで見ることができずに、mixiでUIEJコミュニティを探しコミュニティの管理者であるその時に始めて存じ上げた中島聡氏にmixiでメールを送り「UIEJに参加したい!」と湧き上がった強烈なパッションが連絡をとらせた。

強烈なパッションがレールから外れさせた瞬間だった。(私の場合は約束された決まったレールから外れると言うよりは、横に新しい(行き先がどこかわからない)レールがある事を発見しスイッチを切り替えた気分だった。)

さて、そのUIEJが求人広告を出している。
UIE Japan は 、常に優秀な人材 (Super Star) を募集しています。

一年前この求人広告を見ていたらUIEJに来ようと思っただろうか?
おそらくスルーしていただろう。この文面から(今の私は)何も感じない。

採用情報の詳細ページは次の通りである。

採用情報

「なんだ?これは?」という感じである。

  • 求める技術スペックの表記のあいまいさ
  • おもてなし哲学・クリエイティビティに関して一切の表記なし


会社のビジョンからUIEJの求人に関してまでLife is beautifulの記事に頼っている。
UIEJの最初のオープンセレモニーで中島さんがおっしゃった「UIEJのカルチャーを作るのはあなた達です。私を困らせるぐらい暴れてください」という言葉に対して、申し訳ないとあやまるしかない。

UIEJのカルチャーを作るのはUIEのCEOではなくUIEJで働く自分達である。
そう思っているメンバーが多数にも関わらず企業にとって最も大切な人材募集の核が、中島氏のブログ記事である。しかし、UIEJは非常にエッジのきいた面白い人達の集まりである。にもかかわらずこのような求人広告を出してしまった原因は、おもてなしを追求するUIEJのマインドを体系化できていないところにあると思う。体系化が進まないまま人数が増え、各自の頭の中にあったクリエイティビティが埋もれて、イノベーションを生み出せなくなる事ほど危険なことは無い。

ドラッガー氏が指摘しているように知識労働者は企業の資本財である。
知識労働者に強烈なパッションを感じさせ惹きつけることができなければ企業は死ぬ。

私の場合、
4年前、ドリコムの学生パワー溢れる社風に強烈に惹かれた。
2年前、Googleの求人広告を見た際に、求める能力の高さに強烈に惹かれた。
1年前、中島さんの人間性に強烈に惹かれた。

"スーパーエンジニア"なんて抽象的で曖昧な言葉ではなく、
「私たちが考えるクリエイティビティは"こう"で世の中にはこういう問題があると考えています。あなたが持つ最大限のクリエイティビティを発揮して問題を解決したいと考えています」
と言うべきではないだろうか?
または、具体的なスペックを要求するべきである。

企業に個人が雇われるという感覚ではなく、刺激的な頭脳が集まるチームに参加する。
Life is beautifulの記事抜きで、この求人広告を見た場合、ソフトウェアの下請け会社の募集か何かにしか思えない。

でも、本文中に書いたようにUIEJには本当に(最高の褒め言葉で)へんな人達が集まっている。
だからこそそんなエッジの効いた人達のマインドを体系化できていないことが悔しい。来年度は就職だが、全精力を注ぎUIEJのサービス・開発・おもてなし哲学の体系化を進めたい。

Getting Real by 37 signalsが無料公開されています

Getting Real

一年前に$19で購入したのですが無料公開されています。
Webを通じてユーザエクスペリエンスを提供するビジネスに関わる人は、プログラマ・マネージャー問わず目を通しておくべきだと思います。

Tuesday, February 06, 2007

[Rails] 絵文字変換などの携帯サイト開発をサポートするMobile on Railsを作った

卒論を書いていたため、久々の技術ネタです。
携帯サイトの開発をサポートするプラグインを作りました。

Mobile on Rails

API ドキュメント

インストール方法
レポジトリをRuby forgeに移しました。


% ./script/plugin install http://mor.rubyforge.org/svn/trunk


更新履歴
以下のパッチを適用しました。ありがとうございます。
Mobile on Rails をSoftBank のあれな絵文字仕様に対応させた

主な機能は次の通り。
  • キャリア間の絵文字の変換メソッド
  • キャリア内での絵文字表記の変換
  • ユーザエージェントに応じて絵文字を変換
  • 携帯サイト開発のための便利なメソッド
  • フォームからの入力を内部エンコーディング(可読文字列)に変換する
  • セッションIDをURLに付加
  • 携帯からのリクエストの際は携帯用のViewを読み込む
  • リクエストとレスポンスをSJIS<->UTF-8に相互変換
  • 対応キャリアは、DoCoMo, au, SoftBank, WILLCOM
View中でDoCoMoのUnicode表記(&#xXXXX;)で絵文字を記載するだけでキャリアに応じた適切な絵文字に変換して絵文字をSJISバイナリで出力します。

フォームからの入力に関しては、絵文字をSJISバイナリから内部エンコーディングに変換してから、UTF-8に変換します。内部エンコーディングは出力時に自動的に適切な絵文字に変換されるため通常の文字列と同じように扱えます。

設定は不要です。

内部エンコーディング規則は次の通りです。
DoCoMo "\xf8\xf9" => __D_F8F9__
AU \xf6\x60 => __AU_F660__
SoftBank \x1b$Gj\x0f => __SB_$Gj__
SoftBank \x1b$Gji\x0f => __SB_$Gj____SB_$Fi__


携帯用にViewを切り替えるライブラリであるRailsで携帯用にビューを切り替えを参考に拡張させていただきました。

設定が不要な代わりに、次のような制約を設けています。
・携帯用Viewを#{RAILS_ROOT}/app/views_mobile/以下に設置する
・View中で絵文字はDoCoMoのUnicode表記で記載する

lib/init.rb中の次の二行をコメントアウトすれば絵文字変換に関するモジュールのみ利用できます。

require 'mobile_controller'
require 'mobile_view'


絵文字変換

手抜きで申し訳ないのですが、ユニットテストを参照してください。

emoji_test.rb

変換されない絵文字はゲタ文字に変換されます。キャリア間の絵文字変換を追加する場合は、tool/emoji_map.datに追加します。絵文字の順序は一行目のコメントに書いている通りです。

次の手順で絵文字変換表を作成し配置します。

% cd vendor/plugins/mobile_on_rails/
% rake updatedat




リクエストオブジェクトの拡張
次の二つのメソッドを追加
http://shindaita.stiq.net/rdoc/mobile_on_rails/classes/ActionController/AbstractRequest.html

・サブスクライバIDの取得
・携帯からのリクエストかどうかの判定
request.mobile? #=> true or false
request.subscriber_id #=> Ex) 000000000000000
request.subscriber_id(true) #=> Ex) ゲートウェイのIPをチェック

ライセンスはMITライセンスです。改変は自由です。

キャリア間の絵文字変換のルールについては、次のサイトで定められている"ような"ルールに従います。
http://www.nttdocomo.co.jp/service/imode/mail/imode_mail/emoji_convert/
http://elixir.neu.co.jp/user/technical/convert1_1.html


追記
via Takaiさんに頂いたコメント
"MOT"を含むユーザエージェントをSoftBank携帯からのリクエストと判別するようにしました。
ありがとうございます。

via babieさん
半角カナを扱うように変更しました。
ありがとうございます。

Sunday, February 04, 2007

知識労働者におけるプライオメトリクストレーニング



スポーツをしている人は体を鍛え筋肉をつける。目に見えやすい大胸筋, 僧帽筋, 腹筋, 上腕二頭筋といった筋肉をまず鍛える。これらの部位は筋力トレーニングの成果が目に見えて現れやすく、自分の体が変化している事が自分にも回りにも理解されやすい。

しかし、筋力トレーニングに費やした努力をスポーツにおいての成果に結びつけるには、大きな筋肉を鍛えるだけでなく大きな筋肉間をつなぐ小さな筋肉や腱を鍛える必要がある。この筋力トレーニングは、プライオメトリクストレーニングと呼ばれる。プライオメトリクストレーニングではウエイトトレーニングで養った筋力を瞬発力に結びつける力を養う。目に見えて変化の明らかなウェイトトレーニングに加えて、(一見地味だが)プライオメトリクストレーニングやストレッチによって柔軟性を確保することで初めてトレーニングが成果に結びつく。ここでは、重たいダンベルなどを使ってウェイトトレーニングと比較して、自分の体重を主たる負荷とするプライオメトリクストレーニングを地味と書いた。

スポーツをする人は、練習やトレーニングの効果を試合で確認する。
練習やトレーニング効果があったかどうか?
どういう種類のトレーニングが足りなかったか?
これからのトレーニングはどういったメニューにするか?
実践(試合)を経験することが成果に対する努力を振り返る機会となる。


自らの肉体を商売道具とする人にとって、肉体を技能やパフォーマンスに結びつけるプライオメトリクストレーニングが重要なのと同じように、自らの知識を道具とし成果をあげる知識労働者においてもこの"知識労働者におけるプライオメトリクストレーニング"が重要ではないだろうか?

知識労働者においての財産は自らの知識である。自らの肉体を商売道具とする人と同じように頭脳を商売道具とする人も頭脳を鍛えなければならない。頭脳を鍛えなければ大きな成果をあげることはできない。では、知識労働者におけるウェイトトレーニング・プライオメトリクストレーニングとは一体何だろうか?この問いについて考えてみた。

読書や勉学が頭脳におけるウェイトトレーニングではないだろうか。
自分が知らない事を勉強し理解を深める。ウェイトトレーニングにより目に見えた成果が現れる。しかし、肉体におけるウェイトトレーニングと同様に、ウェイトトーニングによる効果を成果に結びつけるためにはプライオメトリクストレーニングが必要になる。

読書や勉強により覚えた物事はすぐに成果に結びつくとは限らない。「筋力を瞬発力」に対して「理解を知識に。知識を成果に。」と結びつなげるのが頭脳におけるプライオメトリクストレーニングである。

では、頭脳におけるプライオメトリクストレーニングとは一体何だろう?
まず1つは興味・関心を持つことである。頭脳におけるウェイトトレーニングで身に着けた理解に対し興味・関心を持ち、理解している物事を発展させる能力。これが興味・関心である。理解に対する興味・関心は知識へとなり、次の新しい理解へのウェイトトレーニングへとつながる。「好きこそ物の上手なれ」といった言葉が言い表している通りである。

2つ目は"知識に対して自ら問いを投げかけ考える"能力である。
IBMの創業者トーマス・ワトソンが"Think"と言う言葉を口癖にしていた話は有名だが、知識を成果に結びつけるためには常に考えなければならない。肉体におけるウェイトトレーニングの成果は一定の期間が経過すると衰えていくが、一度身につけた知識は衰えない。その代わりに知識は急速に古くなり役に立たない死知識へと変化する可能性を持っている。

個人が手に入れることの出来る情報量は、インターネットとWWWの発展により格段に増えた。アップローディングも急増している。今の時代、知識が死知識になる速度が急激に早まったのはA・トフラーが「富の未来」で指摘している通りである。

特定の問題と向き合い、現時点での自分の知識で最良の答えを出すとしたら、それは何だろう。問題に対して"知識を利用し最良の答えを考えた"事が知識と知識を結びつける頭脳におけるプライオメトリクストレーニングに他ならない。日常で解決困難な問題と遭遇する機会が無ければ自分で問題を設定しなければならない。問題は何でもいい。簡単なことでも馬鹿げていることでも問題を設定し、自分の知識を利用して最良の解を探すプロセスが重要である。


と、知識労働者におけるプライオメトリクストレーニングについて考えてみた。
高校生の時は毎日体を鍛えた。プロテインを飲んだ。鍛える事が自信になりクラブ活動における成果にも結びついた。今は必死で頭脳を鍛えている。雑誌を読み何がなぜ流行しているか考える。経営哲学の本を読み21世紀を勝ち抜く組織について考える。ホテルのサービス哲学の本を読みおもてなしについて考える。技術本を読んではプログラムを書く。

スポーツの世界では、成功するための条件において才能や負けん気の強さから生じる努力が大きなウェイトを占めていると思う。知識を成果に結びつける世界では、人一倍の興味・関心から生じる努力が成功への大きな鍵となる。