クイズアプリを作ってみよう

サンプルアプリの動作

問題を示し、選択肢から正解を選ばせる。用意した問題の数だけ出題・回答を繰り返す。正解の数を得点として計算し、終了時に総得点を示す。

そんな動作をするクイズアプリの例を示します。例題として、情報Ⅰに関係する問題を10問付けてみました。

アプリの動作

以下の画面で、アプリの動作を確認することができます。

アプリとソースコードのインポート

以下のボタンをクリックすると、Monaca Educationにプロジェクトをインポートできます。
Monaca Educationにインポートする(要ログイン)

ソースコードのポイント①「問題(問題文、回答の選択肢、正解)」の配列

このサンプルプログラムでは、クイズ問題の1問分に当たる「問題文、回答の選択肢、正解」を、JavaScriptのオブジェクトとして表現しています。そのオブジェクトを10個含む配列が、クイズの問題集になります。
該当部分は、プロジェクトのフォルダjsの中にある、JavaScriptファイルmain.jsの、2行目の最後から始まり、63行目の先頭で終わる、大カッコ[ ]で囲まれた、大きな枠です。


const quizData = [
...
];

ソースコードのポイント②「問題(問題文、回答の選択肢、正解)」オブジェクト

問題集を表す大カッコの枠の中には、中カッコ{ }で囲まれた要素が10個含まれています。なお、中カッコ{ }と{ }が並ぶ部分には、間にカンマ( , )が入り、要素間の区切りになっています。

JavaScriptプログラムの中では、いろいろな用途で中カッコが使われますが、この場合は、「オブジェクト」を作っています。

具体例として、同じくフォルダjsのJavaScriptファイルmain.jsの4行目から8行目を見てみましょう。


{
    question: "2進数で表される '1010' は10進数で何に相当しますか?",
    choices: ["10", "8", "12", "5"],
    answer: "10"
}

オブジェクトは、直訳すると「モノ(物)」です。

プログラム言語におけるオブジェクトとは

「人」という「モノ」に、「体重」や「身長」という要素があり、またそれぞれの要素には「70kg」とか「174cm」とかの値があるように、「モノ」には物を構成する要素と、その要素の値があります。

上のコードは、「クイズ問題」という1つの「物」に、「問題文(question)」、「選択肢(choices)」、「正解(answer)」という要素があり、それぞれに値があるということを実現しているのです。
なお、問題を構成する要素の1つ「選択肢(choices)」 の値は、配列(["10", "8", "12", "5"],)になっています。

問題文・選択肢・正解を書き換えて、自分のクイズアプリにしよう

Monaca Educationにインポートしたプロジェクトの、フォルダjsにあるJavaScriptファイルmain.jsを開きます。そして、JavaScriptファイルの冒頭部分のクイズ問題(問題文・選択肢・正解)を書き換えれば、自分のクイズアプリにすることができます。

画面のタイトル表示などを工夫すれば、より独自性のあるクイズアプリにすることもできます。

応用:正解の位置をシャッフルする

今回のプログラムでは、問題が出題される順番や、正解の位置は固定です(※何回やっても同じ問題が同じ順番で出題され、正解の位置も変わりません)。

乱数の仕組みを使うなどして、出題する順番や、正解の位置を変更すると、さらに気の利いたクイズアプリになります。

応用:問題をデータベースから取得する

今回はプロジェクトの中に直接クイズ問題を記述しました。この方法は簡単ですが、問題の追加や変更をしようとすると、アプリを(デバイス上で)再インストールしなければなりません。

あらかじめ、プログラムの外に用意したデータベースに問題を保存しておき、プログラムからデータベースにアクセスして取得するようにすると、問題の追加や変更が簡単になります。