2010-10-08(金) [長年日記]
■ Desire (X06HT)にFroyoが来た!
今日はSoftBankがDesire(X06HT)向けにAndroid OS 2.2(Froyo)のアップデートを配布する日とあって、Androidコミュニティは朝から賑やか。10時からの配信開始に向けてバックアップをとったりroot化を解除したりと準備運動に余念がない。Desireユーザのかなりの割合が「二台目」な人たちなので、人柱的な役割は彼らに任せて、おれはのんびり夜になってからアップデートしようと考えていたのだが。
Twitter上に流れる情報を見ていると、アップデートに失敗したとか、がっかりした的な情報はほぼ皆無。HTCとSoftBankはずいぶんいい仕事をしたようだ。というか、Desireユーザってこんなに大勢いたのか! おまえら今までどこにいたんだよ(笑)。
ともあれ、そうなると夜まで待ってなんていられない。昼休みにアップデート開始。
で、まずは本体のストレージに空きを作らないといけない。情報によれば25MB以上の空きが必要らしいのだが、現在おれのDesireは15MBしか空いてない。あと10GB10MBもどうしろと……。
もっとも、プリインストールされているアプリのアップデートがけっこう大きくて(数MB)、こういうのはあとから再度インストールしてもいいので、ばっさばっさ消していったらそれなりに空いた。マナーモードにしてからOSアップデート開始*1。
2度ほどリブートがかかって、なんの問題もなくアップデート完了。ダウンロードも含め、20分くらい? もっともホームをADWにしているせいか、見た目はほとんど変化なし。
とにかくメモリ不足にあえいでいたので、2.2からSDカードに移動可能になった一部のアプリをがんがん移動させる。対応アプリは悲しいほど少ないという話だったけど、Dolphin BrowserやMixZing、twiccaなどが移動できたので、かなり空いた。25MBくらい。つごう10MBほど退避できたことになる*2。
一番大きかったのは、WiFiをONにしてもちゃんとブラウザが使えること(笑)。まったく、こんなひどいバグがよくもここまで放置されてたものだ。
あと、Flash 10.1のサポートは、やはりWebでできることをずいぶん拡大してくれてる。まぁ、ぶっちゃけた話、ニコニコ動画なんだけど。ちょっと操作性に難があるものの、ちゃんとコメント付きで動画が再生できるのは感動だ。
地味に嬉しかったのが、Webkitのバージョンアップ。これでHTML5のサポートレベルがだいぶ上がった。フォームのautofocus属性やplaceholder属性がちゃんと効くようになったし、type属性もnumberだと数値用キーボードに切り替わるようになったし。
速度に関しては、キビキビするような気がするけど、もともと反応がいいDesireのことなので、そんなに体感は違わない。重いアプリなら違ってくるのかも知れないが。それより、速度と何を引換えにしたのかは気になるな。メモリか、CPU(バッテリ寿命)か。これはもうちょっと使い込んでみてからじゃないとわからないけど。
いずれにしても、iOSには完全に水をあけたなー。Android最高や。
2010-10-06(水) [長年日記]
■ Clojure勉強中(2)
さいきん猫画像がなくてすみません。
空き時間にぽちぽち進めているClojure、教科書を読んでいるときはREPLに直接コードを打ち込んで動かしているからいいけれど、アプリケーションを書こうと思ったらちゃんと.classファイルを生成して配布可能にしなくてはならない(もちろん.cljファイルのまま配布したっていいんだけど、それじゃClojureを選んだ意味がない)。
で、やっと教科書でもそのへんに差し掛かったので、一番プリミティブなJavaアプリケーションはどんなものかと思って削っていったらこんな感じになった(あってる?):
(ns hello (:gen-class)) (defn -main [& args] (println "Hello, world."))
Rubyでは3タブだが、Clojureでは普通に2タブである(余談)。これを"hello.clj"として保存し、(まだコマンドラインコンパイラを使えるようにしていないので)REPL上でコンパイル:
user=> (compile 'hello) hello
するとclassディレクトリの下に.classファイルができる。hello.classだけじゃなくて他にもhelloで始まるファイルが都合4つ。これを普通にJavaアプリケーションとして実行する:
% java -cp classes:lib/clojure.jar:lib/clojure-contrib.jar hello Hello, world.
JRubyなんかだと、rubyのクラスとJavaのクラスが一致するように書けるからもっとシンプルなんだろうけど(jrubycを使ったことがないので「たぶん」)、関数型言語とオブジェクト指向言語の橋渡しをするための「おまじない」が多くてかなーり暗号っぽい。アプリケーションならエントリポイントを1個だけ作ればいいけど、これがクラスライブラリだったりすると「うぇ」ってなるかもなぁ。
まぁ、このあたりはテンプレ化できるはずなので、きっとスマートに書けるフレームワークがあるに違いない。なんにせよやっと単体で動作するアプリが書ける準備ができたので、だんだん面白くなってきたよ。
2010-10-04(月) [長年日記]
■ Clojure勉強中(1)
小田急線や横浜線で『プログラミングClojure』を開いたまま寝こけている人がいたら、それはワタシです。
いやまぁ、寝こけていることがあるのは事実ながら、数年前にSchemeにチャレンジしてすぐに挫折したのに比べると、ずいぶん理解してる感じはする。Clojureの構文がSchemeに比べて慣れ親しんだものに近いというのはあるが(といってもカッコ乱発のList属には違いないけど)、それ以上についこのあいだ『メタプログラミングRuby』を読んだことが効いてる。
読みながら「これをRubyで書いたらどうなるだろう」と思い浮かべると、その答えがあるていど頭に浮かぶから、理解が早い。プログラミングを初めて学ぶ初学者ならまだしも、あるていど経験があって頭の固くなった大人にとって、知っている知識を足場にできるかどうかは学習スピードに相当な違いが出るものだ。Lisp属の教科書にも、他言語と比較しながら学べる『はじめてのRuby』みたいな本があればいいのにね。
で、実際にREPLに対してポチポチとサンプルコードを打ち込みながら学習を進めているわけです。簡潔に書ける言語だからと言って、本の説明までずいぶん簡潔だったりするものだから、動かしてみないと何が書いてあるのかさっぱり理解できなかったりするので(唐突に登場したマクロの説明が50ページもあとに登場したりするし)。うっかり「(iterate inc 0)」とか打ち込んで「ギャッ」とか言ったりするわけです。ま、ひさしぶりに新しい言語を学ぶのは楽しいな。
もっとも、JavaVM上で動作する、Javaのクラスライブラリを直接呼び出せるLisp属言語ということで、けっこう妙なところがあるのだけど。特にメソッドチェインのシンタックスシュガーはなかなかキモい。あと、末尾再帰最適化ができないと知って「えっ」と思ったところ。大丈夫でしょうか……。
◆ no6v [あと10GBは無理です・・・w]
◆ ただただし [あうぅ……]