ページ

2010年1月27日

Google Chrome for Mac(dev版)を入れた

このままではChromeはwebsocketsのテスト以外で使わなくなるので、Mac用のGoogle Chromeのdev版をインストールしました。かなりの機能が使えるようになっていたので、WindowsのChromeのExtensionをうらやむこともなくなりました。一説にはChroniumを使えと言うお話もちらほら聞きますが、それは許してください。
インストールしたんですが、やっぱり、websocketsとかのテスト以外していません。

ちょっと使っただけですが、そこそこ安定しているように見えます。でも、まだ、常用する気にはなれません。多分困らないとは思うんだけど・・・

2010年1月26日

面接で興味ある言語にLispて言ったらそりゃ爆笑されます



興味のある言語にLispと書いておいたら面接で爆笑された」と言う記事。そりゃ、面接の時にそんなこと言ったり、書いたりしたら爆笑されます。多分、アリエルでも。で、僕がそんなときに面接したら、「ちょっと待って」と言って席をたって、すがわらさんとまつやまさんを連れてきて、小一時間Lispについて話し合ってもらいます。そして、多分、のこりの形式的な面接のあとに採用になるでしょう。

会社ではRubyはやっていませんが、たとえやっていたとしても、興味ある言語がRubyかどうかなんてあまり気にしません。強いて言えば、Javaとかって書いてあるとマイナスポイントになるぐらいです。Javaが言語として取り立てていいとか悪いとかじゃないんですが、就職に有利だとかそんなくだらない理由の人が多いから、Javaはポイントにはならないです。それはアリエルが特殊な会社だからで、他の多くの会社は違うかもしれません。だから、アリエルとか、そのほかの会社でもいいですが、変な会社で働くのは楽しいのです。つまり、先ほどの記事にあるリーマンプログラマがいない会社です。



Macでファンクションキーが効かなくなることが・・・

いつの頃からか、Macでファンクションキーが効かなくなることが頻発するようになりました。去年はそのような症状はなかったと思うので、そろそろMacを買い換えた方がいいのかと思い始めていましたが、ここを読むとSnow Leopardでそこそこおこるらしい。ググっても沢山出ています。対処方法は、コンソールから「killall Dock」。大胆。これで解消しました。

実際はログになにかエラーメッセージが出ているらしいので、がんばりたい人はログを監視してもいいのかもしれません。僕はSpotlight以外はあまりファンクションキーを使わないし、使えなくなるなるのは、F8-12なので実はそんなに困っていませんが・・・。

今度のブラッディマンデーはMacだった


先週の土曜から始まったブラディマンデーを見ました。やっぱりおもしろかったですが、ストーリーより実はPCとかの方に目がいってしまいます。最初のやつからもう2年もたっていたんですね。前作では、でてくるPCがすべてhp製でした。今回はhpのどんなPCが出てくるんだろう?と、目を光らせていましたが、出てくるPCすべてにリンゴのマークが光っています。うーん、いつの間にかAppleのシェアが100%になっていました。hpは景気が悪くてスポンサーになれなかったのかな?とか、そんなことを考えながら見てしまいます。

さて、ノートはMacBookProで、13インチのものと15インチのものがでてきました。主人公は13インチの方を持ち運んでいました。僕のMacBookはアルミですがMacBookと刻印されている古い方です。MacBookProと書かれている方がちょっとだけ欲しいですが、スペック的に買い換える意味がないので、まあ、仕方ないです。 ちらっとMacBookAirが見えた気もしましたが、持ち運んでいなかったので、やっぱり2kgは十分モバイルの範囲でしょう。影響されやすい僕は、しばらくは今のノートを積極的に持ち歩くでしょう。

さて、デスクトップは全部iMacです。至る所で3台のiMacが並んでいました。ますますiMacが欲しくなります。でも、ノートと違ってiMacは嫁にばれずに買うことができないので、難しいです。しかも、3台欲しいし・・・。

