高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

PowerAppsを使ってみました

内容的にQiitaに書くかどうか迷ったものの、技術的なものを書くわけではないのでこちらに。

Office365 Business Premiumに付属しているツールで、わたしも本を書いた、Project Sienaの(Microsoftの気持ち的には?)後継である、Microsoft PowerApps。

様々なWebアプリのデータを利用したアプリをノンコーディングで作ることができる という非常に有用そうなツールです。

powerapps.microsoft.com

同じくOffice 365 Business Premiumに付属しているIFTTT風ツール、Microsoft Flowをボタンのアクションに紐付けて呼び出すこともでき、これを使えばより様々な処理を行うことができます。

ぶっちゃけかなり強い(使う人が使えば)。

Facebookにもユーザーグループが立ち上がっています。気になる人はそっちも見てみると良いでしょう。

www.facebook.com

さて本題。

さて、先日Bufferから突然Facebookの投稿ボタンが消滅したため、急遽「同じ投稿をFacebookTwitterマストドンに投稿するアプリ」というものを作っていました。

f:id:TakamiChie:20180807230419p:plain

まあ、BufferからFacebookの投稿ボタンが消滅した原因が、「Facebookがユーザータイムラインに文章を投稿するAPIを削除したため」だったので、このアプリが使えたのはわずか二日程度だったのですが・・・*1

とりあえず、アプリは全く使えなくなってしまったはいいとして、PowerAppsの大まかな使いどころと使い方はわかったので、とりあえずこのブログを書いてみます。

PowerAppsで作ったアプリの立ち位置について

ざっくりいうとこんな感じになります。

  • 上記PowerAppsのサイトより作成したアプリは、スマートフォンの専用アプリや、PCのブラウザ上から直接起動できるようになる(Webアプリのような感じ。インストールできるわけでは(たぶん)ない)。
  • ボタンなどのコントロールには、あらかじめ作成した「PowerApps」をトリガーにしたフローを紐付けることが可能。PowerAppsから入力したいデータがあれば、パラメータの変数として「PowerAppsで確認」を選ぶと、適当な名前付きのパラメータが挿入されるっぽいf:id:TakamiChie:20180807231414p:plain
  • ボタンからフローを呼び出すときは、ボタンを選択し、リボンからアクション>Flows>実際に使いたいフローを選択する。あとはExcelのような感覚で、他のコントロールの値などを引数に突っ込む。f:id:TakamiChie:20180807231724p:plain
  • おおかた実装が終わったら、リボンのファイル>保存 より、「発行」します(発行したアプリ以外は、スマートフォンなどのPowerAppsから触って起動することができませんので注意!)

とりあえず「慣れれば」簡単(慣れるのが簡単とは言ってない)。

Project Sienaを利用した経験がある人であれば、とりあえず迷うことはないでしょう。

いきなりPowerAppsからはじめるプログラマの方は、あまりに(他のプログラミング言語との)感覚の違いから面食らうこともあると思います(Project Siena並の感想)。

プログラマ?使えるのこれ。

とりあえず、はじめるまえに・・・

とりあえずはじめてPowerAppsを使うような人は、はじめてPowerAppsを起動したときに出てくるチュートリアルなどをしっかり読むと良いでしょう。Project Sienaユーザーでも、そうでなくても、そう簡単に使えるような代物ではありません。

ただ、慣れれば一からアプリを書くよりはるかに早く、それっぽい社内ツールを作ることができるようになると思います。このへんはProject Sienaと変わらないなあ というところ。

ビジネスユーザー向け・・・ 向け?

で、このPowerAppsですが、いちおうターゲットは「ビジネス アナリストからプロ開発者まで」とあります*2

ただ、正直プロ開発者ならともかく、プログラミングのエッセンスを全く学んでいないような人が使える代物ではないよなあ というのが感想です。

第一に、「フローにおいて、型を意識しないとフローがうまく実行できない」ということ。

フローでは「条件」というif文のようなものが使えるようになっており、PowerApps側の入力により処理を分岐することができるのですが、 PowerApps側から入力したパラメータは、必ず文字列型になる ということに注意。

