一覧画面の作成
ここでは、一覧画面を作成する際の基本的なフローと設定について紹介します。
このケースは、Accel Studioの「マスタメンテナンス」テンプレートの一覧画面をもとに説明しています。コンテンツ種別はBulmaです。実際の画面や設定などを確認したい場合は、「ローコード開発チュートリアルガイド - 4.2.2. テンプレートからアプリケーションのベースを作る」を参照し、アプリケーションを生成してください。
Step 1 画面レイアウトとデザイン調整
一覧画面は、データや情報をテーブル形式で表示するための画面です。1つの画面を分解すると、以下のような構成要素に分けられます。それぞれの要素はコンテナ単位で整理しています。

- 画面のレイアウトやデザイン調整方法については、「画面レイアウトとデザイン調整」を参照してください。
- コンテナページに分ける手順については、「画面デザインの編集 > コンテナページに分ける」を参照してください。
一覧画面のレイアウト構成やデザインについては、「intra-mart Design System - 一覧画面」を参照してください。
Step 2 画面変数の設定
一覧画面の表示や操作に必要な変数をあらかじめ準備します。
変数($variable)の準備
画面内で使う変数は、画面の操作によって変化する値やサーバ通信で利用する値だけでなく、一覧画面の見た目や列の種類を定義するための値も定義します。
ここでは、主に次の変数を準備します。
state:画面表示・操作用の状態変数endPoint:サーバ通信関連headerRowString:列ヘッダ表示文字列columnSettings:列ごとの表示・型設定
これらの配下に含まれる変数については、下記の一覧を参照してください。

- state
- endPoint
- headerRowString
- columnSettings
stateは、画面上の表示状態や操作状態を保持するための変数です。たとえば、入力内容の保持や選択状態の管理に使用します。
| 変数名 | 型 | 用途 |
|---|---|---|
tableData | 配列(オブジェクト) | 一覧テーブルに表示するデータを保持。各オブジェクトが1件のタスク情報 |
transitionRequestParameter.id | 文字列 | 詳細や編集画面に遷移する際の対象ID |
clickedCell | オブジェクト | クリックしたテーブルセルの情報(index, key) |
pagination | オブジェクト | ページング情報(総件数、1ページあたり件数、現在ページ) |
condition.isOpenedCondition | 真偽値 | 検索条件パネルが開いているか |
condition.searchCondition | オブジェクト | 検索フォームの入力値(タイトル、カテゴリ、重要度、ステータス、担当者) |
condition.sortCondition | 配列 | ソート条件(キー、昇順/降順) |
prePagination.current | 整数 | 前回のページ番号(ページ遷移用) |
isFiltered | 真偽値 | フィルタ適用済みかどうか |
endPointは、サーバと通信する際のエンドポイント情報を保持します。データの取得や送信時に参照されます。
| 変数名 | 型 | 用途 |
|---|---|---|
list.requestParameter | オブジェクト | サーバに送信する検索・ソート・ページング条件 |
list.responseData.data.records | 配列 | サーバから取得した一覧データ |
list.responseData.data.total | 整数 | 検索結果の総件数 |
headerRowStringは、一覧画面の列ヘッダに表示する文字列を管理します。表示ラベルの設定やカスタマイズに使います。
| 変数名 / キー | 表示名 |
|---|---|
_edit | 編集 |
id | ID |
title | 概要 |
detail | 詳細 |
category | カテゴリ |
importance | 重要度 |
status | ステータス |
manager | 担当者 |
deadline | 期限日 |
registered_user | 登録者 |
registered_date | 登録日 |
update_user | 更新者 |
update_date | 更新日 |
_refer | 詳細 |
columnSettingsは、各列の表示方法やデータ型などの設定を保持する変数です。列ごとの表示制御やフォーマットに使用します。
| 列名 | 型 | 補足 |
|---|---|---|
_edit | icon-action | 編集用アイコン、ツールチップ「編集」 |
id | string | 文字列表示 |
title | string | 文字列表示 |
detail | string | 文字列表示 |
category | string | 文字列表示 |
importance | string | 文字列表示 |
status | string | 文字列表示 |
manager | string | 文字列表示 |
deadline | date | 日付形式 |
registered_user | string | 文字列表示 |
registered_date | date | 日付形式 |
update_user | string | 文字列表示 |
update_date | date | 日付形式 |
_refer | icon-action | 詳細表示アイコン、ツールチップ「詳細」 |
変数の命名方法や構造については、「Low-Code HANDBOOK - 変数構造を検討する - IM-BloomMaker」を参照してください。
定数($constant)の準備
画面内で使う定数は、画面モード、画面URL、アイコン、検索・ソート・ページングの初期値を体系的に管理するために定義します。
ここでは、主に次の定数を準備します。
mode:画面モードの定義screenUrl:画面URLiconKey:画面モードに応じたアイコンinitCondition:初期条件

