SlideShare a Scribd company logo
1 of 44
Download to read offline
Copyright © Asial Corporation. All Rights Reserved.
はじめてのプログラミング
で学ぶ
Copyright © Asial Corporation. All Rights Reserved.
試験問題アプリを作ろう
2
Copyright © Asial Corporation. All Rights Reserved.
今回のテーマ
Onsen UIを利用して、4択問題から1つ選択する形式の、
試験問題アプリを作成します。
 JSONファイルに定義された問題データを取得する
 問題の正誤判定を行う
 最後に正答率を表示する
3
結果表示
Copyright © Asial Corporation. All Rights Reserved.
Onsen UIとは
4
Copyright © Asial Corporation. All Rights Reserved.
Onsen UI
• HTML5モバイルアプリのための、UIフレームワーク(画面を作るための
ツール)です。
• Apple/Googleのスタイルガイドラインに準拠した、「アプリらしい」画面
を作ることができます。
• また、HTML5で作ったアプリで課題となりがちな、パフォーマンスの問題
が改善されます。
5
Copyright © Asial Corporation. All Rights Reserved.
豊富なUIパーツを利用可能
ボタンやテキストボックスなどの入力項目や、ツールバーやタブバーといった
画面のレイアウトを構成するパーツが豊富に用意されています。
また、スマートフォンOSの種類を判別して、Androidであればマテリアルデザ
イン(立体的な質感のデザイン)、iOSの場合はフラットデザイン(平坦な質
感のデザイン)を自動的に適用する機能が搭載されています。
6
Copyright © Asial Corporation. All Rights Reserved.
使い方は独自タグを記述するだけの簡単設計
Onsen UIの使い方は、独自のタグを記載するだけです。
<ons-toolbar></ons-toolbar>
<ons-list-item></ons-list-item>
<ons-tabbar></ons-tabbar>
7
Copyright © Asial Corporation. All Rights Reserved.
JSONとは
8
Copyright © Asial Corporation. All Rights Reserved.
JSONとは
[
"りんご",
"みかん",
"ぶどう"
]
相互変換
JSON
JSONとは
 JavaScriptの配列を文字列として扱うデータ形式です。
 JSONのデータと配列は相互に変換することができます。
9
りんご みかん ぶどう
JavaScriptの配列
Copyright © Asial Corporation. All Rights Reserved.
Excel → JSON
Excelの問題データをJSON形式に変換する方法
 Excelで問題を作成します。
10
今回は以下のような形式で作成します。
• no 問題番号
• title 問題文
• choice1 選択肢1
• choice2 選択肢2
• choice3 選択肢3
• choice4 選択肢4
• answer 正解の選択肢番号
Copyright © Asial Corporation. All Rights Reserved.
Excel → JSON
Excelの問題データをJSON形式に変換する方法
 CSV形式(カンマ区切りの形式)で保存します。
11
[はい]を選択
Copyright © Asial Corporation. All Rights Reserved.
Excel → JSON
Excelの問題データをJSON形式に変換する方法
 保存したCSVファイルを右クリックして、[プログラムから開く] >
[メモ帳]を選択します。
12
Copyright © Asial Corporation. All Rights Reserved.
Excel → JSON
Excelの問題データをJSON形式に変換する方法
 CSVファイルの内容をコピーして、JSONに変換するサイトで変換
(Convert)を実行します。
13
例: http://www.csvjson.com/csv2json
Copyright © Asial Corporation. All Rights Reserved.
アプリの作成
14
Copyright © Asial Corporation. All Rights Reserved.
プロジェクトの作成
15
Copyright © Asial Corporation. All Rights Reserved.
新しいプロジェクトを作成する
Monacaにログインし、ダッシュボードで「新規プロジェクトの作
成」ボタンを選択します。
16
Copyright © Asial Corporation. All Rights Reserved.
プロジェクトの作成
17
「Onsen UI V2 JS Minimum」テンプレートを選択 > プロジェク
ト名に「試験問題アプリ」と設定してプロジェクトを作成します。
Copyright © Asial Corporation. All Rights Reserved.
プロジェクトの作成
18
今 回 の ア プ リ で は 、 JSON デ ー タ を 取 得 す る た め の 命 令 を 持 つ
「jQuery」というライブラリを使います。
メニューバーの[設定] > [JS/CSSコンポーネントの追加と削除]を選
択し、jQueryをプロジェクトに追加します。
Copyright © Asial Corporation. All Rights Reserved.
問題データファイルの作成
19
Copyright © Asial Corporation. All Rights Reserved.
問題データファイルの作成
1. [www]フォルダを右クリックし、[新規ファイル]を選択します。
2. ファイル作成ダイアログで、以下のように入力します。
└ フ ァ イ ル 名 : data.json
20
Copyright © Asial Corporation. All Rights Reserved.
問題データファイルの作成
先ほど作成したJSONデータを、data.jsonに貼り付けます。
21
Copyright © Asial Corporation. All Rights Reserved.
TOPページの作成
22
Copyright © Asial Corporation. All Rights Reserved.
実習
index.htmlの<body>タグ内を以下のように変更します。
<body>
<ons-navigator id="navi" page="top.html"></ons-navigator>
</body>
23
Copyright © Asial Corporation. All Rights Reserved.
<ons-navigator>
【Onsen UI】画面の構成
今回のアプリは、複数の画面から構成されています。このような複数のページ
を扱うには、全体を管理する<ons-navigator>というタグを使います。
24
Copyright © Asial Corporation. All Rights Reserved.
【Onsen UI】<ons-navigator>
 <ons-navigator>