たとえば上記スクリーンショットのアプリの場合、引数にテキストボックスの文字列(エディットコントロールのTextプロパティ)と、チェックボックスの状態(チェックボックスValueプロパティ)を引数にフローを呼び出していますが、ここでチェックボックスValueプロパティの値は、 Boolean型ではなく文字列型でフローに引き渡されます

つまり、if文で判定する前にbool()関数でBoolean型に変換してやらないと、trueとマッチしない。 f:id:TakamiChie:20180807233522p:plain

型を意識しないと処理が動かない というのは、とてつもなくプログラミング的だと思うのですが、違うのでしょうか。

第二に、フローを上から順番に実行する という概念自体が割とプログラマ的ではないか? ということ。

先日、まちづくりエージェント SIDE BEACH CITY.にて、第二回目のストアカ講座を開催しました*3

sbc.yokohama

今回前半にやった内容として、「Scratchで覚える、大人のためのプログラミングのキホン」がありますが、ここで感じたこととして、プログラミングの経験がまったくゼロである場合、プログラミングの基本である、順次・判断・繰り返し という概念を理解するのはそれなりに大変 ということがあります。

なので、この辺を考えると、もはや「フローを上から順に実行する(場合によっては判断や繰り返しも含む)」という概念が入った時点で十分「ビジネスユーザーには対応しきれないもの」になるんじゃないかな?ということです。

第三に、デバッグがしづらいこと

そしてこのPowerApps、Flowを実行すると即他のサービスに結果が反映されてしまう という性質上、テスト実行が非常にやりづらいです。

たとえば動作テストがてらにTwitterをフローとして追加したら、即投稿してしまう*4

テスト実行がしづらいぶん、当然「このフローを実行したらどうなるのか」を頭の中で十分にシミュレーションする必要がある。これってとてもプログラマ的なスキルであると思うのですがどうでしょうか。

プログラマが「少しでも労力を減らすためのツール」として使うのであれば優秀。非プログラマは使わないのが吉?

以上のことからとてもこれが「ビジネスユーザー向けのツール」とは思えないのです。

まあ、それでもビジネスユーザーが使える領域がある といえばあるのかもしれませんが(見た感じデータの取得や表示についてはProject Sienaと大して変わっていないようですし・・・)。

ただ、Project Siena以上に「もとよりそれなりにプログラミングのセンスがある人」が使えばこれ以上ない強力なツールになると思います。今のところイマイチ使い方がわかっていないのであまり使えていませんが、これは多分他のツール操作にも使えるなー というのが率直な感想。

とはいえ、非プログラマは、逆に問題をややこしくしてしまう可能性が高いため、PowerAppsの操作はとっとと近くのエンジニアに任せてしまうのが吉なのではないかなー(特に業務の場においては)という気がします*5

プログラミングを多少やったことがある(けど、現存のプログラム言語を使って強力なアプリをサクサク書けるほどのスキルは無い)ようなレベルの人であれば、自分のスキルの倍以上の力を発揮できるので、いいかもしれませんね。

でも、正直もうちょっと、「(真の意味で)ビジネスユーザーにも使える」アプリケーション実行環境を提供することはできなかったのか・・・ と言う気がします。

*1:これに対するメール通知が来たのが今のところIFTTTからのみなのですが、他はどうするつもりなんでしょう・・・ Swarmなんかはまだ使えもしないFacebook投稿ボタンを残していますが・・・

*2:https://powerapps.microsoft.com/ja-jp/build-powerapps/ より

*3:一応二回目なので、レポートブログはまちづくりエージェント SIDE BEACH CITY.側には書きません。こちらには書くかも

*4:まあ、そういうときのために、テスト時はSlackかなにかに処理をはき出すだけ というダミーFlowを作っておく というのも手なのかもしれませんが

*5:先日話を聞いたOffice 365 Nonprofit等だと話が違うのでしょうか。そもそもNonprofitはこれらのツールを使えない と言う気がしなくもないのですが