- mode
- screenUrl
- iconKey
- initCondition
modeは、画面の操作モードを表す定数です。各モードによって画面の表示や操作の振る舞いを切り替えます。
| キー | 値 | 説明 |
|---|---|---|
register | "register" | 新規登録モード |
refer | "refer" | 参照モード(編集不可) |
edit | "edit" | 編集モード |
screenUrlは、各モードに対応する画面のパスを定義しています。画面遷移時に使用します。
| キー | 値 | 説明 |
|---|---|---|
register | "accel-studio-app/template_master_maintenance/register" | 新規登録画面の URL |
edit | "accel-studio-app/template_master_maintenance/edit" | 編集画面の URL |
refer | "accel-studio-app/template_master_maintenance/refer" | 参照画面の URL |
iconKeyは、画面のモードに応じて表示するアイコンのキーを定義します。
| キー | 値 | 説明 |
|---|---|---|
edit | "_edit" | 編集モード用アイコン |
refer | "_refer" | 参照モード用アイコン |
initConditionは、検索条件やソート条件、ページングなど、画面の初期状態で使用する条件をまとめた定数です。
- searchCondition
- sortCondition
- ページング情報
検索フォームの各項目の初期値をnullに設定して、最初は未入力状態とします。
| キー | 初期値 | 説明 |
|---|---|---|
title | null | タイトル検索 |
category | null | カテゴリ検索 |
importance | null | 重要度検索 |
status | null | ステータス検索 |
manager | null | 管理者検索 |
ソートのキーや順序を格納する配列です。初期状態では未指定とします。
| インデックス | key | order | 説明 |
|---|---|---|---|
| 0 | null | null | ソート対象・順序未指定 |
ページングの情報です。
| キー | 値 | 説明 |
|---|---|---|
limit | 20 | 1ページあたりの表示件数 |
offset | 0 | 取得開始位置(0から開始) |
定数の命名例については、「Low-Code HANDBOOK - 定数の定義例 - IM-BloomMaker」を参照してください。
入力変数($input)の準備
入力変数は、画面や処理がどのモードで動作するかを指定するために定義します。

| 変数名 | 型 | 用途 | 説明 |
|---|---|---|---|
__mode__ | 文字列 | 画面やフローの動作モードを制御 | "list"は一覧表示モードを示す |
画面種別の判別する入力変数については、「Accel Studio テンプレートカタログ - 8.1.2. 画面種別の判別処理」を参照してください。
Step 3 アクション設定
Step 2で設定した画面変数を利用して、ユーザ操作に応じたアクションを作成します。変数の値をどのように受け渡し、どのような処理の流れを構築しているのかを確認してみましょう。

