我ながら1年もかけて、くそアプリとくそPlatformに、よく付き合ってきたと思う
そんな自分が、この一年間に取り組んだことと、いまから取り組もうとしていることを、つらつら書いてみる
課題感
所詮は他人の書いたプログラム、ノーコードと言えば誰でも簡単にメンテナンスできる・・・
はっきり言います。PowerAppsは素人の市民開発者が手を出せるような、生半可なツールではなく、れっきとしたプログラミングスキルが必要な、別次元の開発ツールです。
そういう意味では、大規模なシステムになればなるほど、苦しむことになることは覚悟しておいてもらいたい
問題点
シェアポイントリストしかデータベースで使えない。Dataverseが使える、プレミアム版は別として
Automateのフローは関数ではない。フローからサブフローを関数ぽく呼べる、プレミアム版は別として
PowerAppsのスクリーンやコントロールUIの解読は、ソリューションエクスポートしないとコード化できない
Solutionにしないと参照接続が使えない。コネクタ関係が、しょっちゅう切れるので、後になればなるほど複雑化する
同時開発に向かない。そもそもアプリ編集中は誰か一人しかできない。
Automateは単体ではエクスポート、インポートできるが、一旦、Solutionに入れると2度と出来なくなる
やってきたこと
とりあえず、ソースの解読は全てCHATGPTにsolutionのZIPを食わせてやっている。これは有効、自作のRAGと合わせこんで、ようやく実用化レベルとなった(全部、人力で理解していると思われているけど、そうではない)
リファクタリングのために、アプリ、フロー、シェアポイント、コネクタの情報から、データサイエンス手法を用いて可視化を試んでいる
まとめ
Powerappsに中途半端に巻き込まれそうになっている人に忠告しておく
これからの時代はコードも生成AIで作れる時代である
そのうち、このような陳腐化したプラットフォームは無くなるだろう
とりあえず、今のうちに高いスキルを持っていると、周りから何となく尊敬されるが・・・
以下、今後の予定
ソースコード解析において、各コンポーネントが密接に関連し合っている場合、適切な可視化を利用することで全体像を把握しやすくなります。以下のような可視化手法が有効です。
コンポーネント図
- システム内の主要コンポーネント(PowerApps, PowerAutomate, SharePoint List, APIコネクタ)間の関係性と依存関係を明確にします。
- 各コンポーネントやモジュール間のインターフェースやデータフローを示す。
- コミュニケーションパスや依存性が視覚的に把握可能。
フローチャート
- 各機能の処理フローを詳細に追跡。
- PowerAutomateによるワークフローや処理ステップを具体的に描写。
- 条件分岐やループなども直感的に理解可能。
シーケンス図
- 時系列でのメッセージ交換とプロセス流れを明確化。
- ユーザーインターフェースからAPIコールまで、どのような順序でイベントが発生するか表示。
- 同期・非同期処理も見える化。
ER図(エンティティ・リレーションシップ図)
- データベース構造とデータ間の関係性を把握。
- SharePoint List内で管理されるデータエンティティとそれら間の関連性。
組み合わせたアプローチ
上記それぞれは異なる側面からシステム構造を見ることができます。これらを組み合わせることで、以下が可能になります:
- 全体構造から細部まで一貫した理解促進
- 問題箇所特定および改善策立案への支援
- コードメンテナンス性向上
適切なツール(Visio、Lucidchartなど)を活用してこれらの図を作成することで、解析作業はより効率的かつ効果的になるでしょう。
以下のような可視化が有効です。ネットワーク図やサンキーチャートも特定の側面で利用できますが、用途に応じた選択が重要です。
ネットワーク図
- コンポーネント間の依存関係: PowerApps、PowerAutomate、SharePointリスト、APIコネクタなど各コンポーネント間の依存関係を可視化できます。
- データフロー: データがどのように移動し、どこで処理されるかを示すことでシステム全体の理解を深めます。
- メリット 複雑な相互関係を明確にし、ボトルネックや冗長性を見つける助けになります。
サンキーチャート
- プロセスフロー解析: 特定機能(例えばPowerAutomateのフロー処理)の流れやステップ間でどれくらいデータが移動しているかを可視化できます。
- リソース配分: 各機能やプロセスに割り当てられたリソース量や使用頻度を見るためにも使えます。
- メリット フロー量やプロセス全体像を直感的に把握できるため、改善点を見つけやすい。
データ入力から出力まで全体的な流れと変換過程を見ることができ、システム全体像理解につながります。
結論
ネットワーク図は構造と依存関係分析向きであり、一方サンキーチャートはプロセスフロー解析によく適しています。ソースコード解析にはこれらを組み合わせて使用することで、多角的な視点から問題点や改善策を見つけ出せます。具体的には目的と焦点によって最適な手法を選ぶことがお勧めです。
なんのこっちゃ。。。っていう感じ