«前の日(10-05) 最新 次の日(10-07)» 追記

Matzにっき


2003年10月06日

_ [OSS]ソフトウェアエンジニアのオープンソースへの相反する感情

梅田望夫・英語で読むITトレンドから。

私だって、オープンソースに対して複雑な思いがあるのは事実だが、とはいえ、 この「相反する感情」はちょっと浅い。

まあ、元になっている記事がJames Goslingの記事だから無理もない。 彼は自分が改造したEmacsの権利をUnipressに売り渡してしまい、 Richard StallmanがEmacsをスクラッチから書き直さざるをえない原因を作り、 Stallmanにフリーソフトウェアにおける権利の重要性を認識させた張本人だからだ。 GoslingなかりせばGPLは生まれなかったかもしれない。

そのGoslingがオープンソースに対して「I'm a big fan」というのは、少々皮肉だ。

彼の言葉を簡単にまとめると 「ソフトウェアを無料で配ってしまえばどうやって、金を得るの?」 ということだ。

だが、 実際にオープンソースソフトウェアを開発することで生活している私にとっては、 答えは別に「相反する感情」でもなんでもない、 「他のソフトウェア開発者とおんなじように」である。

最初の疑問には暗黙の前提がある。「無料で配布されているソフトウェアからは収入を得ることができない」 というものだ。過去においては確かにそうだった。しかし、現在ではこれはもうあてはまらない。

私はソフトウェアを開発している。私のソフトウェアには価値がある。 それがたとえ無料で配布されていても。 価値があるソフトウェアには、それからお金を生む方法がある。

私のソフトウェアに価値があり、それからお金を生む方法があるならば、 無料で配布されているかどうかに関係なく、それから収入を得ることができる。 なにもソフトウェアをシュリンクパッケージで販売しなくても、 ソフトウェアビジネスはできるのだ。というか、もはやシュリンクパッケージビジネスができるのは マイクロソフトなど限られたビッグプレイヤーだけだろう。

ソフトウェアビジネスのほとんどのプレイヤーはソリューションを提供する。 オープンソースソフトウェアはそのコンポーネントである。 彼らにとって、そのコンポーネントが存在し続けることは価値があり、 開発を支援することには意味がある。

もちろん問題はまだ残っている。 オープンソースソフトウェアから利益を得ている人々から開発者へ 還元するチャネルが狭い(あるいは無い)こととか、 オープンソースビジネスはまだまだ脆弱なこととか。

しかし、梅田氏の言うようなNPOに限定しなくても、あらゆる企業組織で オープンソースソフトウェアが開発され、支援される時代がもう近い、 あるいはすでに来ている、と私なんかは思うのだった。

だから、Mitch KaporのNPOを強調し過ぎるのはあまり適切ではないかもしれない。 彼の仕事は、個別の企業で行われていること、あるいは行われえることの「アウトソーシング」である。 受益者から開発者へのチャネルの強化という点での意義は大きいが、 「NPOだからできること」というわけではない。


2004年10月06日

_ [Ruby]Rubyの教科書

某大学に通う弟からメールが届いた。 彼の大学の後期の教科書のリストにRuby関連の本が大量に選定されているらしい。

どうやらRubyでプログラミング入門を教える先生がいるということのようだ。 弟はその授業を受けないようだが、これでまた一歩野望に近づいた、な。

_ [Ruby]コーディングスタンダード

社内メーリングリストでRubyのコーディングスタンダードの話題が持ち上がる。 個人的には「自分で勝手に決めて」という感じなのだが、 まあ、私のスタイルを参考にしたい人もいるだろうということで、 まとめてみた。

その転載。

  • ローカル変数名はすべて小文字。単語の区切りは"_"。
  • インスタンス変数名は(先頭の"@"以外は)すべて小文字。
  • クラス名、モジュール名は、先頭は大文字、続 く単語も先頭の文字を大文字に(つまりCamelCaseStyle)。
  • クラス・モジュール以外の定数は全部大文字。単語の区切りは"_"。
  • メソッド名は一部の例外を除きすべて小文字。
  • 述語メソッド(真偽値を返すメソッド)には末尾に"?"をつける。
  • "!"をつけるようなメソッドはなるたけ作らない。
  • ライブラリファイル名はそのファイルが提供するクラス名・メ ソッド名を小文字化したもの(もしあれば)。そのような「名前」 はできるだけ一単語のものを用いる。
  • モジュールをネストする時には'foo/bar'のような形にディレ クトリを分ける。
  • 真偽値の判定には"== true"という判定を行わない。なぜなら Rubyではtrueは唯一の真値ではないから。
  • メソッド名とメソッド引数のまわりの括弧の間に空白を置かな い。なぜなら警告されるから。
  • 演算子の両側に空白をいれる。または両側に空白をいれない。 当たり前。
  • kind_of?やisa?を使わない。DuckTyping推奨。
  • ライブラリファイルの末尾には if __FILE__ == $0 で囲んで テストケース(かサンプルプログラム)を書いておくとよい。
  • 他人が使うRubyプログラムにはRDocコメントをつけておく(と 良いと思うが、自分ではなかなかできてない)。
  • インデントは2。なぜなら空間効率が高いから。
  • 自明なことはコメントしない。なぜなら本当に大切なコメント が埋没してしまうから。
  • 「未来の自分が混乱しそう」と思ったことは躊躇せずコメント する。そうでなければコメントはあまり必要ない。
  • 「本当に必要だ」と感じた時以外はメソッドは20行以内に抑え る(数はどうでもよい、目安に過ぎない)。例外は巨大なcase文 を含むディスパッチコードくらいか。
  • 共通機能部分はモジュールにくくり出す。

