つれづれ

そのじゅうなな

最近、「抽象」についてしつこくグダグダ考えています。

抽象化は可読性を高めるための手段(知性の武器)の一つで、抽象化こそが構造化プログラミング や オブジェクト指向プログラミング の求められる主因です。それをわからない方が OOP とかを語ると、やれ保守性再利用(保守はいいんだ、保守は)や、やれコストが浮くや、そういう日経ちっくなメソッドを語り出してしまうから、大人なんて、嫌いだっ。(エライ人にはそれがわからんのですよ)

だから、わたしは抽象化については一言言いたい人なのですが、最近、そんなこといいつつ、実はわたし、よくわかっていないのじゃないかと思い始めました。うだうだ。


そのじゅうはち

子供の教育にXbox 360!?――MSの最新研究を見た

最後の「Boku」は、Xbox 360を使って子供にプログラミングを教えるためのソフトウェアだ。Bokuというキャラクターをプログラムで動かして、目的を達成させたり、自分でゲームを作れる。この程度では驚くようなものではないのだが、すごいのはプログラミングの仕組みと操作。メニュー画面から、動作やセンサー情報、対象物を示す小さなパネルを組み合わせる。

あら、eToys ぽい。そして3Dタートル。はこまるさん、買おうかしらん。

それにしてもタートル(?)名の「Boku」ですが、やっぱり「僕」なんでしょうか。

そのじゅうく

あるクラスがある。

結構肥大化していて、しかも、他の機能たちとは 明らかに関わり合いが深いものどうしな一群があるので、そこを切り離す。ここまでやって、「はて、これは何なんなんだろうか」と悩む。

そもそもこのクラスにいたのは正しかったのかしら。いやいや、ここら辺周辺にいるのは確かなのよね。でもこの新しいオブジェクトを、元のこの子がもっているのがいいのか、それとも違うあの子が持っているのが良いのかは、一概にいえない。いえない。

で、しばらく(数日くらいとか)悩んで、たとえばお風呂に入っているときに、あたらしくつくったそれの本当の名前がポンっと閃く、ということは結構多い。

