近況報告2013年03月18日 15時01分35秒

どうも、お久しぶりです。

こちらのブログではあんまり書くこともなくなっちゃったので、かれこれ 1年半近くほったらかしになってしまいました。最近は Twitter でクダ巻いているか、たまに技術ネタを会社のブログにしたためるぐらいです。はてブも惰性で使ってますが…。

ここしばらくの近況を書こうと思ったのですが、会社のブログの方では微妙に書きにくいような気もしたので、こっちでひっそりと記しておくことにします。

  • 2012年3月頃 - お金にならない仕事を継続しつつ自社製品開発の道を模索するが形にならず。即金を求めて専務が派遣労働に従事し始める。
  • 2012年7月頃 - お金にならない仕事の目処がようやく立ち、同じ取引先殿から新しい仕事の話を伺う。技術調査も兼ねて自作マシンを新調してもらう。
  • 2012年9月 - 体調を崩したこともあり、専務が派遣労働を終了。
  • 2012年10月 - お金がない。どうにも首が回らなくなり、某社を頼ってフリーランスとしての仕事を紹介してもらう。同月下旬より新宿区内某所にて常駐開始。それまでの取引先には事後報告 (その辺の融通は利く方々なのです…)。この時点では、とりあえず基本設計が 11月いっぱいまで、それ以降に詳細設計および開発が控えており、とりあえずは基本設計までの契約というお話だった。
  • 2012年11月 - とりあえず12月いっぱいまでは基本設計が続くような話になる。 / やっぱり生活が苦しいからと言うことで結局専務も派遣労働を再開。
  • 2012年12月 - 一次受け設計チーム内の認識すりあわせがようやく落ち着く。とてもじゃないが今年中は無理という話がようやく偉い人に理解され、リスケ発生。基本設計は 2月いっぱいまでとなった。
  • 2013年1月 - 基本設計がなかなか上がってこない中、とりあえず詳細以降の工数を算定。設計書が全然できあがってない上、要件定義資料は当てにならないので、11~12月に認識合わせのために作っていた画面イメージ資料 (ラフ) を元に超ざっくり算定。どんぶり勘定だが、それでも最低 20人は人集めないと終わらないよねみたいな話になり、関係各社結構飛び上がる。
  • 2013年2月 - 下流工程各社の調整が進む。顧客 (パッケージの販売元) 社内で用いる販売管理ツール (ポンコツ Web アプリ) の開発が先行して走り始める。基本設計は 2月いっぱいで大枠完成、 3月15日に精査完了、3月18日より詳細以降の行程を稼働開始と言うことでスケジュールが引かれる。
  • 2013年2月28日 - 担当分の設計は無事大枠で完了。
  • 2013年3月上旬 - 調査を要する部分、後回しにしていた部分などの取り込み。これも滞りなく完了。
  • 2013年3月12日 - 確定申告をしなきゃならんということで 1日お休みを頂く。その日の夕方頃に営業から電話あり。曰く、

