Eclipse 3.5 + Ant + Javadoc 文字化け、コンソール停止(最終章)

[2010/4/2 追記] Pleiades (プレアデス) Eclipse プラグイン日本語化プラグイン版の Eclipse 3.5 での解決方法
Pleiades Eclipse 3.5 + Ant + Javadoc コンソール停止問題の解決

Eclipse の ant で、Javadoc タスクを実行すると、Javadoc 出力が途中で止まってしまうか、文字化けしてしまう問題との戦いの最終章「解決編」です!

以下二つのエントリーのおさらい

以前の前提条件は以下

  • Windows XP SP3
  • Eclipse 3.4.2 build M20090211-1700
  • Eclipse 内蔵 ant
  • jdk1.6.0_13 javadoc

実行すると

javadoc:
[javadoc] Generating Javadoc
[javadoc] Javadoc execution

と表示されて止まっている。

これの解決策はコンソールのエンコーディングで Other を選び Windows-31J を選択すればOKだった。
または、コンソールのエンコーディングが”Default – inherited” であれば、build.xml の encoding=”” を Windows-31J にすることで自動的に Windows-31J にもなり正常に動作する。
Eclipse 3.4.x あたりは 「[Eclipse][Pleiades] Ant のコンソール・エンコーディング」(cypher256さん、C/pHeR Memo – Java とか。Eclipse とか。)に詳しく書いてある。

しかし、Eclipse 3.5 (Galileo) ではこれでも上手くいかない。
エンコーディングを UTF-8 にすると、とりあえず最後まで動作するも、Javadoc の出力は文字化けする。
これは、Windows マシンのため、Javadoc.exe が Windows-31J でメッセージを出力するからと思われる。

今回はこれの解決方法を示したい。(前置きが長いねcoldsweats01

で、いきなり結論!!

Javadoc タスクに additionalparam=”-J-Dfile.encoding=UTF-8″ を追加した。例えば下のような感じ。
(追記)ただしオープンソースにするなど広く公開する場合には適切でない

<javadoc
	destdir="javadoc"
	encoding="Windows-31J"
	docencoding="Windows-31J"
	charset="Shift_JIS"
	source="1.5"
	verbose="true"
       	doctitle="doctitle"
	use="false"
	sourcepath="src"
	additionalparam="-J-Dfile.encoding=UTF-8"
>

念のため今回の環境は以下

  • Windows XP SP3
  • Eclipse 3.5.2 build M20100211-1343 (eclipse-jee-galileo-SR2-win32.zip)
  • Eclipse 内蔵 ant
  • jdk1.6.0_18 javadoc

build.xml の Ran AS → Ant Build… の Common タブで設定するコンソールのエンコーディングは UTF-8 とすること。

デフォルトでUTF-8の場合
デフォルトでUTF-8の場合
デフォルトを変更してUTF-8にする場合
デフォルトを変更してUTF-8にする場合

Javadoc 以外に途中で止まるとか真っ白となる場合には、そのプロラムが UTF-8 以外のエンコーディングで文字出力しているためと思われます。この場合にはそのプログラムに対して UTF-8 で出力する方法を探すとか、環境変数で日本語とならないように制御するなどの方法を探すしかないようです。

といろいろ書きましたが実は最近は使っていませんでした。
サーバで ant や Maven、Hudson を使うようになると、この問題はあまり関係なくなるんですよね。
とはいえ、つっかえていたものが取れたので良しとしよう。

(完)

最近のmixiアプリ仕様について

PV単価変更をはじめ mixiも試行錯誤をしているようで、最近いろいろと変更があったのでちょっと取り上げてみました。

2010.03.09 プロフィール情報取得APIに関する追加項目のお知らせ

ユーザのプロフィール情報を取得するためのPeople APIについて、ユーザハッシュ(userHash)という項目を新規に追加いたしました。この項目は、fieldsパラメータに”userHash”を指定することで取得可能です。このユーザハッシュを利用することで、例えば入退会を繰り返すことで不正に招待インセンティブを得るような行為を行っているユーザを検出する、といった用途にご利用可能です。

不正対応などいろいろ頑張っているようですね。JavaScript部分は改ざんもできるためRESTful API仕様となっているようです。

2010.03.10 mixiアプリモバイル向けコンテンツ配信サーバー提供開始のお知らせ

本日より、mixiアプリモバイル向けに、コンテンツ配信サーバーの提供を開始いたしましたので、お知らせいたします。
mixiアプリモバイル版では、ユーザに見せるページの中で画像やFlashなどの静的ファイルが数多く利用されます。それらの静的ファイルは、多くのユーザの携帯端末から多くのアクセスを受けます。コンテンツ配信サーバーを利用することで、レスポンス良くmixiアプリモバイルに提供することが可能となります。

開発者サーバの負荷を下げるとともに、mixiアプリがより快適に使えるようにとの配慮でしょう。
無償で提供され、コンテンツの更新はWebDAVで行うという比較的自由度の高いサービですね。
ただ、動作は保証しない的なニュアンスの規定があるようですし、開発側としては URL を分ける必要がありそうで、やや面倒そうです。利用は進むでしょうか?

本日の DeNA Technology Seminar #1 でmixiの山下さんもどんどん利用してくださいとおっしゃていました。

2010.03.12 mixiアプリモバイルのjoin停止解除自動化について

mixiアプリモバイルのjoin停止解除のルールについて、変更いたしましたので、お知らせします。

mixiアプリモバイルでは、SAPサーバのタイムアウトが一定以上発生した場合に新規ユーザのアプリ登録が制限(join停止)される仕様となっています。

これまでは、この制限を解除するためにSAPの皆様に対策完了のご連絡をいただき、弊社確認後に制限解除を行っていましたが、本日より制限解除の可否を自動的にシステム判定する方式に変更させていただきました。タイムアウトが一定水準以下に下がりますと自動的に制限が解除されます。

これの自動化は両者にとって効率化になり良いとは思いますが、対応を行う気がないSAPの場合にはそれなりにペナルティーを考えた方が良いと思います。

2010.03.15 Activity APIの仕様変更に関するお知らせ

Activity APIの仕様変更に関するお知らせ(詳細仕様)
今までご提供してきた機能として、mixiアプリからAPIを利用して投稿されたアクティビティフィードは、投稿ユーザのマイミクシィのhome.plページ(ログイン後のトップページ)に掲載されていました。投稿時の制限(1分に1回まで、単位時間内で最後の投稿が表示される、など)が行われていましたが、基本的に全ての投稿内容がユーザの目に触れる状態となっていました。
今回の仕様変更に伴い、アクティビティフィードを以下の2種類に分割いたします。

種類 投稿条件 表示場所
アクティビティフィード 従来と同様 new_appli.pl
list_appli_activity.pl
コミュニケーションフィード ユーザが明示的に投稿を許可した場合にのみ投稿される home.pl
new_appli.pl
list_appli_activity.pl

アクティビティはSPAMチックになりがちなのでいろいろ制限が出てくるのは致し方ないと思います。

非公式ニュース

  • 近々mixiアプリモバイルをPCから動作確認できるように準備中
  • OpenSocial 0.9, 1.0 への対応準備中