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

タスク管理アプリ「引っ越しタスクチェッカー」

こんにちは、Move Checkerというタスク管理アプリを作りました。 すごくシンプルなアプリなんですが、実は裏側にはかなり深い試行錯誤が詰まっています。 このページでは、その開発の過程やこだわったポイント、地味に苦労したところ、そして楽しかった瞬間まで、まるっと紹介したいと思います。
アプリは下のバナーからアクセスできます。初めにログイン画面が表示されますが、新規ユーザー登録からユーザー名とパスワードを登録すると使用できるようになります。

どんなアプリ?

引っ越しタスクチェッカー は、ユーザーがログインして、タスクを追加・編集・削除できるようなPHPアプリです。
機能はこんな感じです:

  • ログイン認証(セッション管理)
  • タスクの一覧表示・追加・編集・削除(CRUD)
  • メールを使用したユーザー名再通知・パスワード再設定
  • 完了メッセージのフラッシュ表示
  • CSSで見やすい見た目を調整
  • 入力値のバリデーション

ぱっと見ると「よくあるやつ」なんですが、設計の中身がなかなか濃いです。

セキュリティを第一に考えた構成

「小規模でも、セキュリティは本番レベルにしたい」
そんな想いで、ファイル構成とアクセス制御にはかなりこだわりました。

  • public/ フォルダだけを外部に公開し、
    .env, db.php, auth.php など重要なファイルはすべてその外に置く
  • .htaccess によるフォルダ制限で、public 以外のアクセスはすべて拒否(403)
  • URLやCSSパスがズレないように <base href> を設定
  • フォームの action はすべて手作業でチェックして補正(ズレが起こりがち!)

実際、完成までに10回くらい「なんでCSSが効かない?」「actionがズレる!?」と苦戦しました😅

苦戦ポイントと乗り越えたところ

正直、今回一番難しかったのは「プログラミングそのもの」よりも「パスの管理」でした。

  • 相対パスと絶対パスの判定がズレる
  • <base href> がフォームの送信先にまで影響する(地味に落とし穴)
  • .htaccess の構文が“ifじゃないのにifっぽい”という混乱
  • 開発環境と本番環境で、パスの解釈が変わって壊れてしまう

そのたびに、目の前のエラーをじっくり追いかけて、直して、再テストして…
「やっと動いた!」という感動は、手間をかけたぶんだけ大きかったです。

最終的にこうなった!という成果

  • https://practice.asabori.com/p007/public にアクセスすれば、引っ越しタスクチェッカーがちゃんと動く
  • すべてのパス・リンク・フォームが明示的に設定済み
  • .envsrc/ などの重要なファイルは外部から完全に遮断
  • .htaccess が public 以外をしっかり守るように設計
  • 構成が Laravel 移行も意識した作りになっている

URLに /public が見えているのはちょっと気になるけれど、
それを隠すために構成を崩すより「見えたままでも、安全に動く形」で完成としました。
この辺は“等身大の選択”として、とても納得感のある落としどころだったと思います。

この開発で学んだこと

  • パス設計の奥深さ。一番難しいのはコードよりURLと階層の調整だった…!
  • .htaccess の動き方や mod_rewrite の書き方を体感できた
  • フォーム、POST先、セッション管理などがどう連動するかを整理できた
  • セキュリティは「遮断の設計」と「通すべきものを通す設計」の両方が大事

今後に向けて

次のステップは Laravel への移行。
Laravelではルーティングやセキュリティがもっと洗練されていて、今回悩んだ部分を自動で解決してくれるところもあります。

でも、今回のPHPアプリ開発で学んだ「自分で構成とルールを考えて、手を動かして整理した力」は、Laravelに進んでも絶対に活きると感じています。

最後に

ちょっとしたツールの裏にも、いろんな試行錯誤が詰まっています。
この引っ越しタスクチェッカーは「自分の力でアプリを完成させる」という経験として、すごく大きな一歩になりました。

まだまだ勉強中ですが、「小さくても丁寧に作る」って、開発者としてすごくいい練習になるなと思ってます。
今後も、こうやって一歩一歩、技術と設計の力を育てていけたらいいなと思ってます🌿

Uncategorized
potatomatoes167をフォローする
アサボリアンのBLOG

コメント

タイトルとURLをコピーしました