« 2007年11月18日 - 2007年11月24日 | トップページ | 2007年12月2日 - 2007年12月8日 »

2007年11月25日 - 2007年12月1日

2007年11月25日 (日)

HelloWorldのソースコードについて考える 続き

 

前回、HelloWorldのソースコードについて考える で、実際に稼動するHello,Android! からサンプル の使い方を探ろうとしたのですが、いまいち解決しませんでした。

 そもそも、Hello,Android!のサンプル の一行が、まったくわかりませんでした。

       setContentView(R.layout.hello_world);

 この一行について、もう一度よく考えてみます。とりあえず、setContentView()メソッドの引数にR.layout.hello_worldを取っていることは、わかります。 

 setContentView()メソッドは、setText()でセットした文字列をAndroidの画面に表示する役目があるらしい??ので、おそらくR.layout.hello_worldは、「Hello!Android!」のような任意の文字列をセットする役目がありそうです。

 そこで、先ず最初に「R(ラージアール)」について考えてみます。これは何らかの意味を持った記号だと思っていた(思い込んでいた)のですが、某所で質問した所、偉い方々が教えてくれました。(教えて君ですいません。)

229 :デフォルトの名無しさん:2007/11/19(月) 22:28:42
resフォルダにあわせてR.Javaは自動生成される。
中身はリソースID。
235 :デフォルトの名無しさん:2007/11/20(火) 00:23:43
実際に Eclipse で Android プロジェクト作ってみたらすぐわかると思うんだが・・・

236 :デフォルトの名無しさん:2007/11/20(火) 06:37:03
あんまいじめんなや、
237 :デフォルトの名無しさん:2007/11/20(火) 07:39:13
res/layout/ フォルダみりゃ一発で分かると思うんだがなぁ。

238 :228:2007/11/20(火) 07:43:22
>>235-237
ありがとうございます
 
たしかにオートコンパイルされたものを眺めたらわかりそうです
res/layoutなんてのも出来てたんですね
 
239 :デフォルトの名無しさん:2007/11/20(火) 07:46:13
逆だ。res/ の内容をリソースとしてバイナリに変換した際に R.javaがビルドのたびに生成される。

 更にsetContentView(R.layout.hello_world);について強力なヒントが!(つーか、答えそのもの)

233 :デフォルトの名無しさん:2007/11/19(月) 23:17:51
>>232
public class layout {
public class Hello_world implements TextView {
public Hello_workd { setText("Hello, Android"); }
}
public static Hello_world hello_world = new Hello_world();
}
 

ここまで、ヒントもらって、やっとわかったああああああああ!

って言ってもAndroidについてじゃあ、ありません。javaの超基本についてですw。おそらくjavaと言うのは、ツリー型の構造をしていて、ツリーの頂点にjavaの基本となるような機能をもったクラスがあって、そのクラスの下にクラスがどんどんくっついていくような感じじゃないかと。

 調べてみるとありました。Objectクラス

Object クラスは、クラス階層のルートです。すべてのクラスは、スーパークラスとして Object を持ちます。配列を含むすべてのオブジェクトは、このクラスのメソッドを実装します。

 らしいです。ここから推測するに、AndroidもObjectクラスの木にぶらさがったクラスで、Android自身もAndroidの頂点になるクラスがあって、そのクラスにどんどんAndroid独自の機能をもったクラスがぶら下がっているのではないかと想像できます。

 この考えでいくと、まずはAndroidがどのような設計で、どう動くかをおおまかに知って、それからsetContentView(R.layout.hello_world);については、某所の偉い方々に聞いた通りEclipseのプロジェクト内のディレクトリ構造や自動生成されるファイルを見ればわかるんじゃないかな???

 ところで、実はエクササイズ日本語版)なる練習用サンプルコードが「Hello,Android!」以外にも用意されていることがわかりました。

 次回からは、このエクササイズ日本語版)をやりすすめてみたいと思います。一つのことを深く調べていくのも大事だと思いますが、ある程度の理解で先へすすめてみるのも学習の効率を上げると思うので…

 もちろん、並行してsetContentView(R.layout.hello_world);を理解するため、javaの基本から理解することと、Androidがどのような設計で、どう動くかを考えてみようと思います。