• 複数ページを管理するタグです。画面上に描画されるパーツではありま
せん。
• 画面遷移のための命令を持っています。
<ons-navigator page="初期表示するページ"></ons-navigator>
25
Copyright © Asial Corporation. All Rights Reserved.
TOPページの作成
1. [www]フォルダを右クリックし、[新規ファイル]を選択します。
2. ファイル作成ダイアログで、以下のように入力します。
└ フ ァ イ ル 名 : top.html
└ テンプレート: Onsen Page
top.html
26
Copyright © Asial Corporation. All Rights Reserved.
実習
top.htmlを以下のように変更します。
<ons-page id="top-page" style="text-align:center">
<h1>試験問題アプリ</h1>
<ons-button style="width:80%" onclick="start()">スタート</ons-button>
</ons-page>
27
Copyright © Asial Corporation. All Rights Reserved.
【Onsen UI】画面の構成
<ons-navigator>の中に表示される各ページは、それぞれ<ons-page>タグ
で全体を囲みます。
<ons-page>
28
<ons-navigator>
<ons-page> <ons-page> <ons-page>
Copyright © Asial Corporation. All Rights Reserved.
実習
index.htmlの<script>タグ内を以下のように変更します。
<script>
// 問題データを取得
var questions;
$.getJSON("data.json", function(result) {
questions = result;
});
var score; // 正答数
var current; // 現在の問題インデックス
// 開始する
function start() {
current = 0;
score = 0;
document.getElementById("navi").pushPage("question.html");
}
</script>
29
Copyright © Asial Corporation. All Rights Reserved.
【jQuery】$.getJSON()
JSONデータの取得
• jQueryの$.getJSON()命令を使います。
• 第一引数に指定したJSONファイルの内容を取得し、取得が完了したら第
二引数の関数を実行します。
$.getJSON(ファイルのURL, データ取得後に実行する関数);
30
$.getJSON("data.json", function(result) {
// 省略
});
ここにdata.jsonの中身が
入ります
文法 JSONデータの取得
例 data.jsonファイルに記載されたデータを取得する
Copyright © Asial Corporation. All Rights Reserved.
【Onsen UI】ページ遷移
ons-navigatorは、ページを進めたり、戻ったりする命令を持っています。
ons-navigator要素.pushPage('ページURL');
 popPage()
• 1つ前のページに戻ります。
ons-navigator要素.popPage();
 pushPage()
• 指定したページへ遷移します。
 resetToPage()
