---
title: "【キャンバスアプリの小技】バージョンアップしたときにユーザーに強制的に最新版を利用してもらうように促す方法"
url: "https://www.geekfujiwara.com/tech/powerplatform/8268/"
author: ギークフジワラ
published: "2026-04-16T06:43:54+00:00"
updated: "2026-04-16T06:44:35+00:00"
categories: [Power Platform]
description: "アプリの最新バージョンを使ってもらいたい・・・でもキャンバスアプリにはそのような強制リロードやバージョンチェック機能が標準でありません。 今回はそういったことを実現する小技を紹介します。 アプリは前回実行したときのキャッシュを先に読み込み、…"
---

# 【キャンバスアプリの小技】バージョンアップしたときにユーザーに強制的に最新版を利用してもらうように促す方法

アプリの最新バージョンを使ってもらいたい・・・でもキャンバスアプリにはそのような強制リロードやバージョンチェック機能が標準でありません。

今回はそういったことを実現する小技を紹介します。

## 概要

アプリは前回実行したときのキャッシュを先に読み込み、起動速度を上げるように設計されています。

このため、アプリが古いバージョンで実行されてしまうことがあります。

> [!NOTE]
> ただし、 Power Apps が最新バージョンを検出した場合は「最新情報に更新してください」という警告は表示されます。

一方で、データソースはアプリ起動時に最新の情報が読み込まれます。

この==データソースは最新情報を取得していること==を利用して、アプリとデータソースの値のチェックを行いこの課題を克服します。

## 手順

### データソースの作成

最新のバージョンを定義するデータソースを作成します。今回は SharePoint リスト上に作成します。

`AppVersion` という SharePoint リストを作成しました。これから作成するアプリの読込時のバージョンと、この値を一致させることで最新バージョンのアプリが読まれているかどうかを判断します。

![](https://www.geekfujiwara.com/wp-content/uploads/2026/04/image-109-edited-1.png)

### アプリ起動時にバージョンを読み込む

アプリでは、`App` &gt; `OnStart` プロパティを選択します。

![](https://www.geekfujiwara.com/wp-content/uploads/2026/04/image-110.png)

バージョンチェック用の Power Fx 式をここに定義します。

:::raw
<!-- wp:kevinbatdorf/code-block-pro {"code":"Set(IsVersionCheckPass, Not(First({データソース名}).Title = \u0022v1.5.0.0\u0022));","codeHTML":"\u003cpre class=\u0022shiki nord\u0022 style=\u0022background-color: #2e3440ff\u0022 tabindex=\u00220\u0022\u003e\u003ccode\u003e\u003cspan class=\u0022line\u0022\u003e\u003cspan style=\u0022color: #D8DEE9FF\u0022\u003eSet(IsVersionCheckPass, Not(First({データソース名}).Title = \u0026quot;v1.5.0.0\u0026quot;));\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e","language":"markdown","theme":"nord","bgColor":"#2e3440ff","textColor":"#d8dee9ff","fontSize":".875rem","fontFamily":"Code-Pro-JetBrains-Mono","lineHeight":"1.25rem","clampFonts":false,"lineNumbers":true,"headerType":"headlightsMutedAlt","disablePadding":false,"footerType":"none","enableMaxHeight":false,"seeMoreType":"roundCenter","seeMoreString":"","seeMoreAfterLine":"","seeMoreTransition":true,"seeMoreCollapse":true,"seeMoreCollapseString":"","highestLineNumber":1,"highlightingHover":false,"lineHighlightColor":"rgba(201, 218, 248, 0.2)","copyButton":true,"copyButtonType":"heroicons","copyButtonUseTextarea":true,"useTabs":false} -->
<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:10px 0px 10px 16px;margin-bottom:-2px;width:100%;text-align:left;background-color:#39404f"><svg xmlns="http://www.w3.org/2000/svg" width="62" height="20" viewBox="0 0 62 20"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="8" cy="8" r="8" fill="#2e3440ff" stroke="#2e3440ff" stroke-width=".5"></circle><circle cx="30" cy="8" r="8" fill="#2e3440ff" stroke="#2e3440ff" stroke-width=".5"></circle><circle cx="52" cy="8" r="8" fill="#2e3440ff" stroke="#2e3440ff" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Set(IsVersionCheckPass, Not(First({データソース名}).Title = "v1.5.0.0"));</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">Set(IsVersionCheckPass, Not(First({データソース名}).Title = &quot;v1.5.0.0&quot;));</span></span></code></pre></div>
<!-- /wp:kevinbatdorf/code-block-pro -->
:::

### バージョン違い時に表示されるコンテナー

もし true と判断されたら冒頭のポップアップの表示の `Visible` プロパティが `true` となり更新するように促すポップアップ (ここではコンテナー) が表示されます。

![](https://www.geekfujiwara.com/wp-content/uploads/2026/04/image-113.png)

バージョン違いの場合はこちらのコンテナーが表示されます。

> [!TIP]
> 以下は画像も入れてこだわったデザインにしていますが、アプリの利用を止めるためだけであれば全画面に表示する、かつ、最上位レイヤーという条件が達成できていれば他のコントロールでもよいでしょう。

![](https://www.geekfujiwara.com/wp-content/uploads/2026/04/image-108-1024x490.png)

以上、ご参考になれば幸いです。
