読者です 読者をやめる 読者になる 読者になる

MavenにおけるISO-8859-1阻止祭りに感じる違和感

maven 雑記 AKY

http://d.hatena.ne.jp/kkawa/20080425/p1

最初に言っちゃいますが、僕はMavenユーザーではありません。それからJavaのRuntimeについての詳しい仕様に関してはまったくの無知とほぼ等価です。ただ、ネットイナゴよろしく、日本人だらけのコメントと、その論調を見ているとどうしようもなく違和感を感じていたので、AKYで行きたいと思います。

この提案の目的って何だっけ?

すいません。Mavenの提案をもう一度見直してみてください。

Mavenの各Pluginごとにソースのエンコードを指定するのって面倒だよね。
じゃ、Pluginごとのソースのを統一するためのプロパティを一個追加しておいて、
各Pluginはこの設定をデフォルトのソースエンコーディングとして参照できるようにしようか。
そして、今んところ各PluginでデフォルトのエンコーディングとしてISO-8859-1を指定しているものも多いみたいだし、
とりあえずISO-8859-1をデフォルトにしてみようか。

って僕の拙い英文読解力は読み取ったんす。間違った解釈ですかね。

pom.xmlを書いていたのは2年くらい前なので、すっかり忘れているので、試しにSeasar2のpom.xmlを覗いてみたんです。たしかにソースのエンコード指定のUTF-8が点在しているのが見受けられますね。「あー、メンドッチー」じゃないでしょうか。これ一括で指定できないの?何で?って思いませんか?とりあえず、ISO-8859-1をデフォルトとして指定されているPluginも既にあるわけですよ。少なくとも現行でもそいつはエンコードを指定しないと動かせないわけです。この提案が通れば、一ヶ所エンコードを指定すればすべてのPluginに設定する必要がなくなりますよね。

じゃUTF-8をデフォルトにすれば解決すんの?

少なくともソースのエンコーディングにUTF-8を使っているプロジェクトの場合、システムエンコーディングがUTF-8のプラットフォームってモダンなLinuxくらいだったりするから、Seasar2プロジェクトのようにどのプラットフォームにも依存しないようにUTF-8をpom.xmlに指定しておいてあるんじゃないですかね。
あー、そういえばできる限りMavenプロジェクトの移植性を高めたいということもこの提案の目的の一つだった気がするんす。UTF-8ってどの環境のJDKでも必ずサポートされているんですかね。リソースの少ない組み込み系Javaのランタイム環境でも必須なんすかね。あー、考慮しないといけないのは開発の方であって、クラスを実行する環境(ランタイム)じゃないから関係ないのか。

で、どんなプロジェクトに影響があるんだろ。

なんとなーく被害を被ると想像したのは、ソースのエンコーディングについて特に考えていなくて、プロジェクトの開発環境のポータビリティ(どんなOSでも開発できるよ!って意味でのポータビリティ)についても考えていない環境ではなかろうかと思うんですよ。そういうちょっとバランスの悪い環境でもMavenって使われてるのかなー、と。

どっちにしろ思うのは

他のアジア圏のMavenユーザーの声を聞いてみたいですね。僕はMavenユーザーではないですが、自分の管理しているEclipseのPlugin開発プロジェクトではエンコードを指定するように気をつけてます。いろんな環境で開発したいので。だからいっそのことエンコード指定を必須にしてしまえ!という案には結構賛成です。そうするとMavenのハードルをさらに上げる気もしますが、最初にMavenプロジェクト作るときのコマンドで、pom.xmlエンコード指定がさりげなくされた状態になっててくれればいいんじゃないかと思うんですが、どうすかね。あ、でも既存のプロジェクトで困るプロジェクトが結構ありそうだというのがこの祭りの発端か。じゃ、Maven3にてこの提案が採用!とかだったら既存のプロジェクトには影響なさそうですね。