Power Queryのマージ事故を防ぐ!「事前チェック」と「事後チェック」の二段構え運用術

はじめに ── Power Queryには「多対多警告」がない

Power Queryでテーブルをマージするとき、Excelのように「このマージは多対多になります」と警告してくれる機能は存在しません

そのため、実務では

  • マージに異常を防ぐ「事前チェック」
  • マージに異常を発見する「事後チェック」

の2段構えで、自分で検査の仕組みを組み込む必要があります。

この記事では、この2つのアプローチを順番に紹介します。

目的 タイミング 実装方法
事前チェック キー候補が本当に一意かを確認する マージ前 自作関数(fxCheckKey)
事後チェック マージ結果に異常(多対多・未登録)がないかを確認する マージ後 一致件数列+GUI操作

どちらか一方でも効果はありますが、両方組み合わせると、キー設計ミスと実データの異常の両方を検出できます。


事前チェック:マージする前にキーの一意性を検査する

基本の運用:検査クエリを2種類用意する

マージするすべてのクエリについて、次の2つを用意します。

  • 取引先データ
    • 検査取引先データキー重複
  • 調達実績データ
    • 検査調達実績データキー重複

検査クエリでは、キー候補列(例:契約番号/明細番号/年度)で Group By を行い、

件数 > 1

だけを抽出します。

  • 結果が 0行 → このキーは一意
  • 結果が 1行以上 → 重複あり(キー不足の疑い)

レビュー時のチェックポイント:キーに使われていない列はないか

マージ画面で契約番号・明細番号のみがキーとして選択されているのに、両方のテーブルに「年度」列が存在している――このような状態を見つけたら要注意です。

「年度があるのにキーに使われていない」こと自体が、レビュー時の重要なチェックポイントになります。

汎用「主キー検査関数」を自作する

データベースでは主キー制約が自動で重複を防いでくれますが、Power Queryにはその機能がありません。そこで、汎用的に使える検査関数を自作します。

全体イメージ

例えば次のような取引先データがあるとします。

契約番号 明細番号 年度 取引先
O1 1 2025 A
O1 1 2026 A
O2 1 2025 B

このテーブルに対して

fxCheckKey(
    取引先データ,
    {"契約番号","明細番号"}
)

と呼べば「重複あり」、

fxCheckKey(
    取引先データ,
    {"契約番号","明細番号","年度"}
)

と呼べば「一意」と返ってきます。列名を変えるだけで、どんなテーブルにも使い回せます。

ステップ1:空のクエリを作る

「ホーム」→「新しいソース」→「空のクエリ」を作成し、クエリ名を fxCheckKey に変更します。

ステップ2:詳細エディターに関数を記述する

既存の内容を全て削除し、以下を貼り付けます。

(tbl as table, KeyColumns as list) as table =>
let
    Grouped =
        Table.Group(
            tbl,
            KeyColumns,
            {
                {"件数", each Table.RowCount(_), Int64.Type}
            }
        ),

    Result =
        Table.AddColumn(
            Grouped,
            "判定",
            each if [件数]=1 then "一意" else "重複あり"
        )
in
    Result

これだけで関数は完成です。

ステップ3:関数を呼び出す

新しい空クエリを作り、以下のように呼び出します。

= fxCheckKey(
    #"取引先データ",
    {"契約番号","明細番号"}
)

結果:

契約番号 明細番号 件数 判定
O1 1 2 重複あり
O2 1 1 一意

キーに「年度」を追加すると:

= fxCheckKey(
    #"取引先データ",
    {"契約番号","明細番号","年度"}
)
契約番号 明細番号 年度 件数 判定
O1 1 2025 1 一意
O1 1 2026 1 一意

ステップ4:判定列でフィルターする

「判定」列を「重複あり」だけに絞り込めば、原因行だけが残ります。これだけでも十分実務に使えます。

一歩進めた活用:最小キーの候補を一覧化する

実務では「何列そろえれば一意になるのか」を知りたくなる場面があります。

候補 結果
契約番号 ×
契約番号・明細番号 ×
契約番号・明細番号・年度
契約番号・年度 ×
契約番号・製品番号 ×

このように候補を一覧化しておくと、「このテーブルの最小キーは契約番号+明細番号+年度である」ということが一目で分かります。

実務で一番使うバージョン:重複行だけを返す関数

さらに改良し、「重複行だけを返す」関数にしておくと運用が楽になります。

(tbl as table, KeyColumns as list) as table =>
let
    Grouped =
        Table.Group(
            tbl,
            KeyColumns,
            {
                {"件数", each Table.RowCount(_), Int64.Type}
            }
        ),

    Duplicates =
        Table.SelectRows(
            Grouped,
            each [件数] > 1
        )
in
    Duplicates

この関数であれば、

  • 問題なし → 0行
  • 問題あり → 重複キーだけ表示

という結果になるため、「更新のたびに結果が0行であればOK」というシンプルな運用チェックが可能になります。


事後チェック:マージした後に異常を発見する

事前チェックはキー候補の設計段階でのミスを防ぐものですが、実際にマージを実行した後でなければ見えてこない異常もあります。ここでは、GUI操作だけで完結する「一致件数チェック」を紹介します。

この方法は、

  • キー不足(今回のような年度の入れ忘れ)
  • マスタ未登録
  • マスタ重複

すべて同時に検出できるのが特徴です。

ステップ1:マージを行う(あえてキーは不足させたまま)

現在のように契約番号・明細番号でマージします(わざと年度は入れません)。結合の種類は左外部結合です。

すると新しい列「取引先データ」ができます。まだ展開しません。

契約番号 明細番号 年度 取引先データ
O1 1 2025 Table
O2 1 2025 Table

ステップ2:一致件数列を追加する

リボンから「列の追加」→「カスタム列」をクリックします。

  • 新しい列名:一致件数
  • 数式:Table.RowCount([取引先データ])

OKを押すと、次のようになります。

契約番号 年度 取引先データ 一致件数
O1 2025 Table 2
O2 2025 Table 1
O3 2025 Table 1

今回はO1だけが「2」になっています。この時点で「1件じゃない!」と気付けます。

ステップ3:異常だけ表示する

一致件数列の▼を押し、「数値フィルター」→「等しくない」→「1」を指定します。

