プログラミングの「壁」

この間紹介したそろそろ本気で継続力をモノにする!という本にこんなことが書いてありました。

テレビゲームが楽しいと感じられるのは,「壁」があるからです。プレイヤーに許されている操作と許されていない操作があるからこそ,許されている範囲内で何とか障害を乗り越えるための知恵を働かせたり,思惑通りに障害を乗り越えて達成感が得られたりするわけです。
(中略)
そういう意味では,「壁」が「やる気」を生み出しているといえるわけです。

ここでいう「壁」というのは,「障害」という意味ではなく,放っておくと流れていってしまう時間や意志や欲望を,何とかしてあるべき形に押しとどめるための方法だそうです。
何か言われてみれば当然のことなんですけど,なるほどなぁと思いまして。制限があるからおもしろんやなぁと。僕が最近はまっている携帯ゲームにミニ四駆 GPXっていう小学校のときに熱中していたミニ四駆を思い出させてくれるゲームがあるんですけど,このゲームがまさにこれだなぁと思います。限られたお金の中でパーツを選択してミニ四駆をカスタマイズしてレースに出して勝てたら嬉しい。制限された範囲内で考えて自分なりに工夫するとミニ四駆が速くなる。たぶん成果がすぐに返ってくるからおもしろいんですね。僕の周りの人たちはこのゲームのおもしろさをあんまりわかってくれないですけど。

それで,よく考えてみたらプログラミングもおんなじなんじゃないかと思いました。プログラミング言語っていう制限があって,その中でいろいろ考えて工夫してプログラムを作っていく。それでいいものができたらすごい達成感ですよね。でもプログラミングでできることはゲームの中の制限よりもとても大きいので,プログラミング言語の文法を勉強しても成果がすぐにでるわけじゃない。だからプログラミングはゲームよりとっつきにくいんですね。

僕はゲームでもプログラミングでも許された範囲でできることを最大限に使って良い成果を出すために,どうやって工夫するかを考えること自体がおもしろいし,好きです。でもプログラミングはまだまだ最大限のことを利用できるレベルじゃないので,もっと勉強しなければと思います。「壁」がまだ遠くてあまり見えていない感じですかね。