2011年11月21日 (月)

Androidアプリ開発その5

Eclipseではアプリの開発は「プロジェクト」って言う単位で管理されるんですね。なので、「ファイル(F)」→「新規(N)」→「プロジェクト(R)...」で「新規プロジェクト」ウィンドウを起動するところから。
ウィザード(W):欄で、「Android」→「Android プロジェクト」を選択して「次へ(N)>」。
「プロジェクト名:」欄に、「MyHelloAndroid」と書いて、あとはデフォルトで。ワーキング・セットって何かしら?ちょっと調べると、「複数のプロジェクトをひとつにまとめる物」みたい。プロジェクトのひとつ上の概念って思えば良さそう。とりあえずそう思うことにして、今回はいらないのでデフォルトのままオフにして、「次へ(N)>」。
ビルド・ターゲットを選べといわれて、なぜかデフォルトでAndroid 4.0にチェックが入っているんだけど、今回はTabletを意識して、「Android 3.2」で。チェックボックスの癖に排他(ラジオボタンの動き)になってるのはなぜ?とにかく「次へ(N)>」。
パッケージ名を指定してくださいと言われるので、パッケージ名を本ブログのURLから拝借・・・ってmoe-niftyはjavaのパッケージ命名規則に沿わないとな!んご!ハイフンだめですか!仕方ないので「com.moenifty.lucy.android.MyHelloAndroid」で。テスト・プロジェクトも作っておきます。で、「完了(E)」!

やっとこさ、プロジェクトができて、コーディングが始められる!
パッケージ・エクスプローラにMyHelloAndroidプロジェクトができていて、中身をたどっていくと、src配下に雛形ができているー。ふぃー最近の開発はコーディングにたどり着くまでが難儀じゃのぅ。

って、ググってみると、Wikipediaによると


パッケージ名に直接使うことができないインターネットドメイン名をパッケージに命名するルールは、Java言語仕様のsection 7.7で説明されている。

ハイフン(-)が使われているドメイン名をそのままJavaソースコードで使用するとコンパイルエラーを引き起こす。そのためハイフンが使われているドメイン名には、ハイフンの代わりにアンダースコア (_)を使用する。

とな!なので、パッケージ名を変えようとリファクタリングとか選択したら変になった(変える前のパッケージ名でRをimportする文が出た)ので、プロジェクトを削除して、再作成。パッケージ名は「com.moe_nifty.lucy.android.MyHelloAndroid」で。これでよし。

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

Androidアプリ開発その4

AVD(Android Virtual Devices)っていうのは、Androidのエミュレータに対して、特定のバージョンのハードをエミュレーションさせるための端末情報を保持する仕組みみたい。(汎用の)エミュレータ+(特定のバージョンの情報を保持する)AVDで特定の機種(バージョン)のAndroid端末をエミュレーションするっていう理解で良いのかしら。

とにかく、Eclipseを起動して、「ウィンドウ(W)」→「AVD Manager」で「Android Virtual Device Manager」を起動。
最初は中身が空で、No AVD availableなんて書いてあるので、「新規...」をクリックして「Create new Android Virutual Device (AVD)」を起動する。
「ターゲット:」欄をクリックして、好みのバージョンのOSを選択するんだけど、「Android x.x - API Level yy」ってのと、「Google APIs (Google Inc.) - API Level yy」ってのは何が違うんでしょ?(Google APIsを選ぶと、エミュレータ内でGoogle MapとかのGoogleのAPIも擬似ってくれるのかな?)とりあえず、なぜかタブレットを意識して、「Android 3.2 - API Level 13」を選択。すると、下の「ハードウェア:」欄に自動的にいくつかプロパティー項目が追加された。いろいろいじった方が良いのかも知れないけど、よく分からないので、とりあえずデフォルトで、名前は適当に「MyTablet3.2」。

image

