Zinnia hacks tomorrow. (2011/8)

2011/08/01 (Mon)

_ 涼しくて寝やすい。つぼみもベッドで寝てくれた。


= フリック入力

_ 7/27から使い始めたので、そろそろ1週間。思ったよりすぐ慣れた。 2日目くらいからそれなりに入力できるようになった。

_ OpenWnnのフリック入力対応版(FlickWnnというのかしら?) を使っている。 かな→ローマ字→数字 の切り替えがあるんだけど、数字はローマ字のところでも 入れられるので、そうなると数字のパッドでしか入れられないのは * と # だけという ことになる。数字のパッドなしで2画面切り替えの方が打ちやすい気がするので なんとかしたい。

_ 歩きながらとか乗り物に乗りながらだと意外と打ちづらいことが分かった。 揺れてると思わぬフリックや、フリックしそこないが増えてしまう。 それなりの早さで入力できるので、打ち間違いに気付くのは何文字も打ち進めた 後だったりするので、編集の作業がうまくできないとストレスかもしれないなあと 思った。

_ 練習ソフトは結局使わなかった。 普通にIRCやTwitterで打ってたほうがいいかもと思ったので。 しかし打つ量を増やさないと練習にならないので、ここ数日は早くも 精度やスピードに進展が見られないようになってしまった。ZHTを入力できる 環境を考えたほうがいいかもしれない。


= トランスフォーマー

_ 土曜日にやっていたので見るとはなしに見ていた。極度に面白いわけでもなく、 見るのをやめるほどつまらないわけでもなく、それでいて おっぱいがすごくて気付いたら24時まで見ていた。

_ 他の映画の予告を流しながらスタッフロールが画面右上の小さい画面 (ワイプっていうんだっけ)の中ですごいスピードで流れてて冗談みたいな 世界だと思った。契約上流さなきゃいけないとかそういうのなのかもしれないが、 見せる気ないんだったら意味ないような。たまにバラエティとかで読ませる気ないほど 高速に流れるスタッフロールを見ることがあるけど、それを越えているなあと思った。


2011/08/02 (Tue)

_ 仕事ばりばり進めようと思って会社来たら、気が滅入ることが たてつづけに3つくらい発生して一気にやる気がなくなってしまった。

_ だからといってやらないわけでもないが、 いい気持で仕事させてもらいたいものだ... どんな気持で仕事しても 同じ結果になるというわけでもないだろうし。



= BCD

_ なんでこれがEBCDICの元になったのかさっぱりわからんと以前思った記憶があるが、 そういうことだったのか。

_ Z80とかはBCDでそのまま計算できる命令があったよねえと思って調べて見付けた ページ。Nフラグはともかくハーフキャリーフラグにあたるものがないので 結局1桁ずつ計算しなければいけないことに。


2011/08/03 (Wed)

_ 生活リズムがなんとなく乱れて、結果として寝不足のような気がする。


= 温度の話、その後

_ つづき。 妻のマシンの温度の上がり具合がどんどんひどくなっているらしい。 調べてみたら、どうやらこの機種はCPUファンに埃が溜まりやすいことで有名らしい。 側面から吸気して、底面から排気するという流れらしい。 フトンの上とかでいじってると埃が溜まりやすいだろうな。

_ 明日は1回休みなので、分解して掃除してみる予定。手順を見た限りでは、 Muramasaよりは楽そうだ。CF-B5Rよりは難しそう。


2011/08/04 (Thu)

_ 今日は1回休み。


= PC掃除

_ AX/53FPK という機種らしいので、「dynabook AX53 分解」で検索して見つけた ページを印刷して作業開始。 ネジの種類が匡体側に刻印されているので非常に楽ちんだ。

_ しかし底面のネジの配置がすでに違うので不穏な感じがした。 分解記事では液晶を外していたけど、とくにやらなくてもいい感じだった。 そのかわり、記事ではすぐにファンを外せていたのが、手元のやつでは メイン基盤に挟みこまれていて、基盤を外さないとファンが外れないように なっていた。メイン基盤を外すのはできればやりたくないなあと悩む。

_ とりあえずファンは露出されているので、上下左右からエアダスターで 掃除してみたところ、指先大の毛玉が。埃と、犬の毛が絡み合って毛玉に なっていたらしい。ドライバーとピンセットで引っ張り出して、またエアダスター かけて、また毛玉を発見して...毛玉は都合3つ収穫された。 これじゃファンも回らないだろう。

_ エアダスターで吹きつけても回らなかったファンも回るようになったので、 ひとまずこれで様子見とすることにした。本当ならきちんと分解して 汚れを取りきりたいところだが、ちょっと工数がかかりすぎる。

_ 組み直して起動してみたところ、CPUが100%になっても70度前後で おさえられているし、少し使用率が落ちるとすぐに温度も 下がってくれるようになった。これでしばらくは大丈夫かな。 なお、昨日は側面吸気→底面排気と書いたけど、手をあててみた限りでは 逆のように見える。

_ 同じ型番なのにネジ穴の位置が変わっていたり、ファンの取り外しかたが 変わっていたりしているが、常識的に考えて手元のやつの方が 古いバージョンなのだろう。きっとファンがらみのトラブルが多くて 修理の工数に響いたんだろうなあと思う。

_ VistaのSP2をあててないみたいなのであてている。 やはり70度を越えることがめったになくてよい感じだ。 CPUよりもシャーシの温度の方が高いというタイミングがけっこうあるのが 今までと大きく違うところだ。ファンが復調したおかげでCPUは速やかに冷えるように なったけど、シャーシ内の保温がよいという問題は変わっていないからな。 しかしこの程度であれば冷却台の類でも十分に冷やせそうだ。


_ PCに入りこんでいた毛は鈴のものがほとんどだった。さすがにチワワは 沢山抜けるんだな。埃+毛の組み合わせはなかなか凶悪だ。 PCをいじる環境を考えてもらわないといけないかもしれない。

_ サーキュレータも毛だらけなので掃除しないといけない。こちらは クマの毛がほとんどだと思われる。来て2日ほどで毛だらけになったので、 ポメラニアンは桁違いのようだ。とても和室(サーバルーム)には入れられない。 シーズーはそれほどでもないのでまだましだけど。



= もっと使える乾物の本

_ 面白かった。干物の本だと思って借りたら乾物の本だった。 乾物のことを意識した経験があまりないので、楽しそうに 乾物のことを語っている様子が新鮮だ。

_ そして乾物はもっと活用するべきだと考えるに至った。 安くて保存がきいて軽くて場所をそんなにとらず、おいしくて栄養があって 腹もちがいいものが多くて、すばらしいことだ。


= おいしさをつくる「熱」の科学

_ これも面白かった。輻射熱、伝導熱、対流熱の3つがあるというのは 知識としては持っているが、その中のどの熱を使って今自分は調理しているか なんて意識したこともなかった。鍋自体の熱容量を考えて鍋を選ぶということも なかった。目から鱗の連続だ。

_ どの温度帯でどのような変化が起こるのか、 強火本と共通のテーマだけど、 食品の種類ごとに詳しく書かれていてとても勉強になる。 その性質をうまくとらえて、例えば、水から茹でるかお湯から茹でるか、 といった話がきちんと整理できるようになった。

_ ジャガイモは30〜65度でデンプン分解酵素(βアミラーゼ)が活発に働くので、 この温度帯で加熱を続けると甘みを増すことができるらしい。 あわせて、50〜60度まで上がると別の酵素(ペクチンメチルエステラーゼ)が 働いて固くなるらしい。なので、40度くらいの温度で加熱を続け、 最後に一気に100度まで加熱することで甘味を増やしてふかふかにできるという ことになる。甘味がすぐにうまみに繋がるとは限らないし、 40度前後に保つというのはなかなか難しいだろう。なので、 水からゆっくり加熱させるというのが現実的なんだろうけど、 このやりかたはいっぺん試してみたいと思う。加熱とは違うけど、 ジャガイモは5度以下で保存すると糖の量が増えるしい。


= 私の整体・カイロ独立開業成功作戦 2007年版

_ 自分がカイロを開業する人生を送る可能性はゼロと考えて差し支えないほどの 確率だとは思う。去年から通っているカイロの先生が手記を寄せているらしいので 興味を持って借りてみた。 よき師匠と仲間に出会い、開業という明確な目標のために経験を重ねてゆく様子が とても前向きだ。

_ そして、よくも悪くも職人の世界なんだな。 開業しないと生活の基盤を立てられないようだ。雇われでは賃金も低いし、 専門性が高い職業なので、あぶれたときにリカバリーがきかないという ことなんだろうと思う。

_ 設備投資より自己投資、というのも実に職人の世界らしい考えかただ。 今行っている場所はおそらく開業当初から変わていないんだろうけど、 設備が劇的によくなったからといって診られる人の数が増えるわけではないしな。 ご夫婦でやっているので部屋の大きさも十分なのだろう。 人を増やして手を広げるといったことは見据えているのかなあ? 機会があったら聞いてみよう(立ち入りすぎ)

_ (追記) 全部読んだ。贔屓目があるけどそれでもやはり今お世話になっている 先生の手記が一番よかった。なぜカイロを志したのか、今に至るまでにどのような 苦労と努力があったのか、といったことをきちんと書いている手記が先生の他には ほどんどいなかった。思い入れよりも、それを志す人が知りたいこと、 つまり不安を覚えたり興味を持ったりしているのかということを満足させる内容 というのは以外と少なかったと思う。

_ この本の中では、数年間学校で学びましょう→学んでいる最中に実践を積みましょう→ できるだけ早く開業しましょう、というのが典型的なパターンのようだ。 そうしたくても、 それがうまくいかない理由はどこにあるのか、失敗談も読んでみたい気もする。


= アプレンティスシップ・パターン

_ アプレンティスシップとは徒弟制度のことを指すらしい。まさに↑で書いた 職人の親方⇔丁稚の世界だ。 デザインパターンと同様のフォーマットで、徒弟制度についての 「パターン」を解説している。

_ 私は、業界が職人によって支えられているということではなく、 教育の手法としての徒弟制度といったとらえかたをしている。 専門性の高い職人集団がギルドを形成して 産業と雇用を保護してきたのに対し、IT業界も同じですよね、とは 自分には思えないんだけど、業界がどうであるかということは置いておいて、 人が一人前の技術者に成長するためには 結局のところここで挙げられているような師匠⇔弟子の関係以外に 有効な教育方法がないのではないか、ということは常に考えていることだ。

_ 自分には師匠と呼べる人物がいない。何でも自分で学んできたというつもりは ないけど。そして、今となってはもう丁稚と呼べるような年代でも境遇でもない つもりなので、そういう意味ではこの本がストレートに役立つということを 期待はしていないものの、 望ましい丁稚の姿、望ましい親方の導き方、みたいなヒントになればいいかなと 思って読んだ。 とはいえ、例えばEmptying the Cupのエピソードなんかは、なかなか示唆に富む話だと 思うんだけど、幸いというかあいにくというか、そういう人は身のまわりには いないようだ。

