先日(といってもアップロードしたのは今日だが)、 『オープンソースの光と影』という スライドを公開したら、塩崎さんから反論というか批判というかをいただいた。この意見に対して同意はしないが興味深い。
まあ、客観性などという言葉にだまされてはいけないやね。 私は、 オープンソースの客観性 というものは全く認めない。確かに、定義により 「OSD 準拠のソフトウェア = オープンソースソフトウェア」なのかもしれないが、 しかし、オープンソース運動というのが思想的プロパガンダであることを考えると、 機械的に「OSD 準拠のソフトウェア = オープンソースソフトウェア」という定式を適用することは、「OSD 準拠のソフトウェア」 を勝手にオープンソースのプロパガンダに使ってることに等しい。 これが「OSD 準拠」と言うことと、 「オープンソース(ソフトウェア)」と言うことの本質的な違いだと思う。 思想的プロパガンダに利用するようなことを、単に「定義により客観的」だから「開発者の意図とは関係ない」 と言うことが許されるべきなのだろうか。
たとえば、「日本国民 = ほげほげ党員」という定義を考えてみよう。 かなり勝手な定義だが、確かにこの定義は客観的だ。しかし、ほげほげ主義を信じているかどうかに関係なく、 あるいは、実害があるかどうかに関係なく、この勝手な定義およびその客観性という大義名分によって 勝手にほげほげ党員にされたら誰だって嫌だろうし、「日本国民はみんなほげほげ党員です。ほげほげ主義は素晴らしい!」 なんていうプロパガンダをされたら嫌だろう。 要するにそういうことだな。「ほげほげ主義は素晴らしいから許されます!」 とかアホなことを言い出す奴が出ないことを祈る。
まあ、百歩譲って 「OSD 準拠」のものを単に「オープンソース(ソフトウェア)」と呼ぶのが 「悪い」ことなのかどうかはともかく、少なくとも「失礼」なのは確かよね。 オープンソースという言葉の定義を勝手に別の定義で置き換えることを 「失礼」と言う のならば、 勝手にオープンソースという物を定義して、 その勝手な定義にしたがって勝手にオープンソースソフトウェアと呼ぶことの 「失礼」を認識していてもよさそうなものなのだが。 それが認識できていないあたり、独善と言われても仕方がない。
前にも書いた通り、そもそも「オープンソース」という言葉ができる前から 「オープンソースみたいな何か」という文化があったのだけど、「オープンソース」というのは所詮、 その旧来の「オープンソースみたいな何か」 の文化に対する乗っ取りからスタートしてるからしょうがないのかもね。
いっぱい引用したが、肝心の論についてまず述べよう。
OSD準拠のものをオープンソースと呼ぶのは失礼なのか
私は失礼だとは思わない。議論のため、ある定義を満たすものに名前をつけることはよくあることだ。
もちろん「オープンソースみたいな何か」という文化が以前から存在していたのは事実だが、
オープンソース以前には明確な定義もなく、的確な名前もなかったことは
塩崎さん本人がそれを「オープンソースみたいな何か」と呼ばざるをえなかったことから明らかではないだろうか。
明確に名前がないものに名前をつけ、範囲を確定する行為は自然な行為である。
中にはいろいろな理由から「オープンソース」という用語を好まない人はいるだろうが、 あらゆる人の意向を尊重することは事実上不可能であるため、ある程度「しょうがない」だろう。
では、失礼でないとしたら、問題はなにか。 それを考えるために塩崎さんがあげられた「たとえ」について考えてみるのは有効かもしれない。
うむ、よく出来たたとえに見える。
しかし、「勝手にほげほげ党員にされたら誰だって嫌」なのは、 最初の定義は「日本国民 = ほげほげ党員」でしかないはずなのに、 「党員」という単語の語感によって、本来の「ほげほげ党員」定義に含まれない 「ほげほげ主義に賛同する人」という「別の定義」を導入しているからではないだろうか。 これでは、最初の定義は本当の定義ではないということになる。
最後の「ほげほげ主義は素晴らしい!」についてはもっと論理が破綻している。 「日本国民 = ほげほげ党員」という定義からは 「ほげほげ党員」と「ほげほげ主義」の関連性は引き出せないので、 どう頑張っても「素晴らしい」根拠にはならないはずだからだ。 ここでも暗黙の別の定義が使われている。
語感から本来の定義にないものを導入するのは、やっぱり定義を尊重しない行為だ。 それは少なくとも私のやり方とは真っ向から反対する。 塩崎さんの批判は(定義を尊重しないことを前提にしているので)私にはあてはまらないし、 そういう私の論からそれを引き出すのは、残念であるばかりか、詭弁という印象さえある。
とはいえ、私は塩崎さんが意図して詭弁を使ったとは思っていない。 予想できるのは以下のいずれかだ。
誤解
オープンソースソフトウェアという名前がオープンソース運動に賛同した作者によるソフトウェアであると誤解している。
危惧
オープンソースソフトウェアという名前がオープンソース運動に賛同した作者によるソフトウェアであると誤解されると心配している。
いずれにしても、そういうことがないように「定義」をきちんと説明して、 さらに「客観的」という単語を入れたスライドを用意したのだが、 まさにそこがヒットしてしまうとは、なんたる皮肉。
私は、フリーソフトウェアと違ってオープンソースはプロパガンダであるとは思っていない。 むしろフリーソフトウェアという言葉のプロパガンダ臭を嫌忌した人のためのオープンソースだと思っているのだが、 思想や背景がないとまでは言わない。
しかし、オープンソース運動は「(OSD準拠の)オープンソースソフトウェアを活用する運動」であって、 「(OSD準拠の)オープンソースソフトウェアの開発」のことではない。重要なのはここだ。 OSD準拠のソフトウェアを開発しているからといって、オープンソース運動に賛同する必要も必然も存在しない。 オープンソース運動がオープンソースソフトウェアを利用しているのは事実だが、 OSD準拠のライセンスを選んだ時点でそのような利用を許容している(or そのような利用を制限することはあきらめている)とみなされるだろう。
子供にプログラミングを教える時にどんな言語を選ぶかって話題。
DanDon Boxってのはすごく有名な人らしい(ごめん、知らないの)。
私だったらどうするかなあ。私の4人の子供たちは、 あいにく(さいわい?)プログラミングに関心がないので そういうことを考えたことがない。 プログラミングってのは自分で学びたいと思って身につけるものだと思ってるし。
でも、いざ彼らが「学びたいんだけど」と言ってきたら、なにを与えるかなあ。
なんかコレというものがないねえ。
....作るか(ぉぃ)。
sshiさんの日記から。
まあ、Rubyを含め動的型言語には、
Rubyでは動的型付けの悪影響で、ライブラリなんかの関数に何のオブジェクトを渡せばいいのかさっぱりわからないことがある。ソース読んでも関数定義だけでは仮引数の個数と名前くらいしかわかんない。
- 変数宣言に型を書かなくていいなんて、なんて書くのが楽なんだ、ビバRuby!
- 変数宣言に型を書かなくていいなんて、なんて読むのがつらいんだ、ガッデムRuby!
てなかんじ。
という傾向があるのだが、それに対する対応策として、 「じゃあ実行してみちゃえ」というアイディア。 動的言語万歳。
使い方のわからないメソッドにProbeというオブジェクトを引数にして渡すと、method_missingを活用して
などを記録してくれるという仕組み。詳しくは元のエントリを参照のこと。
結構いいかも。逆転の発想だ。
昨日に引き続き、風邪。
午前中はまるまる寝込んでしまう。朝食を食べ、子供たちを学校に送りだしてから午後二時まで寝ていた。
その後、起き出して、やっとスライドの準備を。話の流れは考えていたので、割と短い時間に書き上げたが、なんかあんまりすっきりしない。
今日は父親の誕生日である。皇太子の誕生日でもあるそうで、子供のころ「いつか天皇誕生日になる」と聞かされたような記憶がある。
で、当の本人は母と一緒に東京に出かけている。退職してのびのびとやっているように見える。
いつか、私が退職したら、生活の苦労なく思う存分ハックできたらいいなあ。 縁側で猫とひなたぼっこしながら。
あ、今とあんまり変わらないか。
ふーん、そうなんだ。
うちは
くらいかな。PCが空いている限りは特に時間制限はしていないな。 もっとも子供たちの使用時間が1日45分をこえることは滅多になさそうだけど。 別にフィルタリングソフトとか入れていない。
大学の試験でWikipediaを丸写しして間違いが伝搬しちゃったという話。
まあ、習ってもいないことを裏も取らずにWikipediaからコピペしちゃうのも 大学生としてはどうかと思うけど。 それはそれとして、Wikipediaに限らず書籍とかでも間違いが伝搬することはあるんだけど、 そっちはどうでもいいんかね。誰もが一次情報にアクセスするわけじゃないんだから。 むしろ、大新聞社(特に朝日?)がWikipediaを特別扱いしているような雰囲気がある方が気になる。
そういえば、うちの中学生たちは先日のレポートにWikipediaを丸写ししていたが(Wikipediaって明記していたし、面白いので黙って見ていた)、先生はどう思ったんだろうか。
1.9になって多重代入ではなく、ローカル変数のみになった block parameterとformal argumentのルールの統一化。 やはり顔を突き合わせていると話が進む。
うささんたちはsignalの話を延々と。 話を聞いているとWin32でのsignalの扱いは悪夢のようだな。
あと、夕食を食べながら、キーワード多重代入のようなものを用意して
foo: a, bar: c = {foo: 4, bar: 5} # a = 4, b = 5になる
それをメソッド引数に許すことにより
def foo(a, b, foo: c, bar: d) end
というのを許すのはどうだろうか、という話が出た。 一応、Railsとかで多用されているHashをキーワード引数の代わりに使う やり方と互換性はそれなりにありそうだ。
もっとも
foo(1,2 bar:42)
という呼び出しは許されても
foo(1,2)
という呼び出しに「引数の数が合わない」というエラーが出ないようにする 理屈付けが必要そうだ。
早起きして羽田に。
昨日から札幌便とか全然飛んでないので、空港は大変な人だかりである。 eチケットなので窓口に並ぶ必要があったのだが、 羽田のANAは人間がいる窓口が圧倒的に足りないので、 こういう異状事態が起きると大変な行列になる。
で、行列に並んでいると、私が乗るはずだった米子便が欠航になったとのアナウンスが。
がびーん。
仕方がないので、予約変更。次の便は空席待ちになった。
で、そうなると欲しいのがネットアクセス。 ところが、現在使っているX61はどうにもWEPキーがあるAPへの アクセスができない。
しょうがないのでndiswrapperをアンインストールし、 2.6.24に標準添付されているiwl4965モジュールを使ってみることにする。
いくつかおかしな点はあるが、とりあえずWEPキーを設定してアクセスできるようになった。
おかしいこと。
なんでだろう?
ちょうど私まで空席待ちが乗れたので、 11時の便で米子まで。 雪で欠航ということだったので、 どんなに積もっているのかと思っていたら ぜんぜん雪なんかなくて拍子抜け。
用事が残っていたので、一度教会によってから自宅へ。
思いっきりくたびれた。