これで「Create AVD」すると、元のAndroid Virtual Device Managerに今作ったAVDが追加された。ついでに2.3.3と4.0も作ってしまう。よく分からないので、パラメータはすべてデフォルトで。
image

さて、これでやっと準備が整ったみたいなので、やっとこさHello, Worldに取り掛かれます。

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

2011年11月10日 (木)

Androidアプリ開発その3

Eclipseってインストールが面倒なイメージがあったんだけど、へっぽこには「Pleiades All in One 日本語ディストリビューション」がよさげな感じ。http://mergedoc.sourceforge.jp/からJava版のFull All in Ore(JREあり)をダウンロード。最初はJREなし版が良いのかと思ったのだけど、Eclipse自体を動かすJREと、開発対象のAPを動かすJREは別の方が融通が利くからお勧めだそうで、それはご尤もと思ったので、JREあり版で。

なにやらlhaplusで展開すると長いパスが正しく展開できないにもかかわらずエラーを出さないので要注意とか。。。何も考えずにダブルクリックしたらデスクトップに展開されてあわててlhaplusの設定を変更。再度展開をすると、今度はアーカイブファイル名のフォルダが掘られたんだけど、例を見る限りパス名が長くなるパターンにはまってるっぽいので、再度lhaplusの設定を変更して三度目の正直で(多分)正しく展開が完了。上記サイトを良く見ると、pleiadesってフォルダを作ってその下に展開しているみたいなので、そのマネをして、展開されたフォルダ一式をc:\freesoft\pleiades配下に移動。

pleiades\eclipse\eclipse.exeのショートカットをデスクトップに作って、ダブルクリックしたら無事3.7 Indigoが起動した!

つぎは、ADT Plugin for Eclipseのインストール。Eclipseの「ヘルプ」→「新規ソフトウェアのインストール...」で「インストール」ウィンドウが起動するので、「追加(A)…」ボタンでhttps://dl-ssl.google.com/android/eclipse/を追加すると、中ほどのエリアに「開発ツール」なるものが表示されるので、それをチェックして、「次へ(N)>」をクリック。

なにやらいろいろ考えて(?)いるみたい。じっくりダウンロードとインストールをしてもらいましょう。しばらくするとインストール詳細とか出るので、そのまま「次へ(N)>」。ライセンス条項に同意して、「完了(F)」!

これで終わったと思ったらなにやらバックグラウンドではインストールが進んでいるみたいで、途中でセキュリティの警告が出た。よく分からないので、そのまま続行したら、終わったタイミングでEclipse再起動を促されたので、そのまま再起動。

するとまず「Welcome to Android Development」ってウィンドウが出たので、「Install new SDK」ではなくて、「Use existing SDKs」を選択して、パス「C:\Program Files (x86)\Android\android-sdk」を入力し、「次へ(N)>」。「Contribute Usage Statistics?」と聞かれるので、「Send usage statistics to Google?」にお好みがあるでしょうが、僕は「はい」と答えて、「完了(F)」!

さて、次はAVD (Android Virtual Device)の作成だ!

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

2011年11月 9日 (水)

Androidアプリ開発その2

SDKがインストールできて、その後Android SDK Managerが途中で止まったまま一晩たったのだけど、状況は変わらず。仕方なくウィンドウを閉じて、再度起動してみると、ほとんどのパッケージはインストールされているみたいだけど、例のKYOCERAのAPIを含むAndroid 2.3.3 (API 10)がNot installedになっていたので、そいつにチェックを入れて、再度ダウンロード・・・って、やっぱり動きがないな。んではと、再度ウィンドウを閉じて今度は、KYOCERAを飛ばしてSony EricssonのとGoogle APIsだけをチェックしてみると・・・

