Power Apps で ChatGPT のマークダウンの回答を上手く表示する 

# はじめに

皆さんご存じの通り、ChatGPT では、例えば、以下のような感じで、プログラムのコードについて質問をすると、装飾付きの回答がもらえるため、可読性が上がります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/82491848-39c0-1ac5-06a6-cb63ca1bb6c6.png)

以下の記事で紹介したような、入口の部分を Power Apps にして、Azure OpenAI Service を介して ChatGPT を利用して同様の質問をした場合、以下のように表示されます。

https://qiita.com/Takashi_Masumori/items/8a07fb6d1869967ce1f9

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/51f32fdc-ae1d-1ac3-92a5-90dfb51ddaf4.png)

こちらは、Power Apps のラベルコントロールでは、マークダウンの回答を上手く表示できないためと考えます。

そのため、代替案を探していたところ、以下のような素敵なコントロールが pcf ギャラリーにございました。

https://pcf.gallery/markdown-viewer/

こちらを使用したところ、以下のような感じになり、コード部分の表示が改善されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/7c151004-595b-f924-b352-8fa295b8866b.png)

そのため、今回は、こちらを利用して、Power Apps を入口とした場合における、ChatGPT からの回答のコード部分の表示を改善する方法について紹介します。

# MarkDown Viewer のインポート

こちらからソリューションをダウンロード可能です。

https://github.com/megel/PCF-MarkDownViewer

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/ea6b8d40-e5de-7419-c0f7-590b9f660f7a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/336c3bc1-8a79-68cf-2859-952bebd59b2d.png)

利用したい環境にソリューションをインポートします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/f35e06bd-59a5-2800-525c-e0fa271ed4a2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/d3c76077-1528-8b03-ed2d-25279b2c6cf4.png)

環境の設定で、キャンバス アプリの Power Apps Component Framework をオンにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/5927f5c5-b98e-4367-fdfe-c3709592342c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/9cf4e281-040f-8f60-4c78-1698539b8de3.png)

# Power Apps 側の実装

こちらのコンポーネントを利用したいアプリにて、以下の方法でコンポーネントを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/1188101a-0910-f772-672c-45e1f9dce3aa.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/5c72ae97-edcc-35ff-f66c-2265281bcd1a.png)

以下の箇所から追加可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/7f64c18a-2cf6-2f84-b1c7-f11580ae78f8.png)

以下の記事で紹介したように、Power Apps でチャットライクなエクスペリエンスを作成する場合において、こちらのコンポーネントを利用する方法を補足します。

https://qiita.com/Takashi_Masumori/items/12095390a633b8789522#power-apps-%E3%81%A7%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%AA%E3%82%A8%E3%83%B3%E3%82%B9%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B-%E3%82%AE%E3%83%A3%E3%83%A9%E3%83%AA%E3%83%BC%E9%83%A8%E5%88%86

まず、上記で紹介したように、元々利用していたラベルコントロールはそのままにしておき、非表示にします。

:::note warn
ラベルを非表示にすることで、MarkDown コンポーネント側の高さが自動調整されない場合は、MarkDown コンポーネント側が上に来るようにして、ラベルの表示をオンにして、ラベルの文字の色を透明にするなどして見えなくするようにしてみてください

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/cd901518-f491-ee65-5199-d95779eae975.png)
:::

その上で、`[Content]`プロパティを ChatGPT からの応答に設定し、`[Width]`プロパティや`[Height]`プロパティをラベルと同じにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4e6fd149-7e64-c836-9bb3-d417b54ab4f3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/fe365961-9f25-0dcb-c13c-63aa650eaf2b.png)

:::note

ラベルコントロールは、`[AutoHeight]`プロパティの設定が可能なため、返答の文字数に応じてラベルの高さが自動で調整されますが、追加したコンポーネントにはそのプロパティがないため、ラベルコントロールのサイズと同じになるようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/759eea85-cb24-84cf-ff0a-d4164c3680fe.png)
:::

元々のアプリにコンポーネントを追加し、上記の通り、少し変更を加えるだけで、コード付き回答の見た目が改善しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/60bec419-c12c-23d8-2481-ef25ae42eae5.png)

# まとめ

今回は、Power Apps を入口とした場合における、ChatGPT からの回答のコード部分の表示を改善する方法について紹介しました。

Power Apps を入口にすることで、独自の追加機能の実装含め、構築コストや期間の削減、メンテナンスの容易性等のメリットを享受しつつ、ChatGPT のチャットエクスペリエンスの良さを出来る限り取り入れるという意味で、少しでも参考になれば幸いです。