_ 徒弟制度ということにこだわらず、新しいことを学ぶときにとるべき態度、と 拡大解釈すれば、今の自分の生活を見直すきっかけには十分なのかもしれない。


= 小国主義 − 日本の近代を読みなおす

_ 近代史を勉強しようというの続き。 明治維新以降、日本がとりうる道は大国主義と小国主義の2つがあり、 明治の初期には海外の様子を学びつつ両方の可能性を探っていたはずだが、 結局大国主義に走ることになり、敗戦→日本国憲法は、小国主義への回帰の あらわれだ、という流れだと理解した。

_ 岩倉使節団の日程とか人員の構成とかをきちんと見たのは初めてだった。 みんな若いんだな。最年長の岩倉が47らしい。明治維新での変化というのは 本当にドラスティックだったんだな。 黒船にびびってイギリス戦艦がトラウマになって、脇目も振らずに 富國強兵をつきすすめて、当たり前のように軍国主義に至ったというような 理解をしていたけど、この本を読んで、 少なくとも明治初期の政治運営者達はかなり冷静に世界の動きを見ていたんだなと 思った。

_ 彼等なりにどうしたいというビジョンはあったんだろうけど、 どんどん目論見から外れてゆく(というのも後から見た感想に過ぎないわけだが) という様子は非常に興味深い。ものすごく頭のいい人であっても、 渦中にいては見えないこともあるし、避けられない流れというものはあるんだろう。


2011/08/06 (Sat)

_ 宿酔で寝坊した。昨日は同僚と飲んだ。飲むほどに意識がはっきりしてきて 寝る前までとても元気だった。が、あくまでそんな気がしていただけで、 実際のところはしっかり宿酔だった。


= Android勉強会

_ 寝坊したので1時間遅刻。

_ 結局課題は見付からなかったので今日返さなきゃいけない本をひととおり眺めて いじることにした。SurfaceView、AudioTrackなど。

_ AudioTrack: コールバックモデルについて理解して正弦波や矩形波を鳴らして 少し満足した。100msecのバッファを用意したんだけど、何かの拍子に バッファアンダーランが起こって音が途切れる。そしてCPU利用率もかなり 高い(80%とか)。結構シビアなのかもしれない。

_ SurfaceView: Canvasを使って描いてゆく方法を理解したので通例通り 縁どり+グラデーションつきの文字を表示させてみた。

人生オワタ\(^o^)/

Shaderという枠組でグラデーションなどをやるらしい。

_ いろいろ手を動かせばそこでねたが見つかるわけで、帰りの電車の中で アイディアが浮かんできた。少しずつ消化してゆきたい。


2011/08/08 (Mon)

_ 少しだるい。寝苦しい。


= RC-S370

_ 今は黒PaSoRiというと370という型番になるらしい。 パッケージも簡素化されて、縦置用のスタンドがついて、あと本体がなんか 軽くなった気がする。

_ libnfcでは普通に使うことができたのでよかった。ACKなしで応答が帰ってくることが あるというのも変わっていない。



= 今日のlibnfc

_ Windows版をビルドしようとして大変なことになった。最終的には DLLを手に入れて、nfc-list が動くところまで確認できた。メモとりながら 進めたものの、もう1回同じことやれと言われたらとても嫌だなと思った。

_ 公式のドキュメントではCMakeを使いましょうとなっていて、 へそまがりなのでMSYSでやったので、それが悪かったのかもしれない。 CMakeはなんかリンクの段階で怒られたので、それなら手でやった方が早いのでは、 と思ったのがMSYSに移行した理由なのだけど、大きな間違いだったような気がする。


= 今日のJava

_ 電文仕様上は2バイトでネットワークバイトオーダで、という指定になっていて、 つまりunsignedの数値として利用したいのだが、Javaにはunsignedがない。 ひとつ上のサイズの型を使うか、バイト配列のまま使うしかないのかなあ。

_ C#ならCLSCompliantをあきらめれば unsignedも普通に使える。 そしてUInt32を見る限りでは、 CLS-compliantにしたければInt64を使えということなので、 前段で書いた「ひとつ上のサイズの型を使う」というのが正解なのか。でもJavaには 64ビット整数がないのでは...と思ったらlongでいいのか。

_ ... int に 0xffffffff などを入れようとしても普通に成功するのね。 そしてそれをByteBufferとかでバイト配列にしてあげればきちんとFFFFFFFFが 取り出せる。ならこれでいいか...


= トコトンやさしい非接触ICカードの本 / 非接触ICカード設計入門

_ FeliCaのことはそれなりに理解できたつもりだけど、 NFCのことはよくわからんので勉強する計画の第一弾。偶然にも 同じ著者の本だった。前者は一般向けで後者は少し技術寄りの話。 とはいえ扱っている内容は同じなので、前者→後者に無理なくステップアップできた。

_ Type-A、Type-Bについてはほとんどまともに触ったことがないので 勉強になった。とはいえ、これらの本でFeliCaについて扱っている部分を読んで 「これじゃ分からない人には分からないだろうなあ」と思ってしまったので、 Type-A、Type-Bについても分かった気になっただけかもしれない。


2011/08/09 (Tue)

_ 今週に入って明らかに朝の電車が空いている。今月に入ってすぐに 人が減ったのは大学生が夏休みに入ったのだろう(前の週に試験勉強をしている 姿が随所にあった)。会社も夏休みに入ったのか?


_ 通院。血を抜かれてきた。今日もなんか出が悪かったが先生はあまり気にする 様子もなく少量とって終わった。

_ 目が霞む。資料を小さく印刷していたら 0x0D と 0x00 を見間違えて 20分ほど悩んでしまった。

_ 血といえば数日前から尻が痛い。平仮名で一文字、漢字でも一文字の あの病気なのかとおののいているところだ。


= すぽると!

_ 音の使いかたが下品すぎると思う。ヒット系の音ばかり使ってみたり、 音圧を高くしていきなり止めてみせたり、同じイントロを繰返し聞かせたり。 音の暴力だ。 だいたいなんでイタリア語読みなんだよ、そしてそれを平仮名表記にして !つけるセンスはどうなんだと無関係なところまで癪に障る。


= 総理の話

_ 開き直ってしまえば 周囲が何を言っても、どんな行動をしても無効なんだというのは新鮮な経験だ。 権力に恋恋とする人が本気で権力を手放さない努力をすると、 こういうことになるんだな。「誰がやっても一緒」という有権者の言葉は、 どうせすぐ破綻する/また変わるんでしょう、という先取りした諦めのあらわれだと 思うんだけど、今起きているような状況を見ればまた意見が変わるのかもしれない。

_ 過去めまぐるしく総理が変わったのは、今の状況とは何が違うのかということは 知っておきたい気がする。単に人としての心があるかないか、という話なのかも しれないけど、少なくとも現時点の総理は、周囲がいくら終わった終わったと 騒いでも、進退が極まったという自覚が本人にはまったくなさそうに見える。 とんでもない精神力だ。

_ そして、とんでもないことが起こりすぎると変に落ち着いてしまうんだなあ と思った。騒ぐ方も疲れているというか、諦めと自棄が混じった騒ぎかたに なっているような気がする。


2011/08/10 (Wed)

_ 携帯のブラウザでTwitter見ようとすると表示されるまでに2〜30秒かかる。 あちこちひきまわされてうんざりした末にバーンと見せられるので 余程の内容じゃないと見たことを後悔する結果になる気がする。 テレビの凝った字幕で笑いをスポイルするのに似た感じが。

_ なおTwitterの炎上ねたは叩いてる方も叩かれている方も等しく痛いので見ていて 少しも面白くない。どちらかというと叩く方の技量不足の方が罪が深い気がする。 そして読んでて気が滅入る。


= 今日のJava

_ たくらんでいることの30%くらいを達成した。 物が期待通りに動きはじめると、やはりうれしい。

_ Eclipseがうまく使いこなせていないのでモジュールの分けかたとかが いまいちうまくできないので、そのへんは見なかったことにして 1個のクラスにずらずらと書いていた。1000行近くになるとさすがに 見通しが悪くてうんざりしてくる。そろそろそのあたりをきちんと 考える頃合かなと思う。JUnitも使いたいし。

_ Eclipseといえば、例外が発生したときにExceptionの中身を ウォッチできないのかしら? messageとか見たいんだけど、コードいじらずに 見る方法が分からない。

_ 久しぶりにJava触ると、なんでこうなってるんだろう?と思うことが多い。 あるいは、こんなやりかたでいいのだろうか?といった不安なども。 「Java: The Good Parts」を読んでおいたほうがいいかもしれない。


= したいこと

_ ひらしょーさんの記述を読んで、 非常に同感だなあと思ったんだけど、 「したくないこと以外で、一番人の役に立つことをすればいい」というところには、 「長続きすること」をどうしても付け加えたくなってしまう。 付け加えたいと思うのは、選択肢というものがプッシャーゲームのコインのように あちこちから落ちていってしまうものだという感覚から来るものが強い。 したがって、人生をかけてまでしたいことなんてない、ということを(冒頭に 書いた通り非常に同感なんだけども) はっきり言うこともはばかられる気分がある。

_ 結局、自分がどうかというよりは、そういう発想に対して 近隣の利害関係者、あるいは家族が「危うさ」を感じるのではないかという 危機感が自分の中にあるのかなと思う。


_ 今週の暑さは悪夢のようだ。家を出る時刻は変わらんのに日を追うごとに 暑くなっている気がする。そしてエアコンから一番遠い和室の室温が 35度で安定してしまっているので、このままではサーバが壊れてしまいそうだ。 リビングのエアコンの風を一生懸命まわしても30度を切ることがない。

_ 和室はPCや本を置いているので自然と足が遠のく。 もともと家にいるとなかなか身が入らないほうなんだけど、暑さに 追い討ちをかけられている状態だ。


= 今日のJava その2

_ モジュール分けたりプロジェクト間の参照したりするのは簡単だった。 コピペすると必要なimport文も一緒についてくるのは立派だと思った。

_ そうそう、今回はjava.util.concurrentやjava.nioをきちんと使いましょうという 裏タスクがあるのだった。今回のタスク自体が裏なので、裏の裏となると もはやわけがわからないけど。


2011/08/11 (Thu)

_ 3時過ぎに目が覚めてそれっきり眠れなくなったので6時前に家を出た。 なんだか右肩が痛い。寝違えたときのような嫌な痛みだ。

_ 夏休みの早い時間に成田空港方面行きの電車に乗るのは無謀かなと ちょっと思ったけど、さほど混んでなかった。

_ 久しぶりにミスドに来た。ハンバーグパイはもうないのだろうか? かわりにえびグラタンパイを食べた。パイおいしい。 んほぉぉぉ!!このパイおいひぃぃでしゅうぅぅぅ!!!! と言った方が正確かもしれない。


_ 尻なおった。よかった。

_ 今日もとんでもなく暑い。昨日より2時間くらい早く家を出たはずなのに、 駅までの道のりは昨日よりも暑く感じた。


= 今日のJava

