«前の日(02-23) 最新 次の日(02-25)» 追記

Matzにっき


2004年02月24日 Ruby誕生日

_ [OSS]オープンソースという言葉の定義

もちろん、私だってこういう文章を書く前に少しくらいは考えるので、 「言葉なんて特定の誰かが「定義」するものではない」ことは認識しているわけだ。一般論としてそれは正しい。 言葉は誰かが中央集権的に管理しているものではないし。

しかし、

  1. ある言葉が(一般的な言葉の組み合わせではあるが)以前は使われていなかった
  2. その言葉が登場した時、明確な定義が与えられて登場した
  3. その言葉を定義通り使う時にメリット*1があり、定義をゆるめるとそのメリットがなくなる

という条件がすべて揃っている場合には、「定義に従って使った方が良い」と 薦めることはできる。 「言葉なんて特定の誰かが定義するものではない」が、 特定の誰かが言葉の定義に影響を与えることはできると思うから。

ところで、私はいまだに、上記の条件が成立する場合に元々の定義を尊重しないのは「失礼」と思うのだが、 それって「自分だけが正しいという独善的」な態度に見えるんだろうか。

*1  メリットについてはtachさんのアレゲ日記が参考になる

_ [OSS]真説・オープンソースの定義

私自身は自分自身がどのように分類されてもまったく気にしない、 その分類にウソや不都合がなければ。

ですから、私が「ほげほげ主義」に対してまったく共感もしていないのに 「ほげほげ主義者」と呼ばれればそれはウソなので、イヤだ。 また、将来日本人が迫害されるような時代になり、私が日本人であることを秘密にしているのであれば、 それがウソでなくても日本人と分類されたくないと感じるかもしれない。

では、塩崎さんの開発した(OSD準拠の)ソフトウェアがオープンソースに分類されることは、 ウソであるか、不利益であるか。

塩崎さんは私の定義に基づいた述語世界(Mワールド)では、ウソでも不利益でもないが、 現実世界では違うとおっしゃっているようだ。結局は現状認識の違いということなのだろう。

塩崎さんは「現状の実世界の人々の認識はそれ(私の世界)とは異なる」ので現実を認めよ、という意見であり、 私は「まだ間に合う、あきらめることはない」という意見だということだ。

実際の私のまわりには、

  • オープンソースについて全く知らない人
  • オープンソースについて詳しくは知らないし興味もない人

が大多数で、わずかにオープンソースについて知っている人はおおむね

  • (私の基準によるところの)正しい理解をしている人

である。 いわゆる「オープンソースの定義は変質してしまった」という主張の人は、 たまにツッコミやリンクでお目にかかる以外には会ったことがない。 人間は自分の住む環境から見えるもので世界観を構築するので、 私には「現状の実世界の人々の認識はそれ(私の世界)とは異なる」というのは実感できない。

さて、塩崎さんおっしゃるところの「Mワールド」においては、述語定義は

  • OSD(=オープンソースの定義)を満たすソフトウェアはすべてオープンソースソフトウェアである。
  • そのようなソフトウェアを有効に利用しようというのがオープンソース運動である。

である。主義主張は前者にはなく、後者にある。

私はこのことは「定義」という言葉から自明だと考えていた。 「オープンソースソフトウェアとは以下の条件を満たす(配布条件の)ソフトウェアである」という「定義」が 与えられて、それをすべて満たすソフトウェア(OSD準拠)がオープンソースソフトウェアでなかったら、 それはどこかに他の定義がある、つまりその定義は本当の定義ではないということになる。

私は、オープンソースという単語がOSDとともに導入されたという歴史的経緯を考えれば、 OSDという「呼称」を受け入れるならば、この述語定義も事実として当然のように受け入れられるものだと考えていた。 たとえ「オープンソース」という単語からこれ以上のものを感じたとしても、 OSDについて聞かされたらそれは誤解であると理解できるだけの知性を持つ人が十分に多いと。

事実、私のまわりの多くの人々はこの述語定義を現実のものとして受け入れるのに困難はなかったようだ。

例のスライドは、 私への「オープンソースについて語ってくれ」との依頼に応えて作成したものだ。 当然聴衆は、私の世界観に基づいた『オープンソース』について聞くことを期待していたと考える。 聴衆の中には「それは違う」と思う人もいるかもしれないが、そこまでは私の責任ではない。

ある世界観を提示し、判断の材料を提供し、最終的に自己責任で判断してもらう、 それが啓蒙活動というものだろう。 そして塩崎さんは「啓蒙活動は自由」だと断言された。

