はじめに
ゆる〜く学ぶ。みんなのWeb勉強コミュニティー。 「にゅ〜ぶる会」を運用中です。
https://newburu.github.io/
そこで、何か教育用のコンテンツが欲しいなぁ〜と思い立ち、今回の企画をスタートしました!
Railsで基本情報技術者試験の過去問題サイトを作ります!
最終目標
- 問題・回答の登録は、Scaffoldで簡易でOK
- APIを用意して、ランダムに問題を抽出する機能を追加する
- TwitterBOT、LINEBOT、SlackBOTが出来たら良いな
履歴
1:構築編
本ページ
2:日本語化(i18n)編
https://qiita.com/newburu/items/4f12fdb61bf6cd601545
3:親子関係、登録編
https://qiita.com/newburu/items/f2a20289be5ec1fc1b77
4:親子関係、参照編
https://qiita.com/newburu/items/51b11bd02691efc2cc0d
5:API編
https://qiita.com/newburu/items/89f9f847a2648bdd006c
6:SlackBOT編
https://qiita.com/newburu/items/aeeb9acb453da786bd59
7:Herokuデプロイ〜自動化編
https://qiita.com/newburu/items/0a8bb02e1e8c8fe737c7
今回やる事
- DBを作る
- 問題用のマスタ登録画面を作る
- 回答用のマスタ登録画面を作る
モデル(DB)を考える
RailsでWebサイトを作るので、最初はまず、モデル(DB)の構成を考えましょう。
問題を表示するサイトなので、必要なモデルは以下の通り。
問題用モデル(Questions)
名前 | 物理名 | 型 | 備考 |
---|---|---|---|
カテゴリ1 | category1 | 文字列(string) | 何年度か? |
カテゴリ2 | category2 | 文字列(string) | 春か秋か? |
カテゴリ3 | category3 | 文字列(string) | 何問目か? |
問題文 | msg | 文字列(text) | 問題文を登録 |
※他試験の過去問も登録出来るように、「カテゴリ」という分類で分けることにします。 |
カテゴリ1〜3という変な構成になってしまっていますが…
IPAの過去問利用規約に則り、出典を記載する必要があるため、この様な構成になっています。
ご理解ください。
回答用モデル(Answers)
名前 | 物理名 | 型 | 備考 |
---|---|---|---|
問題ID | question_id | 参照 | どの問題の回答かを紐付ける |
回答 | msg | 文字列(string) | 回答を登録 |
正誤フラグ | correct | YES/NO(boolean) | 正解の場合はtrue(1) |
では、作っていきましょう
rails newを使って、アプリケーションを作成します。
※アプリケーション名は、「quiz」とします。
rails new quiz -d mysql
※MySQL派なので、DBを指定していますが、自由に変更してください。
ただし、本稿ではMySQLを使って説明していきます。ご了承下さい。
次に、DBを作成
$ rake db:create
Created database 'quiz_development'
Created database 'quiz_test'
ここまでは、いつも通りですね。
ブラウザで動くか確認
$ rails s
Slimを適用する
開発を効率よくするために、テンプレートエンジンをerbからslimに変更します。
※erbのままが良い人や、Haml派の方は飛ばして頂ければ構いません。
ただし、本稿ではslimを使って説明していきます。ご了承下さい。
Gemfileに追記して、bundle install
gem 'slim-rails'
$ bundle install
デフォルトのテンプレートエンジンをslimに変更します。
class Application < Rails::Application
config.generators.template_engine = :slim
end
Scaffoldで骨組みを作ってしまいましょう
Scaffoldを使って、サクッと作ってしまいましょう!
例) rails g[enerate] scaffold モデル名 カラム名1:データ型1 カラム名2:データ型2 …
$ rails g scaffold Question category1:string category2:string category3:string msg:text
$ rails g scaffold Answer question:references msg:text correct:boolean
$ rake db:migrate
では、確認します
$ rails s
起動させて、http://localhost:3000/questions/ にアクセスします。
今回はここまで
ありがとうございました!
次回は、日本語化(i18n)していこうかな。