アクション設定1 - 「初期表示時」
「初期表示時」アクションでは、一覧画面を表示した際の処理を設定します。
No. アクションアイテムと設定内容 1 変数 $variable.state.pagination.rowPerPageに$constant.initCondition.limitを代入する2 変数 $variable.state.pagination.currentに1を代入する3 変数 $variable.state.condition.searchConditionに$constant.initCondition.searchConditionを代入する4 変数 $variable.state.condition.sortConditionに$constant.initCondition.sortConditionを代入する5 変数 $variable.endPoint.list.requestParameterに$constant.initConditionを代入する6 アクション 「一覧データを取得」を実行する7 変数 $variable.endPoint.list.requestParameterに$constant.initConditionを代入する
ここでは、主に「変数○に○を代入する」というアクションアイテムを中心に使用しています。詳細は、「IM-BloomMaker ユーザ操作ガイド - 12.4.1.2. 変数○に○を代入する」を参照してください。
アクション設定2 - 「一覧データを取得」
「一覧データを取得」アクションでは、一覧画面に表示するデータを取得する処理を設定します。このアクションは、「初期表示時」アクションから呼び出すことで、画面表示のタイミングでデータが取得されるようにします。
No. アクションアイテムと設定内容 1 IM-LogicDesignerフロールーティング
accel-studio-app/template_master_maintenance/listにリクエスト送信する
・リクエストパラメータ:$variable.endPoint.list.requestParameter
・レスポンスデータ:$variable.endPoint.list.responseData.data2 カスタムスクリプトを実行する
const records = $im.resolve('$variable.endPoint.list.responseData.data.records');
$variable.state.tableData = records.map((record) => {
record._edit = null;
record._refer = null;
return record;
});3 変数
$variable.state.pagination.totalに$variable.endPoint.list.responseData.data.totalを代入する4 変数
$variable.state.condition.isOpenedConditionに$env.const.falseを代入する5 カスタムスクリプトを実行する
const searchCondition = $im.resolve('$variable.endPoint.list.requestParameter.searchCondition');
const isNullOrEmpty = (obj) => {
for (const value of Object.values(obj)) {
if (Object.prototype.toString.call(value) === '[object Object]' && value !== null) {
if (isNullOrEmpty(value)) {
return true;
}
} else if (value !== null && value !== '') {
return true;
}
}
return false;
};
$variable.state.isFiltered = isNullOrEmpty(searchCondition);
- IM-LogicDesignerのビジネスロジックと連携する方法については、「intra-mart Developer Portal - アクション設定でビジネスロジックと連携したい」を参照してください。
- アクション設定では、スクリプトを直接記述することが可能です。スクリプトにはIM-BloomMaker独自の記法を用いるため、詳細は「intra-mart Developer Portal - アクション設定でカスタムスクリプトを使用したい」を参照してください。
アクション設定3 - 「〇〇画面へ遷移」
一覧画面から別の画面に表示を切り替えるための処理を設定します。
「登録画面へ遷移」アクション
No. アクションアイテムと設定内容 1 URL $constant.screenUrl.registerに遷移する
・メソッド:GET
「編集画面へ遷移」アクション
No. アクションアイテムと設定内容 1 URL $constant.screenUrl.editに遷移する
・メソッド:GET
・リクエストパラメータ:$variable.state.transitionRequestParameter【実行条件】全ての条件に一致
変数$variable.state.clickedCell.indexが$env.const.nullでないとき
「参照画面へ遷移」アクション
No. アクションアイテムと設定内容 1 URL $constant.screenUrl.referに遷移する
・メソッド:GET
・リクエストパラメータ:$variable.state.transitionRequestParameter【実行条件】全ての条件に一致
変数$variable.state.clickedCell.indexが$env.const.nullでないとき
ここでは、変数が、環境情報変数で定義された定数に対して空でないときという条件を指定しています。詳細は「環境情報変数の確認 > 定数・その他」または「アクション設定 > 実行条件の設定」を参照してください。
アクション設定4 - 「アイコンが押されたとき」
一覧画面に配置したアイコンやボタンをユーザがクリックした後の処理を設定します。
「編集/参照アイコンが押されたとき」アクション
アクション設定3で作成した「編集画面へ遷移」アクションと「参照画面へ遷移」アクションを呼び出します。
No. アクションアイテムと設定内容 1 カスタムスクリプトを実行する
const requestParameter = $im.resolve('$variable.state.transitionRequestParameter');
const clickedCellData = $im.resolve('$variable.state.tableData[$variable.state.clickedCell.index]');
for (const key in clickedCellData) {
if (key in requestParameter) {
requestParameter[key] = clickedCellData[key];
}
}
$variable.state.transitionRequestParameter = requestParameter;2 アクション 「編集画面へ遷移」を実行する【実行条件】全ての条件に一致
変数$variable.state.clickedCell.keyが$constant.iconKey.editのとき3 アクション 「参照画面へ遷移」を実行する【実行条件】全ての条件に一致
変数$variable.state.clickedCell.keyが$constant.iconKey.referのとき
アクション設定5 - 「検索エリアに関する設定」
検索エリアの表示・非表示を制御する処理を設定します。
「検索ボタンが押されたとき」アクション
入力した検索条件に基づき、アクション設定2で設定した「一覧データを取得」アクションを呼び出します。
No. アクションアイテムと設定内容 1 変数 $variable.endPoint.list.requestParameter.searchConditionに$variable.state.condition.searchConditionを代入する2 変数 $variable.endPoint.list.requestParameter.sortConditionに$variable.state.condition.sortConditionを代入する3 変数 $variable.endPoint.list.requestParameter.limitに$variable.state.pagination.rowPerPageを代入する4 変数 $variable.endPoint.list.requestParameter.offsetに0を代入する5 変数 $variable.state.pagination.currentに1を代入する6 アクション 「一覧データを取得」を実行する
「検索条件をクリア」アクション
No. アクションアイテムと設定内容 1 変数 $variable.state.condition.searchConditionに$constant.initCondition.searchConditionを代入する
「検索エリアの表示/非表示を切り替え」アクション
No. アクションアイテムと設定内容 1 変数 $variable.state.condition.isOpenedConditionに= !$variable.state.condition.isOpenedConditionを代入する
! は、論理否定(NOT)を意味し、変数をスイッチのように反転させる役割を持ちます。
- 変数が
trueのとき→falseに反転:表示されていた検索エリアは非表示 - 変数が
falseのとき→trueに反転:非表示だった検索エリアが表示
ユーザが「検索条件を開く/閉じる」という操作をするときに使用されます。
アクション設定6 - 「一覧表示エリアに関する設定」
一覧表示エリアのページングやソート処理を設定します。
「ページング/ソート処理」アクション
No. アクションアイテムと設定内容 1 変数
$variable.endPoint.list.requestParameter.offsetに
= $variable.state.pagination.rowPerPage * ($variable.state.pagination.current - 1) + 1を代入する【実行条件】全ての条件に一致
変数$variable.state.pagination.currentが$variable.state.prePagination.currentでないとき2 変数
$variable.endPoint.list.requestParameter.offsetに0を代入する3 変数
$variable.state.pagination.currentに1を代入する
「リッチテーブルのinteractiveNavigationEventを実行したとき」アクション
No. アクションアイテムと設定内容 1 アクション 「ページング/ソート処理」を実行する2 変数 $variable.state.prePagination.currentに$variable.state.pagination.currentを代入する3 変数 $variable.endPoint.list.requestParameter.sortConditionに$variable.state.condition.sortConditionを代入する4 変数 $variable.endPoint.list.requestParameter.limitに$variable.state.pagination.rowPerPageを代入する5 アクション 「一覧データを取得」を実行する
interactiveNavigationEventとは、「リッチテーブル」エレメント固有プロパティにある設定で、リッチテーブル上の操作に応じて実行するアクションを指定するための設定です。このアクションが実行されるタイミングは、以下のとおりです。
- ソートを実行/解除したとき
- ページを切り替えたとき
- 1ページあたりの表示件数を変更したとき
- 簡易検索を実行したとき
リッチテーブルの操作に応じて自動的にアクションをトリガーすることで、一覧画面の表示やデータ取得の制御を効率的に行うことができます。
この画面コンテンツは、一覧表示や検索機能のバックエンド処理に適した一覧画面の基本形です。まず条件に該当するデータ件数を取得した上で、実際のデータをリスト形式で検索・取得します。具体的には、以下のようなユースケースが考えられます。
- 出退勤管理:すでに打刻されていれば処理をスキップし、未打刻の場合のみ記録する
- 日報登録:1日1件のみ日報の登録を許可する
- 備品管理:既存在庫を確認し、必要に応じて新規備品を追加する
この基本構成をもとに、さまざまなシナリオを想定しながら活用してみましょう。