技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

JCLの紹介

もしもメインフレーム(ホスト)を使うシステムの担当になってしまったら、必ずと言って良いほどお世話になるのがJCLです。
JCLとはメインフレームのプログラムを動かすためのスクリプトのようなものであり、UnixシェルスクリプトWindowsのバッチファイルに相当します。
また、メインフレームからの脱却に成功したレガシーシステムでも、システム移行や教育コストの都合上、JCLの面影を残したシェルスクリプト・バッチファイルが使われることが多く、JCLを読むことができればそのようなシステムに出くわした時にも理解が早くなります。
 
今回は、色々なサイトを見ながらJCLの紹介をします。
 
【JCLの概要】
JCL入門 >> 「メインフレーム・コンピューター」で遊ぼう

http://www.arteceed.net/?p=154

 
こちらのページには、簡単なJCLの例を出してJCLとはどのようなものなのか説明しています。
例として出されているJCLは以下です。
簡単に説明すると、1行目はジョブ名とジョブの種別、2行目は実行するプログラム名、3行目はインプットファイル名とインプットファイルの読み込み方、4行目はアウトプットファイルの情報(SYSOUT=コンソール)を指定しています。
//JOBA JOB MSGCLASS=H
//STEP1 EXEC PGM=PGMA
//INPUT DD DSN=USER.DATA1,DISP=SHR
//OUTPUT DD SYSOUT=*
 
なお、このサイトは、メインフレームの技術者のコミュニティサイトとしても機能しているようです。
詳細に踏み込んだ記事も掲載されていますし、掲示板は今でも更新されています。
 
【JCLのリファレンス類】
FUKU’s Another Room-z-OS,MVS技術情報

http://yfuku.sakura.ne.jp/mvs/mvsindex.html


 
こちらのページでは、JCLのリファレンスに相当する情報が書かれています。
難しすぎず簡単すぎず、実運用で必要な情報が書かれています。
「JOB制御ステートメント」の「DDステートメント」の下記の記述はメインフレームから脱却したシステムでも良く見られるものなので、レガシーシステムに関わる方は頭に入れておいて損はないでしょう。
NEW:このステップで新規データ・セットを作成します。
OLD:このステップ以前からデータ・セットが存在している場合で占有の読み取りです。
SHR:このステップ以前からデータ・セットが存在している場合で共有の読み取りです。
MOD:このステップ以前からデータ・セットが存在しレコードをデータ・セットの終わりに追加します。
KEEP:このステップが終了した場合、データ・セットを保存します。
DELETE:このステップが終了した場合、データ・セットを削除します。
CATLG:このステップが終了した場合、データ・セットをカタログします。
UNCATLG:このステップが終了した場合、データ・セットをアンカタログします。
PASS:このデータ・セットを同一ジョブ内の後続のステップに渡します。
 
なお、JCLのリファレンスは今でも本が出ているようです。
もしも本格的にJCLに関わることになってしまったら、このような本を購入するのも一考でしょう。

https://www.amazon.co.jp/MVS-JCL%E9%80%86%E5%BC%95%E3%81%8D%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9-OS%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%BB%E3%83%8F%E3%83%B3%E3%83%89%E3%83%96%E3%83%83%E3%82%AF-%E7%A5%9E%E5%B1%85-%E4%BF%8A%E5%93%89/dp/4990506200

 
メインフレームの入門】
第1回 ジョブとは何か? - 運用テクニック - システム管理者の会ポータルサイト

https://www.sysadmingroup.jp/back_number/kh/technic/012/277.php

 
こちらのページでは、メインフレームの仕組みに関して入門的なことが書かれています。
JCLを書いて運用する上では、単にJCLの文法を覚えるだけでなくメインフレームの仕組みもある程度理解する必要が出てくるので、このようなサイトで勉強しておくと良いでしょう。

COBOL概論

社内でCOBOLの概要について発表したので、資料を公開します。
COBOLについて、背景とコーディングの簡単な説明を記載しています。
視聴者の方が自力でリファレンスを引いて調べられるようになるのを目標に作成しています。

