損得計算のできない人たち

JDK6では、一部の非ポータブルなcom.sun.* APIを使っていると次のような警告が出る。


/home/kohsuke/ws/hudson/hudson/main/core/src/main/java/hudson/security/LDAPSecurityRealm.java:26: warning: com.sun.jndi.ldap.LdapCtxFactory is Sun proprietary API and may be removed in a future release
import com.sun.jndi.ldap.LdapCtxFactory;
^
/home/kohsuke/ws/hudson/hudson/main/core/src/main/java/hudson/security/LDAPSecurityRealm.java:26: warning: com.sun.jndi.ldap.LdapCtxFactory is Sun proprietary API and may be removed in a future release
import com.sun.jndi.ldap.LdapCtxFactory;
^
/home/kohsuke/ws/hudson/hudson/main/core/src/main/java/hudson/security/LDAPSecurityRealm.java:307: warning: com.sun.jndi.ldap.LdapCtxFactory is Sun proprietary API and may be removed in a future release
DirContext ctx = LdapCtxFactory.getLdapCtxInstance(getServerUrl()+'/', props);
^
/home/kohsuke/ws/hudson/hudson/main/core/src/main/java/hudson/security/LDAPSecurityRealm.java:499: warning: com.sun.jndi.ldap.LdapCtxFactory is Sun proprietary API and may be removed in a future release
DirContext ctx = LdapCtxFactory.getLdapCtxInstance(addPrefix(server)+'/', props);
^

意図せざる利用の時には役立つ警告だが、わかっていて使っている時には警告を抑制する手段が欲しい。これがbug 6476630の要望なのだが、コンパイラの担当者は「これらのAPIは使わないでください。従って、警告を抑制する手段は提供しません」といってこれを修正しないことにしてしまった。リンクをクリックすると、ユーザーからのコメントが色々ついている。このようなAPIをユーザーが使うべきか否かの議論は置くとしても、どうしてこのコンパイラの担当者は損得計算が下手なんだろうと思ってしまう。


というのは、この要望を見た時に、彼には2つの選択肢があったはずである。


1つ目は、警告を抑制するのが望ましいとは思わないけれども、要望なので実装してあげるという方針。ユーザーは喜ぶ。万が一、後でユーザーが痛い目にあった場合には、「だから警告を出してあげたのにわざわざ抑制したのはあなたでしょ」といえば済む話。第二の選択肢は、ユーザーはこのAPIを使うべきではないと思うので、要望を断るという方針。ユーザーには恨まれる。というわけで、どう考えても前者の方が合理的な選択だと思うのに。


Sunは特にこういうのが好きなのか、(/procから見えてしまうので)「パスワードをコマンドラインで渡すオプションは作ってはいけない」みたいな規則もある。なので、GlassFishでは「asadmin create-domain --username=kohsuke --password=foobar」とやると、丁寧に「--passwordオプションはinsecureなので--passwordfileオプションを使ってください」と言われる。これも上と似たような阿呆らしさがあり、しかもこの場合、もう--passwordオプションでプロセスを起動しちゃっているのでinsecureという意味では後の祭りである。パスワードも8文字以上にしないと許してくれない。このラップトップはマルチユーザーじゃないから追加のパスワードなんかいらないのだが。


僕が特にへそ曲がりだからかも知れないが、この手の「これはおまえのためなんだ」的おしつけ善意は実際以上に煩わしく感じられる。「私の知ってる姓名判断によるとその名前は良くないから今度の子供には違う名前を考えた方がいいわよ」とか「酒を飲む度に『アルコールは体に良くないからやめたほうがいいよ』と言われる」みたいな。