スマホ入力のイライラ解消!Power Appsで数値用キーボードを自動表示させる設定

スマホで数量を入力するたびに、日本語キーボードから数字キーボードに切り替えるのは地味にストレスです。Power Appsのテキスト入力コントロールにはFormatプロパティという設定があり、これを変えるだけでスマホに数値専用キーボードを自動表示させることができます。入力ミス防止の設計全体についてはPower Apps入力ミス防止ガイドでまとめているので、スマホ向けフォーム設計の参考に合わせてどうぞ。

この記事では、Formatプロパティの設定方法と、IsNumeric関数を使って数値以外の入力を弾くバリデーションの組み合わせ方を解説します。

なぜスマホのキーボード設定が重要なのか

現場で使われるPower Appsアプリの多くは、スマートフォンで操作されます。倉庫での在庫数入力、営業の訪問件数記録、工場での作業時間報告。どれもスマホから数字を入力する場面です。

デフォルト設定のままだと、テキスト入力コントロールを選択したときに表示されるキーボードは日本語・テキスト用のものです。数字を入力するには、キーボードを数字モードに切り替えてから入力する手間がかかります。1入力あたり数秒の操作でも、1日100件の入力があれば積み重なります。

加えて、テキスト用キーボードからだと誤って全角数字や漢字を入力してしまうリスクもあります。後から集計するときに数値として扱えないデータが混入する原因になります。

Formatプロパティで数値専用キーボードを表示する

テキスト入力コントロールにはFormatプロパティという設定があります。デフォルトはTextFormat.Textですが、これをTextFormat.Numberに変更するだけで、スマホでそのコントロールをタップしたときに数値専用キーボードが自動表示されます。

Formatプロパティの設定手順

  1. Power Appsの編集画面でテキスト入力コントロールを選択する
  2. 右側のプロパティパネル、またはツリービューから数式バーを表示する
  3. プロパティのドロップダウンからFormatを選ぶ
  4. 値をTextFormat.Numberに変更する

これだけで、スマホでそのフィールドをタップすると数値専用キーボードが表示されます。0〜9のキーとマイナス符号、小数点が並ぶシンプルなキーボードで、誤入力のリスクが大幅に下がります。

社内でスマホ向けの日報アプリを作ったとき、この設定を入れる前後でユーザーから聞こえる声がまったく変わりました。切り替え操作が不要になっただけで、体感的に入力がずいぶんスムーズになったという感想をもらいました。

IsNumeric関数で数値以外の入力を弾く

Formatプロパティを変えても、PCブラウザからアプリを使う人は通常のキーボードで入力します。また、スマホでも数値専用キーボードからテキストを入力できる環境もあります。フォームに数値しか受け付けたくない場合は、IsNumeric関数を使ったバリデーションを追加するのが確実です。

IsNumeric関数は、渡した文字列が数値として解釈できるかどうかをtrue/falseで返します。テキスト入力コントロールのOnChangeプロパティに条件チェックを入れておくと、数値以外が入力されたときに自動でリセットできます。

OnChangeで入力値をリアルタイム検証する

テキスト入力コントロールのOnChangeプロパティに次の数式を設定します。

If(
    Not(IsNumeric(TextInput1.Text)),
    Reset(TextInput1)
)

数値として解釈できない文字が入力されたとき、Reset関数でコントロールを空に戻します。ユーザーが文字を入力しようとしても、即座に消えるためテキストが登録されません。

Notifyで理由をユーザーに伝える

黙ってリセットするだけでは、なぜ入力が消えたかわからずユーザーが戸惑います。Notify関数でポップアップ通知を出すと、入力ルールが明確になります。

If(
    Not(IsNumeric(TextInput1.Text)),
    Notify("数値を入力してください", NotificationType.Error);
    Reset(TextInput1)
)

Notify関数の第2引数にNotificationType.Errorを渡すと、画面上部に赤いエラーバナーが表示されます。NotificationType.Warningなら黄色、NotificationType.Successなら緑のバナーになります。

数値の範囲チェックも組み合わせる

数値であることを確認するだけでなく、値の範囲チェックも一緒に入れておくと実用的なバリデーションになります。例えば年齢チェック(18歳以上のみ受付)や、個数の上限チェック(999個まで)などは現場でよく必要になります。

Value関数でテキストを数値に変換してから比較します。

If(
    Or(
        Not(IsNumeric(TextInput1.Text)),
        Value(TextInput1.Text) < 1,
        Value(TextInput1.Text) > 999
    ),
    Notify("1〜999の数値を入力してください", NotificationType.Error);
    Reset(TextInput1)
)

Or関数で複数の条件をまとめているので、数値でない場合も範囲外の場合も同じエラーメッセージで対処できます。条件によってメッセージを出し分けたい場合は、If文を入れ子にして対応します。

なお、このようなバリデーション設計全体の考え方については、必須チェックとエラーメッセージの作り方の記事でIsBlankやIsEmpty関数を使った実装パターンと合わせて解説しています。フォームバリデーションの設計に取り組む場合は、あわせて確認しておくと全体像がつかみやすいです。

入力ミス防止の設計は入口で決まる

Power Appsのバリデーション設計は、コンテナガイドで解説しているUI設計の原則と同じで、後から直すより最初に入れておく方がコストが低いです。Formatプロパティの変更とIsNumericによる検証は、どちらも数分でできる実装です。

特にスマホ向けアプリでは、入力しやすさがアプリの使用率に直結します。ユーザーがストレスなく入力できる環境を整えることが、正確なデータ収集への近道です。

まとめ

テキスト入力コントロールのFormatプロパティをTextFormat.Numberにすることで、スマホに数値専用キーボードを自動表示できます。さらにIsNumericとNotify・Resetを組み合わせることで、数値以外の入力を弾く確実なバリデーションになります。

設定そのものはシンプルですが、現場のユーザーに与える影響は小さくありません。使いやすさと正確なデータを両立させるために、ぜひフォーム設計の標準として取り入れてみてください。

Xでフォローしよう