• 先頭のページに戻ります。
ons-navigator要素.resetToPage('ページURL');
31
Copyright © Asial Corporation. All Rights Reserved.
問題ページの作成
32
Copyright © Asial Corporation. All Rights Reserved.
問題ページの作成
1. [www]フォルダを右クリックし、[新規ファイル]を選択します。
2. ファイル作成ダイアログで、以下のように入力します。
└ フ ァ イ ル 名 : question.html
└ テンプレート: Onsen Page
question.html
33
Copyright © Asial Corporation. All Rights Reserved.
実習
question.htmlを以下のように変更します。
<ons-page id="question-page">
<h1 id="title">問題文</h1>
<ons-list>
<ons-list-item modifier="longdivider">
<ons-button modifier="large" id="btn1" onclick="select(1)"></ons-button>
</ons-list-item>
<ons-list-item modifier="longdivider">
<ons-button modifier="large" id="btn2" onclick="select(2)"></ons-button>
</ons-list-item>
<ons-list-item modifier="longdivider">
<ons-button modifier="large" id="btn3" onclick="select(3)"></ons-button>
</ons-list-item>
<ons-list-item modifier="longdivider">
<ons-button modifier="large" id="btn4" onclick="select(4)"></ons-button>
</ons-list-item>
</ons-list>
</ons-page>
34
Copyright © Asial Corporation. All Rights Reserved.
【Onsen UI】リストの表示
<ons-list>
<ons-list-item>りんご</ons-list-item>
<ons-list-item>みかん</ons-list-item>
<ons-list-item>ぶどう</ons-list-item>
</ons-list>
<ons-list>
└ リスト全体を囲む要素です。
<ons-list-item>
└ リスト内の1件分の要素を表します。
35
Copyright © Asial Corporation. All Rights Reserved.
実習
index.htmlの<script>タグ内に、以下のコードを追記します。
// 各ページが開いたとき
document.addEventListener('init', function(event) {
// 開いたページ
var page = event.target;
// 問題ページが開いたとき
if(page.id == "question-page") {
// タイトルを設定
var title = "第" + questions[current].no + "問:" + questions[current].title;
page.querySelector('#title').innerHTML = title;
// 選択肢を設定
page.querySelector("#btn1").innerHTML = questions[current].choice1;
page.querySelector("#btn2").innerHTML = questions[current].choice2;
page.querySelector("#btn3").innerHTML = questions[current].choice3;
page.querySelector("#btn4").innerHTML = questions[current].choice4;
}
});
36
Copyright © Asial Corporation. All Rights Reserved.
【Onsen UI】ページの初期化処理
initイベント
• <ons-navigator>のナビゲーション機能によって、各ページが表示され
たタイミングでinitイベントが発生します。
• ページが開いたタイミングで何らかのデータを表示する処理は、initイベ
ントを使って行います。
document.addEventListener('init', function(event) {
var page = event.target;
if (page.id === '<ons-page>のID') {
// ページが開いたときに実行する処理
}
});
イベント引数の中の
「target」に、開いたページ
の<ons-page>要素が入って
います
37
Copyright © Asial Corporation. All Rights Reserved.
結果ページの作成
38
Copyright © Asial Corporation. All Rights Reserved.
結果ページの作成
1. [www]フォルダを右クリックし、[新規ファイル]を選択します。
2. ファイル作成ダイアログで、以下のように入力します。
└ フ ァ イ ル 名 : result.html
└ テンプレート: Onsen Page
result.html
39
Copyright © Asial Corporation. All Rights Reserved.
実習
result.htmlを以下のように変更します。
<ons-page id="result-page" style="text-align:center">
<div style="height:300px">
<ons-icon icon="" size="300px" id="result-icon"></ons-icon>
</div>
<div>
<ons-button style="width:80%" onclick="next()">次へ</ons-button>
</div>
</ons-page>
40
Copyright © Asial Corporation. All Rights Reserved.
実習
index.htmlの<script>タグ内に、以下のコードを追記します。
// 回答を選択したとき
function select(choiceNo) {
var icon;
if(choiceNo == questions[current].answer) {
// 正解の場合、〇を表示して正答数をカウントアップ
icon = "circle-o";
score++;
} else {
// 間違いの場合、×を表示
icon = "ion-close";
}
// 結果ページに移動
document.getElementById("navi").pushPage("result.html")
.then(function(page) {
page.querySelector("#result-icon").setAttribute("icon", icon);
});
}
41
Copyright © Asial Corporation. All Rights Reserved.
【Onsen UI】<ons-navigator>
次のページへ進み、移動後に何らかの処理を行う
• 画面遷移をするには<ons-navigator>が持つpushPage()命令を利用し
ますが、移動完了後に何らかの処理をする場合は、pushPage()の後ろに
続けてthen()という命令を実行します。
• このように、JavaScriptではたくさんの命令を繋げて記述することがで
きます。(このような記述方法をメソッドチェーンと呼びます)
ons-navigator要素.pushPage(移動先ページ)
.then(ページ移動後に実行する処理);
42
Copyright © Asial Corporation. All Rights Reserved.
次の問題への遷移と正答率の計算
43
Copyright © Asial Corporation. All Rights Reserved.
実習
index.htmlの<script>タグ内に、以下のコードを追記します。
// 次のページへボタンを押したとき
function next() {
current++;
if(current < questions.length) {
// 次の問題があるとき
document.getElementById("navi").pushPage('question.html');
} else {
// 最後の問題まで進んだとき
var percent = Math.floor(score / questions.length * 100);
var message = "正答率は" + percent + "%でした!";
alert(message);
// 最初のページに戻る
document.getElementById("navi").resetToPage("top.html");
}
}
44

More Related Content

What's hot

InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdfInjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf정민 안
 
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜KLab Inc. / Tech
 
大規模Node.jsを支える ロードバランスとオートスケールの独自実装
大規模Node.jsを支える ロードバランスとオートスケールの独自実装大規模Node.jsを支える ロードバランスとオートスケールの独自実装
大規模Node.jsを支える ロードバランスとオートスケールの独自実装kidach1
 
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップUnite2017Tokyo
 
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろうUnity Technologies Japan K.K.
 
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~日本マイクロソフト株式会社
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方光晶 上原
 
【Unite 2018 Tokyo】エディター拡張マニアクス2018
【Unite 2018 Tokyo】エディター拡張マニアクス2018【Unite 2018 Tokyo】エディター拡張マニアクス2018
【Unite 2018 Tokyo】エディター拡張マニアクス2018Unity Technologies Japan K.K.
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?강 민우
 
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜モノビット エンジン
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれNakanoYosuke1
 
【謎解きイベントカンファレンス2015夏】基調講演「謎解きイベントの市場規模と最新トレンド」(南晃)
【謎解きイベントカンファレンス2015夏】基調講演「謎解きイベントの市場規模と最新トレンド」(南晃)【謎解きイベントカンファレンス2015夏】基調講演「謎解きイベントの市場規模と最新トレンド」(南晃)
【謎解きイベントカンファレンス2015夏】基調講演「謎解きイベントの市場規模と最新トレンド」(南晃)nazotoki_event_conference
 
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッTatsuhiko Yamamura
 
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?kyu buns
 
게임 BM 설계를 위해 알아야 할 게임 Entity
게임 BM 설계를 위해 알아야 할 게임 Entity게임 BM 설계를 위해 알아야 할 게임 Entity
게임 BM 설계를 위해 알아야 할 게임 EntityHyeyon Kwon
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다Jinho Jung
 

What's hot (20)

InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdfInjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
InjectionIII의 Hot Reload를 이용하여 앱 개발을 좀 더 편하게 하기.pdf
 
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
 