https://1drv.ms/p/s!AivF3bzWXOzuhHFXk5hscKYqkLkM

今後、COBOLでよく使われる設計手法やアルゴリズム、コーディング上のちょっとしたTipsについてもブログで取り扱おうかと思っています。
-------------------
目次

https://1drv.ms/b/s!AivF3bzWXOzuhG1Xk5hscKYqkLkM

情報処理技術者試験対策「SQL(取得結果に対する演算子の利用)」

SELECT文で取得した結果に対して、演算子を使うことで文字列結合や計算が可能です。
これを使うことで、プログラムで実装していたロジックをSQL文に組み込むことが可能になりますし、副問い合わせで使用すれば「抽出→抽出結果をプログラムで加工→加工した結果を用いて再度抽出」としていたものを1つのSQL文にまとめることもできます。
 
【文法】

  • 文字列結合
    演算子「||」を用いることで前後の文字列の結合が可能。
    例えば、「商品名||'_特価品'」とすれば、商品名の取得結果の後ろに「_特価品」という文字列を追加し出力することができる。
  • 計算
    算術演算子(+,-,*,/,%)を用いることで取得結果の計算が可能。
    例えば、「売値 * 0.8」とすれば、売値の取得結果について0.8をかけた値を出力することができる。
     

【対象テーブル例】
商品
+--------+--------+------+
| 商品ID | 商品名 | 価格 |
+--------+--------+------+
| 1      | 商品1 | 100  |
| 2      | 商品2 | 200  |
| 3      | 商品3 | 300  |
+--------+--------+------+
 
【取得例】
※ASは省略可能
 
SELECT   商品名||'_特価品' AS 特価商品名,
         売値 * 0.8 AS 特価価格
FROM     商品
ORDER BY 商品ID;

+----------------+----------+
| 特化商品名     | 特価価格 |
+----------------+----------+
| 商品1_特価品 | 80       |
| 商品2_特価品 | 160      |
| 商品3_特価品 | 240      |
+----------------+----------+
 
---------------------
目次

https://1drv.ms/b/s!AivF3bzWXOzuhG1Xk5hscKYqkLkM

ゲーム理論:物事をゲームとして正しく認識するための方針

ゲーム理論は話だけ聞くと簡単そうに見えますが、実際に適用しようとすると色々な壁にぶつかります。
一番最初に必ずぶつかる壁として、適用対象をゲームとして正しく認識することが困難という壁があります。
この認識が誤っていると、ゲーム木や利得表を正しく書くこともできなくなり、そこから導き出される分析結果も誤ったものになってしまいます。
 
今回の記事では、この問題に対する対応方針について、簡単に書いていきます。
 
ゲーム理論のおさらい】
ゲーム理論については、下記の記事に簡単に書いています。
情報処理技術者試験対策「ゲーム理論」 - 技術とか戦略とか
 
ゲーム理論の3つの前提条件】
ゲーム理論で分析を行うためには、以下の3つの前提条件が必要になります。
「適用対象をゲームとして正しく認識する」を具体的に言うと、「以下の3つの前提条件を正しく設定する」ということになります。
 

  • 利害関係のあるプレイヤー
    ゲーム理論とは、自分が選んだ選択肢と相手が選んだ選択肢の組み合わせで結果がどのように分岐するのかを分析する理論である。
    そのため、まずは結果に影響を与えるような利害関係のあるプレイヤーを洗い出す必要がある。
  • 各プレイヤーが持つ選択肢
    前述の通り、ゲーム理論とは選択肢を選んだ結果を分析する理論であるため、その「選択肢」を洗い出す必要もある。
  • 選択肢を選んだ結果得られる利得
    ゲーム理論における「結果」は「利得」と呼ばれているが、その利得の大小も定義する必要もある。
     

【前提条件を設定する難しさ】
上記の前提条件は、ゲーム理論の例題では自明であり、スポーツ・ボードゲームコンピューターゲーム等でもルールとして自明に近い形で提示されています。
しかし、現実世界の問題では前提条件は自分で設定する必要があり、スポーツ・ボードゲームコンピューターゲーム等に対してゲーム理論で厳密に分析する場合にも前提条件を疑う必要があります。
 
