Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
VB開発者のためのWindowsストアアプリをリリースするための13の極意

VB開発者のためのWindowsストアアプリをリリースするための13の極意

極意4:プライバシー・ポリシーの必要性

2013年8月9日

「プライバシー・ポリシー・ページはどんなときに必要なのか?」「Windowsストア・アプリからどのような手段で表示すればよいのか?」について解説する。

薬師寺 国安
  • このエントリーをはてなブックマークに追加

前書き ―― 今回の極意について

 Windowsストア・アプリをWindowsストアに申請する際、そのアプリがインターネットに接続する場合は、必ず、プライバシー・ポリシーのページを用意してユーザーに開示しなければならない。しかし、アプリがインターネットに接続していない場合は、プライバシー・ポリシー・ページへのリンクは不要だ。

 今回はプライバシー・ポリシー・ページの準備から、Windowsストア・アプリからどのような手段で表示させるのか、その方法をメインに解説する。

プライバシー・ポリシーに関する認定の要件

 「Windows 8 ストア 認定の要件」では、プライバシー・ポリシーに関して以下の記述がある。

4.1 プライバシーに関する次の要件に準拠しなければならない
 ・4.1.1 アプリがネットワークに対応している場合はプライバシーに関する声明を用意しなければならない

 アプリにデータを送信する機能がある場合、プライバシー・ポリシーを維持する必要があります。お客様は、Windows設定チャームで表示されるように、アプリの[説明]ページやアプリの設定でお客様のプライバシー・ポリシーにアクセスできるようにする必要があります。

