第4回-1 コンポーネント

コンポーネント

ソフトウェアやアプリケーションを構築する部品 大別すると4つ

赤コンポーネント


ひとつのアプリに必ず一つしか存在しない、大元の赤コンポーネント。特に覚える必要はない(覚える事がない)

ウィンドウコンポーネント(緑コンポーネント)


「フレーム」と「ダイアログ」の2つ、どちらも用途に大差はない。
フレーム:ウィンドウサイズ変更する拡大・縮小機能がある。
ダイアログ:拡大・縮小が出来ない、モーダル(画面がトップに現れ、他が触れなくなる)が初期値で有効。

画面構成部品(青コンポーネント)

種類がとても多い、ユーザに向けて表示している情報入力させたり、データを表示しているのがこの青いコンポーネント


テキスト:①テキストフィールド
 全体的に非常によく使う。自由入力をさせる時に用いる、日付・品名・金額・特記事項など、ほぼこれを使って入力、非常に万能である。
 それ故にユーザが何を入力しても受理されてしまう事と2行目3行目といった改行入力は出来ない。

 ※類似で数値入力フィールド(入力を数値に限定)、日付入力フィールド(日付に限定)、パスワード入力フィールド(入力した値が表示されない、暗号入力に用いる)、マスク入力フィールド(入力出来る文字種を限定出来る。)


ボタン:②ボタン
 非常によく使う。いわゆるスイッチ。何かを始めるきっかけ。
ボタン:③トグルボタン
 基本は②ボタンと同じ、違いは押すと押しっぱなしになる。on状態かoff状態か認識しやすい。


テーブル:④テーブル
 非常によく使う。データベースの情報はテーブル状に保存される為、取得した情報をそのまま表示する事が多い。
 演算機能はないが一見エクセルの様なイメージ、テーブルデータをグラフ表示に転用可能な為、これを覚えればグラフも使える。
 グラフは「C:\MZPlatform\3.6\AP_DATA\Tutorial¥Lesson11(ガントチャート).mzax」
 もしくは「C:\MZPlatform\3.6\AP_DATA\Sample\グラフ化.mzax」が参考になる。


コンボボックス:⑤コンボボックスコンポーネント
 非常によく使う、リスト状のデータから(複数選択肢)から選ばせる時に用いる、例えば担当者とか受注先とかの選択時に便利である。
 ①で紹介したテキストフィールド系はユーザが自由記載が出来る為、ミスも発生するが、これはその心配が要らない。


チェックボックス:⑥チェックボックスコンポーネント
 ON・OFFで切替えが可能で、条件分岐を用いる時に使える。
 例えば受注リストを表示するシーンで過去データも検索するかどうかなど(イメージ:☑過去データ)。使用頻度は低い。


チェックボックス:⑦ラジオボタングループ
 まあまあ使う、ユーザ側に限定的選択の時に用いる、3~5種類程度の選択肢の時便利。
 例えば部署・商品区分・地域区分などで活用、コンボボックスに近いがもっと限定的に選択させる際に使用。


テキスト:⑧数値入力カウンタ
 ユーザに決まった数量の中で選択時に活用、上限・下限値も設定可。
 矢印で数値を増減出来るし、ダイレクト入力も可能。


テキスト:⑨テキストエリア
 自由記載が可能で①テキストフィールドとほぼ同じ。改行が可能なので特記事項や追記の所に用いる事が多い。


テキスト:ラベル(黄枠部)
 非常によく使う、図の通りだが説明や解説をユーザにする際に用いる。
 (画面上にテキストフィールドやボタンだけ配置してればユーザ側は意味不明になる為)。
 ※裏技的に背景色を変えたい時に予め、ラベルのBackgroundとForegroundの色を決めておいて、イベント起点で指定色を採用する方法もある。
  MZで色を選定するのはちょっと大変なのでこれは便利。

処理部品コンポーネント(ピンクコンポーネント)

実際には画面に登場する事はないが、裏での計算や内部処理を実施して、青コンポーネントにデータを渡す、裏方的存在がピンクコンポーネント


条件制御:等価演算(=)
 左オペランドと右オペランドが同じ値かどうかをみて、その後の条件分岐を行う時に用いる。
 等価演算(≠)はその逆で同じでは無いかどうかをみている。(=)の方を覚えておけば良いのでこっち(≠)は出番なし。

条件制御:等価演算(≧、>、≦、<)
 これは(=)の説明とほぼ同じ、数学的な意味合いが変わるだけなので、より大きい場合やより小さい場合など必要に応じて使い分けたら良い。

※次の論理演算は急にエンジニアっぽい雰囲気が出てくる。エクセルの関数だったり、PLC制御にも出てくるが、「うーん、頭が痛くなってきた・・・。」という方はこの辺は蓋をしても構わない。先に説明した演算処理がAとBの2つあったとして、双方(3つ以上も可)の結果に基づき条件分岐をする演算処理。あまり使わないので簡素に説明する。一覧参照(図2)


条件制御:
 ・論理積演算(AND)双方の結果が両方「true」の場合に「true」を返す
 ・論理和演算(OR)。どっちか一方が「true」の場合に「true」を返す
 ・排他的論理和演算(XOR)。双方が「true」もしくは「false」の場合に「false」を返し、双方が異なっていれば「true」を返す
 ・否定演算(NOT)。「true」ならば「false」、「false」ならば「true」を返す
 ・否定論理積演算(NAND)。演算処理が双方「true」ならば「false」、他は「true」を返す。
 ・否定論理和演算(NOR)。演算処理が双方「false」ならば「true」、他は「false」を返す。
 ・否定排他的論理和演算(NXOR)。演算処理が双方「true」もしくは「false」の場合に「true」を返し、双方が異なっていれば「false」を返す


 図2 論理演算のリスト (「true」が戻ってくるパターン)