_ gotoないらしい。そう言われてみると、 ないんだけどなぜか予約語になっているとか、 そんな話題を以前読んだ気がする。 ループの大域脱出にはラベル指定のbreakが使える。 C#だとラベル置いたとこに飛んだり、case文のfallthroughをするときに gotoが使えるんだけど、 Javaはループ自体にラベル(名前)をつけて、その外に出るという動作しかできないようだ。

_ ByteBufferという枠組のことを学んだ。 バイト配列の一部分を得るとか、バイト配列を合成して新しいバイト配列を 作るとか、という用途のとき、ByteArrayOutputStreamを作ってtoByteArray()で バイト配列作って...というロジックをあちこちで組んでいるので、 一時メモリの使用量としてはあまり優しくない。 ByteBufferは実体は別に確保できるので、こちらの方がスマートかなあ?と思えてきた。

_ ただ、byte[]を要求する場所にByteBufferを与えることができるわけではないので、 Cのポインタのような手軽さは残念ながらない。 C#にもSystem.ArraySegment<T> というのがあるけど、 これも同じ理由で常用に至らなかった。もっとも、java.nioは ByteBuffer前提で組まれているみたいなので、他もByteArrayで合わせてしまう というのも一つの考えかたかもしれない。


_ 肩の痛みと手の甲の痛みが連動しているような気がする。これはひょっとすると トラックボールのせいかもしれない。 今月はノー残業月間なのでPCいじっている時間はいつもより少ないはずなんだけど、 いつになく仕事がはかどっているので密度は濃いのかもしれない。


= 今日のC++

_ Javaで書いているのは以前作った環境の互換品で、 でも当時作った環境は実機がないのでもう動かない。 当時、かなり気合いを入れてあらゆるパーツのエミュレータを作っていたので、 それを組み合わせて少し手を加えれば完全にソフトウェアだけで環境を 作ることができることに気付いたので、30分ほどかけて格闘して 動くようにしてみた。

_ 以前も書いたように思うが、互換品やエミュレータ、Proxyといったものを 作ることに対して抱く楽しみは自分の中では飛び抜けて大きい。 過去の膨大なコードが、ちょっとしたコードで破綻なく動いたり 加工できたりするのを見るのは快感ですらある。

_ なお、当時作った擬似環境の中に「DO NOT CHECK ME!」という チェックボックスがあって、それを押さないと完全にソフトウェアだけの擬似環境は 完成しないようになっているのはごく限られた人物にしか伝えていない。


2011/08/12 (Fri)

_ さっさと寝たので少し元気になった。肩の痛みで目が覚めることもなかった。 痛みがなくなったわけではない。

_ 最近の子どもたちは親のblogとかを読むことがあるのだろうか? 自分が生まれる前や生まれたばかりの頃の記録を読むというのは 今までの時代にはなかったことだと思うので(せいぜい写真くらいか)、 すごいことであると同時におそろしいことだよなあ、とたまに思う。 とくに今の子どもの時分からblogを遺す習慣がある人は、そのさらに子どもに 親の人生の大半を見られてしまう ことになるわけで、自分の子どもが見ても恥ずかしくないものを! ということを子どもの頃から心がけようというのも なかなか難しい話だと思う。

_ ただ、30近くの分別のある大人があながとけちゃうと騒いでいるのは 問題の次元が違う。



= セキュリティコード

_ 本筋とはまったく関係がないんだけど、 セキュリティコードが間違っていて、後から拒否されるというのは どういう状況なんだろう。

_ お店(ショッピングサイト)がオンラインオーソリをしているのであればその場で 拒否されるはずだし、その場でオーソリをとっていないのなら 会員番号/有効期限/セキュリティコードの組をお店が保持していることになり、 それはあってはいけないことだし、運用上もありえないと思う。

_ セキュリティコードでひっかかったにもかかわらずOKを返してしまった 何者かがいるとしか思えないんだけど... (繰返しになるがartonさん エントリの主旨とはまったく関係がない。「見る」ことでしか取得できない 情報であるのが存在理由なのだから、 見づらくすることに意味があるとは思えない。盗み見できるほどデカいのであれば それも考えものだけど)


= 今日のJava

_ まだやってない(なら書くな)


_ whileループの手前(A)、入ってすぐ(B)、抜けてすぐ(C)にトレースを置いたのに (A)しか出てこない。条件が成立してれば(B)が出るはずだし、抜けてすぐなら (C)が出るはずなのに。

_ while(iterator.hasNext())の 直後にうっかりセミコロンを打っていたことに気付いたのは 30分後くらいだった。 そのため、その下のブロックに行かなかったらしい。ミス自体も間抜けだし 追求のしかたも間抜けなので30分も悩んでしまって、それもまた間抜けだ。 Iterator.hasNextがブロックしているのかと本気で思ってしまった。

_ C#で一番好きな例外(NotImplementedException)がJavaには見当たらない。 commons(org.apache.commons)というのにはあるらしいけど。 UnsupportedOperationExceptionは、ちょっと意味が違うし使いづらい。


2011/08/13 (Sat)

_ 寝すぎた。


= すいとん

_ 金曜の晩飯はすいとんを作って喰った。米沢にいた頃によく作って 喰ってたメニューだ。 小麦粉、大根、人参、鶏肉、 それからうまいたれがあれば すぐに作って食べられる。 うまいたれを十分に吸いこんだすいとんは、つるりとした表面と、 それなりの弾力がある。小麦の香りがしてとてもおいしい。

_ 「竜馬がゆく」では、 竜馬がまぜごはんが好きな理由として「おかずを食べる手間が省けるから」といった ようなことを言っていた気がするが、すいとんは、ごはんとおかずの上に 汁物まで兼ねているのでより強力だと思う。 そして食べれば身体が温まり、喉が楽になるし、その上部屋の温度も上がる (部屋に暖房がなかったので部屋の温度を上げるには料理するか運動するしかない)。 完全機能食という言葉はすいとんにこそ相応しいと思う。

_ 正式な作りかたは分からないけど、母が作ってたのを見ていたので 見て理解した通りに作っている。 が、Wikipediaを見ると、 手で千切る、手で丸める、などと想定外の製法が。 私が作るときは、ホットケーキを作るときくらいの緩さで溶いておいた 生地をスプーンですくって鍋に放り入れる。入れたそばから固まりだすので、 あとはあほみたいに入れていればできあがりだ。まあ説明を読んでいる限りでは、 よく溶いてから少し放置したほうが、より弾力のあるすいとんができる気がする。


= 料理

_ 大学一年のときは山形市の下宿で、台所が共用だったのであんまりガスを 使った料理はしなかった。10円入れるとしばらく使えるというようなやつで、 せいぜいラーメンを作るくらいだった。なので、炊飯器で炊いたごはんと納豆、 それから卵を器に割り入れて電子レンジで温めたポーチドエッグもどき (常盤貴子とかたせ梨乃が出てたドラマで「チンタマ」という名前で 出ていた。ドラマの中身は一切覚えてないが、この料理だけは覚えている。 これかな) 、 あとは近所のサンクスで売ってた100円ちょっとのハンバーガーなどを 好んで食べていた。

_ その後、8年くらい米沢でひとり暮らしをしていた。すいとん以外には、 チャーハン、野菜炒め、焼き魚、パン、などなど。鳥はむにも随分お世話になった。 あとは、そば、うどん、そうめん。なにしろ楽だしな。 冷たいやつなら茹でて冷やして、あとはうまいたれだけで事足りるし、 そばを茹でてかんてんぱぱの、 わかめ、麸、ネギなどが詰められてるやつを、うまいたれを割った汁に 入れれば、それだけでおそろしくうまいわかめそばを作ることができた。


= 人間はどこまで耐えられるのか

_ 単純に面白かった。どのぐらいの暑さで死ぬのか、どのぐらい寒さ、 高さ、低さ、など。そしてそのとき身体にどういう変化があって死に至るのか、 といったことが丁寧に扱われている。タイトルから、いろんな死亡フラグを寄せ 集めた本だと勝手に想像したのだけど、そういう意味では死亡フラグは少なめで、 むしろそのときに身体に起こる変化の方に重点を置いているように思う。 原題も「Life at the Extremes」となっているので、 「どのくらい速く走れるのか」の章もこの原題なら違和感がない。 そういう意味ではあまり正確な邦訳とは言えないんだろうけど、 なんといってもこのタイトルに魅かれて借りてしまったので、個人的には ありだと思った。

_ 訳者のあとがきを見てようやく著者が女性であることに気付いた。 くち髭を生やした細身の神経質そうなおじさんを想像していたので驚いた。


_ 男性だと思っていたら実は女性だった、と気付いて驚いた、 といえば最近同じような経験をしたのは 山根ミチルさんだ。


2011/08/14 (Sun)

_ 今日は結婚記念日だった。そしてつぼみの正式譲渡日。つぼみは 8/14を誕生日にするそうだ。


2011/08/15 (Mon)

_ 今日は一回休み。でも家で鬱鬱と過ごしてしまったので、こんなことなら 会社行けばよかったと思った。ひどい休日の過ごしかただ。


= 王家の谷 エルギーザの封印

_ ギャラリー・オブ・ラビリンスの 「降り積もる砂塵」「秘宝を求めて」はこのゲームの曲のアレンジらしい。 「秘宝を求めて」は、ギャラリー・オブ・ラビリンスの中でも かなり好きな曲なので驚いた(一番好きなのはNAME ENTRY)。

_ 「王家の谷」に続編があったなんて知らなかった。「王家の谷」はすこしだけ やったことがある。けっこう面白かった。


_ 和室が暑い。エアコンの風を頑張ってひっぱってきても32度くらい。 小さい扇風機とサーキュレータの風を直接身体に向けていれば PCをいじっていられる程度にはなるものの、当たっていないところ(椅子の座面と 身体の間とか)はあいかわらず暑いし、暑さを感じづらくなっているだけで 実際は暑いわけで、少しずつ息苦しくなってくる。

_ あとは身体をひっきりなしに濡らして気化熱を排出するくらいしか手がないな。


2011/08/16 (Tue)

_ あづい!


= 今日のJava

_ たくらんでいることの80%ほどができるようになった。これで応用できる範囲が いろいろ広がるな。うれしい。

_ このプロダクトはAndroidでも動かしたいので、そろそろAndroidのアプリケーションを 組み始める予定。ただ、その前に、ログをなんとかしたいところだ。 System.out〜とかSystem.err〜を無造作に使ってきてしまったので、 log4jとかを使いたいところだ。でもAndroidにはログの枠組みがあるので、 Androidの場合にはそちらを使いたい。

_ などと考えながら検索を続けたところ、 SLF4Jを使うのがいいのではないのか、 という話題を見つけた。Androidのときは、 SLF4J Androidを使うようにして、 それ以外のときはlog4jに飛ばすようにすればいいかな。

_ ...そういえばJavaの世界ではlog4j以外にもいろんなロギングフレームワークが あったな。たしかlog4jのオリジナルの作者はlog4jじゃない別のフレームワークを 作ってたような気がするし、 java.util.logging というのがJava標準であって、それは Androidでも普通に使えるらしい。他にも、commons-loggingというのも あるようだ。

_ log4jの後継というのが、 Logbackなのか。 とりあえずSLF4J経由で使えばいいかなあという気がしてきた。