Downloading EDK 1.1 by Sony Ericsson Mobile Communications AB, Android API 10, revision 1
File not found: C:\Program Files (x86)\Android\android-sdk\temp\EDK-1.1.20110513.13-linux-x86.zip (アクセスが拒否されました。)
Downloading Google APIs by Google Inc., Android API 10, revision 2
File not found: C:\Program Files (x86)\Android\android-sdk\temp\google_apis-10_r02.zip (アクセスが拒否されました。)
Done. Nothing was installed.

とな!?なぜかC:\Program Files (x86)\Android\android-sdk\tempの書き込み権がないみたいなので、tempフォルダの「プロパティ」→「セキュリティ」タブ→「編集」→Usersに変更の許可を与えた。。。ら次はadd-onsフォルダもだめだってんで、そっちも同様にUsersに変更を許可。そしたらやっとこさAndroid 2.3.3 (API 10)のSony ErcssonとGoogle APIsが入った。しかし、なんでUsersの変更権限が要るんだっけ?Program Files配下だから?自前のC:\freesoftとかにしておけばよかったのかしら・・・

っとちょっと順番が前後しちゃったけど、こいつをやる前に、二つほど環境変数を設定。例によって「コンピューター」の「プロパティ」→「システムの詳細設定」→「詳細設定」タブ→「環境変数」で、システム環境変数に「新規」で

ANDROID_HOME
C:\Program Files (x86)\Android\android-sdk

あと、Pathを選択して「編集」で

Path
[元の値];%ANDROID_HOME%\tools

さて次はEclipseのインストールだけど、今日はここまで。。。Eclipseもまたどれを入れるのか悩みそう・・・

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

2011年11月 8日 (火)

Androidアプリ開発

いろいろあってAndroidアプリ開発を家でもやってみることにした。半年ほど前にMacBook上で環境構築してみたのだけど、画面が狭い(1280x800)のとメモリが少ない(2GB)ので、デスクトップ(Windows7 64bit)でやりなおしてみることにした。って今調べてみたら、デスクトップもメモリ2GBだったよ。。。

まずはJDKのダウンロードから。OpenJDKってのがあるんだっけ?と調べてみると、どうやらLinux版しかないみたい。なので、普通にOracle(!)からダウンロードすることに。JDKでググって最初のページがここ。

http://java.sun.com/javase/ja/6/download.html

ここ、画像がリンク切れになってたりしてメンテされてない感を漂わせてて大丈夫かしらと不安になる。ここのJDKダウンロードってリンクをクリックすると、JDK 6u23 ってところに表示が行くんだけど、上にスクロールすると最新は6u25なんだよね。単純にリンクが更新されていないだけ?それとも6u23がStableってことを言っている?しかもJavaFXとかって書いてあるし・・・怪しいなぁと思って、画面右のJava SDKs and ToolsのJava SEをクリック。

んご!こっちが正解じゃん!Java SE Downloadsって書いてあるし、最新はJava SE 7u1みたいだけど、さすがにそれはヤケドしそうなので、その下のJava SE 6 Update 29でいきますか。

http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html

結局このページが求めてたものだ!Goolgeたん検索結果イマイチなんじゃない?それはともかく、ここのWindows x64版を、Accept License Agreement した上で、ありがたくダウンロード

x86版かx64版かで悩んでWikipediaで調べてしまったけど、Core2Duoで64bitOSならx64で正解だよね。

これでやっとこさJDKのインストールができる。ダウンロードしたjdk-6u29-windows-x64.exeをダブルクリックしてインストール開始。パッケージ選択はとりあえず全部入りで、インストール先もデフォルトで。入れ先はC:のSSDなんだけど、ちょっとだけ時間がかかった。2分くらいかしら。

インストールが完了したと思ってたらFirefoxがあがって、「Java Development Kit (JDK) Registration」だそうな。とりあえず、個人情報を入れたり、パスワードは大文字小文字混在じゃないとダメとかいうのを乗り越えて登録してみたのだけど、確認メールのURLをクリックして確認後やっとログインしてみたら、今度は会社の住所を入れろと!そこでやる気をそがれたので、登録はあきらめて先に進むことに。流石Oracleさん、金にならないアマチュアユーザは登録してもらわなくて結構って感じ?

