あーさーの備忘録

ゆっくり自由に生きてます

「ぶらつき学生ポータル」を作った

ぶらつき学生ポータル完成

前クール覇権アニメDYNAMIC CHORDの原作ゲーム(闇が深い)のプレイで鬱加速中のあーさーです。この世界の高校生闇が深すぎる。

某サークルを引退して暇になったので、先月下旬から「ぶらつき学生ポータル」の開発をしていました。これは、アグリコラというボードゲームのプレイ記録をまとめるためのサイトです。あまりに暇すぎて、作り始めてから1ヶ月経たずに完成してしまいました。とはいえ、フロントエンドからバックエンドまで1人で書いて、さらにサーバーも1人で立ててという感じだったので、チーム制作に慣れた身体にはしんどいものがありました。フロント書ける人ってすごい。僕はフロントの知識が乏しいので、CSSフレームワークに頼りました。

完成したサイトがこちら。

トップページ - ぶらつき学生ポータル

一応開発環境というか言語は下の通り。

  • Language: PHP 7.1
  • PHP Framework: FuelPHP 1.8.0
  • CSS Framework: Materialize 0.100.2

ぶらつき学生ポータルの機能

このサイトの機能は以下の通りです。

ユーザ登録・認証

誰でも編集できるようにするのもアレなので認証を導入しました。僕がユーザに登録用のURLと合言葉を教え、合言葉を入力することでユーザ登録ができるようにしました。認証はFuelPHPのAuthパッケージを使用しています。ログインするとマイページからプロフィールの編集やスコアの入力などができるようになっています。

スコア入力・表示

ゲームをプレイする前に、代表者がプレイヤーのIDやレギュレーションなどを入力します。すると、各プレイヤーのマイページ画面からスコア入力画面に飛ぶことができるようになります。アグリコラのスコア計算アプリとこのサイトに2回スコアを入力するのは面倒なので、各カテゴリーの点数を入力してボタンを押すと合計点を計算するようにしました。スコア入力だけでなく、盤面の画像をアップロードしたり、コメントを入力したりできます。入力したスコアは記事として公開されます。

使用したカードの効果を表示

スコア入力時に使用したカードの番号を入力することで、スコア表示ページでそのカードの番号だけでなく名前や効果まで見ることができるようにしました。アグリコラには様々な拡張が用意されていて、我々は基本的にそれらをすべて混ぜて使用しています。拡張のほとんどは日本語版が出ていないので、日本語訳する必要があるのですが、界隈によって表記ゆれや飜訳の違い、エラッタなどが存在します。そのため、私たちで使用している訳を載せつつ番号を載せることで界隈外の人にも伝わるようにしています。

ぶらつき学生ポータルの今後

とりあえずすぐに運用したかったので、最低限の機能だけ実装してさっさとdeployしてしまいました。でも、まだまだ追加できる機能はあります。各カードの詳細ページを作って、カード評価やエラッタ、活用法について議論できる場にしたら面白いなぁと思っています。ページを作ること自体は、URLからカード番号をパラメータに持ってきてそのカードのデータをDBから取得して…という感じなのですぐできそうです。評価欄やコメント欄を作るともう一手間二手間かかりますが。

また、プレイ回数が増えてきたら、スコアや順位、使われているカードなどで統計を取ることができます。拡張入りでもやっぱり4・5番手は弱いのかとか、この人は安定して良い点が取れているとかが分かります。有意な結果を得るためにはたくさんプレイしないとダメですが。そんなことよりダイナーやりたい

アグリコラには旧版と新版(リバイズドエディション)があって、リバイズドの方のデータはまだ入れていないのでまだ使えません。カード番号がバッティングすると嫌だなぁと思ったので保留しました。実際はCデッキ以外は被らなさそうですね。そもそもCも一般的にはCzデッキと呼ばれているそうですし、置き換えるだけです。

作った感想

やっぱりMaterializeは楽にモダンなサイト作れるのでいいですね。今回はなぜかドキュメント通りにマークアップしてもメニューがちゃんと動かなかったり(z-indexの数値がおかしい)、フォントを変えたかったりしたので一部書き換えましたが、CSS書かなくて済むのはかなり大きいです。

パフォーマンスのことはほとんど考えてません。PageSpeed Insightsで99点取ったって記事書いたのが嘘のようになにもしてないです。一応70点台だったけど。faviconすらFuelPHPのデフォルトの奴使ってるのはさすがにアレなので、気が向いたらスピードアップも含めてちょっとずつアプデしようかなと思います。PagenationもOFFSET使ってるのでデータ量が増えれば増えるほど遅くなります。頭が悪くてOFFSET使わないSQLの書き方が理解できませんでした。理解できないことを鵜呑みしてコピペするのは信条に反するので、理解できるようになることを祈るばかりです。アルゴリズムとか苦手なんですよね。完全に文系プログラマーやってます。

とりあえず、完成してよかった!企画倒れしなくてよかった!そんな自分への拍手を込めて新しい乙女ゲーを今日もポチるぞ。