Skip to content

ゲームプログラミングが人生に役立つ3つの理由

やあshi3zだ。
僕はみんなも知っての通り、アマチュア・ゲームプログラマだ。
プロとしてゲームのプログラムを作ったことは、実はそう何度もないんだ。
僕の作品の多くは、布留川英一やシン石丸、鎌田くんといった優秀なスタッフの手によるものだ。

しかしゲームプログラミング自体は大好きだ。
そして、ゲームプログラミングをやったからこそ、いまの自分があると思っている。
特に高校生、大学生の頃、ゲームプログラミングは僕にとっと最も素晴らしい学校だった。
そしてゲームプログラミングをやっていたからこそ、今やっているような仕事にありつけた。
ゲームプログラミングをやっていたからこそ、ベンチャーを起業し、社長として80人の部下を持てるようになった。
ゲームプログラミングは魔法の学校なんだ。

そこで連休中の今日は、なぜゲームプログラミングが僕の成長にとって大切だったかを簡単に紹介してみようと思う。

その理由はたったの、3つだ。

 

理由1.プログラミングをすると、自信や信頼という言葉の本当の意味が理解できる

プログラミングをしたことはあるだろうか?

もしプログラミングをした経験があれば。誰でもわかることだけれども、世の中には、完全無欠な頭脳の持ち主なんてまず居ない。

これはプログラミングを経験しないとなかなかわからないことだ。

なぜかといえば、プログラミングは以下のステップの繰り返しだからだ。

 

1.解決すべき問題を設定する

2.仮説を立てる

3.仮説に基づいてプログラムを設計する

4.コーディングする

5.テストする

6.うまくいかない理由を考えて、2にもどる

 

このサイクルは、ほぼ全てのプログラムにあてはまることだ。
そして、経験を積めば積むほど、このサイクルが早くなる。

しかし間違いなく言えるのは、必ず6のステップを経験するということだ。

どれだけ完全無欠に見える天才でも、プログラミングではあっさりとミスを犯す。
あるときはミススペル、あるときはアルゴリズムの欠陥、あるときは仕様そのものの勘違い。

マシンは決して裏切らない。

すべてプログラムした通りに動く。

しかし問題は、常に人間が正しいプログラムを書くことができないということだ。

どれほど自信に満ちあふれた頭脳自慢の人間でも、プログラミングを本気でやれば、すぐにプライドはボロボロに打ち砕かれる。

しかしそれを乗り越えれば、プログラマは自分に自信が持てる。
完璧と完璧でない部分の危うい境界を学ぶのだ。

 

理由2.未知の問題に挑戦し、それを解決する能力を見つけることができる

ちょっとしたインテリが居たとしよう。彼が教本を読んでプログラミングを学んだとしよう。
もしかしたら、全くミスをせずあまりにもあっさりと理解できてしまうかもしれない。

しかしそれは当然だ。教本に書いてある内容の難しさをわかりやすくたとえれば、小学校低学年でやる、カラー印刷のワークテスト、あんなものだ。あれで100点をとれないほうがどうかしている。

世の中にある一般的な教本に書かれている内容は、実は易しい。プログラミングの入り口ですらない。

体育の授業とオリンピックの本戦くらい違う。

 

なぜなら、そこで扱われているのは全て、既知の問題だからだ。

ソーシャルネットワークを作るとしよう。プログラミングをしたことがない人には難しく感じられるかもしれない。しかし経験を積んだプログラマに言わせれば、世の中に既にあるプログラムを自分がもう一度作ることほど簡単なことはない。そこには一切の新規性はない。

新しいWebサービスを作ろう?
よかろう。しかしそこになにか新しいアルゴリズムは必要なのかな?
きちんとしたゲームを一本つくるためには、無数のアルゴリズムを理解し、使いこなしていく必要がある。画面を動く敵の動き、得点の方法、それになにより、ゲームのルール自体に独創性が必要だ。しかもそのアルゴリズムは極めて一般的なものから、極めて複雑なものまで多岐に渡る。メモリ管理の細かいテクニックから、人工知能の実現に至るまで、ゲームプログラミングが扱う範囲は広大だ。

乱暴にいえば、僕はソートより複雑なアルゴリズムをWebプログラミングの入門書で見たことがない。