次はAndroidSDKのダウンロード。こいつはJavaと違って分かりやすいところにあった。

http://developer.android.com/sdk/index.html

んご!ちょっと前に見たときはr13でなかったかしら?r15になってるし。とりあえず.Recommendedだという.exe版を落として、インストール。途中でさっき入れたJDK1.6を見つけたよとか、インストール先はProgram Files (x86)だよとか言ったりするかわいいヤツ。終わるとAndroid SDK Managerなるものが勝手に上がって、なにやら最新のパッケージ情報を取得しているっぽい(?)。4.0とか、3.2とか、2.3.3とか、興味のあるのをチェックして、「Install 20 packages…」するとLicenceの確認(?)されるので、いいよよろしく入れて頂戴と進めると、ダウンロード&インストールが始まった。なんか、いろいろと超大量にあるみたいで、時間がかかってる。10分くらいかかるのかなぁ。

'adb kill-server' failed -- run manually if necessary.

とか出てるのが気になる。あと、

Found Dual Screen APIs by KYOCERA Corporation, Android API 8, revision 1
Found Dual Screen APIs by KYOCERA Corporation, Android API 10, revision 1

Downloading Dual Screen APIs by KYOCERA Corporation, Android API 10, revision 1

なぜKYOCERA!?っていうか、このKYOCERAのAPI 10のダウンロードなかなか終わんないんすけど。current taskを止めるボタンを押しても止まらない・・・ってところで寝ることにします。

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

2011年3月 1日 (火)

強さと脆さ

あれ?こんな本出てたんだ?と思って手に取ってみたらブラックスワンの増補改訂版の「増補」部分を切り出した本でした。

タレブが頭が良すぎるのか、全体的に何を主張をしようとしているのか、僕にはぼんやりとしかつかめませんでした。

とりあえず、

  • 「第四象限」では油断がならないこと
  • 人は、運動や食事を規則正しく行うようには最適化されていないこと
  • ある事象がブラックスワンか否かは、立場によって変わること。9.11もテロリストにとってはブラックスワンではなかった

が印象に残りました。

「ブラックスワンが生じるのは第四象限」の説明で、単純なペイオフと複雑なペイオフっていうのが出てきましたが、ペイオフの意味がよく分かりませんでした。

タレブたんは頭が良いんだから、もっとみんなにわかるように伝えれば良いのになと思いました。なので、経済学者に「3つの象限ではあなたたちの理論はうまく当てはまるのだが」という風に話すと、話を聞いてくれる…って所は微笑ましかったです。


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

2010年12月 9日 (木)

Android開発

意外な事に、仕事でAndroidアプリの開発をやりそうな気配あり。早速Amazonで参考書を物色した。参考書がいくつか出ているなぁとは思っていたけど、本気で探した事が無かったので、改めて探してみると、決め手に欠けてどれを買うべきか悩む。定番本がまだ確立していればありがたいのだけど。それにしてもどれもにたようなタイトルで紛らわしい。Amazonの評価を頼りにすると、この辺が良さそうな感じだった。

  1. 評価はそこそこだが、2009年6月の出版がやや古いか。中身を見てみないと判断が難しい

  2. 評価は高く、分厚いとあって情報量も豊富そう。Androidの基本的な考え方が書いてあるというレビューがあるので、そこもポイント。2009年7月とやや古いのが弱点かも知れないがそこは別の本でカバーすべきかも。これは欲しい。

  3. Amazonの評価はそこそこで、タイトルに2.1を謳っているだけあって2010年5月と比較的新しい本。レビューを良く読むと物足りないところもあるようだが、とりあえずアプリの開発が一通りはできるようになるかなと。結局近所の書店で唯一見つけた本書を購入した。