名前が閃くと、その子が何者かがスッと見えてくる。するとそこの子をどのように振る舞わせれば「良い」のかも、ハッキリわかる。(その「良い」をやろうとしても出来なくしている、既存の設計不備な部分にもついでに気付く事多し(^^;)


* * *


魔法モノで、よく真名という概念が出てくるけれど、昔は「そう言う設定ね」くらいにしか思っていなかったのですが、プログラマになってみて、これは本当だなぁと思うようになりました。

「ゲド」という名は「ハイタカ」より、どれだけ その人間を表すものとして「アハッ!」と来るのかしら?と、そんな想像が楽しいです。


そのにじゅう

最近わたし、被害妄想のが酷くって、Amazonからメール

Amazon.co.jpのお客様へ、

Amazon.co.jpで、以前に「『夏目友人帳 1 【完全生産限定盤】』」をチェックされた方に、『夏目友人帳 1 【通常盤】"』のDVDのご案内をお送りしています。『夏目友人帳 1 【通常盤】』、2008年10月22日発売予定です。 今なら¥ 1,336OFF。ご予約は以下をクリック

に、・・・・鬼ですか。これ以上散在しろと言いますか。と本気で思ってしまいました。(注:わたしは友人帳1の限定版をAmazonでチェックしただけでなく買っています

そのにじゅういち

喰霊-零- は、なんだかフツーの昔話のアニメ化に落ち着いてしまって、面白いのだけれど、結局あの第一回は何だったのかしら。

今の時点でお気に入りは とらドラで、「まんま」じゃないけど 、アニメの事情に合わせて丁寧にリファクタリングしている感じで、好感が持てます。

逆になんかダメなのがラインバレルで、アニメ独自の部分が妙に鼻につきます(ここら辺は原作贔屓になっているだけかもしれないけれど)。特に予告で城崎さんの「最低です」をあれだけ使っておきながら、城崎さんにツン期なし、最初っから内心デレてるという風になっちゃうのは、本当にどうかと思います。

今後、森次さん×山下くん で盛り上げられなければ、多分敗北決定です(←何が?)

山下くん、萌えですよね?>みんな

そのにじゅうに

ダイクストラ先生は、抽象化の例として、計算を変数とアルゴリズムに分離する事を挙げました。

Boolean というと、true と false という値をとる概念に思えます。つまり Boolean とう概念を クラスに、その具象である true / false を値に 分離する、そんな抽象化。でも、Smalltalk ですと、True も False もクラスで、Boolean の派生型になります。そんな風に分離する抽象化。

前者は一群の計算に対する分岐フラグが変わる。後者は計算自体が指し変わる。

bool test;

if (test){
    doFooProc();
} else {
    doBarProc();
}
| test |
test ifTrue: [ doFooProc value ] 
     ifFalse: [ doBarProc value ]

前者は抽象データ型チックで、後者はメッセージ指向チックともいえるけれど、本当はあんまり関係ないのよね。

ただ、これが OOP なのかな、と思っていて、計算をアルゴリズムと変数に分離して、それから具象を得るときには 実際に変数に値を適用する。OOP だと、計算を、計算本体(?) と インターフェイス に分離して、具象を得るときには インターフェイス に 実際の振る舞い を適用する。同じ事だから、型チェックの重要さも同じ。

(追記:見返せばこの例、よくないですね)

そのにじゅうさん

Firefox の about:robots が濃いです。

  • タイトルが 「まるちぷるたいたんぱー!」
  • 本文
  • ロボットは良心回路を持っているので、人間に危害を与えません。
  • ロボットは航空力学を無視して空を飛べます。
  • ロボットは持ち主の脳波レベルを測定できます。
  • ロボットとアンドロイドは違う、と主張しているロボットもいます。

ロボットがやらねば誰がやる!

  • [再試行]ボタンを押すと「バーイチャ!」

多分、元作品は、カールビンソン、キカイダーマジンガー?、ガンダム、究極超人R、キャシャーンドクタースランプ だと思いますが、「航空力学を無視」は実はよく解りません。

まるちぷるたいたんぱー!・・はさすがにマニアックな方面にふりすぎだと思います。

そのにじゅうよん

最近、わたしの鞄の中には FE10 に Ai Nikkor 50mm F1.8s が付いたのが放り込んであります。

動機。一つは、お出かけする時間(というよりは体力気力的余裕?)がなくて、ここのところ我が家の犬子さんの写真しかとってないのですが、それはいかがなものかしら、と。

もう一つは、マリみての最新刊「卒業前小景」に感傷的になって(秋だもん)、マリみてを全巻読み返したら、急に「あぁ、高校生のときは蔦子さんみたいにいつもカメラを持ってたなぁ、それも一眼レフ」と懐かしくなったこと。

FE10 + 50mm 1.8s は、手持ちの一眼レフのなかで一番安くて軽くて小さい組合せ。壊れても惜しくないのがいいです。これに NATURA 1600 という高感度フィルムを入れて、さぁ、何時でも何処でもパシパシ撮りますよ!・・・と思っていたのですが、いや、夜とか帰り道に一眼レフで写真撮ってるなんて、どれだけ怪しい人物かと。そんなアイアンハートはとてもじゃないけれど持ち合わせていないので、あえなく挫折。

高校生のときは学校の何処でなにとっても怪しまれなかったのだけれどな~。蔦子さんも卒業したらこの懊悩を味わうに違いない。

LOMO でもホントに買っちゃおうかしらん。

そのにじゅうご

抽象化が読みにくい件について、特に「低スキルの人だと」「抽象化しすぎたプログラムは」読みにくいについて、ずっといろいろ考えています。

基本的にコンピュータに何かお願いをするときには、人が日常で使う概念よりも、より具象的(いちいち細かすぎる!)なので、これを人間が普段使っているレベルにまで引き上げる・・ということであれば、基本的にだれであっても「抽象化したら解りやすくなる」だと思います。

しかし、関数禁止令を出すような人たち、、喩え抽象化されたとしても、構造化されたプログラムが読みにくいとおっしゃる一派は、なぜだか 本物のプログラマ になろうとしているように思えてしまって。

本物のプログラマが人外なのは、ここら辺の(解りやすい・読みやすい・読める・解る)が、人間的でないから(マシン的であるから)。抽象化をわかりにくいと言う彼らは、本物さんになろうと努力しているわけじゃないのに、本物のプログラマが歩む茨道を求めているようで、私にはさっぱり理解できないわけで。

いえ、理解できてないわけじゃないです。こういうのはつまり、たとえば「プログラム書法」の「はじめに」にある、

なにやら役に立ちそうなものが配列にほうり込まれるんだな、とぼんやり考えて、そのまま先に進む

を、「プログラムを理解すること」と はき違えている方達だ、ということです。――偏見まじりですみません。


* * *


そこらへんの色つき眼鏡をとっぱらって、抽象化されたものが読みにくいケースを考えてみると、たとえば抽象で得た概念に対する理解、ひらたくいえば語彙が圧倒的に足らない場合、それについて、「プログラムの場合それの実装があるわけだから、コードを読みに行けばいいだけじゃん!」(わからなかったら辞書を引け~っ!メソッド)・・・と言い放った私だけれど、よくよく胸に手をあてて考えてみたら、ちょっとそれはないわ、と思ったり。

その概念(構造化部品)の詳細(実装)を読みに行くよりは、その概念の中に潜っていくよりは、その概念の使い方を見た方がわかりやすいんですよね。だから、思い浮かべればSmalltalk の example メソッドとか、ユニットテストのコードとかを読みたいと思っている自分が居ます。

てなると、ますます外見(そとみ:インターフェイス, 名前)重要というわけで。「抽象化しすぎる」って、外見の造りにピンとこないようなのを指すのかしら?

それは本当に開放閉鎖原則にものっとっていて、「うまく」まとまっていて、いるけれど、そのものが示す意味を想像させてくれない。さっきの「書法」の「はじめに」にあった、Fortran のトリッキーなコード を、違う意味だけれど連想させるような?

それは抽象化に失敗しただけに私は思えるのだけれど、「抽象って何?」とか「うまくいった抽象=あたしがわかりやすいと思う抽象 って定義してない?」とか、そういう風なのも疑わしくなる。むーむ。

実際、アナリシスパターンは、読んでてさっぱりわからなかったし、何処で自分がどこからわからなくなったのも、わからなかったという有様だったからにゃー。(やりすぎ!って思った)

そのにじゅうろく

ちなみに、「青春」という字を 新明解国語辞典 第四版でひいたら、

(夢・野心に満ち、疲れを知らぬ)若い時代。

となっていたり。そこはかとなく黒いのがこの辞書の良いところ。

そのにじゅうなな

わたしもEmacs 使い(というか xyzzy使い)なので、Ctrl は A の横です。よっぽどじゃないと無いのですけれど、たまに左小指(というか又ですね)が痛くなることがあります。そしたらどうするか。

そういうときにわたしは、小指の付け根の手のひらで本来(?)のCtrlキーを押しています。Ctrl の手のひら打ちは ノートPC 等のペッタンコキーボードでは出来ないのでちょっと困るのですが、そういうときは小指を握るように折り曲げて、第一関節の部分で押すようにしています。

親指Alt については、私はリアルフォースを使っているので、キーが十分に大きく、左Alt は移動させなくても楽におせるのでそのまま、右Alt は[カタカナ/ひらがな]キーとチェンジしています。

それにつけてもポメラEmacs風にできないかなぁ、はぁ。

そのにじゅうはち

FM10 のこと。(わたしは FE10 使いなのだけれど、どちらも似たようなモン――コシナOEM姉妹だからいいや。)

この子達、わたし結構好きで、F3の威を借ってるのにチープさがぬぐえないデザインですとか、コシナのベースモデルに対して、FM/FE系が持つニコン驚異のメカニズム(ミラーバランサー)を追加したカシュンとどこか柔らかいシャッターを切ったときの感触ですとか、本当にわたしのツボです。けれど、どうしても「ダメだなぁ」という所があります。

一つは品質のはなしで、具体的には 外装のゴム塗装がヤワすぎて、はがれやすいだけならまだしも、経年変化でベトベトになるって、それはあり得ないでしょうとか、そういう当たり前のこと。もう一つはそれより深刻な仕様のはなしで、つまりファインダーがダメなのを何とかして欲しいというところ。

FM10 のペンタプリズムはアルミ蒸着で、普通の銀蒸着に比べると暗いし青い。MFがしづらい。それは MF機として致命的だと思います。特に今は Nikon (というか5大カメラメーカー?)唯一の現行MF機になっちゃっているので、何とかして欲しいと強く思います。

せっかく好意で(?)MF一眼レフを売り続けているのだから、そこ直した new FM10 とか出してくれないかしら。ついでに ULTRON 40mm F2 の 廉価バージョン(プラスチィキーなやつ)でも付けてくれたらすっごくうれしい。

こういうのだせば、ゆる系写真雑誌の読者みたいな層に、それなりに注目を集めるとおもうのですけれど、・・・いや、商売にならないですね、きっと。

そのにじゅうく

昔、うちの新人向けの講習のアンチョコとして書きました。一部抜粋。


* * *


一方、ポンコツな我らが脳みそは、何故ポンコツなのか。大きなポンコツポイントに、規模への脆弱性があります。さて、ここで一つ例。仮想のサブルーチン format があったとします。format はリストを引数にもち、ドライブレターで指定されたドライブをまっさらにフォーマットしてくれる素敵(はぁと)な関数です。

format( c )
format( c,d,e )

こんな感じ。では、コレ(↓)は何をやりたいのでしょう?

format( c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,t,u,v,w,x,y,z )

「C から Z までを全部フォーマットする」?・・ブッブーッ。実は s が抜けています。でもパッと見じゃ気がつかないですよね。

こんな風に、人間の脳みそは、単純に「たくさんある」というだけで、理解力がドドンと低下してしまうのです。もし、やりたいことが 「CからZまで」なら、このコードはバグがあって、しかもコードを読んだときそれに気が付きにくいと言うことになります。

さて、このコード、なんとか出来ないでしょうか?(ここで、そこの君!と聞く)そう、「C と D と E と...」じゃなくって「CからZ」と書ければいいのです。

format( c..z )

ちょっとこれは卑怯なので、こんなんでも良いかもしれない。

format( range(c,z) )

「まんまじゃん!」と突っ込まれてしまいますが、そう、まんまなんです。


* * *


これは良い例じゃないので結局ボツりました。

「人間の脳は規模に脆弱」を理解してもらうのは難しい。単に数が増えればミスの発生率がその分積み重なるだけ、くらいにしか思ってくれない。でも「それじゃダメなんだよ」と思いながら、なかなかうまく教えられません。未熟。

そのさんじゅう

さいきんアクションフィギュアを物色しています。

ストレス解消用として、最近暇を見つけてはスケッチブックに漫画なデッサンをカリカリ書いています。デッサンの本とか、ポーズ集とか、人体の不思議展で買ったパンフレット(ぉ)とか、ガチャポン人形とかを題材にしているのだけれど、どうにもネタ切れになってきて、好きにポーズがとれるデッサン人形が欲しくなりました。

ただ、木製のよくあるデッサン人形はあんまり人間に似ていないので、私みたいなへっぽこが参考にして書くにはハードルが高いかな?って思いますし、googleセンセに聞けば、どうもアクションフィギュアのほうが漫画なデッサンには良いらしい。

で、ボークスここらへんとかを狙っているのですが、こんな すっぱ のボイン女の子やムキムキお兄さんのお人形が無造作にある部屋ってどうよ?と思ってしまい、いや、だからといってスレンダーな方を選べばインモラルな演出がさらに追加になるだけですし...と思ってしまい、そんなこんなで なかなか 買い物かごにクリック が出来ません。

あー、それと、なんかこういうの買っちゃうと、ドールに目覚めてしまいそうだなぁとかも思います。コミケで服とか買っちゃう人になりそうだ、わたし。凄いハマりそう。二重の意味で危険ナリです。

そのさんじゅういち

神様に願いをかなえてやると言われたら即答できるお願いはあるのですが、それは自身のありようについてなのですが、切迫した違和感とかそう言うのがないので、欠けたモノというより単なる欲望かな?って思います。

そうはいいつつ、そこをつかれるのを大変痛がっている自分を発見できるので、単なる欲望と思い込もうとしているだけかもと思ったり、いや、でも、本当にそれを欲する人の苦しみ様を聞くに、わたし、ちがうな~、とおもったり。そうやって うだうだ やっているウチに、寿命を終えるのでしょう。わたしは多分そんな人間。

そのさんじゅうに

ヴァースキスを読みました。もうっ、なんてうらやましいっ!

リヴァースキス (電撃文庫)

リヴァースキス (電撃文庫)


これは、登場人物に萌える本ではなくって、主人公に感情移入して自分に萌える本です。ツンデレ万歳!


それと、みすてぃくあい も読みました

みすてぃっく・あい(ガガガ文庫 い 3-1)

みすてぃっく・あい(ガガガ文庫 い 3-1)

これは・・・、表紙とタイトルと帯(閉ざされた女子寮。私たちのキケンなアソビ、幻想百合ミステリー)みんなが嘘つきだっ!

ヒントは、タイトルの「あい」は虚数の「i」 。i, mystic garden。キーワードは「虚数の庭」。そう言うお話。

でも、おもしろかったです。

そのさんじゅうさん

英英辞典はときどきオンラインのを使うのですが、弾さんのエントリーを見るまで、LongmanにはThe Longman Defining Vocabularyなるものがあって、2000語ほどの英単語しか使わずに定義されているなんて全然しらなかったです。

で、英語の勉強に紙のLongman を買ってみました。そのままだと重くて大きいので、カッターでバラして、通勤電車のなかでも読もうかな~って。でも、そしたら、読んでるところにちょっとわからない単語が出てきて、そこを引こうとしたら「えす、エス...はっ!しまった、無い!」となるんじゃないかってことに、買った後に気がつきました。

だめだ、ボケてるわ、わたし。