= セキュリティコード つづき

_ つづきartonさんにフォローいただいているが、 私もなんとなく気になって、何人かの同僚に個々のエピソードは伏せて、 一般論としてどうだろうと聞いてみた。オーソリでセキュリティコードNGの 場合にOKが帰ってくることは考えづらい/その場じゃなくて後でオーソリ とってるんじゃないの?という意見だった。 (日本クレジットカード協会の ガイドラインを見る限りでは、 そういう運用は今後だんだん許されなくなってゆくとは思われるけど) Web通販でECサイトと決済が連動していないというのは たまにあるらしい。

_ なお、お店に一切情報を渡さない決済方法としては、 Shot2Playのようなものがありますね。対面での運用は見たことがないですが。 それに、決済事業者が信用できるのかという問題もありますので、 結局はEMVか非接触ICカードが現実的なのでしょう。ただ、 CAT/CCTならともかく、POS連動だとあれらも運用次第ではどうにも、 という気がしますね。


= Nexus S

_ 社内の委員会で買ってもらった。AndroidとNFCって結局どういうものなのか よくわからないまま半年以上もやもやしていて、半年くらいすれば もっと普及しているからその時に買えばいいやと思っていたら さっぱり出てくる気配もなく、もうがまんできないので買ってもらった。

_ まずは慣れているFeliCaから手をつける。 情報収集をしつつ、自分で組み立てたカードコマンドを投げつけて期待する 結果が帰ってくることを確認した。 Request ResponseとRead w/o Encryptionだけだけど、これらが投げられれば 他が投げられない道理はないので、とりあえず委員会向けの成果については これを育ててゆけば問題なさそうだ。あとは↑の方で散々書いているJavaアプリに 組み込んでゆくといろいろ楽しいことができる予定だ。

_ あとは黒PaSoRi+libnfcを絡めたねたもあるのだが、そちらはさすがに すぐに仕事に結びつくとは思えないので、お勉強会用のねたにしようと思う。

_ それにしてもDesireと交互にいじっているとボタンの配置がいちいち違うので 戸惑う。電源ボタンの位置(NexusS→右側面、Desire→上)から始まり、 下のボタンも、NexusSは戻る→メニュー→虫めがね→ホームの順で、 Desireはホーム→メニュー→(光学トラックボール)→戻る→虫めがね、の順だ。 合わせる気のなさが泣ける。標準で決まってないんだろうな...

_ なお、NexusSにはSIMを挿していないので、無線LANがないと何もできない。 でも無線LANさえあればAndroid Marketも普通に使えるので、開発用と 割切れば今のところ特に不便はない。

_ あと、RFの出力が低いのか、意図してそうしているのかは分からないものの、 カード/携帯はNexusSの底面にぴったりつけないとほとんどキャッチできていない 気がする。液晶面に載せても駄目だった。


2011/08/17 (Wed)

_ NexusSをいじる時間がなかなかとれない。


= 今日のJava

_ 先週から書いていたコードをAndroid上で動かす実験をした。 ほとんどのロジックはクラスライブラリに書いていたので、リンクすれば 一発よね、と思ったらうまくいかない。NoClassDefFoundErrorだってさ

_ クラスライブラリをjarにして持ってゆかないといけないのかな、と 1時間くらい格闘したけど駄目で、結論としてはSLF4Jを持っていってなかっただけだった。 自分のライブラリのコンストラクタがスタックに積まれているのに 自分のライブラリがリンクできていないと判断するあたりは間抜けとしか言いようがない。

_ おかげでJavaアプリケーションとして動いていたものと同じものが Androidで動いたという段階で時間切れになってしまった。 本当ならAndroidならではのコードを書いて喜んでなきゃいけない段階なのに情けない。

_ NexusSの電波について。以前の仕事でプロジェクトを組んでいた別の会社の方に 作っていただいた、搬送波の強さが見えるデバイス (コイル+LEDとあと可変抵抗的な部品?)を近づけたところ、 底面5cm程度でようやく光る程度の強度らしい。液晶面ではまったく光らなかった。 SIM挿している場合とそうでない場合ではまた違うかもしれない。

_ ...黒PaSoRiもだいたい同じくらいか。ただ底面に近づけてもちゃんと光る。


2011/08/18 (Thu)

_ 今日は1回休み。

_ ここのところどうも感情の起伏が激しい。些細なことで眩暈がするほど 腹が立ったり、情けない気分になったりする。 文字に起こせば他愛のない、何に腹を立てているのかすら分からないような 内容なのに、度を失うほど腹が立つことがある。 余裕のなさと自信のなさの現れだろう。


= 今日のNFCなど

_ NexusSでAPI demoを動かす。住基カードに反応しない。TypeBだったはずだけど...

_ libnfcは少しいじってつまづいた。librettoだとPDFを見ながらEclipse開きながら EmacsでCを編集しつつ開発というのがちょっとしんどい。 (画面サイズではなくメモリ的に)

_ ...TgInitAsTargetでApplication level errorが出ており、パケットを見てみると 確かにPN533の仕様と合っていない。 無理矢理合わせてもやっぱり同じエラーだった。週末に頭冷やして考えなおす。

_ NexusSをUSB接続しても、Mass Storage Modeに切り替えますか的な メッセージが出なくなり、そしてデバッグもできなくなってしまった。 よく知られた症状らしいが回復に関する決定的な情報を手に入れることが できなかった。 このThreadを読んで、手元の環境では 「USB Debugを無効にする→電源OFF→ケーブル抜いたまま電源ON→落ち着いたらUSBケーブル挿す」、という流れで復活した。 といっても、それまでに他のWindowsマシンに挿してみたり、 Volume Upを押しながら電源入れた後に起動したり、 といった操作を何度もしていたので、ここで書いた手順がminimalなのかどうかは まだ分からない。また発生したら検討することにする。

_ nfc-listを実行してNexusSを黒PaSoRiに置くとFeliCaのPollingにだけ反応するな。 IDmはそれっぽいけど、PMmはなんかでたらめだ ( c0 c1 c2 c3 c4 c5 c6 c7)。


= ノンデザイナーズ・デザインブック

_ 昔に持っていたが手放してしまった。2008年にThird Editionが出て、 フルカラーになっている。なつかしくなって借りてみた。 この本で学んだことは多かったが、一番はやはり中央寄せを乱用しないという ものだろう。あらためて読みなおして、Helveticaを使いすぎないようにしよう と思ったことも思い出したが、こちらはあまり身に染みていなかったらしい。

_ 前半がデザイン、後半が字体がメインになっている。後半は当然だが 英語の話なので、ピンと来ない部分がある。巻末に日本語向けの説明が 数ページある程度では埋めがたいものが。まあこの辺は別の書籍をあたる べきなんだろう。

_ 「ノンデザイナーズ」とある通り、デザイナーの人から見れば 当たり前のことか、ひょっとしたら邪道なことしか書いてないんだろうけども、デ ザイナーでない人にとって、このあたりを知っているか知らないかの違いは大きいと思う。

_ ...前回読んだのはそんなに昔でもなかった。 6年前


= 井上成美

_ 私は横須賀の大田和というところで生まれた。 3歳?くらいのときに、長井に引っ越して、それ以来、大学進学まで15年ほど 長井に住んでいたことになる。

_ 井上成美は戦前から長井の荒井というところ(246号の「長井」バス停から 長井町内を縦断するバスが出ており、その終点にあたる)に住居を構え、 戦後はほとんど長井から出ることもなく過ごしたらしい。 私が生まれる9日前に亡くなっている。

_ 長井小学校→長井中学校と進学したので、井上成美との因縁は決して 浅くないんだろうけど、この人のことが話題になることはまずなかった。 小学校中学年のときに、 なにやら井上成美と地域の写真をあつめた本が出るとかで、そのパンフレットを 配られて短い説明を受けた。覚えている限りでは井上成美の名前が出たのは 後にも先にもその1回きりだった。その説明も、 「最後の海軍大将」「晩年を長井で過ごした」という程度のものだ。 名前は「イノウエセイビ」と発音していたように記憶している。

_ その頃よく遊んでいた友達が荒井に住んでいて、井上成美の住居跡は 歩いて5分ほどの距離だった。 切り立った崖のすぐそばに突然現れる背の低い洋館。 車1台がやっと通れるくらいの細い砂利路を通ると、そんな井上邸が見えてきた。 子供心にこんな不便なところに住むなんて酔狂な人だと思った。

_ 「イノウエシゲヨシって知っているか」と、前職の故・前社長に突然聞かれたのは、 何かの宴会のときだった。知らんと答えたが、よく聞いてみると長井に住んでいた 海軍大将だということなので、ああイノウエセイビならすぐ近所に住んでましたよ、 と答えた。その後どんな話題に展開したのかは覚えていない。前社長は 歴史好きで、米沢の歴史サークル的なものを主催していたということを 覚えていたので、そういう人の注目を集めるような人なのか、と秘かに驚いた。 物を知らないというのはおそろしいことで、大将というのがどういう身分の人なのかも 知らなかったし、そもそも長井という土地に愛着がまったくなかったので、 そんなところにそんなすごい人がいるわけがないというような、妙な先入観もあった。

_ 先月から近現代史を見直そうという取組みをしていて、Wikipediaでいろいろ 泳いでいたら井上成美の項に 辿りついた。 といっても、中のエピソードを見てもっと知りたくなった、というよりは、 「市立横須賀病院長井分院」ってどこのことだ?というほうがむしろ気になった。 私が生まれ育った頃には内科といえば上原、嘉山といった病院があったけど、 市立病院の分院があったという記憶はない。

_ 長い前置きになったが、阿川弘之の「井上成美」を読めばそのあたりのことも 書いてあるかな、と少し期待して借りて読んだ。なかなかの大作で、 とても読みごたえがあった。著者自身が海軍の出身で、 海軍大将3部作のうちの1つらしい。残り2冊は山本五十六と米内光政。

_ 長井についての記述は「三浦半島最西端の半農半漁村」という表現があり、 まあ身も蓋もないが客観的に見ればこれほど適切な表現も珍しいと思った。 そして地域の荒れっぷりに驚いた。私が中学の頃も 校舎の廊下にバイクが走っていたり相当だったけど、 こういう下敷きがあるのか、と思った。 あと、市立病院長井分院のことは詳しくは分からなかった。

_ プリンストン高級研究所でアインシュタインを見掛けた中山少佐が、週2回ワシントンに 軍の研究のために通っていることを聞いて違和感を覚えるという記述があり、 それが原爆の開発だったのだ、と投下直後に理解した、というような記述があった。 実は、近現代史の中で一番見えていなかったのが、日本はアメリカが 原爆を完成させたことを知っていたのか?という点で、特に井上のように アメリカとの交戦に否定的だった人が、原爆の存在を根拠にしてそういう 主張をしていたのか、あるいは、日本中の誰もその気配すら感じとれずに 突然落ちてきた「新型爆弾」に驚いた、という展開なのか、どっちなんだろう、 とずっと疑問だった。