これらの前提条件を設定するのは意外と難しいです。
以下で囚人のジレンマの例を挙げながら説明します。
囚人のジレンマについては、はてなキーワードの説明がわかりやすかったので、知らない方は文字のリンクをクリックしてみて下さい)
 

  • 利害関係のあるプレイヤーの洗い出し
    一見利害関係がありそうなプレイヤーは実は利害関係がなかったり、逆に意外なプレイヤーと利害関係があったりします。
    囚人のジレンマの例では、相手の囚人の行動が自分の量刑に影響しないのであれば、相手の囚人をプレイヤーとして仮定するのは不適です。
    また、取り調べ担当官の気分で量刑が変わるのであれば、取り調べ担当官をプレイヤーとして見立てるべきです。
  • 各プレイヤーが持つ選択肢
    発想を膨らませると、選択肢も色々なものが想定できます。
    囚人のジレンマの例では「黙秘」「自白」のみが選択肢として与えられていますが、囚人の能力や状況次第では「虚偽の自白」「賄賂支払」「脱走」といった選択肢も想定する必要があります。
  • 選択肢を選んだ結果得られる利得
    各プレイヤーの価値観や目的、心理的バイアス等によって、実際に感じる利得は変化します。
    囚人のジレンマにおける禁固刑は生活に困っている人にとってはプラスにすらなり得ますし、正義を貫くことに重きを置く人にとっては死刑すら正義の殉死として肯定的に捉えるかもしれません。
    また、外部要因によって利得が変化することもあります。
    囚人のジレンマの経済学的な解答の一つとして、「囚人同士でお互いに黙秘する協定を結び、破った場合は罰則を加える」という解答がありますが、これは黙秘した場合の利得を無条件に低くすることで黙秘を選ぶメリットを無くすという解答です。
     

【前提条件を正しく設定するためのポイント】
以下では、前提条件を正しく設定する上で意識するべきポイントをかいつまんで挙げます。
 

  • 利害関係のあるプレイヤーの洗い出し
    目の前のプレイヤーとは本当に利害関係があるのか。
    パートナーとなり得るプレイヤーにはどのようなプレイヤーがいるのか。
    未知の競合相手が隠れていないか。
  • 各プレイヤーが持つ選択肢
    各々のプレイヤーはどのような能力を持っているのか。
    各々のプレイヤーが置かれた状況はどうなのか。
    能力を伸ばしたり状況を変えることで選択肢を増やすことはできないか。
  • 選択肢を選んだ結果得られる利得
    各々のプレイヤーの価値観や目的は把握したか。
    心理的なバイアスは考慮したか。
    利得を変化させる外部要因は洗い出したか。
     

情報処理技術者試験対策「SQL(テーブル結合)」

今回はSQL文のテーブル結合について、例を出して簡単にまとめます。
 
情報処理技術者試験で出題されるのもありますが、内部結合と左外部結合は実務でも頻出です。
プログラムを作る時に必要になるだけでなく、テストデータを確認する時に使用することもありますし、障害対応で時間が限られている時にアドリブで打つこともあります。
慣れておいて損はない文法なので、開発作業で使う機会があれば積極的に使うことを勧めます。
 
以下では、結合の種類について簡単に書いた後、結合例を記載します。
 
【結合の種類】
結合には下記の四種類があります。
 
・内部結合
 JOIN句の左側のテーブルと右側のテーブルについて、
 結合条件に合致するレコードのみ出力する。
 
・左外部結合
 JOIN句の左側のテーブルについては、
 結合条件に合致するレコードのみでなく、
 結合条件に合致しないレコードも出力する。
 結合条件に合致しないレコードについては、
 右側のテーブルの項目は全項目NULLとする。
 
・右外部結合
 JOIN句の左側のテーブルについては、
 結合条件に合致するレコードのみでなく、
 結合条件に合致しないレコードも出力する。
 結合条件に合致しないレコードについては、
 左側のテーブルの項目は全項目NULLとする。
 
