GoogleAnalytics

SyntaxHighlighter

2011年5月21日土曜日

[Android] (´-`).oO( App Inventor でマッシュルームを開発できるようにならないかなぁ… )

App Inventor のユーザーFAQ(原文日本語訳)に、以下のような質疑応答があります。

App Inventor はただのおもちゃ言語なのですか? これで高性能なアプリは作れるのですか?

App Inventor には制限があるとはいえ、複雑なアプリを作成することができます。言語は、foreach、while、および if-else などのプログラミングにおける構成要素をビジュアル ( ブロック ) なかたちで提供します。すべてではないにせよ、Android の機能のいくつかに対応する高レベルのコンポーネントやオペレーション ( ブロック群 ) があります。ウェブサービスやデータベースと通信するメカニズムもあります。コンポーネント開発キットが現在考案中です。今後プログラマーたちは、 Java を使った App Inventor のコンポーネントを作成できるようになり、App Inventor の機能性も拡大していくことでしょう。
私は、現状では「おもちゃ言語」だと思っていますw

確かに、1画面で収まる UI なら(面倒ではあるが)複雑なアプリも作れます。しかし、「画面遷移できない」「オプションメニューが作れない」「任意の Intent を受け取れない」では、『役に立つ』アプリは作りにくいのではないでしょうか。

現状の App Inventor では『役に立つ』アプリができない、ってんなら、他のアプリで『役に立つようにしてみせる』って手があります。

というわけで、App Inventor で開発したアプリを、日本語IME「Simeji」のマッシュルームアプリとして使えるようにするヘルパーアプリ『あいまっしゅ』を作ってみました… Java でw



「Simeji」のマッシュルーム機能と、その実装の詳細は、ココを参照するとして、ざっくり概説すると、
  • 「Simeji」から、特定の ACTION と CATEGORY で呼び出され、
  • 変換途中の文字列を【replace_key】をキーとする Intent で受け取り、
  • 文字列をイジくった後、
  • 【replace_key】をキーとする Intent でイジくった文字列を「Simeji」へ返す。
という処理をおこなっています。

これに対し、App Inventor で作成したアプリは、
  1. 起動する ACTION と CATEGORY は、ランチャーからのものだけ
  2. 呼び出し元から文字列を渡されることは可能だが、その Intent のキーは【APP_INVENTOR_START】固定
  3. 呼び出し元へ文字列を返すことは可能だが、その Intent のキーは【APP_INVENTOR_RESULT】固定
と制限かかりまくりで、「Simeji」からダイレクトにマッシュルームアプリとして呼び出すことは(ほぼ)不可能です。
※上記 1. は、前エントリの方法で Android_Manifest.xml を書き換えれば対応できますが、他がどうにもなりません…

でも、制限されてるとはいえ文字列のやり取りは可能なわけですから、
  1.  「Simeji」から、特定の ACTION と CATEGORY で呼び出され、
  2.  変換途中の文字列を【replace_key】をキーとする Intent で受け取り、
  3.  【APP_INVENTOR_START】をキーとする Intent に作り替えて、
  4. ランチャーのACTION と CATEGORY で App Inventor 製アプリを呼び出し、
  5. App Inventor 製アプリから【APP_INVENTOR_RESULT】で返ってきた文字列を受け取り、
  6.  【replace_key】をキーとする Intent に作り替えて「Simeji」へ返す。
という中継アプリを介してやれば、(手数は増えますが)できないわけではありません。

てなわけで、「EclipseAndroid SDK + Java」で、上記中継をおこなうヘルパーアプリ『あいまっしゅ』を作りました。
ダウンロードはココか、下のコードから。






-- 2011-05-21 --

あいまっしゅ』を v1.1 2011521a版に更新しました

---------------

また、『あいまっしゅ』のテスト用として、『なんでだロイド』というあいまっしゅアプリをApp Inventor で作りました(アプリ名は日本語にしてありますw)。
こちらのダウンロードはココか、下のコードから。 ソースコードはココからどうぞ。





あいまっしゅ』の使い方ですが、インストール後に「Simeji」のマッシュルームか、ランチャーから起動します。

最初はあいまっしゅアプリが1つも登録されていませんので、空のリスト(末尾に【新規追加…】があるのみ)が表示されます。
【新規追加…】をクリックすると、インストールされているアプリの一覧ダイアログが表示されますので、登録したいあいまっしゅアプリを選択してください(【戻る】ボタンで選択しないで戻ります)。

これであいまっしゅアプリが1つ登録されました。複数登録する場合は続けて操作できます。
登録されたあいまっしゅアプリ上で長押ししますと、【削除】ダイアログが表示されます。
※【新規追加…】も長押しで【削除】ダイアログが出てしまいますが気にしないでくださいw(削除できません)

では早速使ってみましょう。
「Simeji」の文字列変換途中でマッシュルームボタンを押してマッシュルーム選択ダイアログを表示させると、『あいまっしゅ』が候補にあります。

ここで『あいまっしゅ』を選ぶと、先ほどの登録画面になりますので、そこであいまっしゅアプリを選んでください。
そうすると選んだあいまっしゅアプリに変換途中の文字列が渡されてイジくられているはずです。

【変換】ボタンをクリックするとイジられた文字列が大元のアプリに返されます。

また、【キャンセル】ボタンならマッシュルーム選択ダイアログに戻りますので、あいまっしゅアプリやマッシュルームアプリを選びなおすことが可能です。

ちなみに、ここで使ってるエディターアプリは『gEditor』です(理由は .apk ファイルが入手できるのでエミュレータに入れ易いからw)。


App Inventor で作ったあいまっしゅアプリ『なんでだロイド』のソースですが、以下のようなものになっています。
【call get start text】ブロックが『あいまっしゅ』から渡される文字列で、
イジった後の文字列を【call close screen with result】で『あいまっしゅ』へ返しています。



さて、これで App Inventor で作ったアプリを『役に立たせる』ことができそうです。

…オレ、「Simeji」使ってないけどナw

0 件のコメント: