AI,gemini,JavaScript,アプリ開発,チュートリアル,バイブコーディング,中級,生成AI

App Inventorでテトリスゲームを作ろうと思い立ち、いろいろと調べてみたところ、App Inventorだけで実装している記事を見つけました。しかし、その内容を見るとかなり手間がかかっており、大変そうでした。

本来、App Inventorは「簡単にスマホアプリを作る」ことを目的としたツールのはずです。それにもかかわらず、ゲームをひとつ作るのにここまで苦労するのは本末転倒だと感じました。そこで、複雑な処理はWebViewer内でJavaScriptに任せればよいことを思い出しました。

例えば、関数電卓アプリでは、複雑な計算部分をJavaScriptのライブラリで処理し、App Inventor側では結果の表示や操作部分だけを担当させることで、全体をずっと簡潔に構築できます。

そこで今回は、GoogleのGemini 2.5 Proを活用してテトリスゲームを作成します。なお、ここに掲載しているプロンプトと返答は、掲載用に改めて行った会話の内容であり、実際にゲームを作成した際のやり取りとは多少異なります。

実際に作ったテトリスゲームのチュートリアルはこちらです。

Gemini 2.5 Proとの対話

プロンプト

App Inventorでテトリスゲームを作りたい。ゲーム本体はウェブビュー内でJavaScriptで実行する。ゲームプレイ用のボタンなどはApp Inventor側で定義する。ウェブビューで使うhtmlファイルは1個にまとめる。

返答

App InventorとWebViewを組み合わせたテトリスゲームですね。承知いたしました。

WebView内で動作する、単一のHTMLファイルを作成します。このファイルには、ゲームのロジック(JavaScript)、描画(Canvas)、スタイル(CSS)がすべて含まれています。

App Inventor側では、このHTMLファイルをメディアとしてアップロードし、WebViewのHomeUrlに設定します。そして、App Inventorで作成したボタンから、WebViewのJavaScript関数を呼び出す(RunJavaScriptブロックを使用)ことでゲームを操作します。

こちらが、App InventorのWebViewで使用するための単一のHTMLファイルです。

tetris.html

🔒 このページは以下の会員レベルで閲覧できます

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

gemini,JavaScript,ゲーム,チュートリアル,中級

有名なゲームのテトリスを作ります

このチュートリアルでは、有名なゲームのテトリスを作ります。App Inventorだけで作った記事がありましたが随分大変そうなので、Google Gemini 2.5 Proに相談してウェブビュー内のJavaScriptでゲーム本体は作りました。App InventorからはこのJavaScriptをコントロールしています。

ページの最後にあるダウンロードセクションからソースコードをダウンロードできます。

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

このチュートリアルで学べること

  • ウェブビューでJavaScriptを実行する方法
  • ウェブビューとの値の受け渡し方法

使用コンポーネント

ボタン、ラベル、ウェブビュー、水平配置、垂直配置

使用ブロック

特別なものは無し

デザイン編集

Screen1のタイトルを"テトリス"にします。

ページの最後にあるダウンロードセクションからtetris.htmlとover.mp3をダウンロードして、両方のファイルをファイルをアップロードボタンをクリックしてアップロードします。

レイアウト パレットから 垂直配置コンポーネント をビューアーに追加します。水平に整列するは"中央揃え"に、高さと横幅は"親要素に合わせる"に設定します。名前は垂直配置1になります。

ユーザーインターフェース パレットからウェブビュー垂直配置1に追加します。高さと横幅は"親要素に合わせる"に設定します。名前はウェブビュー1になります。

レイアウト パレットから 水平配置コンポーネント(水平配置1) を垂直配置コンポーネントに追加し、水平に整列するは"中央揃え"に、横幅は"親要素に合わせる"に設定します。水平配置1の中にユーザーインターフェース パレットからボタンを4個追加します。名前はボタン1ボタン2ボタン3ボタン4になります。

ユーザーインターフェース パレットからボタンラベル水平配置1の下に追加します。名前はそれぞれボタン5ラベル1になります。

