はじめに
Curlでは、Curl開発者向けに技術情報サイト「Curlデベロッパーセンター」を公開しています。このサイトの「逆引きリファレンス」で紹介している記事の中から、人気の記事をピックアップしていきます。
本稿では、前後編の2回に分けて業務向けのWebアプリケーションに必要な機能の1つであるデータ操作に着目します。前編となる今回は「バリデーションチェック」と「ActiveXを使用したExcelデータ操作」について紹介していきます。
業務画面からデータを入力する際、エラー表示されずに送信完了までスムーズにできれば、ユーザーのストレスは軽減され、業務効率を向上させることができます。しかし、一般的なWebアプリケーションの場合、エラーが複数回表示されてユーザーにストレスを与えてしまい業務効率の低下をまねくことになります。
また、ユーザーがローカルマシンにインストールされたアプリケーションにアクセスする必要がある場合、一般的なWebアプリケーションではアクセスが制限されてしまいます。
これらの悩みをCurlのリッチクライアント/RIAの技術で解決できます。
必要環境
サンプルアプレットの利用には、Curlの開発環境Curl Development tools for Eclipse(CDE)が必要になります。CDEは、住商情報システムのWebサイトよりインストールできます。
サンプルアプレットの実行には「特権」の設定が必要になる場合があります。特権(※注意)の設定方法は、こちらを参照ください。
「特権」とは、対象のアプレットに対してローカルソースにアクセスできる権限を与えることです。
バリデーションチェック
業務アプリケーションを作成する際に、フォームに入力した値をチェックする検証の仕組みは欠かせない機能になります。全てのフォームを入力して[送信]ボタンを押したらエラーメッセージが出てしまい、エラーの該当箇所を探して再度[送信]ボタンを押す、といった作業が複数回続くと、ユーザーにとってはストレスとなり入力フォームからの離脱を増加させてしまいます。
Curlアプリケーションでは、このチェック機能をサーバー側ではなくクライアント側で行うことができます。入力フィールドに入力された値が一定の規則に従っているかをチェックし、Curlならではの使い勝手のいい操作感を簡単に提供できます。これによりユーザーの入力するストレスを軽減させ、ユーザーエクスペリエンスの向上を図ります。
個別アイテムのValidationチェック
ここでは、個別フィールドに対してのValidationチェックを解説します。まずは、色々な検証フィールドを見てみましょう。
||数値検証 {let numeric-val:TextField = {TextField width = 3cm, {validate-with {NumericValidator}, message = "年齢は数値で記入してください。" } } } ||文字列検証 {let string-val:TextArea = {TextArea height = 3cm, width = 3cm, {validate-with {StringValidator max-chars=30}, message = "コメントは30文字以内です。" } } }
Curlでの検証機能には、validate-withプロシージャを使用します。その中で、Validatorクラスの引数を指定して、検証する法則を決定します。
上記の検証では、1つ目で数値(NumericValidator)、2つ目で文字列の検証(StringValidator)を行っています。文字列では、最小文字数(min-chars)や、最大文字数(max-chars)を設定することが可能です。
では、次の例を見てみましょう。
||正規表現検証 {let phone-val:TextField = {TextField width = 3cm, {validate-with {RegExpValidator.from-ValidationPattern ValidationPattern.ja-phone-number}, message = "電話番号が不正です。", dialog-on-finished? = true } } } ||正規表現検証2 {let md:MessageDisplay = {MessageDisplay}} {let email-val:TextField = {TextField width = 3cm, message-display = md, {validate-with {RegExpValidator.from-ValidationPattern ValidationPattern.email-address}, message = "メールアドレスが不正です。" } } } ||ドメイン検証 {let md2:MessageDisplay = {MessageDisplay}} {let domain-val:TextField = {TextField width = 3cm, message-display = md2, {validate-with {DomainValidator {StandardDateDomain}}, message = "日付は、[日/月/西暦]の形式で記入してください。" } } }
RegExpValidatorクラスは、正規表現に基づいた検証を行います。今回はfrom-ValidationPatternコンストラクタを使用し、標準APIに組み込まれているValidationPatternという列挙型のクラスを使用しています。正規表現については、Curlの技術情報サイト「Curlデベロッパーセンター」の『逆引きリファレンス-データ操作-正規表現』を参照ください。
DomainValidatorクラスは、ドメイン(データ型から生成されます。例えば、String、int、Timeなどの型を指します)の検証を行います。今回は日付のみの検証を行うために、StandardDateDomainクラスを使用しています。
添付のサンプルコードをダウンロードすると、実際の動作を確認できる(※注意)ので、試していただければと思います。
現状では、ValidationPatternのja-phone-numberに携帯電話の番号が対応していないため、サンプルコードにて携帯電話用を検証できる正規表現の列挙型を追加してあります。
以下に、関連情報のサイトを紹介します。