トップ 最新 追記

日々の破片

著作一覧

2012-04-03

_ 生存戦略そこが聞きたい

secondlifeさんの『なぜ XXX がダメか』を読み、いろいろ去来するものがあるのだ。胸ではなく脳を。

特に、なぜMochiKitの選択で謝っているのかは知りたいところだ。進化が止まった点なのか、それとも別の問題なのか。前者なら、SI的な視点からは逆に安定性という意味で問題ない選択ということになるし(つまり、それはそれで参考になる選択であったわけだし)、後者ならそれはケーススタディとして知りたいところだ。

で、まあ過去10年以上、おれさまプロトコルかHTTPかとか、DCOMかおれおれXML-RPC over HTTPかとか、貴族なXMLとボヘミアンなXMLつまりDTDかWXSかRelax-NGか無手勝かとか、おれさまかStrutsかとか、おれさまかSpringかとか、ASP.NETのWebFormかMVCかとか、WFCかASMXかとか、XMLかJSONかとか、何度も選択の必要があり、勝ち残ったものを選んだこともあれば、消えたものを選んだこともあり、まだ様子見なものもありといろいろだが、今のところは、インフラの上に直接薄いおれさまを置くとか、仕掛けが薄くてエミュレートしやすいものを選ぶというのが、一番生き残って成長もしている(Strust1.2だか1.3だかも生き残っているようだが、これとインフラの上に厚いおれさまというのはいじってはいけないものっぽい。図版参照)、流行関係ないからだ。あと、HTTPは正解だったとつくづくと思う。

起こさないで、自分で起きるから

写真は4travel.jpへ直リンク

で、生き残ったもののパターンについて考えてみると、以下の共通点がある。

・コンパクト

・インターフェイス(界面)下の再実装がしやすい

・インフラが見えやすい=インフラの再構成または単純な拡張であって、インフラの再構築ではない

・インフラ自身がコアAPIに近い(DCOMは、DCOMというインフラそのものが分厚い。HTTP(をインフラとして考えた場合)はTCP/IPが透けて見える(0.9とか1.0は。1.1になると相当厚みが増しているけど)。

今となっては、いじってはいけないになっているが、Struts1.xはこの条件に適合している。

で、さらに考えると、Railsが見事に違うんだよな。

まずコンパクトではない。再実装するのは無理がある。しかもRubyの再構築だ(ActiveSupport)。でも、現在に至っても悪い選択には見えない。というよりも、良い選択肢のままだ。

理由の1つは、ユニットテストのサポートのために、それなりにモックしやすくできているの(に代表されるわけだが、ユニットテストを記述しやすく設計されている点)が、大きいのかも知れない。これが通っているので、他の難点を潰せている可能性がある。


2012-04-05

_ ユーザ入力の住所は怖い

データベースには、ADDRESSみたいなカラムがあり、そこはvarchar(64)みたいになっているとしよう。

で、これまでは従業員が入力していた(たとえば、客が書いた配送先住所を手打ちで入れていたりとか)とする。

「これまで」というくらいだから、何も考えずにシフトJIS(でもその実体はWindows-31J)にしていたことだろう。

で、なぜかそれをユーザーがWebから直入力できるようにしてしまったとする。

これは、つくづくと相当な死亡フラグなのだが、問題となったという事例を見ない。

不思議だ。他の人たちはどうやっているのだろうか?

ユーザーは、こちらが驚くほど多様だ。

たとえば、「ザ・グレート歌舞伎町」というマンション名があるとする。

「・」を知っている人は「/」を変換するだろう。知らなくても普通はそう入力するような気がする。全然知らなくても「中黒」という用語を知っていれば変換できる。

でも、「ザ◦グレート歌舞伎町」と入力してくる人がいる。(WhiteBullet \u25e6)

あるいは「ザ•グレート歌舞伎町」(Bullet \u2022)も普通にいる。

これらは、最後にはデータベース内に「ザ?グレート歌舞伎町」として格納されて、気づいた人が「なんじゃこりゃ?」と騒ぐことになる。

「-」も鬼門だ。長音「ー」や「-」(全角マイナス)「―」(ダッシュ)「‐」(ハイフン)あたりはなんとなくわかる。「歌舞伎町3‐2‐1」とか書くなら、本来はハイフンのはずだが、これがダッシュやマイナスでもそれほどは困らないし、長音なら置き換えようという気にもなる。

しかし、現実は「―」(Horizontal Bar \u2015)や「‑」(Non-Breaking Hyphen \u2011)「—」(Em Dash \u2014)「⁻」(Superscript Minus \u207b) など、どうやって入力したんだろう? というような文字がたくさんでてきて、気づくと住所は「歌舞伎町3?2?1」になっているわけだ。

対応するにはどうすれば良いのだろうか?

1) データベースの文字コードをUnicodeにする。DM印字とかは多少の字体の違いには目を瞑って入力されたものをそのまま利用する。

これが無難な気がする。

2) WebページをWindows-31Jとして、POSTデータもWindows-31Jでエンコードさせる。

これが成功するかどうかは良くわからない。エコーバックした時点で文字化けしたというユーザークレームを招くだけのような気がするが。

3) 中黒やハイフンに似たすべての文字を洗い出して変換表を作る。

挫折しますた。諸外国の言葉まで含めると中黒やハイフンの代わりに利用できそうな文字はたくさんあり過ぎる。

4) 利用可能な文字コードのセットを使って、文字チェックをする。

しかし、普通のユーザーに「入力された『ザ•グレート歌舞伎町』は利用できない文字が含まれています」って、そんな間違い探しさせるのか? というか、普通に中黒を出せない人だから、そんな妙な入力をしているわけだろうし。

5) 住所入力専用の賢いソフトウェアキーボードウィジェットからしか入力できないようにする

思いっきり不便な気がするのだが。漢字部分だけはキーボードを使わせて?

6) はて困った。

というわけで、みなさんは、どのように対応されているのだろうか?

本日のツッコミ(全8件) [ツッコミを入れる]

Before...

_ arton [むむ、住所だけじゃなくて名前も実はまずいことに気付いた。「髙井」さんとか。]

_ foa [SJIS Oracleに繋いだRails業務アプリやってますが、DB上は―とかの実体参照形式で保存して..]

_ arton [おお、そういう方法も取れますね!参考になります。それだとブラウザが実体参照を送ってくるのと整合性があって良いですね。]


2012-04-07

_ 建国の精神を語るなかれ

亀井亜紀子が、インタビュアーに答えて、あの連中は実に笑わせてくれる。だいいち、建党の精神に則り云々と偉そうな事を書いているが、建党の時点で参加した者は一人もいないじゃないか。という趣旨の発言をしていた。

悪くない発想だ。歴史の積み重ねによる理念の喪失と変容であるとか、万事は耳打ち遊びとか、エピゴーネンの俺様解釈とか、どちらでもあるから、意味はないけれど、難癖つけるには良い方法かもしれない。

ただ、紀元節にくだらないことを言っている連中の前に瓊瓊杵尊(なんかiPadが変換したが本当か?)が降りてきて「ばかもの、建国の当事者でもないかすのくせに建国の精神を騙るんじゃねーよ」と、説教を喰らわすってこた、あり得ないのが実に残念だ。大昔のしかも存在したかどうかさえあやふやな理念を持ち出してくるだけでただの三百代言ということはわかると思うのだが、実に奇妙な風習だ。

建国精神講話 (1939年) (建国教育講演集〈特輯号〉)(満州帝国教育会)

で、それと比較すると、ワシントンやジェファーソンと比較しようとすればできてしまう分だけ、アメリカ合衆国のほうが誠心を求められそうだ(が、そんなこたないだろうなぁ)。

トマス・ジェファソンと「自由の帝国」の理念―アメリカ合衆国建国史序説 (MINERVA西洋史ライブラリー (35))(明石 紀雄)


2012-04-08

_ 新国立劇場のオテロ

これはすばらしかった。

新国立劇場は、すごい歌手による歌の競演というのではなく、演出の工夫と平均以上の質で手ごろにオペラを見せる劇場という印象を持っていたし、おそらくそういう線を実際に狙っていると思うのだが、今日観たオテロはとにかく歌手がすばらしかった。

まずイヤーゴを演じたババジャニアンが良かった。大体、これまでバリトンって、銀髪のすごい人を別とすれば、あまり通らない声で渋く作品を支えるという印象だったのだが、良く通る張りのある声で歌いまくるからしびれまくる。しかも(演出上の衣装のせいもあるが)いかした男前っぷりで、まるでベネツィア=キプロスのマトリックスを支配するオテロに一人で挑むネオという格好良さで舞台を回す。この歌手は気に入った。

で、今回代役なのだが、デズデモーナのボルシがすごいのなんのって。コジファントゥッティのときは、まあ新国立劇場に来る歌手だなという印象だったのだが、今回は最初の発声から、なんと美しい声なんだろうとはっとさせられて、魅了されまくる。声の美しさで感動するのは久しぶりだ。このくらい、見事なデズデモーナを観る機会はそうそう無いんじゃなかろうか。というわけで、ボルシという名前はおれのディーバ名簿に刻み込まれた。(本来出演するはずだったポプラフスカヤはメトロポリタン歌劇場のドンカルロのエリザベータで観たことがあるが、(劇場がでか過ぎるというのはあるにしても)、ここまで素晴らしい歌が歌えたかどうかはわからない)

オテロのフリッカーロは、あまり好みの声質ではないので感じるところはそれなり。ということで、2幕の途中だけはちょっと退屈したが、そうは言っても堂々たるオテロだ。

あとエミーリアの清水という人が、あれ、この歌手は日本人なのか? とちょっと驚くほど声量があって(特に4幕)、これまた良かった。

オーケストラは東京フィル。金管がスタッカートしまくるところでもそれほど危なげなく演奏していて良い感じだった。

この演出を観るのは2回目だが、おれはすごく好きだ。実に良い舞台美術だし、衣装も良い(今回は特にイヤーゴが似合い過ぎていて特にそう感じるのだろう)。

