魁!! ITブログ

比較的素人向けです。「扇風機、新しいの買っちゃおっかなっ」くらいのノリで「これからちょっと勉強してみようかなっ」くらいの方々向けです。玄人には無駄な時間を費やさせてしまうかもしれません。ご了承ください。

【Microsoft】緊急事態宣言解除されても油断しちゃダメだよ?そういえばPowerAppsはちゃんとループ系ロジックも組み込めるんだよね(Do-Until系Loop処理)

はい、皆様どうもこんにちわ。

アキヒサでございますよっと。

 

どうもね、COVID-19に関する緊急事態宣言が解除されたようで。

最初の緊急事態宣言の対象として

何故か愛知を対象外にされた時は愛知人なりに

「なんでやねーん」

ってなりましたけど、いざ解除されると嬉しいもんですね。

 

とはいえ、COVID-19ちゃんがいなくなったから安全だぜ!ひゃっほう!

とはならずに、お気を付けくださいね。

手洗いとかうがいとか腕立て伏せとか、しっかり継続していきましょう。

 

そんな私は、最近定期的に「COVID-19対策エンジニア」の勉強会に

参加してみたりしています。

connpassのこのコミュニティですね。

power-covid19.connpass.com

 

普段私があんまり携わらないAmazon系の技術情報だったり、

Asanaとかその他いろいろ知らない製品を知れたりしました。

今からでも多分YouTubeに動画残ってるので、

興味のある方はぜひ御覧ください。

www.youtube.com

 

しかも、前回のブログをあのイケメン吉田さんご本人のツイッター

ご紹介いただけました。

https://twitter.com/TaikiYoshidaJP/status/1252938680194355200

f:id:NagoyaITAdmin:20200518122343p:plain

令和始まって一番嬉しかったこと。

嬉しかったです!

 

 

・・・え?

なんだか今日は真面目ですね?

 

逆に聞きたい。

逆に。

 

真面目じゃない時なんてありました?

 

社内でも社会的にも、友人にも

「アキヒサは真面目だけが取り柄だよなー」

と言われてきた人生だというのに。

 

しかしアレですね。

 

 

 

 

 

 

 

オニやべぇあちぃよね、最近。

俺っち、ずっとマスクしてっからぁー

だからかもしんねぇけどぉー

パねぇあちぃ。

👓チョー曇る。

マジ、ラグーナテンボスりてぇー。

テンボスでギャルの水着見ながら仕事してぇしー。

 

 

 

 

 

 

 

 

さて、じゃあ今回も一通り書きたいこと書いたんで、

書きたくもない技術ブログ書いていきますね。

 

いや違いますよ?

書きたいから書いてるんですよ?

何言ってるんですか。

まったくもう。

 

 

 

さて。

前回、吉田さんの動画にならって記事を書いたら、

どちゃくそロングな記事になってしまった

(私の無駄な話が多いからね)
nagoyaitadmin.hatenablog.com

ので、今回は簡単なお話だけサラッとして終わりたいと思います。

 

 

 

 

~~~ 本題 ~~~

※注※
本内容は私個人の意見や見解等であり、大変恐縮ですが記載内容に関して
誤りがある可能性がございます。
そのような場合、御連絡いただけましたら早急に訂正いたしますので、
よろしくお願いいたします。

今回はね、題名に書いた通りLoop処理について。

ちょっと今、個人的にPowerAppsで「作ってみたいなー」っていう

アプリがあって、それを作ろうと頑張ってるんだけどさ。

 

僕の構想している機能を実装するには、

確実にロジックの中にLoop処理が必要なのね?

でもね、多分だよ?

多分だけど、無いわけ。

既存の関数にさ。

 

Loop(0 to 10 , このロジック)

 

みたいな感じで作ってくれたらええのに、

無いのさ。

作ってくれてもいいと思わない?

まあ、見つかったのは

ForAll

くらいなもんでさ。

 

まあ別にいいんだけどね。

ロジック内でCollect関数でLoopさせたい分だけテーブルこしらえて、

ForAllでぶん回すやり方でも、いけるとは思う。

 

で、もっとしんぷるぅー!な方法ないかなーと思って

ぐぐ・・・bingったところ、

https://www.dynamicpeople.nl/en/news/while-loop-powerapps/

こんなブログがあったので、Goog・・・適当な翻訳機能にお任せして、

読んでみたら、頑張ってLoop処理実現してるの。

 

簡単だったので簡単に実装してみたよ!

f:id:NagoyaITAdmin:20200518104255p:plain

これが完成画面!数字を入力して「ボタン」を押すと・・・

f:id:NagoyaITAdmin:20200518104631p:plain

1秒毎に右の数字が増えていって、入力した数値で止まるという仕様!

見た目はこんな感じだし、1秒じゃなくてもっと短い間隔でも

いけるよ!

0.1秒間隔とか、0.01秒間隔とか、0.001秒間隔(多分最小値?)とかね!

※追記:2020/05/18 どうも5秒100カウントくらいが限度っぽい。
    1秒あたり20カウント程度かな?
    っつーことはDerationの最小値は実質50くらいかね?
    端末性能次第かもだけど。

 

まあ実装方法はというと、

見ての通り以下のアイテムがあれば十分。

 <必須アイテム>

  テキスト入力:1個
  ボタン:1個
  タイマー:1個

 <以下はわかりやすくするために>
  ラベル:1個
  ギャラリー:1個(ギャラリー内にラベル1個)

