Power Appsの使い方

Power AppsとPower Automateの使い方やできることがわかるブログを目指しています。

AI Builder ライセンスについて

AI Builderのライセンスについて、ざっくり調べたのをメモしておきます。

 

AI Builder ライセンスについて

AI Builderのライセンスはテナントごとのボリュームライセンス

Power AppsPower Automateなどのライセンスを持っていることが前提。

500$ / 1,000,000 service credits

クレジットの消費量はタイプによって異なる。

プレビューのものは無料で使える。

使わなかった分は繰り越されず、消費される。

ちょっとくらいなら超えても見逃してくれる。

試用版もある。

 

と、こんな感じでした。

 

 

情報が古い場合もあるので、正確な情報については下記を参照ください。

 

参考リンク

AI Builderライセンス

https://docs.microsoft.com/ja-jp/ai-builder/administer-licensing

 

Power Apps / Power Automate / Power VirtualAgent ライセンスガイド

https://go.microsoft.com/fwlink/?LinkId=2085130&clcid=0x409

Power AppsでAzure DevOpsのWork Itemを表示する

Azure DevOpsでタスク管理をしようかなと思ってやってみたのでメモを。

Power Appsは表示だけで、WorkItemの作成や更新はひとまずはDevOpsでやる予定です。

 

事前作業

プロジェクトなどは事前に作成しておきます。

使用するクエリはDevOpsで事前に作成しておきます。

 

WorkItemリストを取得する

WorkItemリストの取得はGetQueryResultsV2()関数を使用します。

クエリは任意のものを作成、指定できるのでまぁまぁつかえそうですね。

他の関数では、例えばワークアイテムの子アイテムリストを取得することものもあります。

 

関数に必要な各引数は事前に作成したクエリのページから全て取得できます。

値はDevOpsのページを開いて確認してください。

 

関数と引数

AzureDevOps.GetQueryResultsV2(プロジェクト名,クエリID,組織名)

 

使用例

AzureDevOps.GetQueryResultsV2("My%20work","63f6c0ae-a566-48be-9b5e-d2a0750af30f","ZEE-CitizenDevSupport").value

※値は私の環境+ダミーです。実際はご自身のものを使用します。

 

Queriesで引数を確認

引数はQueriesページのURLから全て取得することが可能です。

黄色いところが引数につかう値です。

 

結果

このように取得できます。

 

気になったところ

第三引数(account)の指定時に「OAuthを使用したサードパーティアプリのアクセス」を有効にしてとありましたが、特に何もしなくても取得ができました。

テナントによっては設定が必要かも。

 

感想

引数の意味がわかれば簡単に使えると思います。GetQueryResultsV2を例にしましたが、引数の意味だけわかれば他の関数も扱えると思いますので、是非お試しください。

 

Azure DevOpsはいいぞ。

 

参考URL

Azure DevOpsコネクタリファレンス

https://docs.microsoft.com/en-us/connectors/visualstudioteamservices/#get-query-results

Power Apps Now()でミリ秒まで表示する

Text()関数で表示形式をしていすることができますが、リファレンスのページを見ても書いてなかったのでメモ。

 

表示方法

下記のように記述するとミリ秒まで表示、取得できます。

Text(Now(),"yyyy/m/d hh:mm:ss.fff")

 

 

参考URL

Now()リファレンス

https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/functions/function-now-today-istoday

PowerAppsでローコーディングな勉強会 #10 イベントレポート

先日12/18にPowerAppsもくもく+LT会を開催いたしました。そのレポートです。

ご参加いただいた方ありがとうございました。

 

f:id:botherntu:20191225062406p:plain

 

 

場所

会場は日本マイクロソフトさんのセミナールームをお借りして開催しました。

 

参加枠

会場でもくもくする枠とTeamsを利用してリモート参加してもらう枠を用意しました。

初心者限定LT枠も3枠設けました。

運営にご協力いただく枠もありました。 

 

当日の様子

初心者LT枠はありがたいことに全て埋まり、3名の方にLTしていただきました!

うち1名は初LT+リモートでのLTと、なれない中ご参加いただき大変嬉しく思います!リモートはもちろんTeamsの会議機能を使って行いました。

僕が操作をミスって一瞬消しちゃったりしましたけど概ねトラブルなくできたかなと。

 

内容もみなさんPower Appsをやってみたお話で、どれも興味深かったです。やっぱりいろいろな方のお話を聞けたほうが面白いですね。是非これからもいろいろな方にLT、登壇などしていただけるように頑張っていきたいです。

 

