21
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Power AppsとPower Automateで火星に行ってみよう!

Last updated at Posted at 2021-02-25

#いま火星が熱い!
2021年2月19日未明に、NASAの火星探査ローバー「パーセベランス」が火星に着陸しました。
火星から送られてくる息をのむほど美麗で、しかし生のない世界の写真に惹かれます。
「火星の風の音」にも感動を覚えましたし、プロジェクトに携わった方々のコメントに涙しました。
さらに、映画「オデッセイ」を鑑賞し、原作の「火星の人」も読破してしまいました。
・・・要するに、火星にハマってます(笑

######そして、NASAからは上記以外にも、火星に行った気分になれる小粋なプレゼンをまで用意してくれました。
####Mars Perseverance Photo Booth
image.png

「Welcome to Mars! We can't take you to Mars (yet!) but we can bring the Red Planet to you.」
とか気が利いてますね。

また、ちょうどおうじゃさんといっしょコミュニティで、@ishiayayaさんから、
######「removebg」という、高精度で写真の背景を切り抜いてくれるWebサービス
を教えてもらえました。
このremovebg、APIも提供してくれています。
さらに、別の背景も設定可能です。
これはもうセルフ「Mars Perseverance Photo Booth」を作るしかない。

ということで火星で記念写真が撮れるツールを作ってみました。

#準備
removebgを利用するには、ユーザー登録しAPI Keyを取得する必要があります。
画面右上の「ログイン/登録する」よりユーザー登録し、
image.png
画面上部の「ツール&API」より
image.png

「API Docs」を選択し
image.png

「Get API Key」をクリックし
image.png

API Keyを表示して、コピーしておいてください。
image.png

#注意
今回はPower AutomateにてHTTPコネクタを利用します。これはプレミアムコネクタとなるため別途Automateの有償ライセンスが必要です。
お試しいただく際は、無償、無期限の個人向けプランをお勧めします。
PowerApps Community Plan

#全体の流れ
Power Appsにて画面を作成し、AutomateでAPIコネクタを作成していきます。

#Power Appsの作成
テキストインプットを2つと、画像コントロールを3つ、ボタンを配置してください。
位置や名前は任意で大丈夫です。
image.png
(イメージ右上のラベルコントロールは不要です)

画像コントロール1の[Image]プロパティに、テキストインプット1の[Text]プロパティを設定します。
image.png

画像コントロール2とテキストインプット2にも同様に設定してください。

#Power Automateの作成
続いて、画面左上の[アクション]メニューより、[Power Automate]を選択。
image.png

現れたペインで[新しいフローの作成]を選択
image.png

表示したPower Automate画面で「+作成」
image.png

[インスタント クラウド フロー]を選択し
image.png

任意のフロー名を入力し、[Power Apps]を選択、[作成]ボタンを押下します。
image.png

新しいアクションをクリックし、"HTTP"で検索。[HTTP]を選択し、
image.png

さらに[HTTP]を選択。
image.png

下記の値を設定してください。
image.png

■方法
POST

■URL

https://api.remove.bg/v1.0/removebg

■ヘッダー

Key Value
accept application/json
X-API-Key [上記の準備で取得したremovebgのAPI Key]
Content-Type application/x-www-form-urlencoded

■本文

al&image_url=@{triggerBody()['HTTP_本文']}&bg_image_url=@{triggerBody()['HTTP_本文_1']}

######本文部分は下記のように設定ください。
Power Apps からの引数設定その1
image.png

Power Apps からの引数設定その2
image.png
こうなります。
image.png

#####APIからのレスポンスは下記の構造をもつJSONオブジェクトとなります。image.png

AutomateでのJSONへのアクセスは、
####HIROさんの「JSONと仲良くなるために (4)」がとても参考になると思います。

レスポンスJSONから、"result_b64"の値を取得します。

「種類」を"文字列"で変数を初期化を追加
image.png

値には、動的なコンテンツの追加で、「式」を選択し

?['data']?['result_b64']

を入力後、
image.png

「動的なコンテンツ」に切り替え、カーソルを先頭に移動し、本文を選択
image.png
OKをクリック
image.png

最後に「Power Apps または Flow に応答する」を選択し、テキストとして、上記変数を設定します。
image.png

保存して、Power Appsの画面に戻りましょう。

#再びPower Appsの作成
画面左上の[アクション]メニューより、[Power Automate]を選択し、
image.png

今作ったフローを選択します。
image.png

上部の関数バーに、フローの呼び出し数式が表示されるので切り取りし、
image.png

ボタンの[OnSelect]プロパティに貼り付けます。
image.png

前後に、Set関数とテキストインプット1および2の[Text]プロパティを設定します。
image.png

こんな感じになると思います。

Set( return_Flow, Call_removebgAPI_from_Apps.Run(TextInput1.Text,TextInput2.Text))

※フロー名やコレクション名などは、ご自身で命名された値を入力ください。

最後に、(未設定の)画像コントロール3の[Image]プロパティに、下記値を設定して完了です。

Concatenate("data:image/png;base64,", return_Flow.return)

image.png

#いざ!火星に行こう!
テキストインプット1に、One Drive などに保存した、ご自身の写真のURL
テキストインプット2に、Nasaのギャラリーより取得した火星地表のの写真のURL
を入力し、ボタンを押下します
######本来の背景抜き機能を利用する場合は、テキストインプット2に何も入力せずにボタンを押してください。

太々しいぬこが
image.png

無事、火星に着陸できました!
image.png

合成後の画像ファイルを取得するには、
画像コントロール3の[Image]プロパティに設定した値を、ラベルコントロール等にも表示し、『Base64から画像変換』するWebサービスでデコードしてください。

#まとめ
今回、このremovebgというツールを教えてくださった石川陽一さん(@ishiayaya)に感謝いたします。

21
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?