| | コメント (2) | トラックバック (0)

2007年11月27日 (火)

Androidの構成

 Googleの発表した携帯向けオープンプラットフォームAndroidですが、Google様がやることだし、携帯向けだし、何かすごい技術でゼロから作りまくったのか?なんて思えますが実際は、既にあるオープンソースの優秀なソフトウェアを組み合わせてAndroidは実現されてるらしいです。

 ゼロからやるよりも優秀なオープンソースを使う方が、ノウハウも蓄積されているだろうし、何より多くのプログラマーに取っては見慣れたものなので参入しやすいのでは無いでしょうか?

 AndroidのアーキテクチャについてはWhat is Android?日本語版 )に詳しく書かれています。また、太田一樹。さんのサイトでAndroidの構成について書かれています。

 Androidの構成について詳細に把握しようとすると私のような素人にはわかりにくいので、素人なりにプログラミングに必要であるだろうと言う部分のみを取り出して、Androidの構成について考えてみました。

 色々調べて、触ってみた感触だとこんな感じです。

Kousei

 ハードウェア上でqemuが動作、その上でlinuxが動作し、android本体がlinuxのアプリケーションとして動作する。そして、開発者はandroidの提供するAPIを使用できます。一つづつ簡単に見ていくと

●ハードウェア
 これはそのままハードです。携帯端末になりますが、動作するのはeqmuのため実は携帯端末に限らない?実際、テレビにもAndroid? なんて話もあるので将来的にはありとあらゆる機械にAndroidが搭載されていくのでしょうか?

●qemu
 qemuと言ってもqemuそのものでは無く、太田一樹。さんのサイトによるとqemuベースで追加されたコードは1万行ほどらしいです。eqmu自体は、VMwareやVirtualPCと同じPCエミュレーターですが、無償且つ、今回AndroidでサポートするARM以外にも一般的なCPU全般手広くサポートされています。

●Linux
 qemu上で動作しています。Androidエミュ上でCプログラムを動かしてみる で実際にログインしてCで書いたプログラムを動かしてみました。Gimiteさん はRubyまで動かしてました。

●Android本体
 Apache Harmony Java VMに少しだけ手を加えたものらしいです。Android本体はJDKと同じようなものでjavaのいろんなサービスを提供するバーチャルマシンだと理解しています。(*注意 素人の浅はかな理解です!)

●Android API
 android.で始まるクラスの集まりです。Googleが携帯用OSを無償配布によると…

50 :デフォルトの名無しさん:2007/11/13(火) 15:22:57
独自部分は、
 
android
android.app
android.content
android.database
android.database.sqlite
android.graphics
android.graphics.drawable
android.graphics.glutils
android.hardware
android.location
android.media
android.net
android.opengl
android.os
android.provider
android.sax
android.speech
android.speech.recognition
android.telephony
android.telephony.gsm    
android.text
android.text.method
android.text.style
android.text.util
android.util
android.view
android.view.animation
android.webkit
android.widget
com.google.android
com.google.android.maps
com.google.android.xmppService
 
だけだね。
そしてやっぱりgoogleサービスが入っている。
 
後はjava,javax, junit, org.apache,
org.bluez, org.json, org.w3m, org.xmlと有名どころのみ。
 
こりゃ、プログラマー集めやすいね。
 
 
とのこと。素人の私でもjava,javax,org.apacheあたりは知ってるのでjavaのプロに取ってはもう当たり前のパッケージ群なんでしょう…。

 以上、素人の脳内Android構成でした。

正確な情報は、What is Android?日本語版 )や太田一樹。さんのサイトを参考にして下さい。

| | コメント (0) | トラックバック (0)

2007年11月28日 (水)

チュートリアルに挑戦

 さすがGoogle様、Hello,Android! の次のステップとしてチュートリアル日本語版)が用意されています。エクササイズ1から進めることでノートパッドアプリケーションが動作するようです。

