最新 追記

Matzにっき


2007年02月01日 [長年日記]

_ 和田英一@日本初ハッカーはちょっと変わった絵を描く/Tech総研

元祖ハッカー、和田先生(75歳)は今日もお元気です。

「一生プログラマ」を目標とする私としては、 歳をとっても和田先生のようでありたいと望む。 こんな私も、最近、老化の足音が聞こえるようになってきたが、 プログラミングに対する老化の影響(悪影響)については いまだに確たる自覚がない。 体力をそれほど必要としない知的作業(徹夜とかは別として)なので 影響は限定的だと信じたいのだが。

プログラミングからは離れるが、 先日、77歳の叔父伯父(父の兄)がバイク(たぶんビッグスクーター)で事故して 10日ほど入院したと聞いた。

「でかけるから」と言ったところとはまったく逆方向での事故だったそうだが、 本人の記憶が飛んでいて、なぜそこにいたのかまったく思い出せないのだそうだ。 まあ、大事にいたらず良かった、良かった。

しかし、体力は落ちていると思うので、あまり無理をなさらないでください。

とはいえ、この兄弟(伯父と父)は私よりも体力がありそうなので 油断できない。父(69歳)はいまだに握力70Kg弱を維持しているような気がする。

かなわない。

_ ITmedia エンタープライズ:「PC 2.0の牽引役」--wizpyの詳細が判明

「PC 2.0とはなんぞや」という気もするが、 小さなUSBデバイスを持ち歩き、それでブートすればどのPCでも 同じ環境で作業ができること、を意味するらしい。

まあ、それだけなら昔から技術的には可能なわけだが、 そのUSBデバイスが単体ではLinux駆動のメディアプレーヤーとして動作する(ので、持ち歩きに対するインセンティブが増す)ことと、 オンラインストレージとネットワークアップデートが(有償で)提供されることが 新しいと言えば新しいか。

単なるディストリビュータを脱却しようとするTurboLinuxの新しい動きは 興味深い。同じ土俵で勝負したらRedHatに勝てないものね。

ところで、この一連の話題性のせいかTurboLinuxの株価は上昇している。 しまった、こうなることはある程度予想できてたんだから、 昨年の時点で買っておけばよかったなあ。

_ [言語] バベル案内

Steve Yeggeによるエッセイの青木靖さんによる訳。原題は「Tour de Babel」。

C++がけちょんけちょんにされている一方で、 Rubyがえらく(作者にとってさえ意外なほど)高く評価されている。

で、最近あらためて『4797328541』を 読み返してC++を再評価している身としては、 なぜここまでC++の評判が悪いのか、改めて考察してみたい(Rubyの高評価はあえてスルー)。