・完全外部結合
 JOIN句の左側のテーブルと右側のテーブルについて、
 結合条件に合致するレコードのみでなく、
 結合条件に合致しないレコードも出力する。
 結合条件に合致しないレコードについては、
 片方のテーブルの項目は全項目NULLとする。
 
【対象テーブル例】
・子会社A取扱商品
  +--------+----------+
  | 商品ID | 商品名   |
  +--------+----------+
  | 1      | 商品A1 |
  | 2      | 商品A2 |
  | 3      | 商品A3 |
  +--------+----------+
・子会社B取扱商品
  +--------+----------+
  | 商品ID | 商品名   |
  +--------+----------+
  | 1      | 商品B1 |
  | 2      | 商品B2 |
  | 4      | 商品B4 |
  +--------+----------+
   ※両テーブル共に商品IDは主キー
 
【結合例】
※「AS」「INNER」「OUTER」は省略可能
※「AS」でテーブル別名を使用しない場合は、
 正式なテーブル名をカラム名の前につけて参照する
※ON句の代わりにWHERE句で結合条件を指定することも可能
 
・内部結合
  SELECT     A.商品ID,
             A.商品名 AS A社商品名,
             B.商品名 AS B社商品名
  FROM       子会社A取扱商品 AS A
  INNER JOIN 子会社B取扱商品 AS B
  ON         A.商品ID = B.商品ID;
  ORDER BY   A.商品ID;
  ↓
  +--------+-----------+-----------+
  | 商品ID | A社商品名 | B社商品名 |
  +--------+-----------+-----------+
  | 1      | 商品A1  | 商品B1  |
  | 2      | 商品A2  | 商品B2  |
  +--------+-----------+-----------+
 
・左外部結合
  SELECT          A.商品ID,
                  A.商品名 AS A社商品名,
                  B.商品名 AS B社商品名
  FROM            子会社A取扱商品 AS A
  LEFT OUTER JOIN 子会社B取扱商品 AS B
  ON              A.商品ID = B.商品ID;
  ORDER BY        A.商品ID;
  ↓
  +--------+-----------+-----------+
  | 商品ID | A社商品名 | B社商品名 |
  +--------+-----------+-----------+
  | 1      | 商品A1  | 商品B1  |
  | 2      | 商品A2  | 商品B2  |
  | 3      | 商品A3  | NULL      |
  +--------+-----------+-----------+
 
・右外部結合
  SELECT           B.商品ID,
                   A.商品名 AS A社商品名,
                   B.商品名 AS B社商品名
  FROM             子会社A取扱商品 AS A
  RIGHT OUTER JOIN 子会社B取扱商品 AS B
  ON               A.商品ID = B.商品ID;
  ORDER BY         B.商品ID;
  ↓
  +--------+-----------+-----------+
  | 商品ID | A社商品名 | B社商品名 |
  +--------+-----------+-----------+
  | 1      | 商品A1  | 商品B1  |
  | 2      | 商品A2  | 商品B2  |
  | 4      | NULL      | 商品B4  |
  +--------+-----------+-----------+
 
・完全外部結合
  SELECT          A.商品ID AS A社商品ID,
                  A.商品名 AS A社商品名,
                  B.商品ID AS B社商品ID,
                  B.商品名 AS B社商品名
  FROM            子会社A取扱商品 AS A
  FULL OUTER JOIN 子会社B取扱商品 AS B
  ON              A.商品ID = B.商品ID;
  ORDER BY        A.商品ID,B.商品ID;
  ↓
  +-----------+-----------+-----------+-----------+
  | A社商品ID | A社商品名 | B社商品ID | B社商品名 |
  +-----------+-----------+-----------+-----------+
  | 1         | 商品A1  | 1         | 商品B1  |
  | 2         | 商品A2  | 2         | 商品B2  |
  | 3         | 商品A3  | NULL      | NULL      |
  | NULL      | NULL      | 4         | 商品B4  |
  +-----------+-----------+-----------+-----------+ 