「失注しましたぁ (テヘペロ☆」

「」

  • 2013年3月15日 - 契約満了にて業務終了。
  • 2013年3月18日 - かつての取引先と打ち合わせ、今後について話し合うなど。←イマココ!

えー。そんなわけで、相変わらずコの業界は無理がまかり通って道理がへし折られ続けているわけでございます。まぁ、働いた分はお金もらえるのでそんなに痛くはないんですが、収入源としてそれなりに当てにしていたのでとりあえず引っ越しが遠のいたのは痛いですね ('A`)。

お金になるお仕事募集中です…。

Excel 列名変換問題やってみた2011年11月12日 16時50分01秒

問題1: Excel列名変換問題
  • 仕様
    • 入力されたアルファベットを数字に変換する。
    • 変換ルールはExcelの列名と同等。
    • 例) A=1、B=2、Z=26、AA=27、XFD=16384
  • 起動時引数
    • [0] アルファベット (A~ZZZZ...[上限なし])
  • 実行例
    • ExcelColConv.pl A → 1
    • ExcelColConv.pl AA → 27

問題2: Excel列名変換問題(逆変換)
  • 仕様
    • 入力された数字をアルファベットに変換する。
    • ただし、問題1で作ったプログラムを拡張すること。
  • 起動時引数
    • [0] 0=数字へ変換、1=アルファベットへ変換
    • [1] 変換する数字またはアルファベット(どちらも上限なし)
  • 実行例
    • ExcelColConv.pl 0 AA → 27
    • ExcelColConv.pl 1 27 → AA

90分はかからなかったけどなぁ… まぁ、時間なんてちゃんと測ってないけど。

use strict;
use warnings;

sub exCol2Num ($) {
    my $col = shift;
    $col =~ /^[a-z]+$/io or die "Invalid Excel colmun name '$col'";
    my $num = 0;
    for my $letter ($col =~ /[a-z]/igo) {
        $letter = uc $letter;
        $num = $num * 26 + (unpack('c', $letter) - unpack('c', 'A') + 1);
    }
    $num;
}

sub num2ExCol ($) {
    my $num = shift;
    $num =~ /^\d+$/io or die "Invalid number '$num'";
    $num == 0 and die "Can't convert 0 to Excel colmun name.";
    my $col = '';
    do {
        my $subnum = $num % 26;
        $subnum = $subnum == 0 ? 25 : $subnum - 1;
        $col = pack('c', $subnum + unpack('c', 'A')) . $col;
    } while (($num = int(($num - 1) / 26)) > 0);
    $col;
}

my ($mode, $input) = @ARGV;
my $result =
    $mode eq '0' ? exCol2Num $input :
    $mode eq '1' ? num2ExCol $input : die "Unknown mode parameter '$mode'";
print "$result\n";

まぁでもよい問題ですた。

最近買った本、捨てた本2011年09月04日 16時43分11秒

仕事部屋を片付け中なんですが、疲れたので一休みがてらブログでも…。

最近買った本

会社の会計期が変わったので、参考書を 2冊ばっかし買いますた。わーい、昨期は赤字だー (泣

  • Android NDK ネイティブプログラミング

    会社での当面の主要テーマと称して、otoco という音楽制作・再生環境システム・ライブラリ群 (予定) を開発 (しようと) しているわけですが (全然着手できてないけど T-T)、将来的にこいつを Android に移植する可能性を鑑みて (というか妄想して) 今のうちにある程度勉強しておきたいなー、と購入。

    なんだかおいらの予想に反して結構な勢いでフィーチャーフォン(笑) がスマートフォンに置き換えられて行っているようなので (あんまり望ましい進行状況では無さげですが… 商習慣含めて)、当初予定していたケータイゲーム SNS 向けゲーム開発プロジェクトも中止にして Android アプリ開発に注力しようかなという魂胆でもあります…。まぁ iPhone でもいいんだけど。

  • Android Hacks —プロが教えるテクニック & ツール

    で、NDK の解説書だけだと Android での開発における基本的な文化というか慣習を身につけるのは困難だと思ったので、それほど古くない範囲で Android での開発に関するトピック全般を網羅的にかいつまんで解説してくれていそうな本書を合わせて購入。当面はこっちを読み進めることにしています。

    開発環境ぶち込んでエミュレータぶち込んでとりあえず動くものから代表的なライブラリを扱ったものまで作って覚えて NDK とかにももちろん踏み込んでいてさらにデバッグに関するアドバイスとかまで押さえてくれているっぽいです。さすがは安心の O'REILLY ブランド。

最近捨てた本

っていうか、今日の片付けで捨てることにした本です。明日の資源ゴミに出す予定。

  • Networking Linux

    何でこんなのずっと持ってたんだろう…。 1997年に刊行された本です。流石に古い…。

    いや、なんぼ古くてもネットワークの基礎知識として体系的に学べるような本であれば捨てることはないのですが、内容的にはモデム接続の時代にローカル PC に Linux を入れて PPP 接続することを前提とした解説書なので、DSL 接続に必要な情報ではないし、 BIND (named) とかにも触れてないし、メールサーバーは Sendmail オンリーだし… といった感じだったので、流石に捨てちゃうことにしました…。

    ネットワーク周りの知識は正直あんまり自信がないので、ちゃんと体系的に学べる本が欲しいんですけどね…。

  • Vine Linux 2.1システム管理ブック

    未だに Vine とか使ってる人いるの? っていう… これも相当昔に買った本です。捨てずにいた自分にも驚きですが、ちゃんと Amazon で検索して Hit する (しかも画像もちゃんとある!) ことにさらに驚きです (苦笑)。

  • PERLクイックリファレンスPerl5.6完全リファレンスブック

    前者は確かラクダ本と間違えて買った本ですw。後者は Perl5.6 が出た後にいち早く出版された本で、情報管理社さんの思惑通りに掴まされましたw。いずれにせよ、この手のリファレンスは perldoc にアクセスすれば十分なので (完全ではないけど日本語訳も充実してるし)、古くなってきたし、もう持ってる意味ないかな、という感じです。

  • MySQL徹底入門―ウェブに最適な高速フリー・データベース・サーバー

    この本、もう第3版まで出てるんですね。最新版ではもうちょっとマシになってるんでしょうか? 少なくともこの最初の版は、はっきり言ってセキュリティーホールそのものでしたね。ネット上で prepared statement 使えよっていう議論が盛り上がるよりずっと前の本だったので仕方なかったのかもしれませんが…。

  • HTMLポケットリファレンスJavaScriptポケットリファレンス

    もう、ゴールしてもいいよね…。

    まぁ古いというのもそうなんですが、最近はこの辺は専ら Web 上の情報を参照しています。そっちの方がむしろ正確だったりするんですよね…。 HTML と CSS はとりあえず閲覧性の高いとほほのWWW入門、正確な仕様を確認したい場合は W3C が公開している勧告仕様、 JavaScript は MDC や、 DOM ならやっぱり W3C のこの辺のテキスト辺りを見に行けば大体事足りちゃうので…。

  • 入門CVS 第2版

    sshd_config の書き方とかもあって結構参考になったのですが、今は専ら Subversion (+Trac) を使っていて、流石にもう使うことはないかな、という感じなので…。さらに git に移行すべきかどうかも思案中だったりはするのですが…。

  • 入門 Ajax

    買ったはいいものの、序盤で掲載されている「簡易クロスブラウザライブラリ」という名のオレオレライブラリに辟易してあんまり読んでいません。それだったらもうちょっとまともなライブラリ拾って使うよ、っていう…。

  • 改訂新版 基礎PHP

    当時仲間内で PHP を使うことがあったので買ったんですが、 PHP5 対応を謳いながら内容的にはほとんど PHP4 で止まっている感じで、もうちょっと新たに盛り込まれた言語仕様を活用して愉しみながら楽をしようという発想には至らないものかと首をもたげた覚えしかないです…。 PHP 絡みで優良なリファレンスって公式マニュアルだけなんじゃないかな… いやその公式も結構怪しいもんだけど…。

    その後、おいらもどちらかというと PHP を dis る勢力に荷担することになるわけですが、最近は modern perl と似たようなノリで Modern PHP Programming を謳う勢力も出てきているようで、 PHP プログラミングの慣習も大分まともなものに様変わりしつつあるようですね…。そういう意味でももはや過去の情報となった本書は紙資源へとリサイクルされるべきなのでしょう。

  • 基礎からのJava2

    古いってのもあるんですが、他にも Java の参考書は持っていて、内容的に被るので、より古くて内容の薄い本書は廃棄することに…。つってももう一つ持ってる方も相当古いんですけどね…。

    Android の開発が基本的には Java が主体になるので、できれば Java 言語をちゃんと学べる本 (で、比較的情報が新しいもの) が欲しいんですが、結城さんの本も望洋先生の本も内容が 4~6年前ぐらいで止まっちゃってるのでどうしたもんかなぁ…でも洋書に手を出すほどの元気もないし…っていう。

風邪を引いたのでたまごスープ風のおかゆを作ったよ2011年07月22日 10時04分22秒

材料

おいらは 1人で食いきったけど、朝食で食べるなら 2人前ぐらいはあると思う。

  • 米 ...半合 (90cc)
  • 水 ...650cc
  • 中華スープの素(味覇とか味玉とか… うちでは化学調味料無添加の味玉 (ウェイユー) 使ってます。) ...ティースプーンで 2すくいぐらい
  • 塩 ...小さじ 1/2 弱(必ず味見してください!! 真に受けると多分しょっぱすぎると思います… 味付け時に「ちょっと薄すぎるかな…」と不安になるぐらいがちょうど良いです。)
  • 白こしょう ...少々
  • たまご ...1個
  • わかめ ...お好みで

作り方

  1. お米を研いでよく水を切ったら、鍋に入れて分量通りの水を張ります。そのまま放置し、最低でも 30分は給水してください。
    • 朝がゆの場合は前夜のうちにここまでやっておくのが賢いかも…
  2. 鍋を強火に掛けます。火に掛けたらすぐ、中華スープの素と塩で味付けしてください。
    • 熱くならないうちに、中華スープをすくったティースプーンで鍋をグリグリかき回してよく溶かしてしまいましょう。溶けないけど。いやホント溶けない。どうにかして。
  3. 沸騰したら日を弱めの中火 (鍋底に火が届かないぐらい) にして、 11分ほど煮込みます。
    • 当然のことながら (^_^;、この時間は環境により左右されます (^_^;。あくまで目安と言うことで…
    • 蓋は載せずに開けっぱなしで煮込んでください。ここ、超重要ポイント。
    • 時々何かを思い出したかのようにスプーンか何かでかき混ぜてあげるとよいかもしれません…。
  4. 煮込んでいる間に、わかめを戻しておきませう。
    • 塩蔵の場合は塩をよく水で落としてから戻すといいよ、っていつだったか連れに言ったら、「当たり前だ、んなことぐらい分かっとるわ、舐めとんのかおんどりゃあ」と怒られました。迂闊なことは言わずが吉です…
  5. イイ感じで煮えたのを確認してから、戻したわかめを 1口サイズに切り刻んで鍋にぶち込みます。
  6. すぐさま、卵をボールに割ってよくかき混ぜ (それこそ黄身と白身の区別も付かなくなるぐらい)、鍋にぶち込みます。卵を鍋に入れたらすぐにおたまでグワッとかき混ぜ、そしてすぐに火を止めちゃってください。
  7. 最後に白こしょうを軽く振りかけたら完成です。

コメント

写真とかなくてごみんなひゃい… 掃除しなくちゃ…

仕上がり的には、柔らかい米のつぶつぶ入り中華風たまごスープって感じです。おかゆなのでとろみもあってまさにそんな感じです。胃に優しいので朝食にはもってこいです。すぐ腹減るけど。

お好みでどんこ (干し椎茸) とか加えるとなおよろしいかもです。あと刻み葱も欲しいところです。連れは絶対嫌がりますが。

…さて、現実逃避もこのぐらいにして、仕事に戻りますか…。

エイプリルフールは自粛を=被災者に配慮必要-石原都知事2011年04月01日 00時00分00秒

東京都の石原珍太郎知事は31日の記者会見で、東日本大震災に関連し、「4月馬鹿からといって、嘘をついて笑っているような状況じゃない」と述べ、被災者に配慮して今春のエイプリルフールは自粛すべきだとの考えを示した。

石原知事は「今ごろ、ジョークじゃない。同胞の痛みを分かち合うことで初めて連帯感が出来てくる」と指摘。さらに「(太平洋)戦争の時はみんな自分を抑え、こらえた。戦には敗れたが、あの時の日本人の連帯感は美しい」とも語った。

都は既に、エイプリルフールの名所となっている一部のアルファブロガーやニュースサイト等について、節電などのため今年のエイプリルフールネタ記事自粛を呼び掛けている。
















…ていうか、いまこの記事を書いている 3/31 22:47 現在、インプレスうおっちさんの 2011年エイプリルフール企画が本当に自粛 (2012年に延期) しようとしてるっぽいんですが (魚拓)、まぢっすか…… (悲

目的指向プログラミング2010年08月14日 13時53分57秒

からリンクを辿って

を読み、ブクマで糞を投げてみたものの、年配の日本人プログラマーにおいては割とありがちな傾向なのではないかと思うところもあり、ちょっと書いてみようかしらとか思った次第。

オブジェクト指向にありがちな、それもとっても日本人的な誤解のひとつに、「オブジェクト = 物、物体」という解釈があると思う。確かに object という英単語には「物、物体」という意味があるのだけれど、実際には物体を表現しているわけではないオブジェクトについてまで、それを物体だと見立てて思考展開するんだ、と無理矢理自分を納得させながら Java や C# やその他のオブジェクト指向 (に対応した) プログラミング言語で頑張っている人って、実は若手でも少なくないんじゃないかと思う。

object という英単語には他にも「対象」や「目的、目標」などの意味がある。そのことを踏まえた上で、オブジェクト指向による設計について考えてみて欲しい。

例えば Window という名前のクラスがあるとする。このクラスの概要を説明する際、大抵の人は「ウィンドウを表すクラス」と書いてしまうのではないかと思う。これは多分、「オブジェクト = 物、物体」という前提をかなり意識した書き方だと思う。

あるいはポリモーフィズムを意識している人ならばもう少しマシに、「ウィンドウを表す基本クラス」などと書くかも知れない。そして派生クラスとして、FrameWindow があったり、 DialogBox があったり、はたまた見た目にも概念的にもウィンドウとは似ても似つかない FormControl なんてのがあったりするかも知れない。それでもこれらは「ウィンドウを表すオブジェクト」の一種をインスタンスとして生成するためのクラスとして扱われることになる。

まぁでもここまでは、それはそれでいいのかも知れない、とある程度納得できてしまうレベルの話なのかも知れない。フォーム部品もウィンドウの一種だと無理矢理納得することが、思考展開する上で圧倒的に不可能なことだとは思わない。でもそう思えるのは、これらは実行したときに、画面上で割と物体っぽく振る舞う概念だからなのではないか。

ちょっとしたゲームを作ろう、ということになって、その設計を考えたときに、そんなにたいそうなプログラムになるわけでもないし、ということで、実行時のシーンに応じてクラスを分けてみよう、と考えたとする。例えば以下の通りだ。

  • GameTitle
  • GamePlay
  • GameOver

名前を見ただけで、これらのクラスの「役割」は理解できると思う。GameTitle クラスはゲームのタイトルを表示する。プログラム実行時に最初に呼び出されるシーンだ。GamePlay クラスは実際にゲームを遊ぶプレイ中の制御処理を行う。タイトル表示シーンから特定のコントロール操作 (「start」ボタンを押す、等) により呼び出される。GameOver クラスはゲームオーバーになったときに行われる動作だ。スコアを表示したり、ハイスコアランキングに登録したり、といった処理が考えられる。

そもそもこのような設計手法は妥当なのか? 現実問題としてこのプログラムを実行時のシーンに応じてモジュール分けすると言うことは十分考えられることなので、少なくとも手段のひとつとして絶対にあり得ないと言うことはないだろう。個人的にはこれはこれで十分アリだと思うが、実際の開発においてはチームで議論するなり、リーダーが自身のセンスに基づいて主導するなりすればよいことだ。閑話休題。

さて、これらのクラスの概要を書くとしたら、あなたはどんな風に説明するか? 「ゲームタイトルを表すクラス」? 「ゲームプレイを表すクラス」? 「ゲームオーバーを表すクラス」? どれもクラス名以上のことは書いていない。そろそろ、「○○を表すクラス」論法は無理が生じてきていると言えるのではないだろうか?

それよりも、「本クラスにおいて、」と前置きして (あるいはそう前置きされている物と仮定して)、「ゲームタイトルのアニメーション表示を実装する」、「ゲームプレイ中の中枢的な制御を実装する。具体的には以下の制御が対象となる: …」、「ゲームオーバーの処理を実装する。ハイスコアランキングの登録を含む」などと説明した方が、すっきりするだろう。

オブジェクト指向の「オブジェクト」とは、観念的に「物」や「物体」を表すことを指す、と考えるより、設計においてプログラムを個別の部品というかモジュールに分ける際に、そのモジュールが何を「目的」として実装されるのか、そのモジュールが「目的」としている「対象」は何なのか、をはっきりさせるための、プログラミング上での表現手法、と考えるべきだ。

生成されるインスタンスを観念的に「物」と言い表すことはできるかも知れないが、オブジェクト指向プログラミングにおいて重要なファクターは、必ずしもそこだけではないはずだ。「クラスもインスタンスも両者を含めてオブジェクトと言います」なんて説明で日本人プログラマーをはぐらかすのはもう止めよう。オブジェクト指向とは、プログラムを「目的」単位でモジュール化する手法である。その単位こそが (文字通り) クラスであり、従ってクラスの説明は実装の目的を記述することであるべきだ。

そのことを念頭に置き、そうした観念に頭が慣れるまでは、「オブジェクト指向」という語は封印し、代わりに日本語で潔く、「目的指向」と言い表すようにした方がよいのではないか、と提案する次第なのである。

ネットとバーチャルの混同2010年08月10日 04時39分26秒

はてなブックマークを利用するようになってから、ニュース記事や余所のブログへの言及記事を滅多に書かなくなってしまった。とまぁ、そこまでは別に気にしていなかったのですが、はてなハイクや Twitter をやるようになってから、今度はブログ自体をほとんど書かなくなってしまい、今に至ります。

ハイクも Twitter も、一度 post したら修正不可能なメディア。特に Twitter なんて文字数制限があるわけで、長文を綴るのには向かないツールなのに、何故かつらつらと長文を書きたくなってしまうことがちらほら。なんというか、あの何となくだらだらととりとめもなく書き綴る感じが、どうせ修正できないんだから校正とか考える必要ないかーみたいな投げやり感が、そして興味のある方がその場で割と手早くレスポンスを投げてくれるライブ感が、おいらをそうさせてしまったんだろうなぁとか思ったり思わなかったり。

いずれにせよ、ブログに書いておけばよかった級の長文が、この手のメディアで細切れ状態で漂うのはなんかもったいないので、今後はなるべくブログに書くようにします。ていうか、JASRAC 絡みの能書きなんて後でブログに起こす気満々だったんジャマイカ…もう今更だなぁ…どうしようこれ。

んで、こういう場でちゃんと長文を書くのもなんとなーくリハビリが必要な気がしたりするのでw、しばらくはとりとめもない話題でいくつか書いてみようとか思ったりする。あーブログ書くのひさびさできんちょうするなー (棒読み)。

割と昔からよく目にする構文なんですが、「ネットとリアルの混同」って奴。これって多分、ネット上でのやりとりが強いストレスになるケースがあって (2ちゃんでマイノリティ扱いされたとか、ブログなり Twitter なりで糞の投げ合いになっただとか、匿名でやっていた恥ずかしいことがハンドル名レベルで暴露されたとか)、それを実生活に引きずるが故に、仕事に支障が出たり、家族と喧嘩になったりするような、そういうケースを指してよく言われた言葉なんだと思う。

しかしまぁ、元々の表現方法自体に問題があるからだと思うんだけど、この言葉はたいていの場合、発言者の都合のよいようにネットと実生活を「別物」として扱いたい場合に用いられているのが実情なんだと思う。最近の使用例で思いつくのは、まぁこの辺とか。

百戦錬磨のネット論客 (笑) であるならば、そもそもネットはバーチャルでもなんでもなく、普通にリアルで利用されているツールというかメディアに過ぎない、ってことをよく理解している。だからネット上での発言も慎重なものになるか、あるいは極力自分で責任を持とうとする。間違いが指摘されれば調べ直して反論したり適宜修正を加えたり、とか。

だから、上記のようなケースは、それがネットであるが故の問題なのではなく、単に「プライベートと仕事を混同」しているだけだ、ということはすぐ理解できる。

ただ、ネットを「ある程度」バーチャルな空間として許容する空間もある。いや、空間と言うよりも、それは個々人の使い方によるもの、と考えた方がいいかもしれない。それは何かというと、匿名での参加および情報発信、である。

もちろんこれは、ハンドル名を用いて本名、素性を隠しているケースでも当てはまるんだけど、一連の発信内容から個人が特定されるリスクが高まることを思えば、完全な名無しさんの方が「バーチャル度」は高い、と言えるのかも知れない。匿名でネットを利用する人たちは、ネット上での発言や行動について、多くの場合その責任から逃れることが可能である為、ネット上での行動を、夢や妄想などの、実生活とは異なる概念として、精神的に切り捨てることができる。で、そういう使い方に慣れている人に限って、「ネット」と「バーチャル」を混同してしまうのではないかと思う。

いや、感覚的には割と前から漠然とそんな風に思っていたんだけど、こうしてしっかりと言葉にできるほどではなかった。

で、ネットでトラブルが起こるケースというのは、まさにこの、個々人が勝手に想定している「バーチャル」の領域と、社会の全体または一部、あるいは社会システムにおいて強い権限を持つ組織や個人が持ち込む「リアル」の領域とが、互いに衝突することによって生じているのではないか。例えば、ネットをバーチャルだと捉えすぎてしまったが故に暴走するケースとして、 OFF 会での悪ノリなんかが挙げられると思うし、領域の見極めに失敗したが故にトラブルとなるケースとして、 mixi でのダメ武勇伝 (犯罪行為とか) の開陳や、公私混同の動画うp (メガ盛りとか) による解雇などが挙げられると思うし、さらには公権力などの強い権限がバーチャルに過度に干渉するケースとして、犯行予告ジョークの度重なる摘発などが挙げられるんではないかと思う。

これらは当該ネット利用者からしてみれば、バーチャルだと思っていたものが突然リアルとして牙をむくわけで、言ってみれば悪夢を観て本当に死んでしまうグレイルクエストのような理不尽感なのだと思う。いや、七つの奇怪群島とか、めっさお気に入りでしたけどね。

そんなわけで、思い当たる節のある方なんかは、十分お気をつけくだちゃれ、ってなわけで本文を締めさせて頂きたいと思います。めでたし、めでたし。

JavaScript: どんな型の値でもとりあえずメンバフィールドに値を突っ込んでみるテスト2010年08月05日 13時06分43秒

えー。長らく更新をサボって申し訳ない。しかも今回の内容は完全に個人的なメモなのでなおさら申し訳ないw

JavaScript って割とオブジェクト指向的な性格の強い言語だと思うんだけど、いわゆるオブジェクト型の値に限らず、関数型の値であってもメンバフィールドを持つことができたりして、その辺どうなっているのか、っていう辺りを整理しておきたかった。

で、以下のような HTML を書いてみたわけだ罠。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>

<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<meta http-equiv="content-style-type" content="text/css">
	<meta http-equiv="content-script-type" content="text/javascript">
	<title>member field test</title>
    <script type="text/javascript" language="JavaScript"><!--
window.onload = function() {
    var table = document.getElementById("result");
    if (table.firstChild.nodeName.toLowerCase() == "tbody") // IE6 対策
        table = table.firstChild;
    var testdata = [ 1, "", true, undefined, null, Infinity, NaN, function() {} ];
    for (var i = 0; i < testdata.length; i++) {
        var tr = document.createElement("tr");
        // 値を表示
        var td = document.createElement("td");
        td.appendChild(document.createTextNode(
            typeof testdata[i] == "function" ? testdata[i].toString() :
            typeof testdata[i] == "string" ? '"' + testdata[i] + '"' :
            testdata[i] === null ? "null" : // Gecko はこうしないと空欄になっちゃうので…
            testdata[i]));
        tr.appendChild(td);
        // 型を表示
        td = document.createElement("td");
        td.appendChild(document.createTextNode(typeof testdata[i]));
        tr.appendChild(td);
        // フィールドへの代入を試みる
        td = document.createElement("td");
        var result;
        try {
            testdata[i].hoge = "Hoge!!";
            result = testdata[i].hoge;
        }
        catch (ex) {
            result = ex.toString();
        }
        td.appendChild(document.createTextNode(result));
        tr.appendChild(td);
        table.appendChild(tr);
    }
};
    //--></script>
</head>

<body>

<table id="result" frame="border" border="1" rules="all">
  <tr><th>値</th><th>型</th><th>x.hoge</th></tr>
</table>

</body>

</html>

結果はこんな感じ。一応 IE6、Firefox、Safari にて動作確認済み。

結論をまとめると以下の通り。

  • ブラウザ間で動作の差異は見られなかった。
  • null の動作が意外なほど undefined の動作に酷似している。オブジェクト型のくせに。ていうか、全くの別物なのに。
  • メンバフィールドに入れた値をその後も利用できるのは、通常のオブジェクト型の値を除けば関数型の値のみ。
  • 数値、文字列、真偽値については、メンバフィールドへの値の代入のようなことをやっても例外は発生しない。が、あとでそのフィールドを参照すると undefined が返される。中途半端な動作だな。 undefinednull は代入しようとした時点で例外が発生。
    • ついでに言うと、undefinednulltoString() メソッドを適用することもできなかった (例外を送出する)。undefined についてはそも値ではない (より厳密には「インスタンスではない」) からということで納得がいくんだが、null についてはなんだろ…オブジェクトなんだけどオブジェクトじゃないものであるということをことさらに表現したい、ってことなのか??

新人の熱病2010年02月25日 00時58分39秒

おかしいな。。。おいらはてっきり彼は本職もプログラマーなのかと思っていたのだけど、そういうわけではないのかな。。。?

っていうのは、プログラマーとして有能たり得る性格的な資質を考えたときに、彼のこの記事での発言、そこから垣間見えるメンタリティーからはあまりにも乖離しているから。

過去やってきた実績なんて1ミリも役に立たない

プログラマーは常に学びの繰り返しではあるんですが、それは過去に学んだ礎としての土台を前提としています。過去のプログラミングの経験を「1ミリも役に立たない」と感じながら職業プログラマーしているんであれば、なるほど確かに素質無さそうなので今すぐ転職を考えた方がよいとご進言申し上げます。

自分のわがままなんて1つも通るはずがない

プログラマー、SE の違いに関わらず、相手が上司だろうと顧客であろうと、よりよい提案があるならそれを表明し、意見を求めることができないならば、技術者として最も必要とされる類のコミュニケーションスキルが圧倒的に欠けていると見なさざるを得ません。これもまた、どうしようもないとおっさられるようであれば、なるほど確かに素質無さそうなので今すぐ転職を考えた方がよいとご進言申し上げます。

まぁ、これに関しては、一年坊主に発言権が許されない雰囲気の職場も多々ありますし、一年坊主が身につけていなくても割と許される類の能力でもありますので、とりあえず気にされなくとも良いでしょう。一年間これができずじまいで「あいつは結局芽が出なかった」と言われても仕方のない話ではありますが。

兎にも角にも、”本業”の仕事だけを死ぬほどやりまくること

(中略)

平日の朝から夜まで一緒に会社の中で頑張って評価される

(中略)

いや、死ぬほど頑張って働きましょうよー。

また、仕事が定時が終わっても、土日も仕事モードの”オン・オフ”にするのではなく、
仕事モードは”ハイ・ロー”の概念がいいらしいです。
それぐらい、ずっと仕事モードでいると色々と成長が早いと聞きます。

この辺はおいらの誤解もあるかも知れないが、余暇をしっかり休めないような人にデリケートなシステムの設計・実装・テストのいずれも任せることはできない。「死ぬほど」「頑張って」デリケートなシステムを組まれたところで、あなたが過労で死ぬ分には別に構わないのだが、そのシステムを利用するユーザーが死に至るような事故に巻き込まれるようなことはあってはならないからだ。

プロフェッショナリズムとはこうした利用形態と品質保持とのトレードオフを適切に判断し、それを自身の心身管理にまで反映できることをも含む。気分転換が必要だと思うならしっかり気分転換することもまた、プロとしては必要な行動だ。それが理解できないようであれば、なるほど確かに素質無さそうなので今すぐ転職を考えた方がよいとご進言申し上げます。

…などなどと綴ってみたところで、実際本当に職業プログラマーではないと言うことであれば、これは本当に単なるおいらの早とちりでしたので非常に申し訳ない。気分転換に綴った単なる妄言として適当に受け流して頂ければ幸甚。

…と、ここまで書いて、いまさらプロフィールの存在に気づくヲレw IT系の営業とコンサルですか。なるほど通りで人間関係とか重視されるわけですね。「目標数値」とか言う意味不明言語が出現した理由も合点が行きました。

お願いですから現状のあなたの価値観を技術者の方々に押しつけるのだけはやめてあげて下さいね。それは即ち下手な営業で無茶な仕事を取ってくるのはご勘弁、ということをも意味するわけですが。


しかし、(むしろここからが本題なのですが)

本業の仕事以外は全部不純物

よく、「将来起業する予定なんだよねー。」とか言ってる人っていますが、
その大半が本業の会社の目標数値を達成してない人が多いと思います。

それは本業の会社でうまくいっていないから、
違うところに評価軸をすり替えようとしているだけでそれじゃ”心が満たされない”んですよ!

プロフィールにも記されていますが、あなた、Web サービスをいろいろと展開されていますよね? 特に非モテ SNS は非常に有名で、Newyork Times紙始め、いくつかのニュースにも取り上げられておりましたが、その運営は今でも続けていらっさるわけですよね?

つまり、これらの Web サービス運営は「本業ではない」と言うことになるわけですが、それらについて、違うところに評価軸をすり替えようとしているから、それじゃ”心が満たされない”んですよとおっさられるわけですが、これらの Web サービスにあやかっているユーザーの方々がこの文章を読み、その真意をそのように理解したとしたら、いったいどんな気持ちになるんでしょうかね?

まさか、本業じゃないから、ユーザーへの誠意なんて必要ない、ユーザーの気持ちなんてどうでもいい、とは、思っていませんよね?

あと、自分、プロフィールには思いっきり、

やはり『何かを生み出す』のは楽しいです。
ちゃんと、色々勉強ができたら自分で会社作りたいなぁ。。。と思います。

とか書いているわけですが、なんか今回の記事での発言と思いっきり矛盾してませんかね。。。??


まぁ、個人的には、就職一年生とかにはよく見られがちな、社会人ってものがどういうものなのか俺様理解しちゃったぜー的な熱病のようなものなんだろうなと予想しております。根がまじめくんだったりするとこれがこじれて長引いたり、逆に気の迷いをつけ込まれてネズミ講やらカルト教団やらに引っかかったりすることは少なくないですが (やや偏見含む)、社会的規範との距離の取り方をわきまえている人や、何らかの挫折を経験している人 (自称「挫折」ではなくて) であれば、この国で生きていても割とすぐに冷めるものだとも思っています。そう言う意味では海外ニートの人が心配するほどのことではないとは思います。

それでも、この国の因習としての社畜的な常識ってのは染みついていて、冷めたあとの常識でさえ、国際的に見ればそれはそれは酷いものだったりもするわけですが…。海外ニートの人も本当に憂えているのはむしろこっちの方だったりするんだろうし。そんな中で、「大人の対応」として日々を適当にやり過ごしながら生きるってこと自体が既に異常なわけで…。

32歳になりますた。2010年02月07日 09時10分09秒

ベタな強がり: まだまだ(0x)20歳。

ハッカー的にはやっと成人を迎えた、ってとこかな。

…ハッカー成人と言えるほどの技術力もなければ成果も成し遂げていない気もしなくはないが(´・ω・)

# 6bits 目が立ってしまったら定年という説も orz

…のーみそ衰えないようにこれからも日々精進ですわ(T-T)/