Android チュートリアル Exercise 1

Google Androidアプリ作成のチュートリアルに挑戦してみた。

説明が丁寧かつ詳しかったためExercise1についてはとりあえず問題なく終了。
個人的に大事そうだと思った部分をメモしておく。

XMLレイアウトファイルの記述

  • XMLレイアウトファイル内では@id、@stringのような"@"を使った表記によってresフォルダ以下のリソースを参照可能(R.javaのリソースIDを参照)。
  • AndroidSDK上(android.R)で定義されているIDは、"android:"というプレフィックスを用いてXMLファイル内で参照可能。以下の例の、android:emptyandroid.Rで定義されているID。
 <TextView id="@id/android:empty"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/no_notes"/>
  • @+idのように"@"のあとに"+"を付けると、もしそのidが存在しなければ自動的に作成することを表す。
<TextView id="@+id/text1" xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

SQLite databaseの利用

Tutorial Exercise1ではSQLite databaseにアクセスする際に、SQLiteDatabaseを直接使っている(DBHelper.java内でSQLiteDatabaseを利用)。
SQLiteDatabaseを直接利用しても問題はないが、SQLite databaseへのアクセスをカプセル化したクラスContentProviderを用いた方法の方がより一般的。実際にSDKのsample/以下にあるNotePadではContentProviderを使っている。

ListViewへのデータバインド

ArrayAdapterは任意のデータ型のList、または配列をListViewにバインドするためのクラス。
ArrayAdapterを用いたデータのバインドは最もシンプルな方法であるが、拡張性が低い。
このため、SimplecursorAdapterとContentProviderを組み合わせたバインド方法が一般的。

Google Android関連サイトまとめ

Android関連のサイト、ブログへのリンクのまとめ。

Javadriveを参考にして、SDKのインストールから簡単なプログラムの作成までやってみた。サイトの説明に従えば特に問題なく、作成したプログラムを実行することが出来た。せっかくだからなんか作ってみたいなぁ。

「Gmail」新バージョン

Gmail」の新バージョンが公開されていると聞いたので、使ってみた。
インターフェースはこれまでと殆ど変わらないものの、以前に比べてかなり高速化されておりサクサク動作する。
Gmail」は処理が重いと感じていたので今回のバージョンアップは有り難い。
ちなみに今のところ、表示言語設定を「English(US)」に設定したときしか使えないので、日本語版を利用するためにはもう少し待つ必要がある。

処理速度面では以前に比べて随分改善されているようなので、「Gmail」を使っている方は是非一度、新バージョンを使ってみることをオススメする。

参考記事

「ボナンザ VS 勝負脳」を読んでみた。

将棋、人工知能の両方に興味のある人はもちろんのこと、将棋には興味があるが人工知能には興味のない人や、その逆の人が読んでも楽しめる本であると思う。


本書では、将棋ソフト「ボナンザ」の内部的な設計などについて述べられている。
ボナンザは独自の「評価関数」を持ち、全幅探索を行った上で最も評価値の高い手を打つとの事であるが、
「評価関数」などと言う単語はあまり聞きなれないものだと思うので、その辺りについて、かなり簡単にではあるがまとめてみる。

評価関数について

将棋の盤面を評価する評価関数Eが3つの変数X,Y,Zによって決定されるとすると、例えばEは以下のように書くことが出来る。 \alpha,\beta,\gammaはそれぞれX,Y,Zの重み(各変数をどれぐらい重視するか)である。

 E(X,Y,Z) = \alpha X + \beta Y + \gamma Z

ここで、X,Y,Zがそれぞれ以下を表す変数であるとし、具体的に考える。

  • Xは「王」に隣接する味方の駒数
  • Yは味方の全駒数
  • Zは相手の全駒数

X,Y,Zが上の様な定義の場合、例えば \alphaの値が大きければ、「王」に隣接する味方の駒数を重視する、すなわち「王」の周りを味方の駒が取り囲むような戦略をとるようになる。また \betaの値が大きければ、味方の駒をなるべく減らさないような防御的戦略になり、 \gammaが大きければその逆で攻撃的戦略をとる。
この例では変数が3つしかないが、実際はさらに多くの変数によって評価関数を構成することで、より柔軟な戦略を表現する。
評価関数においては、 \alpha,\beta,\gammaなどの重みの値を適切に設定することが重要である。しかし人手でこれらを設定することは難しい(変数の数が増えれば増える程、難しくなる)。
そこで、 \alpha,\beta,\gammaの最適な値の探索に機械学習を用いる、と言った具合である。