プロジェクトエクササイズアーカイブ(.zip)をダウンロードし、Eclipseに取り込んでエクササイズ1からエクササイズ3まで進めていけばノートパッドアプリケーションが徐々に完成していきます。

 アーカイブファイルには、Notepadv1、 Notepadv2、 Notepadv3、 Notepadv1Solution、 Notepadv2Solution 、Notepadv3Solution、以上6つのプロジェクトがあります。

Tutorial01

 Notepadv1は、エクササイズ1用のプロジェクトファイルで、このプロジェクトをベースにエクササイズ1を進めます。なお、Notepadv1Solutionとして完成したプロジェクトがサンプルとして用意されています。

 では、さっそくエクササイズ1に取り掛かります。と言いたいところですが、せっかく完成品が用意されていることですし、まずは、Notepadv1Solution、 Notepadv2Solution 、Notepadv3Solutionの3つをエクリプスに取り込んで完成品の動作を確認してみます。

 そもそも用意されている完成品が動作しないとなると、私のような素人にはお手上げになってしまいます。確認のためにも完成品を動作させることは役に立ちます。

 では、さっそく動作を確認します。まずはプロジェクトエクササイズアーカイブ(.zip)からNotepadCodeLab.zipをダウンロードします。次に、エクリプスを起動させ、パッケージエクスプローラーの中で右クリック>インポートを選択します。
Exercise00
「既存プロジェクトをワークスペースへ」を選択。
Exercise01
プロジェクトエクササイズアーカイブ(.zip)からダウンロードしたNotepadCodeLab.zipを選択し、開きます。NotepadCodeLab.zipを解凍すると、6つのプロジェクト用の6つのフォルダがあるのですが、今回はzipを解凍せずに6つのプロジェクトを一気に取り込みます。
Exercise02
アーカイブファイルの選択で全てにチェックを入れます。今回は、完成品の動作確認のみなので、Notepadv1Solution、 Notepadv2Solution 、Notepadv3Solutionの3つでいいのですが面倒なので全部取り込みます。
Exercise03
途中、上書き確認が出るかもしれませんが、全部上書きしておkです。
(Notepadv1Solution、 Notepadv2Solution 、Notepadv3Solutionの3つを律儀に選択すると確認はされません。やっぱりちゃんと選択した方が良いですねw)

 これでプロジェクトが取り込めたので、Notepadv1Solutionから順に実行していきます。パッケージエクスプローラーのNotepadv1Solutionで右クリック>実行>Android Applicationを選択します。
Exercise04

Androidエミュレーターが立ち上がって、画面にNotepad v1が表示されます。
Exercise05
とりあえず、これだけっぽいのでNotepadv1Solutionを終了します。適当に通話を切るボタンっぽいの押したら終了しました。エミュレーターごと落としてもかまいません。
Exercise06
同様にNotepadv2Solutionを実行してみます。
Exercise07
「Add Note」が選択できるようになっています。左側のボタンを押すと出てきます。(*正確な場所は忘れたので適当に押してみてくださいw。)
Exercise08
「Title」「Body」に適当に入力(日本語不可)して「Confirm」を押すとデータが保存されます。
Exercise09

 最後に、今までと同様にしてNotepadv3Solutionを実行すると、「Delete」が追加されています。
Exercise10
 結局、完成するのは、タイトルと本文に何か入力して保存し、編集したり削除したりするアプリケーションらしいです。


 ひととおり動作を確認したらプロジェクトを削除しておきます。パッケージエクスプローラーでインポートしたNotepadv1、 Notepadv2、 Notepadv3、 Notepadv1Solution、 Notepadv2Solution 、Notepadv3Solutionの上で右クリック>削除で削除できます。

Exercise20_2

 とりあえず動作確認ができたので、次回からはチュートリアルのエクササイズ1からすすめていこうと思います。

| | コメント (0) | トラックバック (0)

« 2007年11月18日 - 2007年11月24日 | トップページ | 2007年12月2日 - 2007年12月8日 »