Ruby
Rails
api
基本情報技術者試験

Railsで基本情報技術者試験の過去問題サイトを作る(1:構築編)


はじめに

ゆる〜く学ぶ。みんなのWeb勉強コミュニティー。 「にゅ〜ぶる会」を運用中です。

https://newburu.github.io/

そこで、何か教育用のコンテンツが欲しいなぁ〜と思い立ち、今回の企画をスタートしました!

Railsで基本情報技術者試験の過去問題サイトを作ります!


最終目標


  • 問題・回答の登録は、Scaffoldで簡易でOK

  • APIを用意して、ランダムに問題を抽出する機能を追加する

  • TwitterBOT、LINEBOT、SlackBOTが出来たら良いな


履歴

1:構築編

  本ページ

2:日本語化(i18n)編

  https://qiita.com/newburu/items/4f12fdb61bf6cd601545


今回やる事


  • DBを作る

  • 問題用のマスタ登録画面を作る

  • 回答用のマスタ登録画面を作る


モデル(DB)を考える

RailsでWebサイトを作るので、最初はまず、モデル(DB)の構成を考えましょう。

問題を表示するサイトなので、必要なモデルは以下の通り。

問題用モデル(Questions)

名前
物理名

備考

カテゴリ1
category1
文字列(string)
何年度か?

カテゴリ2
category2
文字列(string)
春か秋か?

カテゴリ3
category3
文字列(string)
何問目か?

問題文
msg
文字列(text)
問題文を登録

※他試験の過去問も登録出来るように、「カテゴリ」という分類で分けることにします。

カテゴリ1〜3という変な構成になってしまっていますが…

IPAの過去問利用規約に則り、出典を記載する必要があるため、この様な構成になっています。

ご理解ください。

IPA過去問利用規約

回答用モデル(Answers)

名前
物理名

備考

問題ID
question_id
参照
どの問題の回答かを紐付ける

回答
msg
文字列(string)
回答を登録

正誤フラグ
correct
YES/NO(boolean)
正解の場合はtrue(1)


では、作っていきましょう

rails newを使って、アプリケーションを作成します。

※アプリケーション名は、「quiz」とします。


rails-new

rails new quiz -d mysql


※MySQL派なので、DBを指定していますが、自由に変更してください。

 ただし、本稿ではMySQLを使って説明していきます。ご了承下さい。

次に、DBを作成


DBを作成

$ rake db:create

Created database 'quiz_development'
Created database 'quiz_test'

ここまでは、いつも通りですね。

ブラウザで動くか確認


rails-server

$ rails s


ご存知、次の画面が出ればOKです!

Rails起動画面


Slimを適用する

開発を効率よくするために、テンプレートエンジンをerbからslimに変更します。

※erbのままが良い人や、Haml派の方は飛ばして頂ければ構いません。

 ただし、本稿ではslimを使って説明していきます。ご了承下さい。

Gemfileに追記して、bundle install


./Gemfile

gem 'slim-rails'



bundle-install

$ bundle install


デフォルトのテンプレートエンジンをslimに変更します。


config/application.rb

class Application < Rails::Application

config.generators.template_engine = :slim
end


Scaffoldで骨組みを作ってしまいましょう

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


DB作成

$ rake db:migrate



では、確認します


rails-server

$ rails s


起動させて、http://localhost:3000/questions/ にアクセスします。

問題一覧画面はこんな感じに。

問題一覧画面

新規作成画面は、こんな感じですね。

問題新規作成画面


今回はここまで

ありがとうございました!

次回は、日本語化(i18n)していこうかな。