大規模Node.jsを支える ロードバランスとオートスケールの独自実装
大規模Node.jsを支える ロードバランスとオートスケールの独自実装大規模Node.jsを支える ロードバランスとオートスケールの独自実装
大規模Node.jsを支える ロードバランスとオートスケールの独自実装
 
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ
【Unite 2017 Tokyo】もっと気軽に、動的なコンテンツ配信を ~アセットバンドルの未来と開発ロードマップ
 
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
 
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
 
【Unite 2018 Tokyo】エディター拡張マニアクス2018
【Unite 2018 Tokyo】エディター拡張マニアクス2018【Unite 2018 Tokyo】エディター拡張マニアクス2018
【Unite 2018 Tokyo】エディター拡張マニアクス2018
 
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
[IGC2018] 에이스프로젝트 안현석 - 유니티로 실시간 멀티플레이 게임서버를 만들 수 있을까?
 
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
【GCC18】PUBGライクなゲームをUnityだけで早く確実に作る方法 〜ひとつのUnity上でダミークライアントを100個同時に動かす〜
 
初めてのVR/AR開発をUnityで
初めてのVR/AR開発をUnityで初めてのVR/AR開発をUnityで
初めてのVR/AR開発をUnityで
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれ
 
【謎解きイベントカンファレンス2015夏】基調講演「謎解きイベントの市場規模と最新トレンド」(南晃)
【謎解きイベントカンファレンス2015夏】基調講演「謎解きイベントの市場規模と最新トレンド」(南晃)【謎解きイベントカンファレンス2015夏】基調講演「謎解きイベントの市場規模と最新トレンド」(南晃)
【謎解きイベントカンファレンス2015夏】基調講演「謎解きイベントの市場規模と最新トレンド」(南晃)
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例
 
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
誰もAddressableについて語らないなら、自分が語るしかない…ッッッッ
 
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
Adobe XDを使うと、こんなに効率よくゲームUIが作れちゃうの!?
 
게임 BM 설계를 위해 알아야 할 게임 Entity
게임 BM 설계를 위해 알아야 할 게임 Entity게임 BM 설계를 위해 알아야 할 게임 Entity
게임 BM 설계를 위해 알아야 할 게임 Entity
 
エフェクトツール機能の実装例
エフェクトツール機能の実装例エフェクトツール機能の実装例
エフェクトツール機能の実装例
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다
 

Similar to 書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)

最新UIフレームワーク Onsen UI2で カッコイイWordPress連携アプリを作る方法
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
最新UIフレームワーク Onsen UI2で カッコイイWordPress連携アプリを作る方法アシアル株式会社
 
夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)Masafumi Terazono
 
Css nite(2010.09.23)
Css nite(2010.09.23)Css nite(2010.09.23)
Css nite(2010.09.23)Yoshiki Ushida
 
jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料Nobumasa Ura
 
Monaca公式ガイドブック発売記念全国キャラバン
Monaca公式ガイドブック発売記念全国キャラバンMonaca公式ガイドブック発売記念全国キャラバン
Monaca公式ガイドブック発売記念全国キャラバンアシアル株式会社
 
Monaca公式ガイドブック発売記念全国キャラバン
Monaca公式ガイドブック発売記念全国キャラバンMonaca公式ガイドブック発売記念全国キャラバン
Monaca公式ガイドブック発売記念全国キャラバンアシアル株式会社
 
多分わかりやすいDurable functions
多分わかりやすいDurable functions多分わかりやすいDurable functions
多分わかりやすいDurable functions宜行 武井
 
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会Mori Tetsuya
 
Webapp startup example_to_dolist
Webapp startup example_to_dolistWebapp startup example_to_dolist
Webapp startup example_to_dolistShinichiro Kumeuchi
 
空のテンプレートから始めるWindows 8 ストアアプリ
空のテンプレートから始めるWindows 8 ストアアプリ空のテンプレートから始めるWindows 8 ストアアプリ
空のテンプレートから始めるWindows 8 ストアアプリAkira Hatsune
 
Firefox OS アプリケーション チュートリアル
Firefox OS アプリケーション チュートリアルFirefox OS アプリケーション チュートリアル
Firefox OS アプリケーション チュートリアルfunakky
 
ぶっとびケータイ+Firefox OS Apps
ぶっとびケータイ+Firefox OS Appsぶっとびケータイ+Firefox OS Apps
ぶっとびケータイ+Firefox OS AppsEnsekiTT
 
Android班第1回
Android班第1回Android班第1回
Android班第1回XMLProJ2014
 

Similar to 書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編) (20)

最新UIフレームワーク Onsen UI2で カッコイイWordPress連携アプリを作る方法
最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法最新UIフレームワーク Onsen UI2でカッコイイWordPress連携アプリを作る方法
最新UIフレームワーク Onsen UI2で カッコイイWordPress連携アプリを作る方法
 
夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)夜子まま塾講義10(画面の呼び出し)
夜子まま塾講義10(画面の呼び出し)
 
Css nite(2010.09.23)
Css nite(2010.09.23)Css nite(2010.09.23)
Css nite(2010.09.23)
 
jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料jQuery Mobile(開発編)勉強会資料
jQuery Mobile(開発編)勉強会資料
 
Web Intents入門
Web Intents入門Web Intents入門
Web Intents入門
 
Wankuma0402
Wankuma0402Wankuma0402
Wankuma0402
 
Monaca公式ガイドブック発売記念全国キャラバン
Monaca公式ガイドブック発売記念全国キャラバンMonaca公式ガイドブック発売記念全国キャラバン
Monaca公式ガイドブック発売記念全国キャラバン
 
