プログラマの適正室度とは

November 17th, 2009 No comments »

椅子や照明は仕事を快適に、かつ効率的に遂行するために重要な要素であることは以前から語られていますが、私はそれ以上に部屋の温度を気にします。

技術者が自分と目の前にある課題しか存在しない精神状態、いわばゾーンに入り込むには少なからず気合いが必要です。そして、気合いの前提には問題に立ち向かおうというやる気が必要です。暑いと集中しづらく、少なくとも私はやる気がでない。これはプログラマに限った話ではないと思いますが、知的労働者は頭を活発的につかいます。したがって、頭を継続的に使い続ける、またはクールダウンするためには上着が必要か必要ないかの絶妙な温度が最適だと思ってます。

温度の感じ方は人それぞれかと思いますが、私は18度くらいですね。

さようなら、GeoCities

October 27th, 2009 No comments »

ソース: GeoCities’ time has expired, Yahoo closing the site today

ジオシティーズは私が幼い頃にはじめてローカルで書いた下手なHTMLをアップロードした場所であり、思い出の遊び場なのですが、今日をもって終了するらしいです。Yahoo!に買収される前は確か5MBまでアップロード可能で、その枠を超えるために複数のアカウントで水平分散するなどのライフハックが一時期流行ってましたね。もちろん私はしませんでしたが。

あと、一度にファイルを5枚までしかアップロードできないインターフェイスも懐かしいですね。もしGeoCitiesが存在していなかったら自分はプログラマになっていなかったかもしれないと考えると悲しい出来事です。

Opus One 05年をいただく

October 7th, 2009 No comments »

私はワインが好きな方で、中でもカルフォルニア州 ナパバレー産のOpus Oneが好きです。その事を友人のウィリアムさんが覚えていてくれて、先日の誕生日パーティで2005年物を贈ってくれました。

Opus One 2005

さて、いつ飲もうか。

書評 – 必読 – WEB+DB PRESS vol. 52

August 21st, 2009 No comments »

今月も技術評論社さまからWEB+DB PRESSの献本をいただきました。

Vol.52はデータベース技術を学校で学んでいる、もしくは仕事で扱っている人にとって必読だと自信をもってオススメできます。斎藤太郎さんの「データベースシステム基本解剖」はハードウェアの性質・OSの役目からアルゴリズムの性質まで解り易く解説しており、説明がとても親切です。厳密にいうと、システムプログラミングを目指している方にもお進めできます。

WEB+DB PRESS Vol.52
WEB+DB PRESS Vol.52
posted with amazlet at 09.08.21
WEB+DB PRESS編集部
技術評論社
売り上げランキング: 266

本来なら一冊の本になりえるコンテンツを解り易く記事に納めているところが凄いです。私のオススメするこの記事の勉強ポイントは以下の7点です。

  • リレーショナルデータベースの概要
  • 各種アクセスパターンの特性
  • バッファリングの意義
  • 関連データ構造の丁寧な解説
  • インデックスの構造と仕組み
  • JOINアルゴリズムの解説
  • SSDの特性とメリット

システムプログラミングとデータベース開発は表裏一体だと私は思っており、Linuxで効率的なコードを書きたい方にはこの本もオススメできます。ちなみにLinuxにおける私のバイブルだったりします。

Linuxシステムプログラミング
Robert Love ロバート ラブ
オライリージャパン
売り上げランキング: 183010

久しぶりに納得した写真

August 5th, 2009 No comments »

ここ最近、人さまに披露できる写真が撮れなくてモヤモヤしてたのですが、久しぶりに納得のいく一枚が撮れました。ポートレートを撮るなら毛穴が見えるくらい近いものを撮ってみたいですね〜、こういう感じに。

kiyohero

被写体はkiyoheroさん。

エンジニアがミーティングを嫌う理由

July 26th, 2009 No comments »

エンジニアがミーティングを入れられる事を好まない事や、不機嫌になる事は英語圏や日本を問わず知られているかと思います。実質、私の周りにもこういった傾向がありますし、職人的に秀でてる方ほどこの傾向が強いと感じています。さて、これはなぜでしょうか?

友人の村瀬氏のtweetにPaul Grahamというプログラマ兼ベンチャーキャピタリスが書いた、Maker’s Schedule, Manager’s Scheduleという面白い記事へのリンクが貼られていたので、私なりに要約して紹介します。

二種類のスケジュール

プログラマやライターがミーティングを嫌う理由は彼らが他の人間とは違う種類のスケジュールで働いているからであるとGraham氏は語っています。氏いわく、スケジュールには二種類あります。

    Maker’s Schedule(物を作る者のスケジュール)
  • Manager’s Schedule(管理する者のスケジュール)