以下のようにボタンラベルのプロパティを設定します。

  • ボタン1: テキスト="左″
  • ボタン2: テキスト="回転″
  • ボタン3: テキスト="右″
  • ボタン4: テキスト="下″
  • ボタン5: テキスト="スタート″
  • ラベル1: テキスト="″、横幅="親要素に合わせる"

最後にメディアパレットから、 サウンドコンポーネントをビューアーにドラッグアンドドロップします。ソースプロパティをover.mp3に指定します。

下図のようになります。

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

🔒 このページは以下の会員レベルで閲覧できます

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

JavaScript,チュートリアル,ユーティリティ,中級

四則演算のできる電卓アプリを作ります

このチュートリアルでは、四則演算のできる電卓アプリを作ります。ネットを調べてみると二項演算しかできないApp Inventor 2 電卓アプリばかりだったので、Google Gemini 2.0 Flash Thinking Experimentalに相談してJavaScriptで多項演算できるように作りました。もちろん多項式内の掛け算、割り算は優先して計算します。

平方根、三角関数、対数関数、累乗、階乗のできる高機能な関数電卓アプリはこちらです。

ページの最後にあるダウンロードセクションからソースコードをダウンロードできます。

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

このチュートリアルで学べること

  • ウェブビューでJavaScriptを実行する方法
  • ウェブビューとの値の受け渡し方法
  • プロシージャの書き方
  • すべてのコンポーネント“ブロックを使ったループ処理の仕方

使用コンポーネント

テキストボックス、ラベル、ウェブビュー、水平配置、ボタン

使用ブロック

グローバル変数、リスト、ロジック、テキスト、プロシージャ、もしならば、もしならばでなくてもしならば、それぞれの項目リスト内の実行、すべてのコンポーネントブロック

デザイン編集

Screen1のタイトルを"四則演算電卓"にします。

ページの最後にあるダウンロードセクションからダウンロードしたcalculator.htmlをファイルをアップロードボタンをクリックしてアップロードします。

ユーザーインターフェース パレットからテキストボックスラベルウェブビューを追加します。名前はそれぞれ計算式結果ウェブビュー1にします。

  • 計算式: 横幅="親要素に合わせる"、マルチラインプロパティー=チェック
  • 結果: テキスト=結果、横幅="親要素に合わせる"
  • ウェブビュー1: 目に見える=チェックを外す

レイアウト パレットから 水平配置コンポーネント を5個ビューアーに追加し、横幅はすべて"親要素に合わせる"に設定します。名前は水平配置1から水平配置5になります。それぞれの水平配置ユーザーインターフェース パレットからボタンを4個ずつ追加します。すべてのボタンのフォントサイズは20、横幅は25%にします。名前とテキストは次のようにします。

  • 水平配置1

    • 名前=AC、テキスト=AC
    • 名前=符号、テキスト=±
    • 名前=パーセント、テキスト=%
    • 名前=除、テキスト=÷

  • 水平配置2

    • 名前=n7、テキスト=7
    • 名前=n8、テキスト=8
    • 名前=n9、テキスト=9
    • 名前=乗、テキスト=乗

  • 水平配置3

    • 名前=n4、テキスト=4
    • 名前=n5、テキスト=5
    • 名前=n6、テキスト=6
    • 名前=減、テキスト=−

  • 水平配置4

    • 名前=n1、テキスト=1
    • 名前=n2、テキスト=2
    • 名前=n3、テキスト=3
    • 名前=加、テキスト=+

  • 水平配置5

    • 名前=n0、テキスト=0
    • 名前=小数点、テキスト=.
    • 名前=削除、テキスト=◀︎
    • 名前=イコール、テキスト==

下図のようになります。携帯電話サイズだとすべてのボタンが見えないのでタブレットサイズで表示しています。

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

🔒 このページは以下の会員レベルで閲覧できます

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

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

QRコードを生成するアプリを作ります

このチュートリアルでは、QRコードを生成するアプリを作ります。App Inventoir 2 のバーコードスキャナーコンポーネントを使うとQRコードを読むアプリは作れますが、QRコードを生成するアプリは作れません。ここではウェブビューでJavaScriptでQRCode.jsを使ってQRコードを生成します。ChatGPTに相談して作り方を教えてもらいました

