App Inventorの変数とリスト

  • アプリ内で変数を使用してデータを保存する方法を学びます
  • データをリストに整理する方法を学ぶ
  • アプリで変数とリストを使ってみます

データの保存

アプリをコーディングするとき、通常はアプリ内に保存したり、更新したり、アクセスする必要のある情報やデータがあります。

アプリの実行に必要なデータは3種類あります。

変数

アプリの実行中に情報を保存します。

例えば、ユーザー名やゲームのスコアなど。

ローカルストレージ

アプリを実行するたびに取得される情報をモバイル端末に保存します。

例えば、ユーザーアドレスやゲームのハイスコアなどがあります。

クラウドストレージ

ウェブ(クラウド)上に情報を保存し、すべてのアプリユーザーがその情報にアクセスできるようにします。

例えば、ゲームのリーダーボードやチャットメッセージなどがあります。

このレッスンでは、変数を使ってアプリ内にデータを保存することに焦点を当てます。

変数

コーディングで最も重要な概念のひとつが変数です。変数とは、変更可能なデータを収納しておく箱のようなものです。変化するもの・中身が変化すると覚えておくとよいでしょう。

重要な情報はたくさんあり、その値は変化します。いくつか例を挙げてみましょう。

バースデーケーキ
年齢
雨雲
天気
月間カレンダー
本日の日付

変数は、中に情報を格納できる箱のようなものです。

  1. 箱にラベルを貼ったり、名前をつけたりします。
  2. 情報が必要なときは、箱を開けて中身を見ることができる。 中にあるものを手に入れる
  3. また 中にあるものを変更することもできます。

 

変数が箱に収納されるアニメーション

アプリ発明者変数

変数は、アプリの実行中に情報を保存するために使用される。

すべての変数ブロックは右の図のような場所にあります。 

アプリ発明者変数ドロワー

変数には3つの基本ブロックがあります。以下のタブでそれらについて学んでください。

initializeブロックは、アプリ内に変数用のストレージを確保するものです。分かりやすい名前をつけましょう。

 

初期化変数ブロック App Inventor

ここで変数 numberOfLessonsは0に初期化されます。おそらく、教育アプリでいくつのレッスンが完了したかを追跡するためでしょう。

setブロックでは、変数の値を設定(更新)することができます。

 

ここでは、現在の値が取得され、変数に現在の値+1が設定されます。つまり、numberOfLessonsが2だった場合、新しい値は3になります。

getブロックは、変数の現在値を取得することができます。

ここでは、getブロックを使って、Label1に表示する文章にレッスン数を挿入しています。
結合ブロックで使用される変数ブロックを取得する
 
ここでは、条件ブロックの中で現在のレッスン数を取得し、それがゼロかどうかをテストするために使用されています。
if ブロック アプリ発明者
 
 
 

リスト

アプリを開発する中で、アプリ内にアクセスする必要のあるデータが複数あることに気づくかもしれません。

例えば、1つのユーザー名ではなく、アプリのすべてのユーザー名にアクセスする必要があるかもしれません。あるいは、あなたのアプリは動物に関するもので、保存しなければならない動物の名前や画像が複数あるかもしれないです。

App Inventor では、次のように呼ばれるものを使用します。 リスト と呼ばれるものを使用します。他のプログラミング言語では 配列と呼びますが、本質的には同じものです。

ToDoリストや食料品リストを作ったことがあるかもしれませんが、プログラミングにおけるリストもよく似ています。

紙にペンで買い物リスト
アプリインベンターのリストパレット

リストには、ブロックエディターの内蔵ブロックパレットからアクセスします。リスト内のアイテムの作成、保存、取得、更新を可能にするいくつかのブロックがあります。

リストを変数に格納するので、リストに名前をつけることができる。

app inventorでリストを初期化する

関連する情報が複数ある場合は、リストを使ったほうが便利です。

例えば、あるゲームのハイスコアのトップ10を表示したい場合、HighScore1HighScore2HighScore3といった名前の変数をHighScore10まで10個作ることができます。

望ましいのは、HighScoresというリストを作って、10個のハイスコアをすべて保持することです。ハイスコアの並び替え・更新・追加は1つのリストにまとめるとはるかに簡単に行うことができます。

アプリインベンターの変数とリスト

リストの各項目は インデックスがあり、リストからその項目を取り出すことができます。

例えば、下のブロックでは、2のインデックスがFruitsリストの2番目の項目を指しています。つまり、Label1には "Bananas "と表示されます。

app inventorでリストを初期化する
リスト選択

リスト内のものを追加、削除、置換することもできます。 

リンゴ、バナナ、オレンジという元の果物リストを、以下のブロックを順番に実行した後に、果物リストに何が含まれるか分かりますか?

app inventorでリストを初期化する

ベストプラクティス 変数という言葉は、生徒にとって学ぶのが難しいトピックのひとつです。箱の例えは本当に役に立つので、物事を説明するために実際に箱のラベル付けをしなければならないなら、それは良いアイデアかもしれません!

生徒への質問

リストや変数以外にデータを保存する方法があると思いますか?つの値を一緒に保存したい場合はどうでしょう?例えば、オレンジの数とリンゴの数のリストが欲しい:
オレンジ:3
リンゴ5

これをどうにかして保存したい。もっと複雑なリストだ。ほとんどリストみたいなもので、値がこのようにリンクされている:
オレンジ -> 3
リンゴ -> 5

矢印には方向があるので、これを地図と呼ぶことにする!他にもデータ構造はたくさんある!他にもあるかな?

優秀な生徒のための高度な知識 生徒の一人がブロック・コーディング以外のコーディングに興味を持っている場合(例:PythonやJavascriptでのコーディングを続ける)、コーディング言語は箱の中身をより重視することを説明することができます。例えば、数字は単語の中の文字とは扱いが異なります。PythonやJavascriptのような言語は、数字と文字では変数に格納できるものの「種類」が違うので、格納方法にとてもうるさいのです。例えるなら、物を入れる箱の種類が違うということだ:残飯は残飯専用の箱(タッパー)に入れなければならないし、引っ越しをするときには引っ越し用の箱(ダンボール)に入れなければならない。Pythonも同じです。数字は数字の箱に、文字は文字の箱に入れる。

メンターTipsは、AmeriCorpsから提供されたものです。

様式化されたA、ネイビーでAmeriCorpsのロゴ

アクティビティ:クイズアプリを完成させる

所要時間45分

変数とリストを使ってコードを完成させる

ワークシートの指示に従って、ユーザーが選んだトピックに関する知識をテストするクイズアプリを作ってください。
ワークシートを開く

振り返り

 

このレッスンでは、アプリに情報を保存する方法と、リストを使ってたくさんの情報を活用する方法を学びました。これらの質問について考えてみましょう。

ビット・データによる反射
アプリにどのようなデータを保存する必要がありますか ?
アプリにどのようにリストを含めることができますか?
前のスライド
次のスライド

主な用語のおさらい

変数- 変化する情報に名前を付けることができる箱のようなもの

リスト - App Inventorで複数のデータを整理する方法。

インデックス - あるデータがリストのどの位置にあるかを示す数値

配列 - App InventorおよびThunkable以外のプログラミング言語におけるリストの通称

追加リソース

リストビュー・コンポーネントでは

  • アプリ内のリスト要素の表示
  • ユーザーによるリスト内の項目の選択。
  • ユーザーが項目を選択したときに取るアクションのコーディング

このビデオでは、実際に使用している様子を簡単に紹介しています。