Yellowfinの設定変更ツールを使ってみる


# 設定変更ツールとは
[BI](https://yellowfin.co.jp/blog/2019/11/21-blog2-summary-of-bi-tools)ツールの[Yellowfin](https://yellowfin.co.jp/)のバージョン9.7.0から使用できる、リポジトリDBの設定やコンフィグ、BOFinder(接続のプラグインのようなものらしい)をコマンドラインで変更できるといったもののようです。[wikiはこちら](https://wiki.yellowfin.co.jp/pages/viewpage.action?pageId=31822319)ですが、いつの間にか追加されていて気づきませんでした。。そしてコマンドラインで変更できることはわかったのですが、そのコマンド例もないため今回どうやって使うのかチャレンジしてみました。使用する際にはインスタンスを落として実行したほうが良さそうです。最後の項目でおすすめの設定を教えてもらったので一括設定するなら一度流すのもいいと思います。

# 設定のオプション
wikiに書いてある下の表のとおりなのですが、必須項目のリポジトリの情報3つを含めて記述する必要があります。
表が崩れてすみません、どうすることもできないんですが、一番右に必須項目の列もあります。
| パラメーター | 説明 | 例 | 必須 |
|:-|:-|:-|:-|
|jdbcdriver:\<driverclass>|リポジトリデータベースの標準的なJDBCドライバクラスです。|jdbcdriver:org.postgresql.Driver|オプション|
|jdbcurl:\<driverurl>|リポジトリデータベースにアクセスするための接続文字列です。|jdbcurl:jdbc:postgresql://localhost:5432/yellowfin9703|必須|
|jdbcuser:\<user>|リポジトリデータベースへのアクセス権を持つユーザー名です。|jdbcuser:sysadminyfn|必須|
|jdbcpassword:\<password>|リポジトリのデータベースにアクセスできるユーザー名のPlain textのパスワードです。|jdbcpassword:highlysecure|必須|
|CONFIG_\<code>:\<config_value>|更新される設定オプションで、好きな数だけ追加できます。BOFアイテムを更新するだけであれば、CONFIGパラメータを含める必要はありません。|CONFIG_EXTERNALURL:http://10.10.10.39:8080|オプション|
|BOF_\<code>:\<bof_value>|web.xmlファイルのBOFinder設定エリアの項目を設定/上書きするために使用します。このエリアには、データベースコネクターなどのプラグインに関する設定オプションが保存されています。このツールで行った更新は、リポジトリデータベースに保存され、web.xmlよりも優先されます。必要な数だけ追加することができます。CONFIG項目の更新のみを行いたい場合は、コンソールコマンドからBOFパラメータを除外することができます。|BOF_com.hof.interfaces.EvenCreation:com.hof.interfaces.DummyEventCreation|オプション|

# 使い方
wikiにはこのように書いてありますが、具体的な例がないのでとりあえず例のまま実行すると、ヘルプが出てきます。
1.コンソールから、設定するYellowfinインスタンスへディレクトリを変更します。
2.Yellowfinのトップレベルディレクトリから、/appserver/webapps/ROOT/に移動します。
コマンドを実行します（お使いのシェルによっては、シングルクォートマークを削除する必要がありますのでご注意ください）。

```shell:ex(help表示).sh
java -cp 'WEB-INF/lib/*:WEB-INF/classes' com.hof.standalone.ModifyConfiguration

```
いまいちなぜこのコマンドでヘルプが返ってくるのかわからないですが、そういうもののようです。
実際に実行するコマンドとしてはこういった形で、後ろにパラメーターを渡していくだけでした。。。
```shell:ex(実行時).sh
java -cp 'WEB-INF/lib/*:WEB-INF/classes' com.hof.standalone.ModifyConfiguration jdbcurl:jdbc:postgresql://localhost:5432/sampleyf jdbcuser:postgres jdbcpassword:postgres CONFIG_EXTERNALURL:http://localhost:8080

```
実行結果もwikiに書いてあるとおりなので割愛します。

# まとめ
BOFinderについては試していませんが、ツールの使い方としては後ろにパラメーターをつないでいくだけで設定の変更ができるようです。これはDockerのイメージで環境を作成した際に設定部分までコマンドラインで変更できることで利便性が上がりそうです。
また、コンフィグ部分に何を設定するかですが、リポジトリDBにあるconfigrationテーブルのconfigcodeのカラムをセレクトしてdelete・insertしているようなので、設定変更ツールを使う場合にはこのテーブルのレコードを意識して作成する必要があります。逆にいえばこのテーブルにある設定値はコマンドラインでも変更可能ということですね。もうちょっとわかりやすく実行例のコマンドも書いてくれればいいんですけどね。。。

# おすすめの設定
元ネタは[サポートの記事の初期設定を行いましょう](https://support.yellowfin.co.jp/hc/ja/articles/360001025528)なのですが、初期設定で画面で設定しないといけなかった部分ですね。とてつもなく長いのですが、画面でポチポチプルダウンを変えなくていいので一度流してから画面で確認していくのはどうでしょうか。ちなみに最初に起動してYellowfinを停止した状態で実行しないと起動時にフォントの設定が上書きされるそうなのでそこだけお気をつけください！

```shell:ex(初期設定).sh
java -cp 'WEB-INF/lib/*:WEB-INF/classes' com.hof.standalone.ModifyConfiguration jdbcurl:jdbc:postgresql://localhost:5432/sampleyf jdbcuser:postgres jdbcpassword:postgres CONFIG_EXTENDEDLOGGING:"true" CONFIG_COLUMNORDERING:"1" CONFIG_DATEFORMAT:"YMD" CONFIG_FINANCIALSTARTMONTH:"4" CONFIG_NAMEFORMAT:"LF" CONFIG_DEFAULTCJKFONT:"Noto Sans Japanese" CONFIG_CSVCHARSET:"Shift_JIS" CONFIG_DEFAULTFONT:"Noto Sans Japanese" CONFIG_REPORTSTYLESUMMARYFONTFAMILY:"Noto Sans Japanese" CONFIG_UNIQUEREPORTNAMES:"WARN" CONFIG_CHARTTITLEFONTFAMILY:"Noto Sans Japanese" CONFIG_AXISTITLEFONTFAMILY:"Noto Sans Japanese" CONFIG_AXISLABELFONTFAMILY:"Noto Sans Japanese" CONFIG_LEGENDFONTFAMILY:"Noto Sans Japanese" CONFIG_LABELFONTFAMILY:"Noto Sans Japanese" CONFIG_SSELFONTFAMILY:"Noto Sans Japanese"

```