塩崎さんが

そして、私やその他大勢の人々は M ワールドで生きているのではなく、 実世界で生きているのです。少なくとも私は最初からその定義に同意してないし、 明らかに世間の認識は M ワールドに一致してはいない。 そして、私には両者がそんなに近いとすら思えない。

と感じるのも、主張するのも、もちろん自由だ。

しかし、私の世界観のただ中に踏み込んできて、「明らかに世間の認識は M ワールドに一致してはいない」とまで断言されるのであれば、その十分な根拠を期待したいものだなあ。

「だってオープンソース運動あってのオープンソースなんだから思想を含むのは当然」とか、 「言葉なんて特定の誰かが「定義」するものではないから当然」とか、 「オープンソースソフトウェアというのは、 オープンソース運動という考え方に賛同しそれに参加した人が書くものであるという認識は当然」というものでないことを期待する。

私たちは意見に隔たりがあるので「当然」や「自明」は根拠にならないので。

_ [OSS]ツッコミの誤解

結構あちこちから反応があるのは嬉しいといえば嬉しいのだが、いくつかのツッコミには誤解と思えるものがあった。 あるいは私の方が誤解しているのかもしれないが。目についたものに反応しておく。

ほえさん

ソースを公開したら「オープンソースになってないから対話拒否だ。オープンソースとしてちゃんとしたほうがいいよ」なんて言われるのはごめんです。そっとしておいてほしい。こう思うわけなんですが、誰にどうあってほしいのか書かれていなかったので、前出のように言われてるかと思い、ひどいことを言う人もいたもんだと思ってそれ以降スライドを見るのをやめました。

「オープンソースになってないから対話拒否だ。オープンソースとしてちゃんとしたほうがいいよ」というのは、 私の主張を組み替えたものですが、事実ではありません。

  • 独自の「オープンソース」の定義を使うのは対話拒否だ
  • どうせソース公開するならOSD準拠のほうがいい(オープンソースとしてちゃんとしたほうがいい)

とは主張していますが。ソースを公開する人は当然オープンソース(OSD準拠)にしない権利を持つと思います。 あえて言えば対話を拒否する権利も。

かよさん

メリット自体が当人に都合が良いだけであり、皆にとっての メリットではない上に、メリットなどいらないという人に メリットがあると言っても詮無いことだと思います。

私自身は最近再定義された(オープンソースという言葉が どの時点で再定義されどのように利用されてきたかについては 意図的に隠さずはっきりしたほうが良いです。)言葉に 勝手に含められることは断固拒否します。

私の述べたメリットなど要らない、あるいはそんなメリットなぞそもそも存在しないと考える人に とっては詮無いことだと思います。が、そうでない人もいるわけですし、 私自身は「結局は万人にとってメリットとなる」と信じていますから(根拠は示せないのですが)、 メリットを語り続ける必要はあります。

それと私は恥ずかしながらオープンソースという言葉が「最近再定義された」という出来事に思い至りません。 OSIが「Open Source」という言葉よりも「OSI Certified」という言葉を使おうとしているということかなあ。 でも、これは「再定義」ではないしなあ

というわけで「意図的に隠している」わけではなく、単に無知なだけだと思われますから、 ぜひとも、かよさんの方から「はっきり示して」くださいませんか。 それが分かると「勝手に含められることは断固拒否します」という気持ちも理解できるかもしれません。

<追記>
あ、そうか。最近OSDに10番目の項目が追加されたことかも。すっかり忘れてた。 でもそれって私には瑣末な違いに感じられるなあ。かよさんにとっては違うんですか?
</追記>

他にも、「私のほうこそ詭弁」とか「論理破綻・自己矛盾」とかいう ツッコミをもらったが、自覚できていない。私の論に矛盾や間違いがあれば是非直せるように指摘していただきたい。

追記

とか言ってる間にもさらなるツッコミが。

「別人だが」さん

あなたが「オープンソース」として勝手に名前を付けて勝手に範囲を確定しているものも、あなたが「失礼な俺定義の『オープンソース』」と呼称しているものと同類の「俺様定義」でしかない、と言われているのが解りませんか?

え? 全然分かりません。塩崎さんの主張にはそれは含まれていないと思います。 読み落としたかな。OSDはオープンソースの単語を作り出した人たちがその定義として用意したもので、 私が勝手に範囲を確定したわけじゃないし。 「OSDがなんぼのものじゃ」とか「OSDがあるからっていい気になるなよ」とかは 以前に聞いたことがありますが、それはそれ、ですよね。