それから、Macの中で動いていたのは何でしょう?MacOSXにはどうみても見えないし・・・。

形から入るのも悪くないと思っているので、やっぱり、iMacが欲しい。

それから、クラッキングはハッキングと言わずにクラッキングと言って欲しい。(これ、重要)



2010年1月22日

テキサスバーガー

バグ報告数とモチベーションの推移


20100121.png

上の画像はアリエルの最近の日ごとのバグの報告数の推移です。縦軸の単位は一番多かった日を100にしたパーセンテージです。日ごとに報告数に大きなばらつきがありますが、おもしろい傾向があります。小さな谷になっている日は月曜日です。そして、各山の頂点は金曜日です。

憂鬱な月曜日はやる気がでないので、バグ報告数はそこそこです。で、日を追うごとにだんだん乗ってきて、休みの直前はすごい勢いで報告しています。でも、お休みが入るとまた、憂鬱な月曜日になります。

グラフ化するまでは、こんなに顕著に報告数が推移するとは思っていませんでした。また、上の方にやる気で変わると書きましたが、それ以外の理由は見あたらならいので、やっぱりモチベーションが原因なんだろうという、経験値というか消去法というか・・・。

今回はチケットの報告数でしたが、チケットの修正が日によってどう変わるかもおもしろいかもしれません。お客さんからの報告は金曜か月曜に多いような気がします。 

他の会社のことはしりませんが、統計を取ればおもしろいかも。 




2010年1月21日

ascii .technologiesのクラウドの記事


会社の会長がascii .technologyにクラウドの記事の連載を始めました。敬意をもって拝読させていただきました。網羅的でとてもおもしろく読ませていただきました。その後、Oさん(Oさんは複数の人を一人にまとめました)との会話です。

僕「あの記事、とってもおもしろかったです」

O「えっ?」

僕「クラウドについて前半は網羅的に説明してあってわかりやすかったです」

O「まあ、一般論はあんなものでしょう」

僕「後半のオライリーのカンファレンスの話もとても刺激的でした」

O「去年の6月の話ですよ。そんな昔の話、今頃なぜ?時期を逸しています」

僕「真ん中あたりのGoogle App Engineのところは・・・」

O「そうですよね。実際に手を動かした感がなく、薄っぺらいですね」

僕「えっ?・・・」 

 

Oさんはなぜか批判的でしたが、僕は割と良く書けて読み安いと思います。今後どう展開するのか楽しみです。 

 




2010年1月20日

チョコレートスパークリング

悪くない。でも、たくさんはいらない。

プログラマ○○才定年説

昔はプログラマ35才定年説がまことしやかにささやかれていました。最近はちょっと定年の年齢が引き上げられて35才ぐらいになったという噂もききます。ロータスの頃の開発の同期も、すごかったはずのプログラマもいつのまにかプログラマじゃなくなっています。ただ、ロータスの人たちで、プログラマじゃなくなったのは興味が別のものにうつったとか、飽きたとか、もしくは、会社のやむにやまれぬ理由によるものとか、出世(?)させられてしまったとかです。本人が何らかの限界を感じたわけではなさそうです。

僕もいつのまにか35才を超えていました。僕と誕生日が同じ知り合いのプログラマは今日で34才で、来年は僕の仲間入りです(ふっふっふ)。で、自分ではまだ、現役のプログラマのつもりです。相対的にはまだ、十分続けられそうです。ただ、昔の自分と比較すると、スピードは遅くなるし、マルチスレッドをデバッグできなくなるし、能力的には低下しているかな。ただ、それをカバーするものもあるかなー、と勝手に信じ込んでいるし、営業の人は僕がプログラミングを必死しているとプロジェクトが順調じゃないと思って不安になるらしいし・・・。

