ゲームに熱中する心理的仕掛けとゲーミフィケーション

ゲームには没入感を高めるための心理的仕掛けがあります。
その心理的仕掛けを他分野に応用する「ゲーミフィケーション」と呼ばれる手法が、現在注目を浴びています。
今回の記事では、心理的仕掛けとゲーミフィケーションについて、概要を簡単に書きたいと思います。

【没入感を高める心理的仕掛け】

ゲームに仕込まれている心理的仕掛けには色々なものがありますが、主軸となっているのは「世界観」と「正の強化」の2つです。
出来の良いタイトルであれば、この2つの心理的仕掛けは必ずと言って良いほど仕込まれています。

・世界観

ゲームの内部で行われている処理は、あくまでも論理的な演算(ゲームシステム)です。
この論理的な演算を売りにしても、一般的な人々にとってはとっつきにくく、興味を持ってもらません。
そこで、「近未来のSF」「剣と魔法のファンタジー」といった魅力的な世界観でカバーすることで、一般的な人々に興味を持ってもらえるようにしています。

・正の強化

「正の強化」とは行動主義心理学の用語であり、ある行動をした結果として快の感情を受けることで、その行動を増加させるというものです。
ゲームからは、「前の敵より少しだけ強い敵」「ちょうど良いレベルの対戦相手」といった、少し頑張れば乗り越えられる、ちょうど良い高さのハードルが適切なタイミングで提示されます。
このハードルを乗り越えることで達成感という快の感情を得ることができ、次のハードルを探して再びゲームを手に取るようになります。
最終的には、達成感を得るために、ゲームをプレイする時間を意識的に捻出するようになります。

【ゲーミフィケーション】

ゲーミフィケーションとは、ゲームの心理的仕掛けを日常生活に応用することであり、教育成果を高めたり顧客満足度を高めたりする上で有効とされている手法です。
もちろん、ゲームとしてプロダクトを作成することでこのメリットをわかりやすく享受することができます。
しかし、そこまでしなくとも、ゲームの心理的仕掛けを応用することで、例えば以下のようなメリットを享受することに期待できます。

・世界観

無味乾燥に思える行動について、人々が興味を持つような世界観でカバーすることで、積極的にその行動を行ってもらうことができます。
例えば、一般的な高校の理系科目の教育では数学的な概念が前面に押し出されていることが多く、一般的な人々が興味を持つような内容になっているかは疑わしいです。
しかし、ロボットを動かす、人々の経済活動を調べる、新素材を開発する、といった具体的な活動については、一般的な人々にも興味を持ってもらいやすいと考えられます。
そして、これらの活動に高校数学が応用されているということを知れば、理系科目に興味を持ってもらいやすくなります。

・正の強化

ゲームではちょうど良い高さのハードルを受動的に与え続けられますが、日常生活ではこのハードルを自分で探さなければならなりません。
高すぎるハードルを設定してしまうと達成感を得ることができず、やがて挫折してしまいます。
最終的なハードルを設定した後に、少しの努力で達成可能なハードルを細かく設定することが肝要です。
例えば、試験に合格したい場合、いきなり「模試で○○点以上を取る」という高いハードルを設定してしまうと、それを達成できなかった時に挫折してしまいますし、達成できない確率も高くなってしまいます。
しかし、「参考書を1日10ページ以上読む」という低めのハードルであれば、挫折せずに長く続けることができますし、無理をしない範囲でそのハードルを超えること(例えば参考書を10ページを超えてキリが良い所まで読む)を達成することも多いですし、努力を継続できることで最終的には試験に合格するだけの力を蓄積できる可能性が高くなります。


いかがでしたでしょうか。

情報分野の技術はプロダクトを実装する上で重要ですが、より上位のレイヤー、例えば要求定義・要件定義や組織運営といったレイヤーでは、人と人の繋がりを考えることが重要になります。
知識面で言うと、戦略や心理学といった分野の知識が重要になりますし、IT分野の人材の質を高めるために設けられている情報処理技術者試験でもその分野の知識が問われることがあります。

今回執筆した「ゲーミフィケーション」は、有力なプロダクトを作成したり、教育効果を高めたりする上で、有用な知識であり、知っておいて損はないと思います。

これからは、戦略や心理学といった分野の知識についても、IT業界との関わりが深いものであれば書いていきたいと思います!