すると

契約番号 一致件数
O1 2

だけが残ります。これがマージ異常一覧です。

ステップ4:原因を確認する

ここで初めて「取引先データ」列の Table をクリックします。すると2025・2026の2行が入っていることが分かり、「あ、年度がキーに入ってない」と原因が判明します。

ステップ5:修正する

マージを編集し、契約番号・明細番号・年度の3列でマージし直します。

ステップ6:もう一度一致件数を確認する

今度は次のようになります。

契約番号 一致件数
O1 1
O2 1
O3 1

これで正常です。

ステップ7:完成テーブルを作る

一致件数が全て1であることを確認したら、最後に「取引先データ」列を展開します。これで完成です。

実務ではさらにおすすめ:検査専用クエリを分離する

私は検査用クエリを別に1つ作ってしまいます。

調達実績+取引先(マージ)
        │
        ├── 完成データ
        │
        └── マージ検査

マージ検査クエリでやることは、

  1. 一致件数列を追加する
  2. 一致件数≠1 だけ残す

の2ステップだけです。

  • 0件 → マスタ未登録
  • 2件以上 → キー不足・重複

だけが表示されます。

通常運用ではこの「マージ検査」クエリは0行になります。0行であれば「異常なし」、1行以上表示されたら「マージ条件またはマスタデータを確認する」という運用にすると、データ更新時のチェックが非常に簡単になります。


事前チェックと事後チェック、結局どちらをやるべきか

両者は役割が異なるため、併用をおすすめします。

  • 事前チェック(fxCheckKey):クエリ設計・レビューの段階で「このキーは本当に一意か」を確認する。設計ミスを開発時点でつぶせる。
  • 事後チェック(一致件数クエリ):日々のデータ更新時に「今回のデータで異常が起きていないか」を機械的に確認する。マスタ側の欠落・重複など、データそのものの異常にも気付ける。

事前チェックは「作るとき」、事後チェックは「動かすたび」に効いてくる、という住み分けで考えると分かりやすいです。


まとめ

  • Power Queryにはマージ時の多対多を警告する機能がないため、自分で検査の仕組みを作る必要がある
  • 事前チェック:自作関数 fxCheckKey でキー候補の一意性を設計段階で検査する
  • 事後チェック:一致件数列(Table.RowCount)をGUI操作だけで追加し、マージ後の異常(多対多・マスタ未登録)を検出する
  • 事後チェックは「マージ検査」クエリとして分離しておくと、更新のたびに0行であることを確認するだけの運用にできる
  • 最終的には「キーに使われていない識別列がないか」をレビューで確認する習慣も重要

【Power Query】同一ブック内のテーブルをデータソースにする3つの方法とベストプラクティス

はじめに

Power Query Editorを開いた状態のまま、同一Excelブック内にある別のテーブルを新しいデータソースとして追加したい場面は意外と多くあります。

「一度エディターを閉じてワークシートから追加する」「エディター内のM言語だけで完結させる」など方法はいくつかありますが、それぞれにメリット・デメリットがあり、選び方を誤ると循環参照エラーやファイルパス依存の不具合につながることもあります。

本記事では、複数のAIによるレビューを経て精度を高めた、同一ブック内テーブルをデータソースにする際のベストプラクティスを整理します。

方法1:ワークシートから「テーブルまたは範囲から」を使う(最も推奨)

Microsoftが標準として想定している、もっとも扱いやすい方法です。

手順

  1. Power Query Editorを閉じる(または最小化する)
  2. Excelのワークシート上で、対象データ内の任意のセルを選択
  3. [データ] タブ > [テーブルまたは範囲から] をクリック
  4. Power Query Editorが自動的に再起動し、選択範囲が新しいクエリとして追加される

メリット

  • Microsoft公式の標準的な手順
  • 生成されるMコードがシンプル
  • 初心者でも扱いやすく、保守性が高い

デメリット

  • 一度ワークシート側の操作に戻る必要がある

方法2:Excel.CurrentWorkbook()を使う(エディター内で完結)

Power Query Editorを閉じずに作業を完結させたい場合に有効な方法です。

基本手順

  1. [ホーム] タブ > [新しいソース] > [その他のソース] > [空のクエリ] を選択

  2. 数式バーに以下を入力してEnter

= Excel.CurrentWorkbook()

  1. ブック内に存在するExcelテーブル・名前付き範囲・動的配列の一覧が表示される
  2. 対象テーブルの Content 列を展開して読み込む

数式バーが表示されていない場合は、[表示] タブ > [数式バー] にチェックを入れると表示されます。

より実務向けの書き方:テーブル名を直接指定する

一覧表示から展開する方法よりも、テーブル名をあらかじめ指定してしまう方がステップ数が少なく、クエリの可読性・保守性も高くなります。

= Excel.CurrentWorkbook(){[Name="売上テーブル"]}[Content]

下記の「ナビゲーション」ステップをなくすことができます。

方法3:現在のブックを「Excelブック」として開く(原則非推奨)

[ホーム] > [新しいソース] > [Excel ブック] から、現在開いているファイル自体を選択してテーブルを読み込む方法です。外部ブックを読み込む操作と同じ感覚で使えますが、同一ブック内のテーブル参照が目的であれば推奨されません。

デメリット

  • ファイルパスに依存するため、保存場所やファイル名の変更で読み込みエラーになりやすい
  • OneDrive/SharePoint環境では、同期方法や利用環境によってはローカルパスとクラウドパスの差異により更新エラーになる場合がある(近年は同期精度が改善されており、必ず発生するわけではない)
  • 同一ブックを扱う目的としては操作が冗長

同一ブック内のテーブルを参照する場合は、方法1または方法2を優先するのが安全です。

実務で押さえておきたい追加ポイント

「接続のみ作成」を活用する

他のクエリのマージ・追加(Append)・ステージング用データとして使う場合は、[データを読み込む] > [接続のみ作成] を選ぶことで、不要なワークシート出力を増やさずに済みます。後から「クエリと接続」ペインで編集可能です。

クエリ名・テーブル名を整理する