条件制御:NULL判定
 これは非常に良く使う。指定した値がNULL(空っぽ)かどうかを判断して条件分岐を行う。
 例:ユーザが商品コードをデータベースに検索かけて何も返って来ない場合に用いたりする。
 ※ちょっと難しい話になるが「NULL」と「空文字」はシステム上意味が違うので気をつけて欲しい。NULLというのは本当に何も無い状態であり、空文字というのは「0字の文字列」が存在しているという認識になるので演算が上手くいかない時はこのケースがよくある。


条件制御:繰り返し制御(FOR、WHILE)
 よく使う、一言で「ループ処理」。
 例:受注リストが20行あって、本日納期の案件があるか無いかを探したりする時や発注リストがあって、手配品10個が入荷し納品日登録を一括処理する時に用いる。テーブルやリストに複数情報があって、そこに特定情報を引き出したい時やワンクリックで同じ内容を登録したい場合に便利。


演算制御:加算(+)
 説明不要かも知れないが、足し算。右オペランドと左オペランドに足したい数値を入れて、結果を求める事が出来る。
 演算制御コンポーネントには他に(-)、(×)、(÷)、(%)が用意されている。


ユーティリティー:タイマー
 「※ms(ミリ秒)」を設定して、その時間が来たらイベントが発生する。
 使い方としては毎秒イベントが発生する様にして現在時刻を表示したり、1時間毎に自動でデータ更新する時に用いる。
 ※「ms(ミリ秒)」は1/1,000秒なので1秒は1,000ms、1時間なら3,600,000ms。


ユーティリティー:カレンダー
 一般に毎日見ている様な「こよみ」イメージよりは、日付や時刻に関してデータを取得したり、表示方法を選択するコンポーネント。
 システム上、2019年4月1日12時34分56秒は「Mon Apr 01 12:34:56 JST 2019」と表示され、ユーザに馴染みがない。
 仮に「yyyy/MM/dd HH:mm:ss」と指定すれば「2019/04/01 12:34:56」と表示する事が出来る様になる。
 月日だけ時間だけなど表示方法は色々出来るので状況に応じて使い分ける。


ユーティリティー:音声再生
 任意のタイミングで音を鳴らす事が出来るコンポーネント。
 入力作業が上手くいった時に「ピンポ~ン」とかダメな場合「ブッブー」とか出来る。
 ユーザの入力認識を上げる意味で使えるが、工場ではうるさい事が多いので出番は乏しいかも知れない。
 ウィンドウズであればC:\Windows\mediaに音声ファイルが入っているので任意ファイルを指定すれば再生する。

※格納変数は種類が多くとてもよく使う。「変数?」と思われる方もおられるだろう・・、この気持ちは良く分かる。
数学的な「x」とか「y」に近いイメージ。「○○さん、おはようございます。」の「○○」も変数。
これら「格納変数」の役割は「データを保管する一時置場」である。
イメージとしては決まった情報を保存するというよりは毎回異なった情報を預けて入れる箱に近い。


変数:文字列格納変数
 よく使うパターンは、宣言文を先に記載して(例:x+y=12と宣言する)、次のプログラムでxやyを置換してxを10、yを2と変換するといった使い方。
 類似で数値用の「整数(Integer)格納変数」や日付用の「日付格納変数」というのもあるが、この「文字列格納変数」で代用が可能である。


変数:テーブル格納変数
 データベースとの連携時に必須であり、SQL実行後に取得したデータをテーブル格納変数に一時的に保管後、あおコンポーネントのテーブルに情報を表示するという流れになる。
 データベースから直接テーブル(あお)にはデータを保存する事は出来ない。
 因みに「リスト格納変数」は1行のデータを保管する際に用いる。


サブルーチンコンポーネント
 使い方は決まった処理を1回設定してそれをサブルーチン経由で設定すれば、いつでもワンタッチで同じ処理を起動出来る。
 他の使い方としては処理を見やすくする為に用いて、画面を整理する時にも使える。
ファンクションコンポーネント
 「サブルーチン」と類似しているが、異なる点は「引数」を使える変数に対して※引数を与えたい場合に使う。
 さらに階層を分ける時に用いる複合コンポーネント(緑)を使う場合にファンクションが階層を行き来する時の橋渡しとなる。
 ※引数は変数に渡す具体的な固定情報。「○○さん、おはようございます。」の○○に入れる「田中・山田・佐藤」のイメージ


データベース:データベースアクセス
 非常に良く使う、MZプラットフォームはユーザがデータを登録・参照して、情報を得る為のインターフェース。
 データベース活用が無いとただの画面構成ソフトになってしまう。
 あとの回で説明するがデータベースとMZの連携は多岐に亘る、データベースへ情報を入・出力の際に必ず出番があるコンポーネント


帳票
 MZで取得したデータ(例、受注リストや注文書など)を印刷する際に用いるコンポーネント。

まとめ

コンポーネントは非常に種類が多いが業務上で用いるのは40種程度となる。その中でもいくつかはワンパターンな使い方なので習うより慣れた方が良い所もある。