Upgrade to Pro — share decks privately, control downloads, hide ads and more …

アシアル主催・オンラインキャンプ・クイズアプリを作ろう(90分)

 アシアル主催・オンラインキャンプ・クイズアプリを作ろう(90分)

More Decks by アシアル情報教育研究所

Transcript

  1. Copyright © Asial Corporation. All Rights Reserved. スケジュール スケジュール 1.

    はじめに(5分程度) 2. クラウドデータベース概要(15分程度) 3. 素材のデータベースとアプリ(25分程度) 4. 二択クイズアプリ(30分程度) 5. 質疑(15分) 2
  2. Copyright © Asial Corporation. All Rights Reserved. はじめに  データベースってどんなイメージですか?

    └ 便利 └ 不便 └ かんたん └ むずかしい └ 筒! └ データの基地 4
  3. Copyright © Asial Corporation. All Rights Reserved. はじめに  データベースとは?

    └ アプリやシステムなどで扱う『データ』を管理する仕組み(及びソフトウェア)  何処で使われているか? └ 銀行 └ 通販 └ その他、どこでも! 5
  4. Copyright © Asial Corporation. All Rights Reserved. はじめに  データベースとは?

    └ アプリやシステムなどで扱う『データ』を管理する仕組み(及びソフトウェア)  何処で使われているか? └ 銀行 └ 通販 └ その他、どこでも! 6
  5. Copyright © Asial Corporation. All Rights Reserved. はじめに  もしもデータベースがまともに機能していなかったら・・・

    └ 銀行の場合 └ 「預金、1万円しか預けていないのに10万円引き出せちゃった!」 └ 通販の場合 └ 「一点物の商品、注文できたと思ったら同時に買った人が居て、キャンセルされちゃった・・・」 7
  6. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  プログラムとデータの関係

    └ 基本的にプログラムの『変数』はコンピューターのメモリ上で一時的に保持されてお り、処理が終わったら消えてしまいます。 └ データを『一時的」ではなくずっと保存することを『永続的』と呼びます └ 永続的に保持する方法の一つとして『ファイル』に記録する方法があります。 9 ファイル プログラム 読み書き
  7. Copyright © Asial Corporation. All Rights Reserved. OS クラウドデータベースの概要 

    ファイルやフォルダの管理はOSの仕事の一つ └ 一般にパソコン上で動作するプログラムはOSを経由してファイルを読み書きできます └ OSはファイルやプログラムの実行を管理しています └ 例えばファイルに複数のプログラムが読み書きしても壊れないようにします 10 ファイル プログラム 読み書き プログラム 読み書き
  8. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  ファイルを利用したプログラミングの課題

    └ プログラムからファイルに自由に読み書きできるとは限りません └ 端末の設定や環境によります └ ネットワーク越しに複数の端末がデータを利用したいときの対応が困難です └ そこでクラウドデータベースを活用します 11 プログラム および アプリケーション 読み書き プログラム および アプリケーション 読み書き (クラウド) データベース
  9. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  Monaca

    Educationクラウドデータベースの特徴 └ クラウド └ NoSQL └ SQL風の文法 └ WebAPI経由での読み書き └ APIキーを即時発行 13
  10. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  クラウドでデータベースを管理

    └ 端末やOSの影響を受けずに読み書きできます └ Monacaおよびスマホアプリ以外からも利用可能です └ ブラウザ上からデータベースの中身を確認できます └ 簡単な修正も可能です └ インポートやエクスポートも可能です 14
  11. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  NoSQL

    └ 事前のテーブル設計は不要です └ 予め用意されている列に意味を持たせて利用します。 └ 以下の例はお小遣い帳の例です。 └ int0:カテゴリ、int1:金額、text0:名前、text1:画像(URL) 15 名前 画像 カテゴリ 金額
  12. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  SQL風の文法

    └ select/insert/update/delete文を実行できます。 16 操作 SQL文 クラウドデータベースのエンドポイント 選択 select https://db.monaca.education/select?apikey=[API_KEY] 挿入 insert https://db.monaca.education/insert?apikey=[API_KEY] 更新 update https://db.monaca.education/update?apikey=[API_KEY] 削除 delete https://db.monaca.education/delete?apikey=[API_KEY]
  13. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  SQL風の文法

    └ SQL文における選択、つまりWhere句による絞り込みのようなことを行えます。 17 絞り込み 文法 意味 例 一致 IN 一致するものだけで絞り込む。 複数指定可能。 int0In=1,2,3 あいまい検索 LIKE 指定した文字列を含むものだけ で絞り込む。 text0Like=もなか 以上 GE 比較演算子の:<= int0GE=100 より大きい GT 比較演算子の:< int0GT=100 以下 LE 比較演算子の:>= int0LE=100 より小さい LT 比較演算子の:> int0LT=100
  14. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  SQL風の文法

    └ SQLのように列の値の大小で並び替えを行ったり、取得件数の制限をしたり取得開始 位置を指定できます。 18 オプション 文法 意味 例 昇順ソート asc 小さい順で並び替え orderByInt0=asc 降順ソート desc 大きい順で並び替え orderByInt0=desc 上限 limit 取得件数を制限 limit=5 開始位置 offset 取得開始位置を指定 offset=5
  15. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  WebAPI経由で読み書き

    └ HTTPリクエストで読み書きを行います。単純なGETパラメーターだけで利用できます。 └ ブラウザから直接HTTPリクエストを発行しても操作できます。 19
  16. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  APIキーを即時発行

    └ 3種類のキーが自動的に発行されます └ マスターキー:読み書き全般を実行可能。漏洩すると危険。 └ 取得専用キー:読み書き専用。漏洩しても読み込みしかできない。 └ 追記専用キー:追記専用。漏洩しても読み込みや既存データの更新はできない。 20
  17. Copyright © Asial Corporation. All Rights Reserved. クラウドデータベースの概要  付録:クラウドデータベースの使い方(PDF)

    └ 流通書籍版のMonaca本に収録しています └ PDF版もサポートページにて公開しています └ https://edu.monaca.io/template/monaca 21
  18. Copyright © Asial Corporation. All Rights Reserved. 素材のデータベース  素材のデータベース

    └ 「クラウドデータベースの使い方」にて公開されている素材のデータベースです 23
  19. Copyright © Asial Corporation. All Rights Reserved. 素材のデータベース  素材のデータベースを活用したアプリの例

    └ 素材をランダムに一つ表示するアプリ └ このぐらいならば簡単に作成することができます 24
  20. Copyright © Asial Corporation. All Rights Reserved. 素材のデータベース  素材のデータベースを参照する方法

    └ 「参照用」のAPIキーが公開されております └ マスターキーは非公開です └ サンプルアプリもAPIキーを含めた状態で公開されております └ サポートページから入手してください 25
  21. Copyright © Asial Corporation. All Rights Reserved. 素材のデータベース  自分のプロジェクトとして素材のデータベースを利用するには?

    1. プロジェクトを作成する 2. プロジェクトのデータベースを作成する 3. データベースをインポートする 4. プロジェクトのAPIキーを自分のものに変更する 26
  22. Copyright © Asial Corporation. All Rights Reserved. 素材のデータベース  プロジェクトを作成する

    └ 今回は素材のサンプルアプリを元に作成します └ インポートすれば即座に動きます └ しかし著者のデータベースを参照しているだけです └ なので自身のデータベースを作成してキーを差し替えましょう └ CSVデータもダウンロードしておきましょう 27
  23. Copyright © Asial Corporation. All Rights Reserved. 素材のデータベース  プロジェクトのデータベースを作成する

    └ クラウドIDEメニュー「ツール>クラウドデータベース」を選択して下さい └ 「設定」からインポートを選択してデータを登録します └ 「取得専用キー」もコピーしておいて下さい 28
  24. Copyright © Asial Corporation. All Rights Reserved. 素材のデータベース  プロジェクトのAPIキーを自分のものに変更する

    └ main.jsファイルを修正します └ 1行目の変数 apikeyの値を書き換えて下さい └ 先ほどコピーした参照キーを利用します 29 let apikey = "*****************"; let url = "https://db.monaca.education/select"; url += "?apikey=" + apikey; console.log("WebAPIを呼び出します:",url); fetch(url) .then(function(response) { console.log("WebAPIのレスポンスです:",response); return response.json(); }) .then(function(db) { console.log("JSONとして受け取りました:",db); // 最初のレコードを処理してタイトルと画像を表示する例 document.getElementById("title").innerHTML = db.records[0].text0; document.getElementById("sozai").src = db.records[0].text1; });
  25. Copyright © Asial Corporation. All Rights Reserved. 素材のデータベース  結果のカスタマイズ

    └ データベース素材の名称を和名に変えてみましょう └ 例: 「apple」→「りんご」 └ データをランダムに取得してみましょう └ 変数URLを組み立てる際の末尾に「&random=1」を連結してください 30 let apikey = "*****************"; let url = "https://db.monaca.education/select"; url += "?apikey=" + apikey; url += "&random=1"
  26. Copyright © Asial Corporation. All Rights Reserved. 二択クイズアプリ  二択クイズアプリの動き(解答編)

    └ アプリはランダムに問題を出題 └ 利用者はYES/Noで問題に解答 └ アプリが正解・不正解の結果を判定 └ アプリが解説を表示 32 アプリは ランダムに 問題を出題 利用者は YES/Noで 問題に解答 アプリは 正解・不正解の 結果を判定 アプリは 解説を 表示
  27. Copyright © Asial Corporation. All Rights Reserved. 二択クイズアプリ  二択クイズアプリの動き(登録編)

    └ アプリは問題文の入力欄を表示 └ 利用者は問題文を入力 └ アプリは問題文のYES/NOを確認 └ 利用者はYES/Noを解答 └ アプリは解説文の入力欄を表示 └ 利用者は解説文を入力 34 アプリは 問題文の入力欄を 表示 アプリは 問題文のYES/NOを 確認 アプリは 解説文の入力欄を 表示
  28. Copyright © Asial Corporation. All Rights Reserved. 二択クイズアプリ  二択クイズアプリの出題方法(プログラム側)

    └ クイズの正解・不正解は「真偽値」で表すことができます └ if文で処理しやすい! └ データの持ち方も簡単 └ 2択ならば◦か×かの「真偽値」を聞ければOK └ confirm()命令を使えば「真偽値」を簡単に取れます └ ※ただし、回答ボタンの名称「OK / キャンセル」は変えられません 36 // confirmによる二択のイメージ 回答 = confirm(問題文) if (回答 == 真偽値) { alert("正解"); } else { alert("不正解"); }
  29. Copyright © Asial Corporation. All Rights Reserved. 二択クイズアプリ  二択クイズアプリの出題方法(データベース側)

    └ int0:真偽値(0ならば不正解、1ならば正解) └ 真偽値型はMonacaデータベースには無いので数値型で代用 └ text0:問題 └ text1:解説 └ ランダムに出題する方法:「&random=1」とすればOK 37
  30. Copyright © Asial Corporation. All Rights Reserved. 二択クイズアプリ  (補足)四択じゃだめなんですか???

    └ 難易度が上がりますが可能です(恐らくソースコードは倍以上必要) └ 選択肢を4個データベースに登録する必要があります └ 回答を1~4の数値で答えて貰う必要があります └ 選択肢をシャッフルする必要も出てきます 38
  31. Copyright © Asial Corporation. All Rights Reserved. 二択クイズアプリ  実習

    └ 二択クイズアプリをインポート └ アプリの動作確認 └ キーは参照専用のため、問題の登録はできません └ キーの差し替え └ 自身のマスターキーに変更します └ アプリの動作確認 └ 問題の登録が行えてデータベースに値が記録されれば成功です └ カスタマイズ └ まずは見た目(タイトル・色など)をカスタムすることをお勧めします 39
  32. Copyright © Asial Corporation. All Rights Reserved. 二択クイズアプリ  更なるカスタマイズのアイディア

    └ 4択にする └ 設計案 └ text1に正しい選択肢、text2~4に正しくない選択肢を持たせる └ 選択肢をシャッフルしてランダムに提示する └ promptで1~4の解答を数値で解答させる └ ボタンで解答させる └ confirmは見た目が微妙なのでDOMで画面を作って解答させる └ 問題数を増やす └ 10問ぐらい問題を登録する └ データが消えると辛いので、インポート&エクスポートも適宜利用してください └ 問題を繰り返し出題したり正答数で点数を付ける └ 繰り返し処理を工夫すれば可能です 40