電話リレーサービスのおしいところを改善した話

# 自己紹介
はじめて、デフエンジニアの会のけんたんです。初めてQiitaの記事を書きます。

# はじめに

聴覚障害者にとって電話は難しいもので、手話通訳者を通して相手に連絡するサービスが電話リレーサービスです。2021年7月に正式にサービス開始して2年たった今、小学校からの緊急電話を5回も受け取ったし、旅行中おすすめのお店を聞いたとき、その場で予約の電話をかけたりと、聴覚障害者が社会に入りやすくなりました。
しかし、デフエンジニアの私からしてユーザービリティが良くなく、使うたびにストレスになっていました。毎年アンケートでこうすれば使いやすくなるよと意見を書いているのですが、未だに改善できていないです。ならば非公式ながら私の方で改善しちゃおうとiPhoneのショートカットというアプリでやるという話です。


## 電話リレーサービスで気になったところ
公的サービスにも関わらず認知度が低く、このサービス知らない健聴者が電話を受けたときいたずら電話、迷惑電話と勘違いして切られてしまう、サービスを信用できないので受け付けないというようなこともあります。今回は技術的なことをあげたいので取り上げません。
私がiPhoneで電話リレーサービスを毎週利用していて気になったところは、電話をかける手間が多いところです。

例えば、病院のホームページから電話番号を見つけます。そこでタップすればそのまま電話をかけることが出来ます。
しかし電話リレーでかける場合以下の手順で掛ける必要があります。
1. 電話番号をコピー
1. 電話リレーアプリを探す
1. 電話リレーアプリを起動
1. 電話リレーアプリに電話番号を貼り付け
1. コピペした電話番号のハイフン(-)や空白を手作業で削除
1. 電話リレーアプリで手話or文字を選択
1. 電話リレーアプリの通訳者がつながるまで待つ
1. 通訳者が混んでいるときは順番待ちが発生
1. やっと病院につながる

健聴者は1回の操作で電話がつながるのに対し、聴覚障害者はこれだけの手順を踏む必要があります。この手順の差が急ぎであればあるほど大きくなってきます。

正直いってめんどくさい！！！
もう一度言います。
めんどくさいです。

というわけで事業者に提案しても改善されないのであれば、私の方でできるだけ手間を減らそうと方法を探りました。


## さあどうやって解決するのか
このめんどくさい手間を少しでも減らすために、どうやって実装すればいいのか検討しました。
そこであがったのが、以下の2つです。

### iOS SDKを用いて、電話番号をタップしたら電話リレーアプリを呼び出す
050 plusやrakuten LinkというIP電話アプリでは実現できています。iOS SDKをうまく使いこなせたら理想的なのですが、私はバックエンドエンジニアでスマホアプリは作ったことがないのです。軽く調べてみたのですが全く分からずお手上げでした。詳しい方いたら私に声かけてください。一緒にアプリを作りましょう！


### ショートカットというアプリで手作業を減らす
LinuxのShell、WindowsのPowerShellのスクリプトファイルは業務でよく作っていましたし、iOSのスクリプトあるかなぁと調べたところありました。それはノーコードで実装できるショートカットというアプリです。
これならば、電話番号をコピー、文字列加工、アプリを呼び出しを順次に実行できることがわかりました。



# 実装

## 早速iPhoneにショートカットアプリをインストールします。
ショートカットアプリのURL
https://apps.apple.com/jp/app/ショートカット/id1462947752

## 早速ショートカットで実現する手順を決めます。
- クリップボードの中から電話番号を抜き出す
- 電話番号かどうかチェックする
- なかったらアラート出す
- 電話番号のスペースを空白に置換する
- 置換したテキストをクリップボードにコピー
- 電話リレーサービスを開く

## 実装手順

### １，ショートカットアプリを起動
ショートカットアプリを起動すると以下の画面が表示されます。
そこで、右上の`＋`をタップします。

![画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/d88890b6-f308-6108-434d-4fe59e93fcc5.png)


### ２，ショートカットの作成
新規ショートカットが作られます。新規ショートカットの名称を電話リレーにします。
つぎに`+アクションを追加`をタップ。最初はクリップボードから電話番号を抜き出すので
下の`アプリおよびアクションを検索`で「クリップボード」を入れて検索します。
 `クリップボードを取得`をタップ。クリップボードを取得のアクションが追加できました。

![画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/2908db85-d429-7a56-a6b0-57ac091d9304.png)


### ３，クリップボードから電話番号を抜き出し
下の`アプリおよびアクションを検索`で「電話番号」を入れます。
`入力から電話番号を取得`を選びます。

![画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/c35d5867-1ebc-5f8a-ca85-fe19fcc7b810.png)


### ４，if文
電話番号を取得できなかったときのエラーを出したいのでif文を入れます。
先程と同じように下の`アプリおよびアクションを検索`で「if」を入れます。
つぎに`if文`をタップします。

