ページビューの合計

2017年7月10日月曜日

簡単! @関数だけで、一次承認ワークフロー ~その3

みなさま、こんにちは!
今週は明日の某社フォーラムや、金曜のノーツコンソーシアム ユーザー情報交換会と、私にとっては盛りだくさんな1週間です。
なんとなく上付いた気持ちに喝を入れつつ、本業に集中しております。

さて今回はいよいよワークフローに関わるアクションを作成して参ります。

まずは申請を送付するボタンです。


●申請
 式:
  @Command([FileSave]);
  @MailSend(Sendto;"";"";createdby+"からの申請通知";"";createdby+"からのフロー申請が届きました。"+@NewLine+"こちらをご確認ください ⇒ ";[IncludeDoclink] );
  @Command([FileCloseWindow])

 プリビュー(読み込み)・読み込みモード時に非表示
 式によりアクションを非表示にする:
  Status!="1.承認依頼中"|@IsDocBeingEdited=0


クリックすることで文書を保存し、承認者に文書リンク付のメールメッセージを送信します。
ステータスが「1.承認依頼中」の編集モード時に表示されるようにしています。


●承認
 式:
  @If(@IsDocBeingEdited; @True;@Command( [EditDocument] ; 1 ));
      @SetDocField(@DocumentUniqueID;"Sign";@Name([CN];@UserName));
  @SetDocField(@DocumentUniqueID;"Status";"2.承認済");
  @Command([FileSave]);
  @MailSend(createdby;"";"";Sendto+"からの申請承認通知";"";Sendto+"からの申請承認通知が届きました。"+@NewLine+"こちらをご確認ください ⇒ ";[IncludeDoclink] );
  @Command([FileCloseWindow])

 式によりアクションを非表示にする:
  Status!="1.承認依頼中"|@IsNewDoc=1


クリック時に承認者の氏名を「署名(Sign)」フィールドに登録し、ステータスを「2.承認済」に変更した上で文書を保存し、申請者へ承認されたというメールを送信します。
ステータスが「1.承認依頼中」且つ、新規文書でない場合に表示されます。


●却下
  @If(@IsDocBeingEdited; @True;@Command( [EditDocument] ; 1 ));
  @SetDocField(@DocumentUniqueID;"Sign";@Name([CN];@UserName));
  @SetDocField(@DocumentUniqueID;"Status";"3.却下");
  @Command([FileSave]);
  @MailSend(createdby;"";"";Sendto+"からの申請却下通知";"";Sendto+"により、申請が却下されました。"+@NewLine+"こちらをご確認ください ⇒ ";[IncludeDoclink] );
  @Command([FileCloseWindow])

 式によりアクションを非表示にする:
  Status!="1.承認依頼中"|@IsNewDoc=1


クリック時に却下者の氏名を「署名(Sign)」フィールドに登録し、ステータスを「3.却下」に変更した上で文書を保存し、申請者へ却下されたというメールを送信します。
こちらも承認同様、ステータスが「1.承認依頼中」且つ、新規文書でない場合に表示されます。


上記3つのアクションをフォームに加えます。
もちろん一般的な「編集」「戻る」「印刷」なども追加しておきます。

ビューには「終了」と「新規作成」ボタンを加えておきます。


以上でフローに関係するボタンの設計と表示が完了しました。

あとはフレームセットや、ナビゲータを加えれば、Notesクライアントとしての機能はほぼ完成となります。


申し訳ありません、確認時間が十分に取れないまま、公開してしまいました。
もし不備等ございましたら、修正させて頂きますので、ご了承ください。



2017年7月4日火曜日

簡単! @関数だけで、一次承認ワークフロー ~その2.1