Monaca公式ガイドブック発売記念全国キャラバン
Monaca公式ガイドブック発売記念全国キャラバンMonaca公式ガイドブック発売記念全国キャラバン
Monaca公式ガイドブック発売記念全国キャラバン
 
jQuery Mobileの基礎
jQuery Mobileの基礎jQuery Mobileの基礎
jQuery Mobileの基礎
 
jQuery Mobile入門
jQuery Mobile入門jQuery Mobile入門
jQuery Mobile入門
 
Androidアプリケーション開発中級研修 後編
Androidアプリケーション開発中級研修 後編Androidアプリケーション開発中級研修 後編
Androidアプリケーション開発中級研修 後編
 
多分わかりやすいDurable functions
多分わかりやすいDurable functions多分わかりやすいDurable functions
多分わかりやすいDurable functions
 
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
 
Titanium実装最初の一歩.
Titanium実装最初の一歩. Titanium実装最初の一歩.
Titanium実装最初の一歩.
 
Webapp startup example_to_dolist
Webapp startup example_to_dolistWebapp startup example_to_dolist
Webapp startup example_to_dolist
 
空のテンプレートから始めるWindows 8 ストアアプリ
空のテンプレートから始めるWindows 8 ストアアプリ空のテンプレートから始めるWindows 8 ストアアプリ
空のテンプレートから始めるWindows 8 ストアアプリ
 
Firefox OS アプリケーション チュートリアル
Firefox OS アプリケーション チュートリアルFirefox OS アプリケーション チュートリアル
Firefox OS アプリケーション チュートリアル
 
20120118 titanium
20120118 titanium20120118 titanium
20120118 titanium
 
ぶっとびケータイ+Firefox OS Apps
ぶっとびケータイ+Firefox OS Appsぶっとびケータイ+Firefox OS Apps
ぶっとびケータイ+Firefox OS Apps
 
Android班第1回
Android班第1回Android班第1回
Android班第1回
 

More from アシアル株式会社

Monacaによるモバイルアプリ開発ことはじめ
Monacaによるモバイルアプリ開発ことはじめMonacaによるモバイルアプリ開発ことはじめ
Monacaによるモバイルアプリ開発ことはじめアシアル株式会社
 
kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験アシアル株式会社
 
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)アシアル株式会社
 
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)アシアル株式会社
 
Onsen UI 2 開発における JS フレームワーク衝突事例集
Onsen UI 2 開発における JS フレームワーク衝突事例集Onsen UI 2 開発における JS フレームワーク衝突事例集
Onsen UI 2 開発における JS フレームワーク衝突事例集アシアル株式会社
 
Web標準技術で iOS、Android両対応アプリを開発
Web標準技術でiOS、Android両対応アプリを開発Web標準技術でiOS、Android両対応アプリを開発
Web標準技術で iOS、Android両対応アプリを開発 アシアル株式会社
 
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)アシアル株式会社
 
Onsen UI の最近とこれから 〜 国内サポートはじめました
Onsen UI の最近とこれから 〜 国内サポートはじめましたOnsen UI の最近とこれから 〜 国内サポートはじめました
Onsen UI の最近とこれから 〜 国内サポートはじめましたアシアル株式会社
 
Monaca事例から学ぶHTML5モバイルアプリの活用ポイント
Monaca事例から学ぶHTML5モバイルアプリの活用ポイントMonaca事例から学ぶHTML5モバイルアプリの活用ポイント
Monaca事例から学ぶHTML5モバイルアプリの活用ポイントアシアル株式会社
 
モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線アシアル株式会社
 
Monacaソリューションセミナー20160621
Monacaソリューションセミナー20160621Monacaソリューションセミナー20160621
Monacaソリューションセミナー20160621アシアル株式会社
 
創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀアシアル株式会社
 
HTML5ハイブリッドアプリ開発 で拓くビジネスチャンス
HTML5ハイブリッドアプリ開発で拓くビジネスチャンスHTML5ハイブリッドアプリ開発で拓くビジネスチャンス
HTML5ハイブリッドアプリ開発 で拓くビジネスチャンス アシアル株式会社
 

More from アシアル株式会社 (20)

MonacaとEducation活動の紹介
MonacaとEducation活動の紹介MonacaとEducation活動の紹介
MonacaとEducation活動の紹介
 
PWA 4 Business
PWA 4 BusinessPWA 4 Business
PWA 4 Business
 
Monacaによるモバイルアプリ開発ことはじめ
Monacaによるモバイルアプリ開発ことはじめMonacaによるモバイルアプリ開発ことはじめ
Monacaによるモバイルアプリ開発ことはじめ
 
kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験kintone 連携スマホアプリの開発・配布体験
kintone 連携スマホアプリの開発・配布体験
 
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
JINS MEME DEVELOPER HANDS-ON (Monaca / Apache Cordova編)
 
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド第2弾(体験版)
 
Onsen UI 2 開発における JS フレームワーク衝突事例集
Onsen UI 2 開発における JS フレームワーク衝突事例集Onsen UI 2 開発における JS フレームワーク衝突事例集
Onsen UI 2 開発における JS フレームワーク衝突事例集
 