---------------------
なお、これは実務上の話ですが、外部結合は存在チェックに使うこともあります。
結合条件に主キーを指定した場合、結合条件に合致しないケース以外で主キー項目がNULLになることはないので、主キー項目がNULLなら存在しない、NULLでなければ存在する、と判定することができます。
教科書的には存在チェックは副問い合わせ(IN句)やEXISTS句で行うのですが、外部結合を使うと他テーブルの情報を取得しつつ存在チェックも同時に行えるので、取得結果を一つにまとめたい時やCURSOR文で順次回していく時等に効果を発揮します。
 
もちろん、これだけを覚えれば良いというわけでなく、プログラムの可読性を考えると本当に存在チェックだけをしたい時は副問い合わせ(IN句)やEXISTS句を使うべきですし、性能要件がシビアな時もどれを採用するのがベストか調査・検討する必要があります。
---------------------
2018/09/18 追記
直積結合を挙げ忘れました…。
実務ではまず見かけないと思う(少なくとも私は見かけたことがない)のですが、何故か情報処理技術者試験では出ることがあります。
 
内容についてはこちらのページがわかりやすいので、リンクを貼ってお茶を濁します。
 
直積結合とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

https://wa3.i-3-i.info/word15315.html
---------------------
目次

https://1drv.ms/b/s!AivF3bzWXOzuhG1Xk5hscKYqkLkM

麻雀の役の分類

仕事に関係のない記事ですみません。

過去に麻雀のルールを一読して戦略系の記事にしたのですが、役の一覧まで目を通せていなかったので目を通しました。

その上で、麻雀の役を自分なりに分類してみます。

なお、ローカルルールは取り扱わないことにします。

 

麻雀の複雑性は役の多さにあるので、役に着目することで戦略が具体的に見えてきます。

 

【麻雀の役一覧】

「麻雀豆腐」様の「麻雀の役 一覧表 シンプル見やすい!」を参照しました。

http://majandofu.com/mahjong-hands-simple

 

【門前】

鳴いていない状態(ポン、チー、明カンをしていない状態)のことを門前と呼ぶ。

門前でないと成り立たない役や、門前で成り立つが翻が下がる役は少なくなく、門前のままアガることで高い翻を得やすい。

なお、門前のままロンアガりすると門前加符として10符が与えられ、ツモアガりすると役がつく。

 

・門前清自摸和(メンゼンチンツモ) 1翻 門前のみ

 門前のままツモアガりするとこの役がつく。

 リーチやピンフ等と両立しやすい。

 

【リーチ系】

他にアガれる役が揃わない場合や、リーチを宣言することで役をつけてアガることができる。

その他、翻を追加したい場合にもリーチが有効となる。

ただし、リーチ状態になると自分の手の13牌は動かせなくなるので注意が必要。

 

・立直(リーチ) 1翻 門前のみ

 テンパイの時にリーチと宣言し1,000点棒を供託し、

 ツモかロンでアタマ+順子or刻子or槓子4面子を揃えると成立。

 一巡目にリーチをかけるとダブルリーチの役がつき+1翻。

 リーチしてから一巡目までにツモまたはロンでアガると、

 一発(イッパツ)の役がつき+1翻。

 (その一巡で誰かがポン、チー、明カンしていると不成立)

 供託した1,000点棒はアガったプレイヤーが獲得する。

 (流局した場合は次の局に持ち越し)

 リーチすることで、ドラだけでなく裏ドラによる翻も乗る。

 

タンヤオ

数牌の2~8のみを使ってアガりの形を完成させると役が付く(通称タンヤオ)。

鳴きもOKのため、早アガリを狙う時に有効である。

他の役とも両立させやすく、その場合は高い翻を狙うことができる。

 

・断公九(タンヤオチュー) 1翻 鳴きOK

 数牌の2~8のみを使ってアガりの形を完成させると成立。

 単独で成立させる場合は、

 アタマ+順子or刻子or槓子4面子を揃えると成立。

 

チャンタ系】

全ての面子とアタマに1・9・字牌を絡ませてると役がつく(通称チャンタ)。

