戦闘ゲームを作りました/プログラミング練習part6

戦闘ゲームを作成しました。パラメータはPOWERのみで、0になったら負け。負けるまでに何連勝できるかというシンプルなものです。倒した敵の数が多いほど、戦闘にかかった時間が短いほど、高得点になります。https://practice.asabori.com/p006/ 【ルール】attack reflect growthの3つから行動を選択します。attackは敵に攻撃します。与えるダメージは自分のpowerに依存します。reflectは敵の攻撃を反射します。与えるダメージは敵のpowerに依存します。growthは自分のpowerを増加させます。増加するpowerの量は自分のpowerに依存します。前のターンで選択した行動は選択できません。敵を倒したらすぐに次の敵が現れます。敵は少しずつ強くなります。

タスク管理アプリを作りました/プログラミング練習part7

タスク管理アプリ「引っ越しタスクチェッカー」 こんにちは、Move Checkerというタスク管理アプリを作りました。 すごくシンプルなアプリなんですが、実は裏側にはかなり深い試行錯誤が詰まっています。 このページでは、その開発の過程やこだわったポイント、地味に苦労したところ、そして楽しかった瞬間まで、まるっと紹介したいと思います。アプリは下のバナーからアクセスできます。初めにログイン画面が表示されますが、新規ユーザー登録からユーザー名とパスワードを登録すると使用できるようになります。 どんなアプリ? 引っ越しタスクチェッカー は、ユーザーがログインして、タスクを追加・編集・削除できるようなPHPアプリです。機能はこんな感じです: ぱっと見ると「よくあるやつ」なんですが、設計の中身がなかなか濃いです。 セキュリティを第一に考えた構成 「小規模でも、セキュリティは本番レベルにしたい」そんな想いで、ファイル構成とアクセス制御にはかなりこだわりました。 実際、完成までに10回くらい「なんでCSSが効かない?」「actionがズレる!?」と苦戦しました😅 苦戦ポイントと乗り越えたところ 正直、今回一番難しかったのは「プログラミングそのもの」よりも「パスの管理」でした。 そのたびに、目の前のエラーをじっくり追いかけて、直して、再テストして…「やっと動いた!」という感動は、手間をかけたぶんだけ大きかったです。 最終的にこうなった!という成果 URLに /public が見えているのはちょっと気になるけれど、それを隠すために構成を崩すより「見えたままでも、安全に動く形」で完成としました。この辺は“等身大の選択”として、とても納得感のある落としどころだったと思います。 この開発で学んだこと 今後に向けて 次のステップは Laravel への移行。Laravelではルーティングやセキュリティがもっと洗練されていて、今回悩んだ部分を自動で解決してくれるところもあります。 でも、今回のPHPアプリ開発で学んだ「自分で構成とルールを考えて、手を動かして整理した力」は、Laravelに進んでも絶対に活きると感じています。 最後に ちょっとしたツールの裏にも、いろんな試行錯誤が詰まっています。この引っ越しタスクチェッカーは「自分の力でアプリを完成させる」という経験として、すごく大きな一歩になりました。 まだまだ勉強中ですが、「小さくても丁寧に作る」って、開発者としてすごくいい練習になるなと思ってます。今後も、こうやって一歩一歩、技術と設計の力を育てていけたらいいなと思ってます🌿

【fetchってなんだ?】PHP×PDOの“1件ずつ処理”の極意 — 配列じゃない、「順番に取り出して処理する」という考え方 —

PHPでデータベースから情報を取り出すときによく使われる fetch() や fetchAll()。最初は「何が違うの?」「All ってつけないとどうなるの?」と疑問だったけれど、今日じっくり向き合って、ようやく自分の言葉で腑に落ちる感覚が得られたので記録しておきます。 ✅ fetchAll():まとめて全部テーブルに出す ✅ fetch():1件ずつ順番に受け取っていく 🎯 fetch という言葉に込められた意味 英語の fetch には「どこかへ行って、何かを取ってきて戻る」というニュアンスがある。 この言葉の感性って、なかなか日本語だけでは浮かびにくい。でも、その動作のイメージを持つことで「fetch の正体」がぐっと鮮明になる。 ✨ 今日の理解をひと言で fetch() は、実行済みのSQLステートメントに対して「結果をひとつずつ読み出す操作」。それは「データを配列にして持ってくる」というより、「次の資料を一枚ずつ請求する」感覚。そして $stmt は「SQL文の実行結果や状態を保持する概念」だと理解した。 🔚 おわりに 最初はなんとなく使ってた fetch() や fetchAll()。でも実は、「データの取り方の違い」がちゃんとあることがわかった。 fetch() は1件ずつもらうやり方。fetchAll() は全部まとめて受け取るやり方。 それがわかったので、これからは「どっち使うべきか?」考えられるようになった。 今後も「この関数ってどういうイメージなんだろう?」ってところから掘っていきたい。