みかづきの色々

デバイス(スマホからキャンプ用品まで)とかプログラミングとか中心のいろいろ試験的なブログ。

BlueStacksその後

しばらくBlueStacksを使ってみていたので、その報告。
なお、以下に注意

  • BETAでなく安定版です。(BLueStacks 3。2018/2/上旬現在)

以下、試したアプリ別に状況を。

OVERDRIVE / キラ☆キラ

PCノベルゲーの移植。有償。

一見、問題なくプレイできるが……BlueStacksを一度終了させたらセーブファイルが持ち越されていなかった
たぶんだけど、ソフト起動ごとに隔離環境を作っている→ローカル保存ファイルが持ち越されないんだと思う。
この問題は他のソフトでも発生した。

Amazon Prime Video

ちゃんとPrime情報も扱われているっぽい。ローカル保存もできているかな。

dアニメストア

ダメ。起動するしアカウント認証情報も通るが、DRMが通らないようだ。
(つまりローカル保存もストリーム配信も見られない)

後日訂正: 一度dアニメストアを終了させると、ちゃんと認証通った。今は問題なし。

QuickCrawler

一見、問題なくプレイできるが……BlueStacksを一度終了させたら再びゼロからのスタート

考察

データが反映されてないってことは、保存ができてないものがあるのだろう。
だがこれはBlueStacks側が悪いとは限らない。
ちょっと考察してみる。

Androidのローカルデータ保存には大きく分けて3つある。開発系に触るとすぐ出てくるけど、以下の通り。

ユーザーデータ領域

パソコンで言えば、各ユーザーフォルダの中にあるアプリケーションデータ領域。

プログラムインストール領域

プログラム本体がインストールされているところ。
Androidの場合、 /プログラム名 みたいなとこだったりするかな。

システム共通領域

/Downloads みたいに、そのスマホで共通のモノ入れ。

この三点のいずれかにデータは保管されている事になる。

推測になるが、古いノベルゲーの移植であるキラ☆キラはプログラムインストール領域にデータを保存するのではないだろうか?(要確認)
QuickCrawlerもそうだが、これらのゲームはAndroid専用ではない。それにデータ保存もあまりマルチユーザーなどを意識していないだろう。
一度でも汎用モノを作るとわかるが、いろんなターゲットむけに汎用として開発する場合、一番簡単なのが実行中のプログラム本体のあるフォルダにデータも保存する方法だからだ……ただし権限が許せばだけども

あと、おそらく技術的にいえば、BlueStacksはLXCのような仮想マシンの仕組みを利用していると思われる。
推測だが、初回起動時に時間がかかっているのはBlueStacks用のAndroidカーネルをロードしているためで、その上で各アプリケーションは小さなノードを生成し、その上で走らせているのではないか?これが最も安全でもあるし。

これはわかりやすく言うと「BlueStacksを起動すると、パソコン上に一台のスマホが作成される。しかしそのスマホはBlueStacks終了時に捨てられる」ってことになる。
一見無駄なようだけど、お行儀の悪いソフトや悪意のツールが中をグチャグチャにするのを避けられる。また、残すべきデータがあるなら、終了時にそこだけ保存すればいいわけだ。

だからおそらくだが。
BlueStacksはユーザーデータ領域以外にデータを書き込まれても、終了時にそれを破棄してしまうのだと思われる
データが保存されないアプリがあるのはそのせいだろう。