チャンタと両立しやすい役をチャンタ系と呼び、タンヤオを狙えないようなあまり手牌が良くない時に狙いに行く手である。

 

・混全帯幺九(チャンタ) 2翻 鳴きOK

 全ての面子とアタマに1・9・字牌を絡ませ、

 アタマ+順子or刻子or槓子4面子を作ると成立。

・純全帯公九(ジュンチャン) 3翻 鳴き2翻

 全ての面子とアタマに1・9を絡ませ、

 アタマ+順子or刻子or槓子4面子を作ると成立。

混老頭(ホンロウトウ) 4翻 鳴きOK

 1・9・字牌のみを使用しアガりの形を作ると成立。

 単独で成立させる場合は、アタマ+刻子or槓子4面子を作ると成立。

清老頭(チンロウトウ) 役満 鳴きOK

 1・9牌のみでアタマ+順子or刻子or槓子4面子を作ると成立。

 

【順子系】

順子を複数揃えることで役が成立することがあり、順子が揃いやすい場合は狙っていく価値がある。

ただし、門前のみの役が多いので注意が必要。

 

・平和(ピンフ)  1翻 門前のみ

 アタマを役牌(三元牌や場風牌や自風牌)以外で、

 4つの面子を順子で作り、

 テンパイの時に両面待ちしている場合に成立。

一盃口(イーペーコー) 1翻 門前のみ

 同種の牌で同じ順序の順子を2面子、

 加えてアタマ+順子or刻子or槓子2面子を揃えると成立。

三色同順(サンショクドウジュン) 2翻 鳴き1翻

 3種類(萬子、筒子、索子)の全てで同じ数字の順子を作り、

 加えてアタマ+順子or刻子or槓子1面子を作ると成立。

一気通貫(イッキツウカン) 2翻 鳴き1翻

 萬子、筒子、索子の何れか1種類で1から9まで揃え、

 加えてアタマ+順子or刻子or槓子1面子を作ると成立。

二盃口(リャンペイコウ) 3翻 門前のみ

 同種の牌で同じ順序の順子を2面子、これを2組作り、

 加えてアタマを揃えると成立。

 

【染め物系】

萬子、筒子、索子のどれか一種類と字牌だけでアガりの形を作ると役になる。

萬子、筒子、索子の何れかに手牌が偏っている時に狙いに行く。

 

混一色(ホンイツ) 3翻 鳴き2翻

 萬子、筒子、索子のどれか一種類と字牌だけで

 アタマ+順子or刻子or槓子4面子を作ると成立。

清一色(チンイツ) 6翻 鳴き5翻

 萬子、筒子、索子のどれか一種類だけで

 アタマ+順子or刻子or槓子4面子を作ると成立。

・緑一色(リューイーソウ) 役満 鳴きOK

 緑色の牌(筒子の2、3、4、6、8と發)のみで

 アタマ+順子or刻子or槓子4面子を作ると成立。

九蓮宝燈(チューレンポウトウ) 役満 門前のみ

 萬子、筒子、索子のどれか1種類で

 [ 111 234 567 899 9+X(任意の数字) ]を揃えると成立。

 

字牌系】

三元牌や場風牌や自風牌のことを役牌と呼ぶ。

役牌で刻子or槓子を作るだけで役になり、鳴きもOKのため、早アガリを狙う時に有効である。

また、字牌を使うことで高い翻が乗る役もあり、状況次第でそれを狙うのも有効である。

 

・役牌(ヤクハイ) 1翻 鳴きOK

 役牌で刻子or槓子を1面子、

 加えてアタマ+順子or刻子or槓子3面子を揃えると成立。

小三元(ショウサンゲン) 4翻 鳴きOK

 三元牌のいずれかをアタマとし、

 残り2つを刻子槓子で揃え、

 加えて順子or刻子or槓子2面子を作ると成立。

大三元(ダイサンゲン) 役満 鳴きOK

 三元牌の全てを刻子槓子で揃え、

 加えてアタマと順子or刻子or槓子1面子を作ると成立。