「失礼」という表現がOSD以外の定義を使っている人に対して失礼で気に障ったということはあるかもしれません。 私はOSD以外の定義を尊重しない立場なので、私にとってはある意味当然なのですが、 無用の反発を招いたという意味で戦略的には失敗だったかもしれません。

no nameさん

「オープンソースみたいな何か」を塩崎君が「フリーソフト」と書かなかったことを「呼ばざるを得なかった」として議論しているのは違和感を感じる。この辺りの展開は不自然だと思う。

まつもとさんが気が付かなかった可能性もあるが私はそう思いたくない。

なるほど。私自身は塩崎さんがわざわざフリーソフトウェアと書かなかったことに大きな意味を見いだして、 「フリーソフトウェアという言葉では表現し切れないなにか」を意味していると読んだのですが、 それは深読みのしすぎだったということですかね。今思うとそれは否定できませんね。 となると、先の文章のこの部分は論理の飛躍があったと言えますね。

わざわざ時間をとって指摘していただきありがとうございます。

_ [OSS]八田さんによる補足

「補足」なんて言ったら八田さんに失礼だが、私の書き切れなかったことを書いてくださっている。 最初からあんな風に書けてたら面倒なことにならなかったかも。

去年の6月といい、フレームを生みやすい体質?

だとすると、改善すべき点はなにか。 ただ、「発言しない」という対策は避けたい。

_ [OSS]今野さんの強い希望

世間一般で言われている「オープンソース」の意味と「OSD 定義によるオープンソース」とは同じものではなくなってしまっているので、

  • 「OSD 定義によるオープンソース」だけが正しい「オープンソースの意味」だという意識は (少なくとも現段階では) 捨てる。
  • 「OSD 定義によるオープンソース」と「世間で言われているオープンソース」とを常に明確に区別して議論する。

ということは強く希望したい。

意識を捨てる? なぜわざわざそこまでの譲歩をしなければならないのでしょう? その簒奪を許すだけの理由は? (私にとっての)メリットは?

世間一般とおっしゃるが、実際の世間一般は「オープンソース」なんて知りませんって。 「普通」とか「世間」とか持ち込んでもあんまり意味ないんじゃないですかね。 ほとんどのケースでは「私のまわり数人」程度の意味でしょうし。

区別という意味では、私はいつも区別していますよ。 「OSD準拠以外のオープンソースなぞないっ」という形ですがね。

_ [OSS]主観的・客観的

今野さんの

ところで

フリーソフトウェアは主観的、オープンソースは客観的

などという表現がなぜ出てくるのか、私は不思議でならない。 「オープンソース」という考え方を広めたいのだろうけれど、 「フリーソフトウェア」という考え方を故意におとしめているように思えてならないのだ。

という感想は深読みのしすぎです。 「思えてならない」のかもしれませんが、事実には反します。 私は開発者としてはフリーソフトウェア擁護派ですし。

ソフトウェアの自由が大切という主張は本質的に主観的だと思います。 当然そんなの全然大切じゃない人もいるわけで。私自身は心から賛同しますけど。 主観的だからといって意味がないわけじゃない。むしろ主観的なことの方が大切なことは多いでしょう。 愛とか。

ビジネス上はソフトウェアをどのように利用することが許されるか(だけ)が重要です。 その判断のためには一定の判断基準が必要です。これは客観的な方が望ましい。 主観的な動機なんか関係ない。 OSDは(比較的)客観的に判断できるように決められています。

これらは単なる事実であって、別にどちらが良いとか悪いとかいう問題じゃありません。


2005年02月24日 Ruby誕生日

_ [Ruby] 古いRuby

前回の転職の時のごたごたでそれより古いRubyのソースを保有していなかった。 具体的には ruby-1.0-970819.tar.gz が最も古いものだった。

いや、3MのMT(磁気テープ)に入ったものが読めれば、 学生時代のものも含めていろいろと面白いソースがあるとは思うのだが、 ドライブが入手できそうにない。

私の古いマシン(旧式Dynabook)にはなにか残っていたかもしれないが、 今は段ボールの箱の奥底に眠っている。

が、今回友人たちに相談したところ結構古いものが入手できた。 持つべきものは良い友というものだ。ありがたい。

新たに入手できたものは以下の通り。

ruby-0.49
ruby-0.50
ruby-0.51
ruby-0.52
ruby-0.53
ruby-0.54
ruby-0.55
ruby-0.56
ruby-0.65
ruby-0.66
ruby-0.67
ruby-0.68
ruby-0.69
ruby-0.70
ruby-0.71
ruby-0.72
ruby-0.73
ruby-0.99.4-961224
ruby-1.0-961225
ruby-1.0-970324

