Diary?::2009-05

2009-05-01
Fri

(14:17)

朝っぱらから体調が激烈に悪かったので、今日はお休み。いや、昼頃には回復はしたが、まあ無理は良くない(それに今は暇だし)。というわけで(どういうわけだ)月曜の日記の続き。

あれを読んだ人の中には「じゃあITゼネコンがピンハネループの下の方の会社と直接契約すれば金払いが良くなるんじゃね?」という至極真っ当な疑問を抱いた人がいるだろうけど、残念ながらそれは以下の理由により無理くさい。

まず最下層のピンハネ業者が下請けの人間に対してまず言うことは、「名刺をITゼネコンや上位のピンハネ業者に渡すな」というもので、何でそんなことを言うのかというと、万が一そいつができる奴でITゼネコンとかに気に入られると、一連のピンハネ業者兼ソフトウェアハウス間のパワーバランスが崩れてしまうから。ってかぶっちゃけてしまえば、中間搾取構造が崩れるからなんだけど。実際にはバンバカ名刺のやり取りが発生しているみたいで、それを前提に各社動いてる節があるんだけど、建前としてはITゼネコンからへのアピールはするなということで協定が結ばれていると思っていいだろう。

そしてもう一個(こっちはかなり予測が入ってるけど)理由があって、ITゼネコンの契約・要員管理の問題があって、それまではピンハネ業者の上位層をいくつか相手にすれば良かったところに、ピンハネループの下の会社が何社も上がってくると、そいつらの相手もしなくちゃいけなくてちょっとこれは管理負荷が大変な事になるかもしれない。かつて俺の居た現場では基本的に会社単位でチームが組まれていて、ITゼネコンであるITゼネコンはそれらの各社を統括するような開発体制で、一連のピンハネグループはあくまで最上位のピンハネ業者一社という扱いになっていた。そしてこれはやってる作業の内容とはあんま関係なかった覚えがある。この状態ってピンハネグループを丸ごと一個の会社として扱った方が、権限の移譲と管理負荷の軽減という観点からは有利だったりする。

つまりピンハネループから抜け出すのって思ってるよりも大変で、むしろ今の雇用・契約・開発体制はピンハネループを是とする形になっているとさえ言える。かと言ってそのまま中間搾取で旨味を削られ続けるのもバカらしくて、何か手を打たなければいけない。例えば弊社では社員を「ITゼネコン直請け組」と「中間搾取上等組」に二分していて、直請け組はそれなりの SIer からの直請け仕事をメインにしていたりする。当然この両者は本人のスキルで分けられていて、上澄みと沈殿みたいな棲み分けになっている。

とはいえこれは中間搾取構造の中でちょっとでも儲けを増やすための策でしかないので、状況を根本から改善するにはもっと別の方法を取らないといけない。例えばパッと思いつくのは

  • パッケージソフトを作り、それの販売・カスタマイズ・サポートで利益を出す
  • 既存の管理体制や技術者の単価の決定方針を変えて、下請けの技術者にもまともな給料が払われるようにする

の二つ。問題はどちらも激烈に難しかったりハイリスクだったりするので、おいそれとはできないということだ。特に後者は難しいんだけど、それなりの規模のプロジェクトで開発者の知性を大バカと動物の間で見積もったような開発規約・標準が策定されてまともな技術者の生産性をガタ落ちさせている事の原因ともつながると思っている。

じゃあその原因って何かというと、その一つとしては技術者が信頼されてないってことじゃねえの。そもそも素人を雇って三ヶ月程度教育して、それで現場に出すというやり方じゃ、とても信頼なんてしてもらえないよ。俺が去年三ヶ月ほどいた現場は、開発に携わる面子や顧客企業に合わせて RUP をカスタマイズしたかなりまともな開発体制になっていたけど、そこは素人の投入は認められていなくて、ある程度のスキルセットが求められる現場だった。

もちろん顧客企業の文化とかITゼネコンのやり方とかに左右される部分も大きいだろうけど、それらを変えるためには開発者のレベルの底上げも必要で、まずは素人を最先端のイメージで連れ込んで売っ払うような女衒紛いの雇用体制をどうにかしないとダメだろうな。

かといって「素人お断り」とかやっちゃうと誰も来てくれないというのが下請けソフトウェアハウスの現状で、俺みたいに軽く精神的にアレになって人生投げてないと、情報系の大学出身者が場末の下請けに入社とかあんまりねえよな。どうしたもんかな、これ。

(18:39)

デビルサバイバー4日目クリア。3日目ほどには苛烈な戦いがなかったせいか、割とあっさり。仲魔含めたパーティ構成はこんな感じ。

  • 主人公Lv32 / 妖獣アーヴァンクLv28 / 霊鳥スパルナLv25
    • 主人公のパラメータは「力:11 / 魔:21 / 体:5 / 速:11」
    • 妖気迅雷+飛翔で接近、主人公の全体攻撃で一気に薙ぎ払うのが理想形
  • アツロウLv30 / 邪鬼ロアLv29 / 龍王ペンドラゴンLv25
    • インファイトに持ち込めば勝ち。物理耐性対策がアツロウの今後の課題
  • ユズLv30 / 霊鳥ヴィゾフニルLv28 / 妖精シルキーLv27
    • 基本は消耗しそうな奴の近くで回復役兼とどめ
  • ミドリLv30 / 魔獣ケットシーLv29 / 邪龍バジリスクLv28
    • 残ったスキルと仲魔を適当にアセンブルしてできたチーム。これはこれで殲滅力が高い
    • バジリスクはユズのチームのヴィゾフニルと変えた方がいいかも

ちょっと敵に物理耐性やらヤバい能力持ちが増えてきたし、なによりレベルがこっちより高めなので、フリー戦闘でスキルクラックと経験値を稼いだ方が良さげ。あんまフリー戦闘で稼いでると本編がぬるくなりそうなんで、程々にしとくけど。

(21:59)

クライマックスに向けて加速しっぱなし。笹塚の死とか裏切り者の存在とか完全体 XI のお披露目とかいろいろあったけど、とにかく全面的に救いのないお話だ。そりゃあ弥子の心も折れるわ。そんな嫌な空気を一発で払拭するアヤはあまりにもキャラとしておいしすぎる。

あと葛西おじさんは中年で放火魔でモク中というどうしようもない設定なのに、シックスの五本指で一番格好良かったな。

2009-05-02
Sat

(18:42)

デビルサバイバー5日目クリア。育てた仲魔を合体でガリガリ強化して行ったら控えの仲魔が足りなくなったりして軽くピンチに陥ったりしたが、笑えるぐらい主人公の火力が高くなってるので多少の事故は無問題。

問題なのは敵を逃したらミッション失敗系の奴で、こっちはスキルクラックを狙い始めるとかなり難しくなる。敵の行動範囲とアルゴリズムを読んで、最適な行動をしないといけなくなるからな。

  • 主人公Lv40 / 妖獣モスマンLv37 / 女神ブリジットLv38
    • 主人公のパラメータは「力:13 / 魔:22 / 体:7 / 速:14」
    • ピーキーなパラメータにしてたら上位スキルが使えなくなってきたので、帳尻合わせの最中
  • アツロウLv37 / 妖精ローレライLv36 / 幻魔ハヌマーンLv35
    • 開幕マカジャマオンでインファイトに持ち込めれば詰み。貫通のおかげで物理耐性にも対処できるし
  • ユズLv37 / 霊鳥バイブ・カハLv37 / 魔獣オルトロスLv36
    • 獣の跳躍が殴りつつ他のチームを回復するのにうってつけ
  • ミドリLv36 / 魔獣ケットシーLv31 / 鬼女ペリLv33
    • 相変わらず寄せ集め。ケットシーもペリもそろそろ入れ替え

ところで俺はメガテンシリーズをやるのはこれが初めてなんだけど、テクノロジーと神話世界の融合ってこのシリーズのお約束なのかね。

(19:55)

さて諸事情によりマジでなるたけ早く引っ越さねばならなくなったのだが、やっぱ駅から近くて 2DK となると市川でも結構な値段になるなあ。駅から程々の距離になればもうちょっと安くなるんだが、駅から遠いとタルくて仕方がないというのは身に染みてわかってるし。流石に今の駅からアパートまで徒歩で20分近くかかるのはもう勘弁ってことで。