字一色 (ツウイーソウ) 役満 鳴きOK

 字牌のみでアタマ+順子or刻子or槓子4面子を揃えると成立。

小四喜(ショウスーシー) 役満 鳴きOK

 風牌の何れかでアタマ、残りの風牌刻子3面子、

 加えて順子or刻子or槓子1面子を揃えると成立。

大四喜(ダイスーシー) 役満 鳴きOK

 風牌刻子4面子、加えてアタマを揃えると成立。

 

刻子系】

刻子を複数揃えることで役が成立することがあり、刻子が揃いやすい場合は狙っていく価値がある。

 

三色同刻(サンショクドウコウ) 2翻 鳴きOK

 3種類(萬子、筒子、索子)の全てで同じ数字の刻子を作り、

 加えてアタマ+順子or刻子or槓子1面子を作ると成立。

三暗刻(サンアンコウ) 2翻 鳴きOK

 3つの刻子を鳴きをせずに作り、

 加えてアタマ+順子or刻子or槓子1面子を作ると成立。

対々和(トイトイホー) 2翻 鳴きOK

 通称トイトイ。刻子を4面子、加えてアタマを作ると成立。

四暗刻(スーアンコウ) 役満 門前のみ

 4つの刻子を鳴きをせずに作り、加えてアタマを作ると成立。

 

槓子系】

槓子を3回以上行うと役がつく。

 

三槓子(サンカンツ) 2翻 鳴きOK

 槓子3面子、

 加えてアタマ+順子or刻子or槓子1面子を作ると成立。

四槓子(スーカンツ) 役満 鳴きOK

 槓子4面子、加えてアタマを作ると成立。

・四槓流れ

 2人以上のプレイヤーで合計4回カンを行うことで流局する。

 ただし、1人のプレイヤーであればOK。

 この場合は前述の四槓子の役になる。

 

【チートイツ】

対子(トイツ:2枚組)を7組揃えることで役となる。

対子が複数揃っている時にチートイツを狙いに行くと戦術に幅が出る。

 

七対子(チートイツ) 2翻25符 門前のみ

 対子を7組揃える。

 (同種の牌が4つある場合は対子2組として認められない)

 

国士無双

13種類の1・9・字牌を全て1枚ずつ揃えて、更にその中のどれか1種類だけ2枚揃えると国士無双となり役満となる。

手牌がバラバラな時に狙いに行くと戦術に幅が出る。

 

国士無双(コクシムソウ) 役満 門前のみ

 13種類の1・9・字牌を全て1枚ずつ揃えて、

 更にその中のどれか1種類だけ2枚揃えると成立。

・九種九牌による流局

 13種類ある1・9・字牌の内9種類を揃えると、

 流局を宣言することができる。

 

【カンでのアガり】

自分や他のプレイヤーがカンした時にアガると役がつく。

 

嶺上開花(リンシャンカイホウ)  1翻 鳴きOK

 カンしたときに補填する嶺上牌で

 アタマ+順子or刻子or槓子4面子を揃えると成立。

・槍槓(チャンカン) 1翻 鳴きOK

 他のプレイヤーが加槓(※)した際に、

 加えられた牌をロンすることができる。

 そのロンでアタマ+順子or刻子or槓子4面子を揃えると成立。

  ※ポンで作った刻子にツモをした牌を加え槓子を作ること

 

【最後の牌でのアガり】

最後の牌でアガると役がつく。

 

・海底撈月(ハイテイ) 1翻 鳴きOK

 最後の牌のツモで

 アタマ+順子or刻子or槓子4面子を揃えると成立。

・河底撈魚(ホウテイ) 1翻 鳴きOK

 最後の牌をツモしたプレイヤーの打牌でロンし、

 アタマ+順子or刻子or槓子4面子を揃えると成立。

 

【最初の牌でのアガり】

最初の牌でアガると役満になる。

 

・地和(チーホウ) 役満 門前のみ

 自分が子の時、

 第一ツモでアタマ+順子or刻子4面子を揃えると成立。

・天和(テンホウ) 役満 門前のみ

 自分が親の時、

 配牌時の14枚でアタマ+順子or刻子4面子を揃えると成立。

 