f:id:NagoyaITAdmin:20200518110852p:plain

こんな感じ

まずは赤線のラベルでも配置しちゃうかい?

ラベルの配置はもう自力でやってくんろ!

わかるべ?

わかるべや!

わかれ!

ねだるな!

勝ち取れ!

 

じゃ次ね?

青線のテキスト入力を配置しよう!

これもわかるね?

配置の仕方は感じ取ってください。

君なら出来るんだから。

知ってるんだから、僕は。

君が出来るヤツだってことをさ。

で、ここでちょっと仕掛けを施しておきます。

このテキスト入力の OnChange に以下の式を設定しておくのね。

(以下の TextInput1 は、このテキスト入力の名前だから、そこだけ注意してね)

 

UpdateContext({varLoopEnd:Value(TextInput1.Text)})

f:id:NagoyaITAdmin:20200518113129p:plain

OnChange の式をこんな感じにしておこう!

そのままもう1つ!

上と同じ感じで Default の式を varLoopEnd と指定しておいてくださいな。

 

ほら次ぃ!紫線のボタンだ!

これもわかるべ?

と言いつつも、さすがに3連続だと冷たい人だと思われそうなので

画像貼りましょうか。

しゃーなしやで?

f:id:NagoyaITAdmin:20200518111728p:plain

はい。ボタンの作り方だよ。わかりやすいべ?言ってごらん。

「わかりやすいですぅ」って。

 ボタン配置出来たら、そこの OnSelect に以下を

書いてみてくださいな。

 

UpdateContext({varStartTimer:false});
UpdateContext({varRuns:0});
UpdateContext({varStartTimer:true})

 


んじゃ次行こう!

次!何色だい!?

緑線だね!

そうだよ!

タイマーだよぉ!

待望のぉ!

f:id:NagoyaITAdmin:20200518112342p:plain

挿入→入力→タイマー だよぉ!

で、このタイマー君に色々と仕掛けをしていきたいと思います。

 まずはねぇ、Duration ってのを1000にしてあげるのね。

f:id:NagoyaITAdmin:20200518114155p:plain

Duration ってのは「期間」的な意味なんだけど

1/1000秒単位で入力するから、これで1秒ってことね。

 んで、こっからはもうサラッと行くね。

 

以下の通りに設定しやがれ!

 Timer.Start = varStartTimer

 Timer.Repeat = If(varRuns>= varLoopEnd - 1,false,true)

 Timer.OnTimerEnd = 
ClearCollect(colTimer,{item:"I am item: " & varRuns + 1});
UpdateContext({varRuns:varRuns + 1});
If(varRuns >= varLoopEnd - 1 ,UpdateContext({varTimerStart:false}))

 

はい、以上!

これでできた!

 

けど!

これだけだと本当に動いてるのかがわからんので、

以下の様に

オレンジ線の設定をしてみよう!

まずはギャラリーの設置!

f:id:NagoyaITAdmin:20200518115227p:plain

空白のギャラリーにしてみたよ!

そうするとこんなのが出てくるから、

f:id:NagoyaITAdmin:20200518115438p:plain

挿入ペインから・・・みたいなやーつ

素直に従って「[挿入]ペインから項目を追加する」を押してあげましょう。

f:id:NagoyaITAdmin:20200518115706p:plain

テキストラベル でも選択してあげましょう

そうすると、こんな感じでギャラリーの中にラベルが入ってくれます。

f:id:NagoyaITAdmin:20200518120007p:plain

ラベルがギャラリーの一つ下の階層におるね。

このラベルの Text の値を item ってしてあげたら終わりやねん。

f:id:NagoyaITAdmin:20200518120326p:plain

おりゃああああああ!最後じゃあーーー!!!!

 

たったこれだけやれば、Loop処理を実装出来たってわけ。

  

うん。

 

 

 

え?

 

 

 

いや、そりゃあさ。

 

 

Loop(1 to 100 , このロジック)

 

 

とか書かせてくれりゃそれが一番早いんだけどさ。

 

 

ねぇんだもん。

 

 

ねぇんだもんよぉ!

 

 

 

で、だ。

しかもこれUIで動く感じだね?

40回ループしたい場合、1秒のループ間隔だとしたら

40秒待たないと次の動作へ行かない!

それはキツイね!

もっと短い間隔に出来るから、そこはせめて調整しようね! 

 

で。

UIじゃなくて動作させるにはやはりForALLしかないのかなー

今まだ試行錯誤中です!

改めて追記か別ブログで書きますので、少々お待ちください!

もしくは、どなたか御存知でしたら教えてください・・・

ラグーナテンボスのプール、ご案内しますから・・・

~~~ 本 題 終 了 ~~~

 

 ってなわけで、今回はおしまいだよ!

中途半端さが残るけれどもしょうがないよね!

ブログ開設1年記念ってことで許して!!

 

そう。

よく考えたら一応ブログ書き初めてから一年経ったらしいんですわ。

 

月に1回程度しか書けてないけど・・・

 

これからも!

ちょくちょく!

書いていこうと!

思っていますので!

よろしく!

お願い!

します!

 

末永くあたたかい目で見守ってください。 

 

真面目なアキヒサでした。

 

ぃよろしくでぇーっす!

 

あ、やべっ!

今日の「COVID-19対策エンジニア」の勉強会始まってた!

てへっ。