Windows
MySQL
CentOS
SQLite3
SchemaSpy

schemaspyのER図で日本語テーブル名が化ける件

More than 1 year has passed since last update.

DBの定義書を自動でつくりたいよ。日本語でね。

日本語テーブル名?つかわないよ!
そんな人はスルーでお願いします…
でも、使いたくないけど、客先からの要望で…なんて人用。
ま、しょうがないですよね。自分もそうでした。

環境

  • schemaspy
  • graphviz
  • java8
  • DB(以下のものしか試してないです)
    • MySQL
    • SQLite3
  • DBのテーブル名はUTF-8で。(他の文字コードは試してないです)

とりあえず実行

ま、このへんはDBによってイロイロ。
ググればシングルバイトのテーブル名なら普通にできる設定はイッパイでてくる。
実行結果をみても、とりあえずgraphvizを使わない所は日本語で表示できてます。

java -jar ./schemaspy-6.0.0-rc1.jar -configFile path/to/config.file

問題はER図

config.fileの記述はDBのによっていろいろなんですが、公式サンプルみるとこんな感じ。

# type of database. Run with -dbhelp for details
schemaspy.t=mssql
# optional path to alternative jdbc drivers.
schemaspy.dp=path/to/drivers
# database properties: host, port number, name user, password
schemaspy.host=server
schemaspy.port=1433
schemaspy.db=db_name
schemaspy.u=database_user
schemaspy.p=database_password
# output dir to save generated files
schemaspy.o=path/to/output
# db scheme for which generate diagrams
schemaspy.s=dbo

ドキュメントのドコさがしてもフォント指定ないんですがgraphvizじたいはUTF-8に対応しているハズ。
なんですが、化けるのはなぜかとおもって出力フォルダをあさってみるとgraphviz用のdotファイルを発見。
主力フォルダ/diagramsの下の.dotファイルですね。
フォント指定がヨロシクナイ。

結論

schemaspyにわたすconfig.fileの設定に以下を追加。

schemaspy.font="日本語フォント名"

たぶん、起動引数に-font "フォント名"追加でも行けると思う。
フォント名は
windowsなら、"MS ゴシック"でも。
acrobatはいってれば"HeiseiKakuGo-W5"で、
どのOSでも日本語テーブル名でER図が出力されるかと思います。

ドキュメントにのってないんで、ソースから設定を見つけました。
なので、今後どうなるかわかりません。