Manager’s Scheduleは上司な人向けに組まれます。典型的な1時間刻みの予定・アポ表に基づいて組まれるものです。なにか用事が生じた場合は予定を柔軟に時間単位でずらすことができます。このスケジュールモデルでは、誰かと会うにはスケジュール表内の空いているスポットを探すか、予定を調整する “プラクティカルな問題解決” で対応できます。権力をもっている人ほどこのスケジュールモデルにそって行動しているわけですね。

かたや、Maker’s Scheduleでは同じ時間でも使い方が異なり、プログラマやライターのように何かを作る人間は1時間単位ではなく、「半日単位」で時間を活用することを好みます。プログラムを1時間単位で書く事は実質無理であり、むしろ、手をつけることすら無理だとGraham氏は述べています。

Maker’s Scheduleにそって働く人間にとって、ミーティングは災難です。一つのミーティングに参加するだけで、その日の午後が台無しになり得るし、ミーティングに参加することを意識・記憶しなくてはなりません。かたや、Manager’s Scheduleにそって働く人間はミーティング後の予定を一つずつ消化していけば良いので、何の問題・障害も生じません。

リズムが強制的に崩される

物を作る人にとって、ミーティングに参加するという事は「働くモード」を強制的に切り替えさせられることです。一つのミーティングにより、その日のプロダクティビティが下がることも有り得るし、予めミーティングが入っている事を知っているため、その日は集中する意味がないと判断し午前中から本気を出さないかもしれません。

技術者にとって、予定が入っていない日は嬉しい日であり、より野心的なプロジェクトに注力しようと考えます。逆をいうと、予定をいれられると、やる気がさがり、ほんの少しのモラル低下でやる気が失せます。

権力をもつ人間ほど、Manager’s Scheduleにそって働いており、自分の下にいる人間のスケジュールを権限で合わせる事ができます。優秀なマネージャはこの権限を自分の都合で行使せず、重要なプロジェクトに集中する時間が必要なスタッフがいるかを考慮します。

Graham氏とシリコンバレー

Graham氏とその仲間たちはVC界隈では珍しい、Maker’s Scheduleで動いていており、一日のスケジュールをオフィスアワー内とオフィスアワー外で使い別けています。その日の終わり際から投資先などの人たちとミーティングを行うことにより、お互いが邪魔にならないようにしているとの事です。そのために専用のスケジューリングプログラムを書いたと語っています。

シリコンバレーを含め、世界中ではビジネスマンたちが人脈作りのためのミーティングを行っています。こういった会はMaker’s Scheduleで動く人間には厳しく、一日を犠牲にする事を覚悟で参加するか、誘ってくれた人に失礼ではあるものの、参加を断るという二つの選択肢があります。どちらも嬉しくない選択肢なのですが、Graham氏自身、つい最近まで二つのスケジュールモデルの違いによる根本的な問題である事に気づいていませんでした。

この問題に対するソリューションとして、スケジュールが合わないと説明して丁寧にお断りする事と、もしかして将来的に異なるスケジューリングモデルの衝突への理解が広まり、今より問題にはならなくなるかもと語っています。

結局のところ

私はどうかって?個人的にミーティングは好きではありませんが、大人になっていく上でbite the bulletをしなくてはならない事の一つだと割り切っております。とはいえ、何回かのミーティングを経て、プロダクティビティ向上や有意義な情報共有にならないと感じた場合は上司に一つや二つ文句をいうかも(いまのところ恵まれてます)。人脈を広げる会に関しては行けるようであれば喜んで行きますが、今のところGraham氏と同様、丁寧にお断りする方法しか思い浮かびませんね。。。

こういう話って直感的には解っていたようで、あらためて文字にされて読むと解っていなかったな〜と再実感できました。修行が足りませんね :)

Wall Streetの高頻度トレードが半端ない

July 24th, 2009 No comments »

New York Timesを眺めていたら、こんな記事に遭遇して驚きです。

要約すると大手の投資銀行やファンドたちがコンピュータと高効率なアルゴリズムを利用し、ミリセカンドという人間には短すぎる時間軸の中で、大量のオーダやキャンセルを入れて合法的に荒稼ぎしているとの事。

機械的なトレードは昔から存在するわけですが、いま話題になっているトレードシステムは人間や同業者のコンピュータよりも速く大量の発注を行い、機械的に銘柄のトレンドを分析したり、他の投資家に幻影をみせる事ができるらしい。1セントの値動きでもあれば、投資に応じた被害回避、もしくは利益をとりにいけるわけです。記事にはBroadcom株に対して行われた例が書かれていています。

こういったトレードがWall Streetで話題になっており、high frequency tradingと呼ばれているらしいです。「市場はフェアである」という理屈が崩壊しちゃいますね。