今回、気づいた演出。オテロがヴェネツィア特使から受けた総督からの書状を読み「オテロはヴェネツィアへ召還、新司令官はカッシオ」と告げるところは、これまで額面どおりに、そう書いてあるのかと思っていたが、この演出はそうではなく、特使ですら、封印された書状の内容を知っているとは限らないわけなのだから、自分と共にデズデモーナはベネツィアへ去り、司令官としてカッシオがキプロスへ残るという状況を作ることで、2人がどれだけ動揺するかを探ろうした、という解釈をしているように読めた。書状を読み上げたあとのオテロのセリフが、2人の顔色を伺うような内容だったからだ。ところが、期待していた反応が引き出せないため、デズデモーナを地に這わせることになる(が、引き出せたら引き出せたで同じことなんじゃないかなぁと思うが、いずれにしても引き出せるわけがない)。

Maria Luigia Borsi(Numitor, Gerd)

(リリックソプラノ プッチーニ ベルディ という副題が付いているから、ボルシについての何かなんだろうけど、なんなんだろう? アフリカへの寄付ウェアで、Wikipediaの内容をブックレットにしたものということなのかなぁ)

Giacomo Puccini: Turandot

(ボルシがリューを歌ったトゥランドットのCDはあるみたいだ)


2012-04-09

_ 伽藍、バザール、ノウアスフィア、おなべ(1)

エリック・レイモンドの伽藍とバザール19991997年(翻訳版の日付を最初書いていた。以降修正済)なので、もう15年も昔のことなのか。それだけ年月がたてば、ソフトウェア開発者でも、プレジデントやダイヤモンド並のいい加減な知識でいい加減なことを書いたりしたりするのだなぁと感慨もある。

感慨もあるが、少なくともソフトウェア開発そのものを仕事にしているのなら、もう少しまともな知識を持つほうが良いんじゃないか? とも思う。

というわけで、読まずに済ませるOSSの歴史入門を簡単に書いてみたり。

ただ、どれも読めばささっと読めるものばかりなので(山形浩生の訳も読みやすい)、リンクもつけたし本物を読んでももちろん良い。

まずは、『伽藍とバザール』だ。

さて、1997年。Linuxが実用的なOSになってきたころの話だ。FSF(GNUの組織)が1980年代から開発をしている(そもそもgccやGNUのツールは、そのために開発されたはずの)完全にフリーなUNIX互換OSHURDがいつまでたっても完成しないのに、なぜフィンランドの学生が386PC買ったうれしさについ作り始めたOS=Linuxがまともに使えるようになったのか? ということに着目して、HURDの開発体制とLinuxの開発体制に原因を求める論文が発表された。書いたのはエリック・レイモンド。題は『伽藍とバザール』。

普通に考えれば、Emacsを開発したハッカーの中のハッカーRMSとその仲間(つまりgccやGNU Toolsなどなどを開発している連中だ)たちが開発しているHURDのほうが先にモノになるはずだ。

だが、現実は違った。

大伽藍

(伽藍というのは、カテドラル(大聖堂)のこと。翻訳者の腕のみせどころだが、固い漢字の『伽藍』と軽いカタカナの(日本人的にはアラビアンナイトのようないかがわしさを連想させる)『バザール』と訳すことで、概念の対比を強調しているが、宮大工の仕事とテント張りの仕事の対比と考えても良い)

バザール

伽藍の建築現場では、親方に指図できるものはいない。弟子達がしゅくしゅくと作業をしていく。外部の人間が壁の歪みを指摘したとして、それが親方の耳に入るかどうかさえ見当がつかない。

バザールでは、商人が1000円で売っている商品に客が介入して400円なら買ってもいいぜとやる。そりゃちょっと旦那、800円でどうですか? と、その場で交渉が始まり適正なところに価格が落ち着く。

OSのように複雑で規模が大きく、開発者の人数も多いソフトウェアの開発をするにはどのような体制が適切だろうか? 設計者が設計し、実装者が実装し、テストをする、そういう伽藍建築のように少数の権威とそれにしたがう集団のよる体制であるべきだ、と誰もが考えていた(ただし、マイクロソフトは違う、と信じられていたわけだし(人月の神話の新装版に追加されたブルックスの回想記。『伽藍とバザール』脚注参照)、その片鱗はジョエルのエッセイに少し見えるが、1990年代後半にはマイクロソフトですら大企業的になっていたようだ)のだが、Linuxの成功を見ると、それは間違いかもしれない。

・意思決定のスピード(なにはともあれメールは通せ)

・開発プロセスへのユーザの組み込み(ユーザは大事な財産)

・リリース頻度の短期化(はやめのリリース、しょっちゅうリリース)

これらが、Linuxの成功の要因のようであり、まさにHURDには欠けているものだ。

では、それらを可能にする条件は何か。

それは、プロジェクトリーダーがナイスであることだ。

バザールプロジェクトは、コーディネータやリーダの対人能力やコミュニケーション能力が優れていないとダメだ。


これが、『伽藍とバザール』だ。

おそらく、伽藍=プロプラエタリ、バザール=オープンソースという誤解をしている人がいるかもしれない。だが、オープンソースという言葉は、この時点ではまだ存在しきっていない。したがって、そもそもそういう対比ではないのだ。

わかりやすく、21世紀現在の言葉で、伽藍とバザールという対比を現実社会に当てはめると、もっとも近いものは、ウォーターフォールvsアジャイル だ。

(アジャイル開発で、リーダーがどれだけナイスであろうと心がける必要があるかを考えると良いと思う)

参考書

人月の神話(フレデリック・P・ブルックス Jr.)

アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣(Venkat Subramaniam)

アジャイルサムライ−達人開発者への道−(Jonathan Rasmusson)

(これは読んだことないけど、ナイスガイ角谷がからんでいるのだから、良い本なのだろう)

・追記:shiroさんのご指摘を受けて1997年に修正。ありがとうございます。併せて「10年以上前」を「15年前」に修正。


2012-04-10

_ 伽藍、バザール、ノウアスフィア、おなべ(2)

1997年の伽藍とバザールに引き続き、1998年、エリック・レイモンドは『ノウアスフィアの開墾』を発表する。

この間に、大きな出来事があった。

1つは、『オープンソース』の登場だ(1998年1月オープンソース革命の狼煙があがる)。

このあたりの詳細については、エリック・レイモンド自身の『ハッカーの復讐』に詳しい。

かいつまんで紹介すると、当時、マイクロソフトによる締め出し(IEをWindowsにバンドルする=サードパーティブラウザーは不要となる+OEMベンダーに対する締め出し要請)によって絶命寸前に追い込まれたネットスケープが、ブラウザーのソースコードをオープンにし、バザール開発へ移行することで、マイクロソフトとの競争に優位に立つことにより市場価値を高める(=投資家からの再投資を受ける)という戦略を立てたのだった。そのためのトリガーとなったのが、伽藍とバザール論文だった。

役者がそろった。

・マイクロソフト=悪の帝国

・ネットスケープ=悪の帝国の侵略からの助けを求める善良なウーキー族

・オープンソース=フォース

・ハッカー=ジェダイ

・Linuxディストリビュータ(群)=反乱同盟軍

だ。パパパパーパパパー。

が、これはばかげている。

投資家から資金を得やすくするために、フリーソフトという由緒ある名前を捨てて(FSFを切り捨てて)オープンソースという言葉を作るのは戦略としてはありだとしても、ネットスケープの失墜は悪の帝国によって追い込まれたというよりも、自分で墓穴を掘ったのが原因だからだ(おれは、『辞職そして追悼。(jwz)』の視点から書いている)。

自らの戦略ミスで、自分の脚を木端微塵に吹き飛ばしたのとほぼ同じ時に、兎を倒すにも大砲を持ち出す過剰反応のマイクロソフトが撃ち方を始めた(フリーソフトを捨ててオープンソースという新たなムーブメントを作ることと、営利企業が収益を最大化するためにライバルを市場から締め出そうとすることの、どちらが悪かといえばどっちでも良い)のでこれ幸いと、悪の帝国に侵略されつつある可哀相な犠牲者を演じただけのことだ。

とはいえ、その失敗からの逆転のための秘策としてバザール開発に目をつけたのは、(結果論としては失敗となったとしても)実に興味深いことだし、その決断がオープンソースに対する燃料となったのは間違いない。したがって、間違いなくネットスケープは歴史を回したのだ。

とはいうものの、ネットスケープのバザールはそれほどうまくは機能しなかった(というよりも、形成されなかったことはjwzによって書かれている)。ネットスケープがブラウザーとしてよみがえるにはFirefoxを待つ必要がある。

Coders at Work プログラミングの技をめぐる探求(Peter Seibel)

(jwzは高校卒業後CMUのプログラマ(学生じゃなくて研究所でプログラムを書く技術者)などを経由してLucidでXEmacsを開発し、ネットスケープでナビゲータを開発して、今はクラブのオーナーらしいが、かっこいい)

それはそれとして、エリック・レイモンドは、伽藍とバザールの続きを書く必要がある。

なぜ、ハッカーはハックし、それをオープンにするんだ? それを説明できなければ、オープンソースにベットする人間は出てこない。そして、ベットさせるために、オープンソースを立ち上げたのだから、それは絶対的に必要だ。

かくして、共有地、贈与経済、評判といったキーワードに彩られた『ノウアスフィアの開墾』が発表される。

ここで一番重要な言葉が『優しい独裁者』だ(と思うのだが、初出は別かも知れない。ただ、『ノウアスフィアの開墾』で『優しい独裁者』がクローズアップされていて、それは『伽藍とバザール』の時点ではなかったものだ)。

この地の開墾は、まだ続く。

本日のツッコミ(全19件) [ツッコミを入れる]

Before...

_ Tambourine [開発ツールが優れているから、SafariがFireFoxを駆逐するというのは、夢があっていいなあ(笑)。儚いのが夢だ..]