ページの最後にあるダウンロードセクションからソースコードをダウンロードできます。

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

デザイン編集

Screen1のタイトルを"QRコード生成"にします。

ページの最後にあるダウンロードセクションからダウンロードした qrgenerator.html をファイルをアップロードボタンをクリックしてアップロードします。

ユーザーインターフェース パレットからウェブビューをビューアーに追加します。名前はウェブビュー1になります。

レイアウト パレットから 水平配置コンポーネント をビューアーに追加します。名前は水平配置1になります。水平配置1ユーザーインターフェース パレットからキャンバスを追加します。名前はキャンバス1になります。

ユーザーインターフェース パレットからテキストボックスをビューアーに追加します。名前はテキストボックス1になります。

レイアウト パレットから 水平配置コンポーネント をビューアーに追加します。名前は水平配置2になります。水平配置2ユーザーインターフェース パレットからボタンを2個追加します。名前はボタン1ボタン2になります。

最後にセンサーパレットから タイマーコンポーネント をビューアーに追加します。名前はタイマー1になります。

プロパティーは以下の通り設定します。

  • ウェブビュー1: 目に目える=チェックを外す
  • 水平配置1: 水平に整列する=中央揃え、垂直(縦)=中央揃え、高さ="親要素に合わせる"、横幅="親要素に合わせる"
  • キャンバス1: 高さ=128ピクセル、横幅=128ピクセル
  • テキストボックス1: 横幅="親要素に合わせる"、ヒント="QRコードに埋め込むテキスト"、マルチライン=チェック
  • 水平配置2: 水平に整列する=中央揃え、横幅="親要素に合わせる"
  • ボタン1: テキスト="QRコード生成"
  • ボタン2: テキスト="リセット"
  • タイマー1: タイマー有効=チェックを外す

下図のようになります。

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

🔒 このページは以下の会員レベルで閲覧できます

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

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

画像の文字を認識して文字列を作るアプリを作ります

このチュートリアルでは、JavaScriptを使って光学文字認識を行うアプリを作ります。JavaScriptライブラリの一つであるTesseract.jsを使うとブラウザで光学文字認識ができます。ここではウェブビューでJavaScriptでTesseract.jsを使って光学文字認識を行います。ただ、ウェブビューと受け渡しできるのは文字列だけで、画像を渡すのにBase64エンコード、デコードをして文字列化する必要があるので、そこは uk.co.metricrat.imagebase64v2.aix というエクステンションを使っています。

ページの最後にあるダウンロードセクションからソースコードをダウンロードできます。

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

デザイン編集

Screen1のタイトルを"光学文字認識"にします。

ページの最後にあるダウンロードセクションからダウンロードした ocr.html をファイルをアップロードボタンをクリックしてアップロードします。

uk.co.metricrat.imagebase64v2.aixエクステンションを https://metricrat-hosting.web.app/files/uk.co.metricrat.imagebase64v2.aix からダウンロードし、エクステンションパレットにアップロード後、ビューアーに追加します。

ユーザーインターフェース パレットからラベル画像ラベルテキストボックスウェブビューをこの順番でビューアーに追加します。名前はそれぞれラベル1画像1ラベル2テキストボックス1ウェブビュー1になります。次にメディア パレットから画像ピッカーを追加します。名前は画像ピッカー1になります。プロパティーは以下の通り設定します。

  • ラベル1: 太字フォント=チェック、フォントサイズ=20、テキスト=画像
  • 画像1: 画像に合わせて拡大縮小する=チェック
  • ラベル2: 太字フォント=チェック、フォントサイズ=20、テキスト=認識結果
  • テキストボックス1: 背景の色=グレー、横幅="親要素に合わせる"、テキストカラー=白、マルチライン=チェック
  • ウェブビュー1: 目に目える=チェックを外す
  • 画像ピッカー1: テキスト="画像選択"

下図のようになります。

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

🔒 このページは以下の会員レベルで閲覧できます

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

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

画像にフィルターをかけてレトロ、ホスタライズ、漫画風フィルターをかけて表示するアプリを作ります

