17
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

HoloLensで始めるUWP - HoloLens上でファイルI/O可能な範囲

UWPでのファイルI/O

UWPアプリケーション自体かなりセキュリティを意識した機構を持っていてローカルのストレージへのアクセスがかなり制限されています。
また、HoloLens自体はベースはWindows 10ではありますが、通常のPCと比べてもデバイスとして制約や制限が入っています。
HoloLens上でUWPアプリからファイルを出力するとどのあたりまで可能なのか調べる機会があったので結果を整理してみました。

開発環境

  • Windows 10 Pro
  • Unity 5.5.0f3

参考になる資料

MSDNにはUWPでファイルI/Oを扱うための資料が以下の場所に公開されています。

HoloLens上でも基本このルールに従っていると思われるのでまずは使えそうな場所すべてにファイルのI/Oを実施しその結果とパスを整理しました。

確認結果

HoloLens上でファイルの読書きをした結果とその際アクセスしたパスの情報は以下の通りです。

No. カテゴリ 説明 実パス R/W
1 streamingAssetsPath(Unity) UnityのAsset内で作成したstreamingAssetフォルダ C:\Program Files\WindowsApps\[パッケージ名]VS.[構成名]_[アーキテクチャ].[ユーザ名]\Data\StreamingAssets\ R
2 persistentDataPath(Unity) アプリケーション内で利用するファイルの格納するフォルダ。 C:/Users/[ユーザ名]/AppData/Local/Packages/[パッケージファミリ名]/LocalState R/W
3 temporaryCachePath(Unity) アプリケーションで一時的に使用するファイルを格納するフォルダ。 C:/Users/[ユーザ名]/AppData/Local/Packages/[パッケージファミリ名]/TempState R/W
4 DocumentsLibrary サインインしたユーザのドキュメントフォルダ。このフォルダはファイルの読込みのみ対応。 D:\[ユーザ名]\Documents R
5 PicturesLibrary サインインしたユーザのピクチャフォルダ。書込む際は「Package.appxmanifest」にて「ピクチャライブラリ」をチェック D:\[ユーザ名]\Pictures R/W
6 MusicLibrary サインインしたユーザの音楽フォルダ。未設定では読込のみ。書込む際は「Package.appxmanifest」にて「音楽ライブラリ」をチェック D:\[ユーザ名]\Music R/W
7 VideosLibrary サインインしたユーザのビデオフォルダ。未設定では読込のみ。書込む際は「Package.appxmanifest」にて「ビデオライブラリ」をチェック D:\[ユーザ名]\Videos R/W
8 LocalCacheFolder アプリケーションで利用できるローカル一時キャッシュフォルダ。アプリケーションがアイドル状態になった場合には破棄される領域(と言われているが実際はどうでもない) C:\Users\[ユーザ名]\AppData\Local\Packages\[パッケージファミリ名]\LocalCache R/W
9 RoamingFolder ローミングフォルダ C:\Users\[ユーザ名]\AppData\Local\Packages\[パッケージファミリ名]\RoamingState R/W
10 TemporaryFolder アプリケーションで一時的に使用するファイルを格納するフォルダ。 C:\Users\[ユーザ名]\AppData\Local\Packages\[パッケージファミリ名]\TempState R/W
11 LocalFolder アプリケーション内で利用するファイルの格納するフォルダ。 C:\Users\[ユーザ名]\AppData\Local\Packages\[パッケージファミリ名]\LocalState R/W

[ユーザ名]:サインインユーザ
[パッケージ名]:「Package.appxmanifest」を開き「パッケージ化」タブ内の「パッケージ名」値
[構成名]:ビルド時の構成(Debug/Release/Master)
[アーキテクチャ]:x86/ARM/x64 ※HoloLensなのでx86
[パッケージファミリ名]:「Package.appxmanifest」を開き「パッケージ化」タブ内の「パッケージファミリ名」値

基本的な考え方

基本的にはUnityで提供されているパス系の情報だけで十分対応できると思います。「音楽ライブラリ」等OSの特定のフォルダへのアクセスについてもUWPで提供されている方法を使うと便利ですが、同じパスを指定できればUnityのみで処理はできます。

Roming Folderについて

このフォルダは少し特殊なフォルダになります。UWPアプリケーションはWindows 10が稼働するデバイスであれば、基本的には動作します。この際にアプリケーションの設定(背景色や保存途中の情報)をデバイス間で同期し共有するためのフォルダになります。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
17
Help us understand the problem. What are the problem?