Android2.1プログラミングバイブル(仰々しい名前)を読みながら、開発環境の構築まで今のところスムーズに進んでいるので、次、まずはサンプルアプリケーションの完成まで行きたいところ。

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

2010年10月25日 (月)

オレンジニュースって‥

もう、更新されなくなってずいぶんたちますが、オレンジニュース、すんごいタメになったサイトだったんですが、もう復活しないんですかね。
濃縮還元だけじゃ足りないです。
アレに変わるニュースサイトって無いですかね。。。。

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

2010年9月 5日 (日)

リファクタリング・ウェットウェア

脳をどうやったらうまく活用できるのかについて書かれた本。表紙の裏(と裏表紙の裏)にマインドマップで本書の全体像が書かれているのが微笑ましいです。著者のAndy Huntは達人プログラマーの著者として有名で、オライリーから出版されているからも、対象は主にプログラマなのですが、著者は対象をプログラマには限っていないようです。

本書の要約は、著者自身が描いたマインドマップに示されていて、それが「正解」だと思いますが、自分なりにキーワード・要約を上げるとすると

  • ドレイファスモデルの5段階
  • Rモードで全体像を捕らえてLモードで詳細を学ぶ
  • Rモードを意図的に作る
  • 高コストな脳のコンテキストスイッチを避ける
  • 脳には認知する機能にバグがある

コンテキストスイッチは避けたいのですが、実際は会社では避けられていません。「至急」とか「すぐに」とかいう単語が飛び交い、マルチタスクに近い状態になります。ところが、マルチタスクは苦手なので、単一のタスクしかできません。そして一旦ワークメモリから追い出された「タスク」は、すぐに忘れられてしまうので、最近はノートにタスクを箇条書きするようにしています。

あとはRモードを使えるように、瞑想とかやりたいです。

最後に気になったことを2点。

  • 2章に、左目が脳の右半球に、右目が脳の左半球に繋がっているとの記述があるが、MIND HACKSによると、視界の左側が右半球に、視界の右側が左半球に繋がっているとのこと
  • 4章にバグの由来は一匹の蛾だった・・・とあるが、その蛾が貼り付けられた日誌には"First actual case of bug being found."とあるので、その時点で既にバグという用語は使われていたように思える

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

2010年8月20日 (金)

Macでbash-4をビルド

リポジトリを作る

githubに、なにか面白いプロジェクトないかなぁ、bashとかないかなぁと思っていたら、ありました。これです。始める前は、githubでリポジトリをフォークしてそのURLに対して

 $ git checkout http://... # 誤用

ってやってローカルのMacBookに作業コピーを作れば良いのかと思ってたのですが、入門gitを読むと全然違ってました。分散バージョン管理ってのを根本的に勘違いしてました。gitってリポジトリのコピーとマージが簡単にできるsvnかと思ってたんですが、そうではなく、「ローカルにリポジトリを持ってきてそこで作業をする」んですね。という訳で、最初のコマンドは

 $ git clone git@github.com:endu/bash-4.git

が正解なのでした。

bash-4をビルドする

とりあえず、ローカルにリポジトリができたので、早速ビルドです。

 $ cd bash-4
$ ./configure
$ make
(略)
gcc -L./builtins -L./lib/readline -L./lib/readline -L./lib/glob -L./lib/tilde  -L./lib/sh    -g -O2 -o bash shell.o eval.o y.tab.o general.o make_cmd.o print_cmd.o  dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o expr.o flags.o jobs.o subst.o hashcmd.o hashlib.o mailcheck.o trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o alias.o array.o arrayfunc.o assoc.o braces.o bracecomp.o bashhist.o bashline.o  list.o stringlib.o locale.o findcmd.o redir.o pcomplete.o pcomplib.o syntax.o xmalloc.o  -lbuiltins -lsh -lreadline -lhistory -ltermcap -lglob -ltilde  lib/intl/libintl.a -liconv  -ldl Undefined symbols:
(略)
   "_rl_completion_suppress_append", referenced from:
       _bash_default_completion in bashline.o
       _command_subst_completion_function in bashline.o
       _pcomp_set_readline_variables in pcomplete.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [bash] Error 1
