オープン系でできたこと、MS系でできないこと~ギャップを感じた事例とその対応策~

オープン系でできたこと、MS系でできないこと~ギャップを感じた事例とその対応策~

10月 3, 2024

アバター画像

記事の監修

S.Sato

記事の監修


S.Sato

マネジメント&イノベーション事業部 開発部/2グループ グループマネージャー
資格:Microsoft Office Specialist Master 2007、ITパスポートなど

2022年よりMicrosoft365とPowerPlatformの案件を担当。
それ以前は業務・Web系システムを要件定義からリリースまでの開発に従事。
IT業界歴15年の経験を活かし、PJを牽引し後続の育成にも力を注ぐ。
趣味は散歩で、思考が煮詰まった際には、近所の緑道を散歩し、新たな発見や自然からのインスピレーションを受けている。

無料ご相談受付中 まずはお気軽にご相談ください

0.はじめに

私(K.Yoshida)は入社後、主に.Net系言語(VB.Net、C#.Net)で開発・保守・運用するエンジニアとして十数年従事していました。2024年からMS系のローコード開発に従事しています。
10年以上オープン系言語に携わっていたので、MS系のローコード開発スタート直後は慣れないこともあり、いろいろな失敗がありました。
今回はその中の一例をご紹介しようと思います。
普通のプログラム言語だと思って設計・開発に臨むと、とっても痛い目を見たので反面教師として参考にしてください。

1.データフローの使い勝手

Power AppsでExcelファイルをアップロードし、Power Platformのデータフロー機能を用いてDataverse に Excelシートの入力値を登録する仕組みを構築したい。
オープン言語で考えるならば、Excel操作にはC#で「Microsoft.Office.Interop.Excel」ライブラリなどを一般的に利用します。
Excelシートからデータを取得し、DataTableに保存することで入力チェックやDBへの登録など実装者がある程度自由に構築可能です。

しかし、Power Platformではそう簡単にはいきません。

複雑な入力チェックを Power Platform で実現することが困難でした。
Excelシートからデータを取得し、複数行組み合わせてチェックする必要がある場合、何を使うのがよいのか?
データを集計してチェックする必要があるため、データフロー(Power Query)を利用できると考えて実装を進めました。
何とか入力チェック自体は実現できました。しかし、ここで別の問題が生じました。
データフローは別々のユーザが同時に起動することができません。

ユーザAがExcelをアップロードしている間にBがアップロードすると、Aのファイルをデータフローでチェックしている間、Bはずっと処理待ちになってしまいます。
データフローをクラスと同じものと考えていたので呼び出し元が異なればそれぞれで動くことを期待していたが無理でした。
これでは、ABCD…と複数人のユーザが一斉にExcelをアップロードした場合、最後の人は人数分の待ち時間が積み重なってしまうため、実運用には耐えられないでしょう。
(実際には同時に複数人が実行することはまれだと思いますが・・・)

2.その問題への回避策

一般的なアプリと同じようにファイルアップロードから入力チェックや登録処理を並列で動作させることは難しいので別々の処理にすることで回避しました。
まず、Power Apps の画面からファイルアップロードだけを実行するように仕様を変更します。
このとき、ファイルをアップロードした操作ユーザの情報と併せて保存することで誰がアップロードしたかを後から追いかけることができるようにしておいてください。
その後、アップロードしたファイルを Power Automateなどで作業フォルダに移動し、作業フォルダにて入力チェック用のデータフローを実行します。

もしくは、そもそもアップロード画面を作成せず、 SharePoint リストなどでファイルを添付し、 Power Automate を実行するフローにしても良いかもしれません。

次は、入力チェック用のデータフローを実行し、入力チェックの結果をエラー情報のDataverseに格納してください。
エラーが無かった場合は登録用のデータフローを実行するように Power Automateを組んでみましょう。

これにより、データフローの処理完了後、Dataverse にエラー情報が登録されている場合、エラー内容を伝えるメッセージを Teams やメールに送信することができます。
また、Dataverse にエラー情報の登録件数が0件の場合、本来登録するデータの登録結果件数などをTeams やメール送信することができます。
よって、アップロードしたユーザを画面の前で長時間待たせることなくファイルアップロードから入力チェック及びデータ登録が可能になります。

3.まとめ

ファイルアップロードからデータチェック、エラー有無に応じた処理などはオープン言語開発では基本的な考えですが、ローコード開発においてはそのまま実現することは困難かつ、制約などが多くあるため現実的ではありません。
複雑な仕様を構築せず、単純な機能単位に分散して作り上げることを考えてみてください。

無料ご相談受付中 まずはお気軽にご相談ください

Microsoftを導入してコスト効率をよくしたい

Microsoftを導入して
コスト効率をよくしたい

Microsoftに関して気軽に聞ける相談相手が欲しい

Microsoftに関して
気軽に聞ける相談相手が欲しい

Microsoftを導入したが、うまく活用できていない・浸透していない

Microsoftを導入したが、うまく活用できていない・浸透していない

社内研修を行いたいが社内に適任者がいない

社内研修を行いたいが
社内に適任者がいない

Bizwindでは、Microsoft導入支援事業などを中心に
IT・DX推進に関する様々なご相談を承っております。
ご相談・お見積りは無料です。まずはお気軽にお問い合わせください。

無料ご相談はこちら

ビズウインドでは、 様々な課題でお困りの お客様に対して、 無料相談を実施しております。

無料相談に申し込む

DX推進サービス一覧

担当者に今すぐ質問する

簡単な情報入力でBizwind担当者が
お電話にて回答いたします!

すぐに電話で質問
日時指定で折り返し

以下の内容をご記入・送信ください。
確認次第お電話を差し上げます。

    以下の内容をご記入・送信ください。
    確認次第お電話を差し上げます。

      4月
      1月
      2月
      3月
      4月
      5月
      6月
      7月
      8月
      9月
      10月
      11月
      12月
      2025
      1950
      1951
      1952
      1953
      1954
      1955
      1956
      1957
      1958
      1959
      1960
      1961
      1962
      1963
      1964
      1965
      1966
      1967
      1968
      1969
      1970
      1971
      1972
      1973
      1974
      1975
      1976
      1977
      1978
      1979
      1980
      1981
      1982
      1983
      1984
      1985
      1986
      1987
      1988
      1989
      1990
      1991
      1992
      1993
      1994
      1995
      1996
      1997
      1998
      1999
      2000
      2001
      2002
      2003
      2004
      2005
      2006
      2007
      2008
      2009
      2010
      2011
      2012
      2013
      2014
      2015
      2016
      2017
      2018
      2019
      2020
      2021
      2022
      2023
      2024
      2025
      2026
      2027
      2028
      2029
      2030
      2031
      2032
      2033
      2034
      2035
      2036
      2037
      2038
      2039
      2040
      2041
      2042
      2043
      2044
      2045
      2046
      2047
      2048
      2049
      2050
      30
      31
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      1
      2
      3
      10:00
      11:00
      12:00
      13:00
      14:00
      15:00
      16:00
      17:00
      18:00