訓練のためにプログラミングを学ぼうとする場合、誰もやってこないWebサービスをいくら作ってもその人のためにはならない。負荷分散のないWebサービスは簡単すぎて訓練に向いてない。これで知ることができるのは、人を集めることの難しさと、ネーミングの大切さ、それとイカしたドメインを見つけたら忘れずとっておく、という教訓くらいだ。そしてそれは、プログラミングのスキルとは全く関係ない。

プログラマーは冒険家に似ている。
誰かが歩いた道を歩くのは、初心者が訓練のためにやることであって、一流の冒険家の仕事ではない。

未知の問題に挑む力を身につけたければ、まずゲームプログラミングをやるべきだ。

 

理由3.誰にとっても魅力的な製品を作るためには、ゲームプログラミングが最高の訓練となる。ついでにモテるかもしれない

最後の理由は簡単だ。

理由1と理由2は、いずれも扱う問題はプログラミングの工学的なスキルを磨こう、という話だった。
しかし、最後の理由は前出したものとは違う角度で重要だ。

ゲームプログラミングをする、とは、要するにゲームを作る、ということだ。
そして言うまでもなく、ゲームはエンターテインメントである。

ということは、常に観客を意識したプログラミングが必要となるのだ。
最初の観客は自分自身かもしれないし、友達や家族、もしかしたら、クラスで気になっている女の子かもしれない。

彼、または彼女をどうやったら喜ばせることができるか。
それを必死で考えることになる。これがゲームプログラミングだ。

彼らは工学的とはとても言えないような部分でつまづく。
たとえば色使いやキーボードの触り心地、プレイする部屋の環境まで気にするだろう。

身近な人たちの興味を自分の作品に集中させ、「楽しい!」「面白い!」と言わせたときの笑顔は、プログラミングを学ぶ全ての人間にとって何よりもの報酬だ。

その報酬を糧として、「もっとすごいものを作ろう」「もっと面白いものを作ろう」というポジティブな動機がうまれるのはもちろん、どんな本にも載っていないような発見を次々とすることになるだろう。

たとえば、ジャンプの動きを再現するとしよう。スーパーマリオやスマブラでおなじみの動きだ。

このジャンプの動きは、ふつうに考えればy=gt^2*0.5で実現すべきだ。しかしこの場合のg(重力加速度)の値をどう決める?

君のゲームに最適なgは、君にしか決めることができない。

その数字はどんな本にも載っていない。君だけの発見であり、君だけの探求すべき数字になるはずだ。

プレイする人たちが笑うのはどんなときだろう?苦しむのは?「悔しい!」と歯ぎしりしてつい「リプレイ」ボタンを押してしまうのは?

ゲームプログラミングをして、身近な人に遊んでもらって、それを改良していくサイクルをとにかく繰り返す、そこで学べることはなんだろう?

それは、人の心を掴む、ということだ。人が人として生きていく上でもっとも大切なコミュニケーション能力のひとつだ。どんな学校でもどんな本を読んでも、それを教えてもらうことはできない。なぜならそれは言葉にはできない”感覚”だからだ。

繰り返し繰り返し、作っては遊ばせて改良するという地道なサイクルを遠してしか、これは体得できない。あらゆるクリエイターのなかでゲームプログラマーだけが、この経験を得ることができる。物語を作って聞かせる、でもいい。でも友達が書いた200ページもの小説を読みたい?わずかA4一枚の原稿で興奮させることができる?

それに比べたら、ゲームプログラミングは労力を少なくして手軽に人を興奮させることができる最高の訓練手段だ。

その結果どうなるか?

人の心の先を読み、説得し、興奮させ、落胆させ、歓喜させ、感動させるテクニックを身につけることになる。それが残りの人生でどれだけ役に立つか、想像してみよう。

 

 

そんなわけで、僕はゲームプログラミングをあらゆる人が経験したらいいと思っている。

もちろんそれは簡単な道のりではない。けれども、他のなによりも”楽しい苦難”の道だ。なにしろ作るものはゲームなんだから。自分が楽しまなきゃはじまらない。

これを途中で投げ出さず、経験した人はほぼ例外無く、彼ら自身が意識してる、してないに関わらず、とても魅力的な人間に育っていると思うのだ。

 

ま、もし万が一、「ゲームなんか作って!」とご両親に怒られたら、このエントリーを見せてみよう。
その結果は・・・ま、保証しないけど

文・shi3z

 

 

このエントリーをはてなブックマークに追加
はてなブックマーク - ゲームプログラミングが人生に役立つ3つの理由
Post to Google Buzz
Share on GREE

No related posts.

Facebook comments:

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*