JavaScriptを勉強していたら、途中からバッティング練習になった

2023/08/01に公開

おはようございます!
今日も昨日やったことの振り返りをしていきます!

昨日やったこと

昨日は、下記のサイトのチュートリアルで数字当てゲームを作りました。

https://developer.mozilla.org/ja/docs/Learn/JavaScript/First_steps/A_first_splash

初心者から上級者までレベルが設定されていて、JavaScriptを体系的に学ぶことができるサイトです。

実際に作ったものがこちらです。

https://twitter.com/YangYooji3942/status/1685890227343351808

気付き

数字当てゲームを作る上で、最初のステップとして用意されていたのが、ゴールを思い描くということでした。

プログラマーのように考えるプログラミングで一番難しいのは、書き方を覚えることではなく、現実の問題にどう適用するかということです。
プログラマーのように考え始める必要があります — それは一般的に、そのプログラムが何をしなければならないかという説明を見て、それを満たすためにコードのどんな機能を用いるかを考え、さらにそれを組み合わせていかなければなりません。
これには努力・プログラミング文法の経験・練習に加え、少しの想像力が必要です。
たくさんコードを書けばもっと慣れていくでしょう。たったの 5 分で「プログラマー脳」を開発することは約束できませんが、このコースを通じてプログラマーのように考えるたくさんの機会を提供したいと思います。
まずはそれを念頭に置いてから、この記事で作るプログラムの実例を見てみましょう。さらにその後、具体的な手順に落とし込む方法について学習しましょう。

考えてみれば当たり前ですが、今から作るものの設計図を描けていなければ完成するものも完成しません。
しかし、これまで写経的に学習を進めていたところがあったので、「全くその通りだ!!」と叫びそうになりました。

ということで、今回作った数字当てゲームのロジック部分を復習も兼ねて以下に書いてみます。

1. 答えとなる数値を数値を1~100の間でランダムに設定する
2. プレイヤーが答えを入力・送信できる場所を用意する
3. プレイヤーが回答した数値を記録しておく場所を用意する
4. プレイヤーの回答数の初期値を1に設定する
5. プレイヤーが入力した数値と答えの数値を比較する
6. 2の結果によって処理を分岐する
 6-1. 正解の場合
  6-1-1.「正解です!」というメッセージを表示する。
  6-1-2.新たに数値を入力・送信出来ないようにする。
  6-1-3. 新しくゲームを始めるボタンを表示する。
 6-2. 不正解の場合
  6-2-1. 回答数が9回以下の場合
   6-2-1-1. 回答が答えに対して大きいか小さいかのメッセージを表示する
   6-2-1-2. 回答数のカウントをプラス1する
   6-2-1-3.5に戻る
  6-2-2. 回答数が10回に達した場合
   6-2-2-1. ゲームオーバーというメッセージを表示する
   6-2-2-2. 新たに数値を入力・送信できないようにする
   6-2-2-3. 新しくゲームを始めるボタンを表示する
7. ゲームが再び始まったら、画面とロジックがリセットされるようにして1に戻る

野球で言うとこれはなんなのか?

ロジックが考えられなければ、コードを書こうにもどのように書いたらいいのかがわかりません。
プログラミングの学習を始めてから、コードの書き方を覚えることが最重要だと思っていましたが、それだけではないことに昨日気づきました。

そしてこれはどちらが重要ということではなく、どちらも無いと作りたいものは作れない不可分な関係性ものです。

バッティングでいうと、コードを書く技術を高めることは「スイングスピード」を上げること、最適なロジックを考えることは「バットコントロール」の技術を上げることと言えると思います。

そのように考えると、打席に入る時にどのボールをどこに打ち返すかというイメージの部分が抜けていることに気が付きました。
いつもとは逆で、野球からプログラミングに関連することはないかと考えた結果、それは「作りたいものを想像する」ことではないかと考えました。

[野球の場合]
どのボールをどこに打ちたいかをイメージする

来たボールに対してバットを当てに行く
(バットコントロール)

ボールを強く叩く
(スイングスピード)

[プログラミングに置き換えると]
作りたいものをイメージする

どんな機能があれば実現できるかを考える
(ロジックを考える)

実際に処理を実装する
(コードを書く)

こう考えると、今プログラムの勉強をしているのは野球の練習をしていることとほぼ同義かと思います。面白くなってきました!そしてこれは誰かに伝わるものなのでしょうか?今日も学習スタートします!

Discussion