第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の連携はボリュームが多いが、このコンポーネントを用いてデータベースへデータを入力したり、出力したりする際に必ず出番があるコンポーネント


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

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