_ 本書を読むと、広島の原爆投下の翌日にはそれが原爆であると確認していた ようだし、 Wikipediaを見る限りでは、原子力を利用した爆弾については、 日本も陸海軍がそれぞれ独立して研究していたようだ。 まさか完成させているとは思わなかった、という認識だったのだろうか。 現に、あっても1発しかないはずだというつもりでいたようだし。 なお、同じくWikipediaを見る限りでは、アインシュタインはマンハッタン計画に 参加していなかったようだ(政治的スタンスで敬遠されていたらしい)。

_ 私が生まれ育っている時代の人はもちろんほとんど出てこない。唯一の例外は 中曽根康弘だった。海軍出身だったのか。 そうそう、なお上で挙げたWikipediaのエントリはこの阿川本からの孫引きがとても 多かった。

_ 将の器にふさわしいのはそれにふさわしい識見を持った人だ、人格だけで 将になれない、ということを言っていた。中国の歴史を読んでいると、 皇帝や貴族の高貴さというのは人格に宿るものだという思想が強く出てくるので、 この考えかたは衝撃だった。

_ 全体的に、すごい人だし魅力もあるんだろうけど、人間的な面白味には 欠けている人、という評価に落着くのだろうか。佐伯彰一という人が文庫版解説を 書いており、「対象と書き手の判然たる抵抗にもかかわらず、この主人公の 頭上に、知的栄光の輝きはまぎれもないのだ」という表現が実によくこの 小説の性質を示していると思う。ここで引用した部分に限らず、 この解説文は本当に秀逸だった。この本の消化不良を一気に解消してくれた。 「解説」で感動したのは、藤沢周平の短編の解説(立川談志)以来だ。


2011/08/19 (Fri)

_ 朝から return; しかコード書けてない。あとはメールとか内線とか 打ち合わせとか。


= 今日のJava

_ throwsまで含めて型なのか。 あるクラスはネットワークにつなげるし、別のクラスはファイルの読み書きをするし、 また別のクラスはハードウェアを叩くし、でも同じinterfaceを実装しています、 というような場合には、interface側で決めた例外しか投げられないので、 中で飲みこんでしまうか変換するか、interfaceを作るときに 神の洞察を発揮するしかないのだろうか。

_ NexusSにコマンド流して処理を進めてみた。流れるようにはなったものの、 途中でコマンド送出に失敗する。

08-19 16:18:10.707: DEBUG/NativeNfcTag(210): Tag lost, restarting polling loop
08-19 16:18:10.710: ERROR/NFC JNI(210): phLibNfc_RemoteDev_Transceive() returned 0x0094[NFCSTATUS_TARGET_NOT_CONNECTED]
唐突にTag lostと言われてモードが戻ってしまう。 発生するタイミングは一定していない。 このへん?なのか? だったとしてどうしろというのだ

_ 頭を冷やして5分ほど考えた結果、 とりあえず時間によるものなのかコマンドによるものなのかを はっきりさせたいので、たくさんのブロックをRead w/o Encryptionで読ませたり、 Request Responseを投げまくったりして様子を見ようと思ったが時間切れだ。

_ NexusSをPaSoRiにかざしたらFeliCaに反応したというのは、 API demoを入れていた影響かもしれない。アンインストールしたら反応しなくなった。 API demoを見るとNfcFを使ったものばかりで、 むしろなんでFeliCaなのかと不思議な気分になってくる。


2011/08/20 (Sat)

_ 昨日は雨が降った。すぐに涼しくなったのでとても分かりやすい。 今日も天気があまりよくないようで、室温もそんなに高くない。 和室もエアコンなしで30度まで下がっている(^^)

_ リビングはエアコンつけないと29度まで上がってしまうのでつぼみには きついかなと思いエアコンをつけている。でも和室でPCいじってると つぼみが和室に来てくつろいでいるのであまり意味がない。 冷却マットを持ってきてもその上で寝る気配がないし。畳が好きなのかしら。 そういえば鈴も和室が好きだった。光速でおしっこするのでなかなか 入れてあげることはできなかったけど。



= ペダル

_ 米沢から数度の引っ越しを共にしたペダル。 最近よく使っている。家で無駄にニコニコ動画を見て過ごすことが多かったので、 どうせ見るならペダル漕ぎながら見ようと思ったのだった。

_ それなりに運動になっていい気持ちだ。ただ腰に負担がかかるらしく1日3時間くらい やっているとかなり痛くなる。やりすぎか


= 今日のNexusS

_ 昨日書いた通り単純なコマンドを繰返し投げてみた。500回連続で投げても 問題ないので、キャッチしてから 一定時間経過すると外れてしまうとかではないようだ。

_ WatchDog云々のコード見ていて気になったのは Timeoutが125msらしいということだった。125ms経過後に何らかのチェックをして、 コマンド実行中にはそれが失敗しているのだとすれば、125ms以内にコマンドが 終わっていなければいけないということになり、それはけっこう 厳しい条件のような気がするんだけど...

_ えーと、たとえば12ブロックのRead w/o Encryptionの レスポンスは205bytesになるから(プリアンブル+ポストアンブルは除く)、 212kbpsで転送すれば...10msec程度か。転送にかかる時間だけを 考えればそんなに厳しくもなかった。

_ NexusSでコマンドの発行と戻りの時刻を計測してみたところ、 5ブロックのRead(w/o Encryption)に65msec、12ブロックのRead(w/o Encryption)に 170msecほどかかっている。もっともこれはログの出力時間や NexusS側の処理にかかっている時間がいろいろ含まれているので、 コマンドの中では最速の部類と思われるRequest Responseで 同じ計測をしてみたところ、15〜20msecというところだった。

_ コマンドにかかる最大の時間はPMmで指定されてくるので、 それを見て計算すれば少なく見積った場合の「カード以外の処理時間」が見えるかな。 PMmをまともに使って計算したことなんてなかったな。 計算式はFeliCa技術情報にある 「FeliCaカード ユーザーズマニュアル」に載っている。

3> pmm:test(5).
[[{'PMm',<<1,16,139,66,143,190,203,255>>},
  {request_service,67.648},
  {request_response_and_request_system_code,
      3.6239999999999997},
  {authentication,86.976},
  {read,227.10399999999998},
  {write,270.592},
  {issue,154.624}],
 [{'PMm',<<3,1,75,2,79,73,147,255>>},
  {request_service,16.912},
  {request_response_and_request_system_code,
      0.9059999999999999},
  {authentication,21.744},
  {read,14.495999999999999},
  {write,91.80799999999999},
  {issue,154.624}]]
4> 
上がP905iで、下がSample5カード。5ブロックを対象にした場合の タイムアウト時間(msec)になっている。うーんこんなに差があるのか。 先程書いた5ブロック(65ms)はP905iの結果で、12ブロック(170ms)は Sample5の結果なので、そもそも比較する意味があんまりないけど、 P905iだと5ブロックですでに227msecとか言っている。この計算式合ってるのかな? (註: やっぱり間違っていたので差し替えている。本文もそれにあわせて 修正した。) 合っているかどうかは追々調べるとして、Sample5の方が早いというのは 確からしい。

_ ケータイは転送速度は早いけどチップの処理は遅いのかな。 昨日試していたケータイ(P901i)は初代のFeverチップだから もっと遅いのかもしれない。月曜に実験してみよう... 詰まるタイミングは一定していないと書いたけど、ほとんどが Read Blockで、たまにAuthentication2で止まるという感じだったので、 やはりカードの応答速度の問題、というよりはなんかNexusS側の待ちかたが 変なんじゃないかなあ? Authentication2は半分以上の確率で通るけど、 Read Blockはまだ一度も通っていない。当然Read Blockの方がRead w/o Encryption より時間がかかるだろうし、↑のPMmから算出した時間もそっちに合わせてるんだろう。

_ そしてRequest Responseの最大応答時間はP904iだと3.6msec、 Sample5だと0.9msecなので、えーと、そもそも求めたかった 「カード以外の処理の最小時間」は、15msecから引けばいいんだから... しかし、これはあまり意味のある数字ではなさそうだなあ。

_ 結局よくわからないということを長々と書いただけで終わってしまった。


_ ↑は、だとすれば、だとすれば、ばかりで話が進まないので、 やはりAndroid側のコードに潜るか、せめてAndroid側のデバッグメッセージが 出るような算段が必要だと思う。ので、明日はそこからスタートだ。


2011/08/21 (Sun)

_ 雨。ひきつづき涼しい。


= 起業のファイナンス

_ ベンチャーを起こすにあたって必要になるであろう知識をまとめた本だと思う。 すごく硬派で充実していた。 起業をする予定はいまのところないが、なにがあってもしないということもないので 勉強になった。

_ 乱暴にまとめると、資金調達するなら債務を負うのではなく株式でやりましょう、 そしてIPO前提ならVC(ベンチャーキャピタル)を活用しましょうということに なるのだと思う。 前職〜現職ではVCというのは排除すべき存在として扱われている。 自分たちとは異なる原理で動いて自分たちの思うところとは違うところに 連れてゆかれるという警戒心があるのだと思う。 でも、身内で固めてやりたいということと市場に公開することを目指したいというのは 相当矛盾するよな。 今いる会社はIPOを目指しているわけだけど、漠然と抱いていた違和感が この本を読んで少しすっきりした気がする。 今より桁違いの資金を市場から調達したとして、それによって何をして、 投資家にどういう利益をもたらすのかが全然見えない。



= 今日のlibnfc

_ TgInitAsTargetがApplication level errorを返していた件の続き。 えらい人がいるもんで、 FeliCa Push アプリ連携ハック記録に、TgInitAsTargetが成功したときのパラメータが載っていた。 真似してみたところ無事に待ち受けが開始され、Pollingに反応し、 コマンドを受けるところまで成功した。すごい。エミュレーション本体を 書いていないのでそこで止まってしまうが、ダンプを見るとFeliCaのコマンドが そのまま流れてきている。すごいね。

_ 自分の投げていたバイト列と、うまくいくときのバイト列の違いがよくわからない。 Togetterの議論を見ると、18バイトの内訳がPN533のドキュメントと違う雰囲気を 感じるんだけど、NexusSからポーリングさせると、PN533のドキュメント通りの IDmを返してくる。もうちょっと調べてみる。

_ ...まとまりがないが、ここをいじるとApplication level errorになるもの:

いじっても問題なかったもの: まだまだ試行錯誤が足りないし、それらが何を意味しているのか(特によい→だめになる理由)がピンと来ていない。 来ていないが、まあとりあえず動けばいいかなあという気にもなっている。 なにしろこの部分であたることができる資料がない。

_ いずれにしても、Targetで動くことができれば、カード側の動作をいろいろ 細工できるので、昨日書いたような応答速度の問題を追求したりすることも 少しやりやすくなるだろう。

_ それにしても、いじっても問題なかったもの、の、2番目は、 考えようによっては、というか、考えようによらなくてもおそろしい話だ。 Application level errorが出た理由は、許容されるIDmの値とか範囲とかが 決まっているという話なのかと思っていたのだが、そうでもないらしい...



