MotionboardでSSO(IWA)用のボードURLを用意する

# 初めに

通常、MotionboardのURLは以下の通りになります。

```
#通常（ログイン必要）
http://<servername>:8787/motionboard/main
```

一方、Windows認証でシングルサインオンを実施している場合、
ログイン不要でMotionboardにアクセスする際は、以下のようなURLになるかと思います。

```
#SSO（ログイン不要）
http://<servername>:8787/motionboard/sso/iwa
```

一方、現在開いているボードにアクセスするためのURLは、`${board_access_url}`で表示することができます。
~~（Motionboardオンラインマニュアルにそんな変数があるという記載はありませんが…、Motionboardの変数一覧に存在し、実際確かに使えるので使ってました）~~　→2020/08/28 訂正　メール用の方にありました、メール時でなくても使える奴みたいですね。ちなみにほんとにメール等でしか使えない変数もあります）


このボードのURLをこんな感じ（↓）表示させておけば、たとえばメールなどで簡単にリンクの共有ができて便利だろうなーと思い、入力アイテムの初期値にこの変数を表示させて、コピペできるようにしてみています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/2420c8bd-8d9e-3376-cd1c-d7e9df82b716.png)

わざわざ左上のフォルダから階層追っかけてボード探してもらうとか七面倒臭いですし、せっかくシングルサインオンになったんなら誰でもすぐさま見れるようにしたいという意図がありました。

ただ、ボードへのアクセス用URL変数である`${board_access_url}`で表示できるURLは以下のように、mainのままになってしまいます。

```
http://<servername>:8787/motionboard/main?mbid=hoge&boardpath=fuga
```

これではログインを求められてしまって、何のためのシングルサインオンか分からなくなってしまいます。
なので、`http://***/motionboard/sso/iwa?mbid=hoge&boardpath=fuga`みたいに表示できないか考えました。

#入力アイテムを使ってURLを生成する（アイデア）

入力アイテムの初期値に以下のように入力すればもしかしてURLが生成できるのでは？と考えました