ニューヨーク証券取引所の元会長が、今の時代はこの高頻度トレードでマネーが稼がれているとコメントしていたり、これを裏付けるかのようにNYSEのトレード量が2005年から164パーセント上昇した事が公開されています(だからだと決めつけることはできませんが)。

優秀なトレーダでも、大手の鴨にされる時代なんですね。。。

日本の運転免許に切り替えました

July 23rd, 2009 No comments »

前々からニュージーランドの運転免許を日本のに切り替えなきゃなと思っていたので、色々と調べて無事、日本の運転免許書をゲットできました。取得のプロセス自体はとても簡単で、まず海外の免許書をJAFに持っていって、公式の翻訳文を作成してもらいます。ただし、どのJAF支部でもいいわけではなく、以下のURLに記載された場所でしか免許書の翻訳サービスを行っていません。

私の時は翻訳作業が20分程度で終わり、むしろ、芝公園支部を探すほうに時間を費やしました。翻訳文が作成されたあとは運転免許センターの海外免許切り替えの窓口に持っていきます。私は品川の鮫洲運転免許試験場で免許を取得しました。

運転免許センターでは、元の海外免許の発行国によって、試験者の扱いが変わります。発行国が以下の22カ国の中にあれば、ペーパ試験と実施試験を免除され、書類の記入、目の検査、そして写真撮影だけで免許が発行されます。

アイスランド アイルランド イギリス
イタリア オーストリア オーストラリア
オランダ カナダ 韓国
ギリシャ スイス スウェーデン
スペイン デンマーク ドイツ
ニュージーランド ノルウェー フィンランド
フランス ベルギー ポルトガル
ルクセンブルク 台湾

たまたまニュージーランドも免除国リストに入っていたので、書類と住民票を提出してから2時間ほどで免許が発行されました。ちなみに費用は普通運転免許の発行が2400円で、JAFの翻訳+公式文が3000円と、その他もろもろで、合計6000円ちょっとで済みました。

もう少し情報が欲しいという方は、以下の文書に詳細な必要条件やプロセスが記載されています。

これで身分証明書が必要なときにパスポートを持ち歩く必要がなくなって、一安心です :)

libmemcachedのコミッターになりました

January 23rd, 2009 No comments »

一年くらい前からlibmemcachedのコミット権をあげるよ!とBrian Akerに言われてきたものの、ちょっと忙しい事もあり、頻繁にコードを貢献したり、コードレビューができると思っていなかったので放置してました。ちなみにlibmemcachedをご存知でない場合は私が昔に書いたmixi開発ブログのエントリーなどがあります。

忙しいというよりかは、同時に複数のプロジェクトに参加できるほど器用でなかったというべきでしょうか。今も大して能力があるわけではありませんが、心に余裕もできた事ですし、libmemcachedのコミット権をもらって、アクティブに参加する事にしました。mikioさんやBrianに感謝ですね。もちろん、新しく書きたかったり、改修したいコードがあるからコミッターになったわけですが、それは追々ブログで書きます。

てなわけで、libmemcachedに文句があるけど、英語で議論する事に抵抗があったり(するべきですが)、送りたいパッチがあれば私に送っていただけたら、なるはやで対応・返答しますよ!

UNIX、EeePC、そしてSoftware Design 2009年2月号

January 19th, 2009 No comments »

技術評論社さま & 馮さん、献本ありがとうございます :)

今月号はArmadillo-500 FXを使った組込みプログラミングやAndroidのチュートリアル、OpenIDの解説や実装ノウハウ、Linuxやオープンソースが熱く語られたりなど、面白い内容だったのですが、特に「EeePCで楽しむPC UNIX」という特集がLinuxっ子な私には楽しかったです。

特集はFreeBSD、OpenSolaris、UbuntuをEeePCにインストール・使える状態までセットアップする方法を紹介する内容で、執筆者の方たちが実際に各々のOSをインストールする過程で経験した落とし穴と解決策が丁寧に解説されています。もちろん、EeePCにはディスクドライブが存在しないので、各々のOS用にブータブルUSBメディアの作成法から教えてくれます(同じく落とし穴と解決法も)。ハードウェア系(BluetoothとかWiFi)の設定は慣れていない人には嬉しい情報ですね。

WindowsではないOSを手軽にEeePCで試してみたい、*nix系の開発を学びたい方には凄く便利な記事だと思います。賛否両論なOpenSolarisを以前から使ってみたいと思っていたり、Netbookが欲しいな〜、と少し考えていたので、今回の特集でOpenSolarisが普通に動くと知ってEeePC熱が少し出てきました。

たぶん、この記事に惹かれたのもそれが理由でしょうね。