追加直後は Table1Query1 のような名前になりがちです。実務では以下のように役割がわかる名称に統一しておくと、M言語の編集やメンテナンス時に迷いません。

  • tbl_Sales(取り込み元テーブル)
  • stg_Sales(ステージングクエリ)
  • fact_Sales / dim_Product(集計・マスタ用途)

まとめ:方法の使い分け

方法 推奨度 用途
①ワークシートから「テーブルまたは範囲から」 ★★★★★ 標準的な方法。基本はこれでOK
②Excel.CurrentWorkbook()を使用 ★★★★☆ Power Query Editor内で完結させたい場合
③現在のブックを「Excel ブック」として開く ★★☆☆☆ 原則非推奨。特別な事情がある場合のみ

ベストプラクティスまとめ

  • 初めてテーブルを追加するなら、ワークシートから「テーブルまたは範囲から」を使う
  • Power Query Editorを閉じたくない場合は Excel.CurrentWorkbook() を使い、可能であれば {[Name="テーブル名"]}[Content] の形でテーブル名を直接指定する
  • 同一ブックを「Excel ブック」として開く方法は、ファイルパス依存のリスクがあるため避ける
  • 他のクエリの入力となるデータは「接続のみ作成」にし、不要な出力シートを増やさない
  • クエリの出力テーブルを Excel.CurrentWorkbook() で再度読み込まない(循環参照の回避)
  • クエリ名・テーブル名は役割がわかる名称に統一する

これらを押さえておくことで、同一ブック内のPower Queryを保守しやすく、再利用性の高い構成に保つことができます。

Entity Listと混同注意!FCC Covered Listの制度構造をゼロから整理する

はじめに

米国の通信機器を調達する業務では、FCC(米連邦通信委員会)の「Covered List」を目にする機会があります。

Covered Listは、国家安全保障上のリスクがあると判断された通信機器・サービスをまとめたリストであり、掲載企業の製品は米国市場で大きな制限を受けます。

一方で、以下のような誤解も少なくありません。

FCCが独自に企業を指定している Entity Listに載れば自動的にCovered Listにも載る Covered Listに掲載されると既存設備もすぐ撤去しなければならない

本記事では、Covered Listの制度の仕組みと、調達・サプライチェーン管理の実務で押さえておきたいポイントを整理します。

Covered Listとは

Covered Listとは、国家安全保障上の脅威となる通信機器・サービスをまとめたFCCのリストです。

掲載された企業の対象機器は、FCCのEquipment Authorization(機器認証)を新たに取得できなくなります。その結果、以下が事実上できなくなります。

新規輸入 新規販売 新規マーケティング

つまり、Covered Listは米国市場への新規参入を制限する制度と考えると分かりやすいでしょう。

FCCが独自に企業を選んでいるわけではない

Covered Listについて最も重要なのは、FCCが独自の判断で企業を掲載している制度ではないという点です。

制度の根拠となるのは、2019年制定の Secure and Trusted Communications Networks Act です。

この法律では、国家安全保障に関する正式な判断(Determination)が行われた場合、FCCがCovered Listへ反映することを求めています。つまり、

国家安全保障上の判断 → FCCがCovered Listへ掲載

という流れになります。

掲載の判断材料になるもの

国家安全保障上の判断は、一つの機関だけが行うものではありません。実務上は、例えば次のようなものが判断の根拠となります。

分類 例 政府機関 国防総省(DoD)、国土安全保障省(DHS)、国家情報長官室(ODNI)、商務省産業安全保障局(BIS) 法律 NDAA(National Defense Authorization Act) 大統領権限 ICTS関連の大統領令(Executive Orders) 議会 国家安全保障関連法

そのため、「4つの機関だけが決める制度」という理解は正確ではありません。

Entity Listとの違い

混同されやすい制度として、商務省BISのEntity Listがあります。

Entity Listへの掲載はCovered List掲載の重要な判断材料になりますが、

Entity List掲載 = Covered List掲載 ではありません。

両制度は相互に影響することはありますが、法律上は別制度です。

Covered Listは企業指定が基本

Covered Listは、特定企業・関連会社を指定する制度が基本です。

近年は外国製ドローンや通信機器に対する規制強化も進んでいますが、現時点では以下が中心となっています。

特定企業の指定 Equipment Authorization制度の強化

そのため、「外国製だから一律禁止」という制度ではありません。

掲載されると何が起こるのか

Covered List掲載企業の対象製品は、以下の制限を受けます。

新規のEquipment Authorizationを取得できない 新規輸入できない 新規販売できない 新規マーケティングできない

一方で、既に認証済みの機器が自動的に使用禁止になるわけではありません。

Rip and Replace Programとの違い

ここは非常に混同されやすいポイントです。

Covered Listは新規認証を停止する制度です。

一方、Secure and Trusted Communications Networks Reimbursement Program(いわゆるRip and Replace Program)は、既存設備の撤去・交換を支援する制度です。

制度 目的 Covered List 新規認証の停止 Rip and Replace Program 既存設備の撤去・交換 条件付き承認制度はあるのか

欧州のCEマーキングのように、「一定条件を満たせば認証される」という一般的な条件付き承認(Conditional Approval)制度は、Covered Listにはありません。

例外的な個別判断が行われることはありますが、制度として体系化された条件付き認証制度ではない点に注意が必要です。

Covered Listはいつ更新されるのか

Covered Listには決まった更新時期はありません。

国家安全保障上の新たな判断が行われるたびに、FCCのPublic Safety and Homeland Security Bureau(PSHSB)が随時更新します。

更新頻度は不定期ですが、実績としては年に数回程度更新されることが多く、安全保障上の動きが活発な時期には更新回数が増える傾向があります。

実務で確認したい情報源

調達担当者であれば、次の情報源を継続的に確認すると効率的です。

情報源 用途 FCC Covered List 最新の掲載企業を確認 PSHSB Public Notice Covered List更新の速報 Federal Register 法的に正式な告示 商務省BIS(Entity Listなど) 将来的なCovered List掲載の兆候を把握 法律事務所のClient Alert 制度変更の実務的な解説

GoogleアラートやWeb監視ツールを活用すると、更新情報を効率よく把握できます。

まとめ

FCC Covered Listは、米国政府の国家安全保障上の判断を受けて、FCCが対象企業をリスト化する制度です。