定年かどうかは、このブログ(あまり定年とは関係ない)を読んでいると、積極的に学習し続けられるかどうかだと思います。学習することを苦痛に感じるようだと、やってられないです。学習し続けることが楽しいと、これほど刺激的な職業はありません。もっと時間が欲しいぐらいです。



2010年1月19日

電動歯ブラシはくすぐったい

僕は歯医者が嫌いです。歯医者のドリルの音を聞くと背筋がぞわぞわします。ドリルを見ていると恐怖を覚えます。なるべく行きたくないところです。そんな歯医者ですが、先週の金曜日に勇気をもって行きました。

歯医者に行った理由は、会社の何人かが年末に行っていて大変なことになっていたらしいと言う、もっと恐怖をあおる報告がなされたことです。すがPはトンカチでたたかれたそうです。それで、僕もトンカチが発動する前に何かあるなら未然に防ぎたいと思っていきました。前回、歯医者に行ったときに、半年ごとに行った方がいいと言われました。それから6年ぐらい歯医者に行っていません。ちょうどいいタイミングです。それから、歯の内側に歯石がありそうだったので、とってもらいたかったのです。

歯医者に行くと、初診なのでレントゲンを撮られました。これは怖くはありません。そのあと、歯医者さんが口の中をのぞき込みます。生きた心地がしません。結果は虫歯はないと言うことでした。会社の中山ディレクターは、虫歯がないとしって残念がっていました。

で、歯医者に行ったときに、歯磨きでブラッシングを強くやり過ぎとか、歯の内側がちゃんと磨けてないとか言われて、前から欲しかった電動歯ブラシをこれを機に買いました。なんだかきれいになっていく気がします。でも、とってもくすぐったいです。くすぐったいのを我慢すれば、きれいな歯になるそうです。パッケージには2週間で白い歯と書いていましたが、僕は白い歯にはあまり興味がありません。大きいブラシと小さいブラシがついてきましたが、小さいブラシだけで十分です。楽に虫歯とかが予防できればうれしいです。

子供もとても喜んでいましたが、一番下のこどもは怖いと言って近づこうとしません。まあ、無理にやらせるつもりもないので、そのうちそのうち。 

 



2010年1月14日

優秀なプログラマは優秀な設計者とは限らない

アリエルには優秀なプログラマがうじゃうじゃいます。僕も偉そうにしていますが、内心は彼らは自分より優秀だと思っています。こっそり彼らに追いつこうと悪あがきをしています。

さて、優秀なプログラマはそのまま、優秀な設計者と錯覚して何かをお願いしてしまうことがあります。プログラマと設計者の明確な違い(境界)はありませんが、僕の考える設計者とは大きなアプリケーションのグランドデザインをできる人と考えています。 そして、錯覚する原因は、やっぱり明確な境界線がないからです。

受注のような仕事は違うのかもしれませんが、パッケージソフトはかなり長期にわたって使われたり、拡張していくのである程度のグランドデザインが必要です。そして、最近の不景気にもあいまって、全くのスクラッチからのグランドデザインをすることがほとんどありません。僕も、仕事ではまだ、小さなものを除くと二つしかスクラッチからデザインしたことはありません。だから、デザインできると言うこと自体すごい幸運ですが、その分、経験を積むことはできません。ただ、完全なスクラッチからじゃなく、もう少し小さな単位でデザインすることはそこそこの数あります。 

その小ささの単位ですが、ひょっとしたらある境界線があるのかもしれません。昔、100行までのコードしか書けない人と、100行を超えてコードを書く人の間に境界線があると感じたことがあります。プログラマになれる人となれない人の境界です。それと同じような境界がデザインする単位であるのかもしれません。

と、最近考えることがあります。 



2010年1月13日

pywebsocketをちょっとだけ見てみた

