CDS #ProjectOakdale の裏技？ #PowerApps

ただし『記事投稿時点において』という前提で。

Ignite 2020 でプレビューが発表された「Project Oakdale」ですが、皆さん試してみましたか？
当方も時間を見つけては試しているのですが、「CDS Project Oakdale」（通称 ”おーくでーるCDS”）において、便利（？）なテクニックを発見しました。実は前回の記事でもチラっと紹介しています。今回はもう少し具体的な手順を案内します。

「ぷろじぇくとおーくでーる ってなに？」という方や「前回の記事読んでない」という方は、前回もあわせて確認いただけると幸いです。

■前回の記事
　https://qiita.com/yamad365/items/eb9c96dbebf6ae770648

# 諸注意
Project Oakdale は記事投稿時点でプレビューです。今後の更新によって大幅な変更が発生する可能性があります。また、当記事を書いている者は製品開発関係者ではありませんので、質問等をいただいても回答できない場合があります。（※その場合「わかりません」の返信も実施しない場合がありますのでご了承ください。）また、コンテンツのご利用により、万一、何らかの不都合や損害が発生したとしても当方は何らの責任を負うものではありません。
(´ω`)。○○（記事を読んでくださる方は、皆さんオトナだと信じてるけど念のため…）

# 「CDS Project Oakdale」の制約？
Teams クライアントや Web画面から Project Oakdale Power Apps を起動して、テーブルを作成する場合「ビジュアルエディター」という Excel によく似た画面が表示されます。ここから、列の追加、データの登録等がスムーズに行えるようになっています。とても便利。
しかし、残念ながら列を追加する際に選択可能な”種類”（＝データ形式）が非常に少ないのが現状です。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/2d86fd74-ee4c-7167-0073-341330bdfacc.png)
現状、上イメージにある”種類”のみ選択可能です。

## [日]（＝Date）はあるけど[日時]（＝DateTime）が無い
例えば、下記の図では[日]を追加しています。この列は Date型 となり、時間の概念を持っていません。
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/4f863032-46b0-d904-963b-268b4c74631b.png)

## [テキスト]列は 1行文字列
冒頭で紹介したイメージを確認いただくと”Comment”という件名（列名）で[テキスト]の種類を選択しています。この設定で追加される列は”1行文字列”を格納する動きをします。改行を含んだ文字列、つまり”複数行”には対応していません。

時間の概念＝日時、および 複数行テキスト が現時点だとビジュアルエディターでは作成できない、というコトになります。データベースとしては、どちらの概念も必要になりますよね・・・。さて、どうしましょう？

# ビジュアルエディターに無い列の種類を追加する！
さて、ここからが裏技（？）の説明になります。先に結論をお伝えしておくと「ビジュアルエディターで現状追加できない”日時”や”複数行テキスト”を CDS Project Oakdale に追加する方法」です。なお、1度 おーくでーるアプリを作成し保存をしてから実施してください。後で列を全て追加するのもテマなので、あわせてテーブルを追加して列もある程度準備しておくとスムーズです。

## 1．[ビルド]画面へ遷移
Project Oakdale Power Apps を選択した画面を起動すると、画面上部に[ビルド]というタブがありますので、それをクリックします。
![図3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/ecade63b-c744-e588-cdba-e44915146ed5.png)

## 2．該当チーム（≒おーくでーる環境）を選択
ビルドの画面では、左ペインに Oakdale が付随したチーム（＝おーくでーる環境）が表示されます。選択したチームに含まれている Power Apps のアプリやテーブル（エンティティ）は右ペインに表示されます。ここで、該当チームを選択し「すべて表示」をクリックします。
![図4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/cf703436-4308-7031-4008-d934c5e1cf11.png)

### 余談：ビルド直下の画面は・・・
![図5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/5a1179c0-4070-8a87-9361-8914fc863dc5.png)
~~あたかも、アプリやテーブル（エンティティ）を選択したら編集画面が起動するような雰囲気ですが、記事投稿時点ではクリックしても何も発生しませんｗ 連打しても無駄なのでお気をつけください。（おそらく、バグじゃないかな？です。）~~

－－－ 2020/10/20 追記
追記の日付で試したら、編集画面へ遷移するようになっていました！
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/PowerApps?src=hash&amp;ref_src=twsrc%5Etfw">#PowerApps</a> <a href="https://twitter.com/hashtag/ProjectOakdale?src=hash&amp;ref_src=twsrc%5Etfw">#ProjectOakdale</a> Teams で反応しなかった箇所が、今試したら編集画面へ遷移するよーになってる！ <a href="https://t.co/LEIVoX7ttF">pic.twitter.com/LEIVoX7ttF</a></p>&mdash; やま (Yama) (@yamad365) <a href="https://twitter.com/yamad365/status/1318531077091192838?ref_src=twsrc%5Etfw">October 20, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
－－－ 追記ここまで

## 3．すべて表示画面
遷移した画面には、チームに付随する環境配下のアプリやフロー、テーブル（エンティティ）が一覧で表示されます。Power Apps や Automate で『ソリューション』を作成したコトがあるのであれば、ピン！とくる画面だと思います。まさに おーくでーる環境 の ソリューション画面のようなモノです。この画面で、列を追加したい対象を選択します。
なお、Oakdale の画面上は”テーブル”と”エンティティ”という、所謂『表記のゆれ』が発生しています。基本的には同じモノなので、気にせず脳内で補完しながら操作してください。（そのうち、どちらかに統一されるでしょう。たぶん）
![図6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/a52ff8b7-1cb0-1ce9-5249-749dc9a45203.png)

## 4．テーブル（エンティティ）編集画面へ遷移
列を追加したいテーブル（エンティティ）を選択（チェックを入れる）→ 「編集」とするか、三点リーダーから「編集」をクリックします。
![図7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/0599319c-d1bd-fc7b-2658-8aafaa59e599.png)

## 5．必要な列を追加する
Oakdale ではない、無印 CDS を利用したことがある方は”おなじみの画面”だと思います。テーブル（エンティティ）の編集画面です。画面上部にあるリボンから「列の追加」をクリックすると、画面右側に追加画面が表示されます。ここで『データ型』の箇所をクリックすると・・・。
![図8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/147d4c4c-253f-85ff-95ff-475bda80840a.png)
上イメージどおり、ビジュアルエディターよりも選択できる列の数が多いですよね！この導線でたどり着ける編集画面であれば、ビジュアルエディター上で選択できなかった”日時”や”複数行テキスト”の列を追加することが可能なんです。

## 例：日時（DateTime）列を追加
例として”DateTime”という列名で”日時”のデータ型を追加する場合は下イメージです。なお［詳細オプション］を展開すると、関連プロパティも指定できます。
![図9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/d55d5669-906f-2373-c19a-26db669b0555.png)

## 例：テキスト領域 列を追加
複数行テキストも追加してみます。データ型は”テキスト領域”を選択します。［詳細オプション］で文字の長さも指定可能です。
![図10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/7bcb28dd-f1ab-01e4-bf5b-9ce98b9ffa49.png)
必要な列が追加できたら、テーブル（エンティティ）編集画面の右下にある「テーブルの保存」をクリックしましょう。ここも、CDS と同じですね。

## 追加した列はビジュアルエディターでどうなる？
冒頭で紹介したように、ビジュアルエディター上では選択できないデータ型の列を追加しました。ビジュアルエディターでは、列の追加・編集と同時にデータ登録などのデータ操作も可能でした。”日時”や”複数行テキスト”の列はどうなるでしょう？
実際に該当の箇所をビジュアルエディターで確認すると、追加・編集ができない状態になっています。マウスオーバーすると”読み取り専用”と表示されます。
![図12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/6e24b2eb-3fe9-86b3-bd2a-82b6583a5f85.png)
うーん・・・これではデータ登録ができないんじゃないか？と思いますよね。心配無用です。ビジュアルエディターで操作できなければ、アプリからやってしまえば良いのです。

# 6．アプリ編集画面で Form コントロールに列を追加
先ほどまで操作したテーブル（エンティティ）を利用している Power Apps アプリを編集します。該当の Form コントロールを選択し「フィールドの追加」から追加します。
![図13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/35c66749-87cb-cab8-9dcb-308d01a71909.png)
例で追加した2つの列、日時、複数行テキスト、どちらも意図した形式で配置されるのが確認できます。
![図14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/1071f1cb-3389-f0db-35ce-04c28591b2b2.png)

# 7．データを登録してみる
アプリを実行してデータ登録をしてください。ちゃんと日時、複数行テキストが登録できるハズです。
![図15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/ddacdb15-7623-20ff-c83b-364a8abd92e8.png)

## 登録後のビジュアルエディター
アプリの画面上では時間まで登録できるのですが、ビジュアルエディターでは日付しか確認できません。ここらへんは今後の VerUp に期待ですね。
![図16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/da789362-30ba-ef28-376e-4147d46bed0c.png)
複数行テキストに関しては、マウスオーバーすることで改行含んだ複数行として登録されたコトを確認できます。
![図17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/80cd5eb6-2614-774f-3c32-3ce6167e9d19.png)

これで、ビジュアルエディター上では選択できなかった種類の列を追加することが可能になりました。

# 参考：操作している動画の情報
この「裏技（？）」ですが、10/2（金）Power Platform Weekly News の Live 01 Power Apps 編 イベントでデモを実施しています。約47分ごろからですね。当記事で紹介した内容と若干異なりますが、実際の操作を YouTube で確認できますので是非ご視聴ください。

https://www.youtube.com/watch?v=bMZzXIcXBos

この動画では、当方がデモしようと準備してた環境がぶっ壊れたのか？原因不明のエラーで困ってる姿も観るコトができます。恥ずかしい(*ﾉωﾉ)

※[Power Platform Weekly News](https://youtu.be/nikY8V17pjc) とは
Power BI 王子 こと [@yugoes1021](https://twitter.com/yugoes1021) さんが Power Platform 系の更新情報を（ほぼ）毎週 YouTube でまとめてくれるチャンネルです。各製品チームのBLOG記事を日本語で解説・紹介してくださるのでチャンネル登録しておきましょう。

# 参考：2020年10月04日時点のデータ型比較
![図18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/1b86f1df-9d50-eabe-9a30-8d2d72950336.png)

# まとめ
- 「CDS Project Oakdale」のビジュアルエディターでは選択できるデータ型が少ない
- 日時や複数行テキストは、ソリューション画面ぽいトコで追加が可能
    - ただし、ビジュアルエディター上では編集できない
- アプリからは、追加・編集が実施可能

前回の記事でも記載しておりますが、この手段が製品仕様上で実施してよい手段なのか否かは不明です。また、繰り返しになりますが、Project Oakdale 自体がプレビューなので、今後の更新で変更になる可能性が非常に高いです。

時間の概念、複数行テキストなどはデータベースとしては必須の種類と考えられますので、今後の更新でビジュアルエディター上でも何らかののかたちでアプローチできるようになるのでは？と個人的には大胆予想しています。

少なくとも、今回紹介した手順を踏めば利用可能なデータ型が増えます。データ型をみて諦めていた方は、是非トライしてください。

それでは、皆さま、素晴らしい Power Platform Life を！