調達実務では、次のポイントを押さえておくことが重要です。

FCCが独自に企業を選定している制度ではない Entity Listとは別制度であり、自動的に連動するわけではない 現時点では企業指定が基本であり、外国製品を一律に禁止する制度ではない Covered Listは新規認証を停止する制度であり、既存設備の撤去制度とは異なる 最新動向を把握するには、FCCだけでなく商務省BISや国防総省、連邦官報なども継続的に確認することが重要

米国の安全保障政策は継続的に見直されており、Covered Listも随時更新されます。調達やサプライチェーン管理に携わる方は、最新情報を定期的に確認することをおすすめします。

ChatGPT vs Gemini、画像生成の無料枠とプロンプト固定機能を比較してみた

はじめに

ChatGPT と Gemini、それぞれの無料プランでの画像生成の制限や、あらかじめプロンプトを固定しておける「プロジェクト」的な機能について、複数のAIとの対話を通じて調査しました。調査の過程で当初の回答に誤りがあったため、その修正点も含めて整理します。

ChatGPT(無料プラン)の画像生成制限

  • 1日の生成上限:おおよそ2〜3回(リクエスト数ベース)
  • 1回あたりの枚数:1枚のみ(同時複数枚は不可)
  • 解像度:標準解像度のみ(高解像度オプションは利用不可)
  • リセット:24時間経過後に枠がリセット

制限に達すると、その日はそれ以上生成できなくなります。ただし、生成済み画像に対する「背景を明るくして」のような微調整は、新規カウントされない場合があるとされています。

※情報源によって「1日3回」「1日5回」といった記載もあり、時期やサーバー負荷、アカウントによって変動する可能性があります。

Gemini(無料プラン)の画像生成制限

Geminiは「モデル別」「プラン別」の2段階で制限がかかる点がChatGPTと異なります。

モデル 無料プラン 有料プラン
Nano Banana 2(標準) 利用可・1日約20枚
Nano Banana Pro(高品質) 利用不可 1日50〜100枚程度
  • リセットタイミング:24時間ごと、または日本時間夕方16:00〜17:00頃という報告あり
  • 商用利用・人物画像生成:無料プランでは禁止または強い制限あり
  • 動画生成(Veo 3等):無料プランでは利用不可
  • 1回の生成枚数:プロンプト1回あたり最大4枚まで

制限比較まとめ

項目 ChatGPT(無料) Gemini(無料)
1日の生成上限 約2〜3回 約20枚
1回あたりの枚数 1枚 最大4枚
高品質モデル 利用不可 利用不可(Pro限定)
商用・人物利用 明記なし 制限あり

「貼り付け+Enterだけで自動画像生成」は可能か

結論として、Geminiには文章を貼り付けてEnterを押すだけで自動的に画像生成される設定は存在しません

画像生成には以下のいずれかの操作が必要です。

  1. プロンプトに「画像を生成して」等の指示を含める
  2. 画像生成モードへの切り替え
  3. 送信

自動化したい場合の現実的な選択肢は次の3つです。

  • 定型文を毎回貼り付ける(「画像を作成:〜」など、手動だが簡単)
  • 外部自動化ツールを使う(ブックマークレット、Power Automate Desktop、AutoHotkey等でクリップボード操作を自動化)
  • Gemini APIやGoogle AI Studioを使う(開発者向け。テキスト入力→画像出力のパイプラインを構築。API キー管理などの実装コストが発生)

ChatGPTの「プロジェクト」に相当する機能はGeminiにあるか

正しい理解:GemとGoogle AI Pro

ChatGPTの「プロジェクト」「GPTs」に近いのは、GeminiのGem機能です。

  • 役割(ペルソナ)、タスク、出力形式、禁止事項などを事前に定義して保存
  • 保存したGemを選ぶだけで、毎回同じ指示を入力する手間がなくなる
  • 知識ファイル(PDF、Word等)を登録し、参照させることも可能

しかし重要な制約として、Gem機能(Gemマネージャー)は無料プランでは利用できず、Google AI Pro(旧Gemini Advanced)等の有料プランでのみ提供されています。

無料プランの左メニューには「チャットを新規作成」「画像」「動画」「ライブラリ」「ノートブック」等は表示されますが、「Gem」「Gemマネージャー」の項目自体が存在しません。

機能比較:ChatGPT vs Gemini(無料プラン)

項目 ChatGPT(無料) Gemini(無料)
プロジェクト機能 ×
システムプロンプトの固定保存 ○(プロジェクト単位) ×
Gem(カスタムAI)作成 -(ChatGPTにはGem自体がない/GPTsは有料寄り) ×(無料では作成不可)
毎回同じ指示の自動適用 ○(プロジェクト内) ×

Gemini無料プランで指示を維持したい場合は、以下のいずれかで運用することになります。

  • 新しいチャットのたびにプロンプトを書き直す
  • 同一チャットを使い続け、冒頭で設定した前提を維持させる(ただし会話が長くなると前提が崩れる場合がある)

まとめ

観点 結論
画像生成枚数 Geminiの方が無料枠は多い(約20枚 vs 約2〜3回)
プロンプト固定運用のしやすさ ChatGPTのプロジェクト機能の方が無料プランでも柔軟
Gem(Geminiのカスタム指示保存) 無料プランでは利用不可、有料プラン必須

「記事を貼り付けるだけで毎回同じ指示を再利用したい」という運用であれば、現時点ではChatGPTのプロジェクト機能の方が無料プランでも使い勝手が良いと言えます。GeminiでGemを使いたい場合は、Google AI Pro等へのアップグレードが前提となる点に注意してください。


本記事は複数のAI(Gemini、ChatGPT等)との対話結果をもとに、事実確認・訂正を経て構成しています。AIの回答には実際の画面仕様と異なる誤りが含まれる場合があるため、最新のUIについては各サービスの公式ヘルプページもあわせてご確認ください。

属人化を防ぐPower Automateフロー仕様書テンプレート改善ガイド

はじめに ― なぜフロー仕様書の標準化が必要か

Power Automateのフローは、GUIベースで直感的に作成できる反面、「作った本人にしか分からない」属人化フローになりやすいという弱点があります。

  • 変数の初期化位置がバラバラ
  • アクション名が「条件2」「Apply to each 1」のままでブラックボックス化
  • 接続情報やトリガー条件が仕様書に残らず、移行時に事故が起きる

