第47話 機能の設計

エヌ・ケイ・カスタマイズの沖田でございます。
1日1日が過ぎるのがとても早く感じる今日この頃であります。時間は平等に与えられているものなので、後悔しないように頑張っていきます!

前回は、スクリプトの自動化について学んできました。スクリプトを使用することによって、1つ1つの作業が自動化されますので、一度完成させてしまえば、誤操作を防ぐことができたり、作業の効率化にも繋がります。
今回は、スクリプトを実際にどのように考えて作成するのかを学んでいきます。

機能の設計

機能として自動化したいのは、ほとんどの場合、なにかの作業です。作業には決まった流れ、つまり順序があります。その中で、ボタンをクリックすることで自動で実行され、操作やなにかしらの結果が出力されるのに適した部分を決定します。
 そして、自動で実行される部分をスクリプトで作成します。これが機能となります。
   (1) 作業の流れ(順序)を考える
   (2)( 1)から自動化する部分を決定する
   (3)( 2)について詳細を決定する
単純な自動化であれば、設計なしでいきなりスクリプト作成を開始しても問題なくできそうです。しかし、複雑な自動化のためのスクリプトを手がけるようになると、いきなり作成を開始するよりも設計してからの方がつくりやすくなるはずです。

手書き、テキストエディタ、スクリプトワークスペースのコメント(後述します)などを使いながら考えます。手書きなら付箋を使って順番や組み合わせを考えてもわかりやすいかもしれません。

自動化するのはどこか

自動化する部分はどのように決定するのでしょうか。例としてこれまでブログに出てきた「演習タスク.fmp12」ファイルの新規レコード作成を題材にします。作業の手順は以下になります。
 (1) 新規レコードを作成する
 (2) 入力をおこなう

もう少し考えます。レイアウトの存在を考慮します。
よくあるのが、一覧画面では参照のみで一覧から詳細画面へ遷移した時に入力・修正ができる仕組みです。ですから、今の状態ですと、

 ・「 タスク一覧」レイアウトで新規レコード作成をおこなっても、すぐに入力できない

という事態が起こります。もし、入力できるように変更してもフィールドは4 つのみなので入力漏れができてしまいます。それよりも「タスク詳細」レイアウトに切り替えた方が入力しやすくなります。すると、次のように順序が細かくわかります。

作業の順序
  (1) 新規レコードを作成する
    (1-1) 「タスク一覧」レイアウトでタスクに新規レコードを作成する
    (1-2) 「タスク詳細」レイアウトへ切り替える
  (2) 入力をおこなう

作業の順序

この中で、(1-1) と(1-2) は、毎回手作業でおこなうよりもボタンで自動化されたほうがユーザにとって間違いがありませんし楽だから自動化します。

(1) 新規レコードを作成する
  (1-1) タスクの「新規レコード作成」
  (1-2) 「タスク詳細」レイアウトへ切り替える

この内容なら「タスク詳細」レイアウトで新規レコードを作成しても動作します。これで良さそうです。

簡単ではありますが、このように作業の順序から自動化する部分を決めます。新規レコード作成は、後ほどスクリプトで作成します。

(2) は自動化しません。毎回レコードに入力される内容が違うからです(フィールドオプションである程度設定はできます。 例えば、期限については、本日より1か月後を初期値として設定する。など)。ですから自動化は、次の部分です。

スクリプトに必要なこと
 では実際に、
 (1) 新規レコードを作成する
   (1-1) タスクの「新規レコード作成」
   (1-2) 「タスク詳細」レイアウトへ切り替える
 について考えていきます。

〇材料
 ・ どのレイアウトから実行するか、つまり、どの TOなのか
  → 新規にレコードを作成するのは、「タスク一覧」または「タスク詳細」レイアウト
  → 「タスク管理」TO
〇順序
 ・ どのような順番で作業するか(命令と結果)
  → 新規レコードを作成して「タスク詳細」レイアウトへ切り替える
〇成功の条件(完了)
 ・ どうなったら成功したか(どのような結果が出たら良いのか)
  (スクリプト作成後のテストで成功しているのか失敗しているのかわかるように)
  → 新規レコードが作成された状態で「タスク詳細」レイアウトが表示される

どのレイアウト(TO)でスクリプトを動作させるか、はとても重要なことです。タスクを削除するはずのスクリプトが担当者を削除したら困ります。適切なレイアウトがどこかを常に意識し必要時に切り替えます。

※1 つのスクリプトに命令は1 つとは限りません。「新規タスク作成」機能でも「新規レコード作成」「レイアウト切り替え」の2 つの命令が含まれています。命令の数の多さや、分岐(後述します)、反復の有無によってスクリプトは複雑になっていきます。

次回からは実際にスクリプトを記述していきたいと思います。数行のスクリプトであれば、一度見ただけでもどのような操作をしているのかがわかりやすくありますが、複雑かつ長いスクリプトになると、追うのも大変になってきます。今後出てくるコメント機能や命名規則等を定めることによって、メンテナンスのしやすいAppになります。
次回もよろしくお願いします。

Follow me!