= ヘラクレスの栄光3(実況マイリスト

_ 週末使って全部見てしまった。実況者の独特な声に最初は戸惑ったがすぐに慣れて すぐに中毒になった。

_ ヘラクレスの栄光3といえば谷山浩子さんが中古ゲーム屋を何件まわっても 手に入れるべきと激賞していて(浩子さんは綾辻行人氏から薦められたらしい)、 本気でSFC買おうかと思った記憶がある。が、Wiiで遊べるので早まらなくてよかった。 もちろん未プレイの人はネタバレになるので見ないほうがいいと思う。

_ RPGの実況とは思えない密度で飽きさせなかった。単調な レベル上げがほとんどなく(1回だけ実況の外でレベル上げをしただけで) 進んでいったので、この実況者の腕の確かさと、あと思ったほどバランスが 悪くなかったのかも?と思えるものがあった。 実況者は同年代なのかな? エメラルドドラゴンのヤマンとか、なかなか出てこない感じの名前がぽんぽん 出てきて楽しかった。

_ そして実況でも十分臨場感があった。伏線が丁寧かつ激しく 回収されてゆく様子は勿論、小さな違和感1つ1つに大きな意味が込められていることに 気付いて実況者・コメントが一緒になって興奮している様子はやはり実況動画の 大きな楽しさだと思う。あんまり無邪気に語ってよい楽しさではないのだけど... 個人的には、あんまり詳しくは書けないけど(ネタばれではないが未プレイの人は 読まないほうがいいかもしれない)、「一人で階段と通路をずっと歩かされる理由」が 分かった瞬間と、そしてなにより、 「中身のない会話ウインドウが数回出てくる理由」が分かった 瞬間の衝撃がとてつもなくて、それは実況動画でも同じ感想だった。 ゲームでこんな経験をするなんて考えたこともなかった。 音楽も演出もすばらしくて、これはやっぱり評判に違わぬ名作だなあという 思いを新たにした。


2011/08/22 (Mon)

_ 家を出たときはほとんど降ってなかったのに駅に着くまでにどしゃ降りになった。 そして今日も涼しい。


= 今日のNFC

_ カードエミュレーションのようなものは以前作ったものがあるので、 そこにTCP/IPで横流しするようなコードを書いている。 そちらの方はまだまだ試行錯誤が必要(とくにポーリングまわり)だが、 NexusSからどんなコマンドが飛んできているか、とか、応答速度をいじるといった 実験ができるようになったのが大きい。

_ ...なんか自分で投げた覚えのないコマンドが飛んでいる。 ひとつはサービスコード0009hに対するRead w/o Encryption(先頭1ブロック読み出し)、 それともうひとつはシステムコードFFFFhでのポーリングだ。 エミュレータもどきは複数のシステムコードを持たせているので、 せっかく事前のポーリングでシステムを固定しているのに、 勝手にFFFFhでポーリングしなおされると元も子もない。

_ そして敢えてコマンドの応答を遅らせると、 TagLostExceptionが出てしまい、その後にTargetから応答を返そうとしても 失敗してしまう。やはりタイムアウトが早いのではなかろうかと思う。 コマンド実行直前〜TagLostExceptionをキャッチしてログに出すまでの時間は 270msecといったところだ。

_ 今回、100%うまくいかないRead Blockは6ブロック。PMmを見てみたらP901iは そんなに遅いというわけでもないらしい。writeを除けばむしろP905iよりも早い。 6ブロックだとタイムアウトは145msとなっている。

_ ...ためしに1ブロックにしてみたけどやっぱり駄目だな。1ブロックのときの タイムアウトは48msecなので、さすがにこれよりも時間のかかる処理は 沢山あるだろう。となると、単純にコマンドがおかしくて無応答になってるだけか?


_ ...0009hはNFCID3タグのサービスコードか...。今までNFCIDとかNDEFとかは 見ぬふりをしていたが、そういうわけにもいかない気がしてきた。


2011/08/23 (Tue)

_ 涼しいのは今朝までのようだ。昨日はあまりの眠さに21時過ぎに寝てしまった。 週末のペダルが効いているのかもしれない。土日で5時間くらいペダル漕いでたからな


= 今日のNFC

_ 詰まったら別の角度から取り組んで...という連続で進めている。 今のところ打つ手がなくなった! という状態ではないので、いじっているうちに 解決するだろう。

_ それにしてもAndroid側のソースがないとどうにもならないところに 来ている気がするので、今更だけどソースを落としている。 build-numbers.htmlを見る限りでは、android-2.3.3_r1.1 というのを落とせばいいのかな。


_ Emulation側⇔NexusSでTag Lostと言われるのは応答速度に関係するようだ。 デバッグメッセージなどを抑制してあげるとかなり成績がよくなる。 確かに数十msec以内に応答を返すのが本来の姿なので、悠長に別のマシンにTCPで お伺いを立てていては時間がかかりすぎるだろう。 この点は通信をやめて1コのアプリとして動くようにしてあげれば 解決する問題と思われる。といってもTCPの先はC#で書いているので、 libnfcをC#で動くようにしなければいけない。(FeliCaのInitiator関係部分は すでに移植してあるけど...)

_ とりあえず快調に動いている間は変なPollingが飛んできたりということは ないようで、その点は安心。

_ なお、このあたりのAndroid側のソースは、

といったところが関わってくる。ただ、ちょっと眺めた程度では、 この超早いタイムアウトがどのように決められているのかが分からない。

_ 一方本物のカードの方だが... "Tag lost, restarting polling loop"と言いつつ搬送波が見えるデバイスを 使ってみてるとカードをキャッチしたままでポーリングには進んでいないよう に見える。仮に投げてるパケットがおかしかったとしても、その無応答で Tag lostと言われるのは困るな。通常のFeliCa対応のアプリケーションなら Request Responseとかを投げるチャンスがあるのに。

_ それにしても道具が少ない。今いじってるアプリ群は1〜2年前のプロジェクトの 成果物なんだけど、それが全盛の頃であればもっと解析のためのツールや 比較対象が充実していたので、原因追求がもっと楽だったのに。もちろん そのプロジェクトが全盛期のときは生命の危機に何度も直面していたので、 こんなことやっている余裕はなかったけど。


_ Authentication2が成功してからモードを確認しようと思い Request Responseを投げたら Tag lostと言われた。むむと思い Authentication2が成功してから何も送らないようにしたところ、 それでもTag lostになることを発見した。 そして3秒ほど待ってからRequest Responseを投げると0が返ってくる。

_ これはひょっとすると、Authentication2が成功するとModeが2になるので それによってdiscoveryが失敗してしまい、 結果としてTag lostと言っている、ということだろうか... discoveryというのがPollingのことを指しているのであればすべて辻褄が 合うことになる(Mode2だとポーリングに反応しなくなるので)。 もしこれが正しいとするととてもよくない結果だ。

_ ただ先程「とりあえず快調に動いている間は変なPollingが飛んできたりということは ないようで、その点は安心。」と書いたばかりじゃないか。


_ つづき。

_ まずEmulator側を自前で実装しなおした。といっても Request ResponseとPollingとRead w/o Encryptionをいい加減に実装しただけのもの。 後ろ2つは自発的には呼んでいないけど必要なので。そしてPollingが来たときだけ 画面にそれを表示するようにした。 Android側はひたすらRequest Serviceを投げつづけるようにした。

_ 結果は下記の通り:

で、おかしくなった瞬間のログ:
08-23 21:13:09.011: DEBUG/NFCSimpleLoop(9419): execute: request 0A 04 30 81 7A B7 0D 96 69 C5 
08-23 21:13:09.277: ERROR/NFCSimpleLoop(9419): Tag Lost.
08-23 21:13:09.281: ERROR/o*.r*.z*.a*.n*.NFCSimp*(9419): doTest: null
08-23 21:13:16.789: DEBUG/NativeNfcTag(8550): Tag lost, restarting polling loop
(IDmは適当なので実在はしないはず) 2行目のTag Lostは、TagLostExceptionを キャッチして出しているメッセージ、4行目がサービス側で出しているメッセージ。 これは実カードで散々やってきたときとは違う動きをしている。 実カードのときは先にサービス側で Tag lost,... というメッセージを出して、 その後にアプリ側でエラー(IOException)を検知するという流れ。↑のログで 4行目が出るまでに5秒ほどかかっているのは、このときに Emulation側を止めたからだと思う。止めるまでの間、 NexusSからはシステムコードFFFFhのポーリング要求が繰返し来ている。 それに、実カードの時はAuthが成功してからすかさずTag lost と言っているので、 やっぱり何か違うdiscoveryの方法があるんだろうなー。ソース見慣れてないせいか 何が起こっているのかまだ分かっていない。わかってないまま書くのは 有害かもしれない。あんまりこのページの内容をあてにしないでね(おせーよ)

_ まあ少なくともPollingを不用意に投げてそれで無応答だからTag lostと言っている わけではないらしい。もっともPollingに関してはR/W側で勝手に返しちゃっている 可能性もあるのかなあ。今のコードだと1発目はR/W側で返している。 なお、Emulatorを作り始めた当初、ATR_REQがそのまま飛んできたことが あったんだけど、いじっているうちに来なくなってしまった。 最終的にはATR_REQも素通りしてくれるのが望ましいんだけど、 どうやってやればいいのだろうか...


2011/08/24 (Wed)

_ 気温は上がったがエアコンなしでなんとか大丈夫なレベル。


= 今日のNFC

_ Authentication1が成功した後に寝てもTag lostが出ることを確認。 Mode1でもやはりだめということなので、いよいよPolling説が有力に。 Auth2がたまに失敗する理由もこれで説明がつく。

_ 該当のメッセージはPresenceCheckWatchdogというやつで出ているのは 確かなようなので、 以下のいずれかができないとどうしようもないかなあという気がしている:

最後のはコードをいじらなければどうしようもないだろう。ひとまず無修正で どこまで行けるかを検証したいので、 コードをいろいろ眺めたり外からいじったりしたんだけど有力な手が 見当たらない。手元に飛んできたTagを手がかりにいじったところで、 NfcServiceで動いているスレッドをどうにかできるとは思えない。。。

_ 行き詰まったので、実際にWatchdogで呼んでいる doPresenceCheckが何をやっているのかを追ってみた。 いろいろ進んで、結局は phHciNfc_Felica_Request_Modeに辿りつき、 ここで思いきりPollingをしているように見える。もしそうだとすれば、 もちろんMode0以外のときには成功するわけがないので、すべて辻褄が合うことになる。

_ ただ、漠然とソースを追っただけなので本当にそこが 走っているのかどうかが自信がない。 それに昨日の実験ではそういうコマンドが来ている様子はなかったんだけどなあ... いったんおかしくなるとPollingのパケットが飛んでくるのは 確認しているんだけど、Request Responseを投げ続けている間はPollingが Emulatorのところに飛んできてはいなかったはず。もうちょっとEmulation側を 見直してみようと思う。


_ つづき。

_ といいつつあまり進展がない。Emulator側で、事前にSetParametersで fAutomaticATR_RESを落とせばATR_REQが飛んでくるものと思っていたが 期待通りに行かず、fAutomaticRATSを落とせばMIFAREParamsに何もセットしなくても 動くかなと思ったがそれも期待通りではなかった。といった程度だ。


2011/08/25 (Thu)

_ 雨降ったり止んだり。

_ 書き忘れていたがくるみ(シロ)がトライアル決定したそうだ。 うちに来てから1ヶ月ほどで決まったことになる。 預かりさんのblogを見ると家にいた頃には想像できないほど活発になっていた。

_ つぼみがレオ(義妹夫婦宅のダックス)におもちゃとられそうになって 激怒していた。 意外。人間がおもちゃやご飯に手を伸ばしてもなんともないのに。



= 今日のNFC

_ 当初の予定ではNexusSが来てから一週間で仕上げるつもりだったのに、 気付けばもう10日経過してしまっている。もちろんそればかりやっていた わけではなく、休みもあったものの、 少し時間をかけすぎたので、ひと段落つけるために動き始めようと思う。 とりあえず、仮説レベルのものが多すぎるので、それが間違いないことを確認し、 出るところに出て、あとは自分のプライベートな時間でできる内容であれば そちらで継続してやることにして、そこで新しい展開が見つかればまた 相談するという流れかな。NFCが使えるタブレットも出るみたいだし。

_ 今回の取組みについて、

まだまだ打つ手がなくなったというわけではないので、今日もその辺の対応を 進める予定。とはいえ、やはり無修正ではだめという結論になるだけの 可能性が高い気がする。


_ つづき。libnfcをC#から使えるようにした。自分が使う関数だけ。 P/Invokeはいつまでたっても自在に使える気がしない。動くようにはできるけど、 なんか余計なことをしているのだろうかという疑惑がいつも浮かんでくる。

_ ハンドル的に扱うものは潔くIntPtrで済ませることにした。とはいえ中身を 見たいことも稀にあるので、Marshalはできるようにしておく。 どうせ自分しか使わないんだからこれでいいだろう。

_ そして実験。Polling(nfc_initiator_select_passive_target)や、 Request Response(nfc_initiator_transceive_bytes)などは期待通りやりとり できるようになったものの、nfc_target_initを呼ぶとエラーに。 バイディング失敗しているのかしら?と思い、 Linuxで試していたバージョンをビルドして実行してみたらこれも 動かない。TgInitAsTargetでACKの直後に落ちる。

DBG 1314259432.805326 pn53x.c:110
    TgInitAsTarget
 TX: 00  00  ff  27  d9  d4  8c  01  00  04  00  00  00  40  30  81  7a  b7  0d
 96  69  c5  01  10  ff  ff  ff  ff  ff  ff  fe  00  30  81  7a  b7  0d  96  69
 c5  00  00  00  00  ec  00
 RX: 00  00  ff  00  ff  00
ERROR pn53x_usb.c:111
    Unable to read from USB (libusb0-dll:err [_usb_reap_async] timeout error
)
 TX: 00  00  ff  00  ff  00
nfc_target_init: Input/output error
nfc_target_emulate_tag: Input/output error
ログ出力ルーチンは手を加えているので見た目がオリジナルとちょっと違う。 それはそれとして、timeout errorと怒られている。 Linuxで動かすと、ここで待ち状態に入って、R/Wにかざすと ポーリング後の一発目のコマンドが乗って返ってくるのだけど、 一瞬でtimeoutとなってしまっている。

_ 同様な問題が報告されているが、 それに従っても変化なし。libusbのバージョンも同じ(最新)だし、 そもそもtimeoutにそれなりの値を指定しても一瞬でtimeoutで返ってきてしまうので いよいよわけがわからない。

_ うーん今日もあまり進まなかった。思い描いた通りに進まないということは 要するに能力がないということだ。なさけない話ですね。 まあなるべく問題を分割してプライベートな時間でできる内容を増やして カバーするかな。お勉強会も近いのでねた設定もしなければ。幸い NFCまわりは仕事に直結しなくても興味深いねたが多いので、 課題が山積みなのはむしろ歓迎すべき事態なのかもしれない。


2011/08/26 (Fri)

_ 昨日の終わりぎわの腐れポジティブシンキングぶりには自分でも辟易した。

_ 昨日までのあらすじ: libnfcのTarget modeとC#で書いたアプリケーションを くっつけたいのでlibnfcのC# bindingを書いたんだけど、nfc_target_initの 後がうまくなかった。どうやらWindows版のlibnfc + libusb-win32 だと よくないことが起きているようだ。


= Mono

_ libnfc + libusb-win32 をどうにかするのも、それはそれで必要なことだと 思ったが、帰りの電車で逆にLinuxでC#のアプリケーションを動かせば いいんじゃないの、とも思った。WinForms使ってるのでそのあたりを どうにかすればいいかもしれない。

_ と思ったら今はWinForms普通に使えるのね。 試しに対象のアプリを持っていったところ、以下2点を除いてまったく問題なく 動作した。

前者は適当に修正。 後者はフレームワークのバージョンの関係があるのかもしれない。 起動時になぜか1.0/mscorlib.dllを求められたし...

_ DESを手で書くとそれだけで時間がかかってしまうので避けたい。 ちょっと試すだけなのでC#の実装がないもんかと探して みたんだが見つからなかった。System.Security.CryptoGraphyを使うことを 「実装」と表現しているページがあって余計な血圧上昇を招いたりしたので断念した。

_ しょうがないのでOpenSSL(libssl.so)を呼んで回避した。ひとまずlibnfc以外の 部分は期待通り動くようになったので、あらためて対応を続けることにする。 それにしてもMonoが知らないうちにとてもすごくなっていて驚いた。

_ 呼び出しをテストしたときのコード:

using System;
using System.Runtime.InteropServices;

namespace TestOpenSSL
{
	public class TestOpenSSL
	{
		[DllImport("libssl.so")]
		public static extern int DES_set_key(byte[] key, IntPtr schedule);
		
		[DllImport("libssl.so")]
		public static extern void DES_cbc_encrypt(byte[] input, byte[] output, int length, IntPtr schedule, byte[] iv, int enc);

		const int DES_ENCRYPT = 1;
		const int DES_DECRYPT = 0;

		const int SIZE_DES_key_schedule = 8 * 16;
		public static void Main(String[] args)
		{
			IntPtr schedule = Marshal.AllocHGlobal(SIZE_DES_key_schedule);
			try {
				byte[] result = new byte[16];
				DES_set_key(new byte[] { 0,0,0,0,0,0,0,0, }, schedule);
				DES_cbc_encrypt(new byte[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}, result, 16, schedule, new byte[] {0,0,0,0,0,0,0,0}, DES_ENCRYPT);
				for(int i = 0; i < result.Length; i++)
				{
					Console.Write(result[i].ToString("X2")+ " ");
				}
				Console.WriteLine();
			} finally {
			  Marshal.FreeHGlobal(schedule);
			}
		}
	}
}
DES_cbc_encryptの3番目の引数を、元がlongだったので勢いでそのままlongに してしまって10分ほど悩んだ。それ以外はとくに問題なかった。


= xrdp

_ Linux環境はsshでつなげてるだけなので↑のWinFormsベースアプリを動かすのに VNCでも入れようかなと思ったら表題のパッケージを見つけた。

_ RDPでつなげるらしいので、Windowsについてくるリモートデスクトップクライアントで そのままつなげることができた。 さすがにファイルのコピーはできないみたいだけど、とっても楽だし性能も悪くないし、 すばらしい。設定ファイルを見る限りだと 他のプロトコルにブリッジしているのかな?



= 今日のNFC

_ 昨日の続き! C# + libnfcをLinuxで動かすことができるようになったので実験を再開。 しかし不安定すぎて何が悪いのかかえって分からなくなっている。


2011/08/27 (Sat)

_ 今日は思ったほど天気が悪くないみたいなので、つぼみを水元公園に連れてゆく予定。 あとカイロ。


_ 前回は一匹も犬がいなかったランに今日はたくさんいた。 つぼみはやはり他の犬と積極的に遊ぼうとはせず、 しつこくつきまとってくる子に怒った後、妻か自分に抱っこを求めてくる。 こんなところもわんたにそっくりだ。わんたと違うのはベンチに自分から 登ってこられるというくらいか。他の犬がちょっかいを出さない場所にいる分には そんなに悪い気分でもないらしい。


= エヴァの映画

_ 劇場での初見は楽しんで見ていたし違和感もさほど大きくなかったものの、 冷静になって二度目を見てみると、これは悪のりしているだけではないかという 気がしてきた。

_ そして次回作の公開が来年秋になることをさらりと最後の1コマで告げられた。 今年の秋に公開という話題が半年くらい前に出てた記憶があり(出所は分からない)、 今年の秋ということは来年の春くらいかな、という大変物わかりのよいファンの 反応に感心していたら予想の上を行く展開だった。


2011/08/28 (Sun)


= お勉強会

_ 今回はJNIの勉強をした。まったく触ったことがなかったので、 サイトをいろいろまわりつつ簡単な呼び出しができるところまでをやってみた。

_ ちょうど金曜日にやったSSLのDESあたりが 適当かなと思い試してみた。 いじってすぐの感想としては、いちいちCでコード書かなきゃいけない、 バイト配列をいちいちアサインしなおしたりしなきゃいけない、などがあり こりゃ面倒だなと思った。DES_set_keyは指定された 配列に書き戻さなきゃいけないのでなおさら面倒だ。

_ そして、書き戻しているやつ(schedule)は、特にJava側で中身を見たいわけでもなく、 単にC側に与えたい値を保持したいだけなので、別にJavaの空間にバイト配列として 存在してほしいわけではない。C#のときはIntPtrでunmanagedのメモリを確保して それを実現している。それに近い動きをさせるように書くこともできるんだろうけど、 まだ試していない。

_ P/Invokeと比べると随分書かなきゃいけないことや守らなきゃいけないことが 多いなという印象だ。まあ中間のC/C++コードがあるということは、 逆に真ん中でなんでもできるということでもあるので、必ずしも悪いことばかりでは ないかもしれない。

_ なお、JNAというのもあって、これも試してみた。こっちはP/Invoke並に 簡単に使うことができた。バイト配列も勝手に書き変わって戻ってくるので楽ちん。 内部でlibffiを使っているらしい。非常に便利で気に入ったんだけど、 今のところAndroid版は鋭意対応中というように読めるので、 もちろんJavaをいじるからにはAndroidにも色気を出したいと思うことが 多くなるわけなので、現時点で気軽にAndroidで使えないというのは ちょっとハンデとしては大きいものがある。 なお、JNAのサイトを見ると、 githubに誘導されるので ここからダウンロードした。

_ 今日はいつもより1時間短いということもあって進展としてはこのくらいだ。 あとなんか身体が妙にだるくて節々が痛い。図書館に本を返しにゆかないと いけないということもあり、反省会は遠慮して帰宅した。

_ librettoでEclipseとFireFoxとEmacs(-nw)を同時に上げると辛いなあと 思ったらUnity2Dがメモリを喰い潰していた。リブートしたらそこそこ快適に。


_ なんか身体がだるくて痛いなと思ったら熱が出てた。さっさと寝よう。


2011/08/29 (Mon)

_ なんかだるいぞ...そして血圧の薬を忘れた。


= 今日のNFC

_ せっかくEmulatorがまともに動くようになったので、 NexusS以外のR/Wで試してみた。当たり前といえば当たり前だがほぼ問題なく動作した。 過去のコードの積み重ねのおかげで、既存の環境への対応は非常に迅速にできている。 よいことだ。これが実際に使われる機会が今後あるとは思えないが。


_ 今日はプログラムはほどほどにして書き物を多目にやった。


= リボンインターフェース

_ Office2010をいじることが多くなってきたのだが御他聞に漏れず リボンインターフェースに慣れない。メニュー形式では収納しきれないほど 多くの機能を空間効率のよい状態で収納するには必要なものだというのは 頭では理解できるのだが、やはり合わないものは合わない。

_ 配置が変わったから必要なものがどこにあるのか分からない、というのも もちろんあるものの、どちらかというとリボンの表示自体に慣れない。 左から右に並んでいるかと思えばいきなり上から下に並びだしたり、 区切ごとのタイトルがタブの一番下にコントラストもろくに変化しないラベルとして 配置されていたり、とにかく意味のある情報として受け取ることがとても困難で、 一目見ると「ごちゃごちゃしている」としか捕えられない。

_ 文字+ショートカットキーの羅列の、深い階層の方が よっぽど分かりづらいという人も多いのだろうけど、とにかく自分にとっては 縦かと思ったら横、とか、並んでいるものの大きさが合っていないといったことに 非常にストレスを覚える。「タグクラウド」とかも、 「大きい文字が目立つ」という以前に「ごちゃごちゃして見えない」が先に来ており、 何がいいのかさっぱり分からなかったので、個人差は大きいんだろう。

_ これは使ってゆくうちに慣れてゆくのかな。それはつまり必要な機能と位置の関係を 覚えた結果に過ぎないような気もする。 機能から、まず上部のタブのどれにあたるのかを考えて、そこから ごちゃごちゃしている(と自分には見える)ものの中から必要なものを探すというのは とってもストレスだ。そして欲しい機能が実は名前を変えていたり、 廃止されていたりということがあると、さらに怨嗟の気持が強くなってしまう。 たとえば、つい先程も「見出しマップ」をかれこれ10分くらい探したけど 見つからなかった。「ナビゲーションウインドウ」というものにかわったらしい。 Spotlightみたいに機能名を入力して検索といったことができれば もう少し馴染むのも早くなりそうな気がするんだけど...

_ なお、Office2010ではMDIぽいけどウインドウを外に出したりできるようになったので、 デュアルディスプレイの身としては非常にありがたい。↑のナビゲーションウインドウや、 使っている書式のリストなどを外に出して画面を広く使うことができる。あと、 書式(色とか)は確定しなくてもマウスを上に載っけるだけでその反映結果を あらかじめ見て確認することができるといったことも便利になったと思った部分だ。 あとは図形をダブルクリックすると書式に関連するタブが自動的に開かれたり といったもの。これは賛否ありそうだけど個人的にはありがたい動きだ。


= 躍進日本オラクル

_ オラクルに対する自分の印象はまったくよくない。 仕事でオラクル社と良好な付き合いをしたことはないし、オラクル製品に 助けられた記憶もない。個人でも関わりをもつことはなかったし、 それどころか、様々なソフトウェアやプロジェクト、会社などの運命を 自分の好ましいとは思えない方向に変えて行く様子は、 自分が好感を持っていたり、大事に思っていたり、利用したりしている存在を 汚ならしく喰いちらかして行くようで嫌悪感ばかりが残る。 JavaやSolaris関係のドキュメントへのリンクがどんどん死んでゆく状況を見ると 特にその思いを強くする。それらを獲得して自分にとってうれしい状況が 形作られているという気もしないし。

_ 持っている(あるいは獲得した)製品はすごいのかもしれないけど、 それで結局何がしたいのかがさっぱり見えてこない。むしろコンピューティングに 愛着の欠片もなくただの商材として扱っている商社に過ぎないのではないか?

_ といったあたりが自分にとってのオラクルの印象だ。この本を読んでその 印象が大きく変わったのかというとそうでもなく、まあ商社は言いすぎとしても、 やはり彼等が見ている世界は自分とはまるで違いすぎるし、エンジニア像として 描くものともかけ離れすぎているなあというのが正直な感想だ。 自分が勤めているような半端な会社では、彼等のソリューションに乗っかる なんてことは資金的な話としても、存在理由的な話としてもやはり考えづらいし。 (なお、商社に偏見ありすぎなのは仕様となっている)

_ 本書には13冊の参考文献が挙げられている。でも、うち10冊は自著。 自分の本からいろいろつまんで一冊の本を作りました、ということなのかしら? とあまりいい印象を抱かなかった。インタビューで構成されている本だと こんなもんなのかなあ。

_ 見ている世界が違うという意味ではこの著者と自分に対してもあてはまり、

日本オラクルの社員にも、オラクル製品が大好き、会社も大好きという人が
けっこういる。ハードウェアでは、以前から熱狂的なMAC(Macintosh)ファン
などがいたが、コンピュータのソフトウェアでは、あまり例がない。オラクル
製品の奥深さが技術者を惹きつけるものと思われる。
といったくだりは、なんというか、あまりに交わらない視線に言葉を失った。 オラクル製品好きな人には自分は会った記憶がない。 せいぜい、オラクル製品を嫌々ながらも使っていて、悔しいけどすごいと 誉めている人なら見たことはあるけど。 それに、仮にオラクル製品大好き人間が大勢いたとして、 「あまり例がない」というのも、自分の感覚や経験とまったく矛盾する。 どちらが本当でどちら嘘かというようなものでもなく、おそらく (どちらかまたは双方の妄想でない限りは)どちらも事実なんだろう。 ただ、あまりにも交わらない視線だと思った。

_ 逆説的に無理矢理まとめるならば、この視線の平行線具合が、 オラクルを理解する鍵なのかな、と思う。つまり自分の見ているものや 価値観からは説明がつかないことがむしろ当然と思うべきだと。そういう視点を 持つことができたのは収穫だが、 だからといって冒頭に書いた喰いちらかし云々の印象が揺らぐわけではないので、 見直したり好きになったりというような心境の変化はなかった。それはこの 本の責任でもなんでもないけど。 Oracleを作ったのも、「これからはRDBMSが来ると思ったから」というだけに 見える。誇張かもしれないが、なんとも投機的な動機だ。 自分が使いたかったから、とか、技術に惚れて、とかではないところにも やはり距離を感じるなあと思った。


= ポモドーロテクニック入門

_ 読みかたが悪いのか身が入らなかった。「テクニック」だけを挙げれば ボリュームはあきらかに不足しているので、実際にはそのテクニックの 背景にある理屈や工夫を読みとることの方が大事なんだろうな、 と予想はしたんだけど、身を入れて読むことができなかった。なので感想としては 非常にみっともないけど、読んだというだけで終わってしまった状態だ。


2011/08/30 (Tue)

_ 眠いですね。がんばりましょう。


= 今日のJava

_ build pathにslf4jとかを指定したいのだけど、Add External Jarで選ぶと 絶対パスになってしまう。.classpathを無理矢理いじって相対にすると、 見かけ上はうまく行っているように見えるんだけど、 「Could not locate '../classes/slf4j-android-1.6.1-RC1.jar'. This will not be added to the package.」という警告が出ており、実際にその状態で 実行するとslf4jが見つからなくてClassDefNotFoundErrorになってしまう。

_ 今のところ、PreferencesでClasspath Variablesを追加→Build Pathの LibrariesでAdd Variableを選択、先程作ったVarialbeを選択してExtendを押す→ 指定したフォルダにあるjarを選択、という流れが唯一うまく行っているように 見えるパターンだ。これでいいのかはよくわからない。なお Androidじゃない通常のアプリケーションの場合は .classpathを無理矢理相対指定にするだけで問題なく動いているように見える。

_ layout/〜.xmlをいじった後、Package Explorerからjavaファイルを選択して 開こうとすると、意図せずにDnD扱いになってしまいそのソースが別のところに 飛んでいってしまう。クリックするだけで移動されてしまうので非常に ストレスだ。よく見てみると、xmlをいじっているときは上のツールバーが 2段なのに対し、javaファイルをクリックすると1段に減っており、 そのときにDnDだと判断してしまうらしい。

_ 仕方ないのでjavaファイルをクリックした状態でも2段になるようにレイアウトを いじった。



= 今日のAndroid

_ 一応の成果が出ましたーということはあるものの、他の人に見せるときに Hello World, なんとかActivity! だけしか表示されておらず、あとは LogCatで見てね、というのも差障りがあるというか、 せっかく入手に骨折ってくれたのに心苦しいので画面をいじることにした。

_ 予想されていたことではあるが、 onNewIntentの中で全部書いていたので処理が終わるまで画面が更新されない。 頑張って分離しよう。


2011/08/31 (Wed)

_ DPZの記事見て 甘酒が飲みたくなったけど売ってなかったのでマッコリを買って飲んだ。 冷たくておいしいので飲みすぎて今日はしんどい。


_ 身体は大人!頭脳は子供!これは青酸カリ!!


= 山形の馬肉ラーメン食べ歩き

_ 「かめや」は一度行ったことがある。今泉駅を出てまっすぐ突き当たりまで行き、 左に曲がって少し行くと左手にあるお店。米沢にいた頃はあちこち歩いたり 自転車で行ったりしていたので、今泉(米沢から北に10kmくらい?)にも よく行っていた。

_ 馬肉ラーメンというものがあることをこの記事で知ったので、普通にラーメンを 食べて実に普通だと思っていた。


= 今日のNFC

_ NfcService通さないでNfcF作ればいいんじゃないの、と思って いじってみたが思うようにいかなかった。以前は都合のよいクラスや メソッドがあったようなのだが(GIBRALTAR Software Factoryで紹介されているものとか)、 今はこのあたりがごっそりなくなっている。

_ NfcService通しても通さなくても、NfcService経由でしか取れないと思われる 情報がどっちにしても必要で、NfcServiceについては厳重に切離されており アクセスできる気配がない。出口が見えないのでいくらでも時間が使えてしまうし、 その結果やっぱりだめだった! とか、また中身が変わった! とかになる可能性が 強いのかなあと思う。

_ 要するに進展がない。リフレクションとかクラスローダーとか、 ServiceManagerとかのことを少し理解できるようになった程度か。

_ それはともかく、結局聞いたほうが早いんだろうなと思った。 関連モジュール(packages/apps/Nfc、external/libnfc-nxp/src、frameworks/base/core/java/android/nfc)のコミットログを見ると、 4人でほぼ90%以上のコミットがされているようなので、 (トップはNick Perryというひとで、 NFC Technical Lead らしい)、このひとたちが 出入りしているコミュニティに投げるほかなさそうだ。そんなのがあるのか 知らないが。なお、Google、NXP、Trusted Logicの3社でいじってるらしい。




Zinnia (zinnia@risky-safety.org)
Back