前回と違い会議室ではなく普通のセミナールームで行いましたが、前回よりはおしゃべりは少なかったですね。なんでだろう。

みなさんあまりおしゃべりしないので僕の独り言がうるさかったかも・・・?

 

こっちの会場の様子も伝わるように今回はiPadで共有してました。リモート組にも一緒にやってる感を感じてもらえたと思います。

 

感想と反省

前回の反省点の初心者LTができたので、そこは大変良かったと思います。

Teamsも安定しているので、リモートでの勉強会も全然できますね。Teamsはいいぞ。

 

今後の目論見としては、もくもく会Teamsで勉強した内容を書いてもらったり、質問してもらったりというのを通して軽いコミュニケーションをしていくのと、アウトプットの意識を持ってもらえたらと思っています。そこを足がかりに、LTや登壇に興味をもってもらえる人を増やせたらと思います。 

 

と、こんな感じのイベントでした。

ご興味のある方はまたやると思いますので、ぜひご参加ください!

 

参考リンク

PowerAppsでローコーディングな勉強会 #10 イベントページ - Connpass -

https://powerapps.connpass.com/event/157924/

 

Teams 無料版

https://products.office.com/ja-jp/microsoft-teams/free

 

Japan PowerApps User Group

https://www.facebook.com/groups/powerappsjp/

Power Appsで横スクロールアクションゲームを作る ジャンプ編

1年以上前に作ったゲームアプリですが、今更ながら作り方の解説記事を書いてみます。

 

↓昨年9月に行われた海外コミュニティ主催のPowerAppsゲーム作成コンペで優勝したアプリ

f:id:botherntu:20191225052549g:plain

こんな感じの横スクロールアクションゲームを去年作成しました。

いくつかのセンテンスに分けて、作り方の解説記事を書いていきます。

 

要素分け

早速作っていきたいところですが、アクション要素的にどういった要素がこのゲームに含まれているか抜き出してみます。

 

・ジャンプしてる。

・横スクロールしてる。

・地面の高さが変わってる。

・ぶつかるとぶっとんで、もどってきてる。

・コイン取ってる。

 

こんな感じでしょうか。

 

今回やるところ

この記事では上記のうち、

 

・ジャンプ

 

について書いていきます。

 

ジャンプをつくる

ジャンプに出てくる要素

最初にジャンプのところをやっていきましょう。

使う要素は以下のとおりです。

 

コントロール 4つ

・イメージ(プレイヤー)

・タイマー(描画更新タイマー)

・アイコン(地面)

・ボタン(ジャンプボタン)

 

変数 3つ

GroundY 地面のY座標を表します。

PlayerY プレイヤー(今回は犬くん)のY座標を表します。

AccelerationY プレイヤーにかかっている加速度です。

 

地面を作る

ジャンプするには、まず地面が必要です。

ジャンプした後に、着地しないといけないので地面がないとだめです。

ScreenOnVisibleなどで地面用の変数を初期化します。

適当に600とかにしておきます。

 

Screen.OnVisible.

UpdateContext({GroundY:600})

 

とりあえず地面を見えるようにしたいので、適当にアイコンをおいておきます。

横幅最大値の四角アイコンを設置して、Yプロパティに上記の変数GroundYを設定します。

※OnVisibleプロパティは画面表示時に実行されます。うまく動作しない場合はScreenを切り替えてみてください。または代わりにテストしやすいボタンで実装してもいいですね。

 

Rectangle.Y.

GroundY

 

UpdateContext ({GroundY 600)) 
Screen 
app 
e 
Libel

 

コレでとりあえず地面ができました。

 

プレイヤー.Yに変数設定

プレイヤー用画像を準備して、メディア > イメージで追加します。

 

次に、プレイヤーのY座標用の変数を準備します。

OnVisibleで初期化しておきます。 

 

Screen.OnVisible.

UpdateContext({GroundY:600,PlayerY:0})

 

準備できたら、イメージのYに設定します。

Image.Y.

PlayerY

 

コレでひとまずPlayerYを変動させると、プレイヤー画像の座標が変わるようになりました。

 

重力をつくる

まだ現状だと犬さんは空中に浮いてますね。

全然リアルじゃありません。

playerY 
ツ リ ー ビ ュ ー

なので重力を作ります。

 

まずは加速度用の変数を初期化します。

Screen.OnVisible.

