初めてIntelliJに触れる人へ − Javadocの日本語化

File -> Project Structure -> SDKs -> 任意のJDK -> Documentation Paths にJavadocを指定するんだけど,EUC-JPな日本語Javadocを指定しても文字化けするだけなので,Eclipseみたくmergedocで日本語化したsrc.zipを使うのが通例。下図がその設定画面。


JDKのupdateが出るたびにsrc.zip再生成するのが面倒で,しばらく英語版のまま使ってたんだけど,思うところあって仕組みを整理してみたよ。


ちなみに,IntelliJJavadocポップアップは,あまりスタイリッシュじゃない。さらに文字化けするとゲンナリ度がUPする。ついで言うと,EclipseNetBeansみたいなJavadocプレビューウィンドウなんて無いから,探すだけ無駄だよ。
こんな感じで,がっかりしていいレベルにかっこ悪い。


経験則から,SDKに指定したJavadocは元のコンテンツのエンコードに関係無く,プラットフォームエンコードで解釈しようとするみたい。つまり,Windowsだったら,MS932(Windows-31J)なJavadocを用意すればすべて解決する。と言うことに今さら気付いたので,も一歩ふんばって,実際に用意してみた。
その際に使ったGroovyスクリプトはこんなやつ。

new File("./source").eachFileRecurse { File f ->
  def dist = new File(f.path.replace('.\\source', '.\\dist'))
  if (f.isDirectory()) {
    println "mkdir $dist"
    dist.mkdir()
  }
  if (f.path =~ /\.html$/) {
    dist.withWriter("MS932") { Writer w ->
      f.newReader("EUC_JP").readLines().each { String line ->
        w.println line.replace("charset=euc-jp", "charset=Windows-31J")
      }
    }
  }
}


元にしたJavadocは,ここのを利用しました(なんとまあタイムリーな話だ)。
http://blogs.sun.com/katakai/entry/java_6_api_doc_updated


出来上がった,MS932版Javadocを指定してみたら,ほらご覧の通り。なんか知んないけど,フォントが小さくなっとる。副作用バンザイ。:-D


Javadocを直接直しちゃうから,updateのたびにmergedocでsrc.zip作り直す必要もない。...こんな,ほんのちょっとの手間で解決するんだったら,とっととやっとくんだった。:-(


ついでだから,mergedoc版も説明しとく。mergedocで作るsrc.zipのエンコードはプラットフォームエンコードが望ましい(正確には,IDE Encodingで指定したもの)。とりあえず,WindowsだったらMS932にしとくのが無難。


IDEA8からプロジェクトごとにファイルエンコードが指定できるようになったんだけど,エンコードごとにmergedocでsrc.zip用意するのも面倒なので,IDE Encodingはにしとく。下記の例では,プロジェクトエンコードは "UTF-8" にしている。
#File -> Settings -> File Encodings -> IDE Encoding


だた,こんだけだとコンパイルすると「ソースにMS932で解釈できない文字あるんだけど?」言われるので,Java Compilerにオプション "-encoding UTF-8" を設定する。
#File -> Settings -> Compiler -> Java Compiler -> Additional command line parameters


ちょっとダサい。それと,src.zipを日本語化すると,こんな感じにポップアップしてた(見ての通りかこわるい)。なにがどうして,さっきみたいにフォントが小さくなったのか理由がわからん。