初版シナリオテンプレートから作ったシナリオを動作させることが目的であれば、この記事は読み飛ばしていただいてかまいません。シナリオを改造したり、いちから作ってみようと思われたとき、じっくり取り組んでみてください。ステートの集まり=イベントウォークステートとは、ある時点のプログラムの状態を意味します。どのようなプログラムも、ステートの集まりと、各ステートでどのような事象(イベント)が起こった時にどのステートに遷移するか、という決まりごとを記述するものと言えますが、Connectの場合、特にステート・イベント・遷移を強く意識したものになっているため、あえてプログラムとは呼ばず、イベントウォークと言う造語で呼ぶことにしました。事象(イベント)を契機としてステート間を渡り歩くイメージです。ステート、コネクター、イベントステートでは通常複数のコネクターを起動します。コネクターにはGmail、Googleカレンダー、Facebook、スマートフォンのボタンなど、多くの種類が準備されています。コネクターは、ステートの指示により起動され、担当する外部サービス(Gmailなど)をアクセスし、指定された条件が満たされた時、イベントウォークにイベントを送ります。イベントウォークは、そのイベントを契機としてステート遷移を開始します。待ち時間など)にしたがって起動されます。この記事で例として使ったシナリオとイベントウォークはシナリオテンプレート「0008:スマートフォンのボタンでメール(Gmail版)」として公開されています。シナリオ設定シナリオ設定画面の右ペインにある「イベントウォーク編集」を押すと、イベントウォークの編集画面が現れます。イベントウォーク全体像どのイベントウォークも、最初はmainという名前のステートから実行を開始します。mainは何もせず次のステートに遷移する特別なステートです。main_exitのに遷移し、ここでイベントウォークが終了します。これは全てが正常に進んだ場合の経路であり「main系列」と呼びます。abortから始まる経路はmain系列でエラーやタイムアウトが起こった時に使われる経路「abort系列」です。abort_exitとなっており、ここでイベントウォークが終了します。以降、例を使いながらステートの設定項目を説明します。この記事では標準エディットモードのみを扱います。自由度の高いフリーエディットモードも使えるようになっていますが、それについてはイベントウォーク作成(フリーエディットモード)を参照してください。下の図は左ペインでstate2をクリックした状態です。右ペインにstate2の設定項目が現れます。state2ステート名ステートの名前です。2017年10月のアップデートから、ステート名が編集可能になりました。ピリオド(.)、アポストロフィ(‘)、ダブルクォート(“)、空白以外の文字が使えます。イベントウォーク内ですでに使われているステート名・ラベル名、予約語と重なる名前は指定できません。コメント自由なコメントです。このステートの目的などを書き込んでおくと、イベントウォークが読みやすくなります。文字種の制限はありません。ここで書き込んだコメントは、左ペインのステート上にマウスポインターを移動したときにポップアップ表示されます。ステート遷移このステートからステート遷移するときの条件と遷移先ステートを指定します。いずれかのコネクターからイベントを受け取った時、一つのステートに遷移(or)いわゆるOR条件です。このステートで起動した(一般に複数の)コネクターのいずれかから一つでもイベントを受け取った時点でステート遷移が開始されます。ステート遷移の過程で、採用されたイベントを発したコネクターを含めこのステートで起動した全てのコネクターが停止されます。標準エディットモードでは、遷移先ステートはシステムにより決定され、変更することはできません。上の図ではstate2からの遷移先はstate5です。すべてのコネクターからイベントを受け取った時、一つのステートに遷移(AND)いわゆるAND条件です。このステートで起動した(一般に複数の)コネクターの全てからイベントを受け取った時点でステート遷移が開始されます。ステート遷移の過程で、このステートで起動した全てのコネクターが停止されます。標準エディットモードでは、遷移先ステートはシステムにより決定され、変更することはできません。上の図ではstate2からの遷移先はstate5です。上記の定義から導かれることですが、コネクターを一つしか起動しないステートの場合、ORとANDはどちらを選択しても同じ結果となります。タイムアウトこのステートで起動したコネクターが長時間イベントを送ってこない場合に、永久にこのステートに留まってしまうのを避けるために使う時限装置です。インターバルに1(分)以上の値を指定すると、タイムアウトが有効になります。遷移先ステートは自動的に設定され、標準エディットモードではこれを変更する方法はありません。遷移先ステートは、編集対象のステートがmain系列にある場合はabortに、abort系列にある場合はabort_exitに設定されます。timeoutメソッドとの使い分けステートに設定するタイムアウトが起こると、ステート遷移条件が何に設定されているかにかかわらず、即座に指定されたステートに遷移します。timeoutメソッドからのタイムアウトイベントは、コネクターからのイベントの1つに過ぎませんので、ステート遷移条件に従います。timeoutメソッドを使って、次のようなことができます。(例)コネクターAのイベントコネクターBのイベントバスケットコネクターのタイムアウトイベント(例:5分後)の3つのイベントを待つステートで、ステート遷移条件をANDに設定することで、コネクターA、Bからイベントを(5分より前に)受け取ったとしても、最低5分経過するまでは次のステートに遷移しない。コネクターここでは、このステートで起動する(一般に複数の)コネクターメソッドと、それぞれの動作パラメーターを指定します。コネクター(label_4)コネクター(label_8)ラベル名このコネクターにつけるラベルの名前です。同じコネクターであっても「ステートにコネクターを追加」を行うたびに新しいラベルがつけられます。2017年10月のアップデートから、ラベル名が編集可能になりました。ピリオド(.)、アポストロフィ(‘)、ダブルクォート(“)、空白以外の文字が使えます。イベントウォーク内ですでに使われているステート名・ラベル名、予約語と重なる名前は指定できません。GUIのログタブに、該当コネクターの実行結果を表示するか否かを指定します。メソッドごとにデフォルト値が決まっており、通常変更する必要はありません。メソッドコネクターのメソッドを指定します。timeout入力パラメーターコネクターメソッドごとに必要な入力パラメーターが異なります。入力パラメーターにはあらかじめ決められている必須パラメーターと、利用者が作成できるオプショナルパラメーターがあります。出力パラメーターは利用者が指定できるものではなく、コネクターメソッドごとに決まっています。GUIにログイン後、右上アカウントメニュー→リファレンスの画面で、左ペインのコネクタークラスを選択してください。例のstate2では、青ボタンコネクターが次のパラメーターで起動されます。"定型メール送信"同じようにstate5を見ると、次のようになっています。{{consolidated.text}}(*){{consolidated.xxx}}は、このイベントウォークに与えられたパラメーターを参照する書式で、この場合シナリオパラメーター(図「シナリオ設定」参照)で指定された値を参照しています。このイベントウォーク全体は次のように表現できます。Connectアプリ内の青ボタンに「定型メール送信」というタイトルをつけ、ボタンを活性化。ボタンが押されると、シナリオパラメーターに定義された宛先、サブジェクトと本文でメールを送信する。