2013年10月3日木曜日

docomoのiPhoneで何が違うの?

Hufpostの釣り記事に釣られてみる。
iPhone 5s/5cでパケ詰まり多いのは「ドコモ」ブランド総合研究所調べ
 僕はGalaxy SIIIαから機種変したのだけれど、通信品質に関して、何の変化も感じていない。逆にdocomo WiFiに関しては、GalaxyよりWiFi拾って認証・接続切り替えするまでが速くて快適ですらある。地下鉄でWiFiとLTEの切り替えは見事だ。別にGalaxyで不満だったわけではないけれども。

名鉄本線を通勤に使っているのだが、熱田区は電波が入らないとか名古屋を出るといきなり遅くなるとか、降りる駅の周辺はひどいパケ詰まりとかいうのは完全に同じ。iPhoneが特別だとかいう新橋方面からの指摘は営業トークではないのかとさえ思う。データ通信量でいえば、Androidのほうが定常的に多いという経験的観測から推測するならば、iPhoneは基地局から見ればいつもだらだら通信しないでスパイク的に出るということにはなるのかもしれないが。

ということで、iPhone 5sの通信速度をごたごた言っている人は贅沢なんじゃないかと思う。一部、ほんとに電波拾えないところとか、都心でデータ通信が本当にほしいとき(緊急に地図を確認する必要があるときとか)にパケ詰まりとかいうのは改善してもらわないと困るけれど、アメリカみたいにダウンタウンにいても通話さえときどき怪しいというのは日本のなかではほとんどないわけで、いわばないものねだりのように思う。

日本で通信環境がいいなと思うのは、VoIPアプリがちゃんと使い物になること。050をアメリカにいるときのバックアップ番号で連絡していたのだけれど、屋外でもホテルのWiFiでも99%以上の割合で使い物にならず、かろうじてSkypeだけホテルのWiFiで使えたという経験があった。ドコモの携帯が水没して電池が死に起動できず、現地の携帯のプリペイドが国際電話に対応していないときに日本のドコモやクレジットカード会社に連絡できたのはSkypeだけだった。日本からかかる電話も050は受けられないしドコモの回線は死んでいるので、先方からは連絡がつかないという状況になっていた(Skype番号の取得は今後必要かもしれない)。

日本はいろいろと過剰品質で高価な品物やサービスに囲まれて生きていかなければならず、海外からの旅行者に「日本の物価は高い」と言われるわけだけれど、データ通信に関してだけは、十分価格に見合ったサービスだと思う。例外は香港の爆安超高速HSPA+(いわゆる4GでLTEじゃないやつ)で、これは反則な気がするけれど、あちらは有線は普通にアジアの都市なみなのでそのへんで許してもいい感じ。

2013年9月21日土曜日

iPhoneケースと保護シートはApple Storeで買え

昨日のぼやきがもやもやしたまま、大須で予備のLightningケーブルを調達。良心的な店では、「iOS 7でだめになったけど充電だけならOK」など、過去のhackにApple側が対応をしていることをちゃんと述べている一方、イケショップなんかは「充電OK」「ビデオやオーディオ非対応」など不明瞭な表示、一方で某中古ショップは表示なしで、店員に確認すると「OSのバージョンアップとともにだんだん対策とられます」という、さらに曖昧な対応だったりして、結局良心的な表示のお店でMade for iPhoneとかついてる国産品を買いました。あんまり安くないんだけど。あとで某中古ショップで980円の中華ケーブルに、「このMade for iPhoneは本当か」と尋ねたら「本当です」とのお答えがあったので、そのうちためしてみることにする。

しかし、どの店もiPhone 5s/5cは持て余しているようで、auは早くも2万円引きとか表示を出していて在庫処分モードに入りつつあるよう。ついでなので展示品(動作するもの)の5cのプラスチックケースを確認してみたけれど、なんとイオシスの中華モックと同じ品質だった。キーノートで流され、いまもAppleのサイトのトップからリンクが貼られている5cのビデオでは、丁寧な仕上げをアピールしているけれど、僕にはこれはなんていうのかなぁ、「精一杯がんばりました」という言い訳モードだったように改めて思われた。好みの問題ではあろうけれども、僕にはアウト。NokiaはGood。全然アプローチが違うけれど。

ただ、iPhoneの主な購買層は学生というのが世界的な傾向のようなので、若い人向けにポップなほうに振ってみましたということなのだろう。あとでうちの学生に印象をきいてみたい。

で、もうなんだかすごい負け気分で歩いているうちに、なんとなくApple Storeでも覗いてみるかという気持ちになり、1駅北へ歩いた。Apple Storeの1階はものすごい熱気でiPhone 5s/5cの契約をやっている。店外まで行列らしきものも若干出ているような感じで。どうもここだけは異世界らしい。

息苦しいほどの熱気を避けながら階段を上って2階へ行くと、ここは契約が済んだ人が当然サプライ品を買い求めるためにあふれているわけですね。1階より少し人が少ないけど、ここは名古屋なのに銀座店かと思うほどの混雑。アジア人だけど完璧なアメリカ英語で会話しながら商品選んでる若者たちもいたりして。

で、ケースを見ると、incaseがいいのを出してるじゃないですか。ジョニーのデザインしたApple製品にいちばんフィットするカバーやケースを出しているのがincaseだと思っていて、MacBookの保護袋を昔買っていたりしたのだけれど、いろいろあるプラスチックケースのなかで、これはうまいなと惹きつけられたのはやはりincase製品だった。

プラスチックなんだけれども、きちんとした剛性感があり、角など特に危険な部分は肉厚を若干つけて衝撃吸収の隙間を作るなど、丁寧な仕事をしている。真っ黒なケースもあったのだけれど、よく考えるとAppleロゴを隠さなくてもいいのではと思って横を見ると、横だけゴムが塗布してあり、バックは透明なままというのもあった。緑とかオレンジとかもあって、白系が入手できた人にはそれもよさそうではある。価格も特別高くない。そして、「うーん、すでに5千円もドコモショップに払っているがどうしよう」と思っているところに、別のお客さんの対応で、「もし実際に使ってみてお気に召さないようでしたら、1週間以内なら返品できます」という声がきこえてきた。しかも、それが液晶保護シートについての言葉。

おお、まるでアメリカではないか。使い捨て商品でも使用後に「気に入らなかったから」と返品するのがアメリカ人。それができるならチャレンジしてもよいと、その気になった。液晶保護シートも、それまで、板はもう使えないのでケースのおまけのシートを貼ってあったのだが、指紋と脂でベトベトだったので、「返品してもいいなら買ってみるか」と、まぁうまく誘導されているわけだがそれに乗ってしまった。店員おすすめは、店内でいちばん多く展開されている恵比寿の限定品みたいなのじゃなくて、belkinのもの。belkinもAppleサプライ品ではメジャーなメーカー。すべてアンチグレアなのだけれども、belkinの「TrueClear」というのは、裏の説明文を読むと、表面のデコボコを均一になるような加工がしてあって、乱反射がない(から、文字がにじまない)のが売りらしい。

で、試してみました。満足しました。表から見たら真っ黒だけど、裏はクリアなので、カメラ部分の色の切り返しは商品そのまま。Appleのガイドラインでケースのカメラ部分の穴は周囲を黒くするように、という指示は守ってあるけれども気にならない。

incaseのケースは上下が角を除いてあいていて、要するにドックにそのまま乗せられるタイプということになるかと思う。これとは別に500円増しになるけれど、lighteningとイヤホン端子以外はすべてカバーして、スイッチ類もプラスチックの部品がはまっているという、完全防備なものがあり、少し迷った。スピーカーの穴も本体と全く同じ寸法で開いていて、よくできている。

あと、Apple純正のケースだけれど、すみません、本皮でしたね。見てみると、非常に品のよい仕上がりで、黒もよい感じなのだけれど、やはり過剰装備な感はあった。皮だと汗で変色するわけで、品よく味を出す使い方は僕にはできそうにないと思ったので。

iPhone 4のときは、香港で郵送費込30円というのを使っていて、郵送費のもとがとれているのか心配になったものの、結構しっかりしていてよかったのだが、あれはiPhone 4という、それなりに存在感のある商品だから負けなかったのであって、iPhone 5sは安物のケースでは本当にチープになってしまうような気がする。カジュアルに使っていくならもちろんそれでいいわけだけれど、今回のincaseのケースによって、iPhone 5sのチープ感はかなり払拭されたように見えるので、返品するつもりで一度Apple Storeで買ってみてからほかのケースを探すのでもよいのではないかと思った次第。

2013年9月20日金曜日

iPhoneってこんなにビンボくさかったっけ?

(2013年9月23日:保護シート関係の勘違いがあったので修正しました)

iPhone 5sのファーストインプレッションである。

いままでさんざん噂記事を読み、翌朝公開されたキーノートを見ているので、とりたてて意外に思うことはなかった。

ひとつ気になっていたのは、画面が小さくなること。本当に僕の老眼で4inchのディスプレイの文字が読めるのか? という問題。

結論からいうと、そこはさすがにRetina Displayと長年培ったAppleのフォントレンダリング技術。デフォルトの文字サイズでも、全く問題はなかった。読める。小さいけど。表示面積の狭さで構えるところはあるけれど、内容に没入すれば、Galaxyの中華フォントにイライラしながら読むよりも、よほど美麗な文字とレイアウトで、さらさらと読める。このストレスのなさはさすがだと思った。さらに、設定で対応しているアプリやサイトでは文字の大きさのデフォルトを調整できる。いちばん大きいところのひとつ下ぐらいがよさそうだったので、そのようにしておいた。とはいえ、非対応アプリやサイトで読みづらいということは全くない。Galaxyのほうがよほど醜悪である。

それから、iPhone 5と同じだったかどうか確認していないが、軽いこと。本体が小さく、それ以上に軽量なことで、ポケットに入れられる。Galaxyはポケットでは存在感があって、長時間入れておくにはためらわれるが、iPhone 5sはポケットにあったことを忘れてしまう。ふと気づいてさっと取り出せる感じは久しぶり(iPhone 4をほんのわずかの間使ったとき以来)。

だが、モノとしての魅力はここまで。金型を使わずNCによる切削加工は金型データの流出による粗悪コピー中華Androidマシンを避けるのと金型不要でコストを大幅に削減できることから採用されていると考えるのだが、ソニーがいみじくも言うように、両面ガラスへのこだわりは重要だと思う。Appleがこれを捨てたのは、軽いという点での貢献と、ガラス割れの損害が半減することにあるのかもしれないけれども、存在感が、どうにもビンボくさい。工場での量産品、だからこそ安いわけだがそれにしてもフラッグシップ機の存在感とはほど遠い。

そこを工作精度の緻密さで勝負しているわけだけれど、それは金属加工を知っている人に「ふーん」という感想を与えるだけで、一般の人にはなにも響いていないように思う。iPhone 5が売れなかったのは、4Sとの差が実質(LTE対応の地域が限られたことを含め)あまりなかったことも大きいかもしれないが、消費者感覚として、「軽い」以外の魅力と「長い」という形以外の印象がなかったことが大きいのではないか。

実のところ、iPhone 5sは、iOS 7との組み合わせでようやく実力が発揮されていると感じている。iOS 7は、iPhoneユーザにとっては4Sでもサクサクなのだそうで、とりたてて買い換えるほどのアピールにはなっていないようだが、iPad 3では明確にもっさりとしており、おそらくiPad 4以上でなければ使い続けることに疑問を持つことになると思う。というか、iPad 3 + iOS 7の「もっさり感」は、iPad 2が出たときのiPad 1に対する印象と同じぐらい悪い。

一方で、iPhone 5sでのiOS 7は当然64bitコアに最適化されたOSであることやCPU及びGPUの性能向上で明らかなアドバンテージがあるのは当然のことながら、えーとなんだっけ、「Touch ID」だっけか、指紋認証との統合や、おそらくM7サブプロセッサによるものと思われる、モーションに対する精度良い反応、そして、まるでWindows 8からパクったような、画面外からのスワイプという新しい要素が自然にUXに組み込まれていることだ。いったん覚えたらもう以前の使い方には戻りたくないと感じさせられる作り込みがそこにはある。つまり、ハードウェアとしてはチープとまでは言わないものの魅力に欠けるがソフトウェアとの組み合わせでなんとか優位性を保っているように思われる。

UXという点では、ネットではGalaxy Noteに対する評価が高いようだが、僕は基本的にTouch Wizが大嫌いだしAndroidそのものが与えるUXには一貫性が低いと感じているので(特にTouch Wizはソフトウェアボタンの左右がバニラ・アンドロイドと逆で、メニューがそこに割り当てられていることに、Nexusシリーズとの間で大混乱をしていたので許せない)積極的に興味を持つには至っていない。ワコムのSペンが新しいUXを与えていて秀逸だ、ということは読んで想像の範囲で理解できなくはないので、そこまでを否定するつもりはない。

一方で、iOSはiOS 3(までしか知らないのだが)から決定的な変更はなく、脱獄Tweakで実現されてきた「こうであったほうが操作性がいい」を着実にパクる(もしくは実際に開発者を雇って組み込む)ことで順調によいUXを与え続けることに成功していると感じていて、久々にiPhoneに戻ってきて懐かしさを感じるほどだった(iOS 4とiOS 7という違いがあるのに)。不満を挙げるなら、いいかげんSpringBoaradの不自由さはなんとかしてもらわないと、アイコンが何ページにもわたってずらずらと醜悪に並ぶのは勘弁してほしい、という程度だ。たしか、アイコンに関しては1段フォルダが追加された以外の変化はしていないのではなかっただろうか。多段フォルダがいいかというと疑問だけれども、Windows Phoneのパネルに大きさのバリエーションをつける部分、Androidのアイコンをグリッド上の自由な場所に置けること(これは脱獄Tweakの基本だ)、脱獄Tweakに多い、Notification Centerへのウィジェット追加(コントロールセンターとして一部取り入れられたがユーザーカスタマイズできないのは不便)など、学ぶべき改良点は多いはずだ。ジョブズとジョニーのSimple思想に反するのかどうかわからないが、「誰かうまいことジョニーを説得して新しいデザイン言語をアドプトするまでたたかえ」と言っておくことにする。

