2012年4月28日土曜日

ヴィータのPlayStation Suiteアプリ終了のプログラム方法について

今回の記事は、PSVITA(プレイステーション ヴィータ)のPlayStation Suite(Pss)自作アプリにおいて、アプリを終了する方法について書かせて頂きたいと思います。

実は今日、ヴィータを旅行デビューさせまして、その事について記事を書かせて頂こうと思っていたのですが、その前に、その旅行先にPssStudioをインストールして持って行った「LOOX U/G90」で試行錯誤して勉強して分かった、今回の件について優先させて書かせて頂きたく、よろしくお願いいたします。


アプリの終了なんて、と思っていたら、これが手こずりました。
私が生まれて初めて作ったヴィータのアプリ「チェックデジット算出」。
チェックデジット算出についてはこちら
これには「終了ボタン」が付いているのですが、ここを押すとアプリが終了するわけですが、ヴィータのプログラミングの流儀を理解出来てないバカな私には思ったよりもかなり難しかった。

■実際のメインクラス(MainAppクラス)のロジック■
ヴィータのアプリは、まるで「生C言語で組んだ組み込み端末用のプログラム」みたいに、Main()の中でWhile()によるループによって止まらずに動いています。

WindowsのC#プログラミングの感覚で、「終了命令を一つ書いて一発で終わらせる」という流儀では無い、というわけなんですね・・・私の理解では、ですが。

そう、アプリの終了は、終了命令一発書くのではなくて、このループを抜けるロジックを自分で作ってあげるわけですね。

蛍光ペンでマーキングしてある部分が肝の部分です。

次に、メインから呼び出される、画面側のクラス、その終了ボタンを見てみます。

■画面の終了ボタンのロジック■

たとえば今回の私のやり方ですが、終了ボタンを押した時に、ここでメインのループを抜けるフラグを立てます。
このフラグを受け取ってメインループを抜けるロジックもペアで作って、終了処理を実現するという寸法なんです。

実際に「終了」するとどうなるかやってみますね。

ファイーン♪という、ヴィータアプリがライブエリアに帰還するファンファーレが鳴って、アプリが終了します。

これで正式な終了なのかどうか、正直分かりませんが、現時点では私がこれで良いのかなと思っている、というレベルで話を聞いて下さいね。
ライブエリアのゲートから、またPS Suite Devの中に入ると、ちゃんと自作アプリ一覧画面になってくれます。

じゃあ、終了ボタンの所に「Environment.Exit(0);」とか、終了命令を書いたらどーなるんだ?と思われるでしょう。これは自滅コースです。
やってみましょう。
そう、終わらない・・・んです。終了ボタンを押した状態でフリーズします。
フリーズなんてかわいいもんで、ヘタすると、PS Suite DEVでエラーが出る事もあってとにかく使えないです。
やっかいなのが、開発用のエミュレーターでは、ちゃんと画面が閉じるのでうまく行ったように見えるんですよねーこれが。実機だと、くどいですが自滅です。
フリーズした状態でも、ちゃんとライブエリアには帰還出来るんですが(たまたま帰還出来るだけで、それも出来なくなる可能性もあるかも)、ゲートから戻るとそこにはフリーズしたアプリが残っているだけなんです。

移動中に、LOOX U/G90の5.6インチ1280x800ドットという網膜級ディスプレイとにらめっこしてたら、めちゃめちゃ車酔いしてしまって、連れにあきれられてしまいました。
まだ分からない事だらけで申し訳ありません。
でも、コツコツと勉強して行きたいと思います。

(※ちなみにプログラムソースは、Dropboxに格納しておりますので、LOOX U/G90で作って、今回の記事を書かせて頂いておりますWindows8 Consumer previewマシンでさらに修正とか、マシンを色とりどり変える事が可能となっております)

貴重なお時間を割いて、私のヘロヘロな記事をいつも読んで下さる皆様方には深く感謝し続けております。