2009年8月14日

Androidの開発言語simpleを試す

Android用のVisualBasicともいうべきsimpleというアプリケーション開発環境が公開されていることを知ったので、少しだけテストしてみました。

インストールや設定・コンパイル・HT-03Aへの移送方法については、

Androidアプリケーション用開発&実行環境 simpleを使ってみる

に書かれているのを参考にし、
言語の仕様については、simpleプロジェクトが提供しているサンプルプログラムのTetrisのソースや、開発プロジェクトのWikiを参考にしながら、お決まりのHelloWorldに少しだけ毛の生えたようなプログラムを作ってみました。

基本的には、開発用のプロジェクト用に、HelloWorldというディレクトリを作成後、その中に以下の2つのファイルをそれぞれの場所に作成して、

  1. HelloWorldフォルダーの一つ上のディレクトリをカレントディレクトリとして、
    simplec HelloWorld\simpleproject\project.properties
    というコマンドでコンパイル

  2. HT-03A実機をUSB接続後に
    adb install  -r "HelloWorld\build\deploy\HelloWorld.apk"
    でインストール


という手順で、HT-03A上での稼動が確認できました。

HelloWorldHelloNobuNobu

ソースにもあるように、基本的には各イベントハンドラーや関数定義などをBasicもどきの言語にて記述するロジック部分と、$Properties以降で定義する実際のフォーム(画面)定義部分から、一つのファイルが構成されています。フォームのレイアウト定義は、今回のように$Propeties内に静的に定義する以外に、Initialize()メソッド内で動的にそれぞれの画面コンポーネントクラスを生成する方法もあるようです。

また、インストール手順で判るように、simplecコマンドによるコンパイル時に、simpleで書かれたクラスファイルがJAVAのクラスファイルに変換されて、AndroidのSDKによってAndroid標準のインストールパッケージが生成されるようになっています。

simpleプロジェクトサイトのWikiのリファレンスを見たところでは、まだまだ開発途上でファイルI/O・センサー入力などのクラスやライブラリは存在していますが、ネットワークアクセス用のライブラリはまだ用意されていないようですので、現在のAndroidアプリで一般的なインターネットとのコラボレーションの実現するには、もう少し待たなくてはいけないようです。
(ドキュメントの全部を読みつくしたわけでは無いので、自信はありませんが・・・)

画面定義もVBライクに出来る様な統合環境が出来れば、かなり便利になると思いますが、今のところはJAVAが得意な人は、Eclipse上での標準的な開発を行った方が、 早いかもしれません。 これからに期待っていうところでしょうかね。

・HelloWorld\simpleproject\project.properties

[sourcecode language='jscript']
main=com.nobunobu.simple.helloworld.HelloWorld
name=HelloWorld
assets=../assets
source=../src
build=../build
[/sourcecode]

・HelloWorld\src\com\nobunobu\simple\helloworld\HelloWorld.simple

[sourcecode language='vb']
' -----------------------------------------------------------------------------
' Initialization event used to dynamically construct the Application
' -----------------------------------------------------------------------------
Event HelloWorld.Initialize()
AddMenuItem("Quit")
End Event

' -----------------------------------------------------------------------------
' Analyze keyboard input
' -----------------------------------------------------------------------------
Event HelloWorld.Keyboard(keycode As Integer)
Select keycode
Case Component.KEYCODE_BACK
Finish()
End Select
End Event

' -----------------------------------------------------------------------------
' Analyze touch input
' -----------------------------------------------------------------------------
Event HelloWorld.TouchGesture(direction As Integer)
End Event

' -----------------------------------------------------------------------------
' Handle menu events
' -----------------------------------------------------------------------------
Event HelloWorld.MenuSelected(caption As String)
Select caption
Case "Quit"
Finish()
End Select
End Event

' -----------------------------------------------------------------------------
' Handle Form Button Click event
' -----------------------------------------------------------------------------
Event GoButton.Click()
If InputText.Text = "" Then
MessageLabel.Text = "Hello World!!"
Else
MessageLabel.Text = "Hello "& InputText.Text & "!!"
End If
End Event

$Properties
$Source $Form

$Define HelloWorld $As Form
Layout = Component.LAYOUT_LINEAR
Layout.Orientation = 1
BackgroundColor = &HFF444444
Title = "Hello World"

$Define Panel1 $As Panel
Layout = Component.LAYOUT_TABLE
Layout.Columns = 2
Layout.Rows = 1
Width=Component.LENGTH_FILL_PARENT
BackgroundColor = &HFF444444

$Define InputText $As TextBox
Column = 0
Row =0
Width=180
$End $Define

$Define GoButton $As Button
Column = 1
Row =0
Width=60
Text="Your Name?"
$End $Define
$End $Define

$Define MessageLabel $As Label
Width=Component.LENGTH_FILL_PARENT
Justification = Component.JUSTIFY_CENTER
Text = "Hello World!!"
FontSize = 30
TextColor = &HFFFFFFFF
$End $Define

$End $Define
$End $Properties
[/sourcecode]

0 件のコメント:

コメントを投稿