.comment-link {margin-left:.6em;}

r-fukai's Diary ausf blogger

日曜日, 5月 31, 2009

MIDI Chord Helper

ZabadakのLiveで売っていた楽譜集のうちの一曲をGaragebandで打ち込んでみようと思いたったは良いが(いいのか?)、音楽は全て耳コピで過ごしてきた私は、キーだのコードだの言われてもよく判らない。
そこでGoogle先生に頼って見つけたのが以下のサイト。
http://www.yk.rim.or.jp/~kamide/music/chordhelper/
Javaで書かれたソフトウェアで、コード名が書かれたボタンを押すと音が鳴って鍵盤上でどれを押しているのかを教えてくれるという優れもの。科学技術の進歩は素敵だ。
んが、サイトにも書いてあることだけれども、Macでの動作は保証されておらず、単に実行しようとしてみても「バージョンが変だぞ」みたいな意味のExceptionをClassローダーが吐いて動いてくれない。
ソースコードも公開されているので、XCodeで動かしてみようと試みるも、なんかXCodeではJ2SE 5でコンパイルしようとして、件のソースはJ2SE 6で追加されたクラスをばりばりに使っているので一向にコンパイルが通らない。
ある程度まではJ2SE 5の機能で置き換えてみたが、java.awt.Desktopクラスなんてものは一体どうやればJ2SE 5で実装できるのか、とんと見当もつかぬ。
途方に暮れてApplication/ユーティリティーを眺めてみると、Java Preferencesなどというアプリケーションがあるではないか(なんで「システム環境設定」に置かないでこんなところにひっそりと置いてあるのか)。
実行してみると、Java Virtual Machineの優先順位なんてものがある。J2SE 6の項もしっかりあるが、最優先になっているのはJ2SE 5だ。J2SE 6の項には64bitとか書いてあってなんだか不安を誘うが、最優先の場所に移動する。
それで実行してみると……、実行できるではないか。これまでの苦労は一体なんだったのか。
最初はボタンを押しても音が鳴らないが、MIDI Device Connectionというボタンを押して現れるダイアログで、Java Sound Synthesizerのウインドウを作り、MIDI Chord Helper Appletに繋がっている線をそちらに切り替えれば音も鳴る。
そんなこんなで夜が明けた。毎週何をやっているのか。

ラベル: , ,

金曜日, 8月 03, 2007

私が、GPLが先進国-途上国間の搾取構造を持つと考える理由

某所での議論が長くなったので、エントリとして立てることにした。興味がない人は無視してください。

例えば、あるコードを書いて売ったら$10になるとします。実際には国や地域によってかなり変動があると思われますが、話を簡単にするために世界中どこでも$10だとしましょう。
アメリカ人でプログラマをやっているレベルの人間にとって、$10を寄付することは別にどうということはありません。日本人でもそうでしょう。しかし、富裕層に属さないインド人にとってはどうでしょうか? その他の途上国の人間にとっては?
GPLは、GPLに関わる限り、その$10のコードをGNUコミュニティに寄付することを強要します。$10を寄付することなどどうということのない先進国の人間は、GNUコミュニティに参加することでコミュニティにフィードバックし、自身もコミュニティからフィードバックを受けます(これはソフトウェアが利用できるかどうかという意味ではなく、プログラミング技術習得の話です)。
しかし、$10を寄付することが難しい途上国の人間は、脇から指をくわえて見ているか、身を切られるような$10を寄付してGNUコミュニティに参加するしか選択肢はありません(GPLのコードを眺めることさえ、訴訟リスクを考えると危険です)。
私はこの構造を指して「搾取」と呼びます。GNUプロジェクトを完全に無視すれば搾取構造に取り込まれることはありませんが、オープンソース文化にGNUプロジェクトはもうすでに深く食い込んでいて、無視し続けることは難しくなっていますし、BSDLなどのより自由なライセンスで公開されたコードも、GNUプロジェクトの人間の手が加わることでGPLに汚染されてしまいます。
GPLは世界中すべての人間を公平に扱うがゆえに、いわゆる「フェアトレード」にならない、すなわち搾取構造を形成していると私は主張しています。現在の世界は「効果範囲が限定的であっても、すべての人間を公平に扱えば良い方向に進める」などという理想的状況からは程遠い状態にあると私は認識しています。むしろ、効果範囲を限定せざるを得ないのであれば、やらない方がマシでしょう。全ての人間に自分の理想を押し付けたいのならば、まずは世界を理想的状況に近づけることから始めるべきだと私は思います。
途上国プログラマの収入等の具体的ソースを示さなければ納得しない、というのであれば、納得しなくていいです。むしろ、「途上国のプログラマは先進国のプログラマと比較しても遜色ない収入を得ているのだから、この問題提起は無意味だ」という主張をしたいのであれば、その事実を示していただきたい(そんなことはおそらくありえないと私は思います)。

参考その1:GNUプロジェクトを批判している人。リンク先の/.-Jの議論も興味深い。GPLはそもそもの性質(不可逆性)からして搾取的であるという指摘と、GNUは宗教であるという考察。
http://www.flcl.org/~yoh/diary/20051227.html
参考その2:SUNのJ・シュワルツによるGPL批判(あまり額面通りには受け取れないが)
http://japan.cnet.com/news/ent/story/0,2000056022,20082423,00.htm

ラベル: , ,

プログラマという職業の定義

http://anond.hatelabo.jp/20070801204512
http://anond.hatelabo.jp/20070802021749
お役所(労働基準監督署)の定義では
プログラマ=詳細仕様をコードに落とす作業しかしない人。つまり設計はしない人。
システムエンジニア=要求仕様から詳細仕様までを作る人。コードを書いてもいい。つまり設計をする人。
となっております。この定義に則って、適用される労働基準が色々と違うのでしょう。おそらくプログラマは単純労働者扱いだと思う。
場所によっては、上の定義のプログラマのことはコーダと呼びますね。
私の名刺にはプログラマーと書いてありますが(ここだけ最後の"ー"があるのは、名刺の記述がそうだから)、労働基準監督署が来た時にはSEと名乗るようにとお達しが出ました。実際、書類を作らないだけで仕様から作ってるし。
ちなみに私の隣の席には東大卒の人が座ってますが、彼が実装する機能はまるで魔法のようでございます。
まぁ、専門学校卒でも魔法のようなプログラムを書く人はごろごろいるわけですけどね。

ラベル:

木曜日, 9月 21, 2006

「他人を信用しない態度」と言ってしまうと角が立つので

http://www.page.sannet.ne.jp/hirasho/diary/diary0609.html#21p1
「他人が完璧であることを期待しない態度」と言い換えてみるのはどうか。
コンピュータというのは融通が利かないので、コードに書いてあることしか実行しないし、コードに書いてあることは全て実行する。
つまり、コンピュータに完璧に動いて欲しいのならば、コードが完璧でなければならない。
しかしながら、人間が完璧であることなどあり得ないのだから、完璧でない人間が書いたコードもしばしば完璧ではなくなるし、完璧を期するためには、しばしば多大な労力を必要とする。
人間は誰しも完璧ではないのだから、完璧ではない人が書いたコードでも危険な状態に陥ることがなるべく少なくなるように、不必要な部分にははじめから触ることができないようにする。リンク先で言っていることは要するにこういうことではないか。
オブジェクト指向に限らず、コンピュータプログラミング関連技術というのはこういう思想に則って発展してきたものだと私は考えている。

ラベル: ,