スラスラわかるPHP 第2版
志田 仁美
翔泳社
2021-06-21


ブログ更新しなかったからといってサボっていたわけじゃないです。1日1章ずつ進めているからコードを書くところがない日はPCの電源もつけないので、ブログを書くのもおっくうになるというわけで……

今日は連想配列っていうのをやった。これはたぶんはてなブックマークでやっている投稿に投稿がぶら下がっているやつをこれでやるんだなって連想がついた。GPTちゃんに聞いたら「そうやで」って答え。実際的にはどうするのって見せてもらったら知らない単語が出てきて(まだ習ってないやつ……!)ってなったけど半分は解読できた。

最近はプログラミングとかソフトウェア業界の本を読んでいる。マイクロソフトで働いている人の本にプログラマーには4つのスキル段階があると書いてあった。うろおぼえだがこんな感じだ。

L1 何も見ずに書ける
L2 ググりながら書ける
L3 インスピレーションが降ってきたら書ける
L4 自分には書けない

小説にも通じる概念だ。2025年ならL2がAIを使いながら書ける、になっているだろう。

スキルアップというとL4の部分を失くしていくってイメージされがちだけど、その人いわくL1の領域を増やせばL2の領域が狭くなって、L3の領域にかける時間が増える。L3ができるようになったらL4にも、みたいなことを言っていた。

なんだ、プログラミングも小説と変わらないのだなと感心した。ならば、ここは基礎固めだということで今まで習ったことを復習するためにGPTちゃんに練習問題を出してもらった。

echo
for
while
array
四則演算
論理演算子
if
switch
do-while

これらを使った問題を出してって言って、出てきたのがこれ。

1各生徒の名前と点数を出力(echo, for)
2合計点・平均点の計算(四則演算)
3平均点が60点以上なら「クラス合格」、未満なら「クラス不合格」(if)
4各生徒の点数に対してランクを出力(switch)
  A(90点以上)、B(70-89)、C(50-69)、D(〜49)
  「60点以上かつBランク以上」の生徒の人数をカウント(論理演算)
5上記をdo-while文を使ってもう一度ループで出力(挑戦課題)

え、本気で言ってる?

まず何が書いてあるのかを理解するのに10分ぐらいかかった。最近はエラーも出さなくなったしGPTちゃんもヨイショしてくれるし(これもしかして才能あるんじゃないか?)って思い始めたら急にレベル感が上がった。

スライムナイトを倒して、てつのけんを手に入れて、メラミとかも使えるようになって、そろそろゲームが面白くなってきたな~なんて思っていたら急にずしおうまるが出てきて開幕さみだれけんをはなってきたみたいな衝撃。負けイベかな?

「とりあえず生徒の名前と点数のデータがないと、この問題解けないよね? それも自分で作るの?」 ってGPTちゃんに聞いたら「ほな、これで作るんやで」って10人分のデータを渡されてプログラミングスタート。

ちなみに投げられたデータはこんな感じ。もし良かったら解いてみてね。

<?php
$students = array(
  array("name" => "はるき", "score" => 85),
  array("name" => "かおる", "score" => 92),
  array("name" => "ひでと", "score" => 47),
  array("name" => "ゆきこ", "score" => 60),
  array("name" => "ゆか",   "score" => 78),
  array("name" => "まなみ", "score" => 99),
  array("name" => "たかし", "score" => 34),
  array("name" => "けんじ", "score" => 88),
  array("name" => "みちる", "score" => 50),
  array("name" => "さとる", "score" => 73)
);
?>

一気に全部やるんじゃなくて1問ずつ解いていく。

ぽちぽち文字を打ちながら、ああ、駄目だ、これもダメだと試行錯誤しながら3時間近くもやっていた。

やってる途中で(これカルネージハートに似てるな)って思う。カルネージハートはプログラミングじゃなくてチップを組んでロボットを動かすゲームだ。PSVitaが壊れるほどやった。なるほどなぁ、プログラミングに仕事じゃなくて趣味でハマる人がいるのも分かってきた。月影(通称:カエル)がガショーン……ガショーン……とジャンプする後ろ姿を見守っている時の思い出がよみがえる。

いや~まだまだだな。世のプログラマーの人たちならあんな問題10分で解けてしまうのだろう。その域にいけるとは思えないが、せめてその半分くらいはできるようになりたいなぁ。

(おわり)

追記:問題1をやり直してみたら10分でできた。ただし3回間違えた。でも問題が変わったら無理かもしれない笑 ちなみにこんな感じで書いた。
<?php
{echo "生徒の名前と点数"."<br>";}
for($i = 0; $i < count($students); $i++){
    echo $students[$i]["name"]."さんの点数は".$students[$i]["score"]."です<br>";
}
?>