ついでなので、ドコモショップで買い物をする人も多いと思うので、アクセサリーについてもぼやきを述べておく。

まずフィルム。iPhoneを修理不能になるまで使い続ける人は別として、買い替えを考える人なら必ず中古に出すはずで、その際、ガラス表面のコートの状態で買取価格がかなり違うので、保護フィルムは絶対に必要なのだが、どうして日本で売っているフィルムはどれもだめなんだろう。

いや、iPhone 4のときには香港から郵送したりしてもらって何十円とかだったので、「やっぱ国産は違う」と思っていたものの、「堅けりゃよいってもんじゃないだろう」というのが僕の意見。特にiOS 7では書体が細いことから透明度が重要になるので、スモークの選択はありえない。しかし、薄かろうが厚かろうが、自己修復機能があろうが、いずれにせよ、縁にほこりがたまったり、悪くすると引っ掛けてはがれたりするのは、たいへんよろしくない。はがれたら、たいていホコリが入るし場合によっては折れ曲がってそれっきりということもある。業者は買い替え需要があって助かるかもしれないが、買い換えるつもりで何百円も出して買っている人は少数だろう。

アメリカで、たまたまRadioShackが扱っていたGalaxy SIII用保護フィルムを$17ぐらいで購入したのだが、これはよかった。柔らかいのだ。イメージとしては、図書館などで図書の表紙にべったり貼り付けるビニールシート、もしくはビニール傘のビニール部分をイメージしてもらいたい。これが、弱い粘着力でも画面にぴったりと貼り付くのだ。そして、指紋は全くつかない。当然、ほこりがたまることもない。やんわりと衝撃も吸収して、指触りはサラサラではないが、べったりというのでもなく、人肌というか、あたたかみがあってよい。スタイラスに向くかと言われれば疑問だが、ファブレットサイズ以上でもない限り、指以外で操作することは少ないと思うので、せめてスマホサイズではこの材質を積極的に採用してもらいたい。

その点、本日購入した「Glass」という、2500円を超える価格の商品はその真逆に屹立する偉大な山岳だ。店員によるとなにやら硬さを表すH3というのが普通の商品のところ、これはH9であることが売りとのこと。なんだかよくわからないが普通と違うということで、価格的には無理を感じながら買ってみたが、これはフィルムではなく板だった。厚さ0.5mmのアクリルパネル(素材は違うかもしれないが、硬さを表現するためにアクリルを例にした)強化ガラス板を載せると思っていただいてよいのだ。不思議な話だが、もとの強化ガラスの上に強化ガラスの板を貼るということ。ただし、スマホと同様の表面コートをしているようで、ガラスであるからシートのような指ざわりの変化も特に感じられない。これはよいことかもしれない。

おそらく、iPhone 4Sや5でガラスを盛大に何度も割った人の要望を叶えるためのものだろう。これだけの厚さの板で防護すれば、角から落とすとかでもない限り、衝撃のかなりの部分は受け止めてくれるだろう。また、ひびが入ったとしても指にあたって痛いとかそういうこともないだろう。

だが、この厚さのため、ホームボタンが異様に陥没した状態になる。当然メーカーも承知しているようで、「高級感のあるアルミ製ボタンカバー」がついているのだが、たしかにAppleのガイドラインに沿って、導電性のあるカバーでなければTouch IDが反応しないから金属を使うのはいいのだが、僕は真っ黒にしたいのであって、そこだけ輝くのもどうかと思うのだ。(追記:また、指紋センサーの上を覆ってしまうので、指紋読み取りができなくなるような気がするのだがどうなんだろう。)したがって、なんだか奥まったホームボタンで指紋認証をしたりして、慣れるよう努力してみた。

ところが、これだけの厚さがあっても気泡はできる。それもわりと盛大に細かいやつが。RadioShackのやわらか素材でも盛大に気泡は入るのだが、これはなぜか液晶を点灯すると全く気にならないのでそのままにしていた。一方で、この板の下の気泡は、板の存在感がありまくりなので足の裏の米粒というのか、ただそこにあるというだけで猛烈に気になる。ので、何度も貼替えをトライしていたら、板が反ってしまった! 板なので、反ったらガラスに密着しない。気泡どころではない騒ぎで、下から貼っていったので上のカメラ部分あたりは完全に浮いている状態になってしまった。これでは使えない。(追記:ガラスが繰り返しの曲げでほんとに反ってしまうのかよくわからないのだが、事実そうなったので、お求めになる方はご注意を。念のため、アイロンをかけてみるつもりではあるけれども。)

というわけで、「ガラスを割った心の傷が癒えない人」以外には、この商品はおすすめできない。「なんとなく高級そう」とか生ぬるい気持ちで購入して幸せになれるかどうかは、その人次第ではあろうけれども僕には疑問だ。

次、ケース。本体がビンボくさいので、せめてケースはパリっとしてやろうかとアルミの「うすうす」ケースにしてみたが、ちっともリッチにならなかった。金属であるから当然衝撃にも弱いはずで、そうしたらすぐ裏のアルミケースにへこみなどが及ぶことは容易に想像できるため、割りきってプラスチックケースにすべきと思った。

iPhone 5cはアキバのイオシスで、販売前に中国から流れてきたモックを手にしてみた程度だが、あれは論外で、例えばNokia Lumixシリーズのプラスチック筐体はとてもよい。軽くて強度があり、弾性も適度にあるため、少々雑に扱っても壊れない安心感があり、また傷にもならない。iPhoneのようにうやうやしくネジを外して分解するような世界ではなく、またGalaxyのように安物のパネルをパカっと外すような、やるたびに気分が萎えるようなこともなく、Lumixのプラスチックケースは気軽にパカっとあけて電池やSDカードにアクセスできる感じなのに特にチープな印象もなく、「このデザインはありだな」と思わせるバランスに仕上がっている。

iPhone 5sに戻ると、そういういわけで、プラスチック素材で柔らかく包むことが、こうなんというか、フラジャイルな感じのiPhone 5sには必要ではないかと思う。Apple純正が合成皮革素材に内部は起毛素材というのは、まったく理にかなっていると思う。皮のイメージでゴージャス感を出し、耐衝撃性とふんわり包む安心感を装着する人に与えるという計算がなされていると想像できる。お金に余裕があって、皮に抵抗がない人は積極的に選んでいいのではないか。個人的にはiPad 1でむやみに重たい全面保護装備の純正ケースでこりごりしたので、Apple純正品は過剰装備と思っているから考えていないけれども。

あと、Appleのガイドラインでカメラ周辺には十分な空き空間を作るとともに反射を抑えるため黒色にすることが指示されているが、今回購入したアルミうすうすケースは、カメラ周辺の開口部がしっかりとってあり、そのせいでせっかく真っ黒にしたかったのに本体がカメラ部分の黒から中央の「グレイ」に切り替えられている部分も窓から除いてしまうという間抜けな結果をもたらしてくれた。ここにも苦言を呈しておきたい。

Appleが要請する空きの大きさが、色の切替部分をも含むものだとしたら、ケースデザイナはそれが浮いてしまわないよう配慮しなければならない。シルバーやゴールドはあまり大きな色の違いはなさそうだが、真っ黒にしたい人向けのケースは難しそうだというのが今回の印象。できることなら、本体の色と装着状態が確認できるようなディスプレイを店舗には期待したいとともに、裸の本体に見本のケースをはめてみてから買うぐらいの余裕をもってケース選びをしてもいいのではないかと思った。

iPhone 5sまつりに参加してきた

この夏のアメリカ長期出張で、アメリカのサービスの悪さはITで補われていること、そこに特にiPhoneの存在が大きいことを強く印象づけられた。

Androidでは、たいていだめ。Google Mapsはとても便利なんだけれど、iPhoneのAppleマップもとても改善されていて、十分使い物になる。

車社会のアメリカでは、西海岸の大都市を除いて公共交通機関の案内はひどく悪い。そもそも飛行機でさえ、UA(ユナイテッド)はチェックインした客が搭乗しようがしまいが、なんのコールもしない。それ以前に、搭乗開始のアナウンスさえマイクを使わないから、ITなしでは搭乗カウンター前に1時間前から陣取って、いつ整列の指示をするのか見張っていなければならなかった。UAのアプリを入れていれば自動で通知があるから、その辺歩いたり食べたりしていても大丈夫なんだが。さらに、プライオリティパスさえあれば列に並ばなくていいから、スマホの呼び出しでぶらりと行けば乗れる。僕はとにかく格安チケットで最低ランクのエコノミーばかりだったから、何便も寝過ごしたとかスマホの画面見て下向いている間に飛行機が飛んでしまったとか、余分な出費と無駄な時間をずいぶんと過ごした。

飛行機もそうだけれど、鉄道路線の案内も決してよいものではない。そもそもどこに駅があるか、観光都市ならインフォメーションで地図をもらえばいいけれど、そうでなければ地図サービスのお世話になるしかない。バスはもっとひどくて、西海岸は比較的表示が多いのだが、ピッツバーグはバス停は単に「BUS STOP」のカードがついた杭が立っているだけ。それがどの路線でどこ向きで何時にどこへ行くのかなどは全く書かれていない。逆向きの場合、バス停さえなく、降りるときに停車場所をきいておかないと、次のブロックだったりして途方に暮れることもあった。

で、だいたいお決まりは「Webサイトを見よ」。URLだけ書いてあったりする。かといって、バス停を探そうとすると、最初に「正確な住所を入力せよ」と投げ出されて、部分一致検索とかさえなかったりするので、大きなPDFの路線図を小さな画面で拡大して、いまいるらしい場所に近そうなバス停の名前を探したりするのだけれど、「なんとかストリート」がむちゃくちゃ長かったりするので、その「なんとかアベニューの交差点」といわれてもアベニューが見つからなかったりするのであてにならない。

その点、Google MapsもAppleマップも丁寧にバス停の位置を現在地からナビしてくれるし、何時発車の何番バスにどこまで乗ってどこで乗り換えればいいかまで表示してくれるから、画期的なわけです。というか、交通会社がなんだかそのせいでシステムの改良をさぼってるんじゃないかと思う。

それから、食事や買い物に絶対に必要なのがYelp。店の公式サイトはなくてもYelpには掲載されていたりするし、Yelpの☆4つ以上でない店は基本的に信用できない。また、ちょっとしたレストランならTables.comで混雑状況を確認して、即座に予約を入れなければ数時間待ちとかその日は入れないとか平気である。

YelpはたしかiOSしかなかったはず。Web版もあるけどiOSアプリのほうがずっと見やすい。僕はWalmartで買ったT-MobileロックのかかったNokia Lumia 521を$125で買ったものしか現地の携帯は持っていなかったので、Google Mapsでかなり助けられたけど、Yelpの恩恵は、ひとえに同行してくれた方のおかげだった。

というわけで、貧乏人がiPhoneを持つチャンスは、当面のところ、今朝の行列での機種変するしかなかった次第。ただ、日本のキャリアはまだSIMロック解除ができないし本体持ち込みでSIMだけ契約することもできないので、日本のキャリア縛りを買って、海外ではローミングで使うか、現地キャリアのMobile Hotspot(日本で言う、3Gルータ?LTEになってなんて言うんだろうか?)にWi-Fiで接続して使うかのどちらかか両方。

キャリアアンロックやSIM Free版に期待をしている人も多いようだけれど、少なくともドコモはLTEを自社販売のiPhoneでしか使わせない方針だし、他社もiPhoneは特別扱いだからプリペイドSIMが使えるのか、また結局それらは3Gまでなので、LTEには接続できない。そして困ったことに、LTEでは接続できても3Gはさっぱり、という地域がどうも身の回りで増えている状況があるので、観念してドコモの機種変を選びました。

というわけで、「まつりに参加」と書いたのですが、さすがにApple Storeの長大な行列に加わってメディアの取材を見て面白がるほど若くはないので、今回は名古屋市内の金山駅前ドコモショップに並ぶことにした。ひとつは、キャリアの契約にApple Storeの店員が慣れているかどうかの心配のほうが、ドコモの社員がiPhoneの取り扱いに慣れているかの心配を大きく上回ったからという事情もある。

昨夜7時の閉店時刻にたまたま金山駅を通過する用事があったので、ドコモショップのほうを眺めたところ、たったひとり、大学院生風の人がいただけだった。実はこのときはまだ決心は固まっていなくて、しかし各店在庫が10数台との噂から、この時間でこの人数なら大丈夫ではないかとの勇気を得て、職場から防寒用の毛布一枚を持ちだして野宿することにした。

ドコモショップは駅に面しているものの、裏通り側なので道が狭く、車の量も、スピードもたいしたことがないから結構静か。念のため、手持ちのガジェットはすべて満充電にしてKindleで読みかけの洋書も用意して終電での到着に臨んだけれど、その時点ではまだ2人目がいただけだった。結局3番が確定し、それとともに入荷量の掲示があり、安堵することとなった。

iPhone 5sは、シルバーとゴールドは入荷ゼロ。スペースグレイのみ。16GBが12台で32GBが13台で64GBが10台とか、そんな感じだった。5cはイエローは0だけれど、あとは20数台ずつ入っているようだった。

色に関しては、もともとグレイを黒いケースに入れて、iPhone 4みたいな真っ黒にするつもりだったので問題なし。安心して、よそはどうかなとTwitterのTLを眺めたり、あまりたいした情報が流れないので飽きてKindleで読書したりしていたのだけれど、隣が横になって眠りはじめたら、つられて眠くなって、毛布をかぶり、カバンをマクラにして眠り込んでしまった。さすがに深夜早朝は冷え込んだようだが、魔法の毛布のおかげで汗ばむほど、歩道のタイルも心地よく、枕の加減もよくて熟睡できた。

朝5時半ごろ目覚めると、警備の人たちがロープの張替えをしたりしながら他の行列の状況を互いに電話で交換しあったりしていて、やはりApple Storeは200人とか、別のどこかは0人とか、そんな声がきこえてきた。6時前を待って駅前のトイレを使って駅前のコンビニ(すぐそばのファミマはなんとなく気恥ずかしくて避けた)で朝食を買って食べた。この時点でまだ8名ぐらいだったような気がする。また眠りこけて目が覚めると、8時45分とかそのぐらいで、ドコモショップの店員から整理券と注意書きの束を配られた。3日前に、この店で見積もりや説明を受けているので、特に新しい内容はなかった。この時点で、20名ぐらいだったのではないか。

