業務用ゲーム機の修理から学んだこと

[PONOS Advent Calendar 2024](https://qiita.com/advent-calendar/2024/ponos)の20日目の記事です。
## はじめに
　私は長年ゲーム開発の仕事をしてきましたが、その中で業務用ゲーム機の開発と修理を担当した経験もあります。業務用ゲーム機とは、ゲームセンターに設置されているゲーム筐体のことです。修理業務に関しては、大型の筐体だけに現場でしか直せないことも多く、遠方への出張修理も数え切れないほど経験しました。

 　現在はスマートフォン向けのゲームアプリを開発していますが、ハード/ソフトの違いはあれど、当時の経験が役立つことも意外とあります。この記事ではそんな過去に想いを馳せつつ紹介していきたいと思います。　

## 業務用ゲーム機とは
　ゲームセンターに設置されているゲーム機は驚くほど多種多様で、ビデオゲーム、プライズマシン、メダルゲーム、プリントシール機、音楽ゲームなど、様々なタイプが存在します。これらはアーケードゲームとも呼ばれます。
　家庭用ゲームとの大きな相違点は、各ゲームが100円硬貨を投入し一度だけ遊べる形式であることです。1プレイで満足感を与えるものでなければリピートしてもらえないというシビアな商売です。

![game_driving.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538709/275ddade-1570-bd22-0877-3606a21165f5.png)

この記事ではドライブゲームの筐体を例に進めていきます。もちろん、モニターの有無や入力デバイスの差異などはありますが、ハードウェアとしては概ね以下のような構成となります。

## ハードウェア構成
ドライブゲームの筐体がどのような要素で構成されているか、大まかに描き出しました。
![スクリーンショット 2024-12-17 22.06.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538709/8e194f4b-d5ab-8924-55ec-eeef83c4ecd6.png)

　モニタ、ハンドル、ペダル、スタートボタンは目に見える部分ですが、筐体内部には基板と電源ボックス、そしてハンドルの根元に反力生成用ACモータも搭載されています。これらのコンポーネントはケーブルで相互接続され、筐体内には血管の如く配線が張り巡らされています。

## 故障箇所
　ゲーム筐体において、故障する箇所は「全て」に及びます。
 
　経験から全ての要素で故障事例を見てきました。故障しない機械など存在しません。初期不良も一定の割合で起こるものです。特にプレイヤーが直接触れる部分（例えば、ハンドルやペダル、ボタンなど）は消耗パーツとして扱われ、店舗側での交換修理が前提となっています。同様に、モニターや基板も時折故障しますが、プレイヤーが触れる箇所でなくても、冷却ファンのホコリの影響で熱暴走を発症することがあります。

　壊れない機械、あるいはメンテナンス不要で置いておくだけで儲かる機械は理想的ですが、業界として「メンテナンスは自分たちで行うのでその代わりに安価で製品を提供してほしい」という風潮でもあります。

## 出張修理
　このようにメンテナンスが必要なゲーム機のため、大手のゲームセンターではお店側に技術者がいます。また、個人経営の小さなお店でもスタッフはある程度の技術知識を有しています。ゲーム機に付属している説明書には部品の交換方法や配線図が掲載されており、それをガイドに店舗スタッフ自身が修理を行います。

　とは言うものの、新製品が突如故障した場合はすぐさまメーカーに怒りの電話がかかってきます。
 「初期不良だ！営業補償どうしてくれる！」「今すぐ修理に来い！」といったクレームです。
　「今から向かいますが電車で2時間かかります」と説明すると、「電車の中でも走れ！」と急かされたものです。（今思えばユーモアありますが。）

　人気ゲームを開店前から待ち望んでいるお客さまがいらっしゃる中、その事態に対する怒りは理解できます。当社に落ち度のないケースであっても、メーカーとしてのスタンスは「とにかくお店に向かい対応すること」です。電話口で怒声を浴びせられたとしても、店舗に到着すれば、「おう、わざわざ遠くまでありがとうな」と缶コーヒーをいただいたりするもので、さほど嫌な想い出はありません。

![game_center.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538709/a8f77374-d6ef-69a2-5ab0-eb8359b22ffc.png)


## 初動調査
　現場に到着して、まず現状を確認します。
 
　電源は入るか？
　映像は表示されるか？
　冷却ファンは回っているか？
　エラーメッセージは表示されているか？
  
  エラーメッセージが出ていればエラーコードから原因を特定することが可能です。しかし、必ずしもそうとは限りません。特に新製品であれば情報蓄積も無いまま故障原因を探ることになります。テスターでコンセントの電圧を測る等、基本的な手順を行いつつ全体をよく観察し、推理して仮説を立てます。その時点から脳みそフル回転です。

## 仮説

　例えば「電源を入れたのに画面が真っ暗のまま起動しない」という症状が出た場合、原因として考えられるのは次のようなものです。

　　基板の故障
　　ソフトウェアのバグ
　　モニタの故障
　　配線の接続不良
　　電源ボックスの不良

　これは、「画面が真っ暗」であるという一つの事実から考え得られる可能性です。一目で明らかな異常が見つかるケースもありますが、それがない場合は困難を伴います。そこで役に立つのが「ユニットの入れ替え」です。

## 入れ替えて絞り込む
　ドライブゲームの場合は店舗に同じ筐体が2台ペアで並べてあることが多いです。同じものが2セットあれば、正常に動作している筐体と故障している筐体のユニットを入れ替えることができます。この入れ替えによって、原因の絞り込みや特定が可能となります。

　例えば、故障している筐体Aと正常な筐体Bがあるとします。ここで、筐体Aのモニタを筐体Bに、筐体Bのモニタを筐体Aに取り付けてみます。症状が移ったなら、故障箇所はモニタと特定できます。移らなければモニタに問題はなく、それ以外の部分を見ていく必要があります。必要あらば基板、電源ボックス、ケーブルなども同様に入れ替えて確認します。この単純な作業こそが、故障原因を特定する上で最も効率的かつ信頼性の高い手法です。

　より精度を高めるため、双方向での入れ替えが重要であると言えます。それは、「入れ替えたら両方正常になった」場合や、「入れ替えたら両方が故障した」という場合が存在するからです。
 
 前者の事例として、ケーブルの差し込みが甘かった、差し込み場所を間違えた、そもそも差し込むのを忘れていた、などが考えられます。

　逆に、入れ替えた結果両方が故障するケースは最悪の事態とも言えます。私自身も経験したことがありますが、その際の故障はモニタではなくモータ制御基板でした。原因はDCモータの焼き付きによるショートでしたが、それに気づかず基板を次々に壊してしまったのです。幸いにも予備の基板を多めに準備していたため、何とか対応することができましたが。

　このようにユニットを入れ替えることで、状況が見えてきます。そのユニットが故障原因と無関係であったとしても原因特定にとって有益な情報となります。

　なるべく大きな単位で入れ替えを始め、徐々に細かい単位へと調査を進めるというのも重要です。
例：サテライト(筐体分割)→ コンパネ(操作部一式)　→　操作レバー　→ マイクロスイッチ

　刑事ドラマに見られるように、捜査範囲を段階的に絞って犯人を追い詰めていくのと似た感覚です。このような泥臭い手法が、現場修理においては最も有用であるということを今でも確信しています。

![kouji_maintenance.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538709/c2e4bd94-ecf1-43a0-3ef5-a3c4d8492602.png)

## まとめ

　冒頭の繰り返しになりますが、かつての修理経験が現在のスマホ向けゲーム開発にも役立っています。
 
　例えばUnityのバグ、プラグインのバージョン互換性など、中身まで追えないブラックボックス的なものへのアプローチ、またネットワークが不安定な時の原因調査などで、この考えを活かせます。

　大まかに切り分け、入れ替えを繰り返しながら範囲を徐々に狭めていくというプロセスは、昔BASICプログラムで作った「数当てゲーム」を彷彿させるものもありました。
[数当てゲームで遊んでみよう〜探索問題の二分探索アルゴリズム〜](https://anko.education/archives/3484)
なるほど、二分探索アルゴリズムかも。

この経験は、仕事だけでなく日常生活でも役立っています。
テレビが映らないのはテレビ本体のせいなのか？アンテナのせいなのか？など。
そして、何か予想外のことが起きたときでも、落ち着いて対応できるようになったとも感じています。

ま、それでもハマる時はハマるんですけどねw

---
　明日は[@e73ryo](@e73ryo)さんの記事です。お楽しみに！