こんにちは。今日から2年目に突入したエンジニアのKEN☆YAMAGUCHIです。
今回のテーマは、僕がちょうど1年前に経験した開発研修についてです。開発研修とは具体的に言うと、SHOPLISTに4月に入社してから、開発部に配属されるまで行った、3か月間の研修のことです。この3か月間の開発研修ではいくつかの研修を行いましたが、その中でも最初に行った研修である「じゃんけんゲーム」の開発についてお話ししたいと思います。
ちなみに、今回じゃんけんゲームの開発は、僕が初め開発というものを経験した、思い出深いものとなっています。
最後まで読んでいただければ嬉しいです。
【始動】いざ開発研修スタート
4月に入社してから待っていたのは3か月間の開発研修でした。研修は、大まかに分けると、基本情報技術者試験の勉強・SQL研修・プログラミング研修の三本立てでした。
文系出身の僕はもちろんプログラミングは行ったことがなかったので、開発知識は全くのゼロからのスタートとなります。
そんな不安な思いを抱きながらスタートした研修ですが、まず初めにシェルスクリプトを使用して簡単なif文を作成してプログラムを書くことになれるところから始まりました。
そして徐々にプログラムを書くことや、プログラムの仕組みなどに慣れてきたころに、じゃんけんゲームの開発を行うことになります、、、
【衝撃】じゃんけんゲームを作りなさい!?
ここからは僕が開発した初の成果物にあたる、じゃんけんゲーム開発についてお話させていいただきます。
ベテランエンジニアの方には、じゃんけんゲームと聞いて懐かしい思い出、駆け出しエンジニアの方であれば、新鮮な思い出ではないでしょうか?
じゃんけんゲームは、ifやforeach、配列がどんな書き方を学びながら開発できるものであり、難しいphpの関数を使うことなく開発できるので、プログミング初心者とってはいい教材だと考えています。
じゃんけんゲームの流れは簡単に下記のようなものです。
- プレイヤーがじゃんけんの手を選ぶ
- 「勝負」ボタンをクリックして値をPOSTする
- POSTを受け取ったらコンピューターの手をランダムで選ぶ (配列)
- プレイヤーとコンピューターで勝負する (条件分岐)
- 勝敗とプレイヤー、コンピューターの手を画面に表示する
相手の手を配列に格納したり、条件分岐で勝敗判定をしたりと、初歩的なことを学べます。
今思うとすごく簡単なプログラムですが、当時は苦戦していました、、、(笑)
そんな中でも、徐々に開発ができてきてもう完成したと確信してテストを行っていました。実際にじゃんけんをしていると、判定が「負けしか」出ていないことに気づきました。
選択した手とコンピューターの手では絶対に勝っているのに判定は「負け」、、、この時の絶望感は大きいものでした。自分の手で作ったものが動くこと・逆に正常に動かないといったものに慣れていない頃だったので、ちょっとのエラーや正常な挙動に一喜一憂しておりました。
【絶望】何回やっても「負け」判定
何度試しても「負け」の判定は治らないので、コードを見てどこが間違っているのか考えてみました。
勝敗判定を行っているのは、条件分岐であるのでif文が間違っているのではないかと目星を付け注意深く見てみると、完全にif文の記述が間違っていたことに気が付きました。
というのも、今回じゃんけんゲームを作る際に、手を「グー、チョキ、パー」という文字列ではなく、「1,2,3」という風に数字で管理していました。
そうするとif文の中で、「<・>・=」を使用し勝敗判定をすることができます。その使い方を間違えてしまい「負け」になる確率が高くなってしまったのです。
そして、正しいif文に修正を行い再度試してみると、何度やっても正しい勝敗判定をしてくれました。
【完遂】じゃんけんゲーム開発で学んだこと
そんなこんなあり、じゃんけんゲームを完成させることができました。配列の仕組み・条件分岐など、プログラミングの基本的なことを学べたと同時に、エラーとの向き合い方・プログラミングは泥臭さが大事であることを学びました。
今回のように単純なプログラムではエラーの解消は比較的簡単ではありますが、複雑な作りになっているwebサービスでそう簡単にいきません。
エラー解消や地道にログを確認するなどの泥臭さは、エンジニアに必要な要素の一つだと考えます。
今では、エラーが起きても焦らず、ログを確認して修正することができています。
そして何より、自分の手で作ったものが実際に動くことにとても感動しました。その気持ちを今でも忘れておらず、小さなことでもサービスに反映されたときはうれしいし、やりがいを感じています。
【まとめ】
今回は「じゃんけんゲーム」をテーマにお話しさせていただきました。
僕のように未経験でエンジニアを目指している人も読んでくれているかもしれませんが、プログラミングは一見するとスマートに見えるものです。しかし実際には、泥臭さくコードやログと向き合うことが多いです。
ただ、その先にあるやりがいは大きいなものがあると思います。特に自社でサービスを開発していれば、直に自分の行った開発の効果や課題を肌で感じることができ、やりがいを感じられると思います。
SHOPLISTに4月に入社してから、新卒でエンジニアになるという貴重な経験をさせてもらえていますが、まだまだ未熟なエンジニアであることを日々感じています。
ただ、この経験を無駄にせず、地道に学んでいき、スーパーエンジニアになれるよう精進していきたいと思います。
これからエンジニアを目指す方、僕と同じような駆け出しエンジニアの皆さんに、「自分と同じように頑張っている人間がいるんだ」というささやかな心の支えや学びの共有ができればと思います!
最後に、、、
じゃんけんゲームを完成させることができたあの頃の自分は、次なる開発でまた絶望することをまだ知らないようです、、、
この話はまたの別の記事でできればと思います。
お楽しみに。