_ arton [しかし、教えてくれた http://stackoverflow.com/questions/3934060/is-t..]

_ mput [オープンソースで楽する人は何も分かってないなあ。自分の言葉で語れないってのは自分の頭で考えれてないってことだぜ。よそ..]


2012-04-11

_ 伽藍、バザール、ノウアスフィア、おなべ(3)

さてやっと1998年春を迎えて『ノウアスフィアの開墾』だ。おそらく、伽藍とバザールにくらべてがくんと知名度は落ちる(つまり、みんな2項対立は大好きだけど、協調の話や未知の用語には興味がないんだろうなぁと勝手に推測しているおれだった)。

ノウアスフィアとは、『ヌースフィア』(でぐぐれ)のことで、ぐぐればわかるが、すさまじく怪しい用語だ。もっともこの論文の中ではソースコードが存在する思考空間を意味している。

この論文のテーマは、なぜハッカーはソースをオープンにするのか、なのだが、内容はむしろ、「なぜオープンソースは、ソースの自由な改変を許すライセンスなのに、改変したソースが元に戻るのか?」の解明に軸足がある。

推測だが、ネットスケープをはじめとする企業が自社のコードベースをオープンにした場合に、そこから知らないうちにフォークされてもっとうまいことされるのはすごく嫌がるだろうと考えて、そうではなくハックされて戻って来るよ、ということを説明しようとしたのだと思う。

この論文で説明されていることは、結構、皮膚感覚で理解できることが多い。

・名前重要

この場合の名前は変数名とかではない。たとえば、ソースコードの先頭のコメントにby Matzと書かれていたり、ChangeLogにusaとか書かれているとする。それを消しゴムでごしごししてはならない、ということ。当たり前だ(と、おれは感じる)。ではなぜオープンソースに関係する人間なら、それは当たり前だというコモンセンスがあるのか?

・はじめたやつがえらい

これも当然だ。RubyはMatzだし、jcode.plはdankogai(追記:良く知らない領域を有名でわかりやすいだろうという理由から調べもせずに書くのはくずだという見本のようなことをしてしまった。jcode.plは歌代さんですな。dankogaiはJcode.pm経由Encode.pm(さらに追記:Encode.pmの原作者はNick Ing-Simmonsです)。お詫びして訂正します。ごめんなさい)だ、というようなことだ。ファウンダーの名前とプログラムは密結合している。では、なぜこれも当然だ、と感じるコモンセンスがあるのか?

・オリジナルがえらい

それから、フォークがめったに起きないこと。実際、Perl、Ruby、Python、Gaucheといった言語系は特にそうだが、RubyにとってのJRubyのような別プラットフォームに対する別実装や、Rubiniusのようなどちらかというと実験的な別実装(PerlでいくとPugsなんかがそれにあたると思う)はあっても、同一ソースコードからのブランチが独立して出ていくようなことは(1回あったけど)あまりないし、それが主流となることもない。なんかBSDのフォークがすごい(といってもNetBSD、FreeBSD、OpenBSDしかないけど(実際はもっとある))のでフォークするような印象があるが、人が犬を噛むと事件になるの原理で、ほとんどないことだからニュースになるのだ。というわけで、BSD、X.orgのようなものはあるけれど、それほどフォークはしない。でも、それってライセンスは自由な改変を許すのに不思議じゃない?

で、ソフトウェアプロジェクトを開始することを、荒野の開墾にたとえて説明している。これは本文でも書かれているが、世界中どこにでも見られる慣習または法で、考えてみれば日本でも墾田永年私財法にしろ、江戸時代の新田開発にしろ、お金か労力を出して開墾したやつがそれを手に入れるという決まりがあった。似ているね。(だからどうしたという気もするけど)

そこから、贈与文化へ進む。物が有り余っていて生存のための競争(食うための殺し合い)が不要なら、お互いに物を譲りあうほうが生きるのが楽だ。そのような文化では、気前が良くてみんなに物をばらまく奴が偉い。尊敬を集める。これが、ハッカー(の生成物であるソースコード)が生存する空間=ノウアスフィアの文化だ。で、この空間において最も重要なものは、評判(=集めた尊敬)だ。つまり、ノウアスフィアにおいて貨幣経済での貨幣に相当するものは、評判で、貨幣経済で他人の貨幣を奪うことが犯罪なのと同じく、ノウアスフィアにおいては他人の評判を奪う(プロジェクトを横からさらったり、名前を消したりするような行為)は犯罪として扱われる。

ハッカー倫理がコモンセンスなのは必然だったのだ!

さてその空間でも、特にすごいやつがいて、極端に他の連中と比較して広大な土地を開拓してしまう。当然のようにその人間は巨大な評判を持つことになり、周りの普通の人はそこに集まってくる。しかし、巨大な評判を持つ人間が評判を得ているのは、評判を持っているからだ(なんというトートロジー。もちろんそれだけの評判を得たのは、巨大なコードベースを創出したからだけど、それ自体はノウアスフィアの贈与経済の仕組みからみんなの共有財となっているわけだから、最終的に残っているのは評判だ)から、インセンティブは評判の維持にある。評判を維持するためには、ハッカー倫理にしたがう必要がある。

かくして、圧倒的な能力(開墾した土地の広大さで、広大なゆえにニッチもたくさんあるし、目を離すと荒れてしまう土地もある=他の移住者のための場所がたくさんある)によって独裁的な権力を他のメンバーから与えられたが、その基盤は評判である以上、彼は評判を失うような行動は取れない(まあ、取る必然性もない)。したがって、この独裁者はいやがおうでも、「優しい独裁者」とならざるを得ない。

そこで、ラリーもリナスもマッツもナイス! なのは当たり前のことなのだ。そして優しい独裁者のもとでの開発は、緩やかなハッカー連合によるユーザーをも取り込んだバザール型にならざるを得ない(強権を振うことにより評判を失うことが忌避されるためだ)。独裁者はその地位を守るためにはコードベースをより豊かにする(=領民の生活の場を維持、拡張する)必要があり、そのためには名前重要をはじめとしたハッカー倫理に従う必要がある。ソースコードのエコシステムの維持が彼の職務だからだ。

と、細部をはしょって説明すると、なんじゃこりゃのようなところはあるが、でも、確かにこれでオープンソースのあり方(というか人間関係)は説明がつく。

この論文が後知恵で見て嫌らしく感じるのは、だから企業さん、安心してハッカーが作りだしたプログラムを使いまくっても平気だよ。だってやつらは評判重要だからね! それからソースをオープンにしても問題ないよ。だって大きな実り(=パッチ、拡張)は元の持ち主に戻ってくるからね! という意図が透けてみえる点だ。

でも、それをおいておくと、ここに説明されているハッカー倫理の分析は、明文化されたオープンソース開発への参加ガイドとして優れている。

それにしても、伽藍とバザールの結論が、プロジェクトリーダーはコミュニケーションスキルがあるナイスなやつじゃなきゃだめだよ、で、ノウアスフィアの結論は、他人の評判を大事にすることで自分の評判が傷つかないように振る舞いなさい、というのは、一般的に考えられるハッカー像とはずいぶんと違うように見える。それは当然で、評判を大事にするという言葉ひとつとっても、(ノウアスフィアに対比させて)現実空間とはちょっと違う。早い話が、間違った物言いにはフレームを辞さず、バグっているコードは容赦なくリバート、腐ったアイディアは腐っていると指摘する、そういったソースコードレベルの生なプロトコルが下にはあるからだ。それはそれ、これはこれ。

後、おもしろい指摘で、でも確かにそうだなというのが、賞賛は個人に、非難はプログラムに、というのがある。

たとえばAさんがリビジョン5390のコミットをしたとして、それが素晴らしい効果を与えたとする。その場合は、「Aさん、GJ!」と、そのコミットをした個人の名前が賞賛される。

一方、Bさんがコミットしたリビジョン5391がとんでもないデグレを巻き起こしたとする。この時は、「r5391のせいでとんでもないことになった」「r5391はひどかった」と、Bさんではなくコードが非難される(少なくとも公式文書では)。

まともな開発者ならバグは常にあるということを知っているから、エンバグしたという理由で個人を非難してもしょうがないとわかっているからだ。一方、どういうコードが問題を起こしたかの知見は重要だ。

一方、良いアイディアは人間に根差しているのは当然だ。したがって賞賛が人に向かうのも当たり前だ。

でも、確かに見た目の対称性はないね。

というわけで、次回はハロウィン文書へ進む。これはあらゆる意味でおもしろい文書だ。

_ お礼とご報告

ナイスガイ角谷とオーム社の御好意で、アジャイルサムライをいただきました! ありがとうございます。

アジャイルサムライ−達人開発者への道−(Jonathan Rasmusson)

で、ざっくりと読み始めると忍者の写真やらマスター・センセイのお言葉やらがたくさん入っていて、これはナイス(という言葉から受けられる妙な人なつこさと親近感があるポジティブなイメージ)な本だ。

そして書かれている内容は、お客様の立場になって考えて、みんなで合意して計画して計画に無理があったら方向を調整して……とナイスな人間として振る舞うことが書いてある。

ちゃんと読んだら、また書きます。

_ オリジナルがえらいの追記

ハッカー倫理ではオリジナルがえらいのは、ファウンダーがえらい、つまりは評判重要なのだが、これが企業論理になると俺様に都合が良い改変をして保守は連中、というコスト戦略になるところがおもしろい。

本日のツッコミ(全2件) [ツッコミを入れる]

_ naruse [> dankogaiはJcode.pm経由Encode.pm。 Encode.pm の原作者は Nick Ing-S..]

_ arton [どうもありがとうございます。Encode.pmは現オウナー(この認識が間違ってたら話にもならないけど)ってことでいい..]


2012-04-12

_ 伽藍、バザール、ノウアスフィア、おなべ(4)

というわけで、1997年の伽藍とバザールがトリガーとなり、ネットスケープがバザール開発へ(内実はともかく)移行し、1998年にはオープンソースという言葉が走り出した。

マイクロソフトの状況はおおざっぱには次のような感じだ。

まず1995年にはWindows95が大成功した。ってことは、IBM=OS/2を叩きのめしたということだ。

次に社内でBBS(ブラックバード=MSN)かインターネットかで内ゲバ勃発。Windows95の最初のリリースには、MSNというインターナショナルなBBSのサインアップ用アイコンがついていたのだが(つまりBBS派が優勢だったのだが)、すぐにインターネット派の猛攻が始まり、モザイク由来のブラウザーSPYGLASSを買ってきてIEとして頒布開始(このあたりも、ちゃんとお金を払ってない――無料ダウンロードさせたので販売していない=だからライセンス料払う必要ない――とかいろいろ言われているけど、良くわからないのでそういうことを言われていたという事実だけ記述)、MSNはいつの間にかISPに変身(MSNには退会時に個人的にとても不愉快な思いをさせられたので、今でも恨み骨髄。なおMSNはその後ISP事業から撤退する)、インターネット派大勝利。

インターネット派が大勝利すると、社外に目を向けてネットスケープに砲撃開始(が、実際にネットスケープのブラウザーを買っていたおれが言うのだから間違いないが、ネットスケープはそれより前に自滅していた。というくらいに、彼らのナビゲータ(というブラウザー)は良かったのだが、MS砲対抗次世代ブラウザーのコミュニケータ(というインターネットスーツ)はかすだった。これはjwzの回想と一致する)。

そしてネットスケープが伽藍とバザールに目をつけたのと同じように、マイクロソフトは次の攻撃目標をLinuxに設定した。

クライアントOSのWindows95とは別に、サーバ用OSのWindows NTと直接的に競合するのだから、この設定は正しい。

B007138BQ4

で、そのための社内調査-レポートが作られたのだが、それが1998年10月30日のハロウィンにリークされて、エリックレイモンドの元に届く。かくして、『ハロウィン文書(エリックレイモンドによる皮肉ツッコミ付き)』が世に出たのだった。

ただ、この文書の分析の鋭さと戦略立案のうまさ、つまり敵勢力の強み/弱み分析とそれに対する社内の強み/弱み分析、それに基づく戦略の提案、どれを取っても、さすがマイクロソフト! すげぇ! と、普通に読めば舌を巻かざるを得ないので、むしろエリックレイモンドの皮肉ツッコミが入れば入るほど、おいおいオープンソース(の連中――と考えてしまうのだが、もちろんエリックレイモンドという代表者のことだ)ってどっかおかしいんじゃないか? と首をひねることになる。きわめて不思議な状態になること請け合いなのだ。が、時代の勢いってのはあって、なんかマイクロソフト=悪の帝国という変な妄念(いや、実際、OEMバンドルへの介入やマーケティング(FUD戦術!)やらいろいろなところでダーティーな手も打っていたわけで、必ずしも間違いというわけでもないが、ビジネスはビジネスだし、FUDはレッテル張りに対する対抗手段と見ることもできるし、いろいろだ。まあ、エリックレイモンドがハロウィン文書の中に入れているコメント群についてVA LinuxあたりのMSに対するFUDだ! と言うことだってできるよね)をこの頃に植え付けられた人は、今でもスラドとかで見かけることがある。多分、そういう連中は、文書そのものは読んでないんだろうなぁと推測するわけなのだが。

この点について、翻訳した山形浩生は「この文書はちゃんと戦略というものを明文化し、それを組織的に共有しようという明確な意志があらわれている。そしてそれにはちゃんと実効性があり、(少なくともこの組織にとっては)きわめて有益な代物となっている。 」と、あえて説明を入れていて、ハロウィン文書そのもののうまさを読み取れない人のために、見るべき点をきちんと解説している。

おれは、この解説を読んで、うっはー山形浩生ってすごい人だな(エリックレイモンドとは全然レベルが違うな、的な意味を含めて)、と思ったのだった(余談だ)。というわけで、時間がなければ、山形浩生の解説を読めば、いいんじゃないかな。まとまっているし、グローバリゼーションに対する姿勢についての良い提言もある。

さて、15年後の現在視点でハロウィン文書を見ると、実はこの文書でのマイクロソフトの分析が、「俗流/おれおれ/伽藍とバザール」の元ネタになっているんじゃないかなぁにやにやということに気付かされる。

つまり、ハロウィン文書の分析では、伽藍モデルのFSFは最初から念頭にない(というのは、そのモデルは彼らがこの時点では叩き潰したIBMスタイルと変わらないからだし、いずれにしろHURDは存在しないから相手にしてもしょうがない)。そのため、伽藍とバザールのレジュメと、ハロウィン文書のレジュメだけを見ると、ハロウィン文書では敵としてバザール開発モデルについての分析しかしていないために、伽藍=マイクロソフト、バザール=OSSという2項対立と誤解するのだろうと推測できるのだった。

というわけで、紹介し続けているこれら一連の文書で最もきちんと読まれたっぽいのが、実はエリックレイモンドの論文ではなく、ハロウィン文書なのだ。

山形浩生はハロウィン文書が正しく読まれるか心配して解説を入れているわけだが、少なくとも読むべき人たちは正しくハロウィン文書のほうを読んでいる。

つまり、(面倒だから書かなかったことをあわせて)まとめると、ハロウィン文書とは

・1998年にLinuxについて書かれたものの中で、その価値を最も正しくかつ簡潔に評価し

・その長所と短所に関する分析があり

・しかもマイクロソフトの短期戦略がわかる

という、1998年にコンピュータ関連ビジネスをしている人間にとっては、とってもおいしいレポートだったのであった。

ハロウィン文書はLinuxの長所をわかりやすく説明しているから、これを読んでLinuxの採用を決めた人がいても全然おかしくない。というか、多分、この時期に企業導入をした連中はこのレポートを読んで決定した可能性があると思う。

歴史の皮肉: ハロウィン文書Ⅱには、「その他の Linux パッケージは、RedHat と Caldera におされて衰退気味のようである。 ここには SlackWare、SuSe、Debian などがある。」

15年たってみると: RedHatはRedHatだが、Debianは当然生きている(というか、他の商用ディストリビューションと同列に並べているのは粗雑だ)としても、衰退扱いのSuSeをWindowsの友に認定することになるとは考えていなかっただろうなぁ。

と、駆け足で、おなべに続く。

_ OSS

ハロウィン文書を読み始めると、いきなりエリックレイモンドの「OSS」という用語へのツッコミを目にすることになる点にも注目したいね。今やOSSという用語は普通だが、どうやらこの3文字アクロニムの発祥地はマイクロソフトみたいだからだ。


2012-04-13

_ 伽藍、バザール、ノウアスフィア、おなべ(5)

いよいよ最後になった。1999年5月の『魔法のおなべ』だ。

魔法のおなべは、ウェールズ神話の女神セリドウェンが持つおなべで、魔法の言葉を唱えると滋養あふれる食べ物が無尽蔵に湧き出てくる(日本だと『打出の小槌』といっても構わないわけだし、モヒカンのハンドアックス——これは投げても投げても無尽蔵に湧き出てくる。だって戦闘が終わった後に回収している姿はないからね——と言っても構わないだろう)。この論文の中でエリックレイモンドは、オープンなソフトウェアから金を生み出すのに必要な魔法の言葉は何なのか? を検討し、示す。

この論文は、前とがらりと変わってエリックレイモンドはきわめて慎重な前置きをしている。この論文では『ノウアスフィアの開墾』におけるハッカー文化(=贈与文化)モデルからは(論理展開のために)離れることを宣言し、クローズソースに対して最大限の敬意を払い『伽藍とバザール』以降のオープンソース運動によってクローズソース反対派=FSFの主張を沈めたことで自分のクローズソース側への貢献を示している。

オープンソース開発を支持するための必要十分な議論は、そのエンジニアリング上の成果と経済的な結果だけをもとに展開できる――高品質、高信頼性、低コスト、そして選択肢の増加だ

(別にイヤミではないが、彼らのMSに対する攻撃をおれはフェアではない(あるいはMSが仕掛けるFUDと同程度にフェア)と考えている。したがって、次の点については触れておく。VA LinuxのIPOは、1999年12月だ。でもそれと同時におれは嫌儲でもないので、VA LinuxがIPOでつけた金額でうまくリナスやレイモンドが株を売り逃げていたらいいなぁと願っている。実際、かれらは世の中に多大な貢献をしているのだからそれは正当な報酬だろう)

(ちょっと中断、続きは後で)

_ 伽藍、バザール、ノウアスフィア、おなべ(5.1)

魔法のおなべ』には微妙なところがある。というのは、オープンソースのビジネスモデルについて論じたこれは、他の2本よりも歴史の流れで古びた点が多いのだ。1999年というのは、コンピュータビジネスによっては本当に過去のことなのだ(それに比べると、開発方法やオープンソース参加者の意識のような人間系あるいは文化的な考察がほとんど古びないことと対称的だ)。

この論文は最初に経済価値の2つの価値--利用価値と販売価値という観点から、ソフトウェアは製造業的な材つまり販売価値を持つものではなく利用価値を持つ財だというところから始める。これは正しい。今やソフトウェアそのものの販売というのはほとんど存在しないことからも明らかだ(かってはソフトウェアはシュリンクラップされて販売されていたのだが、ダウンロード販売という形式で残っているにしてもシュリンクラップなソフトウェアというものは、ゲームの分野を除いてほとんど残っていないことから明らかだ)。(4/14追記:これ、最後に書いていることと矛盾している。この(おれが書いている)文章の最後ではiTSに代表される大規模ユーザーベースに対する小額ソフトウェアの販売モデルを一つの解としている。書いているときに全く矛盾を感じなかったのは、規模と額が異なるからだ。どうも、おれにはこの時期の販売モデルとして想定しているのは販売価格数100ドルで事業者は中規模企業以上なのが、現在のモデルが販売価格数ドルで個人を含む少人数事業者であることから、まったく異なるものとして見えていた(る)ようだ。)

まさに、同じころ、IBMがサービスを提供する企業に転身することで大復活を遂げたということにも注意しておきたい。

逆に、マイクロソフトのOSビジネスが(業績は好調なのでわかりにくいが、もし10年前であればWindows Vistaや7によってもっと利益を上げられていた可能性があるのに、多数の企業の利用OSがXPで止まっていることで)停滞していることも、これまでは実際にはOSが売れていたというよりも、ムーアの法則が直線的に続いていたために(今も集積度という観点からは続いているかも知れないが、並行モデルへ変わってしまっているので、メールとブラウザーしか利用しない消費者にとっては、8年前のパソコンと今のパソコンで見た目の速度は変わっていない。ということになぜか気づいている)ハードウェアの買い替え需要によってPCバンドルで同時に売れていただけと考えれば、実際には販売価値ではなく利用価値のほうが重要だった(にもかかわらず売りきりをしていたのが失敗)とみなせる。

そして指摘していることは、ほとんどのソフトウェアが実際には(日本語で書くが)SIによって利益を得ているという事実だ。企業システムには必ずカスタマイズが入る。この部分で収入を得ているということそれ自体が、販売価値ではなく利用価値が売り物だということだ。

次にエリックレイモンドは、ソフトウェアの価値が販売価値ではなく、利用価値であるならば、ソースがクローズかオープンかは無関係だ、と続ける。なぜなら、クローズにする理由は販売価値を高めるためだからだ。しかし、利用価値にあるのならば、販売で金を得るのではなく利用料の徴収で良いではないか。

さて、既にそうなっているとも言える。会員制サービスはまさに利用料金を徴収している。ガチャを回すことで課金するモデルもある(今は)。

でも、これってオープンソースモデルじゃないよね? エリックレイモンドは、利用価値を売り物にすることで、ソフトウェアをオープンソースにして開発費用を外だしするというモデルを示しているのだけれど、時代が変わった結果、価値は「ビジネスモデル」(あるいは課金スキーム)に移ってしまい、そのノウハウがソフトウェアにこびりついているために、オープンにすることはありえなくなってしまったのだ。

・ただし、プラットフォーム、インフラ、フレームワーク、ライブラリを除く。というわけで、DeNAだったか、先日、そういったパーツをオープンにしたが、それは上記から正しくて、課金スキームを抑えておけば、基盤ソフトウェアはオープンにしても問題なし(もし、改良パッチがもらえればラッキー)。

ただ、誰もすべてをオープンにしろとは言っていないわけで、このインフラはオープン、アプリケーション(ビジネスモデル)はクローズというのが、現時点の答えなのだろうなぁとは考えつく。この場合、企業はそれで収益を上げるがオープンソースの開発者は、この企業が直接雇い続けることで報酬を得なければならないだろうし、外部のパッチ提供者は(仮に存在したとして)同様なサービスを独自アプリケーションで行う別企業によって雇われているという形式となるだろう。

というのが現状だが、それはそれとして、エリックレイモンドは次の7つのビジネスモデルを提示している。

・ロスリーダー・市場ポジション確保

オープンソースのクライアントと有償のサーバーソフトの組み合わせといった例を出しているが、さて? グーグルとクロームの組み合わせがこのモデルの忠実な再現というところかな。上記のサーバーのオープンなインフラ+課金スキーマを組み込んだアプリケーション(クローズ)というのはこれの発展形とみなせると思う。

・刺身のツマ

ハードウェアのおまけとしてオープンソースのドライバなどをつける例で、OSXのDarwinがオープンソースになっていることをあげているが、このモデルってあまり意味がないような気がする。ハードウェア会社としては開発したドライバーはサンクコストとして無視できるのでオープンにしたほうが良いというような理屈は良いが、これってソフトウェア開発者にとってのビジネスモデルではないような。

・レシピをまいて、レストランを開け

Linuxのディストリビュータのモデル。このレシピ(=オープンソース)は他でも料理できるけど、うちが一番おいしいよ! 例として出ているのはZope(の前身のDigital Creations)。

このモデルはどうなんだろう? Six Apartみたいに途中で失速したのもあるし、他に例に出ているe-smithのように(多分成功裏に)買収された企業もある。もしかすると、一番標準的なモデルかもしれない。

Titaniumはこれかな。

・アクセサリー

オクトキャットのカップのようなものから、オライリー(本を売る)までが含まれる。で、オライリーはラリーを雇っていることで例になっているけど、うーん、まあ業績に依存してしまうという意味ではパトロンモデルだなぁ。

このあたりになると苦しくなってきている気がする。

・未来をフリーに、現在を売れ

今はクローズだけど、ある程度売れたら(何年たったら)オープンにするよ! というコミットメントのもとで販売利益をあげる方法。

例はGhostscriptなんだけど、全然ぴんと来ない。

誰かやって実効性を証明してみるとおもしろいかも。1ライセンス10000円で1000ライセンス売れたらオープンソースにするよ! という感じかな。

これも苦し紛れっぽい。オープンにする前にクローンを作られるか、オープンにしても喜ばない人が普通に買うだけのような。その意味ではクローズソースと変わらないし。

でも、思い出したが、TokaiDoは、このモデルと言えるんじゃないか?

・ソフトをフリーに、ブランドを売れ

実例がないけど、SunはJavaをこういうふうに売ればいいのに。と書いている。テストスーツを売ったり、互換性認定に金を取るとか。

ブランドの認知にかかる費用がすごそうだとか考えると、SunがJavaにこのモデルを取らなかった以上、今後、実際に出てくる可能性はなさそうだな。

・ソフトをフリーに、コンテンツを売れ

これも実例がないとしている。そのため、書いていることもふにゃふにゃしているが、今なら、AmazonがKindleのソフトウェアをオープンソースにして出す、とかすると、この例になるかな(でもKindleに対する刺身のツマモデルかもしれない)。

これは、コンテンツにDRMがある限り、実現できないアイディア(モデルではない)だと思う。

もしかすると、Xamarinのモデル(基盤のMonoはオープンソースだが、MonoTouchは販売品だ)は、これかもしれない。SDKはコンテンツかなぁ。

----

そして最後に、別のモデルを提出している。

・オープン R&D とパトロン制の再発明

この半年くらいだとHerokuが中田さんや笹田さんを雇うとかが、このモデルそのものだな。

ちょっと長いが引用する。

これを左右する理由は2つあるようだ。一つは、こうした企業が自分の市場ニッチでの有力プレーヤーである限り、かれらはオープン R&D からくるリターンについても最大シェアを獲得することが期待できる。R&D を使って将来の利益を買うというのは、目新しくもなんともない。興味深いのは、その期待将来収益が十分に大きいので、こうした企業はただ乗り連中をあっさり容認できる、というこの選択で暗示されている計算のほうだ。

で、もう1つの理由が

かれらは、製品開発と、非公式なマーケティング部隊として、顧客のなかのボランティアたちにかなり頼っている。かれらの顧客層との関係は親密で、企業内外の個人同士の、個人的な信頼関係に依存することもよくある。

つまり、顧客に対して「評判」を高めるためということで、結局は冒頭で捨てたはずの贈与文化に戻ってきているような結論となった。

さて、15年たってソフトウェアはどうなっただろうか?

日本の携帯の課金モデルでNTT-DOCOMOはUSのビジネスモデル特許を取っていれば、もしかして外貨をばんばん稼げたかも知れないなぁ。

というのは置いておいて、携帯のマーケットプレイス(小額課金が可能となった)が、15年前には存在しなかったものだ。サブスクリプションモデルというのもなかったか、あっても個人向けではなかった。

でも、これらとオープンソースは直接的には結びついてはいない。ただ思うに、アプリケーションユーザーにとってはオープンソースかどうかは全然どうでも良いことだ。

とすれば、単純にソフトウェア開発者が低コストで自作のソフトウェアを販売するチャネルを利用できるようになったということ、それはやはり重要なことなのだと思う。というのは、これは(iTSを先駆としてアップルの功績とすれば)、ゆるやかな『オープン R&D とパトロン制の再発明』ととらえられるからだ。R&Dといっても研究者は自分で研究対象(アプリケーション)を探して(開発して)スポンサーを見つけて(iTSで販売して)ということではあるけれど。

本来の『オープン R&D とパトロン制の再発明』は景気の変動で上がったり下がったりするけど(ラリーが失職するということもあった)、トップ30くらいまでの開発者については成立しているように見えるし、そういう意味では普遍性を確保したのかもしれない。

と、そんな感じだ。というわけで、Matzや笹田さんや中田さんのレベルを目指すか、iTSやPlay(だっけな)あと、WindwosPhoneのやつを利用しましょう、というのが就職しない開発者に対するお金の稼ぎかたの結論。一方、起業する開発者については、もしオープンソースで食うとしたら、どういう方法があるのだろうか? レイモンドの7つのモデルのほとんどは単にあげてみましたというものだが、実現性が高い(というか現実に存在する)『レシピをまいて、レストランを開け』ではなくても、突然TokaiDoが『未来をフリーに、現在を売れ』で出てきたとことに何かあるかもしれない(これって、Nariさんの『「寄付が溜まったら本気出す方式」も同じだ)。

とりあえず、インターネットを通じた小額決済が、あまりにも重要なインフラだということだけは言える。


2012-04-14

_ 最初の1冊になれるJavaScriptの初心者用入門書

以前、理想のJavaScript入門書として、テスト駆動JavaScriptを取り上げたことがあったが、おれにとってはJavaScriptの入門書かも知れないが、初心者の役には立たないだろうというツッコミを何人かからもらって、うむ、それはそうだなぁと気にしていた。

先日、アスキーの鈴木さんから同じシリーズ(アスキー黒い本)の『オブジェクト指向JavaScript』をもらったので、これはどうかなぁと読んだ。練習問題は解いてないけど(一部解いた)、完読したので、紹介する。

著者は、Stoyan Stefanovで、Yahooの人。Yahooの人なのでレビュアーにはダグラス・クロフォード(JSONの人。JavaScriptのご意見番的存在)が入っている。ということで、技術的におかしなことが書いていることはあり得ないなということはわかる。

初心者用としては、多分、もっと猫でもわかるような本はあるかも知れないとは思うし、一部わけわからない書き方している箇所もあったが、これなら良いのではないかなぁと思う。ページ数は350ページ弱。厚すぎず薄すぎずというところ。

内容は、次の通り。

第1章

・オブジェクト指向プログラミング言語の特性についての簡潔な説明から始まる。人-おっさん-技術者みたいな例だが、それを引きずるわけではなく、6章「継承」ではShape >- Rectangle >- Squareなどを使ったサンプルでcanvas描画をしたりするので、ありでしょう。

・カプセル化とデータ隠蔽はきっちりと分けているので好感度高。

・集約-継承-ポリモーフィズムの順なのも良い。

・実行環境はFirebugをアドオンしたFirefox(どこかで話題になっていたような)

・ただし、IE9とChrome、Safariについても一応説明あり。

第2章

・制御構文、データ型など

・プリミティブとオブジェクトについてきちんと説明してある。

・セミコロンをちゃんと書けといったベストプラクティスがところどころにあるのが良い。

+追記:この本の良い点として、比較的スルーされてしまうのだが、実際に使い始めるとひっかかってくるものについて丹念に説明していることもあげられる。この章だとtypeofやdelete、それになんといってもnullとundefined。多分、最初に読んでいるときは実際に打ち込んでも、ふーんで終わると思う。でも本当のプログラミング/デバッグを始めると間違いなくぶつかることになり、そういう時に読み直せば、すぐに期待している答を見つけられる本だと思う。

第3章

関数について。無名関数(おれは匿名のほうが良いと思うけど、この本は無名派)や内部関数、関数を返す関数(そういえば高階関数という用語は使っていない)、などなど。最後はスコープを図示してクロージャの説明。これでもわからない人はわからないだろうが、実際に動かしながらしばらくいじれば大丈夫かも。

気になった点:P.98 3.5.1 ちょっと読みにくい。できる-できないのつながりのせいかなぁ。ひっかかったのは全体を通してここくらいで、翻訳はこなれていて固すぎず柔らかすぎず良い感じ。

第4章

オブジェクトについて。

・おれは、以前、var i = new Number(0); みたいなたわけたことをしてswitchで死んだことがあったので、このあたりにはちょっとうるさい。本書ではきちんとプリミティブとオブジェクトの違いを説明していあるので、安心しながら読めた。

・Booleanをnewなしで呼ぶのは役に立つという指摘はなるほどと思った。if (Booelan('')) { '真な文字列'; }

第5章

プロトタイプ

確かに、独立した章にすべきだなぁ。

相当しつこく例を示しながら説明(コンストラクタとの関係を含む)しているので、覚えると思う。

コンストラクタにプロトタイプを設定した後、プロトタイプのコンストラクタに設定されたコンストラクタを設定するのはそういうものらしいがなぜだろう? (追記:prototype.constructorがあてにならないので(これは何度も忠告される)、自分で常に正しくするように習慣づけるというベストプラクティスなのだろう)

P.166「指していていた」→「指しています」

P.173「同じものではない」→「同じものではありません」

なぜかこの章は常体が残っている箇所がある。

第6章

継承

プロトタイプチェーンに始まり、クロフォード仕込のuberや、シャローコピー、ディープコピーまで。チェーンを切るための一時的なコンストラクタとか、多重継承(ミクッスインとして)やそれが嫌な人用の寄生的継承(つまりはcontainment)など。標準的な方法と、いざとなったら使える方法について。

P.205 リストの最後の行。return that; は独立した行にしないとわかりにくい(バグかと思った)。

・ケーススタディがついているのは、初心者になぜ継承が必要かを示すものとして良いかも。ここでcanvasを使えるのが生きている。

第7章

ブラウザ環境

DOMとBOM。FirefoxとIE9などで共通の機能を使って一通り説明。addEventListener含む(IE互換の記述方法についても説明あり)。

最後はAJAXに触れる。

・evalは悪。setTimeoutなどに文字列を与えるな、と強調(当然、それ以前にもeval系は使うなとしている)。

P.228 「falsy」意味はわかるけど「winの値がfalseであるか」としたほうが良いと思う。

P.229 なぜかFirefoxではなくIE9のキャプチャを利用している(ここだけ)。不思議だ。

第8章

コーディングパターンとデザインパターン

コーディングパターンとはイディオムのこと。相当実用的なことが書いてある。グローバル名前空間を汚さないように自己実行可能関数(function() { 初期化コード })();を使えとか、名前空間とか、遅延実行とか。JSONについては、json.orgのJSON.parseだけど、これは既に組み込みじゃなかったっけ?

デザインパターンは、シングルトン、ファクトリー、デコレータ、オブザーバについて。

付録

予約語と組み込みオブジェクトのメソッド一覧など。

オブジェクト指向JavaScript(Stoyan Stefanov)

どんな初心者でもすぐに中級者になって、コンストラクタとプロトタイプと関数の引数やクロージャなんかで悩むことになる。という意味では構文から始まる初心者用入門書だけど、中級者になってもそのまま利用できる(ただし、ある時点で、テスト駆動JavaScriptを読むべきとは思うが)し、例が豊富なのでお勧めできます(何もわからない初心者にはどうかはわからないけど、そんなわけのわからない時期なんてせいぜい1週間なんだから、これを買ってブラウザーでF12叩いてカタカタ、キー入力すればいいと思う)。

_ 中括弧のこと

中括弧を波括弧と表記するのはとても気になる。(同じことで大括弧を角括弧と表記されるのもいやだな。)

と思って、ちょっとグーグルさんに聞いたら、なるほど、ja.wikipediaを物知らずな知ったか(JIS Z8201が世の中のすべてだと思い込んでいる馬車馬)が記述して変な見解が広まったのか。『約物』という日本語を知っていればこんな記述はありえないので修正してやろうと一応JIS X 0213を見たら中括弧の後ろに波括弧と併記してあって驚いた。

とするとプログラミングの技術書などでは数学記号としての「{}」ということで波括弧という表記は正しいことになるのか。国語で先に習ったか(おれおれ)、数学で先に習ったか(馬車馬)の刷り込みの差みたいだなぁ。というわけで数学記号としては波括弧と呼ぶらしい。

おそらく明治時代にドイツ語から引っ張ってきて中括弧で定着させたのに、戦後になってアメリカ語から翻訳しなおしたものが数学界あたりで定着したんだろうな。

本日のツッコミ(全2件) [ツッコミを入れる]

_ ただただし [曖昧さのない「にょろ括弧」派ですw]

_ arton [にょろ括弧ってのは初耳だけど、今度使ってみよう(確かに一発で字体が通じそう)。]


2012-04-16

_ ターザン

子供がディズニーのターザンをツタヤで借りたので観た。

正直、これっぽっちも期待していなかったのだが、これはどえらく良かった。

始まると音楽が最上のロックで、これも良いのだ。最後にクレジットを見て、あーフィルコリンズだったのか、とえらく納得した。が、どういう理由から起用したんだろう? 結果オーライとしても不思議は不思議だ。

この歌はいいなぁと思いながら観ていると、特に細かな能書き抜きで淡々となぜターザンがターザンになったかが(言葉による説明ではなく)映画で語られる。ほー、と父親と母親の働きぶりを感心しながら観ていると、次にゴリラの集団に視線が移る。ははぁこれが育ての母になるのだなぁとか観ていると、予想してなかった展開になる。おれは、ゴリラが子供を誘拐して、あきらめて帰国した両親が10数年後にアフリカを再訪してターザンと邂逅するとばかり思っていたのだった。

いずれにしても、最初に赤ちゃんがゴリラと出会うシーンで目がうるうるしてしまうのは、お父さんモードと年寄モードの混交による条件反射が原因だとはわかるので、それだけならツボにハマることはないはずだ。

豹に引っかかれて一瞬傷跡に血が滲む以外は、ナイフにすら血がつかない(しかも傷はいつのまにか治っている)とか、丸出しのディズニー映画だし、銃を持つ悪役と利発な娘と浮世離れした親父という組み合わせは美女と野獣みたいだし、ジャングルと口だけ達者なやつと押っ取り刀の力持ちの組み合わせはライオンキングだし、なんかどこかで観たようなパターンだなぁとか否定的に観たりもするのだが、それも別段悪い印象でもない。

髪型とちょっと凶暴な目つきをするせいで、ターザンがニールヤングみたいに見えるのもそれほど気にならない。

掌と掌を合わせてナームが伏線だったり、きっちりとシナリオが練り込まれているのもいつものことで、だからどうだというわけでもない。

この映画の最大の魅力は、ジェーンの造型だと思う。知性も身体能力もえらく高いスーパーウーマンなのだが、それが嫌味にならないのは、声が妙で顔と動きがアニメっぽいのでその設定が程よく中和されているからだろう。(この映画のターゲットはミドル~ハイティーンの女の子なのかも知れない)

部分部分におそろしくツボにはまる箇所がある。たとえばジェーンがターザンに言葉を教えるためにスライドを見せるところで、宇宙の絵が出てくるのだが、ここが素晴らしく良い。人間ってすげぇと心底納得する。で、そこにフィルコリンズの音楽が流れて、おれの知らないことを教えてくれくれみたいな歌が入る。

とは言っても、文明=靴という暗喩が入って結局脱ぎ捨てることになるのだが、そこまで物語が進むとどうでも良くなってくるし、実際話の流れ(と90分という時間制約)からはそうならざるを得ないのだろう。

ターザン スペシャル・エディション [DVD](トニー・ゴールドウィン)

というわけで、これは驚いた。まさかターザンに感動させられるとはね。


2012-04-19

_ 限界集落温泉これでおしまい

ついに4巻が出て、完読。

鈴木みその作品って、相当以前に、ゲームスクールのルポマンガをネットにアップされているのを読んだのが最初だが、それで興味を惹かれて銭(これもおもしろかった)とか、これとか、単行本で買う作家の1人となった。

限界集落温泉4巻 (ビームコミックス)(鈴木みそ)

伊豆は下田の寂れきって廃業というか倒産している温泉宿に、ゲーム企画屋のなれの果てやら、ネットアイドルのなれの果てやらが流れ着いて、そこで何かが始まりそうだとおたくの群れが集まってきて、新天地を作ると書いてみれば、ちょっとした水滸伝なのだな。

そうか、水滸伝なのか。社会構造の道を外れた漢たちが世相に乗って変革を志す物語なんだから、社会構造と世相、個々の好漢たちが道から外れた背景と性格がしっかりしていれば、物語としておもしろくないはずがない。そして当然、どえらくおもしろかった。それにしても、鈴木みその観察力(あるいは取材力と構成力)は大したものだ。

本編では完全に敵役だが、別の見方をすれば21世紀のスタヴローギンのような老舗旅館の次男坊が、打倒すべき目標を得て社会復帰するエピソードがおれには印象的だ。


2012-04-21

_ kuromojiを試してみた

20日にHeroku Meetupに参加したのだが、そこで全文検索エンジンのプラグインの紹介があった。

で、プラグインそのものよりも、日本語形態素解析(と書いてはいるもののよくわかっていない。トークンの切り出しをしてくれるマシン程度の認識なわけだが)のkuromojiに興味を持った。

ソースを見てみたら、Javaで書かれている。

ということは、Rubyで簡単に利用できるってことだ。

で、お試しにちょろいcgi(rjbはそれなりの速度で起動するから、cgiでもそこそこ動く)を作ってみた。

(21日にほぼ動いていたのだが、eachを実装するのに手間取った。なので、日記の日付は21日。でも後進しているのは23日)

黒文字くん

面倒なのでcssも何もなし。htmlのフォームに日本語のテキストを入れてやって、submitすると、kuromojiを呼び出して切り出した結果を表示する。

用語や固有名詞を入れると、さすがにユーザー辞書を指定しないとおかしな切り方になるけど、それはそういうものだろう。

ArrayListをeachでアクセスしたかったので、rjbは1.4.0を作ることになった。


2012-04-22

_ 新国立劇場のドンジョヴァンニ

今月前半のオテロに続いて、舞台をヴェネツィアに移動しての演出。

この曲は通して聴くのは初めてだったのだが(というよりも意識的に聴いたことは無い)、2幕でドンジョヴァンニが食事しているところで、おおこの曲はドンジョヴァンニの曲だったのか(嘘だけど)というもう飛ぶまいぞこの蝶々はともかくとして、1幕で酒を飲む歌だとか、結構、いろいろな曲を知っているのには驚いた。

で、今回も歌手が良くて、まずドンジョヴァンニのクヴィエチェンという人が、背丈のせいもあるだろうが、見てくれがまるでプリンスみたいで、確かに悪魔だなぁとか思っていると、張りのあるバリトンで歌も実に良い(2幕でエルヴィーラの侍女を口説く歌とかこのままずっと流れていてもいいなぁという感じだ)。その代わりにテノールのアンナドンナ(本当はドンナアンナなのだが、語呂はアンナドンナのほうが良い)の婚約者がなんかぱっとしなかったような気がするけど。そのドンナアンナのミコライやエルヴィーラの人(映画のラボエームでムゼッタやっているのを観たけど、どうも昭和の時代のカルピスの人に見えるが、舞台だとそういう印象はまったく受けない)たちもそれぞれ良く、さらにツェルリーナの人も良い。なんか、とても良いものを観れて良かった。

舞台美術は、オテロとは違って実際に水を張ってあるわけではなく、照り返しがあるシートか何かを置いているのだと思うが、両脇の石造りの家から階段が伸びたり、橋が付きだしたりする仕掛けで、舞台の変化が早くて、これも舞台に良い効果となっている。

指揮者が異様にさっそうとしていて(登場して指揮台に上ってからの身振りのでかさが妙に印象的なのだ)その印象もあるんだろうけど、演奏もテンポ良くちゃかちゃか進んで実に快調。

それにしても、奇妙なのは、相手が斬りかかってきたから受けて立って刺殺したドンジョヴァンニを法の手に委ねようとするドンナとドンの世界に対して、とにかく鋤ですくだか鉄砲で撃つだかしてさっさと殺してしまおうとする農民の対比だ(ドンオッタヴィーオとか、ジョヴァンニ殺しの相談を農民がしていても別に止める様子もないし)。どうも相手が貴族だろうと農民は撃ち殺し御免なのかなぁと、同時代、つまり江戸時代と比べて不思議に思う。武士でも農村に行っておかしなことをすると、農民に叩き殺されたりするのはOKなんだろうか(一揆だとそうなるかも)。

で、そういう変な時代に否をつきつけてドンジョヴァンニは一人で近代へ去って行ったのだな、となんとなく納得がいくお話であった。たった一人の神だけを信仰するってことは、裏返せば世界に多様に広がる価値観を無視することになるじゃん、と2幕の初めにレオポルドじゃなくてレポレッロに説教しているくらいだからな。

歌手と舞台と演奏が良かったってのも大きいが、これまで観た/聴いたモーツァルトのオペラのなかで、最もおもしろかった(つまり、まったく退屈しなかった)。これまで一番好きだった魔笛はパパゲーノか夜の女王が出てこないと退屈だが、ドンジョヴァンニにはそういう退屈な瞬間がまったく無い。登場人物たちのキャラが立ちまくっているからだろう(魔笛だとタミーノとパミーナとザラストロと三人の弁者が悪い意味でキャラが立ちすぎていて出てくるだけで退屈きわまりないからな)。

というわけで、実に楽しいひと時を過ごせた。


2012-04-25

_ 手間暇には金がかかる

こないだ、eno(イーノみたいだな)さんが、台湾だかどこだかで食ったさそりの写真を上げていたので、おれも食ってみたいなぁとか反応したら、日本でも食えるという話になって、今日、WDDが終わったあと、有志4人でディープ新宿へ食の追求の旅に出た。

で、新宿区役所脇に入ると、キャバクラとホストクラブと無料案内所が立ち並んでいて、あれ? 新宿区役所脇ってこういう地帯だったっけ(1本裏じゃなかったっけ?)とか思いながらも、最奥へと向かうと、えらく狭い小路の中に目当ての店があった。

上海小吃

メニューをみると、みたこともない食べ物がたくさん並んでいて、これも食いたい、あれも食いたいと、食欲と知的好奇心と獣的好奇心がやたらと刺激されて目の毒だったらありはしない。

とりあえず、さそりのから揚げは、それが目当てなのですぐ決まったが、さて、何にするか。

サソリの唐揚げ

その昔、春の鳩は膾に限るという言葉を流れ板の暮さんのマンガで読んでからずーっと気になってた鳩が(膾じゃないのが残念だが)揚げ物であったので、それを選んで、それから妙に田螺料理がいっぱいあるので、えらく魅かれる。

店の人が良いタイミングで、螺が入ったよ、と声をかけてきたので、では螺も食ったことが無いから、煮込みを頼んだ。どうも田螺は春からの食い物らしい(他には7月からザリガニがあるとか、季節ものってのもあるらしい)。で、価格をみると、1000円、他よりも高い。なぜ、田螺が高いんだ? と不思議に思ったが、食べてみたいものはしょうがないので、そのまま頼んだ。

で、これがうまいのだが、極端に小粒の巻貝なので、食い方にえらくコツがいる。入り口のところに口をつけて強く吸い込んで食う(で、失敗したら楊枝で突いて食う)。これが結構難しい。しかも、サザエほど極端ではないけど、やはり蓋があって、これは食ってもうまくないので捨てるのだが、直径5mmくらいなので面倒ったらありゃしない。が、貝そのものと、味付けはおいしいので、それは勘弁してやる。

で、最初は熱いので、小粒の貝(しかも煮汁でべとべと)を持つと熱いし滑るしで、なかなか食いにくいのだが、逆に吸ってて失敗している人がいたり。で、良く良くみると、巻きの先端が切り落としてある。強く吸うために、巻きの先端を切り落として、管状にしてあるのだ。

で、きっと中国本土で切り落として売っているのを仕入れているんだろうとか話していたら、店の人が、上(つまり調理場)で切ってると教えてくれた。へー、それはやっかいな料理だなぁと感心した。

鳩は皮がテリがついたぺりぺり(調理方法としては北京ダックみたいな感じだが、一羽の半分が丸丸出てきていて、肉は少ないがそれなりの味があり(というところから、膾で本当に食えるところがあるか疑問に思ったが)、しかし本当に旨いのは皮で、不思議な食い物だった。

鳩の揚げ物

そのほか、湯葉と書いてあるが、豆腐で作ったガーゼのように妙に網目がはっきりした湯葉を結んだもの(木綿豆腐の表面を薄く切り取ったものの水気を切ったものに見えるのだが、湯葉なのかなぁ?)と肉の煮込みとか、enoさんお勧めの油で揚げたパンを、浅利の煮つけの煮汁にひたして食うやつとか、いろいろな食い物を食えて実に幸福な一時を過ごし、さて満腹したからこれで終わりかなぁとか言っているタイミングで店の人がデザートを食えと言ってきた。

まあそれもありと、メニューをみると、カエル(口へんに合う)のシロップなんちゃらみたいなのがあって、当然、気になる。これが、杏仁豆腐なんかの3倍近い価格で、どうしてこれっていうのは高価なのかなぁと思いながら、それを頼む。

するとなんか透明のシロップの中に半透明でびよんびよん(に見えるけど、食感はふにゃんふにゃんみたいな感じ。これはこれで美味しいものだが、味がどうこうではなく、食感の不思議さを味わう食い物だなぁ。店の人の勧めにしたがって杏仁豆腐を中に入れて食ったら、これまた良い感じだった)が入っていて、店の人によると卵巣だという。というか、まだ産卵していない卵ということのようだ。で、これも話を聞くと、筋があって食いにくいから細かく切れ込みを入れるとか言う。

そこで、螺の値段を思い出し、食材うんぬんではなく(というか、田螺にしてもカエルにしても、輸入食材としてはそんなに高価じゃないだろう)、手間がかかる食い物は値段が高いということに気付いた。

そりゃそうだ。

どうも、原材料費が高価=高価な食い物という、頭がストレートな中学生みたいな考え方にとらわれていたようだ。

食材の価格は当然あるにしても、手間がかかる食い物は価格が高い食い物なのだ。そりゃ、あれだけ小さな田螺の貝殻の先端を切る手間考えれば他の皿より高くて当然だろうし、豆腐を削ぎ切りにすれば済む杏仁豆腐より、ぷにょんぷにょんの食材の筋目を切っていく卵巣のほうが高くて当然だな。

というわけで、未知の味わいを楽しめたのみならず、手業に金を払うという当たり前の感覚を再認識できて有意義だった。

本日のツッコミ(全2件) [ツッコミを入れる]

_ atsushieno [あの田螺を4人でほじっている姿はなかなかシュールなものがありました。これで田鰻とかいろいろ未食のものが残っているのだ..]

_ arton [良い店に連れてってくれてありがとうございました。本当に奥深いですよね。まだまだ、田鰻、血(豚、家鴨、もう1種類は忘れ..]


2012-04-26

_ ビッグデータとバズる前に読む本

というわけで、ビッグデータってなんだ? と思っているところに、byflowを眺めていたら、知り合いが全員が全員持っているそれっぽい本を見つけたので、買って読んだ。つい、みんなが持っているやつを買ったので、実は文庫で安くなっているのにも気づかずにハードカバーを買って読んでしまったのであった。

その数学が戦略を決める (文春文庫)(イアン エアーズ)

出版社が文藝春秋なので、とりあえず知っとけレベルの教養書だろうと思ったら、帯に『文系にもわかる知的大興奮の書!』とかくだらない惹句が小さく書いてあって、なんだこれ? と思ったけど、確かにやたらとおもしろかった。

出版年は2007年だから5年も前の話だ。ああ、データウェアハウスでBIといってたころかな。

内容は、たくさんのデータが利用できるようになったのと、高速な計算が可能になったことで、回帰分析の結果意外な説明変数が見つかった例の紹介とかがほとんどだけど、いろいろな面からおもしろかった。

要約すると、

・回帰分析によって各種予測が人間の専門家よりも正しくできるようになった分野があるよ。でも人間はプライドがあるから、なかなか機械に路を譲らなくて困るね。彼らはアルゴリズムを発見する仕事に回れば良いのに。

・無作為抽出を使ってあまりビッグじゃないデータからでもいろいろおもしろい結果が出ているよ。でも専門家が道を譲らなくて困ったなぁ。彼らはアルゴリズムを発見する仕事に回れば良いのに。

・とは言え、悪用するブッシュとかブッシュとかがいて、機械が出した推定によってほとんどの黒人は犯罪者だから選挙権を無効にしたんだよ。ゴアは選挙に負けたよ。そういうことするから、専門家は機械に路を譲らなくなるんだよね。困ったもんだ。

・正規分布している集団については標準偏差のプラスマイナス2倍の範囲に95%が入るってことを知っていると、フェルミ推計がうまくいくよ。

というところだ。

アメリカでは対照群を作って特定の政策をそれぞれに実施して結果を追うというようなことがいくつか行われているらしく(州によって行政が異なるから比較できるというようなものもあるけど、あえて異なることをするということも行われているのだ)、そこで得られた知見というのが特に印象的だ。

公文式のオリジンのように思うのだが、教師はシナリオを読み、とにかくリズムに乗って、生徒全員が言われたことを正しく答えるという授業(エンゲルマンという人が提唱)を行うと、ピアジェやチョムスキーの教育指導方法よりも圧倒的に良い生徒を作ることができるというやつ。

ふーむ、名古屋の生徒と、東京の生徒の、犯罪発生率の差とか知りたいところだ(3校禁とかに意味がないことが明らかになるだろう)。

あるいは、新しい歴史教科書がどうした教育を受けた生徒と、家永教科書(ってのは無いんだっけな)で教育を受けた生徒の、愛国意識の差とか(これまた、どっちでも変わらないという結果になるんじゃないかなぁ)、そういう研究って日本には無いんだろうか?

あるいは、アメリカみたいにドラスティックな政策を実行できそうな大阪市長がいるうちに、特定地域ではエンゲルマン流の授業をやって、他の地域と比較して日本での導入効果を調べるとかやってみるとおもしろそうだなぁ。同じように、そういうことができるのであれば、同一県内の人口比率や経済状態が同じレベル2つの市それぞれについて大きな市政策と小さな市政策をやらせて、犯罪率の上昇とか、出生率の変化をみるとか、やるとおもしろいだろうなぁとか。

というような、政策的な話も興味深いのだが、それ以上に興味深いのは、死んだはずのAIが、ある意味大きく復活してしかも意味を持っているらしい点だ(しかも5年前に)。

そこで、不思議に思ったのは、ビッグデータという言葉はやたらと耳にするが、それをどう分析するかの話については全然聞かないことだ。結局は回帰分析一択なんだろうか? あるいは、そこがノウハウだから、語られないのだろうか? あるいはおれが知らないだけで、世の中はビッグデータの個々のアイテムを構成する要素について勝手に組み合わせて、指定した従属変数に対する、適切な目的変数と係数を求めるようなシステムが普通に存在しているんだろうか?

いずれにしても、5年前とは言え、ようような分野で巨大データを利用して予測を行い、それが相当の確度で正しい結果となるというここで語られている内容は実におもしろかった。

本日のツッコミ(全3件) [ツッコミを入れる]

_ aamine [びっぐでーた屋さんをしています。日本だと、まず分析が好きな企業が少ないと思います。でっかい情報系データベースが単なる..]

_ arton [今度、NDAありの内輪の勉強会でもしませんか? そのへんの本気の事例とか教えてほしいなぁ。]

_ naruse [あ、わたしも聞きたいな]


2012-04-29

_ 不思議な台

どうも、スピーカーから出る音がもごもごする。

スピーカー自体のできの問題もあるだろうが、床に直接置くと、床下の空間に反響したり、直接床から反射した音が干渉したりするのかなぁとか、考える。

そういえば、遥か以前、まともなスピーカーを使っていたときは、台の上にスピーカーを置いていたなぁとか、友人のすさまじいオーディオセットでは、自然木でできた妙な台に上に割としょぼめなスピーカー(頭の中では30年以上前のタンノイのスピーカーとかの印象があるせいで、良いスピーカー=でっかいスピーカーという思い込みがあるので、小型=しょぼいと感じてしまうのだった)を置いていて、しかしそれが絶妙な音を出している(特にヤングがハンブルクで振ったヴァルキューレの弦の音が素晴らしかった)のとか思い出した。

ここでスピーカーをどうこうするよりも(高音は実に良い音が出ているし、明らかに気持ち悪いのは中低音のもごつきぶりだというのはわかっているので)、台を買えば良いのかな? と気付く。

で、適当にアマゾンで探して評判が悪くないので買ってみた。

ハヤミ工産【TIMEZ】NXシリーズ 小型スピーカースタンド [2台1組] NX-B300(-)

前出の友人のやつは、みるからにムクの自然木で作った異様に高額そうな3本脚のやつだが、そういう趣味ではないので、まともな音が聴ければ(もちろん良ければそれに越したことはないが)良いわけで、このあたりかなぁと目星をつける。

で、組み立ててスピーカーを置いて聴いてみると、どうしてこうまで変化するのか、と不思議に思うくらい、すっきりした。サイズ的にはもう2回り大きいスピーカーでも使えそうだ。

ONKYO DLNA対応ワイヤレススピーカーシステム 15W+15W GX-W70HV(B) /ブラック(-)

合わせたスピーカーは、音を鳴らすところだけをとれば実質10000円程度のいい加減なスピーカーだが、それでも台によって音が変わるのがわかるというのはおもしろい。


2012-04-30

_ MSWin64用RMagicの作り方

  1. ImageMagickのソースからのインストール方法を参考にして、DLLを作成する。
    1. 最初にconfigure.exeを作る。Visutal Studio 2010でVisutalMagick\configureのconfigure.slnを開いて2010用のslnに変換する。
    2. 構築オプションをx64に変える。ビルドプロパティのリンクにmachine:i386が記述してあるため、構築の最後でエラーになるため、削除する。
    3. デバッグバージョンだと実行の最後にスレッドのassertに引っ掛かって面倒なので(調べるの面倒なんで調べていないが、多分、ちゃんと殺していないのだと思う)リリースバージョンを作る。
    4. configure\configure.exeを実行する。releaseディレクトリに作られるのではないので注意。
    5. Dynamic Multi-threaded DLL runtimeをチェックする(デフォルト)。Use X11 stubs……をチェックする。
      このとき、staticライブラリを作ると、MFC関係のスタブを使うようになって(解消方法はあるかも知れないけど調べるの面倒なのでやらない)最終的にRMagick.soのリンクに失敗するので注意。
    6. Build optionsではBuild 64-bit distributionをチェックする。 Decorate exe files with build optionsをチェックすると、convert.exeなどが、UTIL_convert.exeのように、構築オプションがプレフィックスされるので、構築オプション別にテストしたいような場合を除いてチェックしない。Generate all utitlity……をチェックすると絶対パスが埋め込まれるのでこれもデバッグ時を除いてチェックしてはならない。
      Generate Visutal Stuio 7 formatはチェックする。チェックしないとVC6用になる。
  2. Visutal Studioで、VisutalMagick\VisutalDyanamicMT.sln(ステップ1で生成される)を読み込む。2010用変換が行われる。
    1. 構成マネージャを使ってx64をターゲットに変える。全部変える。
    2. ビルドする。
    3. VisualMagick\bin にDLLとexeが作られる。DLLとconvert.exeをPATHが通った場所へコピーする。
    4. VisualMagick\lib にインポートライブラリが生成されているので、LIB環境変数が通ったところへコピーする。
    5. ImageMagick-..\magickのすべてのヘッダファイルをINCLUDE環境変数が通った場所へmagick\*.h としてコピーする。
    6. ImageMagick-..\wandのすべてのヘッダファイルをINCLUDE環境変数が通った場所へwand\*.h としてコピーする。
  3. コピーしたmagick\magick-config.h の174行目を修正する。Visual Studio 2010ではssize_tが定義されているので、extconf.rb(conftest.c)でエラーになる。
    -#if !defined(__MINGW32__)
    +#if !defined(__MINGW32__) && !defined(ssize_t)
    
  4. RMagickをクローンするか、zipを取得する。
    1. RMagickのextconf.rbを直す。
    2. 以下のif式を削除する。
      if RUBY_PLATFORM =~ /mswin/
        abort <<END_MSWIN
       ...
      end
       
    3. vcvars32系のツールを知らない人が作ったらしいので、無駄な$CPPFLAGS(182行目)や$LDFLAGS(183行目)のセットをしている行があるので、削除する。
  5. ruby setup.rb で soが生成される。exampleディレクトリの中を実行するのがテストのようだ。で、ちゃんと動作しているようだ。

とりあえず、gemを作ってみたので、試したい人はどうぞ。

  • rmagick-0.0.0-x64-mswin64-100.gem
  • imagemagick-6.7.6-bin.zip
  • imagemagick-6.7.6-bin.zipの内容をPATHが通ったディレクトリへ全部コピーする(不要なやつもあるかも知れないけど面倒なんで調べていない)。
  • gemを適当なところに配置して、gem install rmagick (ローカルインストール)する(もちろん、mswin64-100 が前提)。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え