こうした問題を防ぎ、「誰が引き継いでも30分で理解できるフロー」を実現するには、コードを書く以前の設計段階でのルール共有が欠かせません。

本記事では、Power Automateのフロー仕様書テンプレートを作成・運用する上で押さえておきたい改善ポイントを、実装の正確性を検証したうえで整理しました。


1. 「仕様書」と「設計書」の違いを最初に整理する

読者の多くは「仕様書に何を書けばいいのか」という疑問から読み始めます。冒頭で以下の整理をしておくと、記事全体の理解度が上がります。

文書 内容
業務仕様書 何を実現するか
フロー仕様書 どう実装するか
運用手順書 障害時にどう対応するか

2. 変数の初期化ルール(要修正ポイント)

よくある誤解

「Scope内では変数を初期化できない」という説明を見かけることがありますが、これは正確ではありません

Initialize variableSet variable も、実際にはScope内に配置可能です。

実務上の正しい理由

問題になりやすいのは、Apply to eachDo until などのループ内で初期化するケースです。ループのたびに再初期化されてしまい、意図しない挙動につながります。

そのため実務では、技術的な制約ではなく設計ルール(ベストプラクティス)として、以下のように仕様書に明記するのが適切です。

変数は後から一覧で確認しやすくするため、原則としてトリガー直後(フロー最上位)に初期化することを推奨します。


3. 変数とCompose(作成)の使い分け

「Composeは高速だから使う」という説明も見かけますが、Microsoft公式にそのような明言はありません。Composeのメリットは以下の点にあります。

  • 値が不変(再代入されない)
  • 可読性が高い
  • 変数管理(初期化・更新)の手間が不要

仕様書には、パフォーマンスではなく設計思想として記載するのが自然です。

一度だけ使用する値・再代入が不要な値には Compose アクションを使用します。変数管理が不要になり、フローの可読性が向上します。


4. エラーハンドリング:Try-Catch-Finallyパターン

Power Automateには、プログラミング言語のような構造化された try-catch-finally は標準搭載されていません。以下の Scope + Run After設定 で疑似的に再現します。

Scope(Try)
  ↓
Scope(Catch)
  Run After:Try が「失敗」した場合

  ↓
Scope(Finally)
  Run After:Try が
    ・成功
    ・失敗
    ・スキップ
    ・タイムアウト
  のいずれの場合も実行

「Finally」という名前の専用機能があるわけではなく、Run Afterの4条件(成功/失敗/スキップ/タイムアウト)をすべてONにすることで実現している点を仕様書に明記すると誤解を防げます。


5. Solution → Connection Reference → Environment Variableの順序

環境変数(Environment Variables)や接続参照(Connection Reference)はDev→Prod移行時のトラブル防止に重要ですが、その前提としてソリューション(Solution)を使った開発が必須です。

Solutionを使わない場合、Connection ReferenceもEnvironment Variableもそもそも利用できません。導入順序は以下の通りです。

1. ソリューションで開発する
2. Connection Reference を設定する
3. Environment Variable を設定する

移行時の注意点も仕様書に残しておくと安心です。

環境変数はソリューション内に定義し、Dev→UAT→Prodへエクスポート/インポートします。接続参照はインポート時に各環境の接続(例:Prod用SharePoint接続)へ紐付け直す必要があります。この手順を省略すると、Dev環境の接続がProdで使われてしまう事故につながります。


6. 仕様書の管理項目にフローIDを追加する

フロー名だけでなく、フローIDやバージョン、オーナーを管理項目に含めておくと、URLが変わっても管理センターから検索でき、保守性が大きく向上します。

項目
Flow名 受注通知
Flow ID xxxxxxxxxxxxx
Solution Sales Solution
Owner 山田
Version 1.2

7. トリガー条件(Trigger Conditions)を明記する

トリガー条件を設定するだけで、不要なフロー実行を大幅に減らせます。仕様書にも専用の記載欄を設けることを推奨します。

トリガー:When an item is created

Trigger Conditions:
@equals(triggerBody()?['Status'],'未処理')

なお、splitOn を有効にしている場合は triggerBody() ではなく triggerOutputs()?['body/...'] を使う必要がある点も、あわせて注意書きしておくと親切です。


8. 同時実行制御(Concurrency Control)

Apply to each には同時実行数の設定(OFF/ON:最大50)があります。更新競合を防ぐ目的で意図的に並列数を絞っている場合は、その理由を仕様書に残しておくと保守がしやすくなります。

Apply to each
  並列数:1
  理由:更新競合防止

9. リトライポリシー(Retry Policy)

SharePointやDataverseなどのコネクタには、リトライポリシー(Default/Fixed/Exponential/None)が存在します。設定値を仕様書に一言残しておくだけで、「なぜ同じ処理が複数回実行されたのか」という運用時の疑問を防げます。

Retry: Default

10. 異常終了時の通知フローも仕様化する

エラー発生時の通知経路も、仕様書として明文化しておくと運用担当者の助けになります。

異常終了時
  ↓
Teams通知
  ↓
管理者へメール送信
  ↓
ログ出力

11. 動的コンテンツ(Dynamic Content)はトークン表現も併記する

仕様書に式や動的コンテンツを記載する際は、式エディタ上で実際に表示されるトークン表現を併記すると、読者がドラッグ&ドロップで設定する際に迷いません。

items('Apply_to_each')?['Title']

12. アクション名の命名規則

デフォルトの「条件2」「Apply to each 1」のままだと、後から見て何をしているアクションか分かりません。以下のような命名規則を1行加えるだけで、チーム開発における保守性が大きく向上します。

アクション名は「【処理内容】対象名」の形式で命名する(例:【メール送信】承認者へ結果通知)


13. はてなブログとしての体裁(UX向上策)

  • 冒頭に [:contents] を配置し、目次を自動生成する
  • 式・関数・JSON(例:formatDateTime(utcNow(), 'yyyy-MM-dd'))はコードブロックまたはインラインコードで囲む
  • 情報量が多い補足事項は <details> タグで折りたたむ
