LoginSignup
8
5

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-08-18

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

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

環境

  • schemaspy
  • graphviz
  • java8
  • DB(以下のものしか試してないです)
    • MySQL
    • SQLite3
  • docker用意しました。
  • DB毎に接続用のJDBCドライバを用意
    • dockerの/driversフォルダの下へJDBCドライバをマウント
  • DBのテーブル名はUTF-8で。(他の文字コードは試してないです)

とりあえず実行

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

docker-compose.yml
version: "3"
services:
  schemaspy_jp:
      image: "coneyware/schemaspy_jp"
      container_name: "schemaspy_jp"
      hostname: "schemaspy"
      # ホストのネットワークに接続
      network_mode: "host"
      volumes:
          - "path/to/output:/output"
          - "path/to/drivers:/drivers"
          - "path/to/schemaspy.properties:/schemaspy.properties"

問題はER図

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

# type of database. Run with -dbhelp for details
schemaspy.t=mssql
# optional path to alternative jdbc drivers.
# dockerの/driversフォルダ。docker起動設定で好みのフォルダにマウントすればOK
# schemaspy.dp=path/to/drivers
# database properties: host, port number, name user, password
schemaspy.host=server
schemaspy.port=1433
schemaspy.db=db_name
# db scheme for which generate diagrams
# schema設定、mysqlだとdbと同じで良さげ
schemaspy.s=db_name
schemaspy.u=database_user
schemaspy.p=database_password
# output dir to save generated files
# dockerの/outputフォルダ。docker起動設定で好みのフォルダにマウントすればOK
# schemaspy.o=path/to/output

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

結論

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

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

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

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

2020/04/27 修正/追記

日本語フォントファイルだけつっこんだdocker環境用意したら、とくに設定なく日本語でました。
schemaspyのバージョンも6.1.0に上げたからかもしれませんが。

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5