【惜敗】SkyWay を FileMaker で動かそうとしてみたけれどうまくいかなかった話

# はじめに
## 前置き
* 本記事は [Qiita Engineer Festa 2023](https://qiita.com/official-campaigns/engineer-festa/2023) の [新しくなったSkyWayを使ってみよう！](https://qiita.com/official-events/93564ad363199fa7999c) テーマ参加記事です。

https://qiita.com/official-campaigns/engineer-festa/2023

https://qiita.com/official-events/93564ad363199fa7999c

:::note warn
ただし「うまくいかなかったよ」というお話なので、受賞目的などは一切念頭にありません。
:::

:::note warn
重ねて記しますが、うまくいかなかったので途中で断念しています。
:::

## 対象読者
* [Claris FileMaker](https://www.claris.com/ja/) ユーザ
* [SkyWay](https://skyway.ntt.com/ja/) を FileMaker で動かすってどういうこと？？　と気になる方

## FileMaker とは？
https://www.claris.com/ja/

> モダンで幅広い業務に対応できる拡張性の高いカスタム App を作成

とのことです。

## SkyWay とは？
https://skyway.ntt.com/ja/

> ビデオ・音声通話をあなたのアプリに実装できるSDK

とのことです。

## つまり？
* この両者を組み合わせると `モダンで幅広い業務に対応できる拡張性の高い` アプリに `ビデオ・音声通話` を実装できるということですね
* ふむ、本当かな？　試してみましょう


## 自己紹介
* 株式会社きみよりで代表をしています 野口啓之 / Hiroyuki Noguchi / Hi-Noguchi です
    * IT を中心とした DX コンサル／顧問などやっております
* FileMaker 開発経験は十ウン年ありますが SkyWay は今回触るのが初めてです

https://kimi-yori.co.jp/


# 準備
## FileMaker 無料評価版について
* FileMaker を触れる環境になければ、こちらからお試し可能です

https://www.claris.com/ja/trial/


## fmp12 ファイルを作成する
* 何が必要になるか分からないので、まずは `skyway.fmp12` というファイル名で、以下のテーブルを用意してみました
* フィールドは最小限で `id` のみになっています

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/84e241eb-b69a-ded1-21ba-848cc7368880.png)

* テーブルを作成すると簡素なレイアウトもできあがりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/b554633c-3087-f12e-329b-fcc5291e7862.png)

* で、ここからどうすればよいのか？　SkyWay 側のドキュメントを確認してみましょう


## SkyWay のドキュメント確認
* JS 向けのドキュメントがあります

https://skyway.ntt.com/ja/docs/user-guide/javascript-sdk/quickstart/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_engineer_festa_2023

* FileMaker Pro 内で動かすには CDN 実行となりますので、以下の項を見ていくことにしましょう

> 環境構築　[CDN を利用する場合]

* すると、以下の二つのファイルが必要と書かれています
  * index.html
  * main.js
* なのでこの二つを記述するフィールドを作成するべきということですね
* さらに読み進めていくと、登録して `アプリケーション ID` と `シークレットキーの取得` が必要とのことです
* それ以後は、具体的な実装の段階に入ってくるようなので、今はここまでにしておいて、まずは SkyWay への登録と ID, キー 取得をおこないましょう

## SkyWay の利用準備
* まずアカウントを作成します
    * 持っている場合はログインしてください

https://console.skyway.ntt.com/signup

* ログインしたら、まずはプロジェクトを作成します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/a5d1967c-b350-111a-9f1a-da65edbb6504.png)

* 続けてアプリケーションを作成します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/0bba9b7a-8cd7-05a9-d63e-f64153110757.png)

* すると `アプリケーションID` と `シークレットキー` が用意されます。こちらを後で使うことになるわけですね
  * UUID の前半部が表示されていますが、まあ、今回の用途なら半分晒しても大丈夫でしょう……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/09b1e086-26e2-d620-1148-cf24bd64dee1.png)

* ということで SkyWay の利用準備はこれだけです。ね、簡単でしょう？

# 実装
## FileMaker でフィールド用意
### index.html
* SkyWay のドキュメントにしたがって `index.html` を記述したいので、それを格納するためのフィールドを用意します

https://skyway.ntt.com/ja/docs/user-guide/javascript-sdk/quickstart/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_engineer_festa_2023

* 雑に `html` というテキストフィールドを用意しました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/a48ffc85-88a9-4488-6fef-0c9ac746497d.png)