このチュートリアルでは、写真などの画像にフィルターをかけて表示するアプリを作ります。App Inventoir 2 本来の機能には画像にフィルターをかける機能はありません。エクステンションの中にはこうした機能を持つものもありますが、ここではウェブビューでJavaScriptを使ってフィルターをかけます。ウェブビューでJavaScriptを使うのは、エクステンションを書くよりもはるかに簡単です。ただ、ウェブビューと受け渡しできるのは文字列だけで、画像を渡すのにBase64エンコード、デコードをして文字列化する必要があるので、そこは uk.co.metricrat.imagebase64v2.aix というエクステンションを使っています。

画像フィルターアプリでは単純なフィルターをかけるアプリでしたがここではChatGPTに教えてもらったもうちょっと複雑で面白いフィルターのレトロ、ホスタライズ、漫画風フィルターを採用しています。ほとんどの変更はJavaScript内だけです。

  • レトロ:「古いポスターのような、色あせたノスタルジックな雰囲気」を再現するフィルター
  • ホスタライズ:「色の段階を減らし、ポップアートやアニメのようなカラフルな仕上がり」にするフィルター
  • 漫画風:「写真を白黒の漫画やスケッチのように変換する」フィルター

ページの最後にあるダウンロードセクションからソースコードをダウンロードできます。

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

デザイン編集

Screen1のタイトルを"画像フィルター"にします。

ページの最後にあるダウンロードセクションからダウンロードした imagefilter2.html をファイルをアップロードボタンをクリックしてアップロードします。

uk.co.metricrat.imagebase64v2.aixエクステンションを https://metricrat-hosting.web.app/files/uk.co.metricrat.imagebase64v2.aix からダウンロードし、エクステンションパレットにアップロード後、ビューアーに追加します。

ユーザーインターフェース パレットからウェブビュー画像をビューアーに追加します。名前はそれぞれウェブビュー1、画像1になります。次にメディア パレットから画像ピッカーを追加します。名前は画像ピッカー1になります。

  • ウェブビュー1: 目に目える=チェックを外す
  • 画像1: 横幅="親要素に合わせる"
  • 画像ピッカー1: 横幅="親要素に合わせる"、テキスト="画像選択"

レイアウト パレットから 水平配置コンポーネント をビューアーに追加し、水平に整列するは"中央揃え"に、横幅は"親要素に合わせる"に設定します。名前は水平配置1になります。水平配置1ユーザーインターフェース パレットからボタンを3個追加します。名前とテキストは次のようにします。

  • 水平配置1

    • 名前=レトロ、テキスト=レトロ
    • 名前=ポスタライズ、テキスト=ポスタライズ
    • 名前=漫画風、テキスト=漫画風

水平配置1の下にユーザーインターフェース パレットからボタンを1個追加し、名前とテキストを"オリジナル"にします。

下図のようになります。

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

🔒 このページは以下の会員レベルで閲覧できます

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

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

画像にフィルターをかけてグレースケール、セピア、ネガで表示するアプリを作ります

このチュートリアルでは、写真などの画像にフィルターをかけて表示するアプリを作ります。App Inventoir 2 本来の機能には画像にフィルターをかける機能はありません。エクステンションの中にはこうした機能を持つものもありますが、ここではウェブビューでJavaScriptを使ってフィルターをかけます。ウェブビューでJavaScriptを使うのは、エクステンションを書くよりもはるかに簡単です。ただ、ウェブビューと受け渡しできるのは文字列だけで、画像を渡すのにBase64エンコード、デコードをして文字列化する必要があるので、そこは uk.co.metricrat.imagebase64v2.aix というエクステンションを使っています。

ページの最後にあるダウンロードセクションからソースコードをダウンロードできます。

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

デザイン編集

Screen1のタイトルを"画像フィルター"にします。

ページの最後にあるダウンロードセクションからダウンロードした imagefilter.html をファイルをアップロードボタンをクリックしてアップロードします。

uk.co.metricrat.imagebase64v2.aixエクステンションを https://metricrat-hosting.web.app/files/uk.co.metricrat.imagebase64v2.aix からダウンロードし、エクステンションパレットにアップロード後、ビューアーに追加します。

