Pages

2011年11月13日日曜日

Androidアプリ開発環境

Androidアプリケーションの開発に興味が出たので,Androidアプリケーションの開発環境を構築しました.

Androidの開発環境を導入する手順[1][2]は要約すると以下の通りです.

① "JRE"のインストール(eclipse実行用)
② "Eclipse IDE for Java EE Developers"をダウンロード
③ Eclipseに"ADT Plugin"をインストール
④ "Android SDK"をダウンロード
⑤ "Android NDK"をダウンロード(使わない人は導入しなくて良い)

Androidの開発環境の導入が終わると,EclipseからAndroidエミュレータを起動することができます.

しかし,このエミュレータの起動が遅い!
起動コストが高すぎる!

この対処法として,VirtualBoxにAndroidOSをインストールして起動コストを下げる方法[3]を実行しました.
これの導入には少し手間取ったので,次の投稿に導入の詳しい説明を記述しようと思います.


[参考資料]
[1] 安生真, 柴田文彦, 藤枝崇史: 初歩からわかるAndroid最新プログラミング, インプレスジャパン(2010)
[2] マンガで分かるAndroid開発環境構築方法: http://crocro.com/write/android/wiki.cgi?p=%A5%DE%A5%F3%A5%AC%A4%C7%CA%AC%A4%AB%A4%EBAndroid%B3%AB%C8%AF%B4%C4%B6%AD%B9%BD%C3%DB%CA%FD%CB%A1
[3] 仮想環境へAndroidをインストールしてエミュレートを高速化する: http://sites.google.com/site/technoute/android/emulator/virtualbox

タイトル・デザインを変更

タイトルとデザインを変更しました.

デザインは「Bloggerのお勧め」をポチポチクリックしていった所,こんな感じになりました.
Twitterとかアクセスカウンターのガジェットは消えたけど\(^o^)/

問題無し.

2011年8月9日火曜日

モンティ・ホール問題

確率の本を読んでいるとモンティ・ホール問題に出会ったので,暇つぶしにプログラムを作ってみる.

モンティ・ホール問題 ~進行の手順~
①三つの扉が用意される.このうち,一つが当たり.残りの二つがはずれである.
②あなたが一つの扉を選ぶ.
③司会者が残りの二つの扉のうち,はずれの扉を開ける.
④この時点で,あなたに扉を選び直す権限を与えられる.
⑤「あなたは扉を選び直しますか?」

こんな感じの問題.


Javaで作成.
import java.util.Random;

public class MontyHall {

    boolean chengedoor;
    int loopcount;
    int success = 0;
    Random rand= new Random();

    MontyHall(boolean changedoor, int loopcount){
        this.chengedoor = changedoor;
        this.loopcount = loopcount;

        execute();
        printResult();
    }

    private void execute(){
        for(int i=0 ; i<this.loopcount ; i++){
            //答えをセット
            int answerNo = this.rand.nextInt(3);

            //ユーザが選択
            int userNo = this.rand.nextInt(3);

            //司会者が一つ選ぶ(答えの扉以外)
            int obserNo = -1;
            if(answerNo == userNo){
                int r = this.rand.nextInt(2);
                switch(answerNo){
                case 0:
                    if(r==0) obserNo=1;
                    else obserNo=2;
                    break;
                case 1:
                    if(r==0) obserNo=0;
                    else obserNo=2;
                    break;
                case 2:
                    if(r==0) obserNo=0;
                    else obserNo=1;
                    break;
                }
            }
            else{
                obserNo = 3-(answerNo+userNo);
            }

            //回答チェンジ!
            if(this.chengedoor)
                userNo = 3-(userNo+obserNo);

            // 答え合わせ
            if(userNo == answerNo)
                this.success++;
        }
    }

    private void printResult() {
        String type = "";
        double sucper = (this.success / (double)this.loopcount)*100;
        if(this.chengedoor){
            type="Change! ";
        }
        else{
            type="NoChange";
        }
        System.out.println(type+":"+sucper+"%");
    }

    public static void main(String args[]){
        int loopcount = 100000;
        new MontyHall(true,loopcount);
        new MontyHall(false,loopcount);
    }

}

上記の通り,10万回試行してみる.
結果は…

Change! :66.982%
NoChange:33.283%

この通り.
当たりの扉を選びたいならChange!

2011年7月28日木曜日

JSONObjectでサンプルを作成

JSONObjectの使用方法を(Steins;Gateを見ている人に)説明するための,サンプルを作成した.


   // 研究所json
   JSONObject lab = new JSONObject();


   // 人物情報json
   JSONObject okabe = new JSONObject();
   okabe.put("name", "岡部 倫太郎");
   okabe.put("nickname", "オカリン");

   JSONObject mayusii = new JSONObject();
   mayusii.put("name", "椎名 まゆり");
   mayusii.put("nichname", "まゆしぃ");

   JSONObject daru = new JSONObject();
   daru.put("name", "橋田 至");
   daru.put("nichname", "ダル");

   JSONObject chris = new JSONObject();
   chris.put("name", "牧瀬 紅莉栖");
   chris.put("nickname", "助手");


   // らぼめんjson
   JSONObject labmember[] = new JSONObject[4];
   labmember[0] = okabe;
   labmember[1] = mayusii;
   labmember[2] = daru;
   labmember[3] = chris;

   lab.put("研究所名","未来ガジェット研究所");
   lab.put("所在地" ,"東京");
   lab.put("タイトル", "Steins;Gate");
   lab.put("ラボメン",labmember);


   print(lab);

出力結果(chromeで表示)

GAE/J JSON出力

GAE/Jを操作する上でのメモ.

GAE/J上でJSONを出力させるために,JSONICライブラリを使用しようとすると以下のように注意される.
net.arnx.jsonic.JSON is not supported by Google App Engine's Java runtime environment
どうやらサポート対象外らしい.

仕方なく他のライブラリを探していたところ,GAEのAPIにJSONObjectを扱うものを見つけたので使ってみる.(パッケージ名:com.google.appengine.repackaged.org.json)

結果,問題なくPOJO⇔JSONへ変換できました.やったね!

おしまい.

2011年4月28日木曜日

iPad2 発売!

本日やっとiPad2が発売されました。
朝のテレビニュースで紹介されているのを見たところ,カメラ機能が搭載されてるようです。

あー、ソフマップに触りに行きたい!

なんでiPad2が欲しいの?と父親に聞かれたので理由を挙げると、
・ノートPCより軽い
・起動が早い
・PDFを印刷する手間とコストを省くことができる
・楽しそう
・触りたい

といった感じ。
この中では、後者二つの理由が大きな要因かな。
タッチパネル操作の処理がスムーズだと、触ってるだけで楽しいもんね。

2011年4月25日月曜日

腰痛の結果

午前中に整形外科へ行き、レントゲンを4枚取ってもらったところ、
「運動不足による筋力低下が原因ですねー。骨には全く異常ないですよー。」
とのこと。

あれー?ヘルニアかなーとか思ってたのは何だったのか。
ただの運動不足でした。良かったー!
よく柔軟しときます。


それにしても、レントゲンの写真を見たところ、人間の背骨は本当に太いということを実感した。
こんな太い骨が折れるなんて、KOFのクラークさんのアルゼンチンバックブリーカーぐらいしか想像できない。