おしらせ:
「おしらせ」とな?
新山の場合、朝は毎日コーヒーを飲むのだが、きょうからすこしライトな 煎りのやつにした。きのう、いつもコーヒー豆を買ってる 会社の近くの喫茶店の主人に聞いたのだけど、 コーヒーはじつは焙煎が浅いほうがカフェイン含有量が多いという。 へー? それは知らなかったね。素人感覚では味の濃いコーヒーほど カフェインを多く含んでると思いがちだが、 焙煎による味というのはようするに炭化したコーヒーの味であって、 炭にはカフェインは含まれてないというわけだ。カフェインは 生のコーヒーの実が一番多く、焙煎すればするほど減っていくのだという。 なるほどね。
昨日の飲みすぎなどまるでなかったかのように、
今日はある講習会に (平然と) 参加してきた。某所でやっている
中小企業向けの侵入新入社員・合同研修会である。つまり、
マナーの先生のような方が出てきて「ヒトは見た目が 8割」だの、
「名刺交換はこうするのだ」といった、ありがたい教育的なお話を拝聴する、
という、アレである。周りはみんな自分よりも若い連中ばっかり…
と思ったら、そうでもなかった (なんでだろ?)。
そして最後にみんなで決意表明のようなものを言わされた。アホらしかったので
「明日からも、昨日までとまったく同じようにやりますから」と
宣言して帰ってきた。
みんなア然としていたような気がする。どーせ理解してもらえなかっただろうが、
説明するのも疲れるし、まあ勝手にしてくれ。
基本的に、そこらの本に書いてあるようなビジネス上の常識やマナーというのは、 「相手が日本人で、平均的な中流家庭に育っていて、日本語と日本文化と 日本風の“空気”を心得ていて、ゲイではなくて、 しかも目も耳も頭も手足も普通に動く」人間に 焦点をあわせて書かれている。この仮定からはずれた人間は 最初から考えられていない。それは知ってて無視してるんじゃなくて、そもそも そういった人間が世の中に存在している、ましてや彼らがお客や同僚として 自分の人生にかかわってくるなど想像すらできなかった、 ということなのである。そして、こいつらが「思いやり」だの「気づき」だのという お題目を持ちだす場面を想像してみてくれ。これがギャグでなくて何なんだ。
真の失礼さとは何だろう? それは「その存在をまったく知らない」ことだと思う。 たとえば障害者への差別は、そのほとんどが無知から生まれる。 外国人差別も同様 (ただし日本のみ。海外では、人種差別のように 相手を知っててなおかつ嫌悪する例も存在する)。 しかし「無知は罪ならず」というように、これは彼ら自身の責任じゃあない。 社会全体の責任であり、新山もそのうちの一人なのだ。 だからきょうの感情は「ムカつくけど、やり場のないムカつき」であった。 …ついでにいえば、この種の感覚はキリスト教以外の宗教がありうるということを 知らない欧米人や、アメリカ的価値観ではない価値観がありうるということを 知らない米国人に接したとき感じるムカつきと似ている。
で、よく新山は「アメリカ人は趣味が悪い」とか「Rubyユーザはセンスが悪い」とかいうことを 言うけれど、本当は「趣味のいいアメリカ人」 (ワオ!) も 「センスのいいRubyユーザ」もいる (ワオぅ!) ということを知っている。 つまり自分の意見が偏ったものであり、反対されるとわかっているからこそ、 安心してこれらの偏見を言えるのだ。もし自分の意見が誰からも反対されなかったら、 そんなのこわくて絶対言えない。それじゃ独裁になっちまう。 新山がつねにマイナーな意見に寄りたがるのは、基本的にはこの手の 「独裁」的な立場が現れるのを恐れているからだと思う。 世の中には「せめぎあい」が必要なのだ。秩序と統制よりも、自由と混乱を! しかし世の中には、他人から支持されそうな意見“だけ”しか言わない、 という人も存在するようで、新山はそういう人々をひどく恐れる。 彼らがそれを自覚していればまだいいよ。でも、もしそうでなかったら…。 第二のヒトラーはいつでも現れうる。 人間は、あれから少しは賢くなったんだろうか? あやしいもんだな。
またバカをさらけ出したような気がする。ものすごい自己嫌悪
(追記: ところで新山は大学院生のときによく大学に夜中までいたが、これは別にいいと思う。 なぜならこれで奨学金が増えるわけでなし、どのみち朝は思いきり 遅刻するわけだから…。しかし、自分の“勤務時間”に対して 課金する立場になったら、それはもうプロであるから、甘えは許されない。)
それで、今日はもうスーパーも閉まりかけていたので、 冷凍しておいたゴハンと、煮物ののこりと、レトルト麻婆豆腐 (豆腐だけ必要ってやつ) と山ワサビで夕食をすませた。しかしなんだかんだで 3品はあったワケだ。 おっと、そして忘れてはならないのがダイコンの味噌汁である。 やっとここまできた。そろそろ終わるぞ、ぜぇぜぇ。
ちなみに彼女は高校生らしいが、喋っていることもほとんど 「高校生的」な話題ばっかりなんだけど、なんか聞いちゃうんだよね。 youtube や myspace ではこういう高校生ぐらいのユーザは かなり多いのだが、たいていの連中は自意識過剰なアホで見苦しい。 それにひきかえ、xnatko の表情豊かな喋りはヘタするとラジオのトークとかよりも おもしろい。 自分がハマっている食べ物だとか、Seventeen (雑誌) の記事がどーたら、 占いがどーたら。あげくのはてには暇をもてあまして Playdohを食う。 Playdohってのは米国で売ってる子供向けの色つき粘土みたいなやつだけど、 ちゃんと彼女はビデオを編集しているので、自分の「見せ方」を心得ているのだろう。 やるなあ。テレビ局はこういうのに注目しないのか? しかし本当にオレが期待しているのは、日本人でこんな感じの ビデオをアップロードするヤツが出てこないかということなのである。 べつに男でも女でもいい。でも、ぜんぜん出てこないんだよね。
すこし前にyoutubeやmyspaceの日本版を見てガッカリしたことがある。 ああいうところで「個人」カテゴリにアップロードされている動画は、 ほとんどがエロ動画か、さもなくば気取ってるだけで意味不明なアホかの どっちかだったのである。もうあんなとこ二度と見ねえぞ。 しかし、ある意味、あれは予想どおりだった。 あれこそが「日本人にとってのネット」なのだ。 こういう経験はすでに何度もしているが、wikipedia もそうだし、 slashdot.org を見たあとでの slashdot.jp とか、 theregister.co.uk を見たあとでの itmedia.co.jp とかに共通する、 「ここまで格が違うのか」という落胆だ。個人ページでも同じだ。 もう慣れたよ。こういうものを何度も見せられたあとで、 「日本語の web なんぞ見る価値なし」という意見になったとしても、 しょうがないと思う。でもガックリはするよね、とにかく。
ちなみに youtube でもうひとりのお気に入りユーザーは Urgeltである。 こっちはキャラクターがぜんぜん違う。なんだか眉間にシワよせた オヤジが出てきて「健康的な食生活」その他の固そうなテーマについてひたすら語るという もので、新山はこの喋り方が気に入ってる。眠れないときに見るのも効果的 (すぐ眠くなる)。
てくるで今日の晩ご飯はブリの照り焼きであったが、 ブリタを買ったからとは関係ない。あはは、あはは。一人ウケ。
(追記… そういえば思い出したけど NYU の近くの Starbucks には、 右腕に漢字で「山葵」と刺青した店員がいた。彼はあれがカッコイイと思っていたのか。 あのワサビ野郎は今どうしているのやら?)
どうでもいいけど (どうでもよろ, ddy)、ダイコンはまだ半分ちかく残っている。 こりゃ今日もダイコンのみそ汁だな。つくづく思うに、大根のパワーというのはすごい。 これは毎日のメニューを変える力をもっている。つまり The Power to Serve だ。(意味不明)
f = (lambda x: (lambda y: x(y))) while 1: f = f(f)
これは完全に実行可能な Python プログラムである。 一見すると永久に実行できそうだが、実際にはスタックオーバーで止まる。 なぜなら内部の lambda がどんどん増殖するから。
で、問題は、このプログラムにおいて変数 f
のとりうる型は何か?
ってことである。実際には、この値はつねに最初の f と同型だ。なぜなら
しかし、2つの型が同型だからといって、Python にとっては同じ型ではない。
Python はここまで既約してくんないので、だから lambda が増えつづけることになる。
現実的な型推論マシンがこの変数 f
の型を導出しようとすると、
どうなるのか? たぶんその出力結果には循環的な定義が含まれることになる。
つまり f の型とは、(lambda x: (lambda y: x(y)))
か、
あるいは (lambda y: f(y))
(fの型それ自身が定義に含まれる) のどちらか、
ということになる。
ちなみに、似たような状況はリストを使っても起こる:
この場合の変数a = [1,2,'foo'] a[0] = a
a
の型は何でしょう?
答: リストはリストだが、「どのような要素をもつリストか」までを
完全に記述することはできない。あえていえば
「リストa
の構造それ自身か、
あるいは int と str を要素にもつようなリスト」となり、
ここでも循環的な定義が生まれる。実用上はこれでちっともかまわないんだけど。
どうでもいいけど、トコヤ談義で世間話をするのには疲れる。 2000本安打がどうとか言われても、まったくついていけませんね。 といって、haskell の並列化について話されるのもイヤですが。
ギョーザ大王がなんと言おうと、ギョーザ作りにおいてもっとも大切な 工程は具の材料の水切りだ。この点はとくに強調しておきたい。 なぜなら、これをおこたると、焼いてんのに、まるで水餃子か焼き餃子かワカンない代物 (だいぶつ) が形成されてしまうからである。 まったく、こんな基本的なことをやり忘れるようでは、 オレには北京オリンピックに出場する資格なしだな。
現在新山が働いている会社は、社員が全部で13人しかいない。 これは、友達のあいだでは結構自慢できる小ささだが (知り合いはみんな大手メーカーに勤めているので)、統計的には こういう会社はかなり多いはずだ。 この程度の規模になると、とにかくいろいろと余裕がない。余裕というのは物質的なことも そうだし、時間的、心理的なこともふくめてである。まず、社員はほとんど全員が クリティカル・パスの上に乗っている。1人でも長期入院したり、あるいは 材料の入荷が遅れたり、月の売り上げがひどく落ちこんだり、 1台でもサーバがクラッシュしたりしたら、 業務全体に重大な影響が出てしまう。ま、実際にはこれはすこし誇張であって、 多少の余裕はあるわけだけど、いずれにせよ大きな企業に比べるとはるかに少ないと思う。 だって何百人・何千人もいる企業なら、多少どっかの資源が遊んでいてもよさそうだもんな…。 これに対してうちのような小さい会社では、どこかがマズくなるとすぐに深刻さが浮き立つ。 もっとも、これまでのところ業務は総じて順調であり、深刻な問題が 出たことはないのだが、「余裕のなさ」はつねに感じている。
とはいえ、これは最初からある程度予期していたことであって、なんにせよ 新山がこの会社に雇ってもらったことは非常に恵まれていたことだと思うし、 仕事自体も面白いし、この適度な緊張感が零細企業のダイゴミと 言えば言えるのかもしれない (←なんか他人事みたいな言い方だ)。 それにウチはいわゆる「下請け」ではなくて、 商品の企画、開発から製造、販売までやっているので (この規模で!)、 友達のトイダに言わせれば「すごいニッチ産業」ってなもんである。 うん、実際これにはオレも驚いた。しかも、buzzwordだけで売ってるどっかの ITベンチャーなんかと違い、うちはちゃんと使いでのある地味な物品を売っている。 こうしたところも気に入っている。もちろん、オレはこういう仕事をずっと 探していたのだけど。(じつは日記に書いていないが、新山の“就職活動”らしきものは 2年近く前から始まっていた。)
しかし、それでも、ときどきこの状況を冷静にふりかえってみて、 結構ギョっとすることがある。まあ、人生は綱渡り…ってほどに ギリギリでもないけれど、たしかにこうした感覚がキライな人は、 デカい会社に行けばこうした不安からは逃れられるだろう。 あるいは大学に就職するとか、いろいろあるけど、 どちらにせよ今のオレには向かない。前にも同じことを書いたけど、 キホン的に、新山が人生の「自由」を感じるのは今のような状況においてである。 つまりそれは自由と、それにともなう等量の「不安」がきちんと それなりの分量でやってくるという意味において。 魂の安息を得るために自由を売りわたす人々は、せいぜい売っていてくれ。
NY にいたころは日本食スーパーで売ってるダイコンを 買っていたが、だいたいパサパサしており、けっこうな確率でスが入っていた。 しかし NY に住むというクールさのためなら それくらいはガマンしていたのだよ!! このようなアホらしき人生からは さっさとおさらばすべきである。
(実際には、チャイナタウンで売ってるダイコンはそれほど悪くもなかった)
で、NYT の写真は、内容はそれなりにいいのだけど、 流血の惨事が映っていることが多いので、じつは食事中に見るのにはあまり向いてない。 これにひきかえ Earth Science PoTD のほうはぜひともおすすめである。 NASA の PoTD サイトは 宇宙モノの写真でいかにも「あの世的」な感じがするが、 じつは地球人が本当に引きこまれるのは「この世」である地上の景色なんだと思った。 それに、なんでもないような景色でも、解説をみると感激することも多い。 たとえば この写真。 一見すると、ただ望遠鏡の影がうつっているダケで、これの何が面白いの? と思うでしょ。しかし写真の解説にはこう書いてある:
金星が反射する光は最大 -4.5等級の明るさをもち、 これは地上にある物体の影を落とすことができるほどの光量です。 この望遠鏡の写真のように暗いところでは、金星による影はかなり簡単に識別できます。 このときの金星の明るさは -4.3等級でした。矢印 (↑) で示した所に 注目してください。これは蛍光灯に映った金星の姿です。この写真が撮られたのは フランス南東部の Breil-sur-Roya で、時刻は 2007年11月17日の 4:21 から 4:34 UTC のあいだ -- これは天文薄明 (astronomical twilight) が始まる 5:11 UTC の前でした。
ワオ、これを見るまで金星の影などというものがありうるとは知らなかった! (月明かりが影をつくることは知っていたが) 正直なところ、このような感動的な体験をすることはあんまりなく、 毎日これらのページをチェックしていてもそういう洞察は これまで 2〜3回ほどしかない。でも、そもそも web を見ていて 感激するってことはほとんどないので、それを考えれば これらのページの当たり率はかなり高い。
もちろん、どっかのニュースサイトやアホサイトを毎日毎日毎日見て (そして受け売って) いる人々にわかってもらえるとは思わないよ。ホントに。
会社のマシンがあんまり意味もなく遅いので、 かたっぱしからいろんな設定を切ってみた。 その結果、Vista で最低限必要と思われるサービスは以下のようなものだと判明した。 ちなみに、条件は「通常のネットワーク (社内/社外) が使えて、 プリンタが使えて、音が出る」ことである。
それで、これら最低限のサービスを走らせた状態で ログオン直後の占有メモリがすでに 600MBytes だ -- XP はこの状態だったら 60MBytes しか食わないぞ。いったい何にそんなに使っているのか、 オレには見当がつかないが、web の情報を見るにほとんどキャッシュらしい。 まあいいよ、残りメモリが少ないことは utilization 率が高いということで、 ある意味ではいいことである。本当にちゃんと有効活用してるんならね。 でもオレは Windows Search とか Firewall とか Security Center とか、 Superfetch とか、無駄なもんはすべて切っている。 それなのにこれだ。ちなみにサービスを切っても起動はたいして速くなんない。 とくに、ログインしてからが死ぬほどおそい。いったいいつまであの趣味の悪い ログイン画面を見てなきゃならんのだ。ちなみに新山の環境は 1280x1024 で、描画オプションはほとんどオフ、背景は単色である。 どうでもいいけど (どうでもよろ)、新山はいわゆる「壁紙」をはっている人間が 理解できん。だって、ウィンドウ開いたら何も見えねーじゃんか。 壁紙を見るためにわざわざウィンドウを小さくしておくとか? 本末転倒。
結論をいうと、たぶんサービスを切ってもあんまりチューニングにならないので、 ウザい画面効果のみをオフにしておくのが賢いやり方であろうと、思はれる。
そんで、あいかわらず一番使っている「3大アプリケーション」は
VirtualBox (上にインストールした Debian) と VNC Viewer、そして
DOS窓である。これがなかったら仕事になんない。
VNC を使ってるのは、VirtualBox で X を起動するとフォーカスが取られて
Meta+Tab で他の Windows のウィンドウに切り替わんなくてムカつくから。
ちなみに新山は次のようなファイルを macros.txt
として保存しておき、
cmd.exe /K "doskey /macrofile=macros.txt"
をショートカットとして
起動している。これで、UNIX風のクセを直さずにすむ。
以外と知られてないが、DOS窓でいちばん便利なコマンドはd=cd %HOME%\desktop h=cd %HOME% e=notepad $* o=start $* c=type $* l=more $* la=dir/a- $* ll=dir/q $* ls=dir/w $* rm=del $* lns=mklink $* date=date/t$ttime/t ps=tasklist psu=tasklist/fi "USERNAME eq %USERNAME%" ..=cd ..
start
だ。
これは OSX でいうところの open
に相当し、
ようするにファイル名や URL を与えればテキトーに関連づけされたアプリケーションで
開いてくれる。あ、もうひとつ改良してあるところがあった。
それは
HKCR\*\shell
とか HKCR\Directory\shell
を
書き換えて、どこのどんなファイルやディレクトリに対しても
notepad と WinVi と DOS窓で開けるようにしてあることである。
これでだいぶ作業効率はあがったが、唯一の不満はDOS窓のフォントが
ヘボいことだ。ほとんどの作業はいまだに kterm 上の Kappa 20 で見ている。
いやーこれは kterm と並んで日本人が開発したもっとも偉大な
ソフトウェアのひとつだね。
きょうは図書館へいったが、また何も借りずに帰ってきた。 新山の図書館使用法はかなりいきあたりばったりで、ほぼすべての本棚から ランダムに本を抜き出しては読むのだが (で、そのあと返却場所がわかんなくなって、 カウンターに行って返却してくる)、だいたいその場で何冊か読むと疲れてしまい、 そのあと借りる本をさがす気力がなくなってしまうのだ。 あと、今日のような陽気のいい日は館内が微妙に暑かったこともある。 ああいう場所にあまり長くはいられない (といっても、2時間ぐらいいたのだが)。
ところで、日本の図書館では読み終わったあとに本を自分で書架にもどすことが 推奨されているかのようなところがあるが、あれって一般的なんかね? 米国の図書館では、取った本は自分の手で棚に戻しては いけないとされていた。すくなくとも NYPL ではそうだった。 本を書架に戻すのは図書館員の仕事なのだ。図書館の検索性を考えると、 素人が間違った場所に戻してしまうことのほうがよくないことなのである。 ときどき、新山の実家の近くの公立図書館には書架がえらく荒れている 時期があって、そういうときは明らかに分類のちがう本が関係ない棚に 置かれていたり、目録にあるはずの (しかも貸出もされてないはずの) 本が見つからなかったりする。 こういうときは図書館員に聞いても「じきに蔵書整理をやりますので…」 と言われてしまい、実にがっかりするのだが、これは一般人に本を 返させるのが原因だと思う。 まあ、人手が足りないのかもしれないが…。図書館を見ればその自治体の 文化レベルがわかるとはよく言ったもんだ。
ところで (てくるで)、GUIアプリの自動テストってどうやるの? もちろん、手でパッコン、パッコンとボタンを押していくだけの手動のテストは 機能が多いアプリケーションではやってらんないし、 新山 (が現在作っているソフトウェア) の場合は 入力ファイルによってふるまいがさまざまに変化するので、 そんな悠長なことをしていたら間違いなく 給料ドロボーだと思われてしまう。 プロとして仕事をするなら、どうしたって 自動テストを考えなきゃなんない。新山はいまのところ 簡単なイベント生成器を使ってやっているが、 これは本当にただ何も考えずイベントを生成したり、一定時間待ったりするだけの 原始的な機能しかないもんで、テストケースを作成するときに 「えーといまこの画面のはずだから…、このキーを押してぇ、つぎにこの部分を押してぇ」 とゆうふうに想像しながら書かなきゃなんない。でも、 testingfaqs.orgをみると、GUIテストツールの詳細な一覧が載っているが、 基本的にみんな同じことをやっているように見える。 こうしたシステムを多少なりとも「高度」なものにして、原始的な イベントのかわりにボタンを押すようなシグナルが送れたとしても、 結局のところ (ケッキョキ) GUI部分が実際に正しく 機能しているかどうかを判定するためにはプログラムのレスポンスを見る必要がある。 そしてこれは「ウィンドウが開いたか」とかいう単純な検査ではほとんど意味がないのだ。 そういえば大学にいるときに、こういったアプリケーション側の挙動を OSの低レベルな API の呼び出され状況から機械学習によって推測するという研究を 見たことがあるが、給料ドロボーとはああいう連中のことをいうのだ。 どちらにせよ、ただイベントを送るだけではダメなのだる。 もっと洗練された方法はないの? Linux 用には dogtail というのがあるらしいが、えーとこれは…overkill だ (そもそもこれは GNOME にしか使えない)。新山の場合は、 これはログ解析と組み合わせてやっている。もちろん新山は この手のプログラムを設計するときに、 最初からテスト用のための設定変更やログ監視機能を山のように組み込んでおいたので (test what you fly and fly what you testだぜ、man!)、 ログをみればだいたいプログラムがどのような状態遷移をしたかがわかるし、 実環境にインストールされたときにもデバッグ用の情報を集められる。 しかし、新山の状況では、状態遷移がそんなに単純ではないので、 これをどうやって高レベルに記述するかが問題だ…
ちなみに、実際のテストは python による実行環境の制御とイベント生成、 python によるログ解析を組み合わせてあとは全部 DOS のコマンドだけで 実装している。だから書くものは全部テキストベースだし、 自動テストの実行時にやるのはこんだけだ:
> nmake test
さてさて、IDE はあなたの生産性を 100倍にも向上させておられますか?
(部屋の片隅にうずくまりながら) Look, おれはジブンタチハカシコイト思ッテいル実はバカ集団を 相手にするんはもう飽きたんだよ。たのむからジブンタチハカシコイとだけ 思っててくれ、オレにかまわんでくれ!
(これは
おさけ
です
とやるよりも、文字列を使ったほうがいいと思う。FOO = 1 BAR = 2 ...
こうすると数値が衝突しないかどうか心配する必要がなくなる。 つまんないトリックですが、そういうものです。FOO = 'FOO' BAR = 'BAR' ...
x = x+y
は破壊的な操作ではない。
これは、左辺の x の中身を破壊的には変更せず、
つねに新しいオブジェクトを作成して代入することを意味する。
たとえば x
がリストの場合、
これまで x
に入っていたリストは変化せず、
x+y
の連結の結果としてあたらしく作られたリストが
x
に代入される:
>>> a=[1] >>> b=a >>> b=b+[2] >>> a [1] >>> b [1, 2]
そして新山は今まで、x += y
は
つねに x = x+y
と等価だと思っていた。
実際、文字列やタプルに対しては x += y
は
x = x+y
と同じようにふるまう:
>>> a='1' >>> b=a >>> b+='2' >>> a '1' >>> b '12'
>>> a=(1,) >>> b=a >>> b+=(2,) >>> a (1,) >>> b (1, 2)
上の例では、元の a
の内容は変化しない。さもなければ、
immutable なオブジェクトに対する +=
はエラーになるはずだ。
つまり +=
は破壊的な操作を意味しないってことになる。
ところが、左辺がリストの場合だけ、 +=
は実際には
破壊的な append
になるのだ!!
ガーソ。なんだこれは。話が違うじゃないか。 このリストだけ特別扱いという一貫性のなさはなんだ。 どこかにちゃんとドキュメントされているのかもしれないが、 ドキュメントすれば何やってもいいワケじゃねえだよ!! くそったれ。>>> a=[1] >>> b=a >>> b+=[2] >>> a [1, 2] >>> b [1, 2]
おそらくは、Python 1.2 あたりの時代 (appendメソッドという概念がなかったころ) にリストを操作するために 作られた仕様が互換性のために今日まで生きのびてきたのだろうと好意的に解釈するが、 それにしても今までこの状況を知らずに入れてきた (かもしれない) バグを 考えると恐しくなる。 新山はおそらくリストを拡張する場合は必ず append を使ってきたから 問題なさそうだが、他のプログラマもこのことを知っているのかな。 こんな仕様は Python 3 でサッサと駆逐してもらいたい。 まあ、新山が Python 3 を使うのがいつになるのかはわからないけれど。
Document ID: ac4adc8cf0967b93701fed9e5a1ef31e
Yusuke Shinyama