Tableauを多言語化して、と言われたときにできること

この半年くらい、Tableauをよく触っています。そんな中、今まで国内だけで使っていたTableau Workbookを国外でも利用したい、という話が出てきました。 そんなときにできることをまとめてみます。 <!–more–> 以下のような方に参考になれば。 Tableauのワークブック/シートがそれなりにある 日本語ガッツリだったものを国外でも利用する必要に迫られた Tableauでの多言語化 まず、Tableau自体は多言語化されています。 Measure name/メジャーネームとか 合計とか ですが、 ラベル系については一切サポートがありません。 シート名、ダッシュボード名とかもありません。実際にフォーラムでも同じような質問を見つけましたが、そこでは以下のような解決策が示されていました。 各Labelを計算フィールドにする 言語を表すパラメータを作る 計算フィールドの中で、パラメータの値(=各言語)毎にラベルを定義する これを全部に対して適用する ・・・シートが1つ2つならまぁいいかなって思わなくもないですが、私がもっているのは30シート/10オーバーのDatasourceだったので、とてもじゃないですが参考にできませんでした。 一括で変換したい フォーラムの中では、それ以外にも案が示されていて、その中で一番有望なのが XMLを直接書き換える という方法でした。 Tableauの .twb 拡張子は、エディタで開いてみると単なるXMLになっています。これを直接書き換えればいいやん、というある意味単純な話です。これしかない!って感じで、この路線で進めてみました。 こぼれ話:TableauのAPIクライアント コミュニティで作られているものですが、tableau_toolsというライブラリがあります。 tableau_toolsのリポジトリ これの中にも、Workbookをよしなに書き換えてくれそうなものがあったので、最初はこれを使ってみました。ただ、私の目的にはそぐわなかったので、利用しませんでした。どちらかというとTableauのAPIを叩くほうが主眼のライブラリだったんで、それも仕方ないかな、と。 Tableau Workbookの構造 XMLをいじるには、まず構造を知る必要があります。実際に翻訳で書き換えていった中で、結構色々と知ることができました・・・。 Tableau Workbookは、大きく以下のような構造になっています。翻訳で利用しなかった部分は省略してます。 <!-- Workbookのrootエレメント --> <workbook ...> ... <datasources> <!-- データソース。パラメータもデータソースです。パラメータは、captionがなくってnameがParametersで固定です。 --> <datasource name="Parameters"> <!-- nameはTableauの計算フィールドとかで利用するときの名前です。captionは、「名前の変更」をしたときに設定されるやつです --> <column caption="foo" name="[parameter 1]"> <!-- 「別名」から設定されるものです。membersもセットになっている・・・かもしれません。 パラメータの場合は少なくとも必要でした。 --> <aliases> <alias key="0" value="foo" /> <alias key="1" value="bar" /> </aliases> <members> <member alias="foo" value="0"/> <member alias="bar" value="1"/> </members> </column> </datasource> <!-- PostgreSQLとかのDatasourceだと、nameはtableauが生成した値で、captionには画面側で利用する値になっています。 --> <datasource caption="foo" name="..."> <column caption="a" name="original"> ... </column> </datasource> </datasources> <worksheets> <!-- 各ワークシートです。nameがWorksheetとIDとほぼイコールなので、変更する場合は結構大変です --> <worksheet name="worksheet1"> <style> <!-- 軸のstyleに関する設定です。element="axis"の中を見ると大体わかります --> <style-rule element="axis"> <format attr="title" value="軸" /> </style-rule> <!-- 凡例のstyleに関する設定です。いくつかある場合は複数になるようです。 valueをいじるだけでいいパターンと、formatted-text/runを追加する必要があるケースがありましたが、 formatted-textも設定しておくのが正のようです。 --> <style-rule element="legend-title-text"> <format ...> <format value="凡例" ...> <formatted-text><run>凡例</run></formatted-text> </format> </format> </style-rule> </style> </worksheet> </worksheets> <dashboards> <!-- ダッシュボードです。worksheetと同じく、nameがIDです --> <dashboard name="dashboard"> <!-- ダッシュボードでの配置を管理しているもののようです。 翻訳では、この中のnameが、変更後のworksheetと同様になる必要があります。 --> <zones> <zone name="worksheet1" ...> </zone> <zone name="worksheet2" ...> </zone> </zones> </dashboard> </dashboards> <windows> <!-- tableauデスクトップとかで下に表示されているものの一覧です --> <!-- class=dashboardはダッシュボード、class=worksheetはワークシートです。 ここのnameは、必ず<worksheet>や<dashboard>と一致させる必要があります。 --> <window class="dashboard" name="dashboard"> <viewpoints> <!-- dashboardの場合だけ(多分)翻訳が必要です。ここのnameは、他の<workspace> 要素と一致している必要があります。 --> <viewpoint name="worksheet1" ...> </viewpoint> </viewpoints> </window> <window class="worksheet" name="worksheet1"> </window> </windows> </workbook> 今回必要だったのは以下の部分でした。 ...

September 6, 2018 · derui

ブログをHugo + Netlifyで作りました

今まで放置しっぱなしだったはてなダイアリーが終了するというニュースを受けて、個人ブログ移行の問題が出てきました。 はてなブログに移行する、ということも考えました。しかし、ちょうどブログについて考えていたところだったので、過去を振り切って新しく作ってみました。なんか独自ドメインもあったので。 <!–more–> 移行時に重視した点 いざ移行を考えた時、以下のようなフローでやってみたくなりました。 Githubにpushしたら公開される ブログの内容が全部公開されるけども、そもそも公開してるので気にしない 独自ドメイン+HTTPS Hugoで生成 出来ればorg-modeで書きたい 最後は願望でしたが。 利用したツール/サービス このブログを作成するにあたり、以下のサービス・ツールを利用しました。 Hugo テーマとしては hugo-nuo を使わせてもらいました ox-hugo Netlify Github これは前提ですが なお、執筆環境は基本的にEmacs一択です。 ox-hugoからのexport ox-hugoは、 org fileをmarkdownにexportするbackend です。backendとは、Org modeにおいてorg fileを変換するための処理みたいなものです。 とにかく、markdownを生成するものなので、Github上には .org と .md の両方のファイルがcommitされていきます。これは、仮にOrg modeを利用しなくなっても、markdownをそのまま書けばいい、ということでもあります。この点を鑑みて、リポジトリの容量については一旦置いておくことにしています。 執筆フロー Org modeで書く TODO を付けてdraft化 draftになっている間は、pushしても表示はされない(はず) 保存すると自動的にox-hugoがmarkdownに変換 ローカルで確認 書き終わったら DONE にしてcommit/push というフローでやっていきます。 決めかねてる点 Hugoだと基本的に posts/<ファイル名> 、という形式になるようですが、個人的にはいつ書いたか?をURLに入れておきたいです。 ただ、色々な人の構成を見ている限りでは、日時はHugoに任せて、タイトルだけにしているケースが多いようでした。郷に入れば郷に従え、ということでとりあえず従っておきますが、なんかモヤモヤします。 所感 Qiitaの方はmarkdownで書いている+Webから登録する方が色々楽ということで、あっちはあっちで書いていきますが、こっちも充実させていければと思います。

August 30, 2018 · derui