アプリ起動時に指定ページを開く、他Distinct関数は委任対象外なので気を付けよう。ClearDataおまけおわりにはじめに先日作成したパチスロアプリで使用しているSaveData、LoadDataを使ったデータの一時保存について、業務アプリでも活用できると思いますので、記事にいたしました。簡単に説明すると、ブラウザやアプリのローカルキャッシュにデータを保持しそれを使用できる機能です。通常であればSPOやDataVerseなどのデータソースを使用しますが、それ以外にユーザー単位の一時データを保持、使用するケースで利用します。関数は、後で名前から使用できるようにコレクションを格納します。保存されている名前を使用してコレクションを再読み込みします。別のソースからコレクションを読み込む場合、この関数は使用できません。関数は、名前が指定されていない場合、特定の名前でストレージをクリアするか、またはアプリに関連付けられているすべてのストレージをクリアするかです。パワスロシリーズの記事はこちらから利用用途・注意点についてこの機能は検索すると、オフライン機能としての利用(おもにモバイル)の例が多く載っています。以前はモバイルアプリのみの対応でしたが、1,2年くらい前からWebブラウザでも使用できるようになっています。(プレビュー機能)個人的にはモバイルアプリのオフライン機能用以外にも、ユーザーごとの一時的なデータ保持が出来るので活用の幅はもっと広いと思います。ギャラリーの検索キーワードやプルダウンの選択値を記憶しておくなど最後に表示していた画面をアプリ起動時に再度開くデータソースがないアプリでのデータ保存機能としてローカルキャッシュのため、ユーザーが同じでもブラウザやモバイルアプリが異なる場合は別ものとみなされます。キャッシュがクリアされるとデータは消えてしまいます。そのため、あくまで消えてしまっても問題がないレベルの個人単位のデータを保持する目的での使用となります。※保持が必要な場合はこの方法ではなく、ユーザー単位のデータを保持するデータソースを作成して使用しましょう。今回ゲームアプリ作成では一般公開して使えるようにするため、データソース(SPOリストなど)は使用しない実装としていました。それだとゲーム結果などが保存できませんのでまた1から始めることになります。そこでSaveData、LoadData機能を使って、アプリのキャッシュに保存して起動時に読み込むことで一時保存機能(セーブ機能)を実装しました。この方法であればデータソースなしでデータの保存、再開が可能となります。業務アプリの場合であれば、上記に挙げたようなユーザーがいつも使う検索キーワードを指定した状態でアプリを開いたり、前回指定した承認者をプルダウンに初期値で指定しておく、などのユーザービリティを考慮した実装で応用が出来ます。このレベルであれば消えても問題ないですし、ユーザーの使い勝手がよくなります。次からは、作成したスロットアプリをベースに実装を解説していきます。NOTE以下公式にある通り、いくつかの注意点があります。詳細は公式リファレンスにてご確認ください。・機密データは暗号化されないため使用しないようにする。・スマホではある程度のデータを対応できるが、ブラウザ版では1MBまで。いずれにしろデータ量は軽くなるよう考慮する実装サンプルスロットアプリに実装した一時保存機能の例です。・最後に開いていた画面(PCまたはモバイル)を再起動時に開く実装この実装ではデータソースは使用していません。ゲームのデータと最後に開いていた画面を記憶して、再度起動した場合にそこから再開できるようになっています。簡単には以下で実装しています。前回の画面を判定してNavigate以下順に解説していきます。WebブラウザでSaveDataを有効にする最初に設定から以下の機能を有効にする必要があります。SaveData、LoadData、ClearDataを有効にします。」LoadDataのエラーについて上記で機能は有効になっているのですが、現状の制限でアプリ編集画面では使用できません。動作した際にエラーが表示されます。公開して再生すると想定通り動作してくれるので、編集中はエラーを無視して問題ありません。動作確認はプレビューではなく公開して再生して確認します。SaveDataまず、メニュー画面の処理では一時保存と保存して終了の際にSelect(FunkSave)でFunkSaveボタンの処理を実行しています。※共通的な実装のため別ボタンに処理を書いてます。→ローカルキャッシュに入れる用のコレクションを作成します。→上記コレクションを指定した名前のローカルキャッシュに保存します。※最後の部分は一時保存か保存して終了するかの違いです。TIPSSaveDataはコレクションしか入りませんので事前にコレクションを作っています。今回は複数の項目をひとつに含めたかったのでオブジェクト形式にしたコレクションを作っています。詳細は以下公式の構文を参照ください。LoadData次にLoadDataで読み込む部分です。AppのOnStartに記載してもいいのですが、画面Navigateの実装などもあるため、今回は起動時用の専用画面を用意して、そのOnVisibleに処理を実装しています。→SaveDataで指定したローカルキャッシュから値を取得してコレクション(受け取り用に生成)へ格納します。この際に、第3引数のtrueは値がない場合にエラーにしない設定です。falseにすると値なしの場合にエラーが発生します。コレクション(UserData)が空でない場合は最初の1件を取得してUserDataと名付けてます。※今回は1レコード分のデータを格納しているため。※ローカルキャッシュデータがない場合は何もせず通常の起動となるそしてそれぞれアプリで使用しているコレクションや変数にデータを格納します。(PC画面かモバイル画面:TRUE/FALSE)ゲームデータ、コインについては上記でデータが復元されるので完了です。次に画面遷移の部分を解説します。画面の遷移NOTEOnVisible内ではNavigate関数が使えません。使おうとすると以下のようにアラートが表示されます。TIPSその回避方法として、非表示のボタンを作成(FunkNaviボタン)、そのボタンをSelectすることで処理を実行しています。することでOnVisibleでの画面遷移が可能となります。If(MobileMode,Navigate(ScreenMobile,ScreenTransition.Fade),Navigate(ScreenPC,ScreenTransition.Fade))シンプルにローカルキャッシュから取得したPCモバイルのTrueFalseでそれぞれの画面へ遷移しています。編集画面上でもこの画面が触れなくなってしまうというデメリットがあります。“などに一時的に置換して実行させないようにすれば開けるようになります。編集後に元に戻します。ClearData最後にClearDataは指定したローカルキャッシュをクリアする関数です。/>名前を指定せず空で実施した場合は、アプリで使っている全ローカルキャッシュがクリアされます。スロットアプリではゲームデータクリアボタンで表示する確認ダイアログに実装しています。ゲームデータ初期化と合わせてローカルキャッシュをクリアおまけSaveDataで使うデータ量を減らすためにゲームデータ(HitGal)の中身は画像を含めないようにしてます。・Image1~3は画像を直接指定せず、画像を定義した別のコレクションから画像IDでLookupして表示する。→SaveDataで使うローカルキャッシュでは画像を含めず、数値にしているのでデータ量が抑えられる。コレクションに画像データを保持おわりに今回はスロットアプリで使用しているSaveData、LoadDataについて解説いたしました。本格的にデータを保持する場合はデータソースを使用しますが、今回は配布用ゲームでしたので、ローカルキャッシュを利用することでセーブ機能が実装できました。業務アプリの場合でも、毎回最初の画面から操作するのではなく、検索キーワードを残しておいてすぐに結果を表示したい。前回選択した承認者を記憶しておいてDefaultで指定したい。要件に応用できると思います。ユーザーごとの情報リストを用意して都度保持しておけば可能ですが、そこまでせずとも一時データとして保持できるので有用かと思います。ゲーム作成では業務アプリでも応用できる実装が学べたりしますので、ご興味あればぜひゲーム作成にもチャレンジください。itこの記事は役に立ちましたか?もし参考になりましたら、下記のボタンで教えてください。-ヨウセイVer–略してパワスロ!を作りました。Automate技術者へと転身。qiitaや自社HPでも技術ブログを書いていました。ソート(並び順)タブリストで対象列切替えその6ではよく実装するソート(昇順・降順)の切り替えをタブリストを使って2つの要素で変更する実装サンプルをご紹介します。プルダウン表示について(コンボボックス)今回は他のマスタテーブルのデータをプルダウン系で表示する際のTipsです。少量マスタの場合は対して気にせずよいですが、大量データのマスタを参照する際は制限が出てくるのでそのあたりの実装のサンプルをご紹介します。テナントによりUPNとEmailは異なる場合があります。12月10日担当分の記事です。この後の記事も楽しみですねー。トラックバックこの記事へのコメントはありません。トラックバックURLこの記事へのトラックバックはありません。返信をキャンセルする。