ユーザーインターフェース パレットからウェブビュー画像をビューアーに追加します。名前はそれぞれウェブビュー1、画像1になります。次にメディア パレットから画像ピッカーを追加します。名前は画像ピッカー1になります。

  • ウェブビュー1: 目に目える=チェックを外す
  • 画像1: 横幅="親要素に合わせる"
  • 画像ピッカー1: 横幅="親要素に合わせる"、テキスト="画像選択"

レイアウト パレットから 水平配置コンポーネント をビューアーに追加し、水平に整列するは"中央揃え"に、横幅は"親要素に合わせる"に設定します。名前は水平配置1になります。水平配置1ユーザーインターフェース パレットからボタンを3個追加します。名前とテキストは次のようにします。

  • 水平配置1

    • 名前=グレースケール、テキスト=グレースケール
    • 名前=セピア、テキスト=セピア
    • 名前=ネガ、テキスト=ネガ

水平配置1の下にユーザーインターフェース パレットからボタンを1個追加し、名前とテキストを"オリジナル"にします。

下図のようになります。

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

🔒 このページは以下の会員レベルで閲覧できます

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

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

関数計算のできる電卓アプリを作ります

このチュートリアルでは、関数計算のできる電卓アプリを作ります。使える関数は平方根、三角関数、対数関数、累乗、階乗です。普通に作ろうとするとすごく大変になるので、Google Gemini 2.0 Flash Thinking Experimentalに相談してJavaScriptで計算するように作りました。

ページの最後にあるダウンロードセクションからソースコードをダウンロードできます。

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

デザイン編集

Screen1のタイトルを"関数電卓"にします。

ページの最後にあるダウンロードセクションからダウンロードしたcalculator.htmlをファイルをアップロードボタンをクリックしてアップロードします。

ユーザーインターフェース パレットからテキストボックスラベルウェブビューを追加します。名前はそれぞれ計算式結果ウェブビュー1にします。

  • 計算式: 横幅="親要素に合わせる"、マルチラインプロパティー=チェック
  • 結果: テキスト=結果、横幅="親要素に合わせる"
  • ウェブビュー1: 目に見える=チェックを外す

レイアウト パレットから 水平配置コンポーネント を8個ビューアーに追加し、横幅はすべて"親要素に合わせる"に設定します。名前は水平配置1から水平配置8になります。それぞれの水平配置ユーザーインターフェース パレットからボタンを4個ずつ追加します。すべてのボタンのフォントサイズは20、横幅は25%にします。名前とテキストは次のようにします。

  • 水平配置1

    • 名前=PI、テキスト=π
    • 名前=E、テキスト=e
    • 名前=左かっこ、テキスト=(
    • 名前=右かっこ、テキスト=)

  • 水平配置2

    • 名前=累乗、テキスト=^
    • 名前=階乗、テキスト=!
    • 名前=LOG、テキスト=log
    • 名前=LN、テキスト=ln

  • 水平配置3

    • 名前=SQRT、テキスト=√
    • 名前=SIN、テキスト=sin
    • 名前=COS、テキスト=cos
    • 名前=TAN、テキスト=tan

  • 水平配置4

    • 名前=AC、テキスト=AC
    • 名前=符号、テキスト=±
    • 名前=パーセント、テキスト=%
    • 名前=除、テキスト=÷

  • 水平配置5

    • 名前=n7、テキスト=7
    • 名前=n8、テキスト=8
    • 名前=n9、テキスト=9
    • 名前=乗、テキスト=乗

  • 水平配置6

    • 名前=n4、テキスト=4
    • 名前=n5、テキスト=5
    • 名前=n6、テキスト=6
    • 名前=減、テキスト=−

  • 水平配置7

    • 名前=n1、テキスト=1
    • 名前=n2、テキスト=2
    • 名前=n3、テキスト=3
    • 名前=加、テキスト=+

  • 水平配置8

    • 名前=n0、テキスト=0
    • 名前=小数点、テキスト=.
    • 名前=削除、テキスト=◀︎
    • 名前=イコール、テキスト==

下図のようになります。携帯電話サイズだとすべてのボタンが見えないのでタブレットサイズで表示しています。

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

🔒 このページは以下の会員レベルで閲覧できます

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