2012年5月29日火曜日

バリ島の斜面を見て、質的分析と量的分析の違いを知る ~ 2つの正確性:「物事を正しく示す=Accurate」と「物事をぼやかさずに示す=Precise」 ~

土地が稲作に対して適切かどうかは、水がどれぐらい豊富、土壌のタイプはどうなのか、勾配は急なのか調べるのが、定説となっている。例えば、FAOはStep 5. Evaluate land suitabilityはこの様な決定条件を持っている。

そこで、バリ島の土地がどれぐらい急なのか見てみたら「正確性に関する質的分析と量的分析の特徴」を思いついたので書いてみる。基本的に傾斜が急な場合であっても、水の可用性が高く、ベンチテラス(段々畑)が構築されるのなら、その土地は水田稲作に適しているといえます。しかし、急な斜面は浸食のリスクが高く、設置コストより高くなります。したがって、平坦な土地は、水稲栽培に最も適しており、適合性は、斜面は非常に険しい場合非常に低くなります。

稲作地の適合性を見るために、斜面に関する図を見てみました。

バリ島の斜面を測定した地図が2つあります。下記のどちらの地図も赤い所は、斜面が急で、緑がそこそこ急で、他の場所は平地で有る事を示しています。


図1


図2


図を見比べると結果がかなり違いますよね。図1では、への字に傾斜の強い場所があり、他は殆ど平地です。図2では、適度の傾斜が強いところが多いです。

実際はこんな感じです。バリの中央にへの字に山脈があるのがわかります。

図3


「傾斜の強い」か「適度に強い」は、スケールの違いからかもしれませんが、図2では、平地を判断されたところが、斜面の間にあり不自然な感じがします。


図1は村ごとに、「あなたの村の傾斜はどうですか」と聞いた質的な調査方法よって作られております。図2は斜度を器具を使って量的にサンプルして作られております。

知覚や経験からは、人間は平均や全体のトレンドを認識する能力は優れており、質的な分析方法だと「ぼやけている」かもしれませんが、「大体この村が斜面にあるのかどうか」判断することが出来ます。


量的な分析は、きちんと行えば「正確な斜面の量」が出るのですが、そのサンプルがその土地の平均するような値でなければ、「間違った代表」になってしまします。

正確とは、このブログでも何度か書いていますが、「物事を正しく示す=Accurate」「物事をぼやかさずに示す=Precise」の2つがあります。


今回の場合、図1の質的な分析のだと、「斜度は37度」などと「物事をぼやかさずに示す」事ができなかったかもしれませんが、どの地域の傾斜が強いかと「正しく示した」とおもいます。

一方、図2の量的な分析ですと、「斜度は37度」と言い切れたかもしれませんが、図3と比べるとそれが正しいとは思えません。

今回のケースでは、途上国での調査の特徴や予算の都合の為、質的な分析のほうが優れていたといえると思いますが、全てのケースでこの様ではありません。調査のタイミングや場所によって、分析方法は選ぶべきでしょう。これは又別の機会で話します。

最後に、実際の水田稲作地の地図を貼っておきます。ピンク色が稲作地を示しています。降雨量や土壌を考慮しなくても、水田の稲作地が平地に集中していることがわかります。傾斜は稲作地を決める重要な要因なんですね。





2012年5月24日木曜日

Android4.0、アイスクリームサンドイッチ(ICS)にソフトキーを表示させる方法

Googleが作るスマートフォン向けオペレーションシステムAndroidのバージョンは現在4.0で、アイスクリームサンドイッチ(ICS)といわれています。このAndroid 4.0はディフォルトではハードウェアのキーを廃して、画面に表示されるソフトキーで操作することとなりました。しかし、現在、Android4.0の様に、デザインされたスマートフォンは数少ないので、現実多くのAndroid 4.0携帯電話はハードウェア・キーを引き続き使用することになる。

このソフトキーを使えるようになると、役に立つことがある。自分のスマートフォンは2年ほど前に販売されたGalaxy Sの一機種である。そして、なぜか、ハードウェア・キーは動かなくなった。それならと、Android 4.0をインストールして、ソフトキーをハードウェア・キーの代わりにすることにした。結果、上手く行ったので、メモとして簡単に方法を記載しておきます。


Android4.0にアップデート

まずは、私の携帯電話は正式にAndroid4.0にアップデートされておりませんので、Galaxy Nexus ROMをポートしたDark Knight 3をインストールしました。これで、まずはAndroid 4.0が手に入りました。

http://forum.xda-developers.com/showthread.php?t=1501615

このようなカスタムロムを入れるのは、ルート化するなどのハードルがありますが、比較的に簡単に行うことが出来ます。例えば、この様な記事がたくさん書かれておりますので、それにきちんと従って行いました。もちろん自己責任でよろしくお願いいたします。

http://www.androidauthority.com/captivate-android-4-0-3-ice-cream-sandwich-dark-knight-rom-56725/


ADBとUSBドライバ―の導入

ソフトキーを導入するには、既にインストールされているAndroidオペレーションシステムのファイルを書き換える必要があります。その為に、Android Debug Bridge(ADB)と言われるツールを使い、PCやMac等から、書き換えるファイルを入れ替えます。