歴史的資料として面白いと思う。 近いうちにどこかで公開したい。

これら以外のソースを保有している人はご一報いただきたい。

_ [Ruby] 言語の誕生日

デブサミでも話したことだが。

1993年2月24日は「Rubyの誕生日」ということになっている。 これは『4756132545』の共著者でもある 石塚さんと、新しいオブジェクト指向言語を作ることについて最初に話しあった日であり、 「Ruby」という名前が決まった日でもある。

この時点では1行もコードは書かれておらず、 Rubyはまだ頭の中のイメージだけで存在していたとは呼べないから、 人によっては「誕生日と呼ぶことはできない」と感じるかもしれない。

しかし、結局は形のない存在であるソフトウェアにとって「名前」と「イメージ」はとても重要なものであると私は考えるので、その重要なものがそろったこの日こそ言語の誕生日としてふさわしいと思うのだ。

というわけで、もう12年。長い付き合いになったものだ。


2006年02月24日

_ 平成17年度上期未踏ソフトウェア創造事業 千葉PM 成果報告会

昨日よりは体調がいい。飛行機に乗って、東京へ。

会場は思ったよりも品川駅から遠い。たまに東京に出ると思いっきり歩かされる。都会人の方が運動してるよな、どう考えても。

いろいろ発表が面白かったが、まとめると以下のような感じか。

  • Java陣営とRuby陣営でくっきりカラーが違う、面白い
  • Javaの経験がないので、Java系の発表のうれしさがよくわからなかった。 あ、でもTuigwaaは別。Javaコード出てこないし、プレゼンが明確でよかった。
  • 私のプレゼンは 面白くなかった。準備が足りないのと、集中力にかけたのとで、 特にRuby2.0の機能(スライド20〜22枚目辺り)について、 十分に語れなかった。 呼んでくれた人に申し訳ない。

あと、千葉先生のキャズムねたは興味深かったが、それについての考察は「後で書く」。

スライドはこちら

_ [Ruby] Ruby2.0への布石

スライドにも書いたし、

  • Mix-inの改善
  • privateメソッド

について実装を試してみる。

前者はrepeated inheritanceを許すため、現在行われているMix-inの重複チェックを外すこと。つまり、同じモジュールを複数回includeしたら、今後は複数回ancestorsに登場する。これにより、Mix-inの挙動がシンプルになり予想しやすくなる。 Mix-inのTraits的扱いがやりやすくなる。十分に実際にはTraits的にするためには、 renamingなどでもう少し改善が必要。

後者はprivate問題への対応。が、メソッドキャッシュがからむと思ったほどうまく動かず、時間切れ。

_ 『4274066304』

今回持っていった書籍がこれ。特に帰りの飛行機では意に反して最前列だったため、PCが開けられず、しょうがないのでずっとこれを読んでた。

書いてあることはどれも正しいし、この本は一読の価値がある。

しかし、読めば読むほど気分が悪くなるのはなぜだろう。「正しいことを言われると腹が立つ」ということなんだろうか。それともなにか別の原因が?

少なくとも気圧の関係で耳が痛くなったこととは無関係だと思う。


2007年02月24日

_ On Off and Beyond: 日本発のソフトが少ないのは日本人が英語が苦手だから

なんか渡辺千賀さんのコラムに私も登場している。

えーと、「日本発で世界で使われているソフトが少ない」理由でしたら、 私も英語が理由だと思います。でも、sourceforge.jpとか見てると 「日本発のソフトが少ない」とか「日本のソフト開発力が弱い」とかは感じない。 むしろ、日本の外にどうやって出ていったらよいのかわからない、 というような理由が多いのではないだろうか。

それは言語や文化によって形成されているバリアだと思う。

英語を身につけるのはそのバリアを乗り越える良い手段であることは疑いない。 もっともバリアを乗り越えるために必要な「英語力」は 日本人の多くが想像するよりもずっと小さいものなのだが。

最初、RAA (Ruby Application Archive) を 作った時、これは全部英語にした。で、これに登録することで 海外とコミュニケーションをとって、いわば「海外でビュー」した 日本人プログラマは何人もいると思う。 実はRAAの存在は、私が今までやったことの中でもっとも誇らしいことの一つである。

この時、バリアを乗り越えるのに有効だったのは、 「英語力」とか「英語を学ぶこと」ではなく、「海外とやりとりして当然の文化」であったと思う。

_ 404 Blog Not Found:日本発のソフトが少ないのは日本がアメリカではないから