pywebsocketというPython製のwebsocketを利用するためのApacheモジュールがあるらしいので、ちょっとだけ見てみました。ちなみにこのエントリはPythonとはあまり関係がありません。興味を持ったきっかけは、現状のApacheでC10Kをどうやって解決してwebsocketを実装したのだろうということです。結論は残念ながら単にApacheでwebsocketを利用するためだけのものでした。ただ、現状のインフラでちょっとだけ実用的にwebsocketを遊べるのはそれはそれですばらしいことです。僕がgolangで書いたサンプル、もしくはgolangはまだ実環境で使える代物ではないし。

Apacheはスレッドモデルで動きます。一つのリクエストが一つのスレッドを占有します。WebSocket自体は、AJAXによる定期的なポーリングやcometによるロングポーリングよりはオーバーヘッドは遙かに小さくメリットがあります。ただ、AJAXによる定期的なポーリングはサーバーサイドでは一瞬ですがWebSocketのようにコネクションが張りっぱなしの時は、1リクエスト1スレッドだと問題が発生します。たとえば、スレッド一つにつき、大体メモリ1Mを消費します。1000個のリクエストだとスレッドの維持だけで1Gのメモリを消費します。chatのサンプルは、一つのクライアントに対して二つのスレッドを使っていたので、単純に考えて2Gのメモリが必要です。さらにchatの場合、ほとんど何もしない状態なのに、スレッドのコンテキストの切り替えが発生し無駄に時間がかかります。それでも1000個ぐらいであれば多分問題ないですが、クライアントが増えると馬鹿になりません。まあ、メモリの方がネックになると思っていますが。

pywebsocketもmod_python経由でスレッドモデルなので、結局上のような限界が発生します。mod_pythonでクライアント-サーバみたいに動かすことで回避できるか期待しましたが、結局同じです。なので、スケールを考えてwebsocketを使うのにはAapacheの次のバージョンが必要かもしれません。

でも、待ちきれないという、そんなあなたにjettyで、jythonです。

2010年1月8日

ソースコードのコスト

以前、「アプリケーションのソースコードは負債のこともある」と言うエントリを書きました。何もユーザに価値を提供しないコードは、単なる負債であるという内容でした。それはそれで正しいと思っています。もう一つの側面として、ソースコードは資産として計上されます。収入を得るための材料なので資産としては正しいのですが、一度できあがったコードはメンテナンスしないといけません。趣味と違ってお仕事でやるときは、一度作って(ドキュメントにテストに・・・)おしまいと言うことはありません。受注の場合は知りませんが、少なくともパッケージソフトとかはメンテナンスし続けないといけません。コード量(=機能の数)が増えれば増えるほど、メンテナンスコストが増大します。

いろいろな案件で、ソフトウェアはひたすらに機能を増大し続けます。機能を追加するときにメンテナンスまで考えることは稀で、そんなことを考えると機能は追加できません。でも、機能を追加しないと売れないので、機能はどんどん追加されていきます。チキンレースをやっている気分になることあります。

こんなことを言っても、機能を追加しないようにすることはできないし、成長し続けるためには必要なことです。ここにジレンマがあります。

続きは今度。 



2010年1月7日

お正月が終わったら会社のフロアーが増えていた

オフィスが五反田に引っ越してきてちょうど一年ぐらいです。一昨年の天皇誕生日にオフィスが引っ越してきました。そのときは割とがらんとしたオフィスでした。でも、不況にもかかわらず、人がどんどん増えていってスペースが足りなくなりそうなのか、プロジェクターをつかって大画面でWiiをやりたいためなのか、瞑想にふける場所も必要なのか、正月休みが終わるとフロアーが増えていました。7階だけだったのが、11階にも浸食していました。正確にはクリスマスぐらいに増えたらしいですが、僕はまだ、行ったことがありません。

会社を大きくするためには人を増えるし、人が増えるとコストが増えるし、必要なことだとは分かっていても怖いです。赤字続きで現金が確実に減っていった頃を知っているので慎重になってしまいます。怖い反面、会社が大きくなっていくのを実感できてうれしくもあります。今は、多分70人ぐらいが働いていますが、すぐに100人を超えそうです。1年前は100人を超えるのは想像がつきませんでした。もっとも、3年ぐらい前は黒字になるというのも想像がつきませんでしたが・・・。



