Liferay Objectsとは
Liferay Objectsを使えば、コードを書いたりモジュールをデプロイしたりすることなく、アプリケーションを構築・提供できます。Objectsで構築された各アプリケーションはLiferayのコアフレームワークと統合されているため、シームレスなユーザーエクスペリエンスを維持しながら、ビジネスニーズに合わせてLiferay DXPを適応させる柔軟なソリューションを迅速に開発・管理できます。
— https://learn.liferay.com/ja/w/dxp/liferay-development/objects より引用Liferay ObjectsはLiferay 7.4から追加された、ノーコード・ローコード開発を支援する主要機能のひとつです。
ざっくり言うと?
Liferay Objectsは大雑把に言うと、データベースのテーブルを画面から作成・管理できる機能です。
Objectの名前(テーブル名のようなもの)、使用したいフィールド名や格納するデータの形式(カラムとその型のようなもの)等を入力していくことで、その形式でデータが入力・保持できるようになったり、親子関係やマスター・トランザクションなどのリレーションを定義できたり、コンテンツやファイル等と同様に権限管理が可能になります。
既存機能と比べて
Liferayをかじったことがある方の中に、そういうデータを保持したりテーブル作ったりっていう機能、昔からありませんでしたっけ?と思う方もいると思います。はい、元々ありました。というか今もありますし、使いどころによってはわざわざLiferay Objectsを使わないでもこちらでいいのでは、という場面も多々あります。
Service Builder
カスタマイズでテーブルを新規作成したい場合によく利用します。service.xmlというファイルにテーブル定義を記載し、Service Builderを実行するとデータベースのテーブル定義、インデックス定義のSQLと、データベースアクセス用のモジュールが自動で生成される機能です。少し一般的な専門用語に置き換えると、XMLファイルにテーブル定義を書けば、DBのテーブルとDAOとDTOのモジュールは自動で全部作っちゃうよ、といったものです。
カスタムフィールド
既存のテーブル(Liferay標準のテーブル等)に対して列を追加したい場合に使用します。標準のユーザーのテーブルに「First Name」「Last Name」といった項目がありますが、「フリガナ」のような項目を登録したくなることがあります。
標準のテーブルにそんな項目が無い時にカスタムフィールドが活躍します。
「どのテーブルの」「なんという名前の項目で」「何を(文字、数字)保持する」といった内容を画面操作で入力していくことで、標準のテーブルに対して項目を追加することができます。画面上も入力項目が追加されます。
これまでのカスタマイズでは上記のような機能を利用、複合して要件にあった内容を実現してきました。
一方で、Service BuilderはそもそもService Builderの何たるかがわかってないと手も足も出なかったり、使用するには開発環境を構築する必要があったり、Javaの知識が必要だったり。
カスタムフィールドは入力したデータを保持することはできても、それを特定の場所に表示したいとなると結局カスタマイズが必要になったり。
そんな中で「カスタムフィールドみたいな感じでテーブル全部定義できるようにしちゃえ」みたいな発想で生まれたのがLiferay Objectsです。だと思います。
Liferay Objectsの利点
上述の通り、Service Builderとカスタムフィールドのハイブリッドのような機能ですが、単に画面上からテーブルを作成できるだけの機能ではなく、標準機能との連携や他システムとの連携でも様々な利点があります。
権限管理
作成したObjectは標準の権限管理フレームワークと連携可能です。コンテンツやファイルなどと同様に、画面上から権限の設定を行うことができます。
リレーションの作成
Object間に親子関係や1対多、多対多などの関係を定義することができます。親Objectが削除された際に子Objectを削除するかどうかなども設定可能です。
オブジェクトモデルビルダー
オブジェクトモデルビルダーを使用することで、Objectの定義やリレーションの内容を視覚的にわかりやすく確認・編集が可能です。
ビューの作成
データベースのビューのような、条件や表示するフィールドを絞ったリストの表示が可能です。
レイアウトの作成
レイアウトを作成することで、Objectの編集画面の作成、作成した画面の項目の表示位置の調整や、表示内容の変更を行うことができます。
フォーム機能との連携
Liferay Objectsはフォーム機能と連携することができます。フォーム機能で作成した投稿画面で入力された情報を、Objectとして登録、保管することができます。また、フォーム機能を使用することで複数のステップに分かれた入力画面を作成することが可能です。
検証機能
ヴァリデーションを定義することで、入力内容に対してそれぞれの項目が許容している値かどうかの入力チェックを行うことが可能です。
ヘッドレスAPIの利用
Objectを作成すると、作成したObjectに対応するRESTful APIが生成されます。作成されたAPIを使用して、外部システムからObjectを登録したり、Objectの情報を取得することが可能です。
Liferay Objectsの注意点
これまで、Liferay Objectsの特徴や利点を紹介してきましたが、弱点が無いわけではありません。
パフォーマンス面
ある程度のデータ量や反応速度を求められる環境では、基本的にWeb APIを通して情報を連携するLiferay Objectsは性能がネックとなることがあります。
柔軟性の制約
画面操作ですべての定義を行うということは、画面操作でできないことはできない、ということでもあります。
プラットフォーム側の仕様変更で以前はできていたことができなくなった、というようなことも起こりえます。
強力な機能である一方で、古い技術の完全上位互換ではないことにはご注意ください。
まとめ
Liferay Objectsは、ノーコード・ローコードでのアプリ開発を大きく後押しする機能であり、開発・運用コストの削減に貢献します。
今後、各機能の使い方については、別の記事で詳しくご紹介していく予定です。
アッキーでした!