プライバシー・ポリシーとは

 Windowsストアに初めてアプリを申請するときは、このプライバシー・ポリシー・ページへのリンクの必要性を知らずに申請して、リジェクトされるケースが多い。「Windows ストア 8認定の要件」には、前述のように明確に書いてはあるのだが、一読しただけでは意味も分からないし、どうしたらいいのかさえも分からないのが、初心者がぶつかる壁だ。

 では、実際にどのような文章でプライバシー・ポリシー・ページを作り、どのような方法で表示させればよいのか、その方法を解説していこう。一度、分かってしまえば、あとは同じことの繰り返しだけだから、何の問題もないのだが、最初の取っ掛かりが分かりにくいと思うので、この記事を参考に理解していただければいいだろう。

 まず、プライバシー・ポリシー*1とは何かについては、以下を参考にしてほしい。

  • *1 「プライバシー・ポリシー(privacy policy)は、インターネットのWebサイトにおいて、収集した個人情報をどう扱うのか(保護するのか、それとも一定条件の下に利用するのか)などを、サイトの管理者が定めた規範のこと。個人情報保護方針などともいう。」(ウィキペディアより抜粋

プライバシー・ポリシーのページを準備する

 Windowsストア・アプリを作成して申請する場合、インターネットに接続するアプリは一切作らないという方は別として、それ以外の方は、必ず、プライバシー・ポリシーのページを用意しておかなければならない。

 プライバシー・ポリシーのページを新たに作成して、サーバーにアップロードし、そこのURLにリンクを張るか、または既にブログなどを持たれている方は、そのブログ内にプライバシー・ポリシーのページを作って、そこにリンクを張るのもいいだろう。

プライバシー・ポリシーの書き方

 では、プライバシー・ポリシーはどのように書けばいいのか、初めての方は戸惑われると思う。しかし、Webで「プライバシー・ポリシーの書き方」と検索すると、いくらでも情報は見つかるので、それを参考にして作成するといい。筆者の用意している「プライバシー・ポリシーのページ」を紹介しておこう(次の画像を参照)。これに手を加えて自分なりのプライバシー・ポリシー・ページを作っても何ら問題はない。

プライバシー・ポリシー・ページの表示方法

 プライバシー・ポリシーのページへのリンクは、[設定]チャームの中からリンクする必要がある。先にも書いたが、「認定の要件」には注釈*2のように記載されている。

 文章中に「Windows設定チャーム」という文字が見て取れる。簡単に言えば、インターネットに接続するアプリの場合は、[設定]チャームからリンクをたどって、プライバシー・ポリシー・ページを表示させろ、ということだ。

プライバシー・ポリシー・ページを[設定]チャームからリンクするVBコード

 Visual Studio 2012を起動し、作成したプロジェクト・ファイルの、ソリューション・エクスプローラー内にあるApp.xaml.vb内に、次のリストのコードを記述する。

Visual Basic
Imports Windows.UI.ApplicationSettings
Imports Windows.UI.Popups
Imports Windows.System

NotInheritable Class App
  Inherits Application

  Protected Overrides Sub OnLaunched(args As Windows.ApplicationModel.Activation.LaunchActivatedEventArgs)
    Dim rootFrame As Frame = Window.Current.Content

    ' プライバシー・ポリシー・ページへのリンクを、[設定]チャームに表示するメソッドを呼び出す
    SettinsgLoad()

    If rootFrame Is Nothing Then
      rootFrame = New Frame()

      If args.PreviousExecutionState = ApplicationExecutionState.Terminated Then
        'TODO: 以前中断したアプリから状態を読み込む
      End If

      Window.Current.Content = rootFrame
    End If

    If rootFrame.Content Is Nothing Then
      If Not rootFrame.Navigate(GetType(MainPage), args.Arguments) Then
        Throw New Exception("Failed to create initial page")
      End If
    End If

    Window.Current.Activate()
  End Sub

  Private Sub OnSuspending(sender As Object, e As SuspendingEventArgs) Handles Me.Suspending
    Dim deferral As SuspendingDeferral = e.SuspendingOperation.GetDeferral()
    deferral.Complete()
  End Sub

  ' 以下、プライバシー・ポリシー・ページへのリンクを[設定]チャームに表示するコード
  Const PRIVACY_ABOUT As String = "プライバシー・ポリシー"

  Public Sub SettinsgLoad()
    AddHandler SettingsPane.GetForCurrentView().CommandsRequested, AddressOf onCommandsRequested
  End Sub

  Private Sub onCommandsRequested(mySettingsPane As SettingsPane, args As SettingsPaneCommandsRequestedEventArgs)
    If args.Request.ApplicationCommands.Count = 0 Then
      Dim handler As UICommandInvokedHandler = New UICommandInvokedHandler(AddressOf onSettingsCommand)
      Dim PrivacyCommand As New SettingsCommand(PRIVACY_ABOUT, PRIVACY_ABOUT, handler)
      args.Request.ApplicationCommands.Add(PrivacyCommand)
    End If
  End Sub

  Private Sub onSettingsCommand(command As IUICommand)
    Dim mySettingsCommand As SettingsCommand = DirectCast(command, SettingsCommand)
    Select Case mySettingsCommand.Id.ToString
      Case PRIVACY_ABOUT
        PrivacyPolicyShow()
        Exit Select
    End Select
  End Sub

  ' 筆者のプライバシー・ポリシーをアップしているサーバーのURLにリンクしている
  ' このURLを各自のURLに変更するといい
  Private Async Sub PrivacyPolicyShow()
    Dim myResult = Await Launcher.LaunchUriAsync(New Uri("http://2008r2.projectkyss.net/kuniyasu/privacypolicy.htm"))
  End Sub
End Class
App.xaml.vbファイル内に記述した、[設定]チャームからプライバシー・ポリシー・ページにリンクするコード

 このApp.xaml.vbファイルを利用したアプリを作成して実行し、Windows 8の[設定]チャームを表示させると、次の画面のように表示される。

Windows 8の[設定]チャーム内にプライバシー・ポリシーへのリンクが表示されている
Windows 8の[設定]チャーム内にプライバシー・ポリシーへのリンクが表示されている

Package.appxmanifestファイルのチェック

 第1回目の極意と重複するが、再度説明しておく。作成したアプリがインターネットに接続していない以上は、プライバシー・ポリシーのページにリンクを張る必要はない。自分のアプリはインターネットに接続していないから、プライバシー・ポリシーのページへのリンクは不要と考えて、安易に申請してしまうとリジェクトされる。なぜなら、Package.appxmanifestファイル(を開くと表示されるデザイナー画面)の[機能]タブ内の[機能]欄の中では、デフォルトで[インターネット (クライアント)]チェックボックスにチェックが入っているからだ。このチェックを外し忘れて、プライバシー・ポリシーへのリンクを張らずに申請すると、リジェクトされるので注意が必要だ(次の画像を参照)。

プライバシー・ポリシー・ページへのリンクを張らない場合は、[インターネット (クライアント)]のチェックを忘れずに外す
プライバシー・ポリシー・ページへのリンクを張らない場合は、[インターネット (クライアント)]のチェックを忘れずに外す

 筆者は、よくこのチェックを外し忘れる。そこで現在、採っている方法は、インターネットに接続していようがいまいが、全てのアプリに、[設定]チャームからプライバシー・ポリシー・ページへのリンクを張る、という方法だ。先のリストをApp.xaml.vbファイルにコピペしさえすればいいのだから、簡単だ。チェックを外すか、全てのアプリのApp.xaml.vbファイルに前述のコードをコピペするか、の二択となる。

 初期の頃(約1年前)には、サーバーにプライバシー・ポリシー・ページをアップロードするのではなく、Visual Studio 2012のプロジェクトの中にプライバシー・ポリシー用のページを用意して、そこで表示させていたこともあった。それでも認定はされていた*3

  • *3 現在の筆者の場合、プライバシー・ポリシーのページは、サーバーにアップして[設定]チャームの中からリンクするようにしている。
     しかし、筆者は初期の頃、PrivacyPolicy.xmlファイルを作成して、プライバシー・ポリシーの内容をXMLファイル内に記述していた。そして、プロジェクト内に「PrivacyPolicy.xaml」というページを作成し、PrivacyPolicy.xamlファイル内にTextBlockコントロールを配置して、TextプロパティにXML要素の内容をバインドして表示していたことがある。[設定]チャームの中から、このPrivacyPolicy.xamlにNavigateさせていた。この方法でWindowsストアに申請したアプリが5個ほどあったが、当時は問題なく認定された。
     現在ではこの方法は採っていないため、現在の審査基準で、このやり方で認定されるかどうかは、分からない。しかし、以前はこの方法でも認定されということを記述しておく。
     ただし、この方法であっても、サーバーにプライバシー・ポリシー・ページを作っておくことは必要だ。なぜなら、次に解説するように、プライバシー・ポリシー・ページのURLを入力する必要があるからだ。
     ではなぜ、わざわざ、このような方法を採ったかというと、筆者はHTMLが苦手で、もちろんCSSも苦手というより嫌いであるため(-_-;)、プライバシー・ポリシー・ページをHTMLで作成するのが面倒だった(最終的には簡単なページは作ってしまったが)。XAMLコード内にTextBlockコントロールを配置して、TextプロパティにXML要素の内容を表示させるだけなら、XAMLのデザインをすれば、見栄えのいいページができる、と判断したにだけ過ぎないのだ(-_-;)。そして、サーバーにアップするプライバシー・ポリシー・ページは至極簡単なページで済ませておいた。

申請時におけるプライバシー・ポリシーURLの入力

 「プライバシー・ポリシーのページも用意でき、チャームの中から飛ばすこともできる。さて申請していこうか」となった場合、プライバシー・ポリシーに関して、もう1点気を付けておかねばならない点がある。それは申請する欄に、次の画像のように、プライバシー・ポリシーのURLを入力する欄があるので、ここへのURLの入力を忘れてはならないということだ。ここへの入力を忘れると、たとえ、[設定]チャームからプライバシー・ポリシー・ページへのリンクを張っていても、リジェクトされるので注意が必要だ。筆者は数回、ここにURLを入力し忘れてリジェクトされた苦い経験がある。

プライバシー・ポリシーの入力欄にURLを入力する

 必須項目にはなっていないが、インターネットに接続するアプリ、または、インターネットに接続はしていないが[インターネット (クライアント)]のチェックを外していない場合は、必ずこの欄にプライバシー・ポリシー・ページのURLを入力する必要がある。絶対に忘れないでほしい。一度リジェクトされると、再度申請し直してから、再審査になるので、時間の無駄になる。こういった簡単なミスでリジェクトされないよう、十分に注意していただきたい。

Windowsストアに公開されたプライバシー・ポリシーへのリンク

 ただしインターネットに接続するアプリではなく、Package.appxmanifestファイルの[インターネット (クライアント)]のチェックを外している場合は、URLを入力する必要はない。

 実際に申請したアプリが認定され、Windowsストアに公開されると、プライバシー・ポリシーへのリンクは、次の画像のように表示される。このリンクをタップすると、プライバシー・ポリシーのページが表示されるようになっている。

Windowsストアに公開された場合の、プライバシー・ポリシー・ページへのリンク

 プライバシー・ポリシーのURLを入力していない場合は、このリンクは表示されない。ただし、インターネットに接続していないWindowsストア・アプリである場合だ。

プライバシー・ポリシーの入力が不適切でリジェクトされた「認定レポート」

 プライバシー・ポリシーに関して入力し忘れや不適切な入力があった場合は、当然リジェクトとなり、ダッシュボードに不合格の「認定レポート」が表示される(次の画面を参照)。

「プライバシー・ポリシーに関する要件4.1を満たしていない」と記述されている。

お知らせ

Windows 8の[検索]チャームで「ストア」を指定し、検索欄に、「kuniyasu」または「YakushijiKuniyasu」または「eightman」と入力すると、筆者の公開しているアプリの一覧を見ることができる。

 今回はこれで終わりだ。プライバシー・ポリシーで読者が一番悩むのは、「内容をどのように記述すればいいか?」という点ではないかと思う。筆者のプライバシー・ポリシーのページは結構長めに書いているが、必ずしもこの程度の内容を書かねばならないということはない。例えば、以下のような簡単な内容でも問題はない。

  「個人情報について、このソフトウェアは、いかなる個人情報も取得いたしません。」

 こういった内容だけのプライバシー・ポリシーも見受けられる。そして、ちゃんと認定されているのだから、内容についてあまり神経質になる必要はないだろう。基本部分だけ押さえて数行で済ませてもOKだと思われる。一番簡単なのは、今回紹介した筆者のページを、自分なりにアレンジして、自分のプライバシー・ポリシー・ページとしてアップすることだ。筆者としては、何ら問題はないので、大いに利用していただいてもいい。実は、筆者のプライバシー・ポリシーのページも、ある方の了解を得て、そのページを参考にさせていただいたものなのだ。

 次に頭を悩ますのは、[設定]チャームからいかにしてプライバシー・ポリシー・ページへリンクを張るのか、という点だろうと思う。この点に関しては、この極意で紹介したコードをそのままApp.xaml.vbファイルの中にコピペするだけで、[設定]チャーム内にプライバシー・ポリシーへのリンクが表示される。ただし、コード内で筆者のプライバシー・ポリシーへのURLを記述している個所には、各自のURLを入力する必要がある。

 では、また次の記事でお会いしよう。

※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

VB開発者のためのWindowsストアアプリをリリースするための13の極意
1. 極意1: ここがポイント、Windowsストアアプリ認定の要件

「Windowsストア向けのアプリ申請で、いかにしたら認定されるか」についてのノウハウを紹介する連載がスタート。今回は認定要件のドキュメントから注目ポイントを取り上げる。

VB開発者のためのWindowsストアアプリをリリースするための13の極意
2. 極意2: タイトルの必要性、Splash Screen/画面の配色、etc.

Windowsストア・アプリの認定要件ではないが、Windowsストア・アプリの基本的な作法となっているUI/UX関連の注意点と、その実装方法を紹介する。

VB開発者のためのWindowsストアアプリをリリースするための13の極意
3. 極意3: アプリの独特かつ独創的な価値または実用性について

Windowsストアアプリを申請して、認定されたアプリとリジェクトされたアプリの違いを紹介する。

VB開発者のためのWindowsストアアプリをリリースするための13の極意
4. 【現在、表示中】≫ 極意4:プライバシー・ポリシーの必要性

「プライバシー・ポリシー・ページはどんなときに必要なのか?」「Windowsストア・アプリからどのような手段で表示すればよいのか?」について解説する。

VB開発者のためのWindowsストアアプリをリリースするための13の極意
5. 極意5: カテゴリとサブカテゴリの選び方

「カテゴリやサブカテゴリだから適当でいいや!」と高をくくっていると痛い目に遭う。実際の経験を基に、カテゴリとサブカテゴリの選択指針をまとめる。

サイトからのお知らせ

Twitterでつぶやこう!