How to Install and Set up ADB/USB Drivers on Android0
http://www.downloadatoz.com/howto/how-to-install-and-set-up-adb-usb-drivers-on-android,22531.html


この記事を元に、Androidの開発ツールをPCにインストールします。現在、adb.exeはplatform-toolsに入っていますので、開発ツールをインストールした後に、SDK Managerを使ってインストールする必要があります。でも、どこかから、adb.exeとAdbWinApi.dllをダウンロードして、作業フォルダにいれても動いたりします。

その時、ADBに付随したUSBドライバ―を入れる必要があります。それをもし、サムソン等の端末会社のドライバ―が入っている場合、 USBDeviewを使って、サムソン端末なら端末が使っているサムソンのドライバ―を全て削除します 。それから、再度端末をUSBで接続すると、ADBに対応したドライバ―がインストールされるはずです。





ここから、ようやくソフトキーを導入するスタート・ラインに立てたと言うことです。一つの記事で全てを説明しているものが無かったので、複数の記事を読みました。

How to decompile/compile using apktools
http://www.galaxynexusforum.com/forum/galaxy-nexus-hacking-mods-lte-cdma/2562-how-decompile-compile-using-apktools.html

enable ics keys on any ics rom detailed guide
http://forum.xda-developers.com/showthread.php?t=1391281&goto=nextnewest

[HOWTO] enable on-screen buttons in ICS rom

http://forum.xda-developers.com/showthread.php?t=1364757




framework-res.apkの抜き出し


ココに記載されている、 apktools-ics - MinusZIPファイルを解凍して適当なフォルダに入れます。例えば、c:\apktoolsとかでよいでしょう。これらのツールはコマンドラインでそのまま動かすことが出来ますが、 Java runtimeを入れておく必要があります。

そして、このc:\apktoolsフォルダに携帯端末からframework-res.apkを抜き出します。

まずは、携帯電話をUSB debugging modeにセットアップしてから、コンピューターにUSBで接続します。これからはウインドウズのCMDを使ってコマンドラインで操作を行います。私はUNIX環境が好きなので、Cygwinを代わりに使います。

指定したフォルダに移動します。

cd "c:\apktools"

そして、framework-res.apkを抜き出します

adb remountadb pull /system/framework/framework-res.apk

こんな記述を見たら、抜き出すことに成功したはずです。

2932 KB/s (4955204 bytes in 1.650s)



framework-res.apkのデコンパイル


"c:\apktools"フォルダに入っている、apktool.jar.1.4.2をapktool.jarに名前の変更をします。

念のためにフレームワークをインストールします。これは一度でOKです。

java -jar apktool.jar if framework-res.apk

これで、framework-resをデコンパイルすることが出来ます。この時、バージョン1.4.2を使わないと失敗します。

java -jar apktool.jar d framework-res.apk


framework-res.apkの変更


"c:\apktools"に\framework-resのフォルダが出来ているはずです。その中の、\res\values\bools.xmlをテキストエディタで開けてください。そして、下の写真の様に、bools.xmlconfig_showNavigationBarをtrueの値に書き換えます。


http://forum.xda-developers.com/showthread.php?t=1364757
[HOWTO] enable on-screen buttons in ICS rom - xda-developers via kwout

同じように、 dimens.xmlを開いて、navigation_bar_heightの値を37.0dipに書き換えます。これをする事により、画面が狭くなるのをある程度やわらげます。34.0でも問題ありませんでした。





framework-res.apkのリコンパイル


そしたら、次はリコンパイルを行います。大事なことは、バージョン1.4.3のapktool.jarを使うことです。その為、今のapktool.jarをapktool.jar.1.4.2に名前を変え、apktool.jar.1.4.3をapktool.jarにします。

そして、リコンパイル!完了するのに数分かかるかもしれません。

java -jar apktool.jar b framework-res

成功したら、こんなメッセージが見れるはずです。

W: Could not find sources
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...


そして、c:\apktools\framework-res\distに新しいframework-res.apkが入っているはずです。

この新しいframework-res.apkをそのまま、携帯端末に戻してはいけません。変更箇所だけを取り出して、それを元にframework-res.apkに戻してやるのです。今回はXMLファイルだけを変更したので、resources.arscを移し替えれば良いです。7zip等を使えば簡単に置き換えることが出来ます。



framework-res.apkを携帯端末に戻す


終わったら、framework-res.apkを携帯端末に戻してあげます。

adb push framework-res.apk /system/framework/

こんなメッセージが出たら終了です。
1457 KB/s (4955245 bytes in 3.319s)

後はリブートしてあげたらオシマイです。

adb reboot


アイスクリームサンドイッチ(ICS)が立ち上がったら、下のように3つのソフトキーが画面の下に見えるはずです。




今回はかなりギークな内容になってしましました。もし何が書いてあるのか分からないようでしたら、下手に弄らないことです。携帯端末が動かなくなっても私は一切は責任はもてません。自己責任でよろしくお願いいたします。