<details>
<summary>補足:変数とComposeの使い分け</summary>
(ここに補足情報を記載)
</details>

まとめ

項目 ポイント
変数初期化 Scope内でも技術的には可能。ループ内初期化を避けるルールとして明記
Compose 「高速」ではなく「再代入不要な値向け」という設計思想で説明
エラー処理 Try-Catch-FinallyはRun After設定の組み合わせで実現
環境移行 Solution → Connection Reference → Environment Variableの順で構築
管理項目 Flow ID・Version・Ownerを仕様書に追加
トリガー Trigger Conditionsを明記し、無駄な実行を削減
並列処理 Concurrency Controlの設定と理由を記載
信頼性 Retry Policy・異常終了時の通知フローを仕様化
可読性 アクション命名規則・動的コンテンツのトークン表現を併記
ブログ体裁 [:contents]・コードブロック・<details>タグを活用

これらを取り入れることで、単なる「フロー仕様書テンプレート」ではなく、チーム開発・本番移行にそのまま使える標準化ガイドラインとして完成度の高い記事になります。


おすすめタイトル案

  1. 「Power Automateフロー仕様書、これだけは直したい13のポイント」
  2. 「属人化を防ぐPower Automateフロー仕様書テンプレート改善ガイド」
  3. 「Power Automate仕様書の“あるある誤解”を正して標準化する方法」

【法律英語】based on を後置修飾で読むと詰む理由と、意味上の主語が消える構文の読み方

はじめに

法律英語の条文を読んでいると、based on のような一見シンプルな過去分詞句が、学校英文法の「分詞句は元の2文に戻せる」というルールでは説明しきれないケースに出会うことがあります。

今回は、FCCのCovered List関連条文に登場する以下のフレーズを題材に、複数のAIとの対話を通じて明らかになった分析を整理します。

...are deemed to pose an unacceptable risk, based exclusively on any of four sources for such a determination...

結論:based on は「名詞の後置修飾」ではない

based on には用法が複数あり、今回のケースはそのどれとも微妙に異なる、中間的な位置づけになります。

用法 元の文に戻せるか 今回のケース
名詞の後置修飾(例:a report based on interviews) ○(The report is based on...) ×
文全体を修飾する分詞構文(例:Based on the evidence, S+V) ×
判断・行為(deem等)を修飾する副詞的な過去分詞句 ×

つまり a list を修飾しているのでも、文全体にかかる分詞構文でもなく、deemed(判断される)という行為の根拠を補足する副詞的な要素として読むのが最も自然です。

なぜ「〇〇 is based on...」に戻せないのか

通常の後置修飾(例:a report based on interviews)では、修飾される名詞自体が based on の意味上の主語になれます(The report is based on interviews)。

しかし今回、based の意味上の主語は a list でも equipment/services でもなく、deemed という動詞に意味として内在する「判断(determination)」です。ただし determination という名詞は文中のどこにも統語的には登場しておらず、あくまで読者が deem(判断する)という動詞の意味から補って解釈しているだけです。

この点については複数のAIの分析を突き合わせた結果、次のようにまとめるのが安全です。

  • 「determination という名詞が隠れている」と断定するのは意味論的な解釈であり、統語論的に実在するわけではない
  • より控えめに言えば、「deemed という判断行為の根拠を補足している」という説明にとどめるのが正確

for such a determination の係り先

この部分の係り先については、当初の分析よりも一段階精密にできます。

based exclusively on
 [any of four sources for such a determination]

構造としては based on + 名詞句(any of four sources for such a determination) であり、名詞句の内部で

four sources ← for such a determination

という修飾関係になっています。つまり for such a determinationbased ではなく sources を限定しており、「その判断のために用いられる4つの情報源」という意味を作っています。

「付加詞的分詞句(adjunct participial phrase)」という用語について

この構文を指して「付加詞的分詞句」「covert subject(意味上の主語が表面化していない)」といった理論言語学の用語が使われることがありますが、扱いには注意が必要です。

  • adjunct participial phrase 自体は存在する専門用語(例:Walking down the street, I met John. の Walking down the street)
  • ただし based on を含む句については、文法書によって分類が割れる
    • past participle(過去分詞)とする説明
    • complex preposition(複合前置詞)に近いとする説明
    • supplementive clause(付加節)とする説明
  • based on according to owing to given などは、現代英語では前置詞的な振る舞いに近づいており、単純に分詞句と言い切れない

したがって「付加詞的分詞句」という分析は有効な一つの解釈ではあるものの、唯一の正解として断定すべきではありません。他の文法書や実務的な法律英語解説とも整合させながら、あくまで便利な分析モデルの一つとして扱うのが妥当です。

法律文特有の圧縮表現

法律文は「意味が曖昧にならない範囲で、とにかく情報を圧縮する」という特徴があり、学校英文法ではあまり見かけない表現が頻出します。今回のケースの背景を理解する上で、代表的な圧縮パターンを整理しておきます。

① 関係詞の連鎖

複数の文を、関係詞でつないで1文にまとめます。

equipment
that poses a risk
and that has certain capabilities

② 名詞化(Nominalization)

動詞を名詞に変換して圧縮します。

  • determine → determination
  • decide → decision
  • conclude → conclusion

③ 前置詞句による条件の追加

The determination must be based exclusively on four sources.

based exclusively on four sources

だけで済ませます。

④ with構文・独立分詞構文の省略

The contract was signed, with the payment completed.
 ↓
The contract was signed, payment completed.

with すら省略されることがあります。

⑤ be動詞の省略

information that is required
 ↓
information required

⑥ 意味上の修飾(今回のケースに該当)

The equipment is deemed to pose an unacceptable risk.
The determination is based on four sources.
 ↓
deemed to pose an unacceptable risk, based exclusively on four sources

based の意味上の主語(何に基づくのか)が省略され、読者は意味から補う必要があります。

法律文を読むコツ

  1. まず骨格を探す:directs → to publish → a list
  2. 条件を一つずつ追加する:a list → that are deemed → based exclusively on... → and that possess...
  3. 「元の2文」を無理に探さない:圧縮の過程は名詞化・関係詞・前置詞句・条件節が複数段階で重なっており、必ずしもきれいな2文に戻せるとは限らない