お役に立つか、立たないか。ご参考までに。

追記

もう一つ参考に。うちの会社で使っている規約を紹介しておきます。こっちの方が具体的かな。


2005年10月06日

_ 高橋メソッド & もんたメソッド internationalized

Pugsの天才開発者として知られるAutrijus Tangも高橋メソッドを使ったとか。

海外で認知されるようになった日本発のプログラミング言語の周辺から、 海外で認知されるような日本発のプレゼンテーション技法が誕生したということは よろこばしいことなのかもしれない。

来年あたり高橋さんは海外のイベントから招待されるかもしれない。

_ [Ruby] RubyConf2005Facebook

Ruby Conference 2005に参加する人は顔写真を貼ろう、というページ。

初めてみる顔も結構ある。って、今年は例年をはるかに上回る200人近い参加があるんだから、 当り前といえば当り前だな。

うーん、キーノートやらラウンドテーブルやらなんにも準備してないぞ。 まあ、重要なところは「尊師」笹田くんにお願いしよう、そうしよう。

_ ゲーム専門学校の実態

『コミックビーム』のコピーなので黒いのだが、その内容に動かされたので。

「最近の若い者は」なんていうつもりはないんだけど、 豊かな環境では一握りの成功者と大多数の無気力な人間を生んでしまうものなのかもしれない。 ローマはそれで滅びたか。我々の文明もそれで滅びるのか。

うちの子にも読ませてみよう。


2006年10月06日

_ OSM休刊

「オープンソースマガジン休刊」との情報を受ける。なんと。

雑誌は冬の時代なんだろうか。 オープンソースマガジンは売り上げはちゃんと回ってたと聞いてたけどな。 「上の方針」という奴なんだろうか。

まあ、Webでどんどん情報が入ってきちゃうしねえ。 とはいえ、紙の情報はいろんな意味で価値があるんだけど、 自腹ではあまり雑誌を買うことがなくなった私は、 そういう「文化」を保存するだけのコストを負担していないわけだから、 文句を言う権利はないのかな。

ともあれ、連載がひとつ終ってしまうというのは厳然たる事実だ。 〆切が減るのは嬉しいが、仕事が減って、収入が下がるのは嬉しくない。 書き下ろしとかなかなか書けない私にとって、雑誌は

  • 適度な分量
  • 適度な収入
  • 〆切による動機づけ

で、ちょうど良かったんだけどな。

Linux Magazineといい、オープンソースマガジンといい、 私の連載を載せてくれるような雑誌は「大衆ウケ」は悪いのかもしれない。

「ハッカーズライフ」のようなスタイルで(そうでなくてもいいけど)、 私の連載を載せたいという雑誌編集者の方はいらっしゃいませんか。

関連リンク

_ 健康診断

7月頃から約束を取っては、忘れてすっぽかしたり、うっかり朝食を食べてしまったりして 受けられていなかった健康診断をやっと受ける。

視力検査、聴力検査、身長・体重計測、心電図、血液検査、胸部および胃X線。 これだけで疲れちゃうよ。

バリウムは飲みにくいという人もいるようだけど、 私はそれは苦痛ではない。でも、下から出ていく方は、ちょっと、ねえ。


2007年10月06日

_ [Ruby] Giles Bowkett: What I Learned From X That Made Me A Better Programmer In Y

「Xから学んだことがより良いYプログラマーになるため役立ったこと」。 で、XとYにいろんなものを入れる、という話。

で、YにRubyを含むものと言えば

X = LSD; Y = Ruby metaprogramming
Sometimes things which seem to make you smarter really do.
X = marijuana; Y = Ruby metaprogramming
Sometimes things which seem to make you deep really make you silly.

なんだか麻薬ばっかり。そんなに常習性があったかしら。


2008年10月06日

_ [Ruby] ragelとdcgとパターンマッチと〜社内勉強会ログ〜

これだけ人材がいるのに積極的に情報交換しないのは もったいなくないか、ということで社内勉強会。

家庭の事情で先に帰ってしまったのだが、それなりに有意義であった。

「正規表現よりこっち」とか「リテラルが〜」とか「Prologサイコー」とか、 本質的でない発言に惑わされそうだったが、 よーく考えてみると、Ragelのようなのが標準ライブラリとしてついてきたら、 JSONとかYAMLみたいな構文解析系は楽勝で書けるようになるし、 それはそれで新しい世界が広がるのではないか。

たとえば

class HttpParser < Ragel::Base
  rules <<-END
     main := Request_Line @done;
     ....
  END
  def initialize
     ....
  end
  def action_done
     ....
  end
end

parser = HttpParser.new

というようなAPIであれば、どうだろう?

ヒアドキュメントがちょっと美しくないけど、 Raccよりシームレスな感じで使いやすいんじゃないだろうか。

誰かチャレンジしない?


«前の日(10-05) 最新 次の日(10-07)» 追記