ローコード開発ツール「Material UI Toolpad (α版)」使ってみた！


# はじめに

この記事は、ローコード開発ツールであるMaterial UI Toolpad（α版）についてまとめたものになります。

α版なので、まだまだ出来ることに限りはありそうですが、
触ってみたら面白かったため、いくつか共有できたらと思います！

# Material UI Toolpadとは

[https://mui.com/toolpad/](https://mui.com/toolpad/)

Material-UI（以後、MUI）のコンポーネントライブラリを利用して、
MUIベースのウェブサイトを簡単に開発することができるローコードUIビルダーです。


## MUI Toolpadで現状できること

### その1.ドラッグ&ドロップだけでUIを作れる

Toolpad内に置かれているMUIのコンポーネントをドラッグ&ドロップするだけで、簡単に構築することができます。

![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/e9c670d9-788f-2196-5ff7-2e6e51140fd0.gif)

ただ、α版ですので、現状使えるコンポーネントは以下の7つと少なめですが、
- Button
- Image
- Data grid
- Text field
- Text
- Select
- Paper

近々、Form / Card / Tabs / Slider / Switch / Radio / Date picker / Checkbox
などのコンポーネント達も使えるようになるみたいです！
楽しみですね。

### その2. データソースとの接続

ツール内で、REST APIを叩いたり、Google スプレッドシート / PostgreSQLに接続して取得してきたデータを
レンダリングすることも可能なようです！

ここではQiitaのAPIを叩いてみようと思います！

まずは、データを表示させたいページを開いた状態で、右側の「+ Add query」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/b6ac2e3a-1b7a-984c-2672-639ecf664085.png)

「Create Query」モーダルが表示されたら、「Fetch | < default>」を選択して、右下に表示される「Create query」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/259bb1b5-5c62-300c-b164-1ffd953427ed.png)

すると、こんな画面に。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/cad638b8-6a3d-d09c-2139-b5dd27285190.png)

デモ用のjsonも置いてくれていますが、ここではQiitaのAPIを叩いてみます。

一応、上部のnameを「qiitaQuery」にしてみました。
左側のQueryの部分で設定していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/9f437c1f-769a-9a28-6bea-cda9c4c3b1f4.png)

QiitaAPIについてはこちらを参考にしてください。
参考) [Qiita API v2のドキュメント](https://qiita.com/api/v2/docs)

今回は必要ないですが、パラメータの設定なども勿論できます。

ここまで設定が完了したら、「Preview」をクリックしてみてください。
そうすると、レスポンスがモーダル右側に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/3d306808-6792-462b-49cd-d21ef791b77d.png)

ここまで出来たら、右下で「Save」をクリック

この後は、ここで取得してきたデータを画面にレンダリングするステップに入っていきます。
今回は「Data grid」内に私の書いた記事を表示させてみます！

Data gridを選択した状態で、右側「rows」と書かれてあるボタンの右側のボタンをクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/80d9806d-8dfb-b993-ad54-8d38cb5d9952.png)

そうすると、「Bind a property」というモーダルが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/681d8ca3-7f95-5518-c6f3-65d7477e8f03.png)


> Make the "rows" property dynamic with a JavaScript expression. This property expects a type: array.

と記載があるので、配列を入れてあげれば良いことが分かります。
ここから、先程作成した「qiitaQuery」のデータを紐づけていきます。

```javascript
qiitaQuery.data
```
と書いてあげると、以下のようにどのようなデータが入っているのかも確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/325a27d6-2b5f-1f43-381e-b7dd0f1b6a94.png)

ここまで来たら、右下の「Update binding」をクリックしましょう。
すると、以下のような形で自分の記事に関する情報を表示することが出来ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/37adb59f-f2cf-020f-f6c4-d2ff8c33c04c.png)

勿論表示させたいカラムを以下のように指定することも出来ますし、カラムを入れ替えることも出来るようです！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/a843bb33-8af3-467d-9fac-85149dd65578.png)

### その3.アプリケーションのデプロイ

画面上部にデプロイボタンがあり、そこをクリックしてみると、
Deploy applicationというモーダルが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/950b5d19-dc03-f57c-a4d5-e606c7344593.png)

適当に説明を書いて、Deployボタンを押してみると、
新しいタブがうまれて、そこで作ったページを確認することが出来るようになります！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646508/da4d2b8f-be6e-6309-1423-0465c3db13e9.png)


## MUI Toolpadで今後出来るようになること

- GraphQLデータソースのサポート
- コンポーネントの追加
    - Radio button / Date picker / Check box / Chart / File input
- GitHubによるソース管理
- DBに接続すると、クエリエディタにテーブル一覧が表示される機能
- icon
- テーマエディタの拡張
などなど

詳細はこちらを参考にしてみてください！

https://github.com/orgs/mui/projects/9/views/1

# 使ってみてのざっくりとした感想

α版なので、子コンポーネントを削除してみたら、親コンポーネントも全部消えてしまったりなど、
まだまだバグはあるようですし、使えるコンポーネントが少ないので、
実際のアプリケーション開発に活用できる段階ではなさそうです。
（α版なので当たり前ですが、、、）

けど、ローコード開発ツールに触ってみたのが初めてということもあり、めっちゃワクワクしました！
β版が出てからもう一回使ってみたいなと思います！


皆さんも良ければ是非触ってみてください！