学校文法の「分詞は必ず元の文に戻せる」という前提だけで読もうとすると行き詰まるため、「この句はどの法的要件(条件・限定・根拠)を追加しているのか」という観点に切り替えると理解しやすくなります。

まとめ:知識カード

  • based on は必ずしも「名詞を修飾する後置修飾(which is based on...)」とは限らない
  • 法律文では、判断・認定・決定などの行為の根拠を補足するために、based on... が付加的に用いられることがある
  • この場合、based on の意味上の主体は文中に明示されず、読者は動詞(deem, determine, designate等)の意味から補って解釈する
  • for such a determinationbased ではなく sources を修飾し、「その判断に用いられる4つの情報源」という名詞句を形成する
  • このような構文は、学校文法の「分詞句は元の2文に戻せる」という説明だけでは捉えきれず、法律英語特有の情報圧縮パターンとして理解すると読みやすい
  • 「付加詞的分詞句」「covert subject」といった用語は便利な分析モデルの一つであり、唯一絶対の分類ではない点に留意する

セキュア・トラステッド通信ネットワーク法 第2条の対象となる機器およびサービスの一覧

Covered Listとは

FCC(米国連邦通信委員会)のCovered Listページ(https://www.fcc.gov/supplychain/coveredlist)では、次のように説明されています。

原文

Section 1.50002 of the Commission’s rules directs the Public Safety and Homeland Security Bureau to publish a list of communications equipment and services (Covered List) that are deemed to pose an unacceptable risk to the national security of the United States or the security and safety of United States persons, based exclusively on any of four sources for such a determination and that such equipment or services possess certain capabilities as enumerated in section 2(a) of the Secure and Trusted Communications Networks Act of 2019, Pub. L. No. 116-124, 133 Stat. 158 (2020) (codified as amended at 47 U.S.C. §§ 1601–1609).

Pursuant to the Commission’s rules, the Public Safety and Homeland Security Bureau will maintain this list on the Commission’s website, and will monitor the status of any determinations in order to update the Covered List. More information on how the Covered List is compiled and updated can be found in the Commission’s rules at 47 C.F.R. § 1.50000 et seq.

日本語訳

委員会規則 47 C.F.R. § 1.50002 に基づき、公共安全・国土安全保障局(Public Safety and Homeland Security Bureau:PSHSB) は、米国の国家安全保障または米国人の安全に対して許容できないリスクをもたらすと判断された通信機器およびサービスの一覧(Covered List)を公表することが義務付けられています。

この判断は、2019年セキュア・トラステッド通信ネットワーク法(Secure and Trusted Communications Networks Act of 2019)第2条(a) に規定された対象機器・サービスであり、同法で定められた4つの判断根拠のいずれかに基づいて行われます。

また、委員会規則に従い、PSHSBはCovered ListをFCC公式ウェブサイト上で維持・管理し、新たな指定や判断が行われた場合には継続的に更新します。

Covered Listの作成方法や更新手続きの詳細については、47 C.F.R. § 1.50000以降に規定されています。

ポイント

Covered ListはFCCが独自に判断して作成するリストではありません。

法律や行政機関による国家安全保障上の判断を根拠として、FCCが対象となる通信機器・サービスを一覧化・公表している制度です。

Covered Listとは何か

米国連邦通信委員会(FCC)は、国家安全保障上のリスクがあると判断された通信機器・通信サービスを一覧化し、公開・管理する仕組みを持っています。この一覧は「Covered List(カバードリスト)」と呼ばれ、FCC規則(47 C.F.R. § 1.50000 等)に基づき、Public Safety and Homeland Security Bureau(公共安全・国土安全保障局)が維持しています。

企業が米国向け製品を販売したり、通信機器を調達したりする際には、取引先や採用予定の機器・サービスがこのリストに掲載されていないかを確認することが、コンプライアンス上重要になります。

表現上の注意 Covered Listはしばしば「ブラックリスト」と説明されますが、これは正確な表現ではありません。FCCが独自調査・独自判断で企業を排除する制度ではなく、あくまで法律で定められた他機関の認定結果を反映する仕組みである点に注意してください。

なぜCovered Listが作られるのか

米国政府は、以下を守るために「安全保障上問題がある通信機器・サービス」を明確化しています。

国家安全保障 重要インフラ 国民の通信の安全

その結果として公表される一覧がCovered Listです。「この機器・サービスは安全保障上の理由から注意が必要」という政府側の意思表示と理解すると分かりやすいでしょう。

掲載基準はどう決まるのか

FCCが独自の裁量で企業を選定するわけではありません。Secure and Trusted Communications Networks Act of 2019(2020年成立、47 U.S.C. §§ 1601–1609に法典化)に定められた手続きに従い、以下の2条件を満たす場合に掲載が検討されます。

  1. 法律で定められた4種類の政府機関等による安全保障上の認定があること
  2. 当該機器・サービスが、同法第2(a)条に列挙された特定の技術的能力(通信の傍受、データの不正な転送を可能にする機能など)を有していること

つまり「FCCが独自にブラックリストを作る」のではなく、法律で定められた判断枠組みに基づいて掲載する制度設計になっています。

リストの運用と更新

Covered Listは一度作成して終わりではありません。

FCCの公共安全・国土安全保障局がウェブサイト上で公開 安全保障上の状況を継続的にモニタリング 必要に応じて随時、追加・削除を実施

そのため、現時点で問題のない企業・製品であっても将来的に追加される可能性があり、逆に状況の変化により削除されることもあります。定期的な確認が欠かせません。

Covered ListとFCC認証の違い

新入社員が最も混同しやすいポイントとして、Covered ListとFCC認証(Equipment Authorization)は別の制度です。

項目 Covered List FCC認証(Equipment Authorization) 目的 企業・機器の安全保障上のリスク評価 電波法上の技術基準への適合確認 判断主体 法律で定められた政府機関等の認定 FCCによる技術基準審査 結果の意味 安全保障上のリスクの有無 電波・技術的な適合性の有無

FCC認証を取得している=安全保障上も問題ない、ではない点に注意してください。FCC認証を持ちながらCovered Listに掲載されているケースもあり得ます。

対象機器・サービス一覧(追加日順)

Covered Equipment or Services* 対象機器・サービス カバーリスト追加日
Telecommunications equipment produced by Huawei Technologies Company, including telecommunications or video surveillance services provided by such entity or using such equipment. Huawei Technologies製の電気通信機器(同社が提供する、または当該機器を使用する電気通信・ビデオ監視サービスを含む) 2021年3月12日
Telecommunications equipment produced by ZTE Corporation, including telecommunications or video surveillance services provided by such entity or using such equipment. ZTE Corporation製の電気通信機器(同社が提供する、または当該機器を使用する電気通信・ビデオ監視サービスを含む) 2021年3月12日
Video surveillance and telecommunications equipment produced by Hytera Communications Corporation, to the extent it is used for the purpose of public safety, security of government facilities, physical security surveillance of critical infrastructure, and other national security purposes, including telecommunications or video surveillance services provided by such entity or using such equipment. Hytera Communications Corporation製のビデオ監視・電気通信機器(公共の安全、政府施設の警備、重要インフラの物理的監視、その他国家安全保障目的で使用される場合に限る。同社が提供する、または当該機器を使用する電気通信・ビデオ監視サービスを含む) 2021年3月12日
Video surveillance and telecommunications equipment produced by Hangzhou Hikvision Digital Technology Company, to the extent it is used for the purpose of public safety, security of government facilities, physical security surveillance of critical infrastructure, and other national security purposes, including telecommunications or video surveillance services provided by such entity or using such equipment. Hangzhou Hikvision Digital Technology Company製のビデオ監視・電気通信機器(公共の安全、政府施設の警備、重要インフラの物理的監視、その他国家安全保障目的で使用される場合に限る。同社が提供する、または当該機器を使用する電気通信・ビデオ監視サービスを含む) 2021年3月12日
Video surveillance and telecommunications equipment produced by Dahua Technology Company, to the extent it is used for the purpose of public safety, security of government facilities, physical security surveillance of critical infrastructure, and other national security purposes, including telecommunications or video surveillance services provided by such entity or using such equipment. Dahua Technology Company製のビデオ監視・電気通信機器(公共の安全、政府施設の警備、重要インフラの物理的監視、その他国家安全保障目的で使用される場合に限る。同社が提供する、または当該機器を使用する電気通信・ビデオ監視サービスを含む) 2021年3月12日
Information security products, solutions, and services supplied, directly or indirectly, by AO Kaspersky Lab or any of its predecessors, successors, parents, subsidiaries, or affiliates. AO Kaspersky Lab(前身・後継組織・親会社・子会社・関連会社を含む)が直接または間接的に供給する情報セキュリティ製品・ソリューション・サービス 2022年3月25日
International telecommunications services provided by China Mobile International USA Inc. subject to section 214 of the Communications Act of 1934. China Mobile International USA Inc.が提供する国際電気通信サービス(1934年通信法第214条の対象) 2022年3月25日
Telecommunications services provided by China Telecom (Americas) Corp. subject to section 214 of the Communications Act of 1934. China Telecom (Americas) Corp.が提供する電気通信サービス(1934年通信法第214条の対象) 2022年3月25日
International telecommunications services provided by Pacific Networks Corp. and its wholly-owned subsidiary ComNet (USA) LLC subject to section 214 of the Communications Act of 1934. Pacific Networks Corp.および完全子会社ComNet (USA) LLCが提供する国際電気通信サービス(1934年通信法第214条の対象) 2022年9月20日
International telecommunications services provided by China Unicom (Americas) Operations Limited subject to section 214 of the Communications Act of 1934. China Unicom (Americas) Operations Limitedが提供する国際電気通信サービス(1934年通信法第214条の対象) 2022年9月20日
Cybersecurity and anti-virus software produced or provided by Kaspersky Lab, Inc. or any of its successors and assignees. Kaspersky Lab, Inc.(後継組織・譲受人を含む)が製造または提供するサイバーセキュリティ・アンチウイルスソフトウェア 2024年7月23日
Uncrewed aircraft systems (UAS) and UAS critical components produced in a foreign country, except: (a) Blue UAS Cleared List (until Jan. 1, 2027); (b) domestic end products under 48 CFR 25.101(a) (until Jan. 1, 2027); (c) devices granted Conditional Approval by DoW or DHS; (d) foreign-produced Toy Drones as defined in the National Security Determination. Also includes all communications and video surveillance equipment and services listed in Section 1709(a)(1) of the FY25 NDAA (Pub. L. 118-159). 外国で製造された無人航空機システム(UAS)およびUASの重要構成部品 ただし、次のものを除く。(a) 国防契約管理庁(DCMA)の Blue UAS Cleared List に掲載されているUASおよびUASの重要構成部品(2027年1月1日まで)(b) Buy American Standard(48 CFR 25.101(a))に基づく「内国最終製品(domestic end products)」に該当するUASおよびUASの重要構成部品(2027年1月1日まで)(c) 米国防総省(Department of War〔Department of Defense の副称〕) または国土安全保障省(DHS)から条件付き承認(Conditional Approval)を受けた機器(d) 国家安全保障決定(National Security Determination)で定義される外国製「トイドローン」、および外国製部品を含む「トイドローン」また、2025会計年度国防権限法(FY25 NDAA、公法118-159)第1709条(a)(1)に掲げられたすべての通信機器・ビデオ監視機器およびそれらに関連するサービス。 2025年12月22日(2026年1月7日、3月18日、6月15日に更新)
All communications and video surveillance equipment and services listed in Section 1709(a)(1) of the FY25 National Defense Authorization Act (Pub. L. 118-159). FY25 NDAA(Pub. L. 118-159)第1709条(a)(1)に列挙された通信機器・ビデオ監視機器および関連サービス 2025年12月22日
Foreign-produced routers (except those granted Conditional Approval by DoW or DHS). 外国製ルーター(米国防総省〔Department of War:Department of Defenseの副称〕または国土安全保障省(DHS)の条件付き承認を受けたものを除く) 2026年3月23日
International telecommunications services provided by Digitalsystem Technology Inc. subject to section 214 of the Communications Act of 1934. Digitalsystem Technology Inc.が提供する国際電気通信サービス(1934年通信法第214条の対象) 2026年7月7日