午前9時ちょうどに店が開き、従業員の整列の前を通って(いま思えばApple Storeのようにハイタッチなどしてあげればよかったとは思うが、寝ぼけていたので、日本人らしく「おはようございます」とか言いながら頭を下げて通過した)、カウンターに案内された。

こちらは事前に契約内容も決め手あり、手続きの順番も把握していたので、担当の応援の若手スタッフを暖かな目で見守るような感じで粛々と手続き。貧乏なので一括払いはできず24回払いなので、与信調査にちょっと時間がかかった以外は、いわゆる回線開通の儀式などはこちらのほうがよほどわかっているので、自前のドコモ回線のMobile Hotspotを使い、ドコモのキャリアプロファイルをダウンロード、インストール(署名がなかったんだがどういうことか)もこちらで行い、それからOS起動後の諸手順もこちらで教えてあげたりしたので、なんだか1番や2番の人より早く終わってしまった。といっても、10時半ぐらいにはなったんだけれど。

というところで、長くなったのでこのエントリーはここまで。次のエントリーで盛大にぼやくことにする。

iOS 7でのプライバシー設定(改善、か?)

iOSが行動ターゲティング広告会社にデータを売っている話が、iOS 6の頃にあった。

iOS 7でそれがどうなったのか気になっていたけれど、設定を見つけることがきょうまでできていなかった。ようやく気になるいくつかを見つけたのでこちらでご報告申し上げる次第。

まず、行動ターゲティング広告のIDについては、設定アプリの「プライバシー」の、いちばん下にずばり「広告」というのがあった。内容をみるに、これが以前問題になったものと共通する項目のようだ。明瞭な名前になったのは非常によろしい。

そして、デフォルト設定だが、「追跡型広告を制限」が「オン」になっている状態。以前のことがあるのでどちらの意味か迷ったが、いったんオフにして再びオンに戻すことに気づいた次第。したがって、「デフォルトで行動ターゲティング広告のIDは出さない」。デフォルトのままでよいということになる。これもよろしい。

というわけで、他社への販売業はやめたようだが、iOSには、iAdというアプリ組み込みの広告表示機能がある。iAdのライブラリを使ったアプリが出す広告を 妨げるにはそれこそ脱獄でもして機能を無効にするTweakでもあてるしかないのだが、広告の精度を向上させるには位置情報(GPSのデータ)を使うというのが流行らしく、Twitterアプリは位置情報を要求するときに、「広告の精度を高めます」と告白してくれる。Facebookは黙っているが、まぁ、位置情報をとったらそれを何かに使おうとはしているだろう。広告も含めて。

iAdももちろん、位置情報を利用する。これは例によって深いところに隠れていて、「プライバシー」→「位置情報サービス」→「システムサービス」のなかにある。上から4番目の「位置情報に基づくiAd」がそれだ。「かまわないでくれ」と思う人はこれを「オフ」に設定変更すべきだろう。

ほかにAppleがiOSで仕掛けたものといえば、Wi-FiアクセスポイントのIPアドレスとGPS位置情報との連動で、Androidでもそうだが「位置情報を正確にするためにWi-Fiをオンにします」というのは、屋内でGPSの衛星が使えないときにマップで自分の位置をより妥当な位置に表示するために集めているデータの組み合わせだ。未知の場所、特に海外で勝手がわからないときなどにマップアプリは必須なので、これを嫌うかどうかは趣味の問題になってしまったような気がするところ。こうした「安価な」手段を許さない人が以前からたくさんいれば別のイノベーションが起きただろうが(屋内位置情報に関する研究が、もっと以前から促進されていただろう)、もはや手遅れなのかなと僕は思っている。

この、「システムサービス」内にある「Wi-Fiネットワーキング」と「携帯電話通信網検索」というのは、要するにそういうもの。一見、「使えるWi-Fiスポットを教えてくれるのかな」とか「携帯の電波が届く場所を教えてくれるのかな」とか、サービスを受けるほうで想像してしまいがちだが、実は自分が情報提供者になるという意味なのでお間違えなきよう。マップアプリにエンドユーザーが課金されないのは、エンドユーザーが位置情報という貴重な資金源を無償提供しているからという視点は忘れないほうがいい。「無料サービスの資金源は、あなた自身だ」というネットサービスの格言がある。

それから、以前裁判所だったか司法省だったかからAppleが大目玉を食ったGPSデータ垂れ流しの件だが、それに関係するのは「診断/使用情報」だろう。トップに戻って「情報」のなかに入ると、下のほうにあり、iOS 7のデフォルトでは「送信しない」となっている。

送信しないのだから気にする必要もないのかもしれないが、ここにはデフォルトでGPSなど位置情報が入っている。これを停止したければ、再び「プライバシー」→「位置情報サービス」→「システムサービス」で、「診断/使用状況」をオフにすべきかと思う。

ひとまず気がついたのは、こんなところ。

2013年9月17日火曜日

Beagle Bone Black届いた

本日到着。いまのところ、これといった予定はないのですが。
Beagle Bone Black

2013年9月16日月曜日

ユニバーサル基板の配線には「ポリウレタン銅線」を使え

この夏は(というかお盆前からずっと)ユニバーサル基板に手ハンダで配線ということをずっとしているのですけど、いやほんと、疲れますね。

何が面倒かというともちろん部品間の配線でありまして、従来の(論理ICやオペアンプ単品を扱うような時代)常識では、部品の足を曲げたり、ニッパで切った足を集めておいてつなぐとか、長さが足りない時はスズメッキ線で引き回すなんてことをしますよね。

スズメッキ線は銅線にスズをメッキしているだけなので、当然交差すると接触のおそれがありますから、できるだけ接触しないように気遣うとか、場合によっては基板の表裏を縫って配線をまたぐなんてことをするわけですが、やればやるほど疲れるじゃないですか。

かといって、リード線は被覆をむくのが面倒(いくら工具を使うとしても)だし、裏で引っ張れば配線山盛りになるし表に出せば美しくない仕上がりで、美観を考えつつ引き回すとかまぁ、ありえな〜い!と叫びたいです。そもそも配線が何本も重なったら、デバッグの際にどれがどこに行っているのかわかったもんでもないわけですし。(色を変える人とかいますか)

もちろん、マイコン初期世代ではワイヤーラッピングなどというある種の工芸もあったわけですが、いずれにせよソケットに多数のワイヤが巻きつきそれがあちこち交差するわけで、やっぱりワイヤ山盛り状態でなおかつその美意識が厳しく問われる世界だったような気がするわけです。

さて、それで何年か前に「TTLでマイコンを自作する」話をTwitter経由で知り合った方から、「ポリウレタン銅線がいいですよ」と言われていたのを、先日ふと立ち寄った秋葉原で思い出したわけです。なんでも、銅線にポリウレタンがコートされているだけなので、ハンダゴテで簡単に溶けて、絶縁されているので重なってもOKという。その方は、ICソケットのピンに引っ掛けるぐらいの細い線でくるくると引き回すような職人芸をお持ちとおっしゃっていたような。

ちょうどいま、Raspberry Piの拡張I/O基板を作っておりまして、スズメッキ線の限界を感じていたところなので、秋月→千石→ヒロセというコースをたどるなかで、最後にヒロセの地下にあるのを見つけた次第。店頭の方いわく、「ネットでヒロセにあるというのをきいて買いに来られる方多いですよ」とのこと。あ、そうなんですか。

ただ、その前に、「ポリウレタン線」と言ったら、「ああ、ニクロム線ですね」と軽く返さえて「え?」と。ニクロム線というと、小学校の理科なんかでモータ巻くのに使った記憶しかなくて、濃紺色の塗膜が鈍く光る銅線というイメージと、店頭にある明るい銅線のギャップに戸惑うわけです。紙やすりで塗料をはがして配線する感じ。面倒だと歯でしごいたりなかして、塗料飲み込んでるけど大丈夫かな―なんて思ったりした少年時代を思い出します。

それはさておき、いや、なんでも、いまどきニクロムを塗布するような線材は作ってないんだそうで、ポリエステル、ポリスチレン、ポリウレタンなどが主流になったから、その経緯でそれらを総称して「ニクロム線」と業界では言うらしい。へー。

というわけで買いました。0.4mm, 0.5mm, 0.6mmの3種類。いくらロジック回路とはいえ、あまり細い線は自分で取り回せるか不安だったので、どのへんが使いやすいか確認する意味でこの3種。というのも、極細のポリウレタン線のリールをお尻につけたペンを買って難儀した思い出(しかも1000円以上してすごく損した気分)がありまして。

ポリウレタン銅線
ひとことでいうなら、この0.5mmぐらいがある意味万能的な感じ。0.4mmは同じところを何本も線を通さなければいけないときに使うぐらいかな、というところ。でもってまぁ、使ってみたイメージはこんなところ。
追加の配線に使ってみた
スズメッキ線での涙ぐましい配線の末、回路図エディタの両面基板でも通せなかった線(基板を起こすならピン間に2本ぐらい通せばたぶんなんとかなるんでしょうが、手ハンダですからね)にこれを起用いたしました。これ、どこにつながっているかというと、Raspberry PiのGPIOから2個のモータドライバのロジック部分に入る線と、モータドライバから実際にモータをつなぐ端子台へつながる線のところ、それからトランジスタアレイ通したデジタル出力端子への配線です(と書いて、GPIOから直接つながっていることに気づきました…修正せねば)。ここはもう、両面駆使してなんとかモータドライバ周辺だけはなんとかなったものの、GPIOコネクタからの線が通る場所がなくて諦めていたところ。基板は秋月の両面スルーホールB基板です。なので、GPIOのコネクタのハンダは部品面に出ますから、その隣からえいやと貫通させて表で折り曲げてハンダする感じ。

使用感ですが、0.5mmはスズメッキ線ほどハンダの乗りはよくないものの、被覆が熔ければなんとかなる感じ。鉛フリーはんだをつかっているせいもあって作業性に問題があるのかもしれず、一応調温できるハンダゴテで450度設定です。なので、スズメッキ線全廃するには少し慣れが必要な印象でした。特に、短い配線は熔けたハンダに流されたりして、あららと戸惑ったりしました。

というわけで手ハンダする皆様には、ヒロセから通販で買うのをおすすめする次第ですが、名古屋の方なら、第二アメ横ビルのパーツコーナー入ってすぐ左のタケヤ電子でも扱われていましたのでどうぞ。なにより、スズメッキ線より安いのがよいです。貧乏なので10m巻きを買うわけですが、スズメッキ線だと300円ぐらい(ヒロセだと327円とか)のところ、それより100円ぐらい安かったりします。もちろん、リールで買うのもありかと。手のひらサイズで500g(グラム売り)が太さによりますが2000〜3000円ぐらい。

でももはや、Fusion PCB(香港)がある現在、ユニバーサル基板でがんばる必然性はほとんどないですよね。今後は回路図エディタでERCチェック通った基板を発注して作るつもりです。あと手ハンダも厳しいので、皆さんがやられているような、カッティングマシンでステンシル作って表面実装部品を鉄板焼きリフローするメソッドに移行していきたい感じです。

2013年7月31日水曜日

Raspberry PiでVNC(ローカルのコンソールを使用しない場合)の設定

技術評論社から出たJapan Raspberry Pi Users Groupの本にほとんど基本的なことは掲載されているので、Raspberry Piを使いはじめるにあたってはこの本を参照すればたいていのことは解決すると思うのですが、若干補足めいた話。

授業でRaspberry Piを使わせるときに問題になるのはディスプレイとキーボード・マウスということは以前書いたと思うのですが、結論はVNCということになるので、VNCサーバに何を選ぶのか、試してみた結果を書いておきます。

ちょっと検索すると、TightVNCを入れるという話がすぐに見つかります。おそらく、Raspbian wheezyデフォルトはこれということなのでしょう。TightVNCは、vncserverコマンドでコンソールを使用しないXvncサーバを立ち上げるので、HDMI等のディスプレイを接続しないPiでもログインせずに遠隔クライアントから接続できるので、なにかと都合がよさそうです。

クライアントはMac OS X版のバイナリはないようだったので、Java版を使いました。

PiはWi-Fi接続(PCIブランドのGW-USWExtremeは発熱もなく、非常に好調に通信できています)ですが、十分な速度で描画されました。普通に使ってストレスのないレベルです。

問題は、LXDE右下の赤い電源ボタン風アイコンですが、ここをクリックしても「ログアウト」しか出ないため、シャットダウンがマウス操作ではできないこと。これはまた検討することにして、別のVNCサーバを試すことにしました。

x11vncは、コンソールで起動しているXサーバのミラーリングをするVNCサーバです。ミラーリングなので、コンソール画面と完全に一致した操作ができ、つまり電源ボタンでシャットダウンができるということです。

同じTightVNCのJavaクライアントで接続しますが、描画が非常に遅く、とても同じWi-Fiの下にいるとは思えないほどのストレスがありました。ひとつには、XとXvncの2つのサーバが上がっているためのメモリ不足、もしくは(あるいはそれに重ねて)ミラーリングのためのメモリ消費もしくはCPUパワー不足があるのかもしれません。

ひとまず、x11vncは候補から外してTightVNCに戻ることにしました。

/etc/init.d/vncserverとして、起動・終了スクリプトを作成します。lightdmとntpを参考にしたので冗長かもしれないのですが、とりあえずこんな風にしてあります。

#! /bin/sh
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:  0 1 6
# Short-Description: TightVNC server
# Description: Debian init script for the TightVNC server
### END INIT INFO
set -e
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/vncserver
PIDFILE=/home/pi/.vnc/vncserver:0.pid
test -x $DAEMON || exit 0
if [ -r /etc/default/locale ]; then
  . /etc/default/locale
  export LANG LANGUAGE