2010年1月6日

Pythonでtailもどき

WebSockets関連のブログを読んでいたらファイルの末尾の変更を見るために豪快なことをやっていたので、tail -fみたいなことをするサンプル。

#!/usr/bin/python

import os
import time

MAX_INTERVAL = 1.0

def readLines(path):
fp = open(path, "r")
stat = os.stat(path)
fp.seek(stat[6])

try:
while True:
where = fp.tell()
line = fp.readline()
if not line:
time.sleep(MAX_INTERVAL)
fp.seek(where)
else:
yield line
except:
pass
finally:
fp.close()

if __name__ == "__main__":
import sys
for line in readLines(sys.argv[1]):
print line,


ファイルを開き直すでもいいんだけど、前回の読み込んだ位置を覚えておいてseekすれば、もう少しわかりやすいかな?まあ、本質的なことじゃないんだけど、コードが理解できなかったので・・・。

お正月に同窓会に行った

お正月に高校の同窓会がありました。冬は寒いのであまり実家に帰りたくないのですが、同窓会も滅多にあるものではないし、我慢して帰りました。日常の周りにいる人たちとは全くの異質な人たちなので、ちょっと新鮮でした。

まず、なぜか、サル退治の話です。最近はサルが人が住んでいるところに出没して、畑が荒らされるので対策が大変らしいです。怖いところに住んでいたのですね。

iPhoneを使っている人はほとんどいないです。東京で飲み会に行くと、iPhoneとかAndroid以外人は少数派でしたが、 田舎は正反対です。もっとも、Softbankがつながらないところが多いということもありますが・・・。

ネット上に実名で何かをしている普通の人はいないらしい。僕が個人情報をさらしすぎなのかもしれませんが・・・。 

僕は高校のころのことをほとんど覚えていなかった。相手の名前や顔が分からないのはごまかしていましたが、やっぱりばれました。同じクラスの人もさっぱり分かりません。で、先生の名前も顔もほとんどわかりません。 

で、かすかな記憶とまわりの人の証言を頼りにどんな生活をしていたか妄想すると、高校一年のころの担任(新任の女の先生だったらしい)は、最初は生徒とうまくやれていなかったらしい。僕はそんなことは知らなかったらしい。でも、僕は授業をほとんど聞いていなかったらしい。このころの成績はまだ普通よりちょっと下ぐらいだったはず。ちなみに、部活でバスケットをやっていたらしい。3年までやった説と1年の冬に体育館が寒くてやめた説と二つある。やめても、たまに一緒に走ったりしていたという説もある。

2年のころはどうだったかは不明。 3年のころは、全く授業を聞いていなかったらしい。「学校はみんなで勉強するところだ」と青臭いことを言われて怒られて、いろいろあったらしい。かなり先生は扱いにくかったはず。僕もまわりの証言から判断すると、いやなやつだと思う。国語の時間に「読んでくれ」と言われて「わかりません」と答えたらしい。 

それから、髪が短くなったと言われたのですが、高校の頃は普通の長さかかなり短かったと思うんだけどな・・・。大学と社会人になってしばらくはとっても長いときもあったけど・・・。

まあ、いろいろショックなできごとではありました。 



2010年1月4日

Jettyをちょっとだけ・・・

Jettyをちょっとだけ動かしてみようとしました。理由はWebSocketsが使えるから。とりあえず、ダウンロードしてきて起動はできます。会社の製品を動かそうとすると、JSPを動かすために必要なブツがないじょー、と怒られます。全部入りのTomcatとの違いに戸惑いつつ、今日はああきらめます。

jasperより高速な(ロックしないような)JSPエンジンってあるんだろうか?