HTTPクライアントサービス, Observable, リアクティブプログラミング
また新しいプログラミング概念のお勉強です。
一言で言うとアプリとWeb上のデータのやり取りをする方法ですね。
ゲームブックの例で言えば、ネットのどこかにあるシナリオデータを取り込む技術です。
以下、Angularの公式記述の引用です。
HTTPによるバックエンドサービスとの通信
https://angular.jp/guide/http#http%E3%81%AB%E3%82%88%E3%82%8B%E3%83%90%E3%83%83%E3%82%AF%E3%82%A8%E3%83%B3%E3%83%89%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%A8%E3%81%AE%E9%80%9A%E4%BF%A1
---------------------引用
ほとんどのフロントエンドアプリケーションは、データをダウンロードやアップロードし、他のバックエンドサービスにアクセスするため、HTTPプロトコルによってサーバーと通信する必要があります。 Angularは、Angularアプリケーション向けのHTTPクライアントのAPIとして、@angular/common/http内にHttpClientサービスクラスを提供しています。
中略
前提条件
HttpClientModuleを使用する前に、次の基礎的な理解が必要です。
TypeScriptプログラミング
HTTPプロトコル
Angularの概念の紹介で説明されている、Angularアプリケーションのアーキテクチャ
Observable技術とオペレーターについて。Observablesガイドを参照。
---------------------引用終わり
前提条件の最後のObservable技術について全く知らないのでこれについて見ていきます。
以下、Angularの公式記述の引用です。
Observableを使用して値を渡す
https://angular.jp/guide/observables#observable%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E5%80%A4%E3%82%92%E6%B8%A1%E3%81%99-
---------------------引用
Observableは、アプリケーションの中でパブリッシャーとサブスクライバー間でメッセージを渡すためのサポートを提供します。 これらはAngularで頻繁に使用され、イベント処理、非同期プログラミング、および複数の値の処理のためのテクニックです。
---------------------引用終わり
正直、ここですでにお腹いっぱいですが、もう一つ関連する引用を見ていきます
RxJS ライブラリ
https://angular.jp/guide/rx-library#rxjs-%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA
---------------------引用
リアクティブプログラミングは、データストリームと変更の伝播 (Wikipedia) に関する非同期プログラミングのパラダイムです。RxJS (Reactive Extensions for JavaScript) は、非同期またはコールバックベースのコード (RxJS Docs) の作成を容易にする observables を使用したリアクティブプログラミング用のライブラリです。
RxJS は Observable 型の実装を提供します。Observable 型は、型が言語の一部となるまで、そしてブラウザがそれをサポートするまで必要です。ライブラリはまたobservablesを作成して作業するためのユーティリティ関数を提供します。これらのユーティリティ関数は、次の用途に使用できます。
---------------------引用終わり
しばらく、この辺りを咀嚼してテストできるまでを優先したいと思います。
また、ゲームブックの方ですが、シナリオデータの受け渡しを割り切ったおかげで組み込みたい仕様が色々増えています。
実現するかは未定ですが、一部ご紹介です。(備忘録でもあります)
・キャラクターデータ
主人公は固定でなくてもいいですよね。
いわゆるサイド:ライバルみたいな書き方も可能にしたいです。
可能ならスキルみたいなものも取り入れたいところ
現在のステータス保持と新たにセットも考慮が必要
・アイテムデータ
テキストとフラグでカバーできるとは言え欲しい機能かも?
・ステータスデータ
HP,AP,GPだけではなく、場面によっては〇〇への好感度や敏捷・幸運等も
シナリオフレーバーとしてあると良いかも?
・ミニゲーム
現状、バトルしか無いですがクイズ(何問正解的な)やパズル的な条件分岐もあって良いかも?
setInterval()を使えば、時間制限イベントも作れそうですね。
問答によって好感度などを変化させるのも面白い気がします。