AI(人工知能)を作る

この本を読んで、将棋のAI作りに興味を持つ方も多いのではないだろうか。
ただ、本書でも述べられているように将棋はルールが複雑なため、いきなりAIを作るといってもなかなか難しい。


個人的には、こういったゲームのAI作りに取り掛かる際は、まずオセロ(リバーシ)に挑戦してみるといいのではないかと思う。
オセロは将棋に比べてルールが単純な上に、打ち手が石を置く回数が60回(白、黒30ずつ)と限られているため、将棋と比べるとAIを作るのは楽である。

また、本書の3章で紹介されている「ミニマックス法」、「alpha-beta法」などは、オセロAIにおいても同様に用いる事が可能である。こういったことからも、オセロAIを作ってみる事は、将棋AIを作る上で色々と勉強になる。


自分自身、一年ほど前にオセロAI作りに挑戦した事があるが、なかなか面白く、いい経験になった覚えがある。

Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS)

Java将棋のアルゴリズム―アルゴリズムの強化手法を探る (I・O BOOKS)

XREAでSubversion(SVN)を使ってソースコード管理を行う方法についてのメモ。

接続方式についてはsvn+sshとし、SVNクライアントについてはTortoiseSVNを利用。
Subversion利用までの大まかな流れは以下の通り。

  1. TortoiseSVNのインストール
  2. XREAサーバへのSSH接続許可ホスト登録
  3. SVNがインストールされているかどうか確認
  4. リポジトリの作成
  5. SVNサーバへの接続(パスワード認証)
  6. サーバへの接続(鍵認証)

1.TortoiseSVNのインストール

TortoiseSVNのインストールについては以下のサイトが丁寧で分かりやすい。


2008/05/16追記
VistaへのTortoiseSVNインストールについて書きました。OSがVistaの方はこちらも合わせてご覧ください。

2.XREAサーバにSSH接続許可ホスト登録を行う

svn+sshSVNを利用するためには、サーバにSSH接続出来なくてはならない。
XREAサーバはSSH接続元ホストが制限されているため、サーバにSSHで接続するためには、事前にホスト登録が必要。


という事で、XREAの管理画面から[ホスト情報登録]→[SSH登録]でホスト情報を登録。
一度登録してしまえば30日間有効だが、接続元ホストを変更したい場合(例えば、普段は自宅から接続していて、学校からも接続したい場合など)は、その都度登録しなおす必要あり(反映に5分〜10分かかる)。

3.SVNがインストールされているかどうか確認

古いXREAサーバにはSVNがインストールされていない場合があるようなので、
念のためSVNがインストールされているかどうか確認する。

#svn --version

SVNのバージョンについて、色々と表示されればOK。

4.リポジトリの作成

ホームディレクトリにsvnというディレクトリを作成し、
その中に新規リポジトリmyrepo(適当な名前で良い)を作成。accountの部分には自分のアカウントを入力。

# mkdir /virtual/account/svn
# cd /virtual/account/svn
# mkdir myrepo
# svnadmin create myrepo

lsコマンドを実行すると以下の様なファイル、ディレクトリが作成されていることが確認できる。

# ls myrepo
README.txt conf dav db format hooks locks

5.SVNサーバへの接続(パスワード認証)

TortoiseSVNを利用してのSVNサーバへの接続。パスワード認証を使った一番簡単な接続方法。
TortoiseSVNの設定画面を開き、[ネットワーク]メニューの「SSH クライアント」の項目に以下を入力。
accountpasswordはそれぞれ自分のアカウントとパスワード。

[TortoisePlink.exeへのパス] -ssh -l account -pw password

例)C:\Program FilesにTortoiseSVNをインストールした場合
C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe -ssh -l account -pw password


ここで、4で作成したリポジトリに接続出来るかどうかを確認する。
右クリックメニューから[TortoiseSVN]->[リポジトリブラウザ]を選択。URLに以下を入力。

svn+ssh://hostname/virtual/account/svn/myrepo

