本システムは2019年度広瀬ゼミ夏合宿で使用したイントロクイズシステムです。1つの無線LANルータを用いてローカル環境で早押し式のイントロクイズをすることができます。研究のリサーチも含めたシステムであるため、可読性やセキュリティ面、その他プログラムに関する作り込みが甘い部分もありますので、ご了承ください。
本システムは以下のようなファイル構造になっています。(隠しファイルを除く)
IntroQuiz2019/ ├── Gemfile ├── Gemfile.lock ├── README.md ├── app.rb ├── db │ ├── README.md │ ├── account.db │ └── schema.sql ├── public │ ├── css │ │ ├── bootstrap-4.3.1 cssファイル(以下略) │ │ └── main.css │ ├── js │ │ ├── bootstrap-4.3.1 jsファイル(以下略) │ │ ├── client.js │ │ ├── controller.js │ │ ├── jquery-3.4.1.min.js │ │ ├── login.js │ │ ├── player.js │ │ └── viewer.js │ ├── jsSHA-2.3.1(以下略) │ ├── music │ │ ├── music_list.csv │ │ ├── 使用する音楽ファイル.mp3(以下略) │ │ └── README.md │ └── sound_effect │ ├── correct.mp3 │ ├── hayaoshi.mp3 │ ├── incorrect.mp3 │ └── question.mp3 └── views ├── controller.erb ├── error.erb ├── index.erb ├── login.erb ├── select.erb └── viewer.erb
開発環境は以下の通りです。
主にWebSocket通信を用いてリアルタイムに反映する早押しボタンを作成しています。
本システムを使用する上で以下のものを用意してください。なお、先頭に☆がついているものは必須で、その他は任意です。
本システムの設定方法を以下に記述します。
割と面倒なので覚悟してください。
サーバ用PCを用意し、ターミナル上で以下のコマンドを実行して本システムをクローンします。
% cd ~/ % git clone https://www.yatex.org/gitbucket/git/IntroQuiz2019/IntroQuiz2019.git % cd ~/IntroQuiz2019
Rubyで使用するライブラリ(以下gem)をターミナル上で以下のコマンドを実行し、インストールします。この時、gemコマンドが使用できるかどうかを確認し、使用できない場合はインストールしてください。また、gemのインストール時にエラーが出ていないかも確認してください。
% gem install bundler % bundle install --path vendor/bundle
この時点で一旦起動確認のために以下のコマンドでサーバを立ち上げます。
% bundle exec ruby app.rb
最後の行にListening on localhost:4567, CTRL+C to stop
と出てきたら、サーバが正常に立ち上がった証拠なので、 http://localhost:4567 にアクセスし、画面が表示されるか確認してください。
無線LANルータを準備します。インターネット環境はなくても大丈夫なので、無線LANルータをコンセントに刺すだけでいいです。
(任意)サーバ用PCの固定IPアドレスを設定します。これは使用する無線LANルータによって設定方法が異なるため、設定方法をインターネット等で調べてください。
/controller
をつけてアクセスしてください。ログイン設定の詳細は https://www.yatex.org/gitbucket/IntroQuiz2019/IntroQuiz2019/blob/master/db/README.md に記述したので、そちらを参照してください。body { text-align:center;font-family:helvetica
のようなものが表示されていると思います(たぶん)。上記の設定が全て完了し正常に動作することを確認したら、いよいよ本番環境を設定していきます。
まず、サーバ用PCを無線LANルータに接続します。この時インターネット環境は不要なので、無線LANルータにつながっていることのみを確認できればOKです。
無線LANルータに接続したら、以下のコマンドを実行し、IPアドレスをチェックします。なお、固定IPアドレスを設定した人はこの確認はなくても大丈夫です。
% ifconfig ...省略... en0: flags=xxx<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu xxxx options=xxxx<CHANNEL_IO> ether xx:xx:xx:xx:xx:xx inet 192.168.xxx.xxx netmask 0xxxxxxxxx broadcast xxx.xxx.xxx.xxx media: autoselect status: active ...省略...
何見たらいいかわからない人はとりあえずen0
のところのinet 192.168.xxx.xxx
のところを見ておけば大丈夫だと思います。
IPアドレスを確認したら、システムを以下のコマンドで実行します。ここで、-o
オプションをつけ、その後に確認したIPアドレスを入力します。また、-p
オプションをつけることでポート番号を指定することもできます。(デフォルトは4567)
% bundle exec ruby app.rb -o 192.168.xxx.xxx
最後の行にListening on 192.168.xxx.xxx:4567, CTRL+C to stop
(ポート番号を指定したなら4567のところが設定した番号)と出てきたら、サーバが正常に立ち上がった証拠なので、 http://192.168.xxx.xxx:4567 にアクセスし、画面が表示されるか確認してください。
画面を確認後、以下が正常に動作することを確認して設定完了です。
/controller
にアクセスし、ログインすることができる。設定が完了したら、参加者に以下の設定をしてもらいます。
基本的には問題ないと思いますが、思わぬ場所でエラーが起こる場合もありますので、その場合は最下部にある連絡先までご連絡ください。そしてそのエラーはなんとかしてください。
このシステムはかなり準備に労力が必要になるかと思いますので、事前に念入りに準備しておくことをお勧めします。
本システムは自由にダウンロード・使用・改変をしても構いません。また、本システムを参考にし、別プログラムを作成しても構いません。ただし、本システムをほぼほぼ丸ごとコピーし、あたかも自分が作ったようにして公開することを一切禁じます。一生懸命作ったプログラムなので、そんなことをされると気分が悪くなるのでやめてください。
本システムを使用・改変した際に発生したいかなる事象にも一切責任を負いませんのでご了承ください。というか、なるべく自分でなんとかしてください。
本システムを使用する際には一言でもいいので、作者の名前を出してくれると大変嬉しいです。とっても気分が良くなりますし、今後の励みになります。
その他、不明な点、改善案などありましたら、作者の宛先までご連絡ください。
東北公益文科大学 16期生
C116092A 佐藤文哉 (☆フミちゃん☆)
Email: c116092@h.koeki-u.ac.jp
s4: ☆フミちゃん☆ (https://www.yatex.org/s4/index.cgi?home+150)