~ストーリー 1~

★開発日記★デジストーンをデジストコインに交換する時に、新たな発見が!?

2017/07/02 22:08:00
(2017/07/01 46:08:00)
HTML版 | AMP版 | AMPストーリー版
つくづく、思いましたよ、今泉兄が簡易版を構築して良かったと。

というのも、今日は、デジストーンを、デジストコインに交換する部分を作ったんですよ。

ちなみに、デジストーンは、我が社の新サービス「DIGITAL STREET」、略して、デジストのポイントです。
デジストのポイント、デジストーンは、価値が、随時変動する、変動相場制ポイントシステムです。

この凄さは、まだ、今泉兄しか、わかっていませんが、後に、皆さんも体感して頂けるかと思いますので、お楽しみに。

そして、デジストーンの価値を固定化する為に、もう一つのポイントである、デジストコインに交換するんですよ。
デジストコインは1デジストコイン=1円相当です。

デジストーンは、随時、価値が変動するので、その都度、レートが表示されます。

例えば、100デジストーン=1デジストコインの場合、100デジストーン貯まると、1デジストコインに交換できるって事です。
デジストコインに交換すると、デジスト内で、使えるようになります。

使い道は、おいおいという事で・・・。

何しろ、貯めるのはデジストーン、使うのはデジストコインと、覚えてください。
で、今日は、このデジストーンを、デジストコインに交換する部分を、構築しました。

他にも、重複する処理を関数にしたり、進めながら設計もしていますので、まだまだ、やる事が、たくさんあるな~と。

もう、考えるだけでも、お腹いっぱいです。
特に、大きな流れは、ちゃんと紙に書いて設計しないとダメだと、気づきました。

頭だけで設計していると、どうしても、見逃しが多くなりますので。

例えば、すべて、大きな意味では同じ流れなんですけど、何パターンもあるな~と。
まずは、直前のポイント台帳を取得する事。

これは、全体の直前のポイント台帳と、そのユーザの直前のポイント台帳、両方取得する必要があります。

会員登録していない場合は、ユーザの直前のポイント台帳が無かったりと、細かい分岐はあるのですが、大きくくくると、直前のポイント台帳を取得です。
ちなみに、簡易版は、会員登録はすごく簡単で、ポイントを貯めるってボタンをおすだけです。

cookie(クッキー)による、簡易会員システムなので、メールアドレスとか、パスワードの登録は必要ありません。

これが、メールアドレスとパスワードの会員登録だったら、もう、今泉兄の力量じゃ無理でしたね・・・。
続いては、各機能による個別の処理です。

デジストーンを貯める場合は、どれくらい貯めるか。

デジストコインを使う場合は、どれくらい使うか。
この二つは、それほど、難しくないのですが、やっかいなのは、デジストーンをデジストコインに交換する時。

ちょいと複雑で、いくつもの処理が発生します。

その際、新たな発見をしたんですよ!
詳しくは、後半で語るとして、その後の処理を説明しますね。

そうそう、退会する場合も、多少複雑な処理が発生。

通常のポイントシステムだと、単に、そのユーザのポイントを抹消すればいいのですが、変動相場制という事で、いや~、結構な処理が発生。
パターンはいくつもあるのですが、ルールを決めて、その処理をする。

これで、個別の処理が終わったので、また、全ての機能で、共通の処理に戻ります。

個別の処理で行った計算を元に、ページに最新のポイント情報を表示する処理です。
同時に、最新のポイント情報を、ポイント台帳に記録する処理も必要なので行います。

これで完了。

この一連の流れで、デジストーンを貯めるは完成しまして。
続いて、本日のデジストーンと、デジストコインを交換する処理も、半分完了。

会員登録も完了し、退会も半分だけ完了しております。

デジストコインを使うは、簡単なのですが、実際に使った場合の処理は、結構ありまして。
まだまだ、3割、いや1割しか、完成していない・・・。

いや~、大変だ~、大変だ。

で、デジストーンを、デジストコインに交換する際に、新たな発見!?でして。
デジストコインは、整数しか指定できないルールにしたんですよ。

後に、他社のポイントやビットコインに交換する際に、最低単価を1円にしたいからです。

なので、数字じゃないとダメとか、少数点はエラーとか、0はエラーにするとか、判断する仕組みにしたんですよ。
でも、1点、マイナスの処理を忘れていまして・・・。

テストで、-1デジストコインを設定したら、問題なく、動いてしまったんですよ・・・。

で、ここで気づきました。
そうです、プログラム上、デジストコインに交換する際に、マイナスを指定すると・・・。

なんと、デジストーンが増えてしまう!?

そうです、もちろんですよ、デジストーンが減って、デジストコインが増えるプログラムですので。
デジストコインがマイナスという事は、デジストーンをマイナスする際に、マイナスをマイナスするので、デジストーンが増える事に。

そう処理されないと、計算が合わなくなるので、そういったプログラムにしていたんですよ。

だからこそ、元のデジストコインに交換する際に、どれくらい交換するか指定する際に、マイナスはエラーにしないといけないんですよ。
一応、デジストーンに関しても、貯める事はできても、デジストコインに交換する際に、増える事はさせない。

ダブルチェックするプログラムが良いかも知れませんね。

でも、先ほどの時点では、デジストーンが増えてしまったんですよ・・・。
元々、デジストーンをデジストコインに交換はできても、逆はできないルールです。

しかし、プログラム上は、できてしまうのは、当たり前。

という事は・・・。
そうですよ、そう!

プログラム上ですが、デジストコインをデジストーンに交換する仕組みだったんですよ。

という事は・・・。
これ、すごい発見なんですよ!

普通に、デジストコインを、デジストーンに交換できるルールだったらば、気づかなかった事。

だって、そのルールだったら、今回の事が当たり前なので、たぶん、見落としていました。
というか、今回のような挙動、デジストコインがマイナスにならないような仕組みにしていたかと思います。

しかし、今回は、デジストコインをデジストーンに交換する仕組みだけ。

その仕組みに、間違った、マイナス指定が、出来てしまった事による、副作用。
何かというと、例えば、デジストコインが10コインあったとして。

100デジストーンで、1デジストコインが交換レートとします。

ここで、間違って、-1デジストコインに交換!ってした場合、デジストコインが9コインになり、デジストーンが100デジストーン増えただけなのですが。
なんと、テストした際は、デジストコインが、元々、ゼロ。

そして、デジストコインを-1交換したんですよ。

すると、デジストーンが100デジストーン増えたのは同じなのですが、なんと、デジストコインが-1デジストコインに!?
なんと、あり得ない事ですが、プログラム上は、あり得る。

そうなんです、デジストコインがマイナスはマイナスでも、ゼロからのマイナスなので、-1になり、ある意味、借金している状態に!?

ひょえ~~~~~、その手があったか!?
しかも、まさに、今、BANK社の、目の前のアイテムが一瞬でキャッシュに変わるアプリCASHが、欲も悪くも、話題じゃないですか!?

という事で、コラムで、この発見による、新たなアイデアを発表します!

いや~、プログラム、面白い!!!!