「見積もり概論」社内勉強会用のパワポの公開

社内勉強会向けに、見積もりについて説明するパワポを作成したため、公開します!
見積もり概論

見積もりの必要性・手法・経験則について、簡単に説明しています。

詳細設計以降の作業の見積もりを行う場合は、見積もり手法と言うよりは、技術力の方が重要になります。
しかし、それ以前の工程の時点で見積もりを行う場合、具体的なものが見える前に見積もらなければならないという難しさがあり、見積もりがブレた場合の影響も大きいので、このパワポで解説するような知見が重要な意味を持ってきます。

上流工程を担うようになった場合に役に立つ知見なので、それまで頭の片隅に置いていただければと思います。

例外ケースは処理の始めに除外する

プログラムで何かしらの処理を記述する場合、本当に実装したい処理(本処理)に入る前に、例外ケースを除外するテクニックがあります。
このように記述することで、本処理では例外ケースを考えずに済むため処理内容を考えやすくなりますし、例外ケースの場合に時間がかかる本処理を実行しなくて済むようになるので性能面でもメリットがあります。

例として、競技プログラミングの問題を取り上げて説明してみます。

今回取り上げる問題は以下です。
 100円玉がA枚、
 10円玉がB枚あります。
 X円を作る方法が何通りあるか出力しなさい。

ループ処理を実装して総当たりを行えばこの問題を解くことはできますが、その場合は性能面が犠牲になるため、望ましい解答ではありません。
今回は、ループ処理を使わずにこの問題を解いてみます。
(言語はJavaです。なお、本来は、標準入力を入力としますが、今回はソース中の定数を入力としています。)


【解答例】

・HundredYenTenYen.java

【実行例】

・100円玉だけで100以降の位を払え、10の位を払った時に10円玉10枚組が減らない場合

 備考:以下の3パターンがある。
  100円玉5枚+10円玉5枚
  100円玉4枚+10円玉15枚
  100円玉3枚+10円玉25枚

・100円玉だけで100以降の位を払え、10の位を払った時に10円玉10枚組が減る場合

 備考:以下の2パターンがある。
  100円玉4枚+10円玉6枚
  100円玉3枚+10円玉16枚

・100円玉だけでは100以降の位を払えない場合

 備考:以下の1パターンがある。
  100円玉6枚+10円玉24枚

・持っている10円玉の枚数で、作りたい円の10の位を実現できない場合

・作りたい円が10の倍数ではない場合

・作りたい円が100円玉・10円玉の合計金額を超えている場合


この解答例では、「10円玉10枚の組み合わせは、100円玉1枚を代替できる」という点に着目し、④~⑦の箇所でパターン数を割り出しています。

そして、ポイントは、①~③で例外ケースを除外している所にあります。
①~③の例外処理を事前に噛ませることで、④~⑦に到達した時点で
・入力された金額は100円玉と10円玉で払い切れる
・入力された金額は必ず10の倍数である
・10の位を払う時に10円玉が足りなくなることはない
ということが保証されるため、④~⑦の処理を考えやすくなっています。

また、今回の例では当てはまりませんが、もし④~⑦が時間のかかる処理である場合は、例外ケースの場合に処理時間の短縮をすることもできます。

このように、例外ケースを事前に除外するテクニックが役に立つことがあるので、覚えておいて損はないでしょう。


いかがでしたでしょうか。

プログラムのアルゴリズムを考える上ではいくつかコツやテクニックのようなものがあるので、これからもそういった情報を発信できればと思います。

C#:外部コマンド呼び出しの方法

javaプログラムからの外部コマンド呼び出しは別の記事に掲載したのですが、C#でも同様に外部コマンド呼び出しが可能です。
今回の記事では、「画面から外部コマンドを呼び出し、外部コマンドで出力されたファイルを取り込む」という機能をWindows Fromで実現したサンプルプログラムを紹介します。

【サンプルプログラム】

【呼び出されるバッチ】

・C:\tmp\HelloWorld.bat

【実行結果】


いかがでしたでしょうか。

プライベートでこのようなプログラムを作る機会があったので、記事として紹介してみました。
簡単な画面を作りたい時にC#のWindows Fromは便利で、今回紹介したような画面を実装すると社内ツールを作る時の表現の幅が広がったりします。