$

がーん。なんで!?どうやら最後のリンクで失敗しているみたいです。

リンクエラーの原因を究明する

リンクエラーの理由を求めてWebをさまようと、やはり困っている人がいて、どうやら、最新のreadlineライブラリ入れる必要があるみたい。readlineのライブラリってどれかなぁ。これかな?なんかへんなの。

 $ ls -l /usr/lib/libreadline.dylib
lrwxr-xr-x  1 root  wheel  15  9 24 2009 /usr/lib/libreadline.dylib@ -> libedit.2.dylib

うーん、じゃあ具体的にはどうしたらイイのさ、と思っていたら、 決定的な記事を見つけました。以下激しく引用。

Mac OS X では GNU の Readline ライブラリがインストールには含まれておらず、Readline 互換の Libedit というライブラリへのシンボリックリンクとなっている(こうなっている理由はライセンス上の問題からだと思われる。GNU の Readline ライブラリは GPL で、Libedit は BSD ライセンスだ)。

しかし、これが原因で Readline 対応のプログラムがコンパイルできない、コンパイルできてもヒストリ機能などが使えない、といった問題がしばしば起こる。

なるほど!で、readlineをインストールするには、MacPortsとやらを使うのが簡単みたいです。MacPortsって名前だけ知ってて何かと思ったら、yumとかapt-getとかそういうやつみたいですね。もし間違ってたら指摘して頂けるととうれしいです。

MacPortsでlibreadline.aをインストールする

まずはMacPortsから。安直に本家からsnow leopard版の.dmgファイルをDL→mount→.pkg起動。あとはインストーラのボタンを順次押すだけでインストール完了。svnでソースをcheckoutするとか、ソースのtarをDLしてmakeもできるみたいだけど、makeで苦労しているのにさらにmakeするのはしんどいので楽なやり方で。.bash_profileに環境変数の設定が追加されているのを確認して、反映。portコマンドが見える!

 $ cd ~
$ cat .bash_profile
(略)
# MacPorts Installer addition on 2010-08-20_at_12:03:34: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.
$ . .bash_profile
$  which port
/opt/local/bin/port

ので、早速libreadline.aを入れてみます

 $ sudo port install readline
Password:
--->  Computing dependencies for readline
--->  Dependencies to be installed: ncurses ncursesw
--->  Fetching ncursesw
--->  Attempting to fetch ncurses-5.7.tar.gz from ftp://ftp.dti.ad.jp/pub/GNU/ncurses
(略)
--->  Fetching readline
--->  Attempting to fetch readline-6.1.tar.gz from ftp://ftp.dti.ad.jp/pub/GNU/readline
(略)
--->  Cleaning readline
$

ncurses,ncureswってのも必要なんですね。portが自動で入れてくれました。

再度bash-4をビルド

configureを走らせる時に、CPPFLAGSとLDFLAGSを、MacPortsで入れたライブラリのパスに設定するのを忘れずに・・・(といいつつ良く分っておりません。最初失敗して、その後Makefileを手で修正しようとして、結局先ほどの記事を参考にさせていただきました。configureの仕組を良く理解せねば。)

 $ make clean
(略)
$ CPPFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib ./configure
(略)
$ make
(略)
ls -l bash
-rwxr-xr-x  1 hide  staff  944128  8 20 13:14 bash
size bash
__TEXT __DATA __OBJC others dec hex
638976 32768 0 4295249920 4295921664 1000e9000
$

できたぁ!

 $ ./bash --version
GNU bash, version 4.0.35(1)-release (i386-apple-darwin10.4.0)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. $

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

«なぜコンピュータの画像はリアルに見えるのか