ストレージコンポーネント
目次
CloudDB
インターネットに接続されたデータベースサーバーにデータを保存できる非表示コンポーネント(Redisソフトウェアを使用)。 これにより、アプリのユーザーは互いにデータを共有できます。 デフォルトでは、データはMITが管理するサーバーに保存されますが、独自のサーバーをセットアップして実行できます。 「RedisServer」プロパティと「RedisPort」プロパティを設定して、独自のサーバーにアクセスします。
物性
ProjectID
このCloudDBプロジェクトのProjectIDを取得します。RedisPort
使用するRedisサーバーのポート。 デフォルトは6381RedisServer
データの保存に使用するRedisサーバー。 「DEFAULT」の設定は、MITサーバーが使用されることを意味します。Token
(デザイナーのみ)このフィールドには、バックアップされたRedisサーバーへのログインに使用される認証トークンが含まれます。 「DEFAULT」サーバーの場合、この値を編集しないでください。システムが自動的に入力します。 システム管理者は、複数の人の複数のプロジェクト間でデータを共有するために使用できる特別な値を提供することもあります。 独自のRedisサーバーを使用している場合、サーバーの設定でパスワードを設定し、ここに入力します。UseSSL
(デザイナーのみ)SSLを使用してCloudDB / Redisサーバーと通信するには、trueに設定します。 これは、「DEFAULT」サーバーに対してTrueに設定する必要があります。
イベント
CloudDBError(text message)
CloudDB Redisサーバーとの通信中にエラーが発生したことを示します。DataChanged(text tag, any value)
CloudDBプロジェクトのデータが変更されたことを示します。 更新されたタグと値を使用してイベントを起動します。FirstRemoved(any value)
「RemoveFirstFromList」関数によってトリガーされるイベント。 引数「値」は、リストの最初にあったオブジェクトであり、現在は削除されています。GotValue(text tag, any value)
GetValueリクエストが成功したことを示します。TagList(list value)
既知のタグのリストを受信したときにトリガーされるイベント。 「GetTagList」関数とともに使用します。
方法
AppendValueToList(text tag, any itemToAdd)
リストの最後に値をアトミックに追加します。 2つのデバイスがこの機能を同時に使用する場合、両方が追加され、データは失われません。ClearTag(text tag)
CloudDBからタグを削除しますboolean CloudConnected()
ネットワーク上にあり、CloudDBサーバーに接続できる可能性が高い場合はTrueを返します。GetTagList()
このアプリケーションのタグのリストを取得します。 完了すると、既知のタグのリストで「TagList」イベントがトリガーされます。GetValue(text tag, any valueIfTagNotThere)
GetValueは、指定されたタグの下に保存されている値を取得するようCloudDBに要求します。 タグの下に値が保存されていない場合、valueIfTagNotThereをGotValueに渡します。RemoveFirstFromList(text tag)
リストの最初の要素を返し、アトミックに削除します。 2つのデバイスがこの関数を同時に使用する場合、1つは最初の要素を取得し、もう1つは2番目の要素を取得します。利用可能な要素がない場合はエラーになります。 要素が使用可能になると、「FirstRemoved」イベントがトリガーされます。StoreValue(text tag, any valueToStore)
指定されたタグの下に指定された値を保存するようCloudDBに要求します。 値が「file:///」または「/ storage /」で始まる場合、CloudDBは値をファイル名として解釈し、指定されたファイルの内容を送信します。 ファイル拡張子は3文字である必要があります(例: “.png”、 “。wav”)。 GotValueまたはDataChangedを介して受信すると、ファイルはデバイスのパブリックストレージに保存され、値には新しい場所が反映されます。
ファイル
ファイルを格納および取得するための非表示コンポーネント。 このコンポーネントを使用して、デバイス上のファイルを読み書きします。 デフォルトの動作では、アプリに関連付けられているプライベートデータディレクトリにファイルが書き込まれます。 コンパニオンは、デバッグを簡単にするために/ sdcard / AppInventor / dataにファイルを書き込みます。 ファイルパスがスラッシュ(/)で始まる場合、ファイルは/ sdcardを基準にして作成されます。 たとえば、ファイルを/myFile.txtに書き込むと、そのファイルは/sdcard/myFile.txtに書き込まれます。
プロパティ
無し
イベント
AfterFileSaved(text fileName)
ファイルの内容が書き込まれたことを示すイベント。GotText(text text)
ファイルの内容が読み取られたことを示すイベント。
方法
AppendToFile(text text, text fileName)
ファイルの末尾にテキストを追加します。 ファイルが存在しない場合は作成します。 ファイルが書き込まれる場所については、SaveFileの下のヘルプテキストを参照してください。Delete(text fileName)
ファイルをストレージから削除します。 SDカード内の特定のファイルを削除するには、ファイル名の前に/を付けます(たとえば、/ myFile.txtはファイル/sdcard/myFile.txtを削除します)。 ファイル名が/で始まっていない場合は、プログラムの専用ストレージにあるファイルが削除されます。 アセットファイルは削除できないため、//でファイルを開始するとエラーになります。ReadFrom(text fileName)
ストレージ内のファイルからテキストを読み取ります。 SDカード上の特定のファイルから読み取るには、ファイル名の前に/を付けます(たとえば、/ myFile.txtは/sdcard/myFile.txtファイルを読み取ります)。 アプリケーションに同梱されているアセットを読むには(Companionでも機能します)、ファイル名の先頭に//(2つのスラッシュ)を付けます。 ファイル名がスラッシュで始まっていない場合、それはアプリケーションの専用ストレージ(パッケージ化されたアプリ用)とCompanion用の/ sdcard / AppInventor / dataから読み込まれます。SaveFile(text text, text fileName)
テキストをファイルに保存します。 ファイル名がスラッシュ(/)で始まる場合、ファイルはSDカードに書き込まれます(例えば、/ myFile.txtに書き込むと、ファイルは/sdcard/myFile.txtに書き込まれます)。 ファイル名がスラッシュで始まらない場合は、電話の他のプログラムからアクセスできないプログラムのプライベートデータディレクトリに書き込まれます。 AIコンパニオンには、デバッグを容易にするためにこれらのファイルが/ sdcard / AppInventor / dataに書き込まれるという特別な例外があります。 ファイルが既に存在する場合、このブロックはファイルを上書きします。 ファイルにコンテンツを追加したい場合はappendブロックを使用してください。
利用不可
Google Fusion Tablesは2019年12月3日で使用できなくなるので、利用しないことをお勧めします。
Google Fusion Tablesと通信する不可視コンポーネント。 Fusion Tablesを使用すると、データテーブルを保存、共有、クエリ、および視覚化できます。 このコンポーネントを使用すると、これらのテーブルを照会、作成、および変更することができます。
このコンポーネントはFusion Tables API V2.0を使用します 。
Fusion Tablesを使用するアプリケーションは、Googleのサーバーで認証する必要があります。 これを行うには2つの方法があります。 最初の方法はあなた(開発者)が入手したAPIキーのみを使用します。 このアプローチでは、エンドユーザーもFusion Tableにアクセスするためにログインする必要があります。
2番目のアプローチはサービス認証を使用することです。 この方法では、資格情報と特別な「サービスアカウントの電子メールアドレス」を作成するので、エンドユーザーはログインしなくてもFusion Tablesを編集できます。 あなたのサービスアカウントはすべてのアクセスを認証します。
FusiontablesControlコンポーネントを使用する
フュージョンテーブルの作成
あなたはおそらくあなたがあなたのアプリケーションを開発しているときに実験するためにあなた自身のFusion Tablesを作成したくなるでしょう。 そのプロセスに精通していれば、これはGoogleドキュメントを作成するのと同じくらい簡単です。 手順は次のとおりです。
- ウェブで、Gmailアカウントまたは他のGoogleサービス(ドライブ、YouTubeなど)にログインします。 Googleドライブに移動します。
- [ New ]ボタンをクリックして[ More ]に移動します 。 [Google Fusion Tables]オプションが表示されない場合は、[ 他のアプリを接続 ]を選択し、Googleサービスのページをスクロールして[Fusion Tables]サービスを見つけてGoogleドライブに接続します。
- あなたはいくつかの例を見て、そして基本を学ぶためにチュートリアル(例えばPizza Party Tutorial )を通して作業したいかもしれません。
- [ テーブルを見る ]ボタン(ページの右上)をクリックします。 これであなたはあなた自身のページに行くでしょう。
- あなたはあなた自身のテーブルまたはあなたと共有されているテーブルのリストを見るべきです(おそらく何もありません)。
- [ 作成 ]ボタンを使用して新しいテーブルを作成します。 いくつかの列名を付けて保存します。
- テーブルの権限を変更するには、[ 共有 ]ボタン(右上)をクリックします。
Fusiontablesアプリを作成する
FusiontablesControlコンポーネントをデザイナにドラッグするときは、 ApiKeyプロパティを設定することを忘れないでください。これは最初は空白です。 これをGoogle Developers Consoleからコピーしてプロパティフィールドに貼り付ける必要があります。
APIキーを取得するには、以下の手順に従ってください。
- Google Developers Consoleにアクセスし、必要に応じてログインしてください。
- [ API&auth ]の下にある左側のメニューから[ API ]項目を選択します 。
- 表示されたリストからFusion Tables APIを選択してオンにします。
- 左側のバーで、[ 認証情報]項目を選択します。
- [ Public API access ]の下にある[ Create new Key ]をクリックし、[ Android key ]を選択して[ Create ]をクリックしてAPIキーを生成します。
あなたのAPIキーは、「公開APIアクセス」の隣のペインに表示されます。 Fusion TablesアプリのApiKeyプロパティの値としてそのキーを指定する必要があります。
APIキーを取得したら、 Queryプロパティの値を有効なFusiontables SQLクエリに設定し、 SendQueryを呼び出してクエリを実行します。 App InventorはFusion Tablesサーバーにクエリを送信し、サーバーから結果が返されるとGotResultブロックが起動します。 クエリ結果はCSV形式で返され、「csvテーブルからのリスト」または「csv行からのリスト」ブロックを使用してリスト形式に変換できます。
クエリのUTFエンコードについては心配する必要はありません。 しかし、クエリがリファレンスマニュアルで説明されている構文に従っていることを確認する必要があります。つまり、列名の大文字と小文字の区別などが重要で、スペースがある場合は列名を一重引用符で囲む必要があります。
Fusion Tableにサービス認証を設定するには、次の追加手順に従います。
- Google APIコンソールのAPIs&authで、左側のメニューからAPI項目を選択します 。
- [ 新しいクライアントIDを作成 ]ボタンをクリックします。 [ サービスアカウント ]オプションを選択して、[ クライアントIDの作成 ]をクリックします 。
- KeyFileと呼ばれるファイル(拡張子.p12で終わる)が自動的にあなたのコンピュータにダウンロードされます。 覚えやすい場所に保存してください。 作成が完了すると、サービスアカウント情報を含むテーブルが表示されます。
- App Inventorのデザイナウィンドウで、FusionTablesControlを選択します。 プロパティペインで、(コンソールのテーブルから) ServiceAccountEmailを追加し、KeyFileをアップロードして、 UseServiceAuthenticationボックスをオンにします。
- フュージョンテーブルをServiceAccountEmailと共有し、他のGoogle Docを電子メールアドレスと共有するのと同じように、編集権限を与えます。
プロパティ
ApiKey
あなたのGoogle APIキー。 APIキーの取得に関する詳細は上記を参照してください。KeyFile
秘密鍵ファイルのパスを指定します。 このキーファイルは、サービス認証を通じてFusionTables APIにアクセスするために使用されます。LoadingDialogMessage
ロードダイアログに表示されるメッセージQuery
Fusion Tables APIに送信するクエリ。
有効なクエリ形式と例については、 Fusion Tables API v2.0のリファレンスマニュアルを参照してください 。
クエリのUTFエンコードについては心配する必要はありません。 照会が参照マニュアルに記載されている構文に従っていることを確認する必要があります。 列名には大文字を使用する必要があり、列名にスペースがある場合は列名を一重引用符で囲む必要があります。ServiceAccountEmail
サービス認証に使用されるサービスアカウントの電子メールアドレス。ShowLoadingDialog
ロードダイアログを表示するかどうかUseServiceAuthentication
サービスアカウントを認証に使用する必要があるかどうかを示します。
イベント
GotResult(text result)
Fusion Tablesクエリが処理を終了し、結果を返したことを示します。 クエリの結果は通常CSV形式で返され、「csvテーブルからのリスト」または「csv行からのリスト」ブロックを使用してリスト形式に変換できます。
方法
DoQuery()
廃止予定。 このブロックは2012年末の時点で非推奨です。代わりにSendQueryを使用してください。ForgetLogin()
エンドユーザーのログイン認証情報を忘れます。 サービス認証には影響しません。GetRows(text tableId, text columns)
指定されたFusion Tableからすべての行を取得します。 tableIdフィールド(必須)はFusion TableのIDです。 columnsフィールドは、取得する列のカンマ区切りのリストです。GetRowsWithConditions(text tableId, text columns, text conditions)
特定の条件を満たすFusion Tableからすべての行を取得します。 tableIdフィールド(必須)はFusion TableのIDです。 columnsフィールドは、取得する列のカンマ区切りのリストです。 条件フィールドは、テーブルからどの行を検索するかを指定します(例えば、特定の列値がNULLではない行)。InsertRow(text tableId, text columns, text values)
指定したFusion Tableに行を挿入します。 tableIdフィールドは、Fusion TableのIDです。 columnsフィールドは、値を挿入する先の列のコンマ区切りリストです。 valuesフィールドは、各列に挿入する値を指定します。SendQuery()
クエリをFusion Tablesサーバーに送信します。
TinyDB
TinyDBは、アプリのデータを保存する非表示コンポーネントです。
App Inventorで作成されたアプリは実行されるたびに初期化されます。 つまり、アプリが変数の値を設定してからユーザーがそのアプリを終了した場合、そのアプリの次回の実行時にその変数の値は記憶されません。 対照的に、TinyDBはアプリの永続的なデータストアです。 TinyDBに保存されたデータは、アプリが実行されるたびに利用可能になります。 例としては、ハイスコアを保存し、ゲームがプレイされるたびにそれを取得するゲームがあります。
データ項目はタグと値で構成されています 。 データ項目を保存するには、データ項目を保存するタグを指定します。 タグはテキストブロックである必要があり、データに名前を付けます。 その後、特定のタグの下に格納されていたデータを取得できます。
TinyDBを使用して電話の2つの異なるアプリケーション間でデータをやり取りすることはできませんが、TinyDBを使用してマルチスクリーンアプリケーションの異なる画面間でデータを共有することはできます。
AI Companionを使用してアプリを開発している場合、そのCompanionを使用しているすべてのアプリは同じTinyDBを共有します。 アプリがパッケージ化されて電話機にインストールされると、その共有は表示されなくなります。 開発中は、新しいアプリで作業を始めるたびにCompanionアプリのデータを消去するように注意する必要があります。
プロパティ
Namespace
データを格納するための名前空間 同じ名前空間プロパティを持つ同じアプリケーション内のすべてのTinyDBコンポーネントは、同じデータにアクセスします。各ネームスペースは、アプリ全体で共有される単一のデータストアを表します。 アプリ内に同じ名前空間を持つ複数のTinyDBコンポーネントがある場合、それらが異なる画面上にあっても、それらは同じデータストアを使用します。 アプリケーションに必要なデータストアが1つだけの場合は、ネームスペースを定義する必要はありません。
イベント
無し
方法
ClearAll()
TinyDBのデータストア全体を消去します。ClearTag(text tag)
与えられたタグを持つエントリを消去します。any GetTags()
TinyDB内のすべてのタグのリストを返します。any GetValue(text tag, any valueIfTagNotThere)
与えられたタグの下に格納されている値を取得します。 そのようなタグがない場合は、valueIfTagNotThereを返します。StoreValue(text tag, any valueToStore)
与えられたタグの下に値を格納します。 アプリを再起動しても、ストレージは電話機に残ります。
TinyWebDB
情報を格納および取得するためにWebサービスと通信する不可視コンポーネント。カスタムTinyWebDBサービスの作成を参照してください。
プロパティ
ServiceURL
コンポーネントが通信するデータベースへのURL。
イベント
GotValue(text tagFromWebDB, any valueFromWebDB)
GetValueサーバー要求が成功したことを示します。ValueStored()
StoreValueサーバー要求が成功したことを示すイベント。WebServiceError(text message)
Webサービスとの通信がエラーを通知したことを示します。
方法
GetValue(text tag)
指定されたタグの下に格納されている値を取得するためにWebサービスに要求を送信します。 タグの下に値が格納されていない場合、Webサービスは何を返すかを決定する必要があります。 このコンポーネントは、返されるものをすべて受け入れます。StoreValue(text tag, any valueToStore)
指定されたタグの下に指定された値を格納するようにWebサービスに要求を送信します。