見出し画像

生成AIがApp Inventorのプログラミングにどの程度役立ちそうか、ザクっと確認したが、意外な結果に!

 AppInventorを利用したプログラミングは、簡単に始められて自由度もある。何と言ってもスマホアプリが作成できるで、作成したアプリを日常的に使えるのがとても良い。欠点はドキュメントが少ないこと。ということで、このnoteもはじめたが、なかなか進まない。
 一方、最近生成AIでプログラミングが話題に。これを何とか、AppInventorの開発に利用できないかと、まずは実力のほどを確認。


確認対象の生成AIと確認方法

 まずは基本的なところで、少しAppInventor特有な部分も含み、簡単まものを、と言うことで、下記のプロンプトを各生成AIに投げてみました。

プロンプト

AppInventorでのプログラム開発について教えてください。ボタンをクリックすると、現在時刻を表示するにはどうしたら良いですか?
ザクっとし過ぎだけど、一発目はこんなところで。

確認対象の生成AI

対象にしたのは、次の5つ。いずれも、無料で使えるもの。課金すれば結果は変わっていたかもしれない。
 ① ChatGPT
 ② App Inventor 2 App Maker日本語AI2のサイトで公開されている
 ③ Gemini
 ④ Copilot :Edge で実行。Egeには何も表示していない状態で
 ⑤ Perplexity:検索システムの分類かもしれないが、出力を見れば生成AIそのものなので、これも対象にした

出力結果は

 生成AIの出力は文字での出力のため、それを読んで開発工程を人間(私)が実施。正しい結果は図1のようになってほしい。

図1:こんな感じになって欲しい
  • 結果は意外で、図1のブロック図が完成し時刻を表示できたのは、⑤ Perplexity だけだった。

  • ① ChatGPT、② App Inventor 2 App Maker は、ブロックの説明は分かりやすかったが、時間インスタンスを文字列に変換する機能がもれており、ブロック図が完成しなかった(図2)。それを除けば、全体としては、② App Inventor 2 App Maker が一番的確だった。

  • Gemini :時間を扱う Clock コンポーネントの記載がなく、時計を実現することは不可能。

  • Copilot :ダイヤログボックスを表示など、余分な機能を追加。一般的な記述でプログラムは不可能。

図1:時間情報をラベルにセットできない

生成結果の詳細は、下記のPDFで確認していただきたい。


まとめ

 たった一つのプロンプトでの比較で、いささか乱暴だけどまずはこんな結果でした。回答は、図3の上のように文字でかえって来るので、これを見てブロックに変換できる知識は最低限必要ではあるが、ヒントにはなると思う。
 なお、② App Inventor 2 App Maker は、一番実力がありそうなので MIT App Inventor2 日本語化プロジェクトサイトで詳細や実行例を確認していただきたい。

図3:上の文字回答から下のブロックに変換できれば人には使える

一方、ブロック図をコメントしてもらうのは使えそう

 これまではプログラム作成の観点で、確認したが、他人のブロック図や自分が開発したものでも内容を忘れてしまったブロック図の処理内容をさっと確認するのにも活用できそうだ。

 例えば今回作成したブロック図(図)に対し、ChatGTPで図のような質問をすると

下記の回答が返ってくる(コピーで崩れた部分は修正してます)

図に示されているブロック図の処理内容を説明します。

ブロックの説明>
イベントブロック:when Button1.Click
このブロックは、Button1がクリックされたときに実行されるコードを指定します。
アクションブロック:set Label1.Text to
このブロックは、Label1のテキストを設定するためのものです。Button1がクリックされたときに、Label1のテキストを次のブロックで指定された値に設定します。
関数ブロック:call Clock1.FormatDate
このブロックは、Clock1コンポーネントのFormatDateメソッドを呼び出します。このメソッドは、特定の日時(インスタント)を指定されたパターンでフォーマットします。
引数ブロック:instantおよびpattern
instant引数には、call Clock1.Nowブロックが接続されています。call Clock1.Nowブロックは現在の日時を返します。
pattern引数には、「HH:mm:ss」というテキストブロックが接続されています。これは時刻を「時:分:秒」という形式でフォーマットするパターンです。

<処理の流れ>
ユーザーがButton1をクリックすると、イベントwhen Button1.Clickがトリガーされます。
Clock1.Nowメソッドが呼び出され、現在の日時が取得されます。
取得した日時が、Clock1.FormatDateメソッドに渡され、「HH:mm:ss」というパターンでフォーマットされます。
フォーマットされた時刻が、Label1.Textに設定され、Label1に現在時刻が表示されます。

このようにして、ボタンをクリックすると現在時刻が「時:分:秒」の形式で表示される仕組みになっています。

こちらは十分に使えそうだ。

(以上)