Web標準技術で iOS、Android両対応アプリを開発
Web標準技術でiOS、Android両対応アプリを開発Web標準技術でiOS、Android両対応アプリを開発
Web標準技術で iOS、Android両対応アプリを開発
 
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
 
Cordovaの特徴と開発手法概要
Cordovaの特徴と開発手法概要Cordovaの特徴と開発手法概要
Cordovaの特徴と開発手法概要
 
Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線
 
Onsen UI の最近とこれから 〜 国内サポートはじめました
Onsen UI の最近とこれから 〜 国内サポートはじめましたOnsen UI の最近とこれから 〜 国内サポートはじめました
Onsen UI の最近とこれから 〜 国内サポートはじめました
 
Monaca事例から学ぶHTML5モバイルアプリの活用ポイント
Monaca事例から学ぶHTML5モバイルアプリの活用ポイントMonaca事例から学ぶHTML5モバイルアプリの活用ポイント
Monaca事例から学ぶHTML5モバイルアプリの活用ポイント
 
Gartner summit 2016
Gartner summit 2016Gartner summit 2016
Gartner summit 2016
 
モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線
 
Monacaソリューションセミナー20160621
Monacaソリューションセミナー20160621Monacaソリューションセミナー20160621
Monacaソリューションセミナー20160621
 
20160308seminar2
20160308seminar220160308seminar2
20160308seminar2
 
Nifty cloud mbaas
Nifty cloud mbaasNifty cloud mbaas
Nifty cloud mbaas
 
創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
創業明治33年の衣料卸問屋がﰀ アプリで挑むコミュニケーション変革 ﰀ ~MonacaとmBaaSを活用したﰀ ビジネスチャットアプリの紹介〜 ﰀ
 
HTML5ハイブリッドアプリ開発 で拓くビジネスチャンス
HTML5ハイブリッドアプリ開発で拓くビジネスチャンスHTML5ハイブリッドアプリ開発で拓くビジネスチャンス
HTML5ハイブリッドアプリ開発 で拓くビジネスチャンス
 

Recently uploaded

The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料Takayuki Itoh
 

Recently uploaded (7)

The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 