fi
. /lib/lsb/init-functions
case "$1" in
  start)
           log_daemon_msg: "Starting TightVNC Server: "vncserver"
           /usr/bin/sudo -u pi /usr/bin/vncserver :0 -rfbauth /home/pi/.vnc/passwd
           log_end_msg $?
  ;;
  stop)
          log_daemon_msg "Stopping VNC Server" "vncserver"
          set +e
                  /usr/bin/sudo -u pi /usr/bin/vncserver -kill :0
          set -e
          log_end_msg $?
  ;;
  status)
          status_of_proc -p "$PIDFILE" "$DAEMON" vncserver && exit 0 || exit $?
  ;;
  restart)
          $0 stop
          sleep 1
          $0 start
  ;;
  *)
          echo "Usage: /etc/init.d/vncserver {start|stop|restart|status}"
          exit 1
  ;;
esac
exit 0
このとき、先にコンソールからpiでログインしておき、vncpasswdを実行して、パスワードファイルを生成しておきます。このスクリプトで起動するvncserverが、パスワードファイルを参照するからです。

また、スクリプトを見ていただくとわかるとおり、piユーザとしてvncserverをディスプレイ番号0で起動しています。したがって、VNCクライアントからは、5900番ポートで接続し、設定したパスワードを入れればpiユーザのデスクトップ画面が現れる、という次第です。

これを、/etc/rc?.d ディレクトリ以下にリンクを張ってもらいます。
$ sudo update-rc.d vncserver start 5 2 3 4 5 . stop 1 0 1 6 .
これで、run levelが2, 3, 4, 5のときはvncserverを起動し、0, 1, 6のときには落とすようになります。つまり、通常のマルチユーザではvncserverが起動し、シャットダウンやシングルユーザモード等では落とすということになります。

2013年5月27日月曜日

Parallax製品が秋月に本格登場

(追記:2013年5月29日)
この記事で紹介した「Activity Board」とともに、Propeller GCC + SimpleIDEが公式発表されました。いままでPropellerは独自のオブジェクト指向言語SPINでプログラミング剃る必要がありましたが、GCCの移植によりC及びC++に対応しました。また、SimpleIDEはQtベースのマルチプラットフォームな開発環境です。SPIN, C, C++いずれの言語を含むプロジェクトを管理することができます。いままでのPropeller ToolkitやMac版のbstはもう要りません。僕はベータ版公開の頃からSimpleIDEで開発しています。SimpleIDEは一部MITライセンスが含まれますが、基本的にQtと同じオープンソースライセンスで提供されます。Propeller GCCは当然GPLです。

参考:

ついでに、Activity Boardにおすすめのステレオスピーカーも同時発売です。iPhoneとかにもいい感じです。


わたくし先月の商談で両社の通訳ボランティアをつとめたのでちとあれですが、有用な情報だと思うので速報的にお知らせします。

Parallaxは米国カリフォルニアにある従業員70名ほどの小さな会社ですが、社長のお兄さんにあたるChip Gracy氏の独創的なアイディアによるマイコンと、マイコンを利用したプロトタイプや実験・学習用に向いた、気の利いた各種デバイス基板を製造販売でアメリカではとても有名な会社です。

いまのイチオシは本当にユニークな立ち位置にある32bit 8コアプロセッサのPropeller (ver.1)なのですが、事情がありまして(汗)日本語資料が少ないことから(昔、トラ技で一度紹介されたのみ)日本ではあまり認知されてこなかったと思います。唯一、ChipがParallaxを立ち上げるきっかけになった製品「Basic Stamp」が10年以上前から秋月で販売されていたのをご記憶の方があるかという程度かと思います。

「Basic Stamp」はPICを載せた40pin DIP形状の基板で、秋月ファンの方には「PIC Basic」と誤解されることが多いのですが、全然違います。僕自身が使ってきた感触では、Basic Stampのほうがずっと気が効いていて、多様なセンサやアクチュエータを容易に取り扱うことができ、かといって特殊な命令を使うのではない、スマートなバイトコンパイラに仕上がってきたように記憶しています。学習用として大学で用いられてきたのはもちろん、一部の産業用制御機器に組み込まれる形での出荷がかなりあったときいています。アメリカでは日本の「ラジオの製作」誌に似た立ち位置の雑誌「Nuts & Volts」で連載がずっと続いていたこともあって、ホビーで使う人も多かったように思います。

で、秋月が現在扱っているParallax製品はこちらです。

Propellerは現在最も安価なProto BoardとPropStampのみとなっていますが、超音波距離センサの「Ping」の価格を見てください。Arduinoのサイトでも超音波距離センサといえばPingというぐらいメジャーな製品ですが、日本ではこれまで5000円とか出さないと小売で買うことはできませんでしたが、2500円で出ています。これは快挙。

また、3軸ジャイロも4000〜5000円という価格のものでもやすいかな、という感じでしたが、3000円で出ています。これでジャイロをWiiリモコンプラスから取り出していた人にも、手軽にジャイロモジュールとして購入しやすくなったのではないでしょうか。

Propeller搭載基板は、これから続々と面白いものが出てきます。少なくとも、現行製品で少々値は張りますが、Activity Boardは新しい設計だけあって、超高速なADCやXBee端子、マイクロSDスロット、DACなどたいていのプロジェクトの実験に使えそうなものが搭載されています。ご興味のある方は、秋月にお問い合わせもしくはリクエストなどしていただけるとよいのではないでしょうか。これまで個人輸入でしか手に入らなかったあれこれが秋月価格で出てくることが大いに期待されます。

2013年5月1日水曜日

[Review] Dell S2340T 10点マルチタッチディスプレイ pros and cons

デルのWindows 8対応23インチ10点マルチタッチディスプレイS2340Tが職場に届いた。

九十九電機のほかはあまり扱いがないのだそうで、ツクモ特価5万若干超えという、定価からすると破格の値段を出してくれたので、やや厳しい財政だけれど、公費で発注してみた。

箱は内容からすると、かなり大きい。AppleのThunderbolt Displayと同じぐらいでかい。でも、23インチディスプレイなので、なかみはよくある大きさだ。

ツクモにはほかに、LG製やあともう一社、どこだか忘れたけれど国産品があったけれど、タッチ操作を重視して、キーボードなどを置かない使い方、例えば斜めにして画面を机に接するように置くとか、いまのところまだデルのみだそうだけれど、完全に水平にして、テーブルトップとして使えるというところが特色で、「いま選ぶならデル一点買い」とのこと。

また、USB 3.0接続のみで外部ディスプレイとして動き、USB 3.0が4つつながるハブにもなり、Gigabit Etherも出せるし、オーディオ出力と、マイクとWebカメラが内蔵という豪華仕様でもあるので、定価の59,800円でも結構お得感はあるかと思う。

ちなみに額縁はいまどきの液晶ディスプレイとしては、かなり広い。3cmはある。けれども、Windows 8のタッチ操作である、画面の縁からのスワイプができるよう、前面は一枚のガラスでできている。Webカメラ内蔵のため額縁が広いという意味では、AppleのThunderbolt Displayと同じだ。デルのほうがやや角張っていて、当然だけれど27インチと23インチの大きさの差はある。

解像度は1920x1080。23インチなら妥当な解像度だと思う。また、液晶はかなりくっきりしていて、Thunderbolt Displayの2560x1440と比べても、画面が小さいだけで解像感が劣るということはない。

ここまではいいことばかり書いたけれども、ここからはかなり苦言を呈することになる。デルのフォーラムもかなり荒れ模様だったのだが、実際に使おうとすると、いろいろと悩むことになるのは間違いなく、罵詈雑言が集まるのはやむを得ないと思う。

まず、入力端子について。

さきに、USB 3.0で外部ディスプレイとなると書いたが、デルの商品紹介サイトをみても明らかなように、ノートブック型PCの外部ディスプレイとしての利用が前提として設計されているように思う。AppleのThunderbolt DisplayがMacBook Airの外部ディスプレイを想定して、充電用のMagSafe電源ケーブルを具えているのに近いといえる(デルのほうには充電ケーブルはついてないけれども)。つまり、ノートブックPCでタッチディスプレイ以前の機種でも、USB 3.0さえあれば(つまりIvy Bridge以後であれば)Windows 8のタッチインタフェースが存分に使えますよ、というのが売りなんだろうと思う。

大事なことなのでもう一度書くけれど、「USB 3.0での接続」に限られます。USB 2.0のマシンを接続しても、外部ディスプレイにはならない。その場合は、他に用意されている端子に接続する必要があり、USBケーブル一本で、カメラもオーディオも画面出力もタッチ入力も全部OKというわけにはいかない。

で、他の映像入力端子としては、DisplayportとHDMIがある。Apple製品に慣れている人や、WindowsでもUltrabookを使う人が勘違いしないようにもう一度書くけれど、「Displayport」とHDMIだ。Apple製品やUltrabookが具えているのは、「mini Displayport」なので間違えてはいけない。僕はminiでないDisplayportのケーブルを初めて見たのだけれど(添付品)、HDMIとよく似た大きさで、若干厚みがあり、HDMIは台形だけれど、Displayportは片側だけが斜めになっているという違いがある。

したがって、フルサイズのDisplayportを備えたデスクトップマシンならば、添付のケーブルだけで済むけれど、そうでない、例えばDVI出力かHDMIか、という場合はDisplayport-DVI変換アダプタを使うか、HDMI接続するほかない。変換アダプタはデル直販で1,000円ちょっとだけれど、一般に店頭で出ているのは3,000円弱が相場のようだ。

というわけで、きょうはHDMI接続で試すことにした。MacBook 2009年モデルにWindows 8が入っているので、mini Displayport-HDMI変換アダプタ経由でこのディスプレイに接続したことになる。そして、タッチ入力のためにUSBでの接続も必要だ。

Windows 7以後なら、どうやら黙っていても標準デバイスドライバが設定されるようだ。しかし、念のため添付CDからドライバをインストールしたほうがよいかもしれない。ちなみに、添付CDのドライバは、「ディスプレイを接続した状態でなければインストールできない」仕様。模倣品に流用されないようにしているのかどうかわからないけれど、とにかくそういうことなので、先にドライバをインストールしておく、という一般的な手順ではないので気をつけなければならない。

あと、「Dell Display Manager」をインストールするように添付CDのセットアップ画面にはあるが、MacBook 2009モデルではインストールしても動かなかった。学生の比較的新しいWindows PCでは動いて、ディスプレイの輝度等やオーディオ出力の音量など、この製品がもつ機能について、画面横のボタン操作をしなくても、PC上から設定ができるもののようだ。

もうひとつ、「Display Link」というものがインストールできるようになっているのだが、これはまだ何者かわかっていない。学生のノートブックPCでインストールしてみたのだが、特にこれといった変化は見られなかった。

最後に非常に重要な注意点なのだけれど、「HDMI-VGAアダプタは使えない」。いやもしかしたら、ものによっては使えるのかもしれないのだけれど、Raspberry Pi公式のアダプタでは、ディスプレイの電源が入らなかった。なので、アナログ出力しかないPCでは使えない。おそらく、ケーブルからの給電がなければディスプレイが起動しないようになっているのだと思う。

(5月8日追記)--------
Apple周辺のサードパーティ製ケーブルで、mini DisplayPort - DisplayPortケーブルというのがあって、これを使うと、いままで悩ましかった表示の問題が解決できた。HDMIが空いたので、Raspberry PiとかApple TVとかに使えるような気がする。このケーブルは店頭価格2,980もして、Thunderbolt対応を確認しました、とのことだったが、このぐらいよいケーブルでないとまずいようだ。少なくとも、いかにも安物のDVI-DisplayPort変換アダプタは全くだめだった。また、電源もしっかりしていないといけないようで、研究室はタコ足で使うしかない状況なのだが、できるだけUPSに近いテーブルタップに接続しないと、いままで表示できていたマシンの入力でも動かないということがあった。

また、DisplayLinkについては、デルのサポートに教えてもらったのだが、USBオーディオなどが関係するようだ。
--------