【ドラ】

アガった時にドラと同じ牌を持っていれば、1牌につき+1翻が乗る。

ただしドラ自体は役にならない。

 

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

ゲームには中毒性を高めるための心理的仕掛けがあります。
また、その心理的仕掛けを他分野に応用する「ゲーミフィケーション」と呼ばれる手法が現在注目を浴びています。
今回の記事では、心理的仕掛けとゲーミフィケーションを簡単に書きたいと思います。
 
【中毒性を高める心理的仕掛け】
ゲームに仕込まれている心理的仕掛けには色々なものがありますが、主軸となっているのは「世界観」と「正の強化の繰り返し」の2つだと考えています。
出来の良いタイトルであれば、この2つの心理的仕掛けは必ずと言って良いほど仕込まれています。

  • 世界観
    ゲームの内部で行われている処理は、あくまでも論理的な演算(ゲームシステム)である。
    しかし、論理的な演算を売りにしても一般的な人々にとってはとっつきにくく、興味を持ってもらえない。
    そこで、「近未来のSF」「剣と魔法のファンタジー」といった魅力的な世界観でカバーすることで、一般的な人々に興味を持ってもらえるようにしている。
     
  • 正の強化の繰り返し
    「正の強化」とは行動主義心理学の用語であり、ある行動をした結果として快の感情を受けることで、その行動を増加させるというものである。
    ゲームからは、「前の敵より少しだけ強い敵」「ちょうど良いレベルの対戦相手」といった、少し頑張れば乗り越えられるちょうど良い高さのハードルが適切なタイミングで提示される。
    このハードルを乗り越えることで達成感という快の感情を得ることができ、次のハードルを探して再びゲームを手に取るようになる。
    最終的には、達成感を得るために時間を強引にでも捻出してゲームをプレイするようになる。

 

ゲーミフィケーション
ゲーミフィケーションとは、ゲームの心理的仕掛けを日常生活に応用することであり、教育成果を高めたり顧客満足度を高めたりする上で有効とされている手法です。
今回説明した心理的仕掛けは、以下のように応用することができます。
 

  • 世界観
    無味乾燥に思える行動について、人々が興味を持つような世界観でカバーすることで、積極的にその行動を行ってもらうことができる。
    例えば、一般的な高校数学の教育では数学的な概念を前面に押し出しており、一般的な人々が興味を持つような内容になっていない。
    しかし、ロボットを動かす、人々の経済活動を調べる、新素材を開発する、といった具体的な活動については、一般的な人々も興味を持ちやすいと考えられる。
    そして、これらの活動に高校数学が応用されているということを知れば、高校数学にも興味を持ってもらえると思われる。
     
  • 正の強化の繰り返し
    ゲームではちょうど良い高さのハードルを受動的に与え続けられたが、日常生活ではこのハードルを自分で探さなければならない。
    高すぎるハードルを設定してしまうと達成感を得ることができず、やがて挫折してしまう。
    最終的なハードルを設定した後に、少しの努力で達成可能なハードルを細かく設定することが肝要である。
    このハードルをサービスとして提供する(される)でも良いし、このハードルを設定するためのスキルを身に付けるでも良いだろう。
    なお、挫折しない方法は最近多く見かけるようになったライフハックでもあり、ネットで検索すれば類似する記事をいくつも見つけることができる。
    他の記事も参照すれば理解が深まるだろう。


------------------
 
余談ですが、2018年6月に発表されたWHOの病気の定義の一覧では、「ゲーム依存症」は「薬物依存症」や「ギャンブル依存症」と同じように名指しで定義されており、ネット依存症やポルノ依存症等のようにその他扱いになっていません。
ゲームの中毒性はそれだけ高いとみなされているということだと思います。
実際に、ゲーム依存症患者の脳は、アルコール依存症患者やギャンブル依存症患者の脳に似た反応を示すという研究成果も出ているようです。
幸い(?)、その中毒性はゲーミフィケーションという形で他分野に応用可能なので、是非とも良い方向に使っていきたいものです。