このままだと普通に生活が厳しくなるので、いい加減転職活動も考えないとな。不況でさえなければ今の会社に賃上げ交渉してもいいんだけど、既に今年度分の昇給ストップとボーナスカットが宣告されてて、この不況がいつまで続くかわからん以上は期待しない方がいいだろうな。

(21:11)

ここ最近は会社のサーバマシンのメンテとか移行とかの作業をしてたんだが、そんときに軽くハマったというかやっちまった事を備忘録代わりに書いておく。

bash で「文字列を特定の区切り文字で分割して結果を配列に代入」というのを、俺は次のようにやっていた。

s="a:b:c"
array=(${s//:/ })

こんなもん気がつかない方がマヌケっちゃそうだけど、元の文字列に空白文字が入ってるとダメだ。つまりエスケープというか適当な文字列への置換とそこからの復帰が必要だったりするんだが、もうちっと何とかできないものかねこれ。いや、別にシェルスクリプトでそんな汎用的な split 関数みたいなのが使えなくても、そんなに困らないっちゃそうなんだが。今回ポカをやらかした奴も、素直に awk 使ったりして必要なフィールドだけを取り出してれば別に問題なかったし。

しかし普段全然シェルスクリプトとか書いてないから、いざ必要になるといろいろ変なミスをやらかしちまうな。

2009-05-03
Sun

(13:36)

UNIX システムの導入に億単位の費用が掛かり、そうして導入した一台の UNIX を百人ぐらいで共用していた時代のシステム管理者のエッセイ集みたいなもの。基本的な流れはこんな感じ。

  1. まずは世間話から始める
  2. 世間話から UNIX システムの心構えやシステムの考察に移る
  3. UNIX 管理の実戦で行ったことを書いて〆

流石に三番目の内容はかなり古い話なので、それなりに興味深いけど結局「そういう時代もあったんだな」で終わってしまいがちで、ぶっちゃけそこは割とどうでもいい。本書の価値は、間違いなく各章の世間話からあらゆる事象について観察・考察し、その事象の背後のシステムを分析し、自分のフィールドにおける教訓のようなものを見出すところだ。例えば延々とラジコンカーの改造をした挙句、結局は別のマシンに乗り換えたらさして苦労せずに抱えてきた問題を解決できて、ベースとなる設計思想が根本的な差異を生むのだなあと実感する話とか、近代的な電車が発展するに従って雪に弱くなって行くのを目の当たりにして、単純な仕組みにも利点はあるんじゃないかと思い至る話とか。

というわけで技術者魂を感じる面白い本なのだが、今見たら bk1 じゃ買えないでやんの(ちょっと前までは買えた気がするんだが)。ジュンク堂になら多分まだ在庫があるはず。

(17:07)

デビルサバイバー、6日目クリア。事前に炎攻撃がヤバいという情報があったので、ベル・イアル相手にもさほど苦労せず。確かに毎ターン結構な HP を回復されてしまうが、主人公の火力がそれを上回るので、他のメンバーが雑魚相手に壁をやってればまず負けない。実際には MP がちょっとギリギリだったけど、足りなかったら吸魔でもつければいいことだしな。撃破時の面子はこんな感じ。

  • 主人公Lv48 / 妖獣モスマンLv40 / 魔王ヘカーテLv44
    • 主人公のパラメータは「力:13 / 魔:25 / 体:11 / 速:15」
    • 何かもう、主人公は下手にバランス取らずに育ててしまっても良かったかも
  • アツロウLv46 / 妖精ローレライLv39 / 妖精ヴィヴィアン
    • 見ての通り、ヒーラー二人抱えての壁
  • ユズLv42 / 霊鳥バイブ・カハLv38 / 魔獣オルトロスLv38
    • 大分中途半端だが、まあ時間稼ぎぐらいにはなるかなと
  • ミドリLv45 / 神獣アイラーヴァタLv42 / 女神ビリジットLv40
    • 適当に入れ替えていたら結構強いパーティになった

さてそれで6日目が終わろうかというときに、ストーリーに大きな分岐点が出てきた。どうもこれまでのプレイ内容で分岐の数が変わるようで、俺は以下の選択肢が出てきた。

  • ナオヤ・カイドールート
    • 主人公が悪魔の王位争いを制して魔王となり、神を打ち倒すことで人類を神の支配から解き放つ
  • アツロウルート
    • 悪魔を制御する方法を見出し、人類の発展に使う道を模索する
  • ハル・ジンルート
    • 悪魔を一掃し、元の日常を取り戻す
  • ユズルート
    • もう何もかもうっちゃって逃げる

あと多分、アマネあたりも選択肢に出てこれると思う。それでこっからどれを選ぶかだけど、常識的に考えればハル・ジンの二人に協力するのが後味のいい終わり方になるよな。選択肢の出方を見ると、アツロウルートが一番のグッドエンドというのがかなりありそうな線ではある。

まあ俺はナオヤルートを選んだけどな。そしたらユズ・ケイスケ・ミドリの三人が抜けやがり、その代わりとしてナオヤとカイドーが加入。ってかアツロウはなんだかんだいって抜けないのな。マリ先生は試しに「危ないから付いてくるな」を選んでみたら、マジで加入しなかったのでちと困った。何しろカイドーは見事な物理攻撃専門家で、潰しが効かないからなあ。まあ何とかなるだろ。

2009-05-04
Mon

(12:54)

デビルサバイバー7日目。先週は3日しか働いてなかったから、俺にしては進みが早かった。

7日目冒頭のミッションがアマネを拉致るという真っ黒なミッションなのだが、そこでナオヤが「神の子・カイン」とか呼ばれて、ああそういう事だったのかと納得。となればアベルも出てくるし、このゲームのベルの王って

  • ベル・デル -> バルドル
  • ベル・イアル -> ベリアル
  • ベル・ゼブブ -> ベルゼブブ

みたいなもじりだから、ベルの王位争いにアベルが巻き込まれるのも当然で(ベルの名を持つものだからな)、そうなってくると一番バッドエンドくさいナオヤルートがある意味じゃ一番真実に近づけるのか。

ところで俺はメガテンシリーズはこれが初めてなんだけど、出てくるキリスト教関連の概念にミトラ教の影響を感じるな。それに仏教、キリスト教、イスラム教等の宗教は多かれ少なかれ起源の一つとしてミトラ教を持っているので、その辺を混ぜ合わせてキリスト教の固有名詞ベースに構築したという解釈でどうか。

で、そのミッションでは取り巻きの敵が揃いも揃って邪念の波動持ちなのがキツく見えるが、遠隔攻撃持ちはエクストラが取れないのでインファイトに持ち込めれば勝ちだ。接近手段は飛翔持ちの仲魔を使いまわすか、邪念の波動以上のリーチの混沌の波動持ちを使えばどうにかなる。さらに敵が物理型と魔法型に割と二分されており、属性相性も分かれているため、それに対してカウンターを取る形でパーティを配置すれば万全。ちょうど俺は「主人公・ナオヤ」が魔法型、「アツロウ・カイドー」が物理型なので上手い具合にパーティを振り分けられる。あとはアマネの配下をこちらの遠隔攻撃持ちで削って、最後は主人公の万魔の乱舞で終了。

その後はアマネの精神世界でイザ・ベルとの戦いなのだが、火炎耐性で固めたパーティなら無問題。というか主人公の攻撃四発で沈んだ上、取り巻きも大して強くなかったのでアマネよか弱かった。もっと悲惨なのはその後の四天王、特にビシャモンで、物理反射持ちのパーティに殴りかかって勝手に死んで行った。おいちょっとまて、俺殆ど何もしてないぞ。ってかビシャモンって Lv65 もあって強そうだったのに、 Lv54 〜 Lv51 の面子で余裕で撃破できるとか一体。これは完全に相性勝ちだったな。残りの四天王もさほど苦労せず。

ベルの王位争いのラスト二体の片方、ベル・ゼブブは物凄い遠隔攻撃と産卵->孵化のコンボでの雑魚の増殖がウザく、さらにほぼ全属性に吸収・無効・耐性のどれかが付いているという終わってる奴だったが、万魔の乱舞やメギドで削りつつ、 MP 回復能力持ちを組み合わせればまあ普通に押しきれる。その後天使連中の茶々が入ったが、こっちは割と速攻で終了。というか取り巻きの雑魚を処理する方が面倒だった。その時のやりとりで主人公がアベル(このゲームではア・ベル)だと判明したが、いやもうナオヤがカインという時点で予想が付いたって。

残すベルの王位争いの相手はベル・ベリトだけなのだが、こいつがまたインチキくさい。まず翔門会の教祖を喰らいつつ登場して「人間どもめ、騙されおって」みたいな台詞を吐く時点でインチキだが、性能の方も射程無限大という究極のインチキ。しかもステージ中の仕掛けを作動させないと普通にベル・ベリトのところまで辿り着けないというトラップまである。何にせよ魔力 30 の主人公の猛攻に耐えられるはずもなく、対処しないと無限に湧きつづける雑魚の方がまたも厄介だったが。

そんで後はラスボスであるバ・ベルだけなんだけど、こいつは一旦倒してもその後に今まで倒したベルの悪魔と連戦になり、それらの後に構える真のバ・ベルがあろうことかLv77という舐めた奴で、こっちの最大レベルは主人公とナオヤの62という状態では勝ち目ゼロ。体力を半分削ったあたりで全滅したぞ。弱点属性がバリアチェンジっぽく変わるのも厄介で、恐らく全属性について属性相性を用意しないと削りきれなさげ。

さて、どうしたもんか。いい加減レベルの伸びが悪くなってきてるので、純粋に戦術で勝つしかないんだが。

(16:31)

デビルサバイバーをクリア。レベルは主人公が64ぐらいでいけた。主人公のパーティはシヴァとコウモクテンを擁してとにかく火力で押し切る事にした。コウモクテンの鬼神双手で二回攻撃できるので、バ・ベル第一形態とか他のベルシリーズをあっという間に殺しきれる。あとはイザ・ベルとの再戦が実は鍵で、マップ兵器を持っていなくて移動してこないという性質を逆手に取って、延々と天使の血杯で MP 回復が非常に効果的だった。すげえ面倒くさいけど。

で、エンディングになったんだが、大雑把に言えば「俺たちの戦いはこれからだ!」という終わり方。もうちょっと主人公の出自というかアベルの事が語られるかと思ったら、どうも違ったようだ。あと主人公率いる悪魔達と神の戦いの中、人間は敵対勢力とみなされぬようひっそりと生きることになったというのがオチなのには笑った。ってかナオヤは本当に物語を引っ掻き回すだけ引っ掻き回していったなあ。

こっからいろいろなデータを引きついでの二周目があるけど、時間的に無理だろ。流石に勝手がわかってきている以上はもっと手っ取り早くクリアできるだろうが、それにしたって時間がかかりすぎるからなあ。

2009-05-05
Tue

(18:46)

とりあえず引っ越し先は決まった。引っ越す上での最大の問題はこのサイトが稼働しているサーバなのだが、どうすっかなこれ。入居可能時期と ISP との契約をする時期と今のアパートを引き払う時期がまだ不透明だからなあ(現在確認中というか交渉中)。

2009-05-06
Wed

(13:07)

結局連休中は

  1. 家探し
  2. ゲーム
  3. 読書
  4. ギター

のループを延々とやってた。

ああそうだ、「ハチワンダイバーDS」を買ったんだった。将棋のゲームなのに CERO D という凄いレーティングが施されているのは、原作がアレもんでコレもんだからか。でもこれ、将棋の入門ソフトとして結構出来がいいと思うんだよな。駒の動かし方から教えてくれるし、イージーの CPU は絶妙に弱く調整されてるし。

何よりイージーで利用できるイージーガイドと、原作の再現を狙ったダイブが非常によくできてる。イージーガイドは好手と悪手の二種類が表示される機能で、好手の方に従っていけば概ね有利に進められる。ダイブの方は回数制限こそあるものの、局面を深く読んでより良い一手を探し出すというもの。将棋の入門者が一番躓くのは、主に中盤に一体何をやったらいいのかわからないというものだと思うけど、イージーガイドとダイブはそういう迷った局面でどう指すかの指針となるので、まったく何もわからない状態から一歩踏み出すのに結構効果的だと思う。あとこれはキャラゲー的にも重要なのだけど、局面の有利不利でキャラクターの表情が変わるので、自分の指した手の良し悪しが大まかな感覚で掴めるようになってる。

ノーマルの CPU の強さは多分適正値だろう。俺の実力は高校の将棋大会で県大会ベスト8程度の微妙な腕前だが、それだと大体ノーマルの澄野や斬野に勝てるぐらいだ。ハード及び中静そよはまだ出現してないのでわからない。個々のキャラクターの指し方は結構原作のイメージに忠実なようで、将棋指しとしても原作ファンとしても割と満足。とりあえずそよ以外のキャラクターと戦った感想はこんな感じ。

斬野クル
木偶人形。入門者でも何度か戦ううちにまず勝てるようになるのでは?
二こ神
雁木戦法は小学生時代に愛用していたなあ。(特に終盤の)泥臭い指し方が原作のイメージどおりのウザさ。ストーリーモードでは焦らずじっくり戦力を整えて指せば、恐らく勝てると思われる。
文字山ジロー
二こ神さんよか弱いぞ。ストーリーモードでの文字山戦は相手が居飛車穴熊に囲った状態でスタートするんだが、こうして相手に使われるとこれほどむかつく戦法もないな。
斬野シト
原作読んでるだけじゃ気がつかなかったけど、高校の将棋部時代に俺が全然勝てなかったチームメイトに棋風が似てる。ストーリーモードでは新早石田を使われるところからスタートするので、これはちゃんと定石を調べた方がいい。ちなみに新早石田は居飛車穴熊殺しの一つで、好きな戦法の一つが居飛車穴熊な俺には厳しい戦法だ。
澄野久摩
原作通りの力将棋だが、俺とは相性が悪かったようだ(俺は力将棋が嫌いじゃないんでね)。ストーリーモードでもガチの原始中飛車なので、しっかりと受けることを考えるか、きっちりカウンターで切り落として寄せきること。時間無制限なので、頑張れば読みきれる……と思う。
海豚マス夫
手堅い棋風だが、手堅すぎるので笑えるほど簡単に居飛車穴熊が決まる。ストーリーモードでは澄野同様に持ち時間が無制限なので、じっくりと考えて戦う事。

というわけで、将棋に興味はあるけどどっから手を付けていいかわからん、特に身近に将棋がわかる奴もいないという人にオススメ。

2009-05-08
Fri

(23:30)

GW 中から引っ越しの準備やら何やらで妙に忙しくなってきたなあ。本業の方は順当に暇というか、先行き不明なんだが。

2009-05-09
Sat

(23:55)

告知:第一回「層・圏・トポス  現代的集合像を求めて」勉強会」に行ってきた。「ピクニックにいこうぜ。雪山でロッククライミング」という極めてワイルドなスローガンの元に行われた勉強会だったが、開始時刻が13:30で終了時刻が大体20:15ぐらい、おおよそ2〜3時間に一回の休憩があったとはいえ7時間弱の間にわたって圏論漬けという本当にワイルドな進行だった。

そもそも「『第2章 圏』から始めよう」というのは決まっていたものの、どこまでやるかは19:30ぐらいに「定理5まで終わらせて次回から関手」という意見が出るまで決まっておらず、下手すりゃ参加者全員の心が折れた時点で終了の無制限デスマッチになるところだった。だって誰も止めようとしなかったし。

流石にそんだけの長丁場の総括的レポートを書く気はないというかいい加減疲れてるので、とりあえず勉強会で発見された興味深いものを一個。ある圏に対象 A, B, C が与えられ、

    f1
  ------>   m
C        A ----> B
  ------>
    f2

となる射 f1, f2, m に対して m°f1 = m°f2 ならば f1 = f2 が成立するとき、この m は mono と定義される。それで檜山セミナーで例に出されたしりとりの圏の射は mono になってるんじゃないかという意見が出て、実際に考えてみたらどうやらそうだという事が判明した。

ここでさらに一つ定義を加える。ある圏において対象 A, B が与えられ、

    f
  ---->
A       B
  <----
    g

となる射 f, g において g°f と f°g がそれぞれ A, B に対する恒等射となる場合、この A, B はその圏の中で同等とされる。しりとりの圏の場合は恒等射は一文字だけの文字列なので、いかなる文字もしりとりの圏の中で同等とはみなされない。

これが集合論となると、全単射が存在する二つの集合は同等とみなすことができ、しりとりを一点集合同士の写像とすればあらゆる写像は単射かつ全射=全単射であり、集合論的にはしりとりの各文字は同等となるのだという。これは集合論と圏論では物の見方が違うということのいい例だと思う。

最初は「親しみやすかろう」という理由で導入されたはずのしりとりの圏が、真面目に考えていくと結構深い話題になっていくのにはあらためてびっくりだ。ってか圏論って本当に興味深い分野だな。

そういや今回の勉強会はかなり順調に進んだっぽいけど、次回以降どうなるかは不明というか、次回はどこまで進められるかな。

2009-05-10
Sun

(15:32)

引っ越しの準備を進めてるんだが……なんでこう、世の中は面倒くさくできてるんだ? 特に俺のような何かしらの書類を書くと最低でも1ヶ所は記載不備をやらかすダメ人間は、ただそれだけの理由で社会から阻害されかねん。

(21:40)

Web 経由で今のアパートの水道の使用中止を申し込もうとしたら、受付可能期間の表示がよりによって Java アプレットで行われていて憤死。面倒くせーから Firefox の Java プラグインは入れてなかったんだよなあ。ってか必然性がないのに Java アプレットとかを使用する連中は切腹してくれや、マジで。

それで結局水道局の申込フォームからじゃ、来月末での使用中止はできなかった。どうも30日ぐらい先までの期間しか、申込を受け付けていないらしい。ガスや電気ならできたんだがなあ。

2009-05-11
Mon

(20:30)

ぬー、どうも引っ越し先は光回線が引けない可能性が出てきたぞ。そうなると引っ越し先は ADSL にせざるを得ず、確実に今よりもこのサーバのレスポンスは悪くなるな。日記はともかく、画像貼りすぎなゲーム系のページはちとキツいかも。

(21:23)

土曜日の勉強会の関連記事が何本か上がってるので、今のところ確認できてる奴を一通りリンクしてみる。

ラムダ計算セミナーとモニャドセミナーもそうだけど、やっぱ関連記事のリンク集ぐらいは独立したページとして作った方がいいかな。需要があるならやってもいいけど、どんなもんでしょ。

2009-05-12
Tue

(22:21)

これはすげえ。何がすげえって、これ Black Sabbath じゃないじゃん。じゃあ一体何かというと、これは正しく Heaven & Hell のデビューアルバムでしょう。確かにドゥームには違いないんだけど、これは Ozzy 時代とは別物のドゥームサウンドで、あっちが古典的なドゥームならこのアルバムはエピック・ドゥームだろう。特にアルバムのオープニングを飾る "Atom And Evil" とラストを締めくくる "Breaking Into Heaven" でそれが顕著だと思う。

その2曲以外にもドラマティック極まりないドゥームナンバーの "Bible Black"、アルバム随一の攻撃性を撒き散らす "Eating The Cannibals" など佳作多し。もう主要メンバーは還暦過ぎてるってのに、よくもこれだけの作品を作れるもんだ。こりゃ次のアルバムも期待していいかも。

2009-05-13
Wed

(22:39)

何かアニメの影響で楽器始める奴がどうとかいう話をちょっと前から目にするんだけど、ライブ中にズボン脱いで肛門を客席に向けるバカの率いるバンドに衝撃を受けたのがきっかけでギターを始めるバカもいることだし(つまり俺の事)、別になんだっていいんじゃね。

2009-05-14
Thu

(00:23)

電気ガス水道といったライフラインの使用申込が Web からできるのは物凄く助かってるんだけど、でも住所の入力とかで全角英数字を強制されたりされなかったりとバラツキがありまくるのは改善してほしいところではある。

そもそもの話、全角英数字でしか入力できないというのがかなりのアレなんだけど、俺の携わったシステムでも住所には半角英数字が使えないとかそういう代物があるんだよなあ。俺はそういった画面周りの仕様の策定には基本的に携わっていないので、一体どういった理由でそんな仕様になってるのかはイマイチわからん。もしかしたら PDF とかの帳票を作るときの見栄えの問題かもしれないけど、だったら帳票出力時に変換しても良さそうな気がするし、そもそもそんな事でユーザに不便を強いるのはどうだろうな。

(23:22)

名前みた瞬間に「おちんちんランド」を真っ先に連想した俺は死ねばいいと思うんだが、それにしてもこれ見た感じ穴だらけなサービスっぽいなあ。何か割と簡単に詐欺とかに使えそうなんだが、その辺の対策ってちゃんとやってんのかな。この手の事実上の出会い系サイトみたいなのはトラブルが付き物だろうしね。

ちなみにサービスのネーミングについては、(やってる本人たちは天然だろうけど)なかなかいい感じに鋭いブラックジョークなネーミングだと思うので、割と俺は面白がってたりする。それでも文句を言わせてもらうと、成人男性しか登録されないんなら、せめて「男性牧場」に改名しろと。「男の子牧場」という名前はガチのショタコンの人のために空けておけと(ああでもそうなるとほぼ確実に犯罪か)。あるいはさらに特殊な性癖の持ち主のために「男の娘牧場」……って何を書いてるんだ俺は。

2009-05-15
Fri

(21:15)

「初めての人が一人もいない」という事態に加担している者の一人として、とりあえずこっちでも宣伝をしてみる。題して「参加者から見たモニャドセミナー想定問答集」。

Q
本当に予備知識は不要なの?
A
そもそも前回の俺が殆ど予備知識ゼロだった。
Q
やっぱり難しいんじゃ?
A
セミナーだけじゃわかんなかったとしても、檜山さん含めフォローアップに熱心な人が結構いるのでなんとかなる。多分。
Q
前回のセミナーの関連記事がよくわかんなかったんだけど?
A
訓練を続けるうちにわかるようになるはず。というか俺も最初は全然わかってなかったし。
Q
普段の仕事/講義で圏論どころか数学とか全然使ってないんだけど?
A
俺だって使ってねえよ。
Q
それでセミナーに出るメリットとかってある?
A
面白ければそれで良くね? あと思考の引き出しを増やすのは一般的に良い事なんじゃね?
Q
じゃあどんな人が参加してるの?
A
研究職のような立場の人もいれば SI 業界のエンジニアもいて、社会人だけでなく学生の参加者もいるという具合。割といろんな人が参加してる。
Q
セミナーの雰囲気はどんな感じ?
A
比較的ゆるい感じ。決して殺伐とした集まりではないんで、そこは安心してください。
Q
送金しようと思ったけど、 PayPal って敷居高くない?
A
ぶっちゃけ PayPal は使わずに会場で直に支払うという手も(あんまり大勢でやると面倒だろうけど)。
Q
あの名札は何?
A
気にしないでください。

宣伝になってるか微妙だが、とりあえずこんなところか。テーマの割に敷居は低いと思う、というかセミナーから派生した読書会の方がずっとハードコアだった。なのでまあ、多分初めての参加者でもどうにかなるんじゃね?

2009-05-16
Sat

(22:09)

一応入居日は明日になっているんだけど、実際に引っ越すのはもう何週間か先。何しろ電気ガス水道ネットと全部揃うのが来月半ばだからな。それにしても一番手続きがかったるかったのがインターネット接続の申込で、他は全部(問題がないわけじゃないけど) Web から簡単にできたんだよなあ。

2009-05-17
Sun

(22:04)

ひとまず新居の契約の初期費用をいろいろ払ってきたんだが、おかげで貯金の三割弱が吹き飛んで実に痛い状態だ。さらにこの後引っ越しでさらに金がかかるわけで、人が一人動くだけで一体いくらかかるんだって話だ。

2009-05-18
Mon

(19:28)

くっそー、またコンビニでスプーンを入れ忘れられた。それもまた同じ店員だ。面構えと体型が面白いから覚えてるぞ。ってかいい加減、割り箸やスプーンはコンビニの店員が入れるんじゃなくて客が持っていく形態にしたらどうだ?

(20:55)

タスク管理が破綻して炎上真っ最中の現場で使うために OpenTask というタスク・バグ管理システムのカスタマイズと導入の作業をしているんだが、俺個人の率直な感想としては、これ導入しても大勢に影響はないんじゃないかなと思う。いや、勿論これを導入したら効果てきめんで、破綻していたタスク管理がきっちりできるようになれば、それは本当に理想的なシナリオだと思うけど。でもなあ、経験上この手のツールの導入には障壁があるからなあ。

この手のツールを導入するときに最大のネックとなるのは、他でもなく利用するメンバーのリテラシー。ソフトウェア開発プロジェクトで管理しなければならないものは何か、それらをどのようにして管理すれば良いのかといった事について真面目に考えたことのない連中には、この手のツールをきちんと運用できるものかかなり疑問だ。導入対象のプロジェクトについては「実によく燃えている」という以上の情報がないのでどうなるかわかんないけど、適切なツールが適切なツールたり得るには、適切なメンバーを配置するというのが大前提というのは変わらないだろう。実際俺が去年のラスト三ヶ月ぐらい参加していたプロジェクトは、まず何よりまともな技術者を集めていたから上手く回っていたわけだし。

2009-05-19
Tue

(19:48)

ちょっと小耳にはさんだ話。

  • あらゆる指示が朝令暮改
  • 口頭ベースで指示が出され、要求管理などという概念は存在しない
  • 管理作業(かなり膨大)と開発作業が同一人物に同時に降ってくる
  • 下請けと元請けがまともにコミュニケーションを取るためのチャンネル及び人材が乏しい
  • プロジェクトで起こった問題の分析がろくにされていない

これでプロジェクトが炎上しなかったら凄いよなあ。

(22:53)

そういえば俺は相変わらず独立愚連隊の様な扱いで、仕事していて同僚と喋ることがあんまりというか全然なかったりする。おかげでとある同僚から「一人で仕事してるのはキツくないか」と心配されたりするのだが、幸か不幸か俺は割と孤独耐性は強い方なんでね。

まあ、他の様々な理由により精神的にキツかったりして、何ていうかそろそろボーアウト気味でしんどい。引っ越し終わったら今後の身の振りをもうちょい考えないとなあ。

2009-05-20
Wed

(23:04)

今日はみんなに社員のやる気を殺ぐための簡単な方法を教えちゃおう。それは「つまらない仕事を割り当てて放置」あるいは「仕事を特に割り当てずに放置」。これを食らった相手はかなりの確率でやる気デストラクションを起こすので、思いがけずこれをやっちゃった場合、早急にケアをしないと大変な事になるぞ。

そしてこれの変化球として「仕事を振った方はエキサイティングな仕事を割り当てたつもりだが、割り当てられた方にとっては百年前に通過してるところで退屈もいいところ」というのがあって、こっちの方はただでさえやる気が減退してるところに仕事を振った方の「どうだ、やりがいのある仕事だろ?」的な態度が襲いかかり、倍率ドンでゲンナリだ。

2009-05-22
Fri

(01:53)

第2回モニャドセミナーに行ってきた。今回は割と予定通りの進行になり、内容的にも結構な数の圏が紹介されて、結構報告記事を書くのがしんどいんだが、何か期待してる人が多そうなので書いてみる(お前今日の仕事はどうすんだって? 知るかよ、どうせろくに仕事がない状況だし)。既にセミナー資料が公開されているので、そちらも合わせて読んでください。

以下のレポートで大チョンボをやらかしているので、檜山さんのツッコミを踏まえて読んでください。個人的な事情(ちょっと忙しくなった)により、レポートの完成は今回は見送りです。

まずは圏の構成要素のおさらいから。以下はセミナー資料からの引用。

  • 対象の集合:O
  • 射の集合:M
  • 域:dom : M→O
  • 余域:cod : M→O
  • 恒等: id : O→M
  • 結合: ; : M×M⊃→M
  • f;g の結合可能性: dom(f) = cod(g)

これはつまりどういうことかっていうと、

  • とにかく対象が存在する。対象はなんだっていい
  • 任意の対象 a, b に対して a -> b となる射が存在する。射は写像とか関数とは限らない
  • a -> b という射において a を域、 b を余域とする
  • a -> a という恒等射を持つ
  • 射 f および g において、 f の余域と g の域が一致するとき f;g という結合が可能である

マジでこれだけ。あまりにシンプル過ぎて面食らうというか、これだけだと自分の持ってる知識を適当に継ぎ接ぎしたあげくに妙な先入観に基づく誤解をやらかしてしまいそうというかそれは俺の事なんだけど、とりあえず頑張って先入観を捨ててみよう(そういや常識というのは成人するまでに持ってしまった偏見とかいう言葉があったな)。

とにかく上記の条件に当てはまれば何だって圏だと言い張れるんだけど、例えば Web ページ同士のハイパーリンクは圏になってるんじゃないかな。この場合、対象は Web ページで射はハイパーリンクとなる。この日記の冒頭で檜山さんのブログ(檜山正幸のキマイラ飼育記)にリンクを張ってるけど、これは

  • f: Diary? -> 檜山正幸のキマイラ飼育記

という射。この場合、域(dom)が「DIary?」で余域(cod)が「檜山正幸のキマイラ飼育記」だ。それで檜山さんのブログからは本家の Chimaira.org にリンクが張られているので、

  • g: 檜山正幸のキマイラ飼育記 -> Chimaira.org

という射が存在する。域と余域は同様に考えればいい。ここで射 f の cod と g の dom が同じなので、二つの射を結合して

  • f;g: Diary? -> Chimaira.org

という事ができる。はず。恒等射については、自己言及的なハイパーリンクなんぞいくらでも作れるからそれでいいだろう(いざとなったらブラウザの更新ボタンを恒等射だと言い張る。 HTTP リクエスト上では同じだろ)。とにかく圏と見なせそうなものは割とそこらに転がってて、そういう圏論的な物の見方を体に覚えさせるというのが今回のセミナーの大きな主題。

セミナーの前半戦では自然数だけで作る圏がいろいろと紹介されたのだけど、それら全部の解説を書いてると大変なので、いくつかピックアップしてみる。ひとまずは自然数だけの圏について、セミナー資料から説明を引用。

  1. 自然数の集合 = N = {0, 1, 2, 3, ... }
  2. 自然数のペアの集合 = N×N = {(0, 0), (0, 1), (1, 0), ... }
  3. (圏の対象の集合)⊆N
  4. (圏の射の集合)⊆N、または (圏の射の集合)⊆N×N

「対象も射も自然数? 何それ?」と思う人がいるかもしれないけど、圏論というのは先に上げた構成要素を満たせば圏だという事になっているので、対象も射も自然数な圏が作れてもおかしい事はない(と思えるようになろう)。

まずは最初に例示された「Discrete」から。訳語の「離散」から想像ついちゃう人がいるかどうかわかんないけど、とりあえず Discrete における対象、射、域、余域、恒等、結合はこんな感じ(セミナー資料より)。

  • 対象: N
  • 射:N
  • dom : dom(n) = n
  • cod : cod(n) = n
  • id : id(n) = n
  • ; : n;n = n

何のこっちゃ。これだけ見ていても埒があかないので、具体的な数値を当てはめつつ考えてみる。

  • dom(1) = 1
  • cod(1) = 1
  • id(1) = 1
  • 1;1 = 1

……えーと、例えば f, g という二つの射が結合可能だとすると、

cod(f) = dom(g) ならば結合可能
cod(f) = f, dom(g) = g
Discrete における結合は n;n = n なので、
f = g の時のみ結合可能となる

つまりこれはどういう事かというと、 Discrete における射というのは

1: 1 -> 1
2: 2 -> 2
3: 3 -> 3
  :
  :
n: n -> n

こんなものばかりという事。要するに、全部の射が id になっちゃってる。こんなんでも圏の構成要素を満たしているので立派な圏だ。ちなみにこの圏は例えば N = {0, 1, 2, 3} とか N= {1, 3, 5, 7} とか N= {12, 34 ,56, 78} とか適当に N の範囲を限定したものを取ってきても、元の圏(Discrete)の構成要素を満たす。このような場合、適当に範囲を狭めても圏として成り立つようなものを部分圏とかいうらしい。

続いて「Addition」。こいつは足し算の圏なんだけど、まあまずは構成要素を見てみよう。

  • 対象: {0}
  • 射:N
  • dom : dom(n) = 0
  • cod : cod(n) = 0
  • id : id(0) = 0
  • ; : n;m = n + m

「対象が {0} ってどういうことだよ?」だって? そういうものなんだよ。実際のところ Addition においては対象が何かなんてどうでもいい話で、単にシングルトンでさえあればなんでもいい。ただ、この圏は自然数だけを相手にするのでとりあえず 0 としてある。それじゃあまた適当に数値を当てはめつつ考えてみよう。

  • dom(1) = 0
  • cod(2) = 0
  • 1;2 = 1 + 2 = 3

つまり Addition における結合というのは足し算の事で、足し算に使われる物が射なわけだな。「それじゃ対象は一体何の意味があるんじゃ?」だって? いやいや、結合すんのに必要でしょ。任意の射 f, g に対して

cod(f) = dom(g) ならば結合可能
cod(f) = 0, dom(g) = 0
なので任意の f, g は常に結合可能

となる。まあ要するに 1 + 2 だろうが 100 + 200 だろうが常にできるというか、できないと困るだろ。先に書いた対象がシングルトンならなんだっていいってのは、つまりはこういうことだ。ちなみに Addition もまた部分圏を作ることが出来て、例えば N = {0, 2, 4, 6 ...} と2の倍数だけの自然数だけを集めても足し算はできるので、これは部分圏になっている。


……とここまで書いたあたりで寝落ちしたくせえ。続きはまた後で書くことにして、とりあえずここまでをアップしておく。ただし、今日はとあるセミナー参加者にそそのかされて BP Study#21 に出ることになったので、続きを書けるのは多分明日だな。

2009-05-23
Sat

(02:26)

BP Study より帰宅。いやー、いろいろ面白い話が聞けた。それはさておきとりあえず今日の TODO。

  • 檜山さんのツッコミを受けて昨日の日記の大チョンボを修正
  • 引っ越し先の鍵の受け渡し
  • 現時点で運べる荷物の搬入
  • 余力があったらちゃんとしたレポートを書く

あとまたまたそそのかされて twitter を始めてみた。

そして早速使い方がよくわからん。

2009-05-24
Sun

(23:30)

第2回圏論デスレース(正式名称:「層・圏・トポス 現代的集合像を求めて」勉強会)より生還。今回の範囲は関手のところ全部で、ページ数的には前回の半分ぐらいだった。今回は諸般の事情により現役数学科の方々のヘルプがなかったので、実例をあげたり証明を行ったりするのにより多くの時間がかかり、やはり専門で日々研鑽を積んでる人たちは本当に凄いと改めて感心。とりあえず以下、適当に勉強会でやったことや俺が思ったことを適当にツラツラと。

  • 関手は二つの圏の対象同士、射同士を対応させる
    • これはモニャドセミナーで触れられた Modified Addition の圏としりとりの圏がとてもわかりやすい実例だった
      • 「しりとりの圏の射=文字列」の長さが「Modified Addition の射=自然数」に対応
  • さらに関手から関手への対応(変換)は自然変換という
    • 実例がなかなか出なかった。というか、本に載ってる実例が難しすぎた
    • やっと出た実例も、数学寄りの奴は俺にはあまり理解できなかった
      • 個人的な宿題:行列演算、環、群などについて調べること
    • プログラマ向けの実例はお馴染みの List 系のあれそれ。 flatten とか、 reverse とか
      • 数学寄りの実例では数学できる人が盛り上がり、プログラマ向けの実例ではプログラマが盛り上がる
  • coequalizer, pushout, epi などでみんなハマる
    • 圏論の言葉とか図式の上では、 coequalizer と equalizer、 pushout と pullback、 epi と mono の双対性は結構モロに見える
    • これが何らかの集合を実例にしてみたら、全然双対性が隠れてしまって大苦戦
    • 「f: A->B が epi ならその圏が Sets の時に f が A から B の上への写像である事は明らか」と言われてもなあ
      • 本当にそうなっているのか証明しようとして小一時間ほどハマった
      • 最終的には背理法を使って落ち着いたが、 mono の時と全然勝手が違ってみんな驚いていたな
  • 双対性は圏論における重要なキーワードというのをかなり実感
    • これはモナドに近づく第一歩のような気もする。適当書いてるけど
  • 圏論の教科書は図を書いていく過程がないのがネックだという意見は前回に続いてやはり出る
    • 「圏論をNHK教育テレビあたりが特集したら見る」というのも前回に引き続いて出た意見
      • いや、俺も見たいと思うけど、誰が見るんだよそんな番組
    • 勉強会を録画というアイディアもやはり出た
      • だから誰が見るんだよ
  • なんと今回から参加の方の勇者が2名
  • 圏論を多少なりとも学んで、早速色々毒されてきた。

やっぱり圏論は面白いけど難しいわ。とにかくこれはトレーニングをして頭を慣れさせるしかなさそうだ。特に俺は大学で数学の専門教育を全然受けていないので、そっち方面の弱さが毎回露呈しまくり。

追記:他の勉強会参加者の方々の記事がいくつか公開されています。

2009-05-25
Mon

(21:08)

「層・圏・トポス 現代的集合像を求めて」勉強会では、副読本というかこれも一緒に読むと効果的じゃねという本が何冊か挙げられている。

というわけで二冊とも購入。どっちも俺は一人で読みこなせないのがわかっているので、あくまでも勉強会での副読本なんだけどな。こういった本が読みこなせるようになれば、また違った世界が見えてきそうなんでしばらく頑張ってみるか。「層・圏・トポス」にしても、あれ書いた人は俺ら凡人とは見えてる世界が明らかに違いそうだしね。

あと俺は昨日も書いたとおりまともな数学の修練を積んでおらず、例えば群とか環が全然イメージが湧かなくて困ってる。なので、とりあえず演習問題の載っている本を適当に買って、それをちまちまとやってみる事にした。

まだあんまり読み進めてない、というかまだちょっと身辺がゴタゴタしてるので手を付けられるのはこの土日からになりそうだなあ。ちなみに俺はこの本の評判をまったく知らず、完全に運任せというか「群とか環の本ってねえかなあ」とか漠然と思って紀伊國屋の中をうろついていたら発見したので、その場の勢いで購入。ってか何やってんだ俺は。

ところで先に挙げた二冊のうち「圏論の基礎」は、池袋のジュンク堂で売り切れになってた。前に「層・圏・トポス」を買いに行った時は在庫があるのを見かけていたので、犯人はかなりの確率で圏論デスレース(あるいはモニャドセミナー)の参加者。

2009-05-26
Tue

(22:02)

せっかく Twitter を始めたのだから、 Twitter API をちょっと使ったプログラムを作ってみた。自分のタイムラインを適当な件数取得して、それを表示するだけの小物だ。認証は Basic 認証にしか対応してないけど、その理由はいちいち OAuth のライブラリを探すのがタルかったから。でも将来的には OAuth が標準の認証 API になるんだっけ。

from urllib2 import (build_opener,
                    Request,
                    HTTPBasicAuthHandler, 
                    HTTPPasswordMgrWithDefaultRealm)
import sys
uri = 'twitter.com'
user = '<ユーザ名>'
passwd = '<パスワード>'
count = 20

def get_timeline():
    req = Request('http://twitter.com/statuses/user_timeline.xml?count=%d' % count)
    pmgr = HTTPPasswordMgrWithDefaultRealm()
    pmgr.add_password(None, uri, user, passwd)
    director = build_opener(HTTPBasicAuthHandler(pmgr))
    res = director.open(req)
    return res.read()

from xml.dom.minidom import parseString

def extract_text(string):
    doc = parseString(string)
    for e in doc.getElementsByTagName('text'):
        print e.firstChild.data

extract_text(get_timeline())

それにしてもあれだ、 urllib2 はできることは多いしそれらの機能の必要性もわかるけど、やっぱ使い勝手としてはあまり Python っぽくない。どっちかっていうと、これは Java 的な発想のライブラリに見えるなあ。それは必ずしも悪いものじゃないので、殊更否定はしないけどな。

追記:肝心の API 仕様書へのリンクを忘れてた。

2009-05-27
Wed

(19:42)

「圏論デスレース」という名称に一言いっておくと、これは俺の中で耐久レースがマラソンやトライアスロンではなくデスレースという言葉とリンクしているので、何も考えずに日記を書いたら「圏論デスレース」という言葉になったというだけなので、「『層・圏・トポス 近代的集合像を求めて』勉強会」の愛称(?)は普通に圏論マラソンとかでいいと思います。

(20:52)

これまで三年と二ヶ月弱にわたって連載してきた「バトルプログラマー:ちーちゃん〜下請け残酷物語〜」ですが、筆者の都合により明日の「最終話『属人性はロストテクノロジーの始まり〜ちーちゃんにうってつけの退職〜』」を持ちまして、誠に勝手ながら終了とさせていただきます。もういい加減、クソのような給料でクソの方がマシな仕事をするのはうんざりなのです。そろそろ幸福追求権を行使させてください。

2009-05-28
Thu

(21:01)

2009年5月28日は、実質的に僕が今の勤務先で働く最後の日となった。明日社長に最後の挨拶をして、書類をいくつか受け取って、それで終わり。要するに退職だ。


僕がこの会社に入った時、具体的には最初の出社日の朝までは、多少なりとも希望を持っていた。それでもその希望は、同期のほぼ全員がまったくのプログラミングの素人で、そして僕自身は入社して二週間ほどで現場に出された時点で潰えていたように思える。それでも稼がなければいけなかったわけだし、あの頃の僕にその後の状況を想像しろというのは無理だろう。

何かがおかしいと気がついたのは、実質的に僕が初めて本格的に参加したプロジェクトで、そこではきっと多くの人が狂ってると思える数々のルールが定められていた。以下はそれらのほんの一部だけど、思い出せる限り正確に書いたものだ。

  • ソースコードを書く前にプログラム仕様書を完成させること。プログラム仕様書の凡例は以下
    • 「ワーク変数 a に FooClass#barMethod(arg) の戻り値を代入する」
  • 最新のソースは構成管理ツールから取得せず、構成管理チームが作成したソースアーカイブをコピーして使うこと
    • そのソースは個々の開発者が適切なリビジョンを構成管理チームに伝え、それを元に構築する
    • 結合テストサーバへのソースの配置も、すべて手動で行う
    • マージは完全に手動で行う
  • 検証対象の成果物は編集可能な PDF に変換すること(この作業は手動で行われる。また、対象となるものは以下のようなもの全部)
    • ソースコード
    • テストドライバ
    • テストレポート
    • プログラム仕様書
  • 検証対象の成果物は、共有フォルダに手動でコピーする
    • ミスが続出したが、最後まで手動でやるものとされた

まだ山のように酷いルールがあったけど、僕の脳は思い出す事を拒否し始めたようだ。少なくとも覚えているのは、30秒で発見したバグを3分かけて修正し、その修正したソースのレビュー依頼を出し終えるのに3時間かかっていたということだ。

このようなルールの制定されるプロジェクトにおいて、プログラマは基本的に自力では何一つまともなコードが書けないクズとして扱われ、本当に「変数 a に 0 を代入」レベルのプログラム仕様書に従ってただひたすらタイピングするだけの猿(あるいは豚)として扱われる。僕はフレームワーク・ライブラリの開発やプロジェクトの標準策定のチームにいたけれど、そこでも基本的に猿のための秩序に頭を垂れる必要があった。

僕はそれが我慢ならなかったし、それでは僕のいたチームがとてもじゃないけど仕事にならなかったので、元請けに交渉してルールの適用対象から除外してもらったり、作業の順序や納期を入れ替えてもらった。でもそれはあくまでも僕のいたチームだけを救う方法で、プロジェクトを救う方法では決してなかった。何もかもが非効率で、何もかもが間違っており、とあるチームはメンバーの30%が精神を病んでリタイアした。

結局そのプロジェクトには2年目の終わり頃まで関わっていて、離任したころには結合テストが始まっていた。聞いた話では結合テストの時点で単体テストで潰しておくべきバグが相当数残っており、それは先に出したルールのせいでオーバーヘッドが大きくなりすぎ、単体テストの工程を飛ばしてしまったチームがいたという話だ。僕のチームはかなり問題が少ないチームだったらしいというのが、唯一の救いだ。


その後の僕は比較的研究開発に近いポジションで一年と半年を過ごし、ちょっと人手の足りないプロジェクトの手伝い(あるいは火消し)をしつつ、場合によっては研修の担当官をして過ごしていた。その間に辛うじて面白かったかもしれない仕事といえば Ogg Speex を使ったストリーミングとブラウザ埋め込みのプレイヤーの開発で、それも顧客の都合で本格的に始まる前に終わってしまった。

この頃になると僕もいい加減スレ始めてきて、この会社では面白い仕事はまずできないだろうと思うようになった。明らかに他の社員と比較して桁違いの能力の持ち主――つまりは僕――が入社してきて、僕を使えば今までやろうと思ってもできなかったことができるようになると思ってしまった人もいて、確かに僕はそれだけの能力はあったけれど、それが僕の嗜好に合うかどうかは別問題だった。それに他の社員が追いついてこないことには僕が辞めることでそれらの技術は失われ、元の木阿弥になってしまう。

そもそも僕が会社で提供したことの多くは高度な技術とは言い難く、ちょっと勉強すれば誰でも追いつけるものばかりだった。例えばビルドシステムを Ant などで構築する、単体テストを Ant 経由で動かせるようにする、毎日定刻にソースをチェックアウトして先に作った Ant のタスクを走らせる。これらの基本はちょっと調べればわかることだし、実際のところ基本的なレベルでもやるとやらないとでは全く違う(僕はビルドやテストにこけたら TODO 管理システムに通知するところまで作ったけど、結局そちらは誰も使わなかった)。

その程度のことにすら思い至らない、実装できないのは一体どういうことなのかと考えるうち、結局みんな自分達が狂った事をしているのかもしれないと疑っていなかったのだろうという結論に達した。本当にソフトウェア開発について真剣に考えれば、自分達が多くの問題を抱えていることぐらいはわかるはずで、僕がやるまで誰も改善しようとしなかったのは、結局殆ど誰も問題の深刻さに気が付いていなかったのだろう。それに僕の言っていることなんて、ちょっと雑誌や Web を調べるだけで似たような言説が見つかるというのに。


ここ数カ月は本当にろくな仕事がなくて、僕にとってはとっくの昔に通った道を「これは新しい!」と騒ぐ上司を横目に、その気になれば一時間で終わる仕事を一日かけて終わらせるような腐りきった日々を過ごしていた。実際には仕事を出す方も、それが僕にとっては簡単すぎるということは認識していたことが後で発覚したけど、そのことに何か意味があるわけでもなく、僕がただ無為な日々を過ごしていたという結果がすべてだ。

人によっては、僕の立場は悪いものではないのかもしれない。薄給かもしれないけどゆるく働いて、死なない程度に生きていくのは決して悪いことではないと思うし、僕もある一時はそれでもいいかもと思っていたのは認める。ただ、いい加減それが我慢できなくなっただけだ。

多分、景気が上向くまでこの会社はもつのだろうと思うし、その頃になればもう少しまともな仕事も増えるのだろうとは思う。ただ、そうなるまで待っていたら、僕は完全に腐るという確信がある。ボーアウトという言葉を割と最近知って、僕が本当にその言葉に当て嵌まるかわからないけど、恐らく僕の今の状態はボーアウトに近いのだろう。

そういえばここ一ヵ月の間、同じく本社で作業しているプロジェクトメンバーのほぼ全員と殆ど口をきいていない。それでも仕事が回ってしまうのは、僕と彼らではやっていることが全然違っており、僕のやっていることを理解できるメンバーが殆どいないことの現れなのだろう。他のメンバーにとって難しいことを僕がやっていて、誰も僕を気にかけないのなら、僕のやっていることはこの会社にとっては手に余ることなのだろう。

自分にとってどうでもいいだけでなく他の誰にも理解されないことを、どれだけ長い間続けられるのだろうと考えているうち、どうやら僕は限界に達したらしい。「限界を知る唯一の方法は、 限界を越えてることだ」みたいな言葉を聞いたことがあるけど、世の中にはあまり知りたくない限界がある。


そういうわけで、僕は会社を辞めることにした。辞めるに当たって慰留の問いかけは一切行われず、すんなりと退職するに至った。実際のところ会社側は僕に与える仕事が実力に応じていない、能力に対して給与が釣り合っていないなどを自覚しており、三行半を叩き付けられても文句はいえないという認識はあった。

これを「自覚があるだけマシだ」と捉えるか、「自覚があるのに改善できなかったら騙してるのと同じだ」と捉えるかは読み手の判断に任せる。どっちにしろ、僕にはもう関係のないことだ。

僕なしで今までの勤務先が回るかどうかは、多重下請け構造の中でのシノギで食ってる会社なので実際のところ大勢に影響は無いというのが真実だろう。ただ、そのうちの何人かが僕の能力の先に分不相応な夢を見ていただけのことだ。僕が伝えた技術はすべてロストテクノロジーになるだろうけど、誰も理解しようとしなかった・できなかった以上は当然の結末でしかない。

既に次の仕事は決まっていて、具体的なことは多分そのうち公になっていくと思う。少なくとも一般的な SIer の受託開発とは違う形態だけど、現状の明らかに不合理で狂ったシステム開発をどうにかしようという側面が多いにある。


僕の三年と少しの下請け生活から何か教訓が得られるだろうか。これは単に「素人を雇うような企業には行くな」という話で終わるのかもしれないし、そうでないのかもしれない。この SI 業界の何かが酷く間違ってるのは実感できているけど、それが解決可能なのか、それどころか解決すべきなのかもわからない。


追記:今回の転職は、勉強会や Web で知り合った方々の協力がなければ到底無理だった。これは本当に感謝しないといけないと思う。

2009-05-29
Fri

(16:53)

「何というかお察しください」な事情により、「下請け黙示録ちーちゃん自称永遠の18歳(ようするに仕事関連の日記)」の過去記事はすべて取り下げる運びとなりました。理由はもう皆さん当たりが付くと思うことでしょうというか、こんな外道日記を実名で運営していて問題に発展しない方がおかしいというか、個人的な感想を申し上げますとよくもまあ三年間書き続けてこれたなというのが正直な所でございます。実際にはいろいろと複雑な事情があるのですが、もう色々面倒なので削除ということにいたします。

というわけで問題のある記述をすべて削除の上日記を再公開したいのですが、検索してみたところ怪しい日記が346日分もありまして、これは大体3日から4日に一度は危ない橋を渡っている計算です。これを一気に直すのは不可能というか正直面倒臭く、徐々に直していくことになると思います。それが済むまでは全部の日記を一旦取り下げです(だって面倒だし)。多分再来月の終わりまでには再公開できると思いますが、どうせ殆ど誰も過去ログなんざ読みやしねえので二度と公開されない可能性も十分あります。その時は諦めてください。

追記:具体的に何があったかはここには書きません。みなさんの予想の斜め上な事態になったとだけ書いておきます。というか俺ですらあまりの斜め上っぷりにびっくりしているというか、もうこの件については何一つとして書く気力がなくなりました。

追記:多分大丈夫だろうということで過去ログ復活。

(23:36)

とりあえず先週からの俺の状況を時系列に整理してみる。

05/19
確かこのあたりで会社を辞めたいとか言い出した。
05/21
モニャドセミナー参加者に身の振りをいろいろと相談。
05/22
BP Study#21 参加者に身の振りをさらに突っ込んで相談。
05/23
とある人物から一本釣りのリクルートメールが飛び込んでるのを確認。
05/24
圏論デスレース参加者にも身の振りを相談。
05/25
とりあえずリクルートをかけてきた方と会うことにする。交渉の日程は27日に決定。
05/27
相手の出してきた条件に不満が無かったので、そのままの条件で働く事にした。
05/28
退職届を提出。
05/29
最後の最後に予想の斜め上の事実が発覚、もうなにもかもがどうでも良くなった。

展開が早すぎて俺自身まだ気持ちが追いついていない。というか、今日の出来事があまりにもアレ過ぎた。

2009-05-30
Sat

(16:28)

俺は何もしてないと、ネガティブな方向にしか考えが行かない。常に何かをしてないと、とてもじゃないけど正気を保てない。俺がずっと職場の問題とかを書いていたのは、結局仕事が仕事だけに技術的に面白いことがあんまり無くて、その上に仕事量も大した事無くて、何かしようにも何も無くて、それでも正気を保たないといけないのでああいう事を書いてたわけ。

今はやりたい事・やんなきゃいけない事がいっぱいあるので、多分だけど大丈夫だろう。本当にこの3年間は病んでたよ。

(20:22)

さて引っ越すに当たってまずやろうとしてることは、新しい家具の調達だ。これまではちっさい PC デスクを使って作業をしていたのだが、それだとキーボードを打つには良くても他の作業には全然向いていない。最近は圏論などの数学関係を勉強し始めていて、本を読みつつノートに計算やら証明やらを書くには普通の机の方が向いてる。それに元から MTR を使って録音したりするにも不便を感じていたので、思い切ってもっと普通の作業机を買うことにした。

それで今日はいくつか店を回ることにして、今まで行ったことの無かった IKEA にも行こうと思ったのだけど、それが間違いの元だった。俺はもうどうしようもないぐらい酷い方向音痴で、今年に入って叩き出したスコアはこのぐらいだ。

  • ラムダ計算セミナーの場所がわからず、それっぽい雰囲気の人についていった(それで間違ってたらチェックメイトだった)
  • 池袋のジュンク堂に 30 分以上かけないと辿り着けなかった
  • 新宿の紀伊國屋本店に辿り着くのに 40 分かかった

そして今日は船橋の IKEA に行こうとしたのだが、船橋の IKEA は南船橋駅が最寄りだという事を素で失念し、気がついたら船橋駅に降りていた。そこで引き返すのが普通だろうが、俺は普通じゃないのでそのまま南船橋まで歩くことにした。

当然のように途中で道に迷ったのだが、今回は奇跡的に南船橋駅に辿り着き、船橋の IKEA に行くことができた。実は途中で一回諦めそうになったが、帰り道がわからない状態だったのでそのまま歩くことにした。今思い返せば IKEA に辿り着けなかったらリアル・スタンド・バイ・ミーを実行するハメになっていた。

そしてそこまでして辿り着いた IKEA だが、まず普通に店の中で迷子になった。ちなみにちょっと大きなショッピングモールとかだと普通に俺は迷子になるし、多分地元のサンピアとか既に店の中の構造を忘れてる。まあそれはともかく、適当に歩いているうちにようやくお目当てのワークデスクなどのブースに着いたのだけど、そこに置いてある物がことごとく俺の要求を満たさず、結局机は別の店で見つけた奴を買うことにした。

2009-05-31
Sun

(20:47)

実に様々な方面で消失が残念がられているかもしれない「ちーちゃん's クエスト 〜新米プログラマの3年戦争〜」の過去ログですが、多分明日あたりから検閲作業を実施してそのうち復旧させます。いやまあぶっちゃけ昔の自分が書いた文章を読んでるとケツが四つに割れそうなぐらい負のインパクトを受けるんだけど、まあ頑張ってみる。あと誰も「ちーちゃん」というところにツッコミを入れてこないので何か特殊なプレイをしている気分なのだが、もういいよ畜生。

ところで新しい仕事は基本的に在宅ワークなのだが、早速仕事のペースが掴めなくて困っているというか、今日は休みを取るつもりだったのについつい働いてしまったというか、多分今の俺の状態って凄くマズいと思うので、何とか改善して行きたいところ。あと先方と成果物や調査内容の報告形態についてコンセンサスが取る必要があって、それが決まらない事には割とどうしようもなかったりもするんだが。

あとまだまだ引っ越しが完了しておらず、ってか新居にネットと電気がくるのが一週間後なので、それまではやたらとバタバタしてる気がする。ってかここ数日ほどやたらと忙しくなりすぎだ、マジで。