* レイアウトで少し幅を調整して……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/e451760a-9131-eec1-4153-fe8babe424c6.png)

* ドキュメントに記載されている html の記述を貼り付けます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/6bef3a91-3442-8e90-aee3-84945871a667.png)

* 縦幅が足りていないので切れていますが、最後まで格納されています。いったんこれだけでヨシです


### main.js
* 続けて JS も同じように進めましょう

https://skyway.ntt.com/ja/docs/user-guide/javascript-sdk/quickstart/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_engineer_festa_2023

* `js` というテキストフィールドを作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/641d840a-e738-2398-f2bc-1124fcc8e839.png)

* レイアウトで幅を調整して……

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/36e0e93e-04d5-92f6-9ca8-51fc1a2b21af.png)

* ドキュメントに記載されている js の記述を貼り付けます
* 取り急ぎさっくりと動作確認したいので、貼り付けるべきコードは以下の二つです
  * `各種モジュールの取得` とある一行のコード
  * 末尾にある `ライブラリの取得部分を除いたコード全体はこちら` の全体

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/fdc50182-818b-691a-a610-e92f44bccbaa.png)

* そして `ここにアプリケーションIDをペーストしてください`, `ここにシークレットキーをペーストしてください` となっている箇所を、先ほど準備した SkyWay の管理画面から取得してきた上で、書き換えてください


## FileMaker で WEB ビューア表示
### WEB ビューアの設置
* さて FileMaker には `WEB ビューア` という html を解釈して表示させるための機能があります
  * Windows だと Edge, Mac だと Safari ベースのエンジンで動きます

https://help.claris.com/ja/pro-help/content/set-web-viewer.html

* この WEB ビューアに、先ほど用意した html フィールドを指定してあげればよいわけです。以下のような感じですね

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/4ecfa9b7-57a0-bb85-f493-e66213f2a87b.png)

* 設置した後に表示させると、はい、以下のように

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/812dcbc0-e69e-93ee-308d-f7d87debe77d.png)

* ただしこのままでは動きません。なぜか？　それは html 内にある `    <script src="main.js"></script>` という記述が、このままだと正しく解釈されないせいです
* 言うまでもなく `main.js` というファイルの実体はどこにも存在していません。ただ `js` というフィールドに `main.js` に書かれるべき内容があるだけです
* とどのつまり html ファイル内に `js` フィールドの中身をインクルードしてあげるようにすればよいわけですね

### html への js のインクルード
* 正しく動かない `<script src="main.js"></script>` については、以下のように書き換えてください
    * [[[]]] は絶対に html で出てこない記法なので使っています

```
    <script>[[[js]]]</script>
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/d2ed0b6d-b6ff-1526-7bae-1d504797d78e.png)

* そうしたら WEB ビューアの指定を再編集して、以下のようにします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/b802e522-d1f7-2ec5-5430-90675ef136bb.png)

```
Substitute ( 
  skyway::html; "[[[js]]]" ; skyway::js
)
```

* 要するに `html` フィールド内にある `[[[js]]]` という文字列を `js` フィールドの値に置換する、ということです

### 挫折
* さて、これでうまく表示されるかな……！　というところで、挫折となります。
* 大きな理由としては、以下です。

:::note alert
`カメラ` `マイク` へのアクセス許可ができません
:::

* WEB ビューアで使われているブラウザは Windows であれば Edge なので Edge 側で許可してあげればよいのでは……？　というところですが、2023/07 現在では `常時許可` といったことができなくなっているため、都度、ポップアップ表示されるものに対して許可をしなくてはならないのです。
* が、WEB ビューアでポップアップ表示ができません！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37739/96543f54-718c-e317-11b8-340853679f7b.png)

> オフになっている場合はブロックする

* ひどい。選べない。

# おわりに
## 雑感
* 最初に WEB ビューアや `カメラ` `マイク` 許可の仕様確認をしっかりおこなってから進めれば良かったですね！
* このまま進めたとして SkyWay は http サーバが必要とのことなので FileMaker Pro 単体では動かずに FileMaker Server を組み合わせたりする必要があるだろうなーと予測はしていました。ただその手前の段階でコケたので、検証進めてはいません。
* WEB ビューアに対する `カメラ` `マイク` 許可が容易にできるようになったら、色々とまたアプリケーションの可能性が広がると思いますが、どうでしょうかね、Claris さん……？👀
* SkyWay については、こんなに簡単に CDN ベースで組み込めてしまうのか！　というのが驚きでした。すごいですね。