この度、軽いWebサービスを独力で作成したので備忘録。
筆者のレベルとしては、アプリ、ゲームはUnityを用いて開発経験が7年くらい、Webは今年度からでそろそろ1年。
内容としてはカードゲームのとあるイベントで、戦績をつけておくためのもの。カジュアルなイベントなことと、そこでしか使わないこともあり、ログイン認証などはかなり緩めに作成した。
要件定義
今回のサービスで最初に定義した要件は以下。
1.ユーザーの登録ができること
2.個人で戦績をつけ、記録すること
3.他の人の戦績が混ざらないこと
4.戦績を振り返る事ができること
5.戦績のツイート機能をつけること
使用言語
PHP、HTML、Java Script
そんなに大変そうではなかったのと、時間が割とあったのもあり、勉強も兼ねてフレームワークは使用せず、テンプレートエンジンは自作。
開発環境
ローカル環境はXampp、本番環境はInfinityfreeというサーバーでドメインを取ってそこで実行。
https://dash.infinityfree.com/accounts
大枠を決めてなんとなくコードを書き、css部分やhtmlのおおまかな要素の配置の部分などのフロントエンドはchatGPTに大部分を任せ、バックエンドは全部自力で行った。
苦戦した部分
·ローカルから本番環境にアップすること
普段お仕事ではstg,dev環境へ上げるのはバッチが全てやってくれ、本番環境へは責任者にやっていただいているので裏でどのように動いているのか理解していなかった。自分であげるに当たって接続設定が難航した。
·ローカル環境ではなかった文字化けが本番で現れる
サーバーがイギリス(だったはず)のものだったので、漢字を入力した時に文字化けが起こった。データベースサーバーに接続する際に、charsetを正しく設定する必要があった。ローカルでは日本語が既に許可されていたので特に問題なく進んでいたが、他言語のサーバーをもちいる際には設定を確認する必要がある。
反省点
普段通りMVCによる設計を行ったが、そんなに大きなものでなかったので、むしろ構造が分かりにくくなった気がする。プロジェクトのサイズ感からどのような設計がふさわしいかは導き出せるようにしたい。
逆にCSSは分けなかったが、こちらは分けて別ファイルにしたほうが楽だったかもしれない。複数回CSS部分をコピペするはめになった。
テスト内容をもう少し詰めておくべきだった。今回はカジュアルイベントでの使用だったので、ログインの手間を簡略化するために名前入力でユーザー登録、ユーザー名プルダウン指定でログインという形をとったが、複数回登録して多重にユーザー登録されてしまうという問題が生じた。ただ、この形式でのログインの都合上、同名登録を弾くという形になり、ユーザーの中に同名の人がいた場合に困るので、処理を定義しておくべきだ。
上につながるが、設計段階をちゃんとする。ふだんはすでにあるものを作っていたので全然気にしていなかったが、0から作るとなると会いますな仕様のまま進めると工数があとから膨らみ、大変なことになる。勉強していきたい。
http://pokecaeventquickshooterer.wuaze.com/GLC_event/user/login/
実際のページ