hostnameはサーバのホスト名(account.s999.xrea.comなど)。

エラーが出ることなく接続できればOK。ちなみにまだリポジトリに何もインポートしていないため、ファイル等は表示されない。必要に応じてファイルをインポートすれば、バージョン管理に追加することが出来る。

6.SVNサーバへの接続(鍵認証)

5の方法では、SSHクライアントの設定部分に生のパスワードを記述しなくてはならずセキュリティ上好ましくない上に、複数のSVNサーバに接続する際に、その都度アカウント名とパスワードを書き換える必要があるので面倒。
PuTTYを使って公開鍵認証を行う事でこの辺の問題はある程度解決出来る。
この方法については以下のサイトに詳しく書かれている。


色々と省略した部分もあるけど、こんな感じで利用できるはず。

 ActionScript3.0

この記事を読んでいたらなんとなくActionScript3.0に惹かれてしまいました。文法がJavaに近いのはありがたいですし、Ajaxとは違ってブラウザ間の互換を考慮しなくてもいいというのも魅力です。現在Ajaxを勉強中でまだ中途半端な状況ですが、時間を見つけてActionScriptの方も勉強してみようかなぁと思ってます。

ActionScript3.0でどんなことが出来るんだろうと思い、色々と探してみるとこんなのを見つけました。(実行にはAdobe Flash Player9 以上が必要です)

先日のブログで紹介した「JSEclipse」と同様にAdobe Labsで公開されているサービスです。Amazonの商品間の関係が可視化されていてなかなか面白い。
それにしても最近、Adobeがなにかとスゴイ気がする。「Photoshop」のウェブアプリ版なんてのもリリースされるようだし、色々と期待出来そうですね。

 JSEclipseのインストール

Adobe Labsで提供されているEclipseJavaScript編集用プラグイン「JSEclipse」を導入してみました。
現在はまだプレリリース版ですが、コード補完機能やアウトライン機能、さらにはDojo, prototype.js, script.aculo.us, yahoo ui library, Qooxdooなどのライブラリのコード補完にも対応しているようで非常に便利そうです。そこで今日は、JSEclipseのインストールの方法等を紹介したいと思います。

動作条件

  • Eclipse:バージョン3.1以上
  • Java(JRE):バージョン1.5以上

これらを満たさない環境では、うまく動作しないという報告が幾つかあるようなので、インストール前に確認しておきましょう。

インストール方法

インストールには手動で行う方法と、自動で行う方法がありますが、自動で行う事が推奨されているようなので、そちらの方法を紹介します。

  1. Eclipseのメニューから[ヘルプ]→[ソフトウェア更新]→[検索とインストール]を選択。
  2. [インストールする新規フィーチャーを検索]を選択して、次へ。
  3. [新規リモートサイト]ボタンを押し、現れたダイアログに以下の必要事項を入力しOKを押す。
  4. 検索に含めるサイト一覧から、先ほど入力した名前が選択されていることを確認し、終了ボタンを押す。
  5. 検索結果でJSEclipseにチェックが付いている事を確認し、次へ。
  6. 後は指示に従って操作を進めればインストール完了。

JavaScriptファイルの関連付け

JSEclipseを導入する以前に他のJavaScript編集用プラグインを導入している場合、そちらがデフォルトのJavaScript編集用エディタとして設定されている可能性があります。以下の操作でJSEclipseをデフォルトとして設定しておきましょう。

  1. [ウィンドウ]→[設定]を選択
  2. [一般]→[エディタ]→[ファイルの関連付け]で「*.js」を選択。
  3. 右下の[関連付けられたエディター]からJSEclipseを選択して、右の「デフォルト」ボタンをクリック。

注意点

最後に、一つ注意点です。

公式ページのフォーラムでも質問が出ていますが、現在のJSEclipse(1.5.3)では[ファイル]→[新規]→[その他]で表示されるダイアログから[Ajax]→[JSClass]を選択するとエラーとなり、新規のJavaScriptファイルの作成が出来ません。これは「JSEclipse」のバグで、次のリリースでは改善される予定だそうです。
とりあえずは、代替的な方法としてメニューの[ファイル]→[新規]→[ファイル]を選択し、作成するファイルの拡張子を手動で「.js」とする、などで対応するしかないですね。
正式版のリリースが待ち遠しいところです。