ユーザビリティを考えると、Googleって本当に参考になります。
検索を行おうとすると、自分で全てのキーワードを入力するわけではなく途中まで書けばGoogle が補完・提案してくれるかと思います。
そんなGoogle 予測変換機能をPower Apps で作ってみようと思います。
目次
完成品プレビュー
この記事で作成したアプリはこんな感じに動作します。
ご興味がある方はぜひご覧ください!
辞書を用意する
なんと言っても辞書が必要です。
ただ、Google みたいに素晴らしい辞書がないので、ネットから漁れるものを使ってみようと思います。
今回はなんとなくフリーで落ちていますし面白そうなマスコミ表記辞典を使ってみようと思います。
以下のようにダウンロードできます。
Excelで開いてみると以下のような感じです。
2列にします。
見出しとして、yomi、responseを追加してテーブルとして書式設定します。
responseをフィルタリングして、空白になっているレコードは行ごと削除しておきます。
辞書ライブラリ用のSharePoint サイトを作成
SharePoint サイトに作成したExcelファイルをアップロードします。
読み込むと以下のようにSharePoint 画面上に表示されます。
リスト名を付けて作成します。
登録後、以下のようにyomiとした列はTitleとして登録されているのがわかります。
Power Apps からSharePoint を連携する
アプリを白紙のタブレットレイアウトで新規作成して、データソースでSharePoint を指定します。
先ほど作成したリストをデータソースとして登録します。
SharePoint リストの作成後まもなくだとPower Apps からSharePoint リストが見えないことがありますので、URLを貼り付けて検索します。
作成画面概要
以下のように作成します。実は作成するコントロールは少ないので作りやすいと思います。
以下の通り5つのコントロールしかないです。
ただちょっと関数は長めかもしれません。
これからひとつひとつ見ていきます。
アプリの作成方法
検索用のテキストボックス
後で定義するものも含めて記述していきますので、最初エラーになるものもあります。ご注意ください。
Default = ChoicedTerm
データ一覧用のテーブル
テーブルを挿入します。
Items = Filter(mascomdict, StartsWith(response, SearchTextBox.Text))
ID、Title(よみ)、response(変換候補)を表示しておきます。
StartsWith関数により検索用のテキストボックスに入力された検索後の前方一致でフィルターをかけることが出来ます。
予測変換リスト表示用のギャラリー
ギャラリーを挿入します。
Items = If(!IsBlank(Trim(SearchTextBox.Text)), Filter(mascomdict, StartsWith(Title, SearchTextBox.Text)))
StartsWithで前方一致フィルターを行います。
またIsBlank 関数でブランクでないときだけ処理を行うようにしています。
OnSelect = Select(TitleTextLabel);Reset(SearchTextBox)
レコードを選択した際にはTitleTextBoxに記述されるOnSelectの関数を参照するように設定しています。
また、SearchTextBoxを一度リセットして、選択されたテキストを検索用のテキストボックスに代入する準備を行っています。
Visible = LiveCount > ChoicedCount
ギャラリー内テキストラベル(変換候補)
テキストラベルをギャラリーに追加します。
Text = ThisItem.response
変換候補が表示されるようにします。文字のスタイルはボールドにしています。
OnSelect =
Set(ChoicedTerm, ThisItem.response);
Set(ChoicedCount, Len(Trim(ChoicedTerm)));
Set(LiveCount, ChoicedCount);
Reset(SearchTextBox)
レコードが選択された際にはこちらのラベルのOnSelectが継承されるようになっています。
グローバル変数ChoicedTerm の値が選択した変換候補になり、検索用のテキストボックス(Default = ChoicedTerm)に代入されます。
また、変換候補を表示するギャラリーの表示・非表示を制御するために文字数のカウントを行っています。最後にテキストボックスをリセットします。
ギャラリー内テキストラベル(よみ)
テキストラベルはもう一つよみがなとしてカラム名のTitleを追加します。
ThisItem.Title
見た目的には少し文字小さめ、ボールドも解除しておくと見やすいと思います。
まとめ
以上で事前に登録した辞書に基づいて予測変換する検索機能ができたと思います。
最後までご覧いただきありがとうございました。
ご参考になれば幸いです。