【ISSUE】何故コンピュータサイエンスが大切なのか?

0

2024年12月23日 22:38

はじめに

こんにちはばーんです!

  • 基礎は大切
  • 自分の性格的にも内部構造を理解しないまま進めない

(進みたくない)

といった理由でコンピュータサイエンスの学習をしていたのですが、今回もっと具体的に「何故必要か?」がわかった出来事があったので、つらつら書いていきます。

よく見る風景 その1

初学者がエラーを遭遇した時に

  • 上部の事象で判断してエラーを読まない
  • エラーをgoogle先生に打ち込んで直接解決策を調べる
  • 自身の少ない経験から仮説を立ててtry!(おまじない)

この辺りをよくやると思うんですよね(実体験)

で、なんでこれやっちゃうのかな?と考えました。

  • 論理的に物事を考えられないから?
  • 基礎の重要性を学んでいないから?

色々考えましたが答えが出ないので、
「本業(パチンコ屋さん)なら上手くエラー対応できるのになぁ…」と自分自身に置き換えて考えていました。

で、何故本業は適切に対応できて、エンジニアリングになると途端にできなくなるのか?を自身の経験を元に深掘りしてました。

※補足

僕は現在パチンコ業界で働いています。約8年間。この後パチンコでの例えもでてきます。
あまりご存じない方は専門的な部分は飛ばすか読み替えて頂けると幸いですm_ _m

(ばーんが)よく見る風景 その2

実はパチンコ台って結構壊れます。よくエラーがでます。
そして、自分は8年間働いている + 知的好奇心からパチンコ台の仕組みを殆ど理解できています。
なので、エラーが出た際も「原因が何か?」を見つけて早く&適切に対応できます。

しかし、入社したばかりの方に多いのが、エラーに遭遇すると

  • 「とりあえずこれやれば直ること多いよ!」と言われたことを原因も分からずtry!
  • 上部の事象のみで判断(ユーザーと同じ視点)

といった対応が多いです。自分も入社直後はやったことあります。
これもう少し具体的な例をあげてみます。

下記文章はパチンコをあまりご存じない場合は、専門的な部分は飛ばすか読み替えて頂けると幸いですm_ _m

具体例

エラーケース「パチンコで玉が飛ばない場合」

  1. パチンコを打っていたお客様から「玉が飛ばない」とクレームが入る
  2. 駆けつけた新人が「玉が飛ばない時はこれ」を試す
  3. 直らない
  4. 助けを求める

そして、この時の助けを求める内容(報告)は、「玉が飛びません」みたいな内容が多いです。
(適切な報告ではない。ユーザーと同じ視点)

で、この事例の正しい対応はまず原因を特定することです。
というよりエラーへの対応方法の99%はこの(↑)手順が正しいです。

そもそも玉が飛ぶ仕組みは、

  1. 設備からパチンコ台に玉が供給される
  2. パチンコ台がユーザーの操作を受けて「玉を払い出す」という信号を上げる
  3. 玉が実際に払い出される
  4. 玉が上皿からレールを伝い整流器(カセット)にセットされる
  5. ハンドルが一定以上の角度で回される & 静電気を感知した時に信号を送る
  6. 信号を受け取った基盤がハンマーと整流器に一定のリズムの信号を送る
  7. [6]が連動して発射台に玉がセットされる
  8. ハンマーがセットされた玉に当たり、発射される
  9. ハンドルの角度によりハンマーの強さが変わるので、狙った場所に玉が飛ぶ

とユーザーからすると

  1. 玉をセットする
  2. ハンドルを回す

と2つの動作で動いているように見えますが、中ではこれほど細かく動いています。
(もう少し細分化できますが逸れるので省略します)

正しい対応方法

今回の「玉が飛ばない」エラーの正しい対応方法は、原因を特定しその原因を取り除くことです。

  • 玉がカセットまで届いているか?
  • カセットは正常に動いているか?
  • ハンドルが回っているか?
  • ハンマーは動いているか?
  • 静電気を感知しているか? etc...

といったことを確認していかなければいけません。
そして、原因を特定するには仕組みを把握していないとまずできません。

改めて考えてみる

僕自身あまりよろしくないとされる、いわゆる「おまじない」をしてしまいます。

では、基礎の重要性を知らないのか?というと、新しく入社した方に
**「仕組みを理解してください」**と口酸っぱく言い続けてます。

応急処置としてその場その場のエラーを教えることもありますが、後で必ず仕組みの説明をします。

  • エラーの数や種類は星の数ほどあるので、個別のエラー対応を覚えなくても根本的な仕組みを理解できれば対応できる
  • 正しく対応できる(上記の例であれば静電気を感知していないのに、玉が届いていない時の対応をしていても一生エラーは直せない)
  • 結果として早くエラー対応ができる
  • 基礎を知ることで例外的な頻度の少ないエラーにも対応できる

こういった理由で仕組みについて説明しています。

何が言いたかったのかというと…

大抵の人は新しいパラダイムに挑戦するとおまじないをしてしまう

これは別に本人に悪気があるわけでもなく、論理的に考えられないわけでもなく、基礎の重要性を理解していないわけでもない。

僕自身の体験談でもそうですし、新入社員を30名ほど見てきた中でも同じような傾向があるなと感じます。

まとめ

  • まず、仕組みを理解する

    • 仕組みを理解して初めて原因を追求できます。
    • ただし、仕組みの理解は机上だけでは理解し難いもの。実務を絡めて進めるのが良いと思います。
  • 仕組みを理解すると、様々なメリットが得られる(↓)

    • エラーの数や種類は星の数ほどあるので、個別のエラー対応を覚えなくても根本的な仕組みを理解できれば対応できる
    • 正しく対応できる
    • 結果として早くエラー対応ができる
    • 基礎を知ることで例外的な頻度の少ないエラーにも対応できる

そして、エンジニアリングではこの仕組みの部分がコンピュータサイエンスに当たるので、理解を深めていく必要がある

さいごに

こうやって振り返ると僕自身「まずは動くものを作ろう」のフェーズが長すぎたように感じます。

最初は「まず動くもの」で良いと思います。ただ、時間配分などのバランスは考えないといけないし、明らかに基礎を疎かにしていたなと反省してますorz

なので今後は Git / SQL / Linux / C言語 辺りを学んでいく予定です^^

最後まで見ていただいてありがとうございましたm_ _m
[cv:issue_marketplace_engineer]

0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。