```
#初期値
http://<servername>:8787/motionboard/sso/iwa?mbid=${board_id}&boardpath=${board_path_for_url}
```
ただ、オンラインマニュアルには、そんな変数は用意されていないとあります。（実際ありません）
[外部リンク：Motionboard6.1 - オンラインマニュアル - 使用可能なシステム変数](https://cs.wingarc.com/manual/mb/6.1/ja/UUID-d9b0e5de-57ba-004c-b5fc-fb1769c6ce5b.html)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/fdb0224b-9fdb-ef44-68de-5316287cd953.png)
※なぜかbefore_board_path_for_urlとbefore_board_idはあります。なんで現在のボードの変数も作れなかったんですかね…
そこで、以下の方法でリベンジします


# 入力アイテムを使ってURLを生成する（リベンジ）

別にmbidとかboard_path_for_urlじゃなくても、boardpathだけでよくない？と開き直って、入力アイテムの初期値に以下のようにしました

```
http://<servername>:8787/motionboard/sso/iwa?boardpath=${board_path}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/62197167-1b9b-8d47-fc7a-8003eb47572a.png)

こうすると、以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/fef3543f-d287-7f43-6610-dec98b97c2d0.png)

イイ感じです。ほとんどのひとはこれでうまくいくんじゃないでしょうか。
ちなみに、たとえURLの中に「/」が入っていたとしても問題なく解釈してアクセスできるみたいです。
ボードに日本語名が使われている場合でも、Edge他ならアクセスできるはずです。
ただし、IEは日本語理解できずダメです（私はあきらめました。
またボード名に「#」が入ってるとたとえEdgeでもダメです、ブラウザがうまく変換してくれないみたいです


ただし、なぜかうちでは`${board_path}`の頭に`mbds_def/mbDef/`という接頭語がついてしまいます。ナニコレ
なので別の方法を使って実現します。接頭語がついてない人はここまでで終了です。ご覧いただきありがとうございました。


# Motionboardのシステム情報が記載されているデータを使う

Motionboardのボードリストや足跡などが保存されている接続先があります。
（標準で見れるのかはすみません私の権限ではわかりません、、システム設定-接続で閲覧者を制限されてる場合もあるかも…）
[外部リンク：Motionboard6.1 - オンラインマニュアル - 特殊なデータソースを選択する](https://cs.wingarc.com/manual/mb/6.0/ja/UUID-58741a45-accf-5084-7cf1-2491a07cf73e.html)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/b376b29e-03d7-d50c-1cf5-d38c4b8ac862.png)



ここに、ボードパスの一覧を持っているデータがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/b11f5beb-4dbe-49a1-c50a-21e819471ee9.png)
※ちなみに、足跡とかもここから見れるので、見たい人は分析してみてください。自分が作ったボードのPV数とか見てニヤニヤしてても仕事進まないので現実みて頑張りましょう（戒め


この「ボード一覧」のデータを使って共有データソースを定義を作ります。
ここで、接頭語がついてしまっている`${board_path}`の値で絞り込めるように、それに対応する項目を「カスタム項目」（＝`board_path_mbds_def`）を使って作り出してしまって、それで検索で絞ればいいじゃんと思いついた次第です。
かつ、/sso/iwa用のボードリンクURLも、「カスタム項目」でつくればいいじゃん（＝`board_access_url_for_sso_iwa`）

作った共有データソースは以下の通り。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/66dc45cf-4f7e-108a-5006-300992483576.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/fa1c4da4-7101-c821-ec5f-4a3405738bfa.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/e9d36492-82ec-d34b-25f0-3e05cfcdb9c2.png)
なお、検索条件に以下のようにセットしておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/a0a4dcca-20bd-f7f1-ba77-ff7105eab0e1.png)

# 入力アイテム-コンボボックスを使ってURLを表示

さらに、入力アイテムのコンボボックスアイテムを使って
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/c206837a-324c-4891-d1ea-3f7d871a0b6b.png)

このようにプロパティを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/8dfd561a-fb43-349a-3971-5917d58a2e47.png)

以下のようにセット

- 候補値に「他データソース定義項目の値」を設定
- 「候補地を絞り込む」にチェック
- 他のデータソース定義は、先ほど作成した共有データソースを選択
- 「他のデータソース定義に設定された検索を実行した結果を利用する」にもチェック
- 項目名（値）は、先程のデータソースで作成したSSO(IWA)用のアクセスURLが入った項目を選択
- 初期値は`!top`または`!bottom`にする


こうすれば、このようにコンボボックスにURLが表示されるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/2420c8bd-8d9e-3376-cd1c-d7e9df82b716.png)

この例では、あえてREPLACEで「/」を「%2F」に変えてますが、別に「/」のままでもブラウザが自動的に変換して解釈してくれるのを知らなかったので、別にREPLACEしなくてもいいです。ただ、スクショ取り直すのが面倒だったのでそのままにしてます。気になる人はREPLACEしましょう。
また、ほんとは「 」(半角スペース)もREPLACEしたほうが、メールアプリやチャットアプリに貼り付けるときに、自動的にハイパーリンクにしてくれるのでうれしいんですが、もう面倒なので諦めました。

またまた、先述の通り、Edgeなら日本語が含まれるボードパスでも解釈してくれますが、IEは日本語が含まれると解釈してくれません。日本語を使わないようにするか、Edge使ってください。あと「#」はIEでもEdgeでもダメっぽかったです。

コンボボックスなので余計な▼が表示されてしまいますが、そこはもうせにはらです。諦めました。

# 明細表アイテムで表示する場合
[9/1追記]
明細表アイテムでも似たようなことができます。これなら余計な▼が表示されなくて済みます。
ただ、テキストを選択するのにトリプルクリックしないと選択できずイライラしたのでやめました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/af94ea5c-65d6-4f0f-2ca9-b5cd27b2484f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/507249/240f3daa-0b36-7433-83c3-47ed08097077.png)


#おわり
こんな記事に興味ある人いるのだろうか…
wingarcのサポートに、もっと楽な方法ないの問合せ中…
お目通しいただきありがとうございました。

__2020/08/28__
サポートから返答ありました。が、現状標準機能では実装できていないとのことでした。
課題と認識されているとのことで、システム変数でSSO用URLが取得できるように検討されるとのことでした。
本記の内容を投稿してもいいかと問合せると、特に問題ないとのことでしたので投稿します。
しばらくはこの手で乗り切ろうかと思います。

__2020/10/02__
誤字など微修正