で、その考察の結果を書くにはこの余白は(ry

...冗談は抜きにして、それは来週アメリカにいる間に「るびま」の記事にしよう。


2007年02月02日 [長年日記]

_ [Ruby] ユメのチカラ: Rubyで習作 添削

よしおかさんがRubyコードを書いてるっ。 私の中で評価が高い人がRubyを使ってるのを見ると、ちょっとうれしい。 増田さんがRuby使いはじめたのを見た時もうれしかったなあ。

で、当の吉岡さんのコードだが、ちょっと冗長な印象がある。 特に三回あるmakehashメソッド呼び出しの周辺がいかにも同じことの繰り返しである。

ここは

  • ハッシュ生成
  • ファイルオープン
  • ファイルのクローズ
  • 例外処理

などをぜんぶmakehashメソッドに詰め込んで、DRYで行こう。 本体部分はよくわからなかったので(手元にデータもないし)、手をつけてない。

で、結果はこんな感じ。テストしてないけど。

#!/usr/bin/env ruby

def makehash(path)
  h = {}
  open(path, "r") do |f|
    f.each do |line|
      line=line.chop
      h[line]=line
    end
  end
  h
rescue
  puts 'error ' + path.to_s
  exit
end

hash1 = makehash(ARGV[0])
hash2 = makehash(ARGV[1])
hash3 = makehash(ARGV[2])

hash1.each do |key, pkg|
  line = pkg.to_s + ', '

  line = line + if pkg == hash2[pkg] 
    "included,     "
  else 
    "not included, "
  end

  line = line + if pkg == hash3[pkg]
    "included\n"
  else
    "not included\n"
  end

  print line
end

_ [Ruby] kiwamu日記 - RubyConf 2006 の裏番組、RejectConf の実施形式メモ

昨年のRubyConfにおけるRejectConfレポート。

体力なくて出席しなかったんだよなあ。 出てればよかったかなあ。

_ 西川善司の3Dゲームファンのための「ロスト プラネット」グラフィックス講座

カプコムのMTフレームワークにおける種々の工夫。

っていうか、並列度をあげるための(私の知らない)テクニックの数々。 これって「普通」のコンピューティングには応用できないもんかね。 まあ、日常的なタスクにはそんなに並列度はないか。

_ [Ruby] YARVに手を入れる

どう逆立ちしてもtrunkがYARVであるのは間違いのない事実で、 いつまでもmatzrubyの箱庭で遊んでいても、世間様には貢献できない。

というわけで、意を決してtrunkに手を入れてみる。 あまり難しい(coreに大々的に手を入れる)ようなものは 手に負えなそうなので、とりあえず簡単なものから。

  • クラス変数の探索順序変更
  • Symbolをふたたびimmediateに

コア以外のソースコードは共通なので、意外と簡単。 で、コミットしてみた。

この後、

  • クラスローカルインスタンス変数
  • ローカル変数スコープの変更

も導入しよう。クラスローカルインスタンス変数には 命令の追加が必要になる。ちょっと手ごわい感じ(だけど、動いてるみたい)。

ところで、命令が追加されると tool/compile.rbでダンプされた命令が読み込めなくなるんだけど、 命令セットのバージョンとか付ける必要があるのかな。


2007年02月03日 [長年日記]

_ [Ruby] RailsConf 2007 May 17, 2007 - May 20, 2007 Portland, Oregon

とうとう申し込みオープン。今年はいったいどれくらいでチケットが売り切れるか。

まず今年の会場は(OSCONの会場でもあるくらいだから)バカ広い。 さらに受け入れ人数も昨年の倍を予定している(ということは800越えか?)らしい。 となると、3日で売り切れた昨年よりはマシであることが期待できる。

とはいえ、Railsの話題性を考えると楽観はできないな。

「行きたい」と叫んでいた後輩のKくんはすでに申し込みをすませたらしい。 仕事の調整はつくのかな。費用は会社負担にしたげるから。

_ 仕事中に口笛を吹いて、コンピューターにコマンドを実行させる

音声インタフェースはうるさいので実用は難しい気はするけど(「はどそ〜んっ」)、 一度遊んでみたい気はする。

まわりに誰も居ないところで。

_ [教会] 掃除→食事

何週間かぶりの教会の掃除当番。当初は私一人でやるつもりだったが、 「夕食、外食にして、ついでについていくよ」と家族総出になった。

掃除機かけて、イス並べて、ゴミ片づけて。 いや、人数が多いと仕事が早い。 助かった。

その後、サティで食事と買い物。 末娘が食べるのが超遅いので、 私と末娘だけ置いていかれた。

「口、からっぽになった?」
「あーん(まだ入ってる)」

を何度繰り返したことか。

女性陣はチョコレートと、洋服。息子は靴を買ってもらったほかは本屋へ。

私は子守り。


2007年02月04日 [長年日記]

_ [教会] 証会

第一日曜なので証会。今日はなぜだか男性ばかりだった。

そのうちの一人、腹話術など多芸な人が 「何人の前でも緊張しないけど、この場では緊張する」と おっしゃっていた人がいた。

確かに。私も1000人の前でプレゼンしたこともあるけど、 その時よりも教会で60人の前で話す方が緊張するな。 今日も後で妻から「早口だし、声が小さいし、マイクからも遠いし、よく聞こえなかったよ」とたしなめられた。

すいません。

集会終了後、年度切り替わりの会計処理をしたのだが、 二件ほどミスをしていることを発見した。たいしたことはないのだが、 本部の人の事務処理の負担がちょっと増えるかも。

すいません。

帰宅したら、昼寝。ちょっとのつもりだったのに、 何時間も寝てしまった。

もったいない。

反省するべきことの多い日曜日だなあ。


2007年02月05日 [長年日記]

_ [言語] らいおんの隠れ家 - ポール・グレアム「プログラミング言語が解決するもの」

プログラミング言語は新たな問題を解決するために誕生した。 というか、問題を解決しない言語は生き残れない。 その視点は鋭い。

で、Rubyに対して「Perl is a kludge, and Lisp syntax is scary」(Perlはその場しのぎだし、Lispの文法はおっかない)という観察もまた鋭い。

っていうか、Paul GrahamはRubyの仕様だけ見て、 私のLispへの傾倒と、その一部(S式とかマクロとか)の忌避に気づいたのかしら。 そのことについて彼と話したことはないはずだけど。

だとしたら、たいしたもんだ。

弾さんによる増補もある。

_ [言語] Scheme:使いたい人のための継続入門

ちょっと新しい視点からの継続入門。

でも、なんか途中からわかんなくなっちゃうんだよなあ。 部分継続にいたってはサッパリ。

CPSそのものに対する理解の不足かしら。

_ [Ruby] 思っているよりもずっとずっと人生は短い。 :=オペレータ

高橋(Maki)さんによる:=オペレータへの反対意見。

  • 「:=」をどういうときに使えばいいか説明するのが難しそう(特に初心者に)
  • JavaScriptのvarの類推からすると、「とりあえず:=にしとけばいいよ」的になって、何でもかんでも:=がつきまくる恐れがある。それは本意ではないのでは? 結局「=」と「:=」のどっちを推奨したいのか?
  • ブロックの外にある同名の変数を参照できない。参照するためにはrenameして……とかやるくらいなら最初から別名にしとけばいい?
  • 元々の動機が「ブロックにブロックローカルな変数を導入したい」ということなら、ブロックの最初に書けばよいことで、どこでも使える:=を導入するのは強すぎでは?

まあ、わからないでもない。一応反論しておく。

「:=」をどういうときに使えばいいか説明するのが難しそう(特に初心者に)
「:=で代入された変数はブロックローカル」とだけ伝えておく。 初心者は「:=」を使う必要はない。 本当に必要になった時に思い出せば十分。
JavaScriptのvarの類推からすると、「とりあえず:=にしとけばいいよ」的になって、何でもかんでも:=がつきまくる恐れがある。それは本意ではないのでは? 結局「=」と「:=」のどっちを推奨したいのか?
適材適所。というか、「:=」が必要になることはまれなので、普段は「=」で十分。
ブロックの外にある同名の変数を参照できない。参照するためにはrenameして……とかやるくらいなら最初から別名にしとけばいい?
ブロックローカルは別名で代用できない。 「参照のためにrenameして」という問題については、 ネストするスコープのある言語すべてに言えることなので。 ネストしない言語が少数派であることを考えると、 この件は重大ではないのではないかと
元々の動機が「ブロックにブロックローカルな変数を導入したい」ということなら、ブロックの最初に書けばよいことで、どこでも使える:=を導入するのは強すぎでは?
決まった場所にしか置けない「宣言」はRuby的ではないような。

_ 出張

社長と一緒に出雲空港へ行き、 一緒に伊丹に移動。これから長期出張だ。

伊丹からバスで関空。思ったより遠い。 どうせなら大阪の空港は関空で一本化して、 ハブ空港にしてくれたら、いろいろと便利なのに。 東京が羽田と成田でめちゃ遠いのにあきたらず 大阪まで国内空港と国際空港がこれだけ離れているというのは どういうことかと。

その後、井上社長のチケットでラウンジで過ごした後、 UAでサンフランシスコへ。

機内では『守護神』を見た。 面白くなかったとまでは言わないが、ちょっとベタな展開。 おまけに数日前にラジオで浜村淳がしゃべっていた内容そのまんま。 「ここからは言えない」、「あとは劇場で」とか言ってたけど、 結局全部しゃべってるじゃないか、あのヒトは。

_ サンフランシスコ観光

我々関空勢と成田、セントレア組と合わせると 総勢18名にもおよぶ視察団。多いぞ。

サンフランシスコ空港はいままでトランジットで何度も使ったことがあるが (パスポートでスタンプ数えたら4回目だった)、 降りるのは初めて。

空港でガイドの人に連れられて市内観光。 着いて早々引き回されるのは時差ボケの解消のためだろうか。

空港から市内、ツイン・ピークスから市街を眺める。 口数の多いガイドさんによると

  • サンフランシスコは意外と狭い。 山の手線内くらいの範囲に80万人くらい。
  • 主要な産業は金融と観光。

ふぅん。

ゴールデンゲートブリッジ。 テレビで見るのとまったく同じだが、 昭和12年完成とは知らなかった。 うちの親父と同い年じゃん。

アルカトラズが遠くに見える。

その後、フィッシャーマンズワーフに移動。 昼食はカニ。カニはここの名物なんだってさ。 (近所の温泉宿で喰わせるような)日本的なカニよりも ずいぶん身が詰まっている。しかも、でかい。 カニまでアメリカンサイズである。

食事後、おみやげを買ったり、 (野生の)アシカを眺めたりする。

ホテルに移動。宿泊先は Crowne Plaza Union Square。 移動途中のチャイナタウンとか面白かった。 なぜかみんなピンクのプラスチックバッグ抱えてたりするのも。

インターネット接続が高い。 1日10ドル。1週間で35ドル。 アメリカのホテルってどうして無料でネットを提供しないんだろうか。 日本じゃ常識なのにな。

ホテルで、るびまの原稿書き。

で、夕方、みんな揃って夕食へ。 ヒルトンの1階にある日本料理店。 なんで、和食...。

でも、おいしかった。 アメリカの日本料理って言っても馬鹿にできないな。 サイズはアメリカンだけど。

一行は李白(島根のお酒)があったことに感動してた。 その後さらにスシ食いに行った人たちもいたが、 胃袋どうなってるんだろう?

私は帰って原稿書く。

_ [原稿] るびま18号 他言語探訪

今回はC++だ。最近読んだ『C++の設計と進化』に影響されたことは 言うまでもない。本当はBjarneの直筆サイン付きの原書を読みたいところだが、 ちょっと英文苦手なんで。

機内であらかた書いてたんで、あとは総称型プログラミングのところ。 ちょっと面倒なんで後回し。


2007年02月06日 [長年日記]

_ 朝食

ホテルのレストランでクーポン。Full American Breakfastとあるが、 いわゆるContinental Breakfastとどこが違うのかわからない。

_ [OSS] SpikeSource

「Javaの名づけ親」ことKim Polese女史の会社として知られる SpikeSourceへ訪問。 オープンソースビジネスについて熱く語ってもらう。

プロプライエタリソフトウェアがなくなることはないだろうが、 オープンソースこそソフトウェアの進歩の方向であるというメッセージは 力強い。っていうか、プレゼンうまいよ、この人(元Cygnus→RedHatの人)。

その他、技術者と話もした。

  • 俺ら、Ruby好きだよ
  • 非公式だけどRuby入りのスタックもあるんだ。バージョンは古いけど(1.8.2)
  • でも、更新するのは簡単さ
  • ビジネス上の引き合いがあれば、公式スタックにRubyを入れるのもやぶさかでない

なのだそうだ。

_ 昼食

で、ここで視察団は、分散。

私と一緒に次の訪問に行くチームはMountain Viewの「まるいちラーメン」へ。 シリコンバレーまで来てラーメン食べなくてもいいだろうという気もするが、 せっかく案内してもらったので素直に従うことにする。

で、Combo Bなるメニューを注文したのだが、 「ラーメン+揚餃子+カリフォルニア巻き」のコンボであった。 ちょっと量が多いよ..。

食べたけど。おいしかったけど。

この店で「ベイスポ」をゲット。 ベイエリアの無料日本語新聞。普通のコミュニティ紙に見えるが、 求人欄などアメリカらしい。

なんでもベイスポのある店に悪い店はないんだそうだ。

_ [OSS] SRAOSS

(株)SRAの米国法人SRA Americaは、今はSRAOSSという名前になっているのだそうだ。 日本支社長はPosgreSQLの石井さんだよね。

社長の人はインドの方なのだが、日本語がめちゃめちゃ上手。 終始、日本語で話しておられた。

が、日本語が上手でも日本人のように振る舞うとは限らない。 すっごいストレートで、「あれはダメだ」とか、 「結局どうしたいの」とか。これがインド風なんだろうか。 すがすがしいほどだ。

しかし、私が「Rubyを作った人」というのは認識しなかったみたいで、 最後の最後、帰る直前になって、 「Ruby作ったの? あなたが? 最初に?」とか言われた。

そうです、私が作りました。

_ Fry's

同行者のデジカメのメモリカードがいっぱいになったので、 電気屋のFry'sへ。レンタカーのカーナビが(日本のに比べると信じられないくらい) お馬鹿さんで、迷いに迷う。

で、いざついた店が異常に巨大で。SDカードを探してさまようことになる。 時間に余裕がない時はFry'sはやめた方が良いかもしれない。

しかし、2GのSDカードが$29.99は安い。秋葉よりも安いか。

_ JTPAスーパーギークサロン

「シリコンバレーの日本人技術者の会」JTPAのミーティングに呼ばれる。 貴重な機会である。

で、Rubyのこととか、シリコンバレーの生活のこととか。

  • 日本では居心地が悪かった人がシリコンバレーに飛び込んでくる
  • いじめられた経験のある人もそれなりに
  • 日本では変人(尖がった人)だったのに、こっちでは普通(ちょっとがっかりしたりして)
  • みんなそれなりにこの土地に満足してるみたい
  • 日米のキャリアパスの違い

など。

あと、当日のレポート(写真付き)。

帰る前に、幹事の渡辺千賀さんの『4022731222』を売ってもらう($9)。 もちろんサイン入り。いいおみやげだ。

今回の出席者には「嫁さんに読ませたらギークの生き方を理解してもらえた」と言ってた人がいる。うーむ、もしかしてうちの妻も...いや、ちょっと無理かな。

_ [Ruby] 思っているよりもずっとずっと人生は短い。- :=続き

うーん、でも、世間には「変数のスコープは小さい方がいい(必要のないスコープに漏れたりしない方がよい)」という汎用的なプラクティスも存在するので、よそからRubyに来たひとは「えー、なんで:=使わないの? 便利だよねー」とか言いながら、:=を使いまくるような気がとってもします。例えばRails方面とかRails方面とかRails方面とか(<超偏見。でも、過去のRubyのテイストになじみのない人が大量に流入している&&新しいもの好きという傾向があるのは事実)。

それならそれでいいんじゃないかな。YARVなら性能上のペナルティはないそうだし。


2007年02月07日 [長年日記]

_ 朝食

同じ朝食。今日はウェイターが「なににする?」と聞いてきた。 「目玉焼きとベーコン」を注文。そうか、これがFull American Breakfastの正体か。

_ ITOCHU Technology

視察に全面的に協力してくれているCTCさんの計らいで ITOCHU Technologyのオフィスを訪問。

移動中のバスの中ではずっと寝ているので、 訪問先の位置関係とかが全然わからない。

シリコンバレーについていろいろと学ぶ。 ここが非常に特異な場所であることがよくわかる。 そんな場所が日本のどこに生まれるだろうか...無理かな。

アメリカのVCの1/3がここにあるのだそうだ。 また、ドットコムバブルの影響もほぼ抜けているとか。 確かにグラフを見る限り投資額は前の水準に戻りつつあるように見える。

ミーティング終了後、お弁当をご馳走してもらったのだが、 和食弁当であった。ちゃんとご飯とみそ汁も付いている。 が、やっぱりサイズはアメリカンであった。

おなか一杯。

_ JETRO BIC

JETROのSan Joneオフィスへ。 Business Innovation Centerといって、 シリコンバレーに進出したい人に(十分な審査の上)オフィスを貸したり、 ビジネス展開を支援したりするのだそうだ。

最近は大変盛況で、 今年だけで過去5年間と同じくらいの数の会社を支援したとか。

またまたシリコンバレーの特異性とか住みやすさについて、熱く語られる。 ちょっとビジネス色が濃くて、(さっきとは別の意味で)おなか一杯。

その後、ちょっとだけ観光してから夕食へ。

_ 観光

観光した場所

  • Apple本社。

    なにをするかというと、Apple Storeで買い物という。 ここぞとばかりにいろいろ買ってる人もいた。マカーおそるべし。

  • Stanford University

    もうかなり暗かったのだが、ちょっと離れたところに塔が見えた。 「これはSather Towerか」と一生懸命写真を撮ったのだが、 どうも違うTower(Hoover Tower)らしい。 っていうか、そもそもSather TowerはBerkeleyなのか。勘違い。

_ 寿司

で、夕食に連れられていったら寿司屋(Fuki-Sushi)だった。

着いたら、Tim BrayとCharles Nutterもいた。Sunの人がアレンジしてくださったらしい。 ありがたい。

で、日本食を食べながら日本や日本文化について語った。 この二人はRubyKaigiにも来ると言ってた。今回はインターナショナルだな。

この店の日本食は大変おいしかった。 日本語も通じるし(中には日本人顔してるのに通じない人もいたけど)。

でも、量が多い。とても多い。

_ [原稿] 日経Linux 2007年4月号

だいたい出張中に三本も原稿を引き受けちゃうのはどうかしてると思う。 っていうか、前からわかってるんだから、せめてその内の何本かは あらかじめ書いておくとかできないものなんだろうか。

毎月同じ愚痴を書いてるってことはできないってことなんだろうな。

日経Linux 2007年4月号はAJAXについての後編。

前回はAJAXの概要とJavaScript言語についての説明で終わってしまったので、 今回は実際にAJAXなアプリを作ってみることにする。

しかし、HTMLだけである程度の動作するブラウザアプリが書けるってのは 面白いもんだよね。ちょっとデバッグが大変だけど。 これでFirebugがなかったらと思うとちょっとクラクラする。

IEでバグが出たら泣くしかないよな。

_ [言語] Liskell - the language

S式でHaskell。

個人的にはHaskell(オフサイド)文法のLispがほしいかも。 その場合はHaspか。


2007年02月08日 [長年日記]

_ Happy Birthday

今日は妻の誕生日。なのにダンナはアメリカにいるわけで、 不興を買っているわけである。 日本時間の8日にSkypeしたんだが、ぜんぜん通じないのである。 この辺、電話にはまだかなわない。

さあ、どうやって機嫌を取ろうかな。

_ Meeting with Sun Microsystems

今日はSunキャンパスのEBC(Executive Briefing Center)で Full-day Meeting。ここが本社だと思ってたんだけど、 登記上の本社は別にあるのだとか。

で、いろいろな「偉い人」から

  • Sunのソフトウェア戦略 David Bryant, Senior Director of Marketing, Application, Platform Products - 隠さない、「間違った側」に立たない、イノベーションを継続する
  • Webベースソフトウェア戦略 Tim Bray, Director of Web Technology - 特定の言語(Javaを含めて)に必要以上に肩入れしない、でも、PHPのセキュリティ問題は勘弁してほしい。できることならPHPの代わりにRubyを勧めたい
  • JRuby戦略と現状 Charles Nutter, JRuby Core Developer - もっとも「ダイナミック」な言語、この知見は他の言語にも応用可能。JavaOneで1.0アナウンス(か?)。NetBeansすげーっ。
  • 松江市のオープンソース戦略(一部オフレコあり) - 田中さん, 松江市役所
  • Sunのオープンソース戦略 Barton Geroge, GNU/Linux Strategy and Community Manager, Free and Open Source Group

などを聞いた。ここでしか聞けないすごい濃い内容であった。 詳細なレポートを書きたいが、それにはこの余白は(ry

また、後でまとめたい。できれば。もうだいぶ忘れてるけど。

特記すべき点はみっつ。

  • 通訳。すっごい上手だった。 白人紳士と日本人女性の二人組が交代で通訳するのだが、 これほど上手な技術系通訳には会ったことがない。 感動モノであった。
  • お弁当。すっごい豪華だった。和食弁当だけど。 なんか終始日本食なのが今回の旅行の特徴というか何というか。
  • 生Jonathan。なんかビジターセンターみたいなところで Sun CEO、Janathan Schwartzその人がインタビューの収録をしていた。 また、あとでキャフェテリアを訪問したら、彼がふつーに歩いていた。 いやあ、すげーっ、至近距離だよ。 あと、Tim BrayにSunソフトウェア担当VPの人にも紹介してもらった。 (私から見ると)大物ばかりで緊張しちゃう。

参考: この日のミーティングに関するTim Brayのブログ

_ カニ

明日にはもう帰国するので今夜が最後のアメリカでの夕食になる。 で、連れて行ってもらったのはCrusatceamという店。

で、カニ

見たことないほど巨大なものが一人一人の皿に配られるのは圧巻であった。 バジルとオリーブオイルで炒めたものらしい。日本では見かけない味つけ。 意外(?)なことにおいしかった。

今日は今回の旅行のひとつのハイライトと言ってもよい。 あ、いや、Sunの訪問がね。

で、カニを食べながら隣に座っていた Charles NutterとRubyの可視性(visibility)やUnicode対応について 熱く語ったのであった。正直、ここまでRubyそのものの話ができる機会は 日本でもなかなか無い。

_ [Ruby] 可視性メモ

で、Charlesと話したことのメモ。

private visibilityが必要になるのは、 ローカルなルーチン(関数 or メソッド)の名前がpublicなメソッド名と偶然衝突することを避けるため。

で、組み合わせとしては以下のような場合がある。

スーパークラスとサブクラスで同名のメソッドがあり、 それぞれの可視性の組み合わせの可能性は(左がスーパークラス)、

  1. private × private
  2. private × public
  3. public × private
  4. public × public

である。ここで4は通常のオーバーライドなので問題なし。 1と2に関してはすでに解決策がある(functional styleではオーバーライドしない)。

で、残る問題は3。私の元の案では、 privateを先に検索してからpublicを検索することにしていた。 しかし、これについてはCharlesから

  • 継承をさかのぼった検索が2度起きるのは性能上問題
  • 継承のどこにあるメソッドが呼ばれるのかわかりにくい

という指摘が。前者はメソッドキャッシュでほぼ軽減されるとは言え、 指摘はもっともだ。で、ここまでで悩んでいたのだが、 今回、カニを食べながら、Charlesが 「でもさ、無理に解決しようとするから難しいんで。 Javaならpublic × privateはそもそもエラーだぜ。 Rubyでもエラーでいいんじゃね(意訳)」という指摘が。

まったくだ。どうしてそれに気がつかなかったんだろう。 一種の視野狭窄か。

「public × private」がエラーなり警告なりで存在しない (あるいは承知でやっている)と見なすことができればシステムがずいぶん簡単になりそう。

あとでもうちょっと考えてみよう。

あと、Unicode対応では、以前の案からencoding=メソッドをなくすことにした。 つまり、ある文字列のエンコーディングは動的に変更できないということ。

変更するためにはString#encodeメソッドを使って新しい文字列を作る。 おそらく性能のため実装はcopy-on-writeを使うことになるだろうけど。

というのも、JRubyではBinary StringとUnicode Stringで クラスを分離したい(少なくとも内部的には)というニーズがあるようだ。 となると「普通の言語」ではオブジェクトのクラスを動的に変更するのは難しいので エンコーディングは変更可能でない方がありがたいことが多いだろうということ。


2007年02月09日 [長年日記]

_ 朝食

最後のFull American Breakfast。同室の大西さんからは「まつもとさん、だんだん朝食の量が増えてますよ」と笑われた。しまった、知らず知らずにアメリカンな呪いに...。体重計が恐い。

_ 帰国

バスでサンフランシスコ空港。

空港でおみやげを。いや、チョコレートとかそういうのは 昨日のうちにホテル近くのドラッグストアで買っておいたのだが(これは正解だった。空港の売店では値段が倍だから)、 妻のものはさすがにドラッグストア(薬の在庫が比較的豊富な24時間スーパーをイメージしてほしい)では購入できなかったので。

で、Swarovskiのアクセサリを。 まあ、服飾品のセンスはイマイチな私としては、まあまあではないかと。

機内ではずっと日経Linuxの原稿を書いてた。 というか、ほとんどの時間はAJAXなサンプルプログラムの手直しをしてたんだけど。 これはこれで面白い。


2007年02月10日 [長年日記]

_ 帰国

飛行機が関空にタッチダウンしたのがちょうど夕方の5時。 もちろん時差のせいだが金曜と土曜の大部分を「奪われた」気がする。

往路は出雲空港から伊丹へ飛行機だったが、 帰りはもう最終便が出てしまっているので、 私と井上さんは電車で。他の松江組は大阪で一泊するそうだが、 我々はできるだけ早く帰りたい(そして、家族のご機嫌を取りたい)ので。

関空→新大阪→岡山までは順調だが、 岡山→大阪松江はめちゃめちゃ遠い。 っていうか、飛行機乗ってる時から通算すると17時間は移動に費やしている。 正直、お尻が痛い。

電車に乗ってる間は、ノートに今回の旅行の間、 やったこと、考えたことをまとめる。 私は普段、あまり紙とペンで文字を書く習慣が無くて、 もっぱらPCにメモを書き込んでいるんだけど、 たまに移動中に紙に書きなぐりながら 考え事をすると結構物事が進むので、 今回は出国前にA6ノートを購入して持ち歩いていたのだ。

今まで、そういうのってたいてい海外旅行の出国前で、 帰国するとそのまま忘れちゃうんだけど、 今回は気をつけてノートをつけて結構効果的だった。

っていうか、普通、そういうことは学生時代に身につけることだよなあ。 私、全然ノートをつけない学生だったから。 勘と度胸と記憶力で勝負って感じ。

自宅に着いたのは深夜12時を過ぎていた。 やっぱりうちはいい。

ひさしぶりに日本の お風呂に入って「お風呂サイコー」と叫んだら、 誰もいないと思ってたのに、妻が聞いてて、笑われた。 恥ずかしい。

体重は1Kg増えてた...。やはり。


2007年02月11日 [長年日記]

_ [教会] 松江

夕べ、風呂から上がったらすぐ寝たせいか、 思ったより時差ボケは無いみたい。ありがたい。

しかし、月曜朝に出て、土曜遅くに帰ってきたから、 日曜にしか私に会わない人は海外に行ってたとは想像もしないわけだな。 なんか疲れてるって思われてたみたいだけど。

今日は早く帰る。めずらしい。


2007年02月12日 [長年日記]

_ [原稿] 日経Linux 2007年4月号

ほんとは10日が〆切だったのだが、 機内や電車内で片付けきれず、日曜日には手が出なかったので 今日になってしまった。

お姉ちゃんたちが部活に行っている間、 私はこもって原稿を書いていた。 くたびれた。

_ 時差ボケ

で、原稿書きに疲れたのか 眠たくなってしまう....そのままほとんど一日中寝てた。

いつも帰国後しんどいんだよなあ。 今回は大丈夫かと思ったんだけど。

_ [言語] Mike Vanier: Scalable computer programming languages

スケーラブルな言語。重要なファクターである。

だいたい納得できる品揃えなんだけど、 この人は静的型を(私よりもずっと)重要視しているみたい。 確かに型でエラーを見つけてもらった方がずっと楽なのは認めるんだけど。

なぜ、私は静的型を重視しないのか改めて考えてみた。

きっと、私はスケーラブルであることよりも 簡潔である方を好むからなんだろう。 Javaのような型情報をたくさん書かなければならない言語では (よく考えてインタフェースを配置しなければ)柔軟性も高くないし、 型推論のある言語では明示的な型宣言は少ないけど(それでも引数には書かないといけないことが多い)、それでもなんか固いし。

ソフトタイピングという技術もあるそうなんだけど...。

でも、シグネチャベースで動的にチェックしてくれるオプショナルな「型」なら あっても邪魔にならないかもしれない。 lintみたいな使い方になりそうだけど。

_ [言語] どう転んでもLisp

Lisp仙人、竹内先生によるスライド。

こういうのを見るたびに断絶を感じる。もったいない。

Rubyが、Lispの持っていたパワーの一部を大衆に紹介できたことは うれしく思うが、結果的にLisp自身がそれを行うことを邪魔したと言えないこともないし、 またLispのすべてのパワーを紹介できたわけではないので、 その点については心苦しく思う。

_ ITmedia News:ガンダムは「お粗末」だが……安彦良和さんに聞く

安彦先生、厳しいですなあ。

「ガンダムは実にミステリアスな体験でした。なぜ、これほど支持されるのか。なぜ、これほど長命なのか、その理由は本当にわかりません。私は改めて見る勇気がなくて…。ただ、仕事上、どうしても見ることもありますが、お粗末ですよね」

──そうでしょうか

「日本のアニメ、いわゆるジャパニメーションの特徴なのですが、品質的には良くなくても妙に人の心をキャッチするというのか。それが日本だけではなく、海外でも受け入れられ、世界に冠たるジャパニメーションと呼ばれているわけです」

でも、なんか分かる気がする。我田引水しちゃうと 私のRubyに対する気持ちもちょっと似てる。

Rubyは実にミステリアスな体験でした。なぜ、これほど支持されるのか、その理由は本当にわかりません。仕事上、どうしても見ることもありますが、お粗末ですよね

品質的には良くなくても妙に人の心をキャッチするというのか。それが日本だけではなく、海外でも受け入れられ、世界に冠たるRubyと呼ばれているわけです

日々、Rubyの穴を埋めることを考えてる身からだと 欠点が一杯見える。でも、世界中の人が支持してくれる。 講演とかがあれば、理由を推測して語ってみせてはいるけれど、 本当のところは私にも全然分かってない。


2007年02月13日 [長年日記]

_ [原稿] 書き下ろし

出張中にできているはずだった原稿第三弾。

今度は書き下ろしの文章。とはいえ、 以前に書いた雑誌記事をベースにいろいろと書き加えたもの。 でもねえ、正直品質が高くないなあ。 自分で書いててノらなくてさ*1

やっぱ、書き下ろしは難しいなぁ。

*1  とか書くと編集の人が青くなるかも

_ Sup

コンソールベースのGMail風メールクライアント。

morqとかぶるのでかなり関心がある。ただ、こういうツールの場合、

  • 日本語が使えるか
  • Emacsが使えるか

という点が(私にとっては)大変重要なので、たいてい使えなかったりする。 今回のSupもコンソールベースで海外産ということから たぶん無理だろう。まあ、だからわざわざmorqを作ったわけだが。

でも、ソースコードとか参考にできるかもね。

_ [Ruby] Gardens Point Ruby.NET Compiler

オーストラリア産のRuby.NETコンパイラ。 マイクロソフトに移ったJohn Lamのとは違うもののようだ(彼はカナダ人)。

そういえばJohn Lamは、Redmondへの移動でえらい苦労しているそうだ。

_ [言語] 言語の設計に関する5つの問題

lionfanさんによるPaul Grahamのメモの翻訳。 オリジナルは2001年のMITのパネルディスカッション用のメモ。 2001年のMITといえばLL1を思い出すが、あれは秋だったはず。 これは5月10日だそうだ。

今回の内容はだいたいは「Being Popular」と共通(時期も同じだし)だが、 価値は下がってはいない。

その1:基本原則

  1. プログラミング言語は人間のためのものだ
  2. 自分自身と仲間のために設計せよ
  3. プログラマにできるだけ自由を与えよ
  4. 短く書けるようにしろ
  5. ハックを認めろ

「それなんてRuby?」という気がするが、 この当時PaulはRubyを知らなかったはず。 また、「ハックを認めろ」には 当然のように「言語内言語」や「マクロ」を含んでいるのが Lispハッカー。

その2:未解決問題

  1. 大きなライブラリを構成する方法
  2. みんなは本当に前置記法を怖れているのだろうか
  3. サーバ・ベースのソフトウェアには何が必要か
  4. まだ発見されていない抽象的な概念はあるだろうか?

「サーバ・ベースのソフトウェア」という概念に ちょっと2001年と言う時代を感じさせる。 この後、歴史はAJAXなどでクライアントに揺り戻すのだ。 歴史は繰り返す。

そして、「みんなは本当に前置記法を怖れて」いる。 もちろん、この命題の真偽は「みんな」の定義の取り方によるのだが。w

その3:ほとんど知られていない秘訣

  1. 好きな言語を使ってよい。
  2. スピードアップにはプロファイラが重要
  3. 言語の設計を方向づけるアプリケーションが必要だ
  4. 言語は書き捨てのプログラムを書くのに適しているべきだ
  5. 文法が意味論と結びついている

その4:昔のアイデアの復活

  1. 新しいプログラミング言語
  2. タイム・シェアリング
  3. 効率

正直なところ、新しい言語に関するPaulの予想は外れています。 残念なことに。

私は21世紀になってから生まれた 将来有望と注目されている言語を知りません。 あえて言えば...Fortress?

その5:落とし穴

  1. クライアント
  2. オブジェクト指向プログラミング
  3. 設計委員会

2007年02月14日 [長年日記]

_ [Ruby] 世界のオープンソースRuby開発者まつもとゆきひろ/Tech総研

リクナビ連載「我ら"クレージー☆エンジニア"主義!」の最新作。

先日、鵜飼さんとリクルートのイベントに出た後に 受けたインタビューをまとめたもの。

でもね、正直に言っていい? 面白くない

実はこのインタビューのときに書籍化した 「我ら"クレージー☆エンジニア"主義!」のバックナンバーを いただいて読ませてもらった。みんなキャラが立ってて非常に面白かった。

それに比べると、今回のものは正直イマイチ。 なんでだろう。文章書いてる人は同じなのに。

まあ、素材が面白くないってのは否定できないよね。 でも、それだけじゃないよな。

きっとこの記事に書かれている私はとても「フツー」だから 面白くないんだと思う。いや、もちろん、 私の実態は「フツーの人」なんで、ライターの人もそうとしか書けなかったのかも しれないけどさ。

いや、待てよ。

かつて自分が普通だと思っていて 実際にはそうでなかった経験が山ほどある私としては 「フツーだから面白くない」と感じたのは私だけという可能性があるわけか。

実際のところ、「私じゃない人」はどう感じたんだろう?

_ [言語] 第7回 「代数データ型」でいろいろなデータを表してみる:ITpro

住井さんによるOCaml連載。

大丈夫、まだついていける、なんとか。

パターンマッチはちょっとほしい気がする。 っていうか、たぶんメソッド呼び出しの引数マッチとか ブロックパラメータの束縛とかに、パターンマッチのセマンティックスを ちゃんと定義すればいいんだろうな。

どうしたらいいのかよくわかってないんだけど。

_ [言語] Java 2007: The year in preview

Javaの今年を予想。

興味深いのはここ。

For 2007, my money is on Ruby, although it's not actually my personal favorite. Python code seems to me a lot cleaner and easier to understand than Ruby code, and I think most Java programmers would agree. However, Python came out at the wrong time.

もちろん、「2007年にはRubyが来る」という発言そのものは全然珍しくもないのだけれども、

  • Java陣営で、かつ
  • 別にRuby大好きってわけでもない

人からさえも「2007年はRuby」と言われるのは、 私にとってはちょっと意味があることである。

_ バレンタインデー

世の中の風潮に流されるのはあまり「賢い」ことではないような 気もしないでもないが、今年もチョコレートいただきました。 妻と娘たちから。

個人的には甘いものはあんまりいっぺんに食べられないんで、 この日に集中するよりも、もうちょっと分散してくれた方がありがたいんだけど。

そういえば、バレンタインデーにチョコレートってのは 日本の習慣のはずだけど、アメリカのお店でもハートのケースに入って 「Valentine's Day」と書いたチョコレートが売ってた。

習慣の逆輸入?

だけど、きっと男の子が女の子に贈るんだろうな、アメリカなら。


2007年02月15日 [長年日記]

_ [Ruby] YARV without 1.9

会社でRubyビジネスについて打ち合わせ。 詳細は書けないが。

で、その中で「Rubyに新しい機能(クラスローカルインスタンス変数とか)を求める人よりも、YARVが今欲しいって人の方が多いと思いますよ」という発言。

確かにそうだ。

もともと今年12月の1.9リリース宣言も、青木さんのそういう発言が発端だものな。 どうしたものかな。

  • YARVに新機能を追加するのはやめる。 すでに追加したものはrevert。 新機能追加はmatzruby(旧インタプリタに基づくなら)、 または新ブランチ(YARVに基づくなら)。
  • trunk(YARV)は現状のまま。新機能を追加しないブランチを起こす。 だれかがメンテナを引き受ける必要あり。

うーん、前者の方が現実的か。私が「2.0っぽいこと」から手を引くのは ありえないし(楽しくないから)。

来週の合宿で相談しよう。

_ 現代のソフト開発の生産性は1920年代の自動車産業並

まあ、それはそうだと思う。

もっとも、現代開発されているソフトウェアは 1920年代のフォードTよりもはるかに複雑だが。

しかも、この複雑さは今まで人類が取り扱ったことのないタイプの 複雑さのような気がするのは気のせいだろうか。

  • 物理法則の制約を受けない
  • 複雑さに理論的限界がない
  • 複雑さに工学的根拠がない
  • 変更が簡単で頻繁に要求される
  • 「正しい結果」が存在する

最後のものがなければ、 「小説」など芸術の分野に似たような複雑さが存在しうるのだが、 小説なら内部に少々矛盾があったり、伏線がいかされなくても たいして困りはしないものなあ。

_ Regular Expression Matching Can Be Simple And Fast

Rubyをはじめとして広く用いられている NFAと比較するとDFAはめちゃめちゃ速いぞ、という話。

まあ、それはそうなんだけど、DFAはバックリファレンスとか実現できないし、 マッチの挙動が異なっちゃうんだよねえ。

GNU grepは両方のエンジンを積んでDFAでも問題ないケースに限ってDFAを使っていると聞いてるけど。Rubyでもそうすべき?

_ [言語] RedSix perl6 implementation on ruby

RubyによるPerl6の実装。

完成度はまだまだだけど(テスト20%パス)、 やる人がいるという時点ですごいことだと思う。

_ [Ruby] Top 10 Ruby on Rails performance tips

Railsアプリケーションを高速化する10のアイディア。

多くはRailsに限定されないし、Webアプリケーション限定でないものもある。

しかし、RailsBenchの GCパッチってなんだ? 初耳だ。

どうやらGCログと環境変数によるGCパラメータの設定を許す パッチのようだ。欲しい人はいるかもしれないなあ。


2007年02月16日 [長年日記]

_ 『4264023866』

4264023866

先日のアメリカ出張のときに島大の野田先生からいただいた本。 ようやっと読めた。

戦前、アメリカ留学までしたルーテル教会の牧師さんが 戦中香港の捕虜収容所などで通訳として働いた時の経験。

愛国者でありながら捕虜に対しても人道的な態度を貫いたこと。 人間的な弱さを持ちながら正しいことを行ったこと。 試練にあってもそれを乗り越えたこと。

なんか多くの人から尊敬される人をただただ「聖人」のように扱うことが多いのに 対して、等身大の表現も好感をもてる。 自分がこのような状況に巻き込まれたら似たようなことを感じると思う。 同じように行動できるかはかなり疑問だが。

で、この渡辺潔牧師は野田先生のおじいさんであるとのこと。

_ [Ruby] Gyre

WebベースのRails用IDE(ビジュアルデバッガ)。

こういうのが好きな人は多いに違いない。 まだ、アルファ状態だそうだが、今後に期待。

_ 良いプログラマーの7つの習慣 - 発想七日!

  • 要件に沿う(早めに作って早めに確認)
  • 現実に即する(現実のデータ、現実の環境でチェック)
  • 自分のコードを熟知する(きれいに、分かりやすく書く)
  • 最適化を心がける(よりシンプルに、無駄なく直す)
  • 自己管理を徹底する(現実的なスケジュール)
  • 学び続ける(プログラミングは科学だ)
  • 【重要】敬意を払う(常にリスペクトを持つ)

_ 「HTML画面をそのまま仕様書に」,5カ月で1000画面を構築した就職サイトPuffの高速開発手法

成果はすばらしい...んだろう。 画面数で規模を測ったことはないんでどのくらいの規模だか よくわからないけど。

だが、毎回うまくいくような気がしないのはなぜだろうか。

_ [OSS] 第5回オープンソースサロン

しまねOSS協議会によるオープンソースサロン第5回目。 今回はUS視察の報告会。

で、同席するためだけに参加したつもりだったのに、 発表者の列に並ぶ羽目に。 まあ、しょうがないか。

野田先生が概略を解説。 井上会長がビジネス的視点から補足。 私が技術的視点から補足。

もっとも、私はたいしたことは言えなかった。

今回の訪問で一番印象に残ったのは

  • 間違った側に立たない。

    オープンソースは止められないから、乗るしかない

  • Free as in Free Puppy。

    タダで子犬をもらっても、犬小屋やドッグフードなど 「その後のコスト」は馬鹿にならない。 オープンソースの「タダ」も似たようなものだ。

くらいかな。


2007年02月17日 [長年日記]

_ 参観日

中学校の参観日。 妻に任せて、 末娘に朝ご飯を食べさせてから中学校に向かう。 でも、授業参観はもうほとんど終わってたよ。 かなり残念。

後、午後は買い物したり。

_ [OSS] Apache 3.0構想発表 - 抜本的性能向上へ

それはめでたいことで。

うち(Ruby)も構想ばかりでなく、もっと前進させよう。 考えるばかりでなかなか踏み出せない。 なにか機会が必要なのだろう。

_ [Ruby] The Ruby VM Serial Interview

私と笹田くんへのインタビュー。今回は第一回目


2007年02月18日 [長年日記]

_ [教会] 評議会

月に一度の評議会。

毎週のことではないので、たまに評議会があることを忘れる人がいるのは ある程度しょうがないと思う(私も忘れたことがある)が、 今日は珍しい人が忘れてた。電話したら「うっかりしてた」んだそうだ。 おうちの事情で忙しいからなあ。

今日は司会。さすがにもう時差ボケはないと思うのだが、でもくたびれた。 さらに集会終了後に半期に一度の監査があったから余計だ。 「できるだけ毎週通帳記帳してください」と言われた。 職場から銀行は近いから全然難しいことではないのだが、 つい、おっくうがっているのがバレちゃうな。


2007年02月19日 [長年日記]

_ 人間は眠れないのが本来の姿、という話

もともと近代以前は夜はとても危険で、 おちおち眠れなかった、という話。

だから、少々眠れない、眠りが浅いくらいがむしろ普通、と。

そういえば、聖書とかでもよく「一晩中」とか「朝になるまで」とかいう エピソードがあるよな。昔はしょっちゅう徹夜していたということか。

じゃあ、現代でも少々徹夜くらいはどうということはない、のか?

_ ウェブが創る新しい郷土 地域情報化のすすめ

書評。

ITを活かした新しい地域活性化。 松江市もきっとそういうのを目指しているに違いない。

こどもの安全の確保、引退者の大量出現への対応という時代の要請と、ITという道具の普及が変化をもたらした。新しい地域活性化の試みがこの本にはたくさん紹介されている。たとえば地域SNSが次々につくられて数千人規模にまで成長したケース。誰もが講師になれる生涯学習プログラムの熱気。NPO法人が情報化の仕事を受注し地域コミュニティ内のSOHOが請け負う仕組みで事業を創出したケースなど。成功例または成功の兆しがたくさん解説されていた。

地域は信頼性の高い情報プラットフォームになる可能性を秘めている。国領二郎慶応大学教授の意見が引用されている。

「外部効果の強い、つまり貢献に対するリターンが外部に流出しやすく、参加の貢献のインセンティブが弱くなりやすいネット上の情報共有も、地域(物理的近接)のバインドのなかであればメリットを可視化、内部化しやすく、持続可能な誘因と貢献のモデルを構築しやすい」

住みやすく、働きやすく、かつ、特色ある地方をITで。

_ 3月24日は『SHUTDOWN DAY!』

3月24日はShutdown DayとしてPCの電気を切って過ごしましょうという提案。

普段、自宅にいる間はこたつの上にPCを置いているわけだが(で、向かいには妻のPCがある)、最近、こたつの上にメモが貼ってある。

日曜日はノーパソコンデー!!

というわけで、日曜日にPCをいじってたりすると 妻ににらまれるということで。

まあ、週に一度くらいPCを離れることは 家族の団らんやら、精神性の重視という点から有効かもしれない。

〆切直前だったりすると、ちと焦るんだけど。

_ u1hoshinoの日記 - Protocol Buffers

複数言語間で通信を行うチャネル...なのかな。

面白そうだが、詳細を調べてる時間(または、精神的余裕)がない。 後で。

_ [Ruby] On Ruby: Serial XRuby Interview: Episode I

Serial Interviewシリーズ。XRuby開発者編。

XRubyを作ってる人たちって中国人なんだねえ(アメリカ在住を含む)。 中国人によって開発されているオープンソースソフトウェアって あんまり知らないから(中国固有のソフトを除けばscimとstardictくらい?)、 そういう意味でも興味深い。

_ [Ruby] 404 Blog Not Found:ruby - var := 1 って my $var = 1; のこと?

弾さんによる「:=」へのツッコミ。

Rubyのsigilは(Perlと違って)スコープを表すのに面食らう

Perl出身の弾さんゆえ、Perlに親しんでおられるのはわかるが、 近代的言語においてsigilを採用するのであれば、 その示すべきものは絶対にデータタイプではない。 データタイプを表現するsigilなんてのは ユーザ定義データタイプを持たない旧式言語の名残でしかない。

Perlでさえ、Perl5以降はリファレンスの導入により ほとんどすべてのものをスカラで表現できるようになったので、 旧来のデータタイプsigilの役割はずいぶん下がっている。

myやvarを採用した方がRuby as Second Languageなユーザに優しい

myはともかくとして、varというのはひとつの有効な案であるとは認める。 しかし、互換性の観点からは、予約語を増やすことの弊害の方が大きいと考える。 とはいえ、ローカル変数のルールを変えてしまう時点で互換性も何もあったもんじゃないんだが。

それに明示的な「宣言」を避けるってのがRuby流だしね。

「:=」はPerl6でbinding operatorである
正直、Perl6(特に新しく導入された演算子)のことは知らんがな、という感じである。 いったいいくつあるんだか。優先順位レベルだけは少なくなってるらしいが。
「|foo|=1」はどうか
残念ながらブロックパラメータと重なる(文法的に矛盾する)ので、 採用できそうにない。それに醜いよ、いくらなんでも。

また、PoLSに言及しているのも減点。

Rubyに対する提案のうち、PoLSに言及したものの優先度は自動的に下がることに なっている。(私じゃない)誰かが自分のバックグラウンドと異なるという理由で どれだけ驚いても責任は持てない。 むしろ、PoLSへの言及を含む提案は 主観的な「私の思い通りじゃなきゃイヤ」という暗黙の主張を含んでいることが多く(弾さんがそうだって言ってるわけじゃないけど)、とにかく扱いにくいから。


2007年02月20日 [長年日記]

_ 天才になるのに遅すぎるということはない

若くて早熟で大胆な人も、大器晩成な人もいる、とういう話。

私はどっちかなあ。とはいえ、世の中にいるのはどちらにも属さない 「普通の人」が大部分なわけだが。

何かを達成した時点で、若いかそうでないかはさほど重要ではないように思う。 事実、若いけど硬直した考えの人も、年を取っていても柔軟な考えの人も知っている。

だとすると、重要なことはなにか。

個人的には、 「自らに枷をはめない(ブレーキをかけない)」ことと、 「巨人の肩に乗る(他人の成果を活かす)」ことではないかと思う。

「まだ私は経験が足りないから」も、 「もう新しいことを始めるには若くないから」も 言い訳であり、自分に対する枷である。


2007年02月21日 [長年日記]

_ [Ruby] Ruby Implementations Shootout: Ruby vs Yarv vs JRuby vs Gardens Point Ruby .NET vs Rubinius vs Cardina

最近出揃ってきたRubyの各種実装の比較。 当然ながらYARVが性能・実装レベル双方で圧勝。

ふふふっ、圧倒的じゃないか、我がYARVはっ

まあ、やったのは私じゃなくて、ささだくんなんだけど。 また、今後のJRuby/XRuby/Ruby.NETの追い上げも予想されるので、 この「天下」がいつまで維持できるかどうかもわからない。 継続的な精進が必要そうだ。

_ [Ruby] taw's blog: Making Ruby faster

小さな変更でどれくらいRuby 1.8を早くできるかという話。

具体的には

  • rb_call0(switchからもっとも頻繁なケースのifへ) - 効果あるの?
  • st_num_tableの分離(間接呼び出しの削除)
  • Fixnum比較の最適化(無駄なFIX2LONG()の削除) - 本家に取り込み

これで3%くらい速くなったとのこと。3%だとかなり誤差っぽいんだけど。

なお、st_num_tableをJudyで置き換える続編も出ている。 こちらは最大13%改善。

_ 10 Linux commands you've never used

あまり使われないLinuxコマンド。

  • pgrep
  • pstree
  • bc
  • split
  • nl
  • mkfifo
  • ldd
  • col
  • xmlwf
  • lsof

個人的にはgprep(とpkill)、bc、ldd、lsofくらいは割とよく使うけどな。 nlは「cat -n」を使うと思う。

_ [言語] Radium Software The Problem with C++

Technology Review: C++ は多くのプログラマから批評され,かつ憎まれておりながらも,同時に非常に広く用いられているという事実に関して,あなたでしたらどのような説明を行いますか?

Bjarne Stroustrup: ざっくり答えると,言語には次の2種類しか存在しないということです——皆が不満を顕にするものか,あるいは,誰も使いもしないものか,です。

「よく使われる言語に不満を述べる人は多い」のは事実だが、 「よく使われるが不満を述べる人はそれほどでもない」という 第三の言語もありそうな気がする。

たとえばRubyとか(笑

_ [言語] Lisp

Lispは宇宙の創造に使われた言語だった(?)。

くすくす。

_ [言語] バイナリフォーマット"BISON" - 概念実証が発表に

Binary JSON。ほんとにうれしいのだろうか。 誤差のない浮動小数点はうれしいだろうけど。

そういえばRubyのMarshalはバイナリだけど、 浮動小数点数についてはテキストだなあ。

_ [Ruby] String#scrape

scrAPIをStringクラスに組み込んじゃったら、という話。

XMLっぽいテキストから データを抽出するのがとても楽。少なくともそう見える。 こういうAPIは大好きだ。

scrAPIやXPath/XQueryみたいのがあるとXMLもいいか、 という気になるよね。もっとも、YAML/JSONとEnumerableメソッドの方が 便利なことも多いけど。

_ [言語] Scheme AA

個人的には爆笑した。


2007年02月22日 [長年日記]

_ [言語] ボーランド、RADスタイルのウェブ開発ツール「Delphi for PHP」を発表

「Delphi for PHP」なんて名前は形容矛盾じゃないかと一瞬思ったのだが、 よく考えてみたらかつてのDelphiに組み込まれていた言語はDelphi言語ではなく、 Object Pascal(の方言)だったということなのかもしれない。

しかし、Pascalの代わりにJavaを採用したものはJBuilderだったしなあ。

Delphi for PHPのコア部分はスペイン製らしい。

_ [Ruby] 実践『JavaからRubyへ以下略』Internal Edit. - Google Video

角谷さんのデブサミ講演を社内で再演したもの。 熱く語っている。

ところどころ「まつもとさんが〜」という言及があって恥ずかしい。

あと、武者修行メソッド重要。永和さんにはずいぶん助けてもらっている。 というか、NaClは万年人材不足なので、 我と思わん人の応募を待っている

_ [言語] 最速インターフェース研究会 :: 遅延評価を使ってSjaxをAjaxに変換する方法

Kahuaもこんな感じのようだが、 普通に手続きっぽくロジックを組むと、 非同期のイベントドリブンに動作してくれるというモデルにはあこがれを感じる。 あとはどこまで隠蔽できるかという点だ。

でも、Railsの隆盛を見ていると、 実はそんなことは問題じゃなかったりして。

_ [Ruby] 進化する“Webスクレイピング”技術の世界 − @IT

HpricotとWWW::Mechanizeを統合した scRUBYt!の紹介。

機能もString#scrapeもそうだけど、 だんだん面白いツールが出てきた。

なんとなく「知らなかっただけ」という気がしないでもないけど。

_ [Ruby] 合宿0日目

夕方からRuby開発合宿。本来は明日からのような気がするのだが、 せっかく集まったので(中田さんはまだ)。

今日の時点の参加者は

  • まつもと、前田(NaCl)
  • ささだくん
  • 中村(う)さん
  • 青木さん

で、今日は今後の方針について議論。重要な点は以下の通り。

  • 2007年クリスマスにリリースされるものは「1.9.1」
  • プライベートインスタンス変数、ローカル変数のスコープなどは1.9に含まれない。最近入れたものはrevert。
  • 2006年末の時点で1.9に含まれていた仕様は、ほぼそのまま1.9に残る。ただし、実際に使ってみて、影響が大きいもの、議論の余地があるものは戻すかも
  • 現時点では入っていないが、M17Nは(ようやく)1.9に入れる

さほど重要でない点。M17Nの細かな仕様など

  • システムコールなどは基本バイナリ。 Gtkなどの入力のエンコーディングは拡張側で対処(でないとバイナリ)
  • STDINのエンコーディングは環境変数を見て設定
  • 出力はエンコーディングを意識しない
  • バイナリ文字列リテラルが必要かも
  • indented here document。要らない? 削るのは、最初の行 or 一番浅い行 or 最後の行のインデントレベルまで?

2007年02月23日 [長年日記]

_ B・ゲイツ氏:「娘のコンピュータ使用時間は平日45分、週末1時間」

ふーん、そうなんだ。

うちは

  • PCはリビング。個室への移動は禁止
  • PC使用は親に優先権あり

くらいかな。PCが空いている限りは特に時間制限はしていないな。 もっとも子供たちの使用時間が1日45分をこえることは滅多になさそうだけど。 別にフィルタリングソフトとか入れていない。

_ ウィキペディア頼み、誤答続々 米大学が試験で引用禁止

大学の試験でWikipediaを丸写しして間違いが伝搬しちゃったという話。

まあ、習ってもいないことを裏も取らずにWikipediaからコピペしちゃうのも 大学生としてはどうかと思うけど。 それはそれとして、Wikipediaに限らず書籍とかでも間違いが伝搬することはあるんだけど、 そっちはどうでもいいんかね。誰もが一次情報にアクセスするわけじゃないんだから。 むしろ、大新聞社(特に朝日?)がWikipediaを特別扱いしているような雰囲気がある方が気になる。

そういえば、うちの中学生たちは先日のレポートにWikipediaを丸写ししていたが(Wikipediaって明記していたし、面白いので黙って見ていた)、先生はどう思ったんだろうか。

_ [Ruby] 合宿1日目

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)

という呼び出しに「引数の数が合わない」というエラーが出ないようにする 理屈付けが必要そうだ。

_ 誕生日

今日は中村うささんの誕生日であった。 そういえば私の父親も誕生日である。

「おめでとう、おじいちゃん」

イヤな顔をされた。実際、孫が11人もいるのに。 あれ? 12人だったか。


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歳の誕生日。もうそんなになるのか。


2007年02月25日 [長年日記]

_ [教会] 父親来襲

教会の用事があったので、父親が松江訪問。 聖餐会では孫娘(次女)の話をうれしそうに聞いていた。

聖餐会後、託児クラスのお手伝いに行ったのだが、 これは失敗だった。 末娘が離れなくなってしまって、 他の用事にさしつかえてしまった。 どこに行くにもくっついてきてしまって、弱った、弱った。

集会後は、今日も引き続き合宿で頑張ったメンバをお見送り。 東京組のみなさんはバスで無事に米子空港に向かった。

お疲れさま。

_ ものがたり

息子が「ものがたりを書く」という学校の宿題を頑張っていた。

「宝探し」という基本テーマが決まっていて、 後はそれにどう筋をつけるか、という宿題。

宝の地図を見つけた男の子と女の子が、 動物たちの見張りを知恵を絞ってかいくぐり、 無事宝箱を手に入れるというストーリー。 粗削りだが楽しいものであった。

が、終盤、突然主人公たちは手に入れた宝をお金に換え、 半分で新居を購入し、残りの半分は将来のリフォームのために貯金するのだそうだ。 家は古くなるものだから、だそうだ。

なんか急に現実的になるギャップがおかしくて大笑いしてしまった。

_ 誕生日

今日は次女の誕生日。13歳になった。 自分で自分のケーキを(姉と協力して)楽しそうに作っていた。 女の子らしい。


2007年02月26日 [長年日記]

_ ターボリナックス、自分のPC環境を携帯できるUSBデバイス「wizpy」を出荷開始

以前、この日記で話題にしたWizpyだが、とうとう出荷されたらしい。

で、話題にしたおかげか一台モニターとして送っていただいた(4Gモデル、白)。 さっそく起動してみる。

見かけは普通のメディアプレーヤーである。軽い。 オーディオサンプルとしてKDEの起動音が3種類(ogg)、 ビデオサンプルとして数分のaviファイルがついてくる。

USBでPCにつなぐと/dev/sda{1,2,3}として見える。 sda1(FAT)がメディアプレーヤーのデータ、 sda2(ext3)がLinuxのroot、sda3(ext3)がホームディレクトリになるようだ。

オーディオを試してみる。

手元のoggファイルを転送してみるが鳴らない。 サンプルはoggだったので、サポートしていないわけではないはず。 なにか制限があるのだろうか。今度は 手元のmp3ファイルをいくつか試してみたが、こちらは問題ないようだ。 ちゃんとID3も認識するようだ。添付のユーザーガイドには 歌詞も表示できると書いてあったが適当なデータが無いので試せず。

まあ、普通のプレイヤーだと思う。曲の中での早送りとかスキップとかはないが、 それほど困ることはないだろう。

次にビデオを試してみる。 どうもDivXをサポートしているようなので、mpeg4エンコーディングのaviファイルを いくつか試してみるが、全滅。エラーが表示される。 いろいろ試行錯誤してみたが、どうやら映像のサイズが正確に 160x128 でないと 表示できないようだ。この点、ユーザーガイドは不親切だ。

そこで、手元にあった動画をmencoderで変換する

mencoder -vf scale,expand=160:128 -zoom -xy 160 -o 出力.avi 入力ファイル

これで表示できる。 もしかしたら「-oac mp3lame」、「-ovc lavc」のいずれかまたは両方が必要かもしれない。 YouTubeからダウンロード(youtube-dl使用)してきたファイル とかなら問題なく表示できる。160x128というサイズなので 字幕とかの細部は見えないが、こんな小さい画面でそれを期待する方がおかしいだろう。 オーディオ同様、動画もスキップはできないのであまり長い動画再生には向かない。 ビデオ再生を止めてオーディオ再生してしまうと再生場所を覚えていてくれないので(仕方ないとは思うが)、映画とか見ようとすると、その間はずっとwizpyが占有されてしまう。

こんな画面で映画を観るか? と問われると、まあ、そうだよね、としか答えられないが。

その他にもFMラジオ機能とか録音機能とかもあるのだが、 当面使うことはなさそう。特にFMラジオは私のオフィスでは電波を拾えなかった。 あまり電波が強くないのか。

あと、UTF8のテキストデータの表示機能があるのは興味深い。 テストデータを見る限り、ちゃんとハングルなども表示できるようだ。 アラビア文字とかは試してないが、BiDiまでは期待できないだろう(読めないから確かめられないけど)。 対応していたらびっくりだ。

さて、全般にプレイヤーとして見る時には、ユーザガイドの不親切さが目につく(音楽データの転送方法すら書いてない)が、それはTurboLinuxがwizpyをあくまでも「持ち歩けるPC環境」として 捉えているからだろう。そりゃそうだ、単なるメディアプレーヤーとしてはちとお高い。

で、PCにつないでブートしてみる。 起動はさほど速くないが(遅いというわけではない、念のため)、 無事にTurboLinuxが起動する。 目新しいのはAtokがすぐに使えるようになっている点か。 Firefoxとかもすぐに動くし、 メディアプレイヤーやAcrobat Reader、OpenOffice.orgまでインストールされているので これがどこでも使えるというのはそれなりに便利な気がする。

Rubyも(PerlもPythonも)インストールされてるし。

メニューからターミナルが起動できないのはちょっと意外だった。 あくまでもWindowsっぽいデスクトップ環境を目指すってことなんだろうか。

後はローカルPC上のディスク領域を使うことができるMyPC機能とか、 有償(1年目は無料)のwizpy clubなるものが提供してくれるWebストレージとかも あるのだが、ここでは時間切れで試せず。

最後、もっとも意外だったのは、末娘(2歳)に オーディオプレイヤーが大ウケだったこと。 「おかあさんといっしょ」の曲を聞かせてやったら 手放さず、とうとう聞きながら眠ってしまった。

wizpyはお子様にも大人気だった、ということで。

_ [言語] プログラミング言語を作る/静的・バイトコード実行型言語を作る

前橋さんがまた新しい言語を作っている。 今度は静的型、バイトコードインタプリタ方式のもの。

この実行力はすばらしいなあ。

_ [言語] AFNIX programming language

新言語。

AFNIX is a multi-threaded functional programming language with dynamic symbol bindings that support the object oriented paradigm. The language features a state of the art runtime engine that supports both 32 and 64 bits platforms.

なのだそうだ。

なんかLispっぽいけど、一番外側の括弧が無かったり、 ところどころブレースを使っているところはJavaとかに日和ってるかも。

_ [OSS] IT業界地図を変えるオープンソース動向(1) - [オープンソース]All About

今年はオープンソーススタック元年になるだろうとの予測。

オープンソースの商用サポートサービスのビジネスチャンスは もうだいぶ前から存在しているが、SpikeSourceをはじめとする 「スタックサービス」が成功するかどうかはまだ断言できないと思う。 先日、直接SpikeSourceに行って、彼らのやっていることも聞いてきたし、 その(技術的)価値は大いに認めるものだが、 市場がそれを受け入れるかどうかは別の話だろう。

MySQLなどのように開発元と密着していない状態での 「スタックサービス」は技術的な点とは別に「顧客からの理解をどう得るか」とか、 「コミュニティとの距離をどう取るか」という課題がある。

簡単ではないが、ぜひ乗り越えてほしい。


2007年02月27日 [長年日記]

_ IT業界の“イジメ”の実態を紹介:ITpro

悲惨な話のオンパレード。

私が就職したばかりの十数年前にも似たような話を聞いたし、 それ以前にもひどい話はいろいろあったようだ。 上記の記事を読む限りでは現在もなくなっていないようだ。

しかし、不思議なことがある。 冷静に考えるとこのような状態は持続可能ではないように思うのだが、 実際にはそうではないようだ。

なぜ、このような「非人間的な扱い」に耐えられるのか。 愚痴をこぼして我慢してしまうのだろうか。 私だったら転職しちゃうけどなあ。

プログラマを人間扱いしない顧客・上司・経営陣を甘やかすとろくなことはない。 そんな連中には反旗を翻すべきだ。

_ 学生SNSのFacebookにSQL型APIが登場

FacebookのWeb APIにSQLっぽいインタフェースである Facebook Query Languageが提供されたという話。

考えてみれば、そういうデータ検索・取得にはSQLってのは良い選択だよね。

_ [OSS] 新しいオープンソース市場創出にはコミュニティを大切に--SRA OSS

SRA OSS。なぜアメリカに本社があるのか(こないだ訪問したんだけど)、 いまいち分からないんだけど、それはそれとして(少なくとも日本では)、 それなりに成果をあげている模様。

政府もOSSに本腰を入れている。ただ、まず官公庁で大規模システムを導入し、民間に裾野を広げようというような動きも見られるのも事実だ。石井氏は、「まずはコミュニティを大切にしてほしい。何といっても開発しているのはコミュニティのメンバーなのですから。税制であるとか、どのような形でもよいですから“政府がコミュニティを支援している”という実感があればますます市場は活性化するのではないでしょうか」と話している。

本当にそうだねえ。


2007年02月28日 [長年日記]

_ @nifty、時間軸に沿った情報を投稿・共有できる「@nifty Timeline β」

時間軸でまとめるという面白いサービス。@niftyから。

こいつはRuby on Railsで実装されており(表示部はflash)、 開発にはうち(NaCl*1)も協力した。

で、サンプルと言うかちょっと面白いタイムラインも登録してある。

なお、Timelineの開発そのものはNaClが行ったわけではなく、 あくまでも「技術協力」、「開発支援」および「共同開発」である。

*1  ところで、NaClを「なくる」と読む人があまりにも多い。その心は「塩化ナトリウム」なので是非「えぬえーしーえる」と発音していただきたい

_ [OSS] O'Reilly Radar > Is "Open Source" Now Completely Meaningless?

自社製品を「オープンソース」にもしていない企業が 堂々とオープンソース企業を名乗るのはどうよ、という話。

ちょっとフライング(ソースをちゃんとオープンソースにしている(アクセスしにくいけど)Vyattaまで、非難しちゃった)もあったけど、 おおむね同意する。

いや、マーケッターが単語をもてあそぶのは昔からだし、 絶対的に止める方法はないのだけれど、 少なくともオープンソースと言う単語が本来リーチするエンジニアには 実体のないオープンソースを見抜いて下手なマーケッターを見下すくらいの態度で いてほしいものだ。


最新 追記