みなさま、こんにちは!
台風が近づいてきてますね(汗
神戸は夕方の退社時間あたりが再接近のようです。
皆様、くれぐれもお気をつけください。

さて連日の掲載になりますが、昨日カレンダービューについての不具合を記載致しましたが、早速当日夜にIBM Champions for ICS 小野様よりサンプルDBが届きました!!
カレンダービューの列式を工夫することにより、解決されておりましたので、ご紹介させて頂きます。

結論としては、昨日作成したアプリでは、ビューの1列目に開始日を設定し、2列目の期間を複数日分の値を設定し、表現しようとしていました。
頂いたサンプルでは全く視点を変更したものでした。
1列目の日付に開始日と終了日を与え、@Explodeを使用し、複数値をリスト化するというものです。

確かに私個人でも、フォームの日付フィールドを複数値にするという案を考えたことがあったのですが、使用ユーザーの入力が煩雑になるため、採用していませんでした。

今回は列の計算式で複数化されているため、ユーザーの操作は全く変更することなく解決できました。

それでは頂きました情報について、案内させて頂きます。

まずカレンダービューを開きます。

1列目、「開始日」の値を下記式に変更します。


 開始日:式
StartTime := "08:00:00";
EndDate := @If(End=""; Start; End);
@TextToTime(@Explode(@TextToTime(@Text(Start) + "-" + @Text(EndDate)))  + " " + @Text(StartTime))


要はStartとEndをハイフンで繋いで複数化し、@Explodeを使ってリスト化するというものです。

列のプロパティでは、

 列情報タブ 複数値の分離記号:カンマ
 ソートタブ 複数値を別のエントリで表示にチェック


2列目については、

 期間:式
StartTime := @TextToTime("08:00:00");
EndTime := @TextToTime("18:00:00");
(EndTime - StartTime) / 60


とし、常に"600"となるようにしました。

以上で、ビュー上では日付ごとに分解されたリストとして表示されることになります。


実際にビューを見てみましょう。


この例では、7月4日~7日に有給休暇届けを。
10日~12日に遅刻届けを作成したものになります。

もちろんそれぞれ1文書で申請した内容であり、無事カレンダービューにて3日以上のエントリーが表示されるようになりました。


小野様、とても迅速なご提案ありがとうございます!!
この不具合はかなり以前から気になっていたのですが、小野様のおかげで心からスッキリさせて頂きました。
既に社内アプリケーションの全ての改修も完了致しました!

2017年7月3日月曜日

簡単! @関数だけで、一次承認ワークフロー ~その2

みなさま、こんにちは!
今週から7月。暑くなりますが、イベントも目白押しで、夏バテしている暇もありません。
特に来週末にはノーツコンソーシアム ユーザー情報交換会が秋田の『TDK歴史みらい館』にて開催されます。年数回ですが、ユーザー会員の皆様とお会いできることが楽しみで仕方ありません。

それでは本日の内容について始めさせて頂きます。
先日に引き続き、今回は主にワークフローのビューを作成して参ります。


●申請日順|byDate
 申請日:created
  ソート:降順
 申請者:Dsp_Applier
 内容:Title
 開始日:Start
 終了日:End
 期間:@Text(Term)+"日"
 承認者:Sendto
 ステータス:Status



●ステータス別|byStatus
 ステータス:Status
  展開できる行に三角アイコンを表示する
  昇順・カテゴリ別
 申請日:created
  ソート:降順
 申請者:Dsp_Applier
 内容:Title
 開始日:Start
 終了日:End
 期間:@Text(Term)+"日"
 承認者:Sendto



●申請者別|byApplier
 申請者:Dsp_Applier
  展開できる行に三角アイコンを表示する
  昇順・カテゴリ別
 申請日:created
  ソート:降順
 内容:Title
 開始日:Start
 終了日:End
 期間:@Text(Term)+"日"
 承認者:Sendto
 ステータス:Status


なおせっかく日付と期間のフィールドがありますので、カレンダービューも作成してみましょう。


●カレンダー|Calender(スタイル:カレンダー) 
 開始日:Start
  ソート:昇順
  日付の表示 及び 時刻の表示 の両方にチェック
  列を非表示
 期間:(End-Start)/60 (分単位に変換)
  列を非表示
 申請者:Dsp_Applier+"【"+Title+"】"


カレンダービューの作り方はヘルプに記載されていますが、要点として
 1列目:日時(日付と時刻の両方を表示)/昇順/非表示
 2列目:期間(分単位で期間を設定、必要なければ、デフォルト値で"0"でも可)/非表示
 3列目:カレンダーに表示する内容
となります。



なお本ビューについてひとつ不具合がございます。
期間が2日以内ですと、正しくカレンダーに両日表示されるのですが、3日を超えますと初日にしか表示されません。

上記ですと、6/19の申請は6/19~21の3日間の申請になりますが、カレンダーには初日のみしか表示されません。
反して6/26の申請は、6/26~27の2日間の申請であり、正しくカレンダーに表示されています。


但し、設計側で見ると正しい数値が設定されております。

こちらがカレンダーの設計画面です。
2列目に分の値が正しく入っていることが分かります。


もしご存知の方いらっしゃいましたら、フォロー頂けますと幸いです。

簡単ですが、以上でビューの準備が完了致しました。
次回はいよいよフローに関わるアクションを作りたいと思います。


2017年6月26日月曜日

簡単! @関数だけで、一次承認ワークフロー ~その1

みなさま、こんにちは!
今週で6月も終わりですね。当初は雨が少なく水不足が心配されましたが、ようやく梅雨らしくなって参りました。
個人的にはあまり雨で好きではありませんが、特に農家の方々など、必要なときに必要な降水量は必要かと思いますので、「例年並み」が好ましいのでしょうか。

さて全く話題は異なりますが、海水浴シーズン目前ということでひとつだけ宣伝を!!

海の「もしも」は118番



詳しくはサイトをご覧ください。

ちょうど今週日曜に、舞鶴にあります海上保安学校にて【五森祭】が開催されます。
去年に引き続き、今年も参加させて頂きます。
また可能な写真等はフェイスブックに掲載させて頂きます。



それでは本題です。
今回から数回に分けて、@関数だけで簡単な一次承認のワークフローを作ってみたいと思います。内容としては、よくある勤務に関わる届出として作成致します。
今回も作りながら記事にしておりますので、後ほど修正が入るかもしれませんが、何とぞご容赦ください。


早速ですが、新規のアプリケーションを作成します。(以前までに作成したユニバーサルテンプレートを利用していただいても構いませんが、本文面についてはこちらは使わずに説明を行います。)


 サーバー:Local
 タイトル:自由
 ファイル名:自由


私の設定は下記のようにしました。


続いて新規フォームを作成します。


 名前:自由
 別名:自由(但し、半角英数を推奨)


私の設定は以下としました。


続いて以下フィールドを作成します。


●届出内容(入力必須)
 名前:Title(編集可能)
 種類:ダイアログリスト
     選択肢を入力
      遅刻
      早退
      有給休暇(その他、必要に応じて追加ください。)
 入力の確認:@If(Title="";@Failure("[届出内容]の指定は必須です。");@Success)



●申請者(入力必須)
 名前:Applier(編集可能)
 種類:ダイアログリスト
     アドレス帳から選択
 デフォルト値:@Name([CN];@UserName)
 入力の確認:@If(Applier="";@Failure("[申請者]の指定は必須です。");@Success)
 段落を非表示:プリビュー(読み込み)・読み込みモード・印刷・埋め込み・クリップボードへのコピー


本来、本人が申請者であることが多いのですが、代理で申請する場合も考慮し、初期値としてデフォルトユーザーを設定していますが、アドレス帳から選択できるようにも対応しております。


●申請者(表示用)(入力必須)
 名前:Dsp_Applier(計算結果)
 種類:テキスト
 式:@Name([CN];@DbLookup("";"サーバー名":"names.nsf";"($Users)";Applier;"AltFullName"))
 段落を非表示:プリビュー(編集モード)・編集モード


こちらのフィールドに、DJXを参照し、申請者を漢字化しました。


●承認者(入力必須)
 名前:Sendto(編集可能)
 種類:ダイアログリスト
     アドレス帳から選択
 入力の確認:@If(Sendto="";@Failure("[承認者]の指定は必須です。");@Success)


上司(承認者)を選択するダイアログです。


●期間(開始日)(入力必須)
 名前:Start(編集可能)
 種類:日付/時刻
 スタイル:日付/時刻制御
 サイズ:幅 10 固定(文字)
 入力の確認:@If(Start="";@Failure("[開始日]の指定は必須です。");@Success)


対象期間の開始日を選択します。


●期間(終了日)(入力必須)
 名前:End(編集可能)
 種類:日付/時刻
 スタイル:日付/時刻制御
 サイズ:幅 10 固定(文字)
 入力の確認:@If(End="";@Failure("[終了日]の指定は必須です。");@Success)


同じく終了日を選択します。同日の場合でも必須としています。


●期間
 名前:Term(計算結果)
 種類:数値
 式:@If(Start="";"";End="";"";(End - Start)/86400+1)


先のふたつの日付フィールドの差から、日数を計算しています。



●事由(入力必須)
 名前:Reason(編集可能)
 種類:テキスト
 入力の確認:@If(Reason="";@Failure("[事由]の指定は必須です。");@Success)



理由を記載する項目です。


私のイメージでは下記のようになりました。


次にフォームのウィンドウタイトルの設定を行います。


 @If(@IsNewDoc;"新規フロー 作成中";Title+"届【"+Dsp_Applier+"】")


ウィンドウタイトルに、新規作成の場合は、「新規フロー 作成中」と表示。既存文書の場合は、「○○届け【氏名(漢字名)】」と表示させています。


再度に著作関連(登録日・登録者・編集日・編集者)のサブフォームを作成し、埋め込みます。
※著作関連サブフォームについては、以前のユニバーサルテンプレートをご覧ください。

それでは一度、IBM Notesでプリビューしてみましょう。
以下のように表示されるかと思います。


次にフロー部分のフィールドを追加します。

フォームの先頭にフローの状況を表示するステータスフィールドを追加します。


 名前:Status
 種類:テキスト
 デフォルト値:"1.承認依頼中"


ワークフローということで、アクションボタンでステータスを切り替えるため、あえてダイアログにせず、テキストとしています。

続いてサブフォームのすぐ上に、承認者の署名欄を作成します。


 名前:Sign
 種類:テキスト
 


今回は以上にてフォームのフィールド配置までを行いました。
次回は必要なビューを作成して参ります。




2017年6月19日月曜日

ExcelのデータをNotes文書にするVBAのサンプルファイル

みなさま、こんにちは!
アリンコに要注意な島からの情報発信です(汗

先週のテクてく、いかがでしたか?
大阪でのPVに参加したかったのですが、本業の会議と重なり、どうしても参加できませんでした。せめてリモートで画面だけとパソコンを持ち込んだのですが、それもできず。
資料のみ入手して、我慢しております。
大阪のPVは継続頂けるようですので、今回ご参加できなかった皆様も、ぜひ来月はご一緒しましょう!!

さて先月、標題記事を記載させて頂きましたが、本日は配布できそうな状態のExcelファイル(.xlsm)が完成しましたので、そちらの紹介とサンプルダウンロードへのリンクを掲載させて頂きます。

早速ですが、サンプルのダウンロードはこちらよりお願いします。

中身ですが、シートは全くのブランクになります。

標準モジュールとして以下のふたつを含んでおります。

●ExcelのSheet1の1行目の値をNotesの指定データベースの指定フォームにインポートした新規文書を保存する。最後にSheet1の1行目を削除する。


Private Sub import_notesdb()

Dim Session As Object
Dim db As Object
Dim doc As Object

Set Session = CreateObject("Notes.Notessession")
Set db = Session.GetDatabase("サーバー名", "データベース名")
Set doc = db.createdocument(db)

doc.form = "フォーム別名"
doc.フィールド名1 = Range("A1").Value
doc.フィールド名2 = Range("B1").Value
doc.フィールド名3 = Range("C1").Value
doc.フィールド名4 = Range("D1").Value
doc.フィールド名5 = Range("E1").Value
doc.フィールド名6 = Range("F1").Value
doc.フィールド名7 = Range("G1").Value
doc.フィールド名8 = Range("H1").Value
doc.フィールド名9 = Range("I1").Value
doc.フィールド名10 = Range("J1").Value
doc.フィールド名11 = Range("K1").Value
doc.フィールド名12 = Range("L1").Value
doc.フィールド名13 = Range("M1").Value
doc.フィールド名14 = Range("N1").Value
doc.フィールド名15 = Range("O1").Value
doc.フィールド名16 = Range("P1").Value
doc.フィールド名17 = Range("Q1").Value
doc.フィールド名18 = Range("R1").Value
doc.フィールド名19 = Range("S1").Value
doc.フィールド名20 = Range("T1").Value
doc.フィールド名21 = Range("U1").Value

Call doc.Save(True, True)

Sheets("Sheet1").Select
Rows("1:1").Select
Selection.Delete Shift:=xlUp

End Sub


赤字部分は貴社環境に合わせて変更してください。
項目は多めに記載していますが、必要に応じて増減させてください。

前回の記事ではPublic Subとしていましたが、実際のインポートは次に作成する繰り返しの処理で行いますので、Private Subに変更しています。


●Sheet1のセルA1が"空白"になるまで、処理を繰り返す。


Sub インポート()
    Do Until Sheets("Sheet1").Range("A1") = ""
        Call import_notesdb
    Loop
End Sub


もし1列目にタイトル行がある場合は、列番号に関わる部分を"2"などに修正してください。


サンプルの紹介は以上になります。

先日も書きましたが、弊社では基幹システムのデータをExcelやCSVに抽出し、Notesに取り込む作業がいくつかありますが、現在はすべてVBAに切り替えました。

今後は、ユーザーが申請するワークフローで、フィールド数の多いものなどについて、エクセルでの入力フォームを配布し、ユーザー各自がVBAを利用してNotes文書に登録できるような運用にも利用予定です。


ぜひお試しください!!


2017年6月12日月曜日

ユニバーサルテンプレート~フレームセット①~

みなさま、こんにちは!!
先週金曜は、ノーツコンソーシアム 大阪研究会に参加させて頂きました。
今回のテーマは、Y様によるWEB化に関するセッションと、各自アプリを持ち寄っての討議が中心でした。
WEB化については、実際にブラウザで使う機能を中心に作ることや、成功への道筋について教わりました。
各自のアプリも日常のヒントとなるものが多く、興味深いものでした。

今週金曜は、テクてくLotus技術者夜会があります。
なんとかしてリモートでも参加したかったのですが、どうしても本業の会議があり、今回は参加できません。
今回も大阪にてパブリックビューが開催されますので、ぜひ関西でノーツに関わりのアル方は、日程調整ください。


前置きが長くなりましたが、今回はフレームセットと合わせてメニュー部分のナビゲータをテンプレートに組み込んでみます。
従来弊社では、ナビゲータではなくアウトラインをページに埋め込んでメニューとしていましたが、見た目や使いやすさ、さらにメニューの分割なども考慮し、ナビゲータを使うように変更しております。

ということで、まずはナビゲータから作成します。
デザインについては好みや企業カラー等で分かれるところですので、今回の内容からは除外させて頂きます。
[新規ナビゲータ]を作成し、左上にアプリケーションの名称を入れるテキストボックスを作成し、今回は「タイトル」と記載しておきます。


続いてその下に四角形を追加していき、標題に[ビュー名]を設定していきます。


テンプレート内にはビューがひとつしかありませんので、先頭の四角形についてシンプルアクションを設定しておきます。

[ビュー/フォルダを開く] - [一覧]


ハイライトの設定も行っておきましょう。


以上でナビゲータができました。

続いてフレームセットを作成します。
[新規フレームセット]を作成します。
今回は下記のような設定で作成しました。


続いて各フレームの設定です。

左列
 名前: menu
 種類: 名前付き設計要素 ナビゲータ
 値: メニュー
 フレーム内のリンクのデフォルト対象: body

右列
 名前: body
 種類: 名前付き設計要素 ビュー
 値: 一覧

以上で以下のように表示されました。


以上で保存して閉じます。

最後に起動時の設定を行いますので、[アプリケーション構成] - [アプリケーションのプロパティ]を開きます。

[起動]タブにて

 起動: 指定したフレームセットを開く
 フレームセット: メイン

を選択し、保存して閉じます。

以上でノーツクライアント用としてのテンプレートは現時点では完成です。
もちろん今後も新たな機能は随時追加し、どんどん良くしていく予定ですが、まずはこちらをテンプレートとして保存し、今後の新規作成時に使用して参ります。

テンプレート化については、【第8回】タイムレコーダーアプリ作成~テンプレート化~をご覧ください。


さて、次回は・・・どうしたことか。

2017年6月5日月曜日

ユニバーサルテンプレート~アクション①~

みなさま、こんにちは!!
先月のテクてくLotus技術者夜会 ザ・大阪編、いかがでしたでしょうか。
私の発表はともかく、他の皆様の発表は本当に興味深いものが多かったはずです。
まだ資料はアップされておりませんが、近日には公開されるかと思いますので、参加できなかった皆様もぜひご一読ください。
また先週書きましたが、今週金曜は「大阪地区研究会第 2 回」です。お時間ございましたら、ぜひご参加ください!!

さてのびのびになっておりましたが、今回こそユニバーサルテンプレートのアクションを追加して参ります。

実際に作成する前に、システムアクションとして準備されているものをおさらいしておきましょう。

・分類
・文書の編集
・文書の送信
・転送
・フォルダへ移動
・フォルダから削除
・既読
・未読
・新規ウィンドウで開く
・印刷
・削除
・文書のプロパティ
・切り取り
・コピー
・文書リンクとしてコピー
・表としてコピー
・貼り付け


主要なアクションはこちらに揃っているのですが、それでも不足するものや、複雑な機能のアクションを[コード] - [共有アクション]に作成します。


まずは[戻る]です。フォームに設置し、何もせずにビューに戻るというものです。

式: @Command([FileCloseWindow])

単純に現在開いているウィンドウを閉じるだけのものです。
同じ式でビュー用に[終了]も作っておきましょう。



次に[保存]です。こちらもフォームに設置し、データを保存して閉じる機能を設定します。

式:
 @Command([FileSave]);
 @Command([FileCloseWindow])

なお保存するという行為は文書がプリビュー時には必要ないアクションですので、[プリビュー(読み込み)]と[読み込みモード]時に非表示にしておきます。


次に[新規作成]ボタンです。ビューに設置し、新しいフォーム文書を作成するためのボタンです。

式: @Command([Compose];"library")


この例では、別名「library」というフォームを新規作成モードで開くものになります。

以上でよく使用するアクションが作成できました。
それぞれ文中の要素(フォーム/ビュー)のアクションに追加しておきます。

共有アクションの追加は、アクションペインを右クリックし、[共有アクションの挿入]から行います。一度に複数のアクションを追加することも可能です。



なお私はシステムアクションと同機能のボタンを作成しているものがあります。
意図としては、システムアクションではデフォルトでアイコンが設定されておらず、いちいち設定することが手間なことによります。

[印刷]・・・ 式: @Command([FilePrint])
[削除]・・・ シンプルアクション: 文書の削除
[転送]・・・ 式: @Command([MailForward])
[編集]・・・ 式: @Command([EditDocument])
※編集ボタンのみ[プリビュー(編集モード)]と[編集モード]時及び新規文書として作成時に非表示としています。([式によりアクションを非表示にする]・・・ 式: @IsNewDoc)



最後に、個人的によく使うアクションをいくつか紹介致します。

[通知保存]・・・フォーム内に[sendto]という名前フィールドを作成し、ボタンクリック時にその方へ文書リンクを含むメールを送信するというものです。

式:
 @Command([FileSave]);
 @MailSend(sendto;"";"";createdby+"からのメール通知";"";createdby+"からのメール通知が届きました。"+@NewLine+"こちらをご確認ください ⇒ ";[IncludeDoclink] );
 @Command([FileCloseWindow])

保存せずに閉じてしまうと、文書リンクが途切れますので、保存⇒メール送信⇒閉じるという順にしております。
@NewLineでメール本文に改行を入れることが可能です。
こちらも保存ボタン同様、[プリビュー(読み込み)]と[読み込みモード]時に非表示にしておきます。


次にワークフローなどで使用する[承認]ボタンです。
フォーム中に t_syoninという名前フィールドを作成し、ボタンクリック時にクリックした人の名前を保存するというものです。

式:
 @If(@IsDocBeingEdited; @True;@Command( [EditDocument] ; 1 ));
 @SetDocField(@DocumentUniqueID;"t_syonin";@Name([CN];@UserName));
 @Command([FileSave]);
 @Command([FileCloseWindow])

最後にビューに設置し、全文書を再計算させるアクションです。
弊社ではAS400のマスタをノーツDBとしてリンクしていますが、そのDBをLookupしている文書は都度更新しなければ、最新状態になりませんので、その対応用のアクションになります。

式: @Command([ToolsRefreshAllDocs])

なお上記以外についても、ノーツアイコン以外のアイコンをボタンで使用する場合などについても登録しています。

その場合はイメージリソースに画像ファイルを読み込んでおき
※私は内容が分かりやすいように、別名をコメント代わりに使用しています。


アクションのアイコンで選択すると簡単です。



以上、少し長くなりましたが、現時点で弊社で使用している共有アクションについて記載させて頂きました。
もしこんなのあれば便利というものがあれば、ご紹介ください。

次回はナビゲーターを予定しております。