チュートリアル,ユーティリティ

郵便番号を検索するアプリを作ります

標準のApp Inventor 2日本語版にSQLiteエクステンション、Zipエクステンション、Fileエクステンションを追加して使用しています。また、簡単なSQL言語を使用しています。このアプリはandroid 11以降では"The permission READ_EXTERNAL_STORAGE has been denied"エラーが出て動作しません。

ソースコードを見ながらこのチュートリアルを読んだ方がわかりやすいと思います。ページの最後にあるダウンロードセクションからソースコードをダウンロードしてからApp Inventorを開き、[ プロジェクト ]をクリックして[コンピュータからプロジェクト(.aia)をインポートします]を選択し、ソースコードを選択してインポートしてください。  

プログラムの構造(流れ)

SQLite自体はAndroidに標準装備です。

  1. あらかじめSQLiteの全国郵便番号データベースファイル(約12万件)を作成しておき、このファイルのzip圧縮ファイルをアセットとしてアプリに同封します。App Inventorではアセットとしてアップロードできるファイルのサイズは5MB程度が上限なので、圧縮しています。全国郵便番号データベースファイルの圧縮前ファイルサイズは8.5MB、圧縮後ファイルサイズは2.4MBです。万が一、アセットにファイルが無い時あるいは圧縮ファイルサイズが5MBを超えた時に備え、指定サーバーからzip圧縮ファイルをダウンロードして使用する機能も持っています。
  2. zip圧縮データベースファイルを解凍後、SQLiteにインポートし、データベースから都道府県のリストを作成してスピナーで表示します。
  3. 都道府県が選択されたら指定都道府県内の市町村リストを作成してスピナーで表示します。
  4. 市町村が選択されたら指定市町村内の町域リストを作成してスピナーで表示します。
  5. 町域が選択されたら定都道府県内指定市町村内指定町域の郵便番号を表示します。

郵便番号データベースファイルの作成(App Inventorは使いません)

https://www.post.japanpost.jp/zipcode/dl/roman-zip.html より全国一括のzip圧縮データファイルをダウンロードします。解凍後、表計算ソフトでローマ字列を削除し、代わりに通し番号の列を追加します。また文字コードがShift JISなので、UTF-8に変換してからcsvで保存します。

SQLiteデータベースのテーブル構造を以下のように定義し、SQLite GUI管理ツール(たとえばDB Browser for SQLite)を使ってテーブルを作成し、csvファイルをインポートしてデータベースを作成します。ここではjapanzip.sqliteという名前でデータベースを作成し、japanzip.zipというファイルに圧縮しました。japanzip.zipはここからダウンロードしてください

CREATE TABLE "japanzip" (
	"id"	INTEGER NOT NULL UNIQUE,
	"zip"	TEXT,
	"prefs"	TEXT,
	"city"	INTEGER,
	"street"	TEXT,
	PRIMARY KEY("id" AUTOINCREMENT)
);

プロジェクトを作成

[プロジェクト]メニューから[新規プロジェクトを始める]を選択し、”ZipJapan”と名前を付けます。

エクテンションの追加

  • AppInventor extension for SQLiteからDownload AIXをクリックしてローカルパソコンにダウンロードし、org.bennedum.SQLite.aixをエクステンションパレットからエクステンションインポートをクリックしてインポートします
  • https://puravidaapps.com/zip.php からTaifunZip extension (aix file)をダウンロードし、com.puravidaapps.TaifunZip.aixをエクステンションパレットからエクステンションインポートをクリックしてインポートします。
  • https://puravidaapps.com/file.php からTaifunFile extension (aix file)をダウンロードし、com.puravidaapps.TaifunFile.aixをエクステンションパレットからエクステンションインポートをクリックしてインポートします。

デザイン編集

垂直配置レイアウトをビューアーにドラッグアンドドロップし、垂直配置1のプロパティーのうち水平に整列するは"中央揃え"、横幅は"親要素に合わせる"にします。その中に2個のラベル(タイトル、空白)、スピナー(選択ドロップダウン)、1個のラベル(初期化ラベル)、1個のボタン(初期化ボタン)、1個のラベル(住所ラベル)、1個のテキストボックス(郵便番号)、1個のボタン(リセット)を上から順番にドラッグアンドドロップします。それぞれのコンポーネントの名前はカッコ内のものにしてください。

