1年だけ専門学校に通ってプログラマの勉強をしていました。
元々デザイン科でウェブデザインの勉強をしていたのですが、プラスアルファで必要だなと感じてシステム科に入学したというわけです。
PCは自作するぐらいには知識があったのですが、色々面白い体験ができました。
その中の一つが基本情報技術者試験対策の座学の授業。
前期の講師が、おそらく会社を経営されている方だと思うのですが、なかなか厳しかった記憶があります。
私は大卒向け学科だったのですが、合同で受けている生徒たちは高卒が多いのでそうなったのかもしれません。
とにかく教科書の使い方まで指定され、書き込むなと言われました。
理由を言うのですが、いやいや勉強の仕方はそれぞれやろとか心の中で思っていたんですね。
最初の授業。
おもむろに入ってくると自己紹介もなく、真っ白なコピー用紙を全員に配り始めました。
すると黒板だったか口頭だったか忘れましたが、問題を出して、答えをコピー用紙に書かせるのです。
そして、できた者から採点すると並ばせて、採点。
なんのことやら。
そういうのをだいたい毎回やるんです。
例えば、2の2乗、2の3乗、2の4乗・・・2の16乗・・・2の24乗・・・2の32乗というのは、何回も出されました。
2のべき乗は重要な指数のものは暗記させられました。
間違えるたびに「いつまで間違えてんねん」と言われたものです。
これになんの意味があるのかと思うこともたくさんありました。
後期、その講師の授業を受けていた人に聞いてみると、講師曰く「こんなの覚えていても役に立つことなんかない。お前らプログラマになるんやろ。覚えんねん。」とかなんとか。
そして、合格点を取ったものは立たされるのだと言います。
これを スーパーメンタルアタック というらしく、勝者が敗者を見下すということらしいです。(又聞きなので本当かどうかはわかりません)
今ならアウトでしょうが、社会に出ればそういうこともいっぱいあるでしょう。
それから就職して、数年経ったとき思いもよらないところで、この2のべき乗が役に立つときが来ます。
ソーシャルゲーム案件で、会社独自の通信ライブラリを使って開発しているときに、システム全体で一意になるように採番していたユーザーアイテムのIDが20億に届きそうだったのです。
当時の通信ライブラリは、整数型は32ビット、つまり2の32乗通りしか表現できませんでした。
2の32乗、今でも言うことができます。
4,294,967,296(42億9496万7296)
通信ライブラリは符号付き32ビットでやり取りするので、単純に2分の1した21億が限界であることがすぐにわかりました。
幸いなことに、IDの発行具合を調べてみると1ヶ月ぐらいはまだ余裕があったと思います。
DBテーブルはBIGINT型(64ビット)にしていたので問題はなかったのですが、APIでやり取りされる数値は約21億に達するとオーバーフローするので、正しくデータが取得、更新できなくなります。大問題です。
ただライブラリが64ビット整数に対応していなかったので、仕方なく文字列型としてやり取りすることで解決しました。
たしかデータ集計などをしていて気づいたのですが、21億でアウトと説明できたのも当時の開発メンバーの中では自分ぐらいだったかもしれません。
いうてもエンジニア出身者も多かったので、すぐに理解はしてくれましたが。
2の32乗は覚えておくべきか。
私は覚えていて、命拾いをしました。
流石に2の64乗とか、128乗はとてつもない数字というぐらいの認識しかありませんが、0~10、16、24、32乗の大まかな数字は覚えておくといいかもです。
ほら、SSDの容量とかも128GBとか256GBとか512GBとかあるし。
このお仕事の話はもう10年経つのかな。
学校の話は15年以上前か。
エンジニアは特定の数字を覚えておいたほうがいいと思った話でした。
先生、役に立っているよ。現在進行形でも。
ちなみに基本情報はしっかり落としました。
でも一応エンジニアやれています。
ちなみに講師の先生は授業外でもかなりの話しかけがたい人なのですが、すごくいい方でした。
「自分の会社持つんやったら、1日8時間仕事して、朝や夜の8時間でそれにパワー使う。でも残業とかあるから休日に取り返すんや」とか。
あれも仕事の一部と思えば・・・ですね。