ともあれ、これだけの悩ましいあれこれさえクリアできれば、これはとても楽しいデバイスだ。静電方式のタッチパネルでこれだけの画面サイズになるとセンサになるワイヤーの数もかなりの本数になると思うのだが、全く何の違和感もなくスムーズなタッチ操作ができた。バーチャルキーボードもタブレットより大きく、普通のフルサイズのキーボードのように表示されるので、物理的なキーボードは必ずしも必要ないと感じられた。ただ、日本語入力は、「Google日本語入力は対応していない」ので、MS-IMEを使うことになる。Google IMEのままでは、Input Methodの切り替えにAlt-`という、英語キーボードでおなじみの操作をタッチ画面上でやる必要があり、それで切り替えができても、Windows 8でのGoogle IMEでよくあるトラブルのように、「日本語IM上での半角英数字入力モード」になってしまい、日本語変換に入ることができない。デスクトップであれば、タスクバーの「A」のところを何度かクリックして「あ」に変更するということができるが、バーチャルキーボードではそれができないのでお手上げだ。ここはGoogle Japanの方にがんばっていただいて、バーチャルキーボード対応も進めていただきたいと思う。MS-IMEでは日本語ロケールの場合最初から日本語のバーチャルキーボードなので、普通にタブレットで操作するようにIMの変更や文字種の切り替えができる。面白いのは、記号と数字入力に切り替えると、記号入力バーチャルキーボードの右に数字キー(いわゆる「テンキー」)が現れることで、これはなかなか便利な仕様だと思った。

最後に、水平にして使う場合だが、仕事用途には、打合せのホワイトボードとして使うことだろう。このディスプレイを囲んでそれぞれ思い思いに画面に書き込んでいくことができる。でも、せっかくであればもっと機能的なアプリケーションがあればと思う。One Noteは手書きも含め、いろいろとクリップを貼り付けられるからひとつの候補にはなるだろうけれど、オブジェクトを相手の方向に回転して相手の目の前に移動するなどが簡単にできると面白かろう。

だが、テーブルトップ状態でのキラーアプリケーションは、やはりゲームに尽きる。正直、これは危険過ぎる誘惑だ。研究室がゲーセンになること間違いなしである。

いったんコントロールパネルから画面を縦に設定すれば、ピンボールゲームの臨場感は筆舌に尽くしがたい状態になる。残念なのは、センサーが対応していないので、物理的なTiltができないことぐらいだ。おそらくSurface Proなどでは加速度センサーなど搭載しているだろうから、ゲームさえ対応していれば、ちょっとしたhackで大画面でのTiltができるようになるかもしれない。

また、ボーリングゲームも縦画面がよい。

おなじみマインスイーパーやソリテアもMicrosoftが無償でストアに掲載しているので、これもみんなで画面を囲みながら手を動かして直接操作する楽しさを味わうのに最適だと思う。実際、かなり会話がはずんで楽しかった。

結論としては、Windows 8のタッチ操作は、大画面での水平位置にこそ大きな意義があることに気づくことができた、ということになろうか。かつて「Surface」と言われていた40インチクラスのテーブルトップ装置をMicrosoftは出しているが、コンシューマー向けのWindows 8プラットフォーム上での積極的な展開をもっとやってもいいと思う。ここで望まれるのは、企業向けのミーティング支援アプリだろう。家庭向けにも親子で画面を囲んで会話がはずむ、画面の向きに依存しないアプリ開発が有望だと思う。

SONYが20インチサイズの「テーブルトップPC」を販売しているが、思い切ってもっと大きなサイズに展開してよいのではないかと思うし、リビングのテーブルや床の上で家族や友人が囲んでわいわい楽しめるアプリはもっと開発されてよいと思う。

というわけで、現状ではいろいろと制約のある製品だけれども、なんとか使える状態まで自力で持ち込める人なら、さほどの投資をしなくても未来に夢を感じられるデバイスとして十分もとがとれるものにはなっているように思った。今後、競合他社の奮起を期待したいと思う。

2013年4月17日水曜日

RSからRaspberry Pi Type Bが届いた(梱包について)

RSから、発注していたType B基板が届いた。おなじみの、ラズベリーカラーのプラケースで梱包されていた。伝聞でしか知らなかったけれども、いまでもこのケースで出荷しているようだ。
3個注文した
いわゆる「INVALID IF SEAL BROKEN」が手前と奥の面に貼ってあり、開梱されていないことを証明している。薄い紙なので、簡単に破れるが、ケース側に粘着物は残る。ケースはやわらかい(日本語でいえばビニール風)ので、溶剤を使うとよくないかもしれない。ホームセンター等で売っているシールはがしの溶剤ならいいのかもしれない。

内部には、「Quick Start Guide」と「Regulatory Compliance and Safety Information」ということで、最低限のマニュアルシートが2枚と、導電プラスチックの袋に入った基板が入っていた。袋は密封されていないので、基板を出すのにハサミは必要ない。

箱のなかみ
ケースをじっくり眺めると、フタ側になにやら基板サイズに近いでっぱりがある。

フタ側に基板サイズのでっぱりが
試しに載せてみると、たしかに基板サイズである。

ぴったり載る
で、この写真で右側はツメになっていて、基板がひっかかる。左側は単なる高さ合わせのようだ。左側中央に突起が出ているので、SDカードがあたってしまう。したがって、上写真の向きで取り付けることが想定されているようだ。

ツメで固定される。SDカードスロット側になる

反対側は単なる台で、固定されない
載せてみたところではいい感じなのだが、やはり左側がぶらぶらなので、USBやEthernetのコネクタ側を触ると基板がずれてしまう。GPIOをいじるときはSDカード側なので、固定されていて動かないから、それでよしということなのかもしれない。

というわけで、梱包ケースもそのまま実験用や持ち運び用に使ってね、ということがわかった。なので、特にケースにこだわりがない場合は、RSから基板だけ買ってもケースつきみたいなものだと理解して、高いケースをわざわざ買わなくてもよさそうだ。

なお、element14から届いた基板はMade in the UKだったけれど、RSから届いたのはMade in Chinaだった。element14はfunnelグループ企業で中華資本だったと思っていたので、なんだか不思議。プラケースの表にもRSのパーツ番号が書かれた黄色いシールに「Made in China」と書かれている。白いほうのシールの余白は、名前とか書いておけば学校でも誰のものかわかってよいかもしれないな、と思った。

2013年4月11日木曜日

RS社のRaspberry Pi用ケース

Raspberry Piを校費で購入するとき、本学ではRSコンポーネンツとの取引があるので、途中に業者を入れなくても済むことから、RSに直接発注することにした。すると、ケースの取扱があり、クリア、ブラック、ホワイトの3色から選べるので、クリアを注文してみた。

いつも話題になるのは納期だけれども、ケースは翌日届いた。横浜市瀬谷区から。そりゃ早いわけだ。

届いたRSのケース
雰囲気はなかなかよい。上面と底面にRaspberry Piのマークが刻まれている。それから、底面だけれどもしっかりと放熱のための穴が開いている。Raspberry Piはかなり熱くなるので、密閉されたケースでは動作が不安。それに、ModMyPiのサイトでは、CPUとRAMが積み重ねられた部分(基板中央)に載せるヒートシンクも扱っているぐらいなので、こういう配慮は好印象だ。
空気穴が空いているのが好印象
ケースは上下のパーツを組み合わせる一般的なものだけれども、上と下では材質が違う。上はメラミン樹脂っぽい硬質なもの、下はやや柔らかめのプラスチックだ。
左が下の部分、右は上のカバー部分
この理由は、基板を取り付けてみるとわかる。4つのツメで基板を固定するようにデザインされている。メラミン樹脂ではちょっとした変形でも割れてしまうから柔らかくなければいけない。そして、ツメで固定されていることで、カバーをしない状態でも非常に安定している。ModMyPiの標準ケースは、ただ基板を載せるだけなので簡単に外れてしまうが、このケースでは基板がゴム足のついたプラスチック台に固定されていることで、安心して絶縁が担保された状態でケーブルのつけ外しができる。電子工作をすると、机の上は金属部品やはんだくずで散らかりがちだけれども、これなら基板の裏がそれらに接触する心配がない。
4箇所のツメで基板をがっちり固定できる
上のカバー部分は、やや背が高くなっている。カタログ写真では少々不恰好に思えたが、ひとつにはエアフローが確保できること、もうひとつは、拡張基板を載せた状態でもカバーが乗せられる空間があるということで、考慮されたデザインの結果なのだろう。
上にややゆとりがある
ちなみに、GPIOからケーブルを外に引き出す穴はあいていない。いかなるケーブルを引き出す隙間もないので、GPIOで実験するときにはカバーを外す必要がある。カバーをつけたければ拡張基板として上に載せる以外に方法はない。そして、拡張基板からも当然線を引き出すことはできないので、完結した基板でなければならない。まぁ、ほこりよけとか、持ち歩き用と考えるべきなのだろう。ただ、カバーはメラミン樹脂なので変形には非常に弱いから、このケースでバッグに他のものと一緒に入れると傷になったりヒビが入ったりするのではないかと思う。心配なら、透明な粘着シートを貼っておくのが無難ではないだろうか。

2013年4月4日木曜日

Androidアプリで「アカウントの取得」させることの危険性

しばらく前に中古のGalaxy Nexsusを購入し、Androidの世界に身を投入しました。

GoogleがAndroidを買収して自己のプラットフォームにしていく過程で、Jobsと同じように「盗んだもの」(僕の感覚では、Sunから盗んだものが多い―実際の裁判では、争点がAPIに限定されて、Sunとは無関係という判決となりましたが)ということで、またマルウェアやガワだけ替えた偽アプリなどストアの品質などにも懸念があり避けていたのですが、Jelly Beanを入れてみると、ICS以後ようやく本気で取り組まれたfluid(表示の滑らかさ)のおかげで、「使える」プラットフォームに育ったということがわかりました。

Nexusプランドを選ぶのは、やはりカスタマイズされていない生のAndroidに触れて評価したかったためでしたが、邪悪そうに見えても自分の目と手で評価しなければわからないことは多いと実感しました。

ただ、懸念されたストアの品質ですが、たしかにiOSのApp Storeと比べれば身元不明な怪しげなアプリが目立つ印象はありましたが、iPhoneを誰もが持つようになって以後のApp Storeとどれだけ違うかというと、それはなんとも言えないように感じられました。

とはいうものの、Google Playはアプリが要求する権限を明示しており、これがアプリ内の設定ファイルから自動生成されているならば嘘ではないと思われるので、クリーンなアプリかそうでないかの判断がしやすいのはApp Storeにないよさと思うようになりました。App StoreではAppleの審査のみが唯一の基準で、ストアに出ているものを信用するしかありません。しかし、Appleは端末固有番号であるUDIDを取得するアプリは審査しないといいつつ何年も放置しています。少し前の表明でも、UDIDを取得するアプリは「新たに審査対象になる場合(バージョンアップを含む)」に審査から落とすということで、現在ストアに出ているアプリで放置されているものは、いつまでもUDID取得機能が残ったままインストールされてしまうという体たらくです。

UDID取得が嫌われるのはもちろん端末が追跡されること、UDIDをキーにして、様々なプライベートなデータを集約できてしまうことにあります。とはいえ、以前の記事にも書いたように、Apple自身が端末追跡IDをOSの機能に載せており、それを広告屋に売っているという共犯関係にあるのですから徹底することは期待できません。また、連絡先などをごっそりもっていくアプリも堂々と審査を通っています。TwitterやFacebookもそうですが、これはあとから同期をオフにできるので、いちいち連絡先を空にしてからインストールし起動するなどしていれば被害は防げるという逃げ道はありそうです。

さて本題。Androidアプリの場合、Google Playに載っているほとんどのアプリが、「アカウント情報へのアクセス」要求をします。好意的に考えるなら、「アプリが固有のアカウントを作成すること」であろう、これはAndroidアプリすべてに共通の仕様であり、Androidの下にあるLinuxのレベルで、アプリごとに違うアカウントで動くようにし、他のアカウントで動作するアプリとはデータ共用できないようにしてセキュリティを保っていることを指しているはずだ、といえるかもしれません。単にそれを言っているだけなら問題はないかもしれません。しかし、アクセスに「読み取り」があった場合、これは端末にどのアプリがインストールされているかをどこかに送信するという意味になります。これはプライベートな情報であり、嫌がる人は多いのではないでしょうか。

Androidアプリの解析結果を確認できるサイトsecroidは、内部で使用されているライブラリやフレームワークについても検証し、危険性のあるライブラリやフレームワークあった場合、どんな理由でそれが危険なのかという情報提供がなされることで、スキルは必要なものの、より深い安全性判断ができます。iOSでは危険かどうかの判断はAppleにすべて委ねられており、ストア利用者はそれを知るすべはありません。

まとめると、Google Playでアプリのインストール時に表示される、「要求される権限」には必ず目を通しておきたい(自己責任ですが)ということ、ただし表示されている内容には、わかりにくいプライバシ侵害が含まれている、ということになります。

ところで、iOSで自由なカスタマイズをしたい、Appleの審査を通らなかったアプリを入れたいという理由で「脱獄」(Jailbreak)をしたがる人は多いのですが、iOSにおいてjailはほぼ唯一の安全弁であり、これを外せば単なるパソコンと同等かそれ以下のセキュリティ状態に置かれるということは覚悟しておくべきです。jailはFreeBSDが最初に導入したかと思われるのですが、Unixに少々古くから含まれていたchroot()機能、すなわち、アプリ側から見えるトップディレクトリを、特定のディレクトリに設定することに加え、プロセス間通信やシステムコールなどを完全に分離し、そこでセキュリティ上の問題が生じてもOS全体には影響が及ばないようにする技術でした。iOSはこれを取り入れ、アプリがアクセスできる範囲全体を「サンドボックス」(お砂場)と呼んでいますが、AndroidとiOSの大きな違いは、iOSアプリが利用するObjective-Cランタイムの驚くほどの柔軟性にあります。オブジェクト指向技術の言葉でいえば、mixinが簡単にできてしまう作りです。たとえそれがOSのオブジェクトであっても、アプリ側から簡単にメソッドの追加や置き換えができてしまう強力な自由度が諸刃の剣となるのです。脱獄後にはいろいろなtweakを組み込むことが楽しくなりますが、これこそが、OSの機能を柔軟に変更している具体例です。

よくあることですが、SafariのエンジンであるWebKitには、いくつもの脆弱性がつねにあります(少ない、といってもゼロにはならない)。したがって、それほどたいした脆弱性でなくても、うまくexploitを作ればSafariをアクセスするだけでSafariが触れる範囲内で何かコトを起こされてしまう可能性はあります。サンドボックスが機能していればSafariだけの問題で済みますが、脱獄していた場合を想定したexploitの場合、OSごと乗っ取られる可能性を考慮しなければなりません。

とはいえ、UDIDや連絡先の保護、またファイアウォール設定や広告ブロックなどをしたい場合には、現状では脱獄が不可欠というジレンマがあります。Androidでrootをとるというのは実はたいしたことはなく、/bin/suという管理者権限に移行するコマンドが削除されているので、それを入れてやるというだけのことです。rootにはパスワードがついていませんから、root権限を使って便利になるよ的な説明で釣ってLinuxを乗っ取るトロイを仕込むということはあるかもしれません。報道によれば中国にはAndroid携帯による巨大なボットネットができているといいます。

iOSについては、脱獄以外の手段での何らかのカスタマイズ手法の開発、Androidを含めるならば、素性の分からない人物の作成したアプリケーションに気をつけ(ストアの評価はステマもどきがほとんどです)、甘言には乗らない心構えが必要かと思います。

2013年3月26日火曜日

Raspberry Pi用のJVMとドリトルの動作について

Raspberry Pi搭載のセンサー付きロボットカーを構想しているところ。

ただし、本業の授業用なので、プログラミング言語としてはドリトルで、ということになる。ドリトルはJavaで記述されているので、JVMさえあればひとまずどんな環境でも起動させることはできることになっている。

一方で、Raspberry Piはメモリが512KBあるとはいえ、あくまで組み込みLinuxが主な動作環境なので、通常のJava SEが動くかどうかがはっきりしなかった。結果としては、OpenJDKであればRaspberry Piでもドリトルが通常通り使えることが確認できた。パッケージ名としては、現状ではopenjdk-7-jre。これをapt-get installするだけでいい。JVMはzeroとjamvmが入る。どちらもAWTやSwingなどX11の画面にグラフィクス描画ができ、JITも組み込まれた、ほぼJava SE互換のもの。しばらく前まではRaspberry Piの現在の基板に使われているSoCのhard floatには対応しておらず、Raspbian(Raspberry Pi用Debian)そのものがsoft floatでコンパイルされたバイナリ上でしか動作しなかったが、現在はarmhfに対応しているので通常のRaspbianからapt-getするだけでよい。

ドリトルは普通にLinux用に用意されているshell scriptから起動できる。ただし、起動まで6秒程度、また、ダイアログ等の表示がもたもたして、軽快とはいえない。zeroよりjamvmのほうがましだという説にしたがって、javaの起動オプションに「-jamvm」を加えてみたが、はっきりとわかる違いは感じられなかった。

ドリトルの特徴は日本語の命令語やパンクチュエーションが使えることにあるので日本語入力も入れておきたいところだが、これは一般的なibus-anthyを入れることで対応した。当初、英語キーボードをつないでいるせいかIMEの切り替えができないようだったが、自分の趣味でfonts-ipaex(IPAexフォント)を入れて、ibusの設定でそれを表示フォントにしたところでなぜだかうまく切り替えられるようになった。理由は追求していない。ibusの設定ファイルで肝心なものがそのタイミングで生成されたのかなにか、そんなところかと思う。

ドリトルの編集画面(プログラム記述画面)で日本語入力するが、やはり動作はもたつく。といっても、anthy自体が律速なのでしかたがない。入力が遅れてくるので先に確定をすると、確定だけが先に入って遅れてきた入力が捨てられるなど、うーむと思ってしまうところはある。ただ、授業の範囲では許容できると判断した。

OpenJDK上のドリトルの最大の問題は、やはりグラフィクスにある。定番の
カメ太=タートル!作る。
の1行を実行すると、タートルが現れるまでジャスト5秒待たされる。これはきつい。とはいえ、いったん現れたタートルを動かす分には全く遅さを感じなかったので、タートルの画像を読み込むところでの問題なのかもしれない(標準の画像はjarに同梱だがオンメモリになくてSDカードからunzipしながら読んでいるため遅くなるのかもしれない)。ロボット制御には関係なさそうなので気にしないか、オーバークロック設定をして時間を若干短縮するかは今後考えることにした。

なお、Raspberry Pi用でグラフィクスが使えるもうひとつのJVMにavianがあるが、これはフットプリント(メモリ専有量)を最小限にするためにJITを内蔵していないので、インストールして試してみたが、ひどい結果になった。起動に10秒強、タートルが現れるのもやはり10秒そこそこ、終了の際の確認ダイアログなども2秒待ちで現れるような状態で、これは全く使い物にならない。

一方、Oracleが提供しているJava ME 8のearly access版は「headless」といい、AWTやSwingは使えない。かわりにJavaFXを使えということのようだ。ただし、Raspberry Pi用のJavaFXはOpenGL ES2でフレームバッファに直接書き込む実装とのことで、X11の画面を上書きしてしまう。JVMそのものの速度、JavaFXの速度ともに十分ということなので、テレビに映し出すにはベストの選択といえるが、授業ではVNCを使ってモニタやキーボード・マウスすべて学生個人のノートPCのみで済ませるつもりなので、X11の画面転送しかできない既存のVNCの実装では対応できないし、JavaFXそのものについても知識がないので授業にはもう間に合わない選択肢となった。

OracleのRaspberry Pi用Java 8は、GPIOをフルアクセス(Serial, I2C, SPIなどを含む)できるクラスライブラリを持つとのことで、組み込みJavaならではの開発に特化した実装のようではある。

ともあれ、OpenJDK 7があれば、ドリトルの画面だけで完結するプログラムの利用には全く支障がないようだ。また、未確認だがRaspberry Piのフォーラムには、RXTXがそのまま使えるという風な記述があるので、シリアルポートでの通信もそのまま使える可能性があり、MYUロボへのプログラム転送程度ならば現状のまま動くのかもしれない。

残る問題は、GPIOのアクセスをどうするかという部分である。OpenJDKのまま正攻法でいくならば、WiringPiのJava NIO実装を用いてJavaのコードを追加するやりかたなのだろう。これはGPIOを/dev/mem経由でアクセスするとのことで、速度についての不安はまったくないように思われる。また、ArduinoのWiringクラス準拠のAPIのようだ。ただ、ドリトル本体をいじることになるのでこれがどの程度の工数になるのか僕には見積もることができない。

最も簡単なのは、Wiring Piのコマンドライン実装を呼び出す方法だが、いちいちプロセスをexecすることになるので実用性の点で不安がある。割りきってしまうならば、WiringPiのexampleにあるようにデバイスごとの専用コマンドを作り(LCDやファミコン用リモコンなどのサンプルがある)、必要に応じて呼び出すやりかたでもよいのかもしれない。ただし、汎用性はない。

いまのところ、WiringPiサーバデーモンを作り、シンプルなバイナリプロトコルを通じてやりとりできないか、ということを考えている。現在の開発バージョン2.32はKineXというKinectの骨格情報をストリームするアプリケーションからsocket経由で値を取得する実装が含まれている。そこで2.32版ドリトルにはsocket通信に関する一般的なクラスが用意されているかと期待したが、KineX専用のクラスが実装されているようで、結局ドリトルに手を入れなければならないことにはかわらないようだ。ただし、WiringPiのNIOを組み込んでしまうとドリトルでしかうれしくないが、WiringPiサーバデーモンは他の言語からも利用可能という汎用性があり、世の中のためにはなるかもしれない。どちらにするかはわからないし、外部コマンドで済ませることになるかもしれないが、いずれにせよ時間との勝負ではある。

2013年3月1日金曜日

Raspberry PiのXMBCで日本語ファイル名表示

順番が間違っているような気がするが、Raspberry Piがあり、HDMIでディスプレイにつないでXBMCメディアセンターが動いているという状態からはじめる。

SMBでWindowsマシン上にある動画ファイルのフォルダをマウントして再生しようというわけである。

XBMCはPi用LinuxであるRaspianとは別に、最小限の内容にしぼったOpenELECという組み込みLinuxの上で動くイメージファイルが配布されている。このイメージファイルで起動すると、FAT16のパーティションの次にExt4パーティションができ、そこにOpenELECが展開され、以後ここから起動する。

Raspberry PiのGPUアクセラレーションのおかげで、全く問題のない性能が出ている。ところが、ファイル名に日本語が使われていると、その部分は空白になってしまい、どれがどれだかわからないことになる。理由は簡単で、Unicodeフォントを搭載しているものの、日本語のグリフが含まれないものだけがあるからだ。

このあたりは自分でソースからビルドするならばどうにでもなるのだが、あいにく手元に適当なLinuxマシンがなく、起動しているOpenELECにsshログインしてフォントを書き込みたいということになるものの、ルートパーティションはread onlyでマウントされており、面倒だ。また、OpenELECそのものが頻繁にアップデートされていることを考えると、バックアップできない場所にはフォントを置きたくない。

手っ取り早く書き換えできるのが、メディア(動画や音声、写真など)を置く/storage以下となる。

XBMCのUIは、Skinによって全く違うものに変更できる。UIはXMLで定義されていて、画像ファイルもフォントもメッセージもすべてSkinによって置き換えができる。要するに、日本語フォントを含むSkinを自前で作り、addonとして組み込んでしまえば解決というわけだ。

ここではひとまず、その前段階として、適当なSkinをaddonとして導入し、それをsshログインした状態で書き換えて対処してみる。

オフィシャルに提供されているSkinのなかで、今回はXeeboを選んでみた。デフォルトとは大きく異なり、タッチパネルでの操作を意識したという、UIパーツのサイズが大きめで、フラットデザインのすっきりした印象のものだ。

addonは、/storage/.xbmc/addon以下に書き込まれる。Xeeboは、skin.xeeboというディレクトリ以下に展開されている。フォントは720p/fonts以下、フォントの設定は720p/Fonts.xmlに記述されている。

そこで、適当な日本語グリフを含むUnicodeフォントとして、IPAexフォントを選んでみた。IPAexゴシックを使うことにする。ファイル名はipaexg.ttfだ。そこで、
$ scp ./ipaexg.ttf root@IPアドレス:/storage
として、書き込みができる/storageのところにコピーする。その後、OpenELEC側で
# mv ~/ipaexg.ttf ~/.xbmc/addon/skin.xeebo/720p/fonts
で、所定の場所に入れてやる。ここには専用にデザインされたxeebo.ttfとxeebo-light.ttfが入っている。ファイル名を表示するのはxeebo.ttfのほうなので、ipaexg.ttfをこの名前で上書きしてもいいかもしれない。ただ、XMLファイル~/.xbmc/addon/skin.xeebo/720p/Fonts.xmlを編集して、xeebo.ttfをipaexg.ttfに置き換えるのでも同じことだ。再起動すればちゃんと日本語のファイル名が表示される。

XBMCの設定で、autoupdateするようにしていると、Skinが置き換えられてすべてが無になるかもしれない。それを避けるなら、自分で別名のテーマを作成し、zipして、/storage直下に置き直接インストールするのが無難だろう。いまのXeebo改造版をzipしてバックアップをとっておくのがいちばん簡単といえる。

ひとまず、当面の解決ということでこの項を終わる。

2013年2月22日金曜日

早速Ubuntu 12.10 Touch Previewをインストールする

CanonicalからUbuntu Touchのプレビュー版(MWC2013でのデモ用イメージ)が公開されました。対象は、Nexusブランドの4機種、Galaxy Nexus, Nexus 4, Nexus 7, Nexux 10です。

このあたりも見越してGalaxy Nexusの中古を入手してあったので、早速入れよう... としたのですが、説明はあくあまでUbuntuを使っての作業が書かれているのみ。

しかし、カスタムROMやらGalaxy NexusならGoogle公式最新版イメージに置き換えたことのある人ならご存知の通り、adbとfastbootさえあれば、bootrom unlockしたNexus端末にどんなROMを入れることもできることはご承知の通り。

そんなわけで、Mac OS X(たぶんWindowsでも同じ)から、Ubuntu Touchをインストールする手順を以下に。

1. イメージ等、必要なファイルの入手

今回公開されたイメージファイルは、ここにあるものがすべてです。それぞれ、機種に対応するコードネームがついたものがあります。それぞれ、
  • Galaxy Nexus - maguro
  • Nexus 4 - mako
  • Nexus 7 - grouper
  • Nexus 10 - manta
です。今回はGalaxy Nexusなので、ファイル名にmaguroが入っているものすべてを適当な場所にまとめてダウンロードしておきます。慎重な人は、md5ファイルもとって、md5コマンドで正常にダウンロードできたかどうかをチェックしてもいいでしょう。今回は、以下の4つ

  • quantal-preinstalled-armel+maguro.zip
  • quantal-preinstalled-boot-armel+maguro.img
  • quantal-preinstalled-recovery-armel+maguro.img
  • quantal-preinstalled-system-armel+maguro.img
です。

2. adbとfastbootの準備

これは、Android SDKのなかに入っています。Mac版は、platform-toolsの下に入っているので、適当にイメージと同じ場所に移動してしまっていいでしょう。

3. bootrom unlock

すでにやってある人は気にしなくていいのですが、初めての人は、以下の作業をしてください。
  1. いったん電源をオフにします
  2. 電源ボタンと音量ボタン上下の3つのボタンを同時に押して起動します
  3. 端末とMacやPCをUSB接続します
  4. ./fastboot oem unlock  のコマンドをPC側から実行します

4. 稼働中のAndroidのバックアップ

もう戻らないよ、という人や、まっさらからAndroidイメージを書き戻しても惜しくない人はこれをやらなくてもかまわないですけれど、Androidに戻したくなったときのために、現状のすべてをバックアップしておきます。ただ、なにやらGoogle Playに怪しげなバックアップツールがいろいろありますが、どれもsecroid.comで調べてみると、「危険度HIGH」で、広告屋やらPayPalなどへ情報を送信しています。使わないのが無難ではないでしょうか。

ICS以後はadbコマンドでフルバックアップがとれるので、以下の通り、簡単に済ませましょう。

その前に、「USBデバッグ」を有効にしなくてはいけません。これは、設定アプリで情報を開いて、ビルド番号のところを7回連打すると隠されていた「開発者向けツール」の項目が現れ、そこのなかに設定があります。「USBデバッグを有効にする」にチェックを入れておきます。そして、そのあと、MacやPCにUSB接続をすると、Android画面に(4.2以後なら)USBデバッグの許可をするかの確認が出ます。コンピュータのハッシュも出ますが、まぁそういうことで、「許可」します。そのあとで、adbで以下のおまじないをしておくといいかもしれません。
$ ./adb kill-server; ./adb start-server
そのあとおもむろに、
$ ./adb backup -f android422.ab -apk -shared -all -system
とやって、android422.abなど、適当なファイル名でバックアップを取得します。これは、あとでリストアするときに使えます。

5. 各種ファイルの書き込み

まず、Androidが普通に起動している状態にしておきます。USBデバッグは有効にしておいてください。そこで、adbコマンドでzipファイルを/sdcardに書き込みます(内部のフラッシュメモリですが、データ保存場所としてそういう名前のフォルダがあると考えてください)。
./adb push quantal-preinstalled-armel+maguro.zip /sdcard/autodeploy.zip
後ろのファイル名は固定です。この名前でなければだめです。

そのあと、端末を再起動してイメージを一気に書き込み、最後に再起動する作業をします。
./adb reboot bootloader
./fastboot flash system quantal-preinstalled-system-armel+maguro.img
./fastboot flash boot quantal-preinstalled-boot-armel+maguro.img
./fastboot flash recovery quantal-preinstalled-recovery-armel+maguro.img
./fastboot reboot
これで、Googleロゴが出たまま固まっていると思います。失敗したかと焦ると思いますが、なにやらイメージのリサイズとやらで、10分以上待たされるのだそうです。Galaxy Nexusだと、もしかすると30分とか平気でかかるかと思います(と書いているのは、まだ起動待ち状態だから)。

 というわけで、こちらはまだGoogleロゴの画面のままなので、なにがどうなっているかさっぱりわかりません。当面寝かせておいて、起動したらまた追記します。

おまけ:Androidの復元

4.2.2のイメージは、Googleの開発者向けサイトに置かれています。Galaxy Nexsusなら、maguroの項目を見て、4.2.2の「Link」をクリックすればイメージをzipにしたものが落ちてきます。あとは、これを展開したなかにある./flash-all.sh を実行してやれば、イメージの書き込みが終わり、まっさらな状態で再起動します。その後、最初の言語の選択とGoogleアカウントでのログインを終えたあと、クラウドからの復元のチェックを外しておいて先に進んで、ホーム画面にたどり着いたら、再びUSBデバッグを有効にしたあと
./adb restore android422.ab
のようにファイル名を指定してバックアップから戻せば元通りです。

おまけその2:石化してしまった場合の対処

1日置いたけど先に進まない、もうだめ、というときには、落ち着いて裏蓋を外し、電池を抜きます。深呼吸しながら10数えて再び電池を入れ直し、裏蓋をします。その後、おもむろに電源ボタン+ボリューム上下ボタンで起動してやれば、リカバリモードに入ることができます。ここで心配ならば、上のAndroidの復元をすれば元通りになります。

2013年2月4日月曜日

Windows 8でホームディレクトリを英数字のみのユーザ名にする方法

かなり過日のことでしたが、Windows 8が作成するホームディレクトリが漢字にならない方法を見つけたので、念のため紹介しておきます。

普通にWindows 8をインストールする際には、ユーザの登録場面で、Microsoftアカウントの作成もしくはMicrosoftアカウント(旧Live ID、旧旧Hotmailアカウント、旧旧旧...)でのログインを求められます。このとき、そのMicrosoftアカウントに関連付ける氏名に漢字を使っていると、下の名のほうを使った日本語フォルダが作成され、ホームディレクトリになります。僕の場合は、ユーザの下に「敏之」というフォルダができるという感じ。

いまどきの若い方々は下の名前で互いに呼び合うので違和感はないかもしれませんが、私のようないい年のおっさんには、「なんだよ、呼び捨てかよ」的な違和感が残ります。

またなにより、ホームディレクトリの下には、Windowsでユーザ固有の設定を置くユーザプロファイルという特殊なファイル(普通は見えない)や、アプリケーションの個人設定などを置くApplication Dataフォルダなどがあり(これも普通は見えない)、インストールしたアプリはすべからくこれらを読み書きします。

そこで、例えばネットからダウンロードしてきたソフトウェアとか、日本語版でないアプリケーションなどを動かすと、ユーザプロファイルやApplication Dataフォルダ以下が見つからずに、へんてこに文字化けた謎フォルダを作ったあげく、起動しないということがたびたび生じます。

世間ではこのようなとき、「英数字でないログイン名をつける奴が悪い」「その変な文字やめれ」的な回答をユーザーフォーラムのようなところで雨あられと頂戴することになっております。これは漢字圏に限らずヨーロッパでも同じで、母国の正しい表記の名前でユーザ名を作ったばかりに、上記のように屈辱的な回答を頂戴して「ごめん、出直してくるよ」と回答せざるを得なくなるケースを非常によく見ます。旧聞になりますが、Kobo騒動では三木谷がマヌケだったわけではなく、彼こそがグローバルスタンダードだったといってもよいぐらいなわけであります。

そんなわけで、Windows 8はLive IDもといMicrosoftアカウントとの統合が売りなので、Microsoftアカウントでないことに対して様々な不安を与える表示を出して、Microsoftアカウントへと誘導します。しかし、ここさえ乗り切れば、「つい、うっかり」非英数字のホームディレクトリを作成してしまうことを避けることができるのです。

いま、インストールの途中でMicrosoftアカウントの作成もしくはMicrosoftアカウントでのログインを求められている場面だとします。ここで、迷わず「ローカルアカウントを使う」を選ぶのです。すると、Microsoftアカウントを使うことの優位性を説かれ、「それでもいいですか」的な表示が出ます。ここでひるんではいけません。非情に「ローカルアカウントを作成する」を選択します。そして、英数字でローカルアカウント作成するのです。

これで、ホームディレクトリは英数字の範囲内で作成されました。でも、もちろんローカルアカウントなので、Windows Live(でいいんだっけ)による、ユーザ情報の共有やアプリの同期などはできません。どうせWindows 7まではそうだったし、この状態でもSkyDriveなどは個別にアプリからログインすれば使えますから、このままでもいいでしょう。でも、ありがたいことに、この状態から「Microsoftアカウントへ切り替える」しても、ホームディレクトリはそのままなのです。この変更は、個人設定でできます。スタート画面でチャーム(右からうにょって出てくるやつ)を出し、いちばん下のギアを選択して、切り替わった画面のいちばん下にある「PC環境の設定」を選べば、「PC設定」アプリが起動し、左の「ユーザー」メニューを選べば、「お使いのアカウント」として、Microsoftアカウントへ切り替えるのボタンが現れます。ここではじめてアカウントを作成するのもよし、すでにLive IDをお持ちならそれでログインすればいいというわけです。

ちなみにこれは一方向です。というか、最初に作成されたホームディレクトリが必ず維持されます。なので、先に非英数字のホームディレクトリを作成してしまったら最後、いくらMicrosoftアカウントの氏名をローマ字に変更しようとも、漢字なら漢字のままです。思い出してください。ここには、ユーザプロファイルという、Windows NT以後最重要な個人設定ファイルがあるのです。途中でこのファイルの場所を変更するのは危険です。できないように作りこむのがメーカーの良心というものでしょう。

Windowsの設定に詳しい方なら、プロファイルのパスを設定変更する方法をご存知かと思います。もちろん、その機能はあります。同じ画面でホームディレクトリを直接指定することもできるので、英数字の任意のフォルダをホームディレクトリに設定することも可能です。しかし、残念ながら、Application Dataフォルダは相変わらず漢字のフォルダ側に残ります。要するに、普通にユーザから見えるデータの置き場所だけが設定したディレクトリになるだけなのです。さらに悪いことに、ユーザプロファイルが分断されて、両方に書き込みが(一貫性なく?)あるようです。環境変数の書き換えも万能ではありません。アプリケーションによっては、こうした設定に従ったり、環境変数だけを参照してくれるケースもあるのでうまくいくこともありますが、それは運がよかったというべきかと思います。したがって、これらは「無駄な抵抗」と思っておいたほうが無難ではないかと僕は思っています。

最後に、もう一度だけおさらいしておきます。

「先にローカルアカウントを英数字の範囲だけで作成し、そのあとでMicrosoftアカウントへ移行すれば、日本語のフォルダが勝手に作られることから逃げられます。」

日本語のホームディレクトリができてしまった人は残念です。Windowsと心中できる覚悟のない方は、諦めて再インストールしましょう。事情があって再インストールは不可能な場合は、新たにローカルアカウントを英数字で作り、いったんサインアウトしてから新しいローカルアカウントでサインインして、なんとかすればいいでしょう。ただし、ホームディレクトリの削除は管理者権限でコマンドプロンプトを開いたぐらいでは消すことができません。もちろん、管理者権限でコマンドプロンプトを開いてそこでの作業をするのは前提なのですが、attrコマンドでファイルやフォルダに対してひとつひとつ権限を外したあとでなければ、どうやっても消せません。非常に面倒です。こういうときは、ダチョウアルゴリズムを採用して、「見なかったことにする」のが正しい対処法ではないかと思われます。

そういえば、マイクロソフトに忠実な方で、正式版以前からアップデートされてきた方は、Windows.oldというフォルダがCドライブのルートにあることでしょう。これも同じように、attrコマンドでちまちまと膨大な作業をしないと消えません。VBScriptやPowerShellを使いこなせる人が近くにいれば、スクリプトで作業するのも手かもしれませんが、ディスクにゆとりがあるなら、これも「見なかったことにする」のが最も手っ取り早いように思います。多少ディスクの残りが厳しいならば、管理者権限である程度までは消すことができるので、それをやってあとは諦めるのでもよいと思います。

自分のCalibreライブラリをOPDSで自分用に公開する

英文の本はほぼ確実に電子書籍を買う。待たなくていいから。特に、O'Reillyの本はDRM Freeで、DropBox連携もあるので、買えばその場で自分のDropBoxアカウントに落ちてくる。Kindleも、まぁ、すぐに落ちてくるが、DRMがついているのでこれはやや難がある(それをどうにかする話は検索すれば多数ひっかかるし、商売でやっている人も海外にいるから読者のご判断に任せる)。

自炊本も含めて、蔵書管理に便利なのがCalibreだ。多数の電子書籍デバイスにも対応していて、DRMの心配がない、例えばパブリックドメインの本などは全部これに入れておき、書誌情報をGoogleやAmazonで検索してくっつけておく、などということもできる。

一方で、出先で自分のCalibreライブラリにアクセスしたいということはあると思う。CalibreはWebサーバとして動作する機能があり、「サーバを起動」すれば、設定したポートでWebサーバとして動作し、設定したパスワードで以後蔵書にアクセスしてダウンロードすることもできる。サーバのページはわりとよくできていて、特に不満はないと思う。

ただ、電子書籍の書誌情報についての規格としてOPDSというのがあって、OPDSカタログを使ってInternet Archiveや青空文庫などと同じようにOPDSから本を選んでダウンロードしたいということもあるだろう。それをどうにかしてくれるのが、calibre2opdsというソフトウェアだ。これはCalibreとは別のプロジェクトで作られていて、作者個人がメンテナンスしている感じだ。当初はDropBoxにCalibreのライブラリごと置いてOPDSカタログもそこに作れば幸せだね、って感じでやっていたようだが、DropBox側の通信量制限にひっかかるケースが続出したようで、OPDSそのものにブロックがかかってしまったようなぼやきが作者のブログに書かれている。

なので以下の記述は、自分でWebサーバを公開できる人に限った話ということになる。

話は簡単で、Calibreのライブラリごと自分のWebサーバに置いて、そこにcalibre2opdsでOPDSカタログを作り、StanzaなどOPDSに対応した読書ソフトウェアに、生成されたindex.xmlへのURIを設定する、ということになる。

i文庫HDなどのように、最初からDropBoxに対応しているアプリで不便を感じていないならば、またGood Reader経由でアプリに渡せばいいじゃないかと思うなら、こんな面倒なことをする必要はない。

しかし、青空文庫やProject Gutenberg、O'Reillyなどと同じ並びで自分の本棚が選べてダウンロードできるというのは、やってみると一味ちがう。StanzaはEPUB2までの対応ということで、縦組みは期待できないが、O'ReillyのPDF版を読むぐらいなら、絶対にStanzaで読むEPUBに切り替えるべきだ。好みの問題といえばそれまでだが、僕は紙の書籍のときから、O'Reillyのへんてこなフォントが大嫌いだった。これで読むしかないから我慢していたのであって、読みにくくて脱落することがとても多かった。でも、Stanzaのデフォルトフォントは、少なくともiOS版に関する限り、十分にオーソドックスな書体が使われていて、たいへん読みやすい。文字のせいで脱落するようなことはなくなった。だから、Stanzaに直接ダウンロードするのを、Webサーバ上でCalibreを動かすことなく(普通はそうだろう)、生成されたインデックスと書籍本体のファイルだけ置けば可能になるというのはとてもよいものだ。日本語も問題なく処理してくれるので、自炊PDFも大丈夫だ。

StanzaはEPUB2とPDF以外にはWordとRTFとHTMLに対応しているんだそうだ。他にmajor ebooks formatsということなんだが、MOBIとかが対応しているのかどうかは試していないのでいまのところわからない。

それから、OPDSは、英文のWikipediaの項目を参照されたい。パブリックドメインの本を提供している複数のサイトのOPDSが掲載されているので、シャーロック・ホームズを原文で読みたいとか、そういった古典へのアクセスに、青空文庫が満足できると思う人なら無償のデジタル本やスキャンされて公開されている古書をこれらOPDSを通してアクセスするのはなかなか快適だ。インライン画像も入っているのでスキャンした本やEPUBで表紙が含まれているならそれが現れるし、書誌情報がついていればそれを確認してからダウンロードすることもできる。ぜひ試してみていただきたい。

そういえば、国会図書館がデジタル化資料(古い官報や古典籍―とはいっても著作権が切れていればいいので1949年、つまり戦後すぐまでの本は入っている)を公開しているのだが、OPDSないよー、とぼやいている人が検索したらたくさん出てきた。ついでなのでここでも「国会図書館のデジタル公開分もOPDS対応してほしい」と要望しておきたい。

2013年1月30日水曜日

iOS 6.1 OTAトラブル

Apple税を払っているので、iOS betaが入手できる。いまのところ特にこれといってアプリの開発を行っているわけではないが、少なくともiOS 6.0はWi-Fiまわりが特にひどかったので、iOS 6.1 betaを入れていた。先日までにbeta 4までOTAして動いていたのだが、しばらく触っていなかったところ、奇妙な現象が起きた。

いままでOTAは、「設定」アプリから「ソフトウェア・アップデート」を開かなければ開始されなかったはずなのだが、なぜか今朝、6.1正式版に上げてみるかと電源を入れてみたところ、いつのまにかOTAが終わっていて、Wi-Fiの選択をする画面が現れたのだ。

Wi-Fiの選択肢の下には、「iTunesでアクティベートする」の選択肢があり、どうやらAppleサーバへのiOS署名の認証を待っているようだった。

ここで、どうせ充電のためにMacに接続していたのだから、iTunesでアクティベートしてみればよかったのかもしれないが、なんとなく複数あるWi-Fi APのひとつを選択して先に進んでみた。すると、「アクティベートに失敗しました」画面となり、「iTunesでアクティベートするか、数分後にもう一度試してみてください」というのだった。下に「再試行」のボタンがあるので、再試行すると、再びWi-Fi APを選択する画面に戻る。しかし、今度は「iTunesでアクティベートする」が消えている。何度も試し、別のAPも試し、最後には携帯回線のルータへ接続してみたのだが、いずれも結果は同じ。

ただひとつ、Wi-FiのAPを別のものにした瞬間、一瞬だけ「iTunesでアクティベートする」の項目が現れるのだ。そこを狙ってタップを連打すると、選択を示す青になって先に進む。iTunesはMac上で起動している。だが、結果は同じだった。

どうにもならないので、Apple Careサポートチームに連絡をとり、状況を説明した。彼らが持っている障害データベースにも該当するものはないらしい。そこで、Xcodeから何かできるかもしれないと思い、Xcodeを起動しながらその旨説明をすると、シニアアドバイザーと交代するという。ちょうどXcodeのバージョンも上がっており、更新しろとXcodeが言うのでアップデートしている間にシニアアドバイザーと話をした。

だが、彼も現象が理解できないらしい。逆にこちらがXcodeでどうするのか期待されてしまった。とはいえ、できることはプロビジョニングの更新ぐらいであった。しかも、どうもそれさえ成功していない。「このバージョンのiOSはサポートしていない」とか、わけのわからない表示になっている。

こうなると、シニアアドバイザーとしても、「復元」を薦めるしかない。だがこちらは先日マルウェア駆除のためいったん大掃除して以来、一度もバックアップしていないのだ。残念ながら、30GB超のバックアップを置いておけるディスク領域を持ち合わせていないためだった。

電話口でぶつぶつ言いながら、諦めて「復元」ボタンを押すと、バックアップをするかときいてくる。dfしてみると、なんとか入りそうなぐらいの空きはあるので「OK」を押すのだが、バックアップすることなく復元の確認に入った。そして「復元する」を押すのだが、エラーとなる。なんだそれ。

というわけで、こりゃDFUに入って完全に新しいiPadとして復元する以外に手はなさそうだと思っているところに、電話の向こうも「復元モードで復元しましょう」と言う。いわゆる、「iTunesに接続する」画面のことだ。

それで、DFUに入る手順で復元モードに入り、iTunesから「復元」を押すと、当然のことだがiOSのダウンロードが始まった。そして、インストールが始まり、Appleの認証を通して購入時と同じ、「ようこそ」画面になった。順に選択を行い、アクティベートのところでは「Wi-Fiを使わずにアクティベートする」という形で進め、なんとか初期状態になったところで電話を切った。

シニアアドバイザーの意見では、iOS 6.1 beta 4から6.1正式版へのOTA固有の不具合ではないかというのだった。たしかに、そんなところかもしれないし、そのあたりで納得しないとやっていられない。なにしろこちらはアイコンの配置も、iCloudに依存しないアプリ固有のデータも、in-app Purchaseで購入したあれこれも全部失っているのだ。

これから、それらをちまちまと作業して、できるところまで戻してやることになる。いちばん困るのはin-app Purchaseしたもので、アプリによっては実際に購入手続きに進んでみないと、すでに購入したかどうかわからないものがある。すでに購入した場合は課金されないだけという、たいへんスリリングなものだ。いったん間違えて、記憶に従って、買っているはずだと思うものを選んで購入手続きを続けていたら、結構な金額を請求されたことがあった。

またそれを繰り返すと思うと気が重くなる。

シニアアドバイザーは電話口で「デベロッパーの方に申し上げるのもナンですが、できるだけこまめにバックアップはとられたほうが」と繰り返していた。ごもっとも。

2013年1月24日木曜日

Wiimote IRカメラとのたたかい

Wiimoteの赤外線カメラと格闘している。

Wiiリモコン先端の黒い窓、いわゆる赤外線リモコンを連想する部分なんだけれども、よく知られているように、このなかには、画像処理するマイコンを内蔵した赤外線カメラが存在している。

マイコンでは赤外線の光点を4つまで追跡して、それぞれのカメラ上の座標をI2Cで出力するような処理が行われるので、単にI2Cで出てくる数値をとるだけでアプリケーションが簡単に作れるという仕様。

いわゆるWiimote Hackでは、BluetoothでWiimoteとPCなどを接続してセンサのデータをとったりするのだが、過去に作成されてきたソフトウェアはどれもWindows 7またはMac OS Lion、あるいはLinuxに限られていて、Windows 8とMac OS Mountain Lionしかない状況ではどうにもならないのであった。

それで、世界中が感動した、このカメラの解析ページをもとに、中古で買ってきたWiimoteを分解して、このページと同じように2.54mmピッチの8pinヘッダをとりつけたのだった。これはもう、自分で自分をほめるしかないタフな作業。というのは、Wiimote IRカメラは2mmピッチの千鳥足なんである。つまり、前列4pinと後列4pinは1mmずれていて、ただでさえピッチが合わないのに、前と後ろがずれているので、合わせる場所が本当に8つのピンの中央にしかない。また、カメラの極細の足を曲げないといけないので、空中配線になる。さまざまな試行をしたが、結果として、ヘッダーピン側を水平になるよう、うまく固定して、その隣に、コピー用紙5枚(試行錯誤で、この枚数で上側の端子と高さが合った)に載せたカメラユニットを置いて、そっと中央を合わせ、その2本をはんだ付けし、それから左右を少し開いてはんだを流し、片側を完了させたあと、裏返して再び横からじっくり眺め、高さが揃うように今度は前後の間隔を開くよう、適当な定規で持ち上げ、中央2本をつけ、残りを開いてつけるという作業で完了した。老眼で細かいものが全く見えないうえ、電気スタンドで強い光をあてないと細かいものが見えなくなっているので、ルーペを片目で眺めながら、片目だから距離感がないのを時計職人のつもりで慎重に位置をはかりながらの作業であった。

続いて、カメラのCPUを動作させるためのクロック回路とリセット回路の製作に入った。回路図の定数通りに部品を揃えるのだが、リセット回路の30kΩというのは謎である。E24系列でも存在しない値だから。とはいえ、これは単にプルアップしているだけなので、適当でよいはず。22kΩにしておいたら、海外で商品化した人の回路図も22kΩであった。

ひとまず完成したように見えたので、簡単に導通テストだけをやって、少なくとも電源のショートという情けない状態ではないことを確認して、クロック発振を確認してみた。手軽なので使っている、Seed StudioのDSO Nano Duoで見ようと思ったのだが、ちっとも確認できない。いくら回路を調べても、テスターで電圧を調べてもわからないので、テクトロのちゃんとしたデジタルオシロで確認したら、25MHzのはずが75MHzで発振していた。3倍の異常発振だ。

実はクロック回路を自分で組み立てるのは初めてで、ネットに助けを求めたところ、水晶発振子の異常発振の現象と対策についての解説があり、まさに3倍のケースだったので、Rsを追加することで解決をはかった。幸い抵抗はE24系列すべて100本ずつ揃えてあるので、100Ωから順に10kΩまで試してみた。1kΩでようやく25MHzが出たものの、過電流のせいか、振幅が大きく、3.3Vの給電なのに5V近くまで上がり、逆にマイナスにも振れてしまっていた。10kΩでそれはおさまったけれどもまだ歪みがあるので22kΩにしたら、50MHzになってしまったので10kΩに戻した。ほかにも、CLを大きくするというアドバイスがあったので、15pFを4つ買ってあったのを幸いに、それぞれ2個並列にしてみたが、あまり効果はなかった。

そうしてようやく、デバイスを壊さないであろう程度のクロックが得られたのでカメラユニットをソケットに挿してみたのだが、I2Cのクロックさえ出てこないうえに、しばらく調べながらふとユニットを触ってみたら熱いこと。危ないので即座に取り外して、基板を調べてみると、よくわからないのだけれどVcc-GND間が19kΩしかない。はては、I2Cの端子に至っては34kΩとかで、電圧を測ってみると2V以上出ていた。配線ミスなんだろうけれど、やり直す時間も体力もないので、再び海外の商品の回路図を眺めてみたところ、クロックはオシレータユニットを使っているのであった。秋月ならこれで済ませられるところ。

クロックまわりを除けばあとは単に電源とI2Cの引き出しをするだけなので、せっかくがんばったクロック回路はとりやめることにした。それで、なんとなく検索をしていたら、ARMマイコンであるmbedに接続したよという例があって、クロックはCoretex-M3内蔵のPWMで生成してしまい、結局リセット端子のプルアップとI2C端子のプルアップをするだけの簡単回路になっていた。

当初はArduinoに接続するつもりで、Arduinoの5V端子に接続するため、手持ちのSparkfunのレベルコンバータ基板まで実装していたのだけれど、mbedで済むならこれさえいらない。また、mbedでシリアルに流してやれば、当初予定していたNode.jsとの連携もArduinoでやるのと変わらない。この人のように、シリアル(USBだが)に出力するように素直に書けば、Arduinoとやってることは同じだ。

なんだかすごく遠回りをしたような、まぁ勉強になったのではあるが、そんじゃあ、ということで、mbed+StarBoard Orangeを取り出してきたところである。StarBoard Orange使うならWebSocketで出力する例で、さらにUSB HostにもなるからWi-Fiドングルつければいいんじゃないかとか、そんな意見もあるかもしれないが、BluetoothがWi-Fiに置き換わっただけなんだがそれってうれしいのか、とか、それならBlueUSBで無改造のWiimoteと直接ペアリングしてWebSocketしゃべれよとか、いままでの努力はなんだったのかと悲しくなってくるので、シリアルでデータを流すところで勘弁して貰いたいと思っているところだ。

(2013年1月26日追記:昨日mbed接続用の基板を作ってカメラユニットを装着し、見事に4つずつのXY座標をシリアルポートで得ることに成功した。ちなみに、mbedのPWMが出していたクロックは20MHz前後だった。したがって、水晶発振子でクロック回路を自作する人も25MHzにこだわることなく、入手しやすいクリスタルなりオシレータを使っても大丈夫なようだ。また、mbedの出力は結構ジッターがあるので、クリスタルでなくセラロックでも大丈夫かもしれない。あと、Mac OSでシリアルポートと通信するのは、screenコマンドだというのが新鮮だった。古いUNIXユーザなので、POSIXならcuと頭から決め込んでいたのだけれど、cuの仕様も変わっているし、しばらく迷ってしまった。シリアルポートの速度設定はsttyで。だがめんどくさいのでmbed側のプログラムで9600bpsにして、デフォルトから変更しなくてもよいようにした。)

2013年1月18日金曜日

Zabbixでマシンの稼働状況監視をしてみる

ネットワーク屋さんやSI屋さんが設置する、導入システムの稼働状況監視(障害検知)には、いくつかのシステムがあるようだけれど、今回、職場の情報処理センターに導入予定のZabbixを手元で動かして試してみることにした。

Zabbixは1.x系と2.x系があるようだけれど、今回ははじめてなのでいま最新の2.0.4を使うことにした。

サーバが情報を集約し、PHPを使ったWebインタフェースでリアルタイムに情報を見るというしくみ。情報収集にはSNMPを使ったりサービスポートを叩いたりといった原始的なものから、システムの稼働状況を詳細に計測してサーバからの問合せに応える「agent」とよばれるプログラムをインストールしておくという方法もある。

今回は、手元のMac miniでサーバを動かし(グローバルアドレスが振られている)、職場のNAT内のWindowsマシンやプリンタ、WiFiルータなどと、個人的に契約しているさくらのVPSを一括でみることを考えた。

さくらのVPSは、ISOイメージさえあれば、それを一時的なアカウントでアップロードして、Java経由の仮想コンソールでインストール作業を完了することができるので、OSはたいていのものが使える。僕はLinuxに慣れていないので、以前からFreeBSDを使ってきた。いまは9.1が動いている。

zabbix2のagentは、もちろんFreeBSD用もあり、portsに入っている。PKGNGではそのまま入るところにまだなっていないので、/usr/ports/net-mgmt/zabbix2-agent以下でmake install distcleanすることになる。/usr/local/etc/zabbix2/zabbix_agentd.confに、サーバを動かすマシンのIPアドレスを設定し、/etc/rc.localからでも起動スクリプトを動かしてやればおしまい。

サーバを動かすMacでは、MacPortsを使っているので、port install zabbix2で入れることになった。

ところが、昨日現在での最新状態では、アカウントzabbix、グループzabbixが作成されないため、インストールスクリプトのなかでchownするところで落ちてしまう。しかたがないので、dsclコマンドでアカウントとグループを作り、再度インストールして切り抜けた。

ただ、インストール後のMySQL5の準備(データベースの作成、テーブルの作成、データの挿入)などはすべて手作業になるので、portコマンド実行後に表示される長い説明を読み飛ばさないように注意する必要がある。あと、PHPのモジュールもいろいろと必要なので、Webインタフェースで最初の設定作業をするときのPHPの診断表示に合わせて足りないモジュールや/opt/local/etc/php5/php.iniの書き換えと、カーネルパラメータの設定(共有メモリを大きくとるように設定変更する)は必要だ。カーネルパラメータの値はどの値が適切なのかよくわからなかったが、とりあえずFreeBSD用の値と同じで動いている。FreeBSDと違うのは、/etc/sysctl.confというファイルではなく、sysctl -wコマンドで直接データベースの値変更を行うところ。

なお、ZabbixのWebインタフェースで最初にZabbix Serverを追加するような説明が多いのでそのようにすると思うけれども、MacPortsの起動スクリプトではzabbix_agentdは起動されないので、障害として報告されてしまう。エージェント監視を無効にするか、エージェントも起動するように手を入れておくことが必要になるので注意。

最後に、Windowsについて。Windowsのエージェントをサービスとして登録し、起動するにはコマンドプロンプトを使うが、管理者権限でなければならないので、コマンドプロンプトを管理者権限で起動することを忘れずに。また、zabbix_agentd.confファイルもC:\に置くことになっているので、これも管理者権限がないとできない。設定ファイルの内容は、たった1行、「Server=サーバのIPアドレス」だけで十分なはず。

あともうひとつ罠は、Windows Firewallの設定で、zabbix_agentd.exeの通信許可を手動で行わなければならないということ。コントロールパネルから、Windowsファイアーウォールを開いて、設定をすれば、Zabbixサーバと通信ができて、通信障害が出ることはなくなる。

とりあえずいまのところはこんな感じ。WiFiルータの状態監視もしたいのだが、SNMPトラップをどうみるかは、まだ検討中というところ。