書籍『Monacaで学ぶはじめてのプログラミング』発展資料(試験問題アプリ編)

  • 1. Copyright © Asial Corporation. All Rights Reserved. はじめてのプログラミング で学ぶ
  • 2. Copyright © Asial Corporation. All Rights Reserved. 試験問題アプリを作ろう 2
  • 3. Copyright © Asial Corporation. All Rights Reserved. 今回のテーマ Onsen UIを利用して、4択問題から1つ選択する形式の、 試験問題アプリを作成します。  JSONファイルに定義された問題データを取得する  問題の正誤判定を行う  最後に正答率を表示する 3 結果表示
  • 4. Copyright © Asial Corporation. All Rights Reserved. Onsen UIとは 4
  • 5. Copyright © Asial Corporation. All Rights Reserved. Onsen UI • HTML5モバイルアプリのための、UIフレームワーク(画面を作るための ツール)です。 • Apple/Googleのスタイルガイドラインに準拠した、「アプリらしい」画面 を作ることができます。 • また、HTML5で作ったアプリで課題となりがちな、パフォーマンスの問題 が改善されます。 5
  • 6. Copyright © Asial Corporation. All Rights Reserved. 豊富なUIパーツを利用可能 ボタンやテキストボックスなどの入力項目や、ツールバーやタブバーといった 画面のレイアウトを構成するパーツが豊富に用意されています。 また、スマートフォンOSの種類を判別して、Androidであればマテリアルデザ イン(立体的な質感のデザイン)、iOSの場合はフラットデザイン(平坦な質 感のデザイン)を自動的に適用する機能が搭載されています。 6
  • 7. Copyright © Asial Corporation. All Rights Reserved. 使い方は独自タグを記述するだけの簡単設計 Onsen UIの使い方は、独自のタグを記載するだけです。 <ons-toolbar></ons-toolbar> <ons-list-item></ons-list-item> <ons-tabbar></ons-tabbar> 7
  • 8. Copyright © Asial Corporation. All Rights Reserved. JSONとは 8
  • 9. Copyright © Asial Corporation. All Rights Reserved. JSONとは [ "りんご", "みかん", "ぶどう" ] 相互変換 JSON JSONとは  JavaScriptの配列を文字列として扱うデータ形式です。  JSONのデータと配列は相互に変換することができます。 9 りんご みかん ぶどう JavaScriptの配列
  • 10. Copyright © Asial Corporation. All Rights Reserved. Excel → JSON Excelの問題データをJSON形式に変換する方法  Excelで問題を作成します。 10 今回は以下のような形式で作成します。 • no 問題番号 • title 問題文 • choice1 選択肢1 • choice2 選択肢2 • choice3 選択肢3 • choice4 選択肢4 • answer 正解の選択肢番号
  • 11. Copyright © Asial Corporation. All Rights Reserved. Excel → JSON Excelの問題データをJSON形式に変換する方法  CSV形式(カンマ区切りの形式)で保存します。 11 [はい]を選択
  • 12. Copyright © Asial Corporation. All Rights Reserved. Excel → JSON Excelの問題データをJSON形式に変換する方法  保存したCSVファイルを右クリックして、[プログラムから開く] > [メモ帳]を選択します。 12
  • 13. Copyright © Asial Corporation. All Rights Reserved. Excel → JSON Excelの問題データをJSON形式に変換する方法  CSVファイルの内容をコピーして、JSONに変換するサイトで変換 (Convert)を実行します。 13 例: http://www.csvjson.com/csv2json
  • 14. Copyright © Asial Corporation. All Rights Reserved. アプリの作成 14
  • 15. Copyright © Asial Corporation. All Rights Reserved. プロジェクトの作成 15
  • 16. Copyright © Asial Corporation. All Rights Reserved. 新しいプロジェクトを作成する Monacaにログインし、ダッシュボードで「新規プロジェクトの作 成」ボタンを選択します。 16
  • 17. Copyright © Asial Corporation. All Rights Reserved. プロジェクトの作成 17 「Onsen UI V2 JS Minimum」テンプレートを選択 > プロジェク ト名に「試験問題アプリ」と設定してプロジェクトを作成します。
  • 18. Copyright © Asial Corporation. All Rights Reserved. プロジェクトの作成 18 今 回 の ア プ リ で は 、 JSON デ ー タ を 取 得 す る た め の 命 令 を 持 つ 「jQuery」というライブラリを使います。 メニューバーの[設定] > [JS/CSSコンポーネントの追加と削除]を選 択し、jQueryをプロジェクトに追加します。
  • 19. Copyright © Asial Corporation. All Rights Reserved. 問題データファイルの作成 19
  • 20. Copyright © Asial Corporation. All Rights Reserved. 問題データファイルの作成 1. [www]フォルダを右クリックし、[新規ファイル]を選択します。 2. ファイル作成ダイアログで、以下のように入力します。 └ フ ァ イ ル 名 : data.json 20
  • 21. Copyright © Asial Corporation. All Rights Reserved. 問題データファイルの作成 先ほど作成したJSONデータを、data.jsonに貼り付けます。 21
  • 22. Copyright © Asial Corporation. All Rights Reserved. TOPページの作成 22
  • 23. Copyright © Asial Corporation. All Rights Reserved. 実習 index.htmlの<body>タグ内を以下のように変更します。 <body> <ons-navigator id="navi" page="top.html"></ons-navigator> </body> 23
  • 24. Copyright © Asial Corporation. All Rights Reserved. <ons-navigator> 【Onsen UI】画面の構成 今回のアプリは、複数の画面から構成されています。このような複数のページ を扱うには、全体を管理する<ons-navigator>というタグを使います。 24
  • 25. Copyright © Asial Corporation. All Rights Reserved. 【Onsen UI】<ons-navigator>  <ons-navigator> • 複数ページを管理するタグです。画面上に描画されるパーツではありま せん。 • 画面遷移のための命令を持っています。 <ons-navigator page="初期表示するページ"></ons-navigator> 25
  • 26. Copyright © Asial Corporation. All Rights Reserved. TOPページの作成 1. [www]フォルダを右クリックし、[新規ファイル]を選択します。 2. ファイル作成ダイアログで、以下のように入力します。 └ フ ァ イ ル 名 : top.html └ テンプレート: Onsen Page top.html 26
  • 27. Copyright © Asial Corporation. All Rights Reserved. 実習 top.htmlを以下のように変更します。 <ons-page id="top-page" style="text-align:center"> <h1>試験問題アプリ</h1> <ons-button style="width:80%" onclick="start()">スタート</ons-button> </ons-page> 27
  • 28. Copyright © Asial Corporation. All Rights Reserved. 【Onsen UI】画面の構成 <ons-navigator>の中に表示される各ページは、それぞれ<ons-page>タグ で全体を囲みます。 <ons-page> 28 <ons-navigator> <ons-page> <ons-page> <ons-page>
  • 29. Copyright © Asial Corporation. All Rights Reserved. 実習 index.htmlの<script>タグ内を以下のように変更します。 <script> // 問題データを取得 var questions; $.getJSON("data.json", function(result) { questions = result; }); var score; // 正答数 var current; // 現在の問題インデックス // 開始する function start() { current = 0; score = 0; document.getElementById("navi").pushPage("question.html"); } </script> 29
  • 30. Copyright © Asial Corporation. All Rights Reserved. 【jQuery】$.getJSON() JSONデータの取得 • jQueryの$.getJSON()命令を使います。 • 第一引数に指定したJSONファイルの内容を取得し、取得が完了したら第 二引数の関数を実行します。 $.getJSON(ファイルのURL, データ取得後に実行する関数); 30 $.getJSON("data.json", function(result) { // 省略 }); ここにdata.jsonの中身が 入ります 文法 JSONデータの取得 例 data.jsonファイルに記載されたデータを取得する
  • 31. Copyright © Asial Corporation. All Rights Reserved. 【Onsen UI】ページ遷移 ons-navigatorは、ページを進めたり、戻ったりする命令を持っています。 ons-navigator要素.pushPage('ページURL');  popPage() • 1つ前のページに戻ります。 ons-navigator要素.popPage();  pushPage() • 指定したページへ遷移します。  resetToPage() • 先頭のページに戻ります。 ons-navigator要素.resetToPage('ページURL'); 31
  • 32. Copyright © Asial Corporation. All Rights Reserved. 問題ページの作成 32
  • 33. Copyright © Asial Corporation. All Rights Reserved. 問題ページの作成 1. [www]フォルダを右クリックし、[新規ファイル]を選択します。 2. ファイル作成ダイアログで、以下のように入力します。 └ フ ァ イ ル 名 : question.html └ テンプレート: Onsen Page question.html 33
  • 34. Copyright © Asial Corporation. All Rights Reserved. 実習 question.htmlを以下のように変更します。 <ons-page id="question-page"> <h1 id="title">問題文</h1> <ons-list> <ons-list-item modifier="longdivider"> <ons-button modifier="large" id="btn1" onclick="select(1)"></ons-button> </ons-list-item> <ons-list-item modifier="longdivider"> <ons-button modifier="large" id="btn2" onclick="select(2)"></ons-button> </ons-list-item> <ons-list-item modifier="longdivider"> <ons-button modifier="large" id="btn3" onclick="select(3)"></ons-button> </ons-list-item> <ons-list-item modifier="longdivider"> <ons-button modifier="large" id="btn4" onclick="select(4)"></ons-button> </ons-list-item> </ons-list> </ons-page> 34
  • 35. Copyright © Asial Corporation. All Rights Reserved. 【Onsen UI】リストの表示 <ons-list> <ons-list-item>りんご</ons-list-item> <ons-list-item>みかん</ons-list-item> <ons-list-item>ぶどう</ons-list-item> </ons-list> <ons-list> └ リスト全体を囲む要素です。 <ons-list-item> └ リスト内の1件分の要素を表します。 35
  • 36. Copyright © Asial Corporation. All Rights Reserved. 実習 index.htmlの<script>タグ内に、以下のコードを追記します。 // 各ページが開いたとき document.addEventListener('init', function(event) { // 開いたページ var page = event.target; // 問題ページが開いたとき if(page.id == "question-page") { // タイトルを設定 var title = "第" + questions[current].no + "問:" + questions[current].title; page.querySelector('#title').innerHTML = title; // 選択肢を設定 page.querySelector("#btn1").innerHTML = questions[current].choice1; page.querySelector("#btn2").innerHTML = questions[current].choice2; page.querySelector("#btn3").innerHTML = questions[current].choice3; page.querySelector("#btn4").innerHTML = questions[current].choice4; } }); 36
  • 37. Copyright © Asial Corporation. All Rights Reserved. 【Onsen UI】ページの初期化処理 initイベント • <ons-navigator>のナビゲーション機能によって、各ページが表示され たタイミングでinitイベントが発生します。 • ページが開いたタイミングで何らかのデータを表示する処理は、initイベ ントを使って行います。 document.addEventListener('init', function(event) { var page = event.target; if (page.id === '<ons-page>のID') { // ページが開いたときに実行する処理 } }); イベント引数の中の 「target」に、開いたページ の<ons-page>要素が入って います 37
  • 38. Copyright © Asial Corporation. All Rights Reserved. 結果ページの作成 38
  • 39. Copyright © Asial Corporation. All Rights Reserved. 結果ページの作成 1. [www]フォルダを右クリックし、[新規ファイル]を選択します。 2. ファイル作成ダイアログで、以下のように入力します。 └ フ ァ イ ル 名 : result.html └ テンプレート: Onsen Page result.html 39
  • 40. Copyright © Asial Corporation. All Rights Reserved. 実習 result.htmlを以下のように変更します。 <ons-page id="result-page" style="text-align:center"> <div style="height:300px"> <ons-icon icon="" size="300px" id="result-icon"></ons-icon> </div> <div> <ons-button style="width:80%" onclick="next()">次へ</ons-button> </div> </ons-page> 40
  • 41. Copyright © Asial Corporation. All Rights Reserved. 実習 index.htmlの<script>タグ内に、以下のコードを追記します。 // 回答を選択したとき function select(choiceNo) { var icon; if(choiceNo == questions[current].answer) { // 正解の場合、〇を表示して正答数をカウントアップ icon = "circle-o"; score++; } else { // 間違いの場合、×を表示 icon = "ion-close"; } // 結果ページに移動 document.getElementById("navi").pushPage("result.html") .then(function(page) { page.querySelector("#result-icon").setAttribute("icon", icon); }); } 41
  • 42. Copyright © Asial Corporation. All Rights Reserved. 【Onsen UI】<ons-navigator> 次のページへ進み、移動後に何らかの処理を行う • 画面遷移をするには<ons-navigator>が持つpushPage()命令を利用し ますが、移動完了後に何らかの処理をする場合は、pushPage()の後ろに 続けてthen()という命令を実行します。 • このように、JavaScriptではたくさんの命令を繋げて記述することがで きます。(このような記述方法をメソッドチェーンと呼びます) ons-navigator要素.pushPage(移動先ページ) .then(ページ移動後に実行する処理); 42
  • 43. Copyright © Asial Corporation. All Rights Reserved. 次の問題への遷移と正答率の計算 43
  • 44. Copyright © Asial Corporation. All Rights Reserved. 実習 index.htmlの<script>タグ内に、以下のコードを追記します。 // 次のページへボタンを押したとき function next() { current++; if(current < questions.length) { // 次の問題があるとき document.getElementById("navi").pushPage('question.html'); } else { // 最後の問題まで進んだとき var percent = Math.floor(score / questions.length * 100); var message = "正答率は" + percent + "%でした!"; alert(message); // 最初のページに戻る document.getElementById("navi").resetToPage("top.html"); } } 44