弾さんによる、 英語力を得て、海外に通用するようなソフトを開発しても、 結局アメリカに取り込まれてしまう、Linus (Linux)しかり、 Guido van Rossum (Python)しかり、という話。

英語を操れないと世界デビューはままならず、そして世界デビューした途端に合州国から声がかかる。このジレンマをどう解決していくか。

千賀さんたちなら、「それがなにか」と言いそうな気がするけど。

そうか、あまりそういうことは考えたことなかったな。 少なくとも今まで私に本気で声をかけてきたアメリカ(人|企業)はいなかったし。

でも、もうそろそろ開発場所とか国籍とか 関係なくなってきてるような印象があるんだけど、 それは私がオープンソースな開発ばかりをしてるからかなあ。

_ [Ruby] 「Ruby」まつもとゆきひろの「自由はこう手に入れろ」 / 叱られ隊長・黒幕Q嬢の懺悔の部屋

先日のリクナビの取材のこぼれ話。

なんとなく、この文章を見ると私がとんでもない高慢ちきな人物なように感じられるけど、 実際にはそんなことはない、と思う。

少なくとも表面的な態度は。

_ [言語] LispハッカーPaul Graham氏のY Combinator、Web 2.0な起業サイト

Y Combinatorのサイトそのものについてはさほどでもないのだが、 (私にとって)重要なのはこのサイトの実装。

Y Combinator Startup NewsがArcによるものであることも注目したい。ArcはY Combinatorによる新しいLispの実装である。さすがはPaul Graham氏といったところか。

Arc、あきらめてなかったのか。

_ [Ruby] 合宿2日目

昨日作ってたパーサーをYARVコンパイラと結合。 時間内には完成しなかった。

合宿は大変有意義であった。 ここ数日のコミット数から考えても 開発が進んだことは間違いない(1.8.6リリース直前であったこともあるが)。

合宿のまとめ・振り返り(wrap up)

Keep (続けたい)
  • 合宿。face to faceの開発。未踏完了の8月までに後2回希望。
  • 生産性高し
  • Wiiを持ってこなかったのは正解
  • たくさんコミットできた
  • 議論のスピードが速い
  • 仕様について深いディスカッションできた
    • クリスマスには1.9
    • キーワード引数について
    • 可視性について
    • M17Nについて
Problem (直したい)
  • 6人ではピザは8分割しない
  • とんかつのゴマはすりすぎない
  • 遅刻しない。いないはずなのにコミットしない
  • M17Nのことを「Unicode」と呼ばない
  • 可視性の話は難しすぎ
  • trunk開発合宿のはずが1.8の話が多かった
Try (今後やってみたい)
  • ペアプログラミング
  • 毎朝今日やることについて(stand-up meeting?)
  • ToDoを視覚化した方がよかったかも
  • 情報共有用サーバがあるとよかったかも
  • ネットアクセスのあるホテルをとった方が(寝不足になったかも)

成果

  • 仕様検討
    • 1.9
    • M17N
    • 可視性
    • キーワード引数
    • Arrayメソッド
    • ディレクトリ構成(includeを分離)
  • 実装
    • Win32の整理
    • Signalまわりの整理
    • Thread (blocking)
    • Ripper
    • Bootstrap test
    • 引数の扱いの整理
    • Thread API

_ 誕生日

今日はRubyの14歳の誕生日。もうそんなになるのか。


2008年02月24日

_ 帰還(3)

ああ、時差の計算を忘れてた。

帰還」の後半(羽田についた後)は23日のできごとで、 「帰還(2)」は24日のできごとである。

_ [Ruby] Happy Birthday Ruby

で、今日はRubyの15回目の誕生日である。

私が石塚さんと(chat*1経由で)話をしていて、プログラミング言語を作ることと、そのコードネームとしてのRubyが決まったのが1993年の2月24日ということである。 この時点ではまた1行もコードを書いていない。

ソフトウェアの誕生日がいつか、という点において合意は得られていないと思うが、 そもそも物理的な実体がなくコンセプトこそが重要であるソフトウェアにおいては 「作ろうと思った」、「名前が決まった」というのがもっとも重要なイベントであると思うのである。

最初のリリースを誕生日だと見なす人もいるだろうが、 その場合にはRubyの誕生日は1995年12月21日ということになるだろう。

で、誕生日に何をしたか、というと特に何もしなかった。 薄情だろうか。

*1  より正確には我々が作ったマルチユーザtalk、mtalk


«前の日(02-23) 最新 次の日(02-25)» 追記