![画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/949abd59-7107-4fba-6ae5-170bf81fef17.png)


もし「電話番号」が「条件」ならばの`条件`をタップします。
if文の条件が日本語で並んでいます。そこで`値がない`をタップします。

![画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/3fc473b7-227b-44ff-84ad-88cfd1c534b8.png)


### ５，アラート
値がない場合はアラートを出したいので下の`アプリおよびアクションを検索`で「アラート」を入れます。ここで`アラートを表示`が出るのでこれをタップ。
アラート「つづけますか？」が出るので「電話番号を取得できませんでした」にメッセージを修正します。

![画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/1d4fd51d-93a9-5199-2770-8a4bbde21916.png)


### ６，アラートの場所
`アラート 電話番号を取得できませんでした を表示`を押しながら、`その他の場合`の上へ動かします。
プログラムで言うと、if文の中ですね。
![画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/d28d62a9-4e33-6932-ce3b-0d75ddda9a58.jpeg)


### ７，テキストを置き換え
電話番号のスペースを消したいので、下の`アプリおよびアクションを検索`で「置き換え」を入れます。ここで`テキストを置き換え`が出るのでこれをタップ。
`テキストの置き換え`を`その他の場合`の下になるように動かします。プログラムで言うとelseの中になります。

![画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/45c1b654-980c-ca1e-31c1-88094edb7904.jpeg)


### ８，テキストを置き換えの設定
`電話番号の「こんにちは」を「世界」に置き換え`と出るので以下のように修正します。
「こんにちは」を「（半角スペース）」、
「世界」は「」からなのでグレーアウトの「世界」のまま

![画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/e206f716-0f81-1b80-af24-2d872bc38dd2.jpeg)


### ９，置き換え結果をクリップボードへ
スペースなしの電話番号をクリップボードに入れたいので、
下の`アプリおよびアクションを検索`で「クリップボード」を入れます。ここで`クリップボードにコピー`が出るのでこれをタップします。
`クリップボードにコピー`は`テキストの置き換え`の下に動かします。

![画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/38ceb1d9-e703-3d37-b7d3-3703605e93dd.jpeg)

### １０，アプリの呼び出し
ここで電話リレーサービスのアプリを呼び出したいので、
下の`アプリおよびアクションを検索`で「アプリ」を入れます。ここで`アプリを開く`が出るのでこれをタップします。
`アプリを開く`を`クリップボードにコピー`の下に動かします。

![画像.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/0840adbd-a43e-aa42-c2fc-d27f39d9f9f5.jpeg)


`アプリを開く`の`アプリ`をタップします。ここでアプリ一覧が出るので「電話リレー」を検索、
`電話リレーをサービス`をタップして登録します。
右上の`完了`をタップすればショートカットは完成です！

![画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/cd87c453-cfe6-a157-4a44-b5a69fbd407f.png)


### １１，ウィジェットの登録
ホーム画面の一番左に行くように右へスワイプします。
ウィジェットの空いているところを長押しすると左上に`＋`が表示されます。

![画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/f793fec7-c2e0-9d62-92ca-8e218913f8c1.png)


これをタップ、「ショートカット」と検索してタップします。
するとショートカットに作成された`電話リレー`が出ます。`＋ウィジェットを追加`をタップします。

![画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/7eb33ce1-674d-9c2d-9d08-9f49c2fb95fd.png)


すると電話リレーのウィジェットが作成されました。コードを書くのが苦手な人でも流れさえ把握すれば出来そうですね。

![画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3001340/bf5056c3-0550-65da-c24d-89f52efdf6bf.png)


# このショートカットの使い方
1. ホームページで美味しそうなお店を見つけました。
1. 電話で予約をしたいので電話番号を長押しします。するとサブメニューが出るので「電話番号をコピー」をタップ
1. ウィジェット移動して、電話リレーをタップします。
1. ショートカットが動いて、電話リレーアプリを開きます。
1. 電話リレーアプリの電話番号を入れるところにペーストします


# 作ったショートカットの「電話リレー」を公開します。
このショートカットをインストール後、
上の章「１１，ウィジェットの登録」の手順を踏めば同じようなことが実行できます。
https://www.icloud.com/shortcuts/02d0371fa48c47fd91ce1f6c281684f6


### 参考資料

[電話リレーサービス トップページ](https://nftrs.or.jp)
[050plus トップページ](https://service.ocn.ne.jp/phone/ip/050plus/)
[Rakuten Linkの電話番号から直接アプリを呼び出す手順](https://service.link.link/guide/call/website_ios.html)
[ショートカット ユーザガイド](https://support.apple.com/ja-jp/guide/shortcuts/welcome/ios)
[iOS CallKit](https://developer.apple.com/documentation/callkit/)