最近のトラックバック

2017年2月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        
無料ブログはココログ

« 2010年11月 | トップページ | 2011年1月 »

2010.12.30

サラリーマン気質・独立気質

 今年ももう終わり。
 この1年は家族との時間を重点確保だったのでこなした仕事量は例年よりかなり少なめだったけど、最近新しい仕事仲間も増えたことだし(どのくらいの戦力になるかは不明だが)、来年は今年地下で進行させていたプロジェクトをどんどん表に出していきたい。

 またこの1年は、人に指示を出して仕事をさせるという点で僕にとってはいろいろ経験が大きかった。この立場になると、ついつい「泥臭くて技術的価値は低いけど任務遂行のためには必要」なことを人にやらせたい誘惑が出てくるものだというのが自分でよくわかった。こういう作業はハッカーは忌み嫌うものだし、僕も他人に指示されたらあまりやる気はないものなので、エンジニアリングとして楽しい仕事になるよう常に心掛けたい。

 「泥臭くて技術的価値は低いけど任務遂行のためには必要」

 これについて考えさせられた事件がサラリーマン時代にあったのでこれを書いてみようと思う。
 この事件は僕が独立を真剣に考え始めた大きなきっかけになった事件で、実は今でもときどき夢に出てくる。

 かれこれ6年前くらいのこと。
 当時サラリーマンだったとき、組み込み向けのJavaVMの仕事をしていた。さすがにイチからVMを書くのではなく、ライセンスを受けたソースコードをベースに若干の機能追加や本来想定していない別のOSへの移植とかをやっていたのである。

 ここでVMが動作中に謎のクラッシュをする問題が発生した。

 その組み込み環境向けには専用のC++コンパイラを使わなければならないのだが、それがどうやら怪しい雰囲気である。
 試しにコンパイラの最適化オプションのレベルを下げて動作させると正常に動くようになったので犯人はコンパイラと特定された。

 まあ聞いたことないメーカーのコンパイラだし、コンパイル速度がたいへん遅い(VisualC++に比べると5倍は時間がかかり、VMをフルビルドすると30分もかかる)し、もともとコンパイラのレベルが低そうな雰囲気はあったからな...

 さてどうするか?

 最適化しないでコンパイルした製品を出荷することはパフォーマンスの観点から受け入れられない。
 コンパイラの製作元に連絡して修正してもらうか、別のコンパイラに乗り換えるかするのはスケジュールが間に合わない。

 幸い、会社には僕と別チームでやっている全く別のJavaVMを使う選択肢があり、それを使えば対外的な契約上は問題はない。ただし、それを使うことにすれば僕のチームの数か月の仕事は捨てることになるし、チームの会社内での評価も必然下がってしまう。ボーナスや昇進にも影響出るだろう。

 僕はこの時点で、コンパイラの問題なんだからもう手出しはできないし、自分のチームの負けを認めて降伏しよう、と思っていた。コンパイラの品質に問題があることをもっと早く発見できなかったのがチームのミスである。

 ところが、同じチームの同僚のK君は違った。
 普段から人付き合いは苦手で黙々と作業するのが得意な性格ではあったが、なんと彼は次のような作戦に出た。

●VMのソースファイルを半分に分け、AB2グループを作る。
●Aのみ最適化したもの、Bのみ最適化したもの、で2つのVMをビルドし、それぞれ動作させる。
●クラッシュした側で最適化しているファイルのどれかに問題があることが特定される。

 そして、半分に絞った問題のあるファイルについて同じことを繰り返して絞り込んでいくわけだ。といってもファイルは100以上あるし、1回のビルドで30分かかるのでとんでもなく時間がかかる。

 そして、K君は徹夜して(20時間はぶっつづけで仕事したはずである)問題のあるファイルを1つに絞り込むことに成功したのである。

 この根性は尊敬するし、「期限内に動作するVMを仕上げる」という会社のミッションをクリアするという点では最適な行動だったと今でも思う。だが技術的な観点からは、仮にここを一時的に凌いでも将来のメンテナンスのことを考えるとそんな爆弾を抱えたコンパイラを使うこと自体がありえない。

 僕は、いくら会社から与えられた任務とはいえ、技術的には危険で、かつ単調な徹夜作業をK君のようにこなせるかというと絶対に無理だ。いくら金をもらってもやりたくないと思った。
 一方で会社の立場では、やはりK君のような行動を勇士として認めなければならない。それも理解できる。上司の立場だったら、K君のような兵士は重宝するだろう。

 ここに矛盾を感じた。
 この事件をきっかけに、もっと面白い仕事を自由にやるポジションがいいな、と思って独立を考えはじめたのである。サラリーマンとして仕事してれば、断ることができないシーンがどうしてもあるからね。独立して面白さ・仕事量・稼ぎのバランスを自由に変更できるようにならないとこの先もたない、と思った。
 僕がサラリーマンを辞めたのはこの事件の半年後くらいである。

 なお驚くべきことには、これだけミッションを忠実にこなす優秀な兵士であるK君ですら、「最初は某大企業の技術職だったが体質が合わなくて辞めた」と当時言っていたのである! 大企業はどれだけ息苦しい世界なんだ...

 部下がいるとつい面倒なタスクを丸投げしたくなるが、それは我慢して面倒を回避する技術を確保するようにしたい。

2010.12.15

Galaxy S買いました

 2日前、携帯をGalaxy Sに買い替えました。
 で、気づいたこと。

●電話帳のガラケーからの移行
 付属のマニュアルどおりにやってもできなかった。どうせ移行ツールがファイルのパス名を決め打ちにしているか何かなんだろう、という雰囲気だったので、SDカードをPCに繋いで電話帳のファイルを移動したら成功。
 なお、ファイル名が PIM00001.VCF でないとダメらしい。

 このあたり、移行ツールを作ったプログラマのヘボさがよく出ている。よろず通信というものは、送信側は厳格に、受信側は寛容に振る舞うべきもの。受け入れ側で特定のファイル名しか受け入れないなどもってのほかである。

●Googleアカウントが必要
 これは買う時にも確認された。最初のセットアップ時にGoogleのアカウント入力を求められ、これを通さないと何もできない。
 少し詰まったのは、gmailのアカウントも必要なこと。僕はGoogleアカウントはあってもgmailは使ってなかったので、ここでいろいろ問題が出た。Galaxy上でgmailをつくるメニューもあったがイマイチ動かなかったので、PCでgmailを作り、その後Galaxyでリトライして成功。

●メールの受信
 「spモードメール」というやつで(何の略かは不明)iモードメールが受信できるそうである。
 ここで衝撃のクソ仕様が発覚。なんと、

 Wifi接続があるとメールの送受信ができない

 のである。しかも、これをやろうとすると「接続に失敗しました」とかのふつうのエラーメッセージしか出ないのでこのことに気付くまで時間がかかった。なので、メールの送受信をするときにはWifiを切って3Gにいちいち手動で切り替えないといけないのである。
 これはいくらなんでもひどい。このサービスで月300円取られるし。早く直してくれ。

 一応、Wifiがあっても、「何かメールが来ている」ことだけはわかる。ただし本文は読めない。

●Flash
 iPhoneではないので、PC用Webサイト内のFlashは動く。が、ちょっと複雑な動きをするやつはたいへん重い。別にクラッシュするようなことはないが、けっこう厳しいシーンはよくあるし、全画面使って複雑なUIをするやつは絶望的。
 かといって軽いFlashのみでコンテンツを作るとPCでは物足りないのでこの問題は難しい。GalaxySを使ってはじめてAppleがFlashプレイヤーを搭載しない理由がよくわかった。僕はこのAppleの判断は大正解と思う。
 Flashの搭載はユーザエクスペリエンスに重大な障害をもたらす。まあ、あと数年すれば携帯端末のハードウェア能力が上がって自然と問題なくなるだろうからそれを待つのだろうね。15年くらい前、画像満載のWebサイトをPCで開くとどうにもならなかった、というのと同じ問題で。

2010.12.10

娘とiPad

 久々の更新。
 最近は大きなもの2つ・小さなもの2つのプロジェクト掛け持ち(すべてFX/株のトレーディングツールですが)なので、忙しい割にはそれぞれの進行速度はイマイチです。まあ1つあたりは週に1~2日しか使っていない計算だから当たり前なんですが...。
 まあ相場を張るのをもっと控えれば仕事は捗るのかもしれないが、なまじ勝っているためについ相場も見てしまう。

 ところで、娘(1歳10ヶ月)もiPadを使い始めたのだが、いろいろユーザーインタフェースの知見が得られて面白い。よくソフトウェア製品の売り文句で「直観的なインターフェース」というのが出てくるが、それが本質的にどういうことなのかはじつに曖昧である。
 なまじ文字を知っているとそれに頼ってしまうので、文字はまったく分からないが知能はわりとある子供こそ、ユーザーインタフェースの考察にふさわしい。
 娘がiPadを使うところを観察するのは親の立場としてもエンジニアの立場としても楽しいのである。

●アイコンの認識能力は高い
 僕のiPadには100個くらいアプリがあるが、そのうち娘が気に入っているものは5~6個で、特定のページに固まって配置している。
 この状態でiPadを与えたとき、目標のものを起動する操作は全く問題なし。絵で覚える、というのは大きいようだ。

●ホームボタンも秀逸
 「よくわからなくなったらこれを押せば最初に戻る」という理解はあるようだ。画面と脇にボタンが1つだけある、というデザインは本当にすばらしい。ガラケーだといろいろなボタンをガチャガチャと押しがちである。
 おそらく同様の理由で、比較的複雑なアプリケーションの場合、アプリのホーム画面に戻るボタンは目立つところに設置したほうがよさそうだ。

●"Clickable"という認識
 アプリ内の各種ボタンは、「押せば何か起きる」とはすぐ認識できるらしい。文字しかないボタンでも、目立つ色であればよいようだ。
 いままで、いわゆるボタンは電気製品等についているボタンのメタファーであり、電気製品を使う日常生活の経験がなければ理解できないUIだと思っていたが実はそうではないらしい。まあ0歳のときでもボタンのついているおもちゃには触っていたが、もしかすると本能的に理解できる操作なのかもしれない。

 ちなみに、娘が最も気に入っているアプリはつみネコHD(以下宣伝動画)。

 iPadのことを「にゃーん」と呼ぶくらい気にっています。

 他には、

* My first tangram
* かなもじ
* SoundTouch
* これなあに?どうぶつ編
* ミアのプレイランド

 あたりが娘にとってはヒット作。

 最後に僕にとってのヒット作は、Flight Control HD(マップのうち1つは世界12位のスコアを出した)、Settlers (AOEによく似た本格ストラテジゲーム)です。特にSettlersは家族が寝たあとにしばしば一人でやりふけってしまうわ...

« 2010年11月 | トップページ | 2011年1月 »