UpdateContext({GroundY:600,PlayerY:0,AccelerationY:0})

 

次にタイマーコントロールを追加し、Duration50とかにします。

 

Timer.Duration.

50

 

OnTimerStartで描画更新の処理を作っていきます。

今後ここがすごいごちゃごちゃしてきます。描画の処理もそうですし、当たり判定やらも書いていく。

メインの処理を書いていく場所になります。ローコーディングってなんぞや?ってなってきます。

 

今回は描画更新のたびに加速度に対して重力をかけていきたいので、下方向にひっぱる。座標的には値を追加していきます。

また、プレイヤーの高さは加速度に影響されて変動していきます。これも処理します。

 

// 加速度が重力の影響を受ける

UpdateContext({AccelerationY:AccelerationY + 10});

 

// プレイヤーの高さが加速度方向に移動する

UpdateContext({PlayerY:PlayerY + AccelerationY});

 

9 
十 
CnTirn テ : デ : 
ツ リ ー ビ ュ ー 
[ コ 5 [ を n ー 
能 [ い ng 
新 し 地 Ⅲ 
ー コ 
X 
〃 加 度 が ま 力 の 影 響 を 受 け る 
Update•ConteXt({AccelerationY;Acce1erationY ・ 19 } ) ー 
ノ ノ ブ し イ ヤ ー の 高 さ が 加 途 度 方 向 に 移 動 す る 
UpdateContext({PlayerY;P1ayerY + A 「 「 e ” tio 卩 Y } 
テ キ ス ト の 書 式 設 定 フ ォ - マ ッ ト の 解 降

10のとこが重力加速度ですね。完全にマジックナンバーになっちゃってますが。

 

上記がかけたら、うまくいってるか実験してみましょう。

Timerのプロパティを確認して、繰り返しと自動開始をONにしてください。

そしたら、右上の再生ボタンで再生モードにします。

 

うまくいっていれば、犬くん(プレイヤー画像)がすーっと自由落下して画面外へ消えていきます。

まだ地面を考慮してないので、着地はしてくれないですね。

 

地面に着地する

現状だと地面に潜っていってしまってます。着地するには、Timer.OnStartの処理を修正します。

 

// プレイヤーの高さが加速度方向に移動する

If(

  // もし地面にうまっちゃってたら・・・

    PlayerY + AccelerationY > GroundY,

    // 地面の上に乗せて、加速度リセット。

    UpdateContext({PlayerYGroundY,AccelerationY:0});,

    // そうでないなら、重力方向に加速する。

    UpdateContext({PlayerYPlayerY + AccelerationY});

)

 

 

これで地面に立つことが・・・

B 凵 App 
( Player-Y

できてないっすね。

 

プレイヤーイメージのYプロパティを下記のように修正すると、地面の上に立ってくれます。

 

Image.Y.

PlayerY-Image1.Height

 

 

できた!やったぜ!

 

ジャンプする

最後です。

ボタンを押したら犬くんをジャンプさせようと思います。

もう地面も重力もありますから、あとは上にジャンプ(加速)すればいいだけです。

 

ボタンを設置して、OnSelectに下記のように記述します。

 

Button.OnSelect.

UpdateContext({AccelerationY:-100});

 

うまく動いているか確認するには、再生モードにしてボタンをクリックします。

うまく行っていれば犬くんがぴょーんと飛び上がるはず。

 

-100の値を変更すると・・・?どうなるでしょう?)

 

ジャンプ完成!

これでやっとジャンプができました!お疲れさまでした!

どうでしょう、Power Appsでアクションゲームが作れる気がしてきませんか?

 

手順を追うので精一杯でなにがどうなってるかイマイチわからないかもしれませんが、1手順1手順はあまり難しいことはしていません。少し落ち着いたら見返して、変数がどういう事になってるか追ってみてください。

 

改善案

GroundYはコントロールYプロパティで代用してもいいかもしれない。と思いました。

 

残り作業

さぁジャンプができたので残りは

・横スクロール

・地面の高さ変動

・衝突判定とやられ処理、復帰処理

・コイン取得判定と処理。

ですね。

 

思ったより記事にすると長くなるので完結は年明けかな。。。

 

PowerApps Advent Calendar 2019

この記事はPowerApps Advent Calendar 2019参加記事です。

https://qiita.com/advent-calendar/2019/powerapps

Power Apps や Power Automate に関する仕事のご依頼は下記ページからお問い合わせください。
ZEE CitizenDevSupport