それぞれのコンポーネントのプロパティーですが、"タイトル"の背景の色は"カスタム"で#4285f4ffに、フォントサイズは32、テキストは"郵便番号検索"、テキストカラーは"白"にします。"空白"のテキストは空白にします。"選択ドロップダウン"の目に見えるはチェックを外します。"初期化ラベル"のフォントサイズは10、テキストは"郵便番号データベースを初期化します。よろしければ下の初期化ボタンをクリックしてください。"、目に見えるはチェックを外します。"初期化ボタン"のテキストは"初期化"、目に見えるはチェックを外します。"住所ラベル"のテキストは"初期化中"、目に見えるはチェックを外します。"郵便番号"は目に見えるのチェックを外します。"リセット"の背景の色は"カスタム"で#4285f4ffに、太字フォントをチェック、テキストは"リセット"、テキストカラーは"白"にします。

見えないコンポーネント類としてエクテンションに追加したSQLite、 TaifunZip,、TaifunFileと接続パレットにあるウェブ、ストレージパレットにあるファイルをドラッグアンドドロップします。最後にファイルをアップロードをクリックしてjapanzip.zipをアップロードします。ここまでで下図のようになります。

ブロック編集機能を使用したプログラミング

残りのコンテンツを表示するにはログインする必要がありますどうぞ . 会員ではないですか ? 入会のご案内

チュートリアル,ユーティリティ

お絵かきアプリを作りましょう

[プロジェクト]メニューから[新規プロジェクトを始める]を選択し、"Doodle"と名前を付けます

デザイン編集

キャンバスを追加

ドローイングとアニメーションパレットから、 キャンバスコンポーネントをScreen1にドラッグアンドドロップします。

キャンバスの高さと横幅を"親要素に合わせる"に変更します

キャンバス1のプロパティの高さと横幅を"親要素に合わせる"に変更します。

画面クリアボタンを追加

ユーザーインターフェースパレットから、ボタンをキャンバスの下にドラッグアンドドロップし、テキストを"クリア"に設定します。

ブロック編集機能を使用したプログラミング

アプリの動作をプログラミングするには、 ブロック編集機能にアクセスする必要があります。 画面右上のブロック編集ボタンをクリックしてブロック編集機能に行きます。

キャンバス.ドラッグイベントの追加

残りのコンテンツを表示するにはログインする必要がありますどうぞ . 会員ではないですか ? 入会のご案内

チュートリアル,ユーティリティ

スマホを振ると話す機能としゃべる言葉の入力機能の追加

ここではスマホを振るとしゃべる機能としゃべる言葉を入力する機能を追加します。

App Inventorを起動してログインし、TalkToMeプロジェクトを開いてください。App Inventorは前回開いたプロジェクトを自動的に開くので、もうTalkToMeプロジェクトが開いてあるかもしれません。

デザイン編集

加速度センサーを追加

センサーパレットから、 加速度センサーコンポーネントをドラッグしビューアーに配置します。ドロップすると、ビューアー下部の非可視コンポーネントとマークされた領域に表示されます 。

ブロック編集

アプリの動作をプログラミングするには、 ブロック編集機能にアクセスする必要があります。 画面右上のブロック編集ボタンをクリックしてブロック編集機能に行きます。

加速度センサーの揺れたらイベントをプログラム

残りのコンテンツを表示するにはログインする必要がありますどうぞ . 会員ではないですか ? 入会のご案内

チュートリアル,ユーティリティ

話しをするアプリを作りましょう

[プロジェクト]メニューから[新規プロジェクトを始める]を選択し、「TalkToMe」と名前を付けます。

デザイン編集

ボタンを追加

ボタンのテキストを変更

ボタン1のプロパティのテキストにある “ボタン1のテキスト”を消し、"話して!"と入力します。

テキスト読み上げコンポーネントの追加

残りのコンテンツを表示するにはログインする必要がありますどうぞ . 会員ではないですか ? 入会のご案内