Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】🚀 Scripting Component Behavior in Uniface 10.4: A Beginner's Guide

2025年10月05日に「Dev.to」が公開したITニュース「🚀 Scripting Component Behavior in Uniface 10.4: A Beginner's Guide」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Uniface 10.4でアプリ部品(コンポーネント)の挙動をProcScriptでカスタマイズする方法を解説。Write Scriptワークシートを使い、イベントに応答する「トリガー」や再利用可能な「オペレーション」を作成する。コードスニペットで効率化でき、継承コードの上書きやJavaScript利用も可能と説明。

ITニュース解説

Uniface 10.4でアプリケーションを開発する際、単に画面を表示するだけでなく、その部品(コンポーネント)が特定の状況でどのように動作するかを細かく設定できる機能が「コンポーネントスクリプト」である。Unifaceはデータ処理、データのロック、トランザクション管理といった基本的な振る舞いを標準で提供しているが、これに加えて独自の機能やロジックを追加したり、既存の動作を変更したりする場合にProcScriptという専用の言語を使ってスクリプトを記述する。

スクリプトを記述するための主要な作業場所は「Write Scriptワークシート」と呼ばれる画面だ。Component Editorを開き、「Write Script」タブをクリックすることでアクセスできる。このワークシートの左側にある「Structureペイン」で、スクリプトを追加したい対象(コンポーネント全体、特定のエンティティ、あるいは個別のフィールド)を選択すると、右側の「Code Editor」にスクリプトを記述する領域が現れる。この領域は主に「Declarations」(変数の宣言などを行う場所)と「Script」(実際の処理を書く場所)の二つに分かれている。

スクリプトのコードは主に二つの形式で整理される。一つは「トリガー」であり、もう一つは「オペレーション」だ。 「トリガー」は、特定のイベント(例えば、ユーザーがボタンをクリックする、フィールドのデータが変更される、画面が開かれるなど)が発生したときに、自動的に実行されるように設定されたコードブロックである。これは、他のプログラミング言語におけるイベントハンドラのようなものだと考えると分かりやすいだろう。例えば、trigger detail ... endという形で記述されたトリガーは、詳細情報がクリックされたときに実行され、「You clicked on a detail!」というメッセージを表示する、といった振る舞いを定義できる。 一方、「オペレーション」は、特定の処理をひとまとまりにした「再利用可能なコードブロック」である。これは他の言語における関数やメソッドに似ており、コンポーネント内のどこからでも必要に応じて呼び出すことができる。例えば、operation CalculateTotal ... endというオペレーションを作成し、その中に金額と数量を掛け合わせて合計を計算するロジックを記述すれば、この計算処理が必要な場所でCalculateTotalを呼び出すだけで実行できる。オペレーションの中では、variables ... endvariablesを使って一時的な変数を宣言することも可能だ。

Unifaceでのスクリプト開発を効率化するために、「コードスニペット」という便利な機能も用意されている。これは、よく使う定型的なコードのひな形(テンプレート)をあらかじめ用意しておき、簡単な操作でコードエディタに挿入できる機能だ。Resource Browserを開き、HTML用またはProcScript用のスニペットライブラリから必要なスニペットを選択し、右クリックして「Insert」を選ぶだけで、すぐにカスタマイズ可能なコードが挿入される。これにより、ゼロからコードを記述する手間が省け、開発速度が向上する。

スクリプトを記述する上で理解しておくべき重要な概念に「コードの継承」がある。Unifaceでは、エンティティやフィールドといったデータベースに関連する部分に事前にコードを記述しておくことができる。そして、そのエンティティやフィールドを使ってコンポーネントを作成すると、それらのコードは自動的にコンポーネントに「継承」される。しかし、ここで一つの重要なルールが存在する。もし継承されたコードを持つトリガーに対して、コンポーネント側で同じ名前のトリガーを新しく記述した場合、コンポーネントで新しく書いたコードが優先され、継承された元のコードは「上書き」されて実行されなくなる。これにより、一般的な共通処理は継承しつつ、特定のコンポーネントでのみ異なる振る舞いをさせたい場合に柔軟に対応できる。

実世界の例として、ユーザーが入力したデータをデータベースに保存する前に、その入力内容が正しいかを検証するシナリオを考えてみよう。例えば、顧客名が空欄でないことを確認したい場合、trigger detail内に検証ロジックを記述できる。具体的には、顧客名を変数vNameに取得し、if (vName = "")という条件で空欄かどうかをチェックする。もし空欄であれば、「Customer name cannot be empty!」というメッセージを表示し、return -1とすることで処理を中断させ、データが保存されないようにできる。これにより、不正なデータが登録されることを防ぎ、データの品質を保つことが可能になる。

Unifaceはデスクトップアプリケーションだけでなく、Webアプリケーション開発にも対応しており、「Dynamic Server Pages(DSP)」という形式でWebページを構築できる。DSPを使用するWebアプリケーションでは、クライアントサイド(Webブラウザ側)の動的な振る舞いを実現するためにJavaScriptも利用できる。UnifaceはJavaScript APIを提供しており、これを使うことでJavaScriptコードからUnifaceのオブジェクトに直接アクセスし、相互に連携する動作を記述できる。

まとめると、Uniface 10.4におけるコンポーネントスクリプトは、Write Scriptワークシートを使い、トリガーでイベントに応じた自動処理を記述し、オペレーションで再利用可能な処理をまとめることで、アプリケーションにカスタムな振る舞いを追加する機能である。コードスニペットを活用すれば開発を効率化でき、コードの継承ルールを理解することで、より柔軟なアプリケーション設計が可能になる。また、WebアプリケーションではJavaScriptも利用できるため、多岐にわたる要件に対応できる。

スクリプトを記述する上でのベストプラクティスとして、まずUnifaceが提供するデフォルトの振る舞いを最大限に活用し、本当に変更や追加が必要な部分のみにスクリプトを記述することが推奨される。トリガーやオペレーションには、その機能が分かりやすい意味のある名前を付け、Structureペインを効果的に活用してコードを整理することが重要だ。また、記述したスクリプトはデプロイ(実際に利用できる状態にすること)する前に、十分にテストを行い、期待通りに動作することを確認する必要がある。コードスニペットは単にコードを挿入するだけでなく、開発全体で一貫したコーディングスタイルを保つためのテンプレートとしても活用できる。

これらの基礎を学んだら、実際に手を動かしてみることが理解を深める一番の近道だ。例えば、シンプルな入力フォームのコンポーネントを作成し、特定の入力フィールドにデータを入力した際に、その内容が正しいか(例えば空欄でないか)をチェックするトリガーを追加してみる。さらに、複数の入力値を使って計算を行い、結果を表示するオペレーションを作成してみよう。Resource Browserからコードスニペットを挿入し、それをカスタマイズする練習も有効だ。最後に、Compile and Test機能を使って、作成したコンポーネントとスクリプトが正しく動作するかを確認する、という一連のステップを実践することで、Unifaceでのプログラミングスキルを着実に向上させることができるだろう。

関連コンテンツ

関連IT用語