はじめてプログラミングの授業を受けた後に書いたしょーもないプログラムを振り返ります。
当時の思い出とともに見ていきましょう。
Table of Contents
最近話題になってますね
未経験からのソフトウェアエンジニアになろう系。
まぁ、結論から言えば程度の差こそあれ、誰だってやってけます。
こんなしょぼしょぼ人間ができるような仕事です。(できているのかはさておき、お金はいただいているので)そんなもんです。
ただ、実際の就職はバイアスがかかったりしてチャンスに恵まれないことも多々あるかと思います。自分も大学の専攻がまったくコンピューターサイエンスを掠ってもいなかったのでつらいこともありました。
これはそんな私がとりあえず何かプログラミングをはじめて、そのポートフォリオを全く活かさないで就活した軌跡が詰まったのが今回ご紹介するプログラムだったりします。
他学部聴講でC演習を受ける
思えばこれが最初です。自分みたいな陰キャが営業職なんてできない、ましてや金融ソルジャーもできないなぁと思い、一発逆転を狙って飛び込んだのがこの世界でした。
Cの先生は優しかったです。コンピューターサイエンスを何1つしらない私にも色々わかりやすく教えてくれました。
その先生が言ったことが私の人生を変えました。
授業にまじめに来てくれててこんなこと言うのも心苦しいんだが今時、**Cなんかできてもねぇ。。隣でやってるRuby演習でも受けなよ~
衝撃でした。
その後、「プログラミング 求人」のキーワードでググったら確かにRubyが出てくるではありませんか。
ただ、悲しいかな。Rubyの授業は別の授業とかぶってたため、諦めました。
代わりに自分でRubyをお勉強しようかと思ったのですが、JavaScriptのほうが手軽でいいよーと理系のお友達に言われたのでJavaScriptをお勉強することに。
権威に弱いのです。
学籍番号に妙に執着する
今考えれば謎なんですが、大学の学籍番号の**CD(Check Digit)**の法則を知りたくなってた時期がありました。
お友達の代わりに授業に出てあげてたとき(代行というあれです。)に、出席カードが配られてそこに学籍番号は覚えていたのですがCDが思い出せず、てきとーに書いた、という苦い記憶がありました。
そんなことしなくていいから
CDという値がエラー検知、エラー訂正に使う値という知識くらいはありましたので、この法則が知りたくなったわけです。
お友達からあらかじめ学籍番号を教えてもらっていたため、バイトの合間、頭で色々考えてとある法則を見つけるにいたりました。
法則
学籍番号はこんな感じです。(当時は)
1A11B002 (架空の番号です)
1Aは学部, 11は入学年度(2011年), Bはわからん, 016は学科の名簿順っぽいです。
まずはA~Fまでの文字を数字に置換します。
文字 | 置換後数字 |
---|---|
A | 1 |
B | 2 |
C | 3 |
D | 4 |
E | 5 |
F | 6 |
まんまですね。
こんな感じになります。
11112002
その次に、
最左の1桁、左から3桁目を除いた6桁の各桁に桁数をかけて足しこんでいきます。
(学部の数的に1A~1Fで学部を表現できる&大学に10年以上いないだろうということでCD上不要な桁を取っているわけです。多分。)
つまり最左桁を抜いたので、2桁目から足し算しますが、こちら2桁目として掛け算します。
1×2 + 1×3 + 2×4 + 0×5 + 0×6 + 2×7 = 27
CD値は1桁なので11で割ったあまりを出します。よくやるテクニックですね。
27 ÷ 11 = 2あまり 5
よっしゃ!5や!と思ったら残念。これの11の補数みたいなものを取ります。
11 - 5 = 6
そうです。 6がCDとなります。
こんなのどうやってわかるんだよーって思うのですが、当然自力で解ききれませんでした。
理系のお友達に手伝ってもらったのをよく覚えてます。
はじめてのプログラミングはこれをJavaScriptで書いたよ
ゴミですが、この法則を世に広めたくて当時こんなものを作ってました。21歳!JavaScriptで!👊
今考えたらゴミくそなんですが、未経験で書いたんです!!許してください!!なんでもしますから!!
あまりにゴミだったのでコメントで赤ペンしてます。
<html>
<head>
<meta charset="utf-8" />
<title>早稲田CD計算機</title>
<script>
function calcCd(input_check_digit){
var input_cd = input_check_digit;
//キャメルケースとスネークケースが混在。ムカつく
var split_cd = input_cd.split(""); //桁をsplitで分割したのはよくできました
var answer;
answer = 11-(split_cd[1]*2+split_cd[3]*3+split_cd[4]*4+split_cd[5]*5+split_cd[6]*6+split_cd[7]*7)%11
return answer;
}
function replaceSn(inputN){
//関数名が意味不明(Snってシリアルナンバー?)
var input_check_digit = inputN
after_cd = input_check_digit.replace("A","1");
//頭悪い実装・・。まぁ愚直ですね
after_cd = after_cd.replace("B","2");
after_cd = after_cd.replace("C", "3");
after_cd = after_cd.replace("D", "4");
after_cd = after_cd.replace("E", "5");
after_cd = after_cd.replace("F", "6");
return after_cd;
}
function goAnswer(){
var input_check_digit = document.getElementById("input_check_digit").value;
var regex = /^[A-Z0-9]{8}$/;
//未経験にしては優秀。ちゃんとバリデートしている。が、中途半端。
if(!regex.test(input_check_digit)){
alert("学籍番号入れてね");
document.getElementById("input_check_digit").value = "";
}
document.getElementById("answer").value = calcCd(replaceSn(input_check_digit));
}
</script>
</head>
<body>
学籍番号を入力してね 例:1A11A001<br>
<input id="input_check_digit" type="text" />
<input id="calc_cd" type="button" value="計算!" onClick="goAnswer()"/><br>
答え<br>
<input id="answer" type="text" />
</body>
</html>
あまりにもしょぼいのでこの記事を書くにあたってGitHub Pagesにしちゃいました。
結論
結局このプログラミングは何も役に立たなかったのですが、この業界に進もうという覚悟の現れがあふれた瞬間でした。
図書館でMac片手に色々調べながら動くものができた快感を今でも覚えてます。
その後はプログラミングよりはLinuxとかネットワークに興味を持っていくことになるので、就活も全くプログラマー的な感じでは進まなかったです。結局。
今こうして、プログラミングもする仕事をしているのですが、昔書いたソースを見てとりあえず何かを作ることの大切さを改めて思い出しました。