androidアプリは普通はどうやってつくるの?

android標準のブラウザを使って操作するWebアプリであれば
フレームワークは特に関係なしに、なんでも組み合わせできる。

GoogleAppEngineにデータを登録したければ、slim3と組み合わせればいいし、
普通の業務アプリのように、OracleとかTomcatなんかを用意して、
使うだけなら、たとえばSAStrutsを使ったりして、
JSP(主にCSS)をスマートフォン向けに変えるだけでいい。

slim3http://sites.google.com/site/slim3documentja/
SAStrutshttp://sastruts.seasar.org/

そのタイプのアプリの場合、androidにはインストールしないで、
ブラウザでアクセスするだけ。

GAEのローカルサーバはlocalhostでしかアクセスできず、
androidエミュレータlocalhostにアクセスできないので、
eclipseのGAEの設定を変えて、
エミュレータからは192.168.XXX.XXXのような実ipでURLを指定する必要がある。
http://d.hatena.ne.jp/androidzaurus/20100511/1273534452

JavaScriptのライブラリとして有名な、JQueryスマートフォン版が
アルファ版ででている。
jQuery Mobile(http://jquerymobile.com/
これを使うと、比較的簡単にスマートフォン向けのサイトを作ることができる。
まだまだ資料は少ないが期待できる。

android単体でアプリを作る場合、androidの作法にのっとって、
画面の処理はActivityを継承して書く。イベントなどもこれに書く。
あまり、綺麗なソースにはならず、イベント用のクラスが必要になるなど、
かなり冗長と感じた。

開発言語としてはJavaだが、パフォーマンスが求められるところは
C++やCで書いて、それをJavaから実行したりするようだ。
まだjitコンパイラがでてないらしいので、それが出たらある程度はJava単体でも
速くなるのかもしれない。

Activityをコーディングするにあたって、画面のコントロールの取得やら初期化やら、
同じようなコードが目立った。これをDIで回避しようと、
カスタムアノテーションを作ってみたりもしたが、同じようなことを考える人はいて、
GoogleGuiceというDIAOPフレームワークがあるのだが、これのandroid版である
roboguiceというものがあった。
フィールドにアノテーションを書くだけでDIできて、ソースがかなりシンプルになる。
DIに慣れている人ならすぐに理解できると思う。

roboguice(http://code.google.com/p/roboguice/
日本語訳(http://tech.cm55.com/wiki/roboguice

androidにインストールするタイプのアプリは画面をxmlで書くのだが、
標準のEclipsePluginでは未完成といっていい。
マウスでボタンなどを配置することや調整はできない。
標準よりはぜんぜんましな、マウスなどで画面を作成できるツールがある。
DroidDraw(http://droiddraw.org/
サイト上でも作れるようだが、ダウンロードして使う。
これで生成したxmlを取り込めば、画面作成が多少楽になるかもしれない。

FlexAIR)とandroidを組み合わせる場合。
Webアプリでもインストールアプリでも、有償のFlash Builderは必要になってくるのだが。
android用(mobile用)のプロジェクトが作れるようになっている。

Flexは所詮、見た目の部分だけなので、
インストールアプリで、Activityのようなローカル画面遷移したりするアプリは
mxmlActionScriptで作ることができ、
ここにandroidJavaやActivityはでてこないようだ。
またWebアプリではPC版のFlexアプリと同じように、
画面をmxmlActionScriptで書いて、裏はたとえばBlazeDSを使うように、
見た目の画面の部分が変わるだけで、普通のWebアプリの作り方と大差はなさそうだ。

Flexはバッテリー消費が個人的に気になる。
携帯サイトのFlashゲームがバッテリー喰ってこまってるから。

あと、GoogleAppEngineとFlexJavaを組み合わせるフレームワークとして、
S3BlazeDSがでている。
S3BlazeDS(http://d.hatena.ne.jp/kissrobber/20101110/1289409641

GAEを使わずにTomcatOracleを使う通常のWebアプリであれば、
FlexJavaを組み合わせるフレームワークとしてはS2BlazeDSなどを使う。
これは昔からあるのでよく知られていると思う。
S2BlazeDShttp://s2blazeds.seasar.org/

インストールアプリで、Http通信などを使ってデータを受信したり送信したり
することはできる。Webアプリよりまわりくどくなるけど。
データだけならJSONで扱った方が無難か。
http://androside.com/page_contents/page_android_fileUpload.html
http://se-suganuma.blogspot.com/2010/02/androidhttpclienthttpgetjson.html

Javaでなく、C#を使いたい。
そんな人にはmonodroidというフレームワークがまだクローズドベータで開発されている。
画面のxmlJavaでの作り方と同じだが、
Activityなど、Javaで書く部分はC#で、Javaよりもシンプルに記述できる。
やっていることは同じなので、全体的な作りはJavaと大してかわらないと思う。
MonoDroid(http://d.hatena.ne.jp/atsushieno/20100831/p2

androidの標準的な作り方がわからない。

Android Marketとかに登録されているのはインストールアプリだろう。
でも、企業の中で使う業務アプリとしての位置付けなら、Webアプリになるんだろうか。

androidだけでなく、iphone向けにも作りたいという場合、
Webアプリだと楽だけど。
インストールアプリとして作りたい(売りたい)場合は
それぞれJavaとObjectC++でつくらないといけない。
流用がきくようなツールはあるんだろうか。

何を作るにしても、まずはandroid用のプログラムのライブラリを作ってからに
した方がいいかもしれない。