最近のトラックバック

2021年7月
        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 29 30 31
無料ブログはココログ

« 2008年12月 | トップページ | 2009年2月 »

2009.01.27

Memory Mapped Fileの件

 Tacticoで妙なバグを追いかけているうちにWin32の罠にはまっていた。Memory Mapped Fileを使うところで、前から再現性のいまいちないバグがあるなあ、と思っていたのでその関連の機能整理とUnitTestを追加したところ再現手順が判明し、とうとうお縄となりました。

 問題はこのAPIで、

 [DllImport("kernel32", SetLastError=true, CharSet=CharSet.Auto)]
 public static extern IntPtr CreateFileMapping(
   IntPtr hFile, IntPtr lpAttributes, int flProtect,
   int dwMaximumSizeLow, int dwMaximumSizeHigh,
   string lpName);

 lpNameが指定されていて、この名前で既存のMemory Mapped Fileがある場合、hFileが有効なファイルハンドルである場合であってもlpNameで指定したほうが優先されるという仕様が存在しているようだ。

 簡単に言えば、

CreateFileMapping("a.txt", "xxx")
CreateFileMapping("b.txt", "xxx")

 とした場合、b.txtを開いたつもりがa.txtの中身を見てしまうというわけだ。しかも、今までの使い方では、開く対象はいつも同じファイルで、Memory Mapped File作成後にファイルの更新をすることがあるため、

CreateFileMapping("a.txt", "xxx")
[a.txtを更新する]
CreateFileMapping("a.txt", "xxx")

 となって、2番目に開いたときは書き込む前の内容が見えてしまうということになる。ファイルの更新をしなければ正常に見えるので発見が大変になった。

 これははまりどころだ。Win32の達人ならこんなの常識なんだろうが、この追跡に1時間以上かかるようでは俺もまだまだ洞察力が足らないな。

2009.01.17

【本】反貧困

 派遣村で一躍有名になった人の本。
 「ちょっと仕事でつまづいた」という状態からホームレスになるまでの間のセーフティネットを充実させるべきだ、という意見には賛成だし、この周辺の行政(特に生活保護関係)が腐っていて制度として機能していないのもよくわかるんだが、今後どうすればいいのかというのは難しい。

 これに関連した問題で前から気になっているのがある。世の中全体で、技術と資本の蓄積が十分に進み、生産性が極限まで高まると何が起きるのか? 現代はその過程の中でどのくらいの位置にいるのか? という問題だ。

(1) 生産性が高まったので、単純労働しかできない低スキルの労働者は少ししか必要とされなくなる。スキルと職をめぐる競争が激化し、敗れた者は飢えて死ぬ。(いまのアメリカと日本はこの路線の途中に見える)

(2) 実はそうではなく、生産性が高まったので、世の中の全員が労働しなくてもみんな食って行ける。ベーシックインカムのような制度がうまく機能して、労働はやりたい人だけがやるような世の中になる。ニートはごく普通の社会的状態になる。(共産主義の理想形に近い。もしこうなったら、「働いたら負け」という言葉はものすごく時代を先取りしていたことになる)

(3) そのどちらでもなく、現在はまだ「生産性が極限まで高まる」という状態には程遠いレベルであるので、貧困問題は産業革命以後と全く同じ理由で発生している。

 個人的希望としては(2)なんだが、なにしろ人類史上はじめての社会形態なので予期しない問題もいろいろ起きるだろう。もし僕が生きてる間にそれを目撃できたらそれほど幸運なことはない。

 あと、保護を求める人は何かと憲法25条で保証された「健康で文化的な最低限度の生活」というのを根拠にするが、これはたいへん腹立たしい。憲法をよく読むと、12条には

この憲法が国民に保障する自由及び権利は、国民の不断の努力によつて、これを保持しなければならない。又、国民は、これを濫用してはならないのであつて、常に公共の福祉のためにこれを利用する責任を負ふ。

 と書いてある。ちょっと失業したくらいで行政に保護を求める奴がこの理念に反してるのは明らかだ。

 「健康で文化的な最低限度の生活」の保証というのは、ナチスの強制収容所ほどにはひどくない生活、というぐらいに理解しておくのが無難だと思うよ。今の政府に多量のニートを養う余裕があるわけないもの。

2009.01.08

買い換えた携帯がクソすぎる

 年末に携帯買い換えました。
 今まで使ってたのはいよいよ電池がへたって、フル充電しても5分しか通話ができなくなってしまったのでな。

 前から、買い換えるときはタッチパネルが使えるやつにしよう、とは決めていた。iPod touchより劣っているのは確実だろうが、その差の正体をはっきり知るために。
 で、店頭で適当に選択したのがF-01Aというやつ(タッチパネル式の中ではどれも機能は大差ないので色と外見で決めた)。

 ところがこれが相当にひどい。
 機能上、本体を開いて使う「通常モード」と閉じたまま使う「ビューアモード」というのがあるのだが、物理的には同じパネルを使っているのにも関わらず、タッチするUIはビューアモードでしか使えない。ブラウザとかワンセグとか同じアプリケーションが動いているのに、ですよ?
 一般に、ユーザに対してある機能を使用不可にするとき、それがなぜなのかがユーザに伝わるかどうかをよく考えないといけない。何も変更していないときに「上書き」ボタンをグレイアウトするのは正しいが、ディスク容量が足りないときにそうしてはいけない。事前にディスクが足りないとソフトウェアが知っている場合でも、ユーザに上書きを試みることは許し、その後初めてメッセージを出すようにするべきだ。

 僕はソフトウェア作成歴は長いから、おそらくこの制約は、メモリが足りないからとか、タッチパネルのない機種とソフトウェアの基盤を同一にしないといけないから、旧バージョンで動いているコードになるべく手を加えたくないから、といったことが理由だろうということは想像できる。現場を知る立場では、この制約は自明なのであろう。
 でも一般のユーザはそんなこと知らないからな。この制約はひどい。デザイナーがいかれてるのか、ダメなデザインを軌道修正できない組織がいかれてるのかどっちか、またはその両方だ。

 さらに、タッチパネルでの文字入力はその上を行くダメさだ。これは驚愕したので、富士通の製品ページからリンクしてあった広告用ブログ?から画像を拝借して紹介。
 文字入力は画面上のボタンをタッチして行うのだが(これはiPhoneでもそうだ)、指で押すためにそれなりの面積が必要なのと画面が狭いことが災いして大変なことになっている。'A'を入植したいときはまず'ABC'を押して、
K_1
次に'A'を押す。
K_2

 このような画面切り替えを1字1字ごとに(!)しなくてはいけない。こんなクソはめったにお目にかかれない。iPhone 3Gよりも後に発売した製品がこのありさまというのは日本の恥である。

 それでも、製品に「ユーザにこんな体験をさせたい」という意志が満ちていれば少々の欠点には目をつぶれるのだが、もちろんそれもない。この'意志'はこの記事でいうところの'ソウル'である。僕にとってはこれがソフトウェアを作るときにいちばんおもしろいところで、自らのソウルがうまくソースコードになり、意志が他人に伝わるのを見るときが苦労の報われるときである。

 この携帯を作った人のほとんどはそういう経験がなく、上司に渡された仕様書の通りに作ること以外のことをしないからこういうクソが市場に出回ってしまうのだろう。
 プログラマは常に、自分の作業用PCに向かう前に、これから自分が作るものの競合製品をよく見てそのよいところ・悪いところを熟知しなければならない。良いところは法に触れない範囲でマネをし、悪いところはその原因を見極めて追放するというのが基本だ。これなくして製品は作れない。

2009.01.03

新年

 あけましておめでとうございます。
 年末に携帯を買い換えて、そのソフトウェアの出来の悪さに驚いてるんだけども、新年早々そういう話題は何なのでざっと今年の展望を。

【イベント】
* 娘の誕生(2月末ごろ)
 今年最大のイベントはこれでしょう。仕事との両立をどうするかは今から頭が痛いが、楽しみである。
* Hearts of Iron 3発売(秋~冬)
 第二次大戦のゲームの続編が出る。(紹介記事)
 時間がとれれば日本語化作業に協力もしたいんだができるかな。

【仕事】
 Tacticoは本格着手から2年が経ち、今年は収入に寄与する年である。
 既存の契約の収入見込みに、いま来ている話が全部成立すると仮定して加算すると今年の僕の収入の見込みはサラリーマン時代の10倍を超えてしまうが、全部成立するとは限らないし、あまりガメても税金で取られるだけだし、人を雇えばその資金もいるのでそんなに楽観はできない。
 あと、時間が取れる自信はあまりないが、Tactico以外の活動もしたい。第一候補はPoderosaのちゃんとしたメンテナンス開始、第二はiPhoneに関係した面白そうなオープンソースプロジェクトに参加、だ。(イチから立ち上げる余裕はさすがにない)

【政治】
 今年は民主党政権ができそうな気配だが、gdgdなのは変わらない。
 まあ政治主導で何か日本に有用なことができる気はしないのでどうでもいいといえばどうでもいいんですが。僕は選挙区は又吉イエス、比例は民主に入れます。

【経済】
 いよいよ混沌としてくると思うが、一つ確かなのは、ここ半年くらいで各中央銀行が供給した資金を適切なタイミングで吸収することはたぶん無理、ということだ。なので、その資金の受け皿としてどこかでバブルが発生する。いつごろどの市場でそうなるかはわからないが、これをきちんと読み切れれば大きく儲かるはず。

 しかし基本は健康ですわな。僕も血圧は危険な水準だし、同年代の友人でも肝臓がおかしくなる人がいるしで安心してはいられない。

« 2008年12月 | トップページ | 2009年2月 »