ラベル Apple の投稿を表示しています。 すべての投稿を表示
ラベル Apple の投稿を表示しています。 すべての投稿を表示

2016年8月15日月曜日

FTDI VCPドライバが正常動作しない場合(El Capitan 10.11.6)

Arduino Nanoを最近使っていて、Macでシリアルデバイスが突然消えるので困っていた。

最初は/dev/{cu,tty}.usbserial-xxxxが生えるのだが、ポートを開いたり閉じたりしているといつのまにかデバイスが消えている。kextstatすればFTDIのカーネルモジュールはロードされているし、なにが起きているのかよくわからなかった。

というわけで、Google先生にお伺いを立ててみたところ、我らがParallaxのページに、「バージョン2.2.18と2.3があるが、10.9 (Mavericks)以後は2.3じゃないとだめだよ」ときちんと書いてあった。

いやまさか、最新ドライバに入れ替えたはずだと思ってFTDIのVCPドライバのページを見ると、同じことが書いてあり、El Capitanなら2.3の一択。間違えようがない。

不審に思ってkextstatすると、「com.FTDI.driver.FTDIUSBSerialDriver (2.2.18)」。ああすみません(泣)。

カーネルモジュールなので、kextunloadできるはずだと実行するも、「1 instanceがあるからunloadできないよ」と言われる。さっきまでつないでいたFTDIチップ搭載基板(Modern Device社のUSB BUB初代品)のせいで作られたインスタンスがなにかをつかんでいて消えないんだろう。

やむなく
# rm -rf /System/Library/Extensions/FTDIUSBSerialDriver.kext
を実行して再起動。そして、バージョン2.3を確認してダウンロードし、インストール。基板を接続すると、ちゃんと /dev/{cu,tty}.usbserial-xxxx が生えてきたのでkextstat。無事「com.FTDI.driver.FTDIUSBSerialDriver (2.3)」がおりました。よしよし。

カーネルモジュールちゃんとあるよね、と/System以下を見るも見当たらず、mdfindしたら、/Library/Extensions/FTDIUSBSerialDriver.kextに移動していた。あとからインストールしたものだから、たしかにこちらにあるべきで、いままでは何かの理由で/System以下に置いていたのだろうか、謎。

検索では「Mavericks以後はApple版のFTDIドライバがいるけれど不具合が云々」、というエントリがたくさんヒットしたのだけれど、「ドライバのバージョン間違いしてないか」を確かめることを注意したものが見当たらなかったので、書いておくことにしました。いや、そんな間抜けはいないのかもしれませんが、ここに1名おりまして。

それらの解説では、MavericksではApple版とFTDI版のkext両方がロードされてコンフリクトするようですが、El Capitanでは、FTDI版があればApple版ドライバがロードされることはないようでした。為念。

2016年4月20日水曜日

別のMacに接続したHDDへTimeMachineバックアップした場合の復元方法

TimeMachineバックアップで簡単なのは、Apple製品に囲われること、つまりTimeCapsuleをWiFi APとして使い、それに内蔵されたHDDをTimeMachineバックアップの対象とすることなんでしょうが、それにはお金がかかるので、別のMacがTimeMachineバックアップにしているHDDにファイル共有で相乗りしたいと思う人も多いのではないかと思います。

このときですが、普通にFinderからリモートドライブをマウントすると、SMB(Windowsファイル共有)でマウントされてしまうので、TimeMachineバックアップするときは、AFPでマウントしないと、権限が違うという理由で、そもそもTImeMachineバックアップが作成できません。マウスクリックでやる方法はわかりませんが、明示的にafpを指定してあげれば大丈夫。FinderからCmd-Kで「afp://マシンのドメイン名/保存先」のように。

このあと、TImeMachieをONにすれば、バックアップが始まります。

すると不思議なのは、ローカルHDDへのTimeMachineバックアップは、そのまま普通にファイルシステムとして見えて、バックアップ先のファイルを普通にコピーできるのに(ACLの属性はあれですが)、ネットワークでマウントした場合には、バックアップそのものは、マシンごとにひとつのsparsebundleつまりフォルダになっていて、おなじみInfo.plistなどもそこにはあります。そこにあるデータはなんだかフラグメントされたデータファイルの塊であって、ファイルとして見えません。

それで、リストアできるのか心配なので、念のためtarballを自分で作ってGoogle Driveにあげておいたりしたのですが、杞憂でした。

1回目の修理のときにGeniusに尋ねたら、「ファイルシステムとしてマウントすると普通のファイルに見えるんですよ」とのこと。実はこの説明はひとつだけはしょっているところがあるんですが、後述します。

さて、いったん初期化されたマシンからリモートドライブ上のTimeMachineバックアップで復元する方法ですが、以下の手順となるようです。(参考
  1. Cmd-Rで起動して、リカバリモードに入る
  2. ターミナルを起動して、リモートドライブをマウントし、おまじないをする。
  3. すると「TimeMachineバックアップ」という名前で見えるようになる
  4. ターミナルを終了して、通常のリカバリ手順に入る
結局、ターミナルでコマンドラインを入力するのに慣れていないとちょっとつらい、ということです。コマンドライン無理な人はTimeCapsule買うがいい(と、突き放してみる)。

さて、参考サイトをみながらやった手順を以下に記しておきます。ご参考まで。
  1.  リカバリモードから[ユーティリティ]→[ターミナル]で、ターミナルを起動する
  2. rootのコマンドプロンプトが出るので、管理者(シングルユーザモード?)ということがわかる
  3. ネットワークを接続しておく(やはり有線が早くて良いけれど、WiFiの設定はこの時点でもできる)
  4.  以下のコマンドで、まずリモートドライブをマウントする
    • mkdir /Volumes/TimeMachine
    • mount_afs afp://ユーザ名:パスワード@マシン名/保存先 /Volumes/TimeMachine
  5. すると、/Volumes/TimeMachine以下に、バックアップしたマシン名のsparsebundleフォルダが見えるので、以下のコマンドで普通のファイルに見えるようにします
    • hdid /Volumes/TimeMachine/バックアップしたマシン名.sparsebundle
  6. ターミナルをexitして、Cmd-Qで終了すると、起動時のメニューになるので、「TimeMachieバックアップからリストア」に入る
  7. 「TimeMachineバックアップ」の名前があるので、それをクリックして選択し、先に進む
ということでした。hdidがキモになるコマンドだ、ということですね。で、man hdidすると、backward comatibilityのためにのみ存在するコマンド、とかあって、将来的にどうなのかわからないですけれど、OS X 10.4の頃のhdutilコマンド(現存しない模様)の機能を切り出したものだということで、必要性がある限りは残るんでしょう。El Capitan時点ではまだあります。

MBP Retine 13"ディスプレイ破損と交換、さらに再修理の顛末

前回の回復後、急いでTimeMachineバックアップをとったものの、次の打合せに持参したところで落としてしまい、ついにディスプレイがブラックアウトしたままどうにもならなくなりました。

一回目の修理


やむを得ず、Apple電話サポートと話をして、Genius Barの予約をとってもらいました。とはいえGenious BarはiPhone修理の人でいつも混雑していて、なかなかとれないこと。でも、電話サポートの人は、こちらが動ける4月3日(土)と6(水)の予約を2つ入れてくれました。

なんとか土曜の予約時間に間に合ったので、そこでみていただくと、iPadでステータスを確認しながら、見えない画面でいろいろキーボード操作して診断していた模様。ThunderboltにEthernetのドングルをつけた状態です。

それで、「外部ディスプレイに出力が出るかもしれません」ということで接続すると、普通に起動した状態の表示が出て、「たぶん本体とディスプレイの間のケーブルやコネクタの部分の問題でしょう」ということで、基本料金33,000円(税込み35,640円)の見積もりとなりました。うれしい金額です。キーボードのバックライトが点灯しない理由については、「環境光センサーで明るさが決まるので、その配線の問題では」ということで、いよいよ配線のみだろう、という気持ちが高まりました。

そして、修理センター送りにしたのですが、翌日すぐにApple Storeから電話が。業務があり気が付かなかったのですが、メールで連絡があり、リンクをクリックすると、詳しい診断結果が表示されました。
  • ディスプレイパネル折損。圧力によるものと考えられる
  • ロジックボードに分解痕、コネクタの一部はがれ
 でありまして、分解結果見つかった破損箇所を爪楊枝で指しているくっきりした写真つきのため、ぐうの音も出ません。占めて税込み81,000円の見積もり。この際、クラムシェルのディスプレイ側全体を交換ということになったようです。見積書にはこの金額だけが書かれていて、最初の見積もりとの差を考慮して、諸費用はまけてくれたようです。ついでにロジックボードの交換を含めた金額なので、かなり良心的な対応(Retinaディスプレイ全体の価格が8,1000円のようなので)。

さて困りました。そんな金額はどこにもありません。というか、これからかかる様々な費用に備えて積み立てていた3万円しかないわけです。前の金額なら、食費を削って捻出を考えていたんですが、もうだめ。やむなく、財務大臣に土下座して、華麗に無視されたわけですが、2日後にはなんだか5万円が無造作にテーブルに置かれておりました。「これ以上は出ないからあとはなんとかしろ」と理解して、積立全部崩すこと決定。仕事になりませんから。

で、そのままサイトで修理承諾のボタンを押したところ、4月11日(月)にはAppleStoreに届いたとの連絡がありました。動けるのが水曜だけなので、13日に受け取りに行きました.

2度目の修理


受け取りは特にGeniusではなく普通の店員が対応するので、単に倉庫からもってきて、受け取りサインをしたら引っ込もうとするわけですが、「念のため起動の確認させてください」と言って、立ち会いのもと電源を入れてみます。

すると、いきなりこの画面ですよ。
おなじみ(笑)kernel panicの画面
初めて見るので戸惑っていると、「工場のテストのあとこういうことはあるので、続ければいいです」というので、何かキーボードを押すとbootが進みます。で、まあ、それらしい画面になりました。というか、修理に出す前のままの画面でして、Chromeのタブも全部そのまま復元。SSDの消去などは一切しなかったようです。ありがたや。

それで、少し見ていると、まあ大丈夫そうだったので、そのままディスプレイを閉じてスリープしたんですが、なんだか嫌な予感が残りました。マウスカーソルが固まっている気配。

帰宅するとやっぱり固まっているので、電源長押しで電源断、再起動。まあ使えているようです。それで、その日は疲れていたのでそのまま寝落ちして、朝起きたらやっぱり固まっていました。

この際、セルフテストすべきだろうと思って、キーボードの「d」を押しながら起動すると、2つぐらい進んだところで固まります。え。

強制電源断、 再起動して、仕事を始めようとするんですが、ログイン画面の背景の上に、画面左上からだーっと小さな文字でkernel panicのメッセージが流れます。をを! これでこそUNIX。

感動と戸惑いを抱えつつ再起動すると、今度はログイン画面に入る前に、同じく上からkernel panicメッセージ。さすがに心配になったので、もう一度セルフテストにかけると、こんどは「異常なし」できれいに終わります。なんなんだ。

変なkernel moduleでもいるのかな、と、追加で入れたデバイスドライバなどを消してみるも、特に改善しません。というか、だんだんkernel panicの間隔が短くなってきたので、これはOSのクリーンインストールをして、それでもだめならハードウェアの問題、セルフテストは通るけど。と考えて帰宅。自宅でCmd-Rで再起動し、ディスクユーティリティでパーティションを再作成して、ファイルシステムの消去(フォーマット)をしてから、リカバリに入ります。リカバリ領域に入っていたのは購入時のMaveriks。インストールを進めるのですが、しばらくするとkernel panic! 素敵すぎる。単に再起動してみるとどうなるんだろうと思ったら、続きのインストールをはじめます。再びkernel panic! 再起動して、ようやくMavericksが入りました。しばらく触っていて、なんとなく普通に動いているようにみえます。ハードウェアはおかしそうだけれど、まあいいやと思って、El Capitanにアップグレードするも、こちらはkernel panicのメッセージは出ないもののプログレスバー(iOSと同じ感じのやつ)が動かなくなるので、そこで電源断、再起動を2回やったらインストールが終わりました。でも、しばらく触るとすぐにkernel panic(上の図の画面)するので、Safariでメールの用事を少し片付けたところで諦め、翌朝からApple電話サポートに電話。

といっても、セルフテスト通るので、「これは詳細調査させてください」ということで、再びGenius Barを2つ予約。今度は13日(水)の夕方と閉店前の2つ。もう宅配ピックアップでいいと思ったんですが、「いったんお店でみてもらってからのほうが」ということで、こうなったんですが、正解でした。

Genius Barの本領発揮


水曜日の前の日に最終バスを逃してしまい帰れなくなったので翌日そのまま仕事して、早めに上がりたかったけれど業務が終わらないので、自宅にいったんMBPをとりに戻り、そのままAppleStoreに直行。8時過ぎについたので、45分の予約よりはずいぶん早いのですが、iPhone修理の人がいっぱいいるなか、10分ほどで呼び出してくれました。

で、マシンを出すのですが、これといって異常を見せないわけです。こういうときって。

そこで登場したのが、Genius Barにある、ネットワークブートでの診断ツール。例によってEthernetドングルをつないで、[Option]キーで起動すると、ずらりとネットワークブートの地球が並びます。それぞれ名前がついていて、目的に応じた専用ツールがあるようです。「nを押して起動する方法もあるんですよ」とのこと。なんだか、NetBootとよばれる機能があるようですね。詳しい説明がここにありました。NFS使うんですかへえ。

それでハードウェア診断のツールでboot。今度はグラフィカルな表示で、プログレスバーやチェック項目のアイコンが現れては診断結果をアイコンにつけつつ進みます。結局すべてのハードウェアに緑色のチェックマークがついて、OK。

別のツールで見るも、これといった異常がなくて、「少しお待ち下さい」ということで現れたのは、エンジニアリングに最も詳しいと思われるスタッフのお兄さん。同じように診断結果がオールグリーンなのを確認して、普通にSSDから起動しようとするときの、ちょっとしたもたつきを彼は見落としませんでした。

「ログを見てみましょう」といって、コンソールを開くと「SSDのアクセス失敗が大量に出ていますね」という。僕も見ればすぐにそれとわかります。

そう思ってみると、起動時にも、メニューバーがなかなか出なかったりします。

すぐに、最初に対応したスタッフのおねえさんに指示を出します。「ロジックボード交換と、念のためSSDの交換」、診断状況の報告についてもいくつか文言の指示を出します。

それで出てきた見積書が、ロジックボード47,100円を無償、128GB SSD 33,500円を無償、ハードウェア修理の技術費3,300円を無償、合計83,900円を90日保障で無償というもの。前回の修理でロジックボード交換されているのは明らかですが、これだけ割り引いてくれたんだという感慨がありました。最後の修理費とはなにかと思ったら、AppleStore店内でパーツを取り寄せて交換するときの料金とのこと。「修理センター送りでいいんですけど」と言ってみたら、「やることは同じですけど、確かめておきたいので」と。修理センター送りにするとどこが悪いのか確認できないから自分の目でしっかり見たいという、エンジニアの性なんでしょう。「仲間だ」と思ったので、「お願いします」ということで、店舗へのパーツ到着を待って交換したのち、一定の負荷テストをすることに。

しばらく日数がかかると思っていたのですが、昨日、4月19日に修理完了のメールが届いたので、本日(水)に受け取ってきた次第。今度も、店内の一般店員はあまり技術に明るくなさそうでしたが、「前回受け取った時にちゃんと起動しなかったので」と言って、きちんと起動し、しばらく問題がないことを自分で確認しました。そのときに、「こちらでも、一定時間電源を入れて、いくつかアプリを使って正しく動作することを確認していますので」という説明がありました。

というわけで、いま、このエントリを書いている間にTimeMachineバックアップを戻し終わったところ。 ネットワーク共有先のドライブの場合どうするかについて、次のエントリに続きます。

ちなみに、なんだかSSDがめちゃくちゃ早いです。これが単に、リカバリ直後だからなのか、それとも、もしかして、もしかするとMBP Early 2015以後のPCIe 3.0x4のSSDだったりしたら、細かな心遣いに感謝したいわけですが、そればっかりは分解してみないとわからないわけで、ひとまず気にしないことにします。システム情報見たら、STAT/STAT Expressのところで「リンク幅: x2」とあったので気のせいでしたはい。

2016年3月26日土曜日

MacBook Pro Retina 13-inch Mid 2014死亡→3日後に復活(追記:やっぱり死亡 in 2016年4月3日)

 (追記:2016年4月20日)
いったん復活したかに見えたのですが、結局ディスプレイのブラックアウトが発生し、どうにもならなくなりました。以後の顛末は次のエントリで。


3日前、新学期に備えて3Dプリンタの修理をしていて、調整のためUSBケーブルで接続していたところ、椅子で膝にMBPを載せた状態のまま、ふと立ち上がろうとしたら手すりがケーブルを引っ掛けてMBPが2m以上吹き飛び、ケーブルも壊れるという事態が発生しました。

MBPには、AppleStoreサイト限定の「Tech21 13インチ Impact Snap Case for MacBook Pro」を装着していて、これまでも教室への運搬中に落下させるなど、ひどい扱いをしているものの、特に傷が入ることもなく、本体の動作に支障をきたすこともなく使えていたのですが、今回はMicroUSBアダプタをSDスロットに指していて、それが破壊するほどの衝撃だったためか、起動不能状態に陥りました。

こういうときはまずPROMリセットから、ということで、Command+Option+P+Rを押した状態で電源を入れ、いったんはそれで何事もなく再起動したのですが、ほどなく突然ブラックアウトし、そのまま再びPROMリセットしても、SCMCクリアしても、起動音こそすれAppleロゴが現れない、ターゲットディスクモードのため、Tキーを押して起動した状態でThunderbolt接続したMac miniで様子をみても、外付けディスクとしても、「システム情報」にもThuderboltデバイスとして見つからず、お手上げになりました。

最後の頼みでAppleのサポートに電話して、3時間ほどあれこれと対処を探るものの改善せず、「残念ですが修理になります」という結論になりました。

Mac miniはTime Machineバックアップしているのですが、MBPは128GB SSDということもあり、クラウドに必要と思ったものを載せるやりかたでやっていて、作業中のファイルや、メモ的に開きっぱなしにしているブラウザのタブが失われると仕事が分断されるところがあり、修理に出してきれいさっぱりということには強い抵抗がありました。あと、Apple Careを購入していなくて1年保証が切れてしばらく経ったこの時点で修理代を払うこともできない状態で、詰んでいるような気持ちになっていました。

検索すると、内部の掃除だけで復旧できたという話がこのモデルについてもいくつかあり、なんとか底面の星形レンチのねじを外してみたいと強く思うに至りました。

そういうときはiFixitなわけですが、該当ページによれば使う工具は「P5」タイプのドライバとのこと、Amazonでいろいろ見ると、Penta 1.2mmという記述するものと同じようでした。ただ、iFixitの最初の写真は、P5以外にヒンジ部分の2本はP6と書かれており、2種類必要そうであるものの、使う工具の欄はP5ひとつだけということで、よくわかりませんでした。

翌日大須で、こういう特殊ドライバを置いている店をくまなく探してみるものの、工具を多く扱う店の入っている第2アメ横ビルは水曜休み、他の多くの店に置かれていた中華ドライバビットのセットで、P5とP6の両方が入ったものは扱いがありませんでした(あっても、P5のみを含むセットのみ)。

それでAmazonをポチると、通常配送で翌日には届いてしまい、電車賃払う必要があったのかと自問。

さて、それで、iFixitのサイトをみるのですが、さきのリンクの通り、Teardownのページがなく、内部掃除のため部品を外していく明確な手順はわかりませんでした。

それで、まずP5のビットでねじを外していくと、裏蓋のすべてのねじがP5であって、P6に合うものはありませんでした。ということは、大須にあったセットでもよかったわけですが、価格が1500円前後だったので、電車賃を入れてもAmazonのほうが安かった。結果的に。

ひとまず内部が見えたので観察するのですが、ほとんどの部品はねじでしっかり留められており、SSDもビス止めされ、振動などで部品が緩んで起動できなくなるような要素は見当たりませんでした。

そこで、ゴムのなかに接点があるようなコネクタ部分を指でしっかり押さえてみて、外した裏蓋をウエットティッシュで拭いたあと、見えている部分のほこりをさっと拭ったところで、裏蓋が外れたまま電源を入れてみると、意外にもAppleロゴが表示されました。そのまま、リカバリ手順に入ったように見えるのですが、メニューバーはあってAppleメニューがあるので、そこから再起動すると、普通にもとの状態で再起動してきました。

疑心暗鬼のまま、裏蓋を再度ねじどめして、もとの状態に戻して電源を入れると、なぜか完全復旧できた様子で、そのままいまに至ります。

考えてみたら、このマシンは購入翌日になにか致命的な初期不良があって、いったん修理に出していたのでした。そのときはGenius Barで確認して1年保証の範囲で無償修理に出しました。2013年モデルではビデオ関係の問題でApple Care関係なく無償修理対象だったことがあるようで、Mid 2014でも何か不具合が出やすいなにかがあるのかもしれません。

明日はTime Machine用HDDがついたマシンにTime Machineバックアップしておこうと思います。

2015年9月21日月曜日

いわゆるXcodeGhostについて

iPad AirをiOS 9にアップデートしようと久しぶりに電源を入れたら,iCloudやiMessageへのログインを繰り返し要求される事態が発生し,うんざりしておりました。公開初日だったのでAppleがとんでもなく混雑しているのは,iOS 9のダウンロード前の認証に10分ぐらいかかった時点で覚悟したわけですが,iCloudやiMessageの認証失敗もその関係かなと思っていたわけです。

日中のダウンロードを諦めて帰宅後,深夜に自宅で割と(それでもゆっくりと)ダウンロードが進むのを見ているうちに寝落ちしたので,目覚めてからは混雑解消したのか,すっきりとインストール以後は進みました。

インストールの間にもAppleの認証ステップがありますから,通信が混雑しているとインストール途中でプログレスバーがいつまでも動かない,ということが生じますが,それはなかった,ということです。

で,現象が解消して忘れていたのですがそこへXcodeGhostのニュース。各ニュースサイトで話題になっているのでご存知かと思いますが,細かいところまでよくまとまっているのが以下の記事かと思います。

それ以前に一般のニュースで,iCloudのパスワードを入れさせられる場合もある的な記述があり,「ゑ?」と思ったわけです。

ということで,Pangu作のチェッカを入れて確認しました。このへんは脱獄ニュースのTools4Hackさんが詳しい。Panguは脱獄ツールを作成,配布しているところですから当然でして,この界隈の修羅の様相を踏まえて,確からしい内容を選んで丁寧に解説されているのがこのサイトであります。
個人的には脱獄環境でMobile Safariの穴からiOS乗っ取られた過去があるので脱獄はめんどくさいと思ってやめましたが,iOSのセキュリティについては脱獄コミュニティがいちばん詳しく知っていて,Twitterなどでかれらが漏らす話が重要だったりするので,それをうまく掬って記事にしてくださるニュースサイトは見ております。

というわけで,上記記事の手順で,Mobile Safariからアプリをインストールして,開発者証明書プロファイルを「設定」アプリから「信頼」してあげれば動きます。エンタープライズ向け,企業などで社内業務用に開発されたものなど,一般公開されないアプリをインストールして動かす手順を踏む形。

開発者証明書はAppleに申請して,Appleの署名つきのものを取得しないとアプリが動かず,証明書の偽造はまだ確認されていない,できないことになっている,のだったと思うので,このアプリを動かす間だけ「信用」すればよいし,この画面で「信用」すると赤文字で「Appを削除」にかわるわけですが,実行後,ここをタップすれば証明書とアプリの両方が消えます。

結論ですが,わたくしのところでは,コメント欄で話題になっているCamScannerは手持ちはCamScanner+だったおかげか,感染しておりませんでした。というわけで問題なし。AppStore側も感染アプリのBAN(ストアからの削除)を積極的に進めているようなので,今後インストールするアプリに同じ不正コードが含まれている可能性は少ないのかなと思っています。(AppStoreからBANされていても,いまデバイスにインストールされているアプリまで消えるわけではないので,いま動いているiOSデバイスで確認することが大事です)

それで,XcodeGhostの該当コード部分がGitHubに上がって,めきめきスターの数が上がっております。スターは,いわゆる「お気に入り」機能です。ブックマークといってもいい。
たしかに,各種情報をとりまとめ,暗号化して情報収集サイトに送信する様子が見えます。README.mdが中国語なので読みにくいですが,英語に翻訳すればわかりやすい。文法が近いためか中国語から英語への翻訳精度は高いと思います。

Google翻訳の結果:
"XcodeGhost" Source clarification on the so-called "XcodeGhost" of

First of all, I XcodeGhost event to bring confusion apologize. XcodeGhost from my own experiments, without any threatening behavior, as detailed in the source code: https: //github.com/XcodeGhostSource/XcodeGhost

The so-called XcodeGhost is actually hard to force an unexpected iOS developers find: Modify Xcode compiler configuration text file specified code can be loaded, so I wrote the code above annex to try and upload it to your network disk.

All data in the code actually acquired basic app information: application name, application version number, system version number, language, country name, symbol developer, app installation time, device name, device type. In addition, you do not get any other data. Solemn note is required: for selfish reasons, I joined the advertising features in the code, hope can promote their applications (off the source code can be compared to the Annex do check). But in fact, from the beginning to the final shut down the server, I have not used the advertising function. And in 10 days ago, I have taken the initiative off the server and remove all data, but will not have any effect on anyone.
Willing rumors would stop the truth, the so-called "XcodeGhost", used to be a wrong experiment, after just completely dead code only.

It is emphasized that, XcodeGhost App will not affect any use, but does not obtain private data, only a dead piece of code.

Again sincerely apologize, wish you a pleasant weekend

2015年8月17日月曜日

Yosemite 10.10.4とHomebrewのOpenSSH(追記:2015年11月5日)

(追記:2015-11-05 MacPortsの7.1p1対応、Homebrew用の7.1p1向けパッチの存在についてのエントリ書きました)

Mac OS X 10.11 El CapitanのPublic Betaも出てしばらくするのにこういう話で恐縮するわけですが,数日前に半日無駄につぶしたのが残念なので,同じ轍を踏む人がいないよう記しておくことにします。

まずみんなが困っていることが,Mac OS X Yosemite 10.10.4のOpenSSHは6.2p2であり,楕円曲線暗号を用いるECDSA対応がありそう(stringsするとecdsaの語は出てくる)けれど,鍵交換アルゴリズムにECDSA対応が入っていないためHost KeyにECDSAを使ったサイトに接続できないというところでありまして,結局使えない,ということであります。El Capitanは試していないので現状どうなっているのかわかりませんが,Beta 3のユーザがHomebrewしているところをみると,状況はかわっていないのかなと思われるところです(ここの末尾)。

ちなみに,Mac OS Xのsshのありがたいのは,launchdがログイン時に起動するssh-agentがパスフレーズをOSの「キーチェーンアクセス」により自動送信してくれることでありまして,通常ssh-addで明示的にパスフレーズを教えこむような手間を,ログインごとではなく,暗号鍵を作成し,最初に使うとき一回だけで終わらせてくれることにあります。とはいえ,そのコードは本家OpenSSHに反映される様子がなく,MacPortsでメンテナンスされているパッチを使って最新(に近い)OpenSSHを使うということになっておりました。

というわけで,MacPortsを使っている限りは,インストール時に+gsskexを指定することによって,Kerberos 5認証とセットでキーチェーンアクセス対応になるので,ssh-agentが/opt/local/bin以下にあるものを起動するよう,/System/Library/LaunchAgents/org.openbsd.ssh-agent.plist を書き換えて,そのあとログインしなおせばよい,ということでありました。

で,数日前に出た7.0p1に対してMacPortsでは,現状Kerberosはだめということで,キーチェーンアクセス対応パッチも通らない状況であるようです。いずれ誰かが調整してくれるのを待つしかない。

一方,Homebrewは哲学として,OSにあるものを極力使うという方針があり,OpenSSHもhomebrew-dupsをtapしてやらないと入らないようになっておりました。つまり,手順としては(7.0p1対応の現在)

  1. brew tap homebrew/dupes
  2. brew install openssh
以上,ということでして,いっとき存在した「OpenSSL 1.x系にするための--with-brewed-openssl」とか「キーチェーン対応のための--with-keychain-support」などのオプションはすべて外されており,逆に,「LibreSSLを使う--with-libressl」だけが唯一存在するオプションであります。とはいえ,上の手順でopenssl-1.0.2dも同時に入るので,OSの0.9.8zfを使うわけではないようです。

(ちなみにopensslとlibressl混在問題というのがあるらしく,まだ「混ぜるな危険」のようなので,libresslを入れるのは自己責任ということです)

これは要するに,10.10.4のssh使わないならMac OS Xと同等の動きを期待するなということでありまして,一般的なUNIXの流儀で使いなさいね,という判断であります。

かわりに,Funtoo Linux由来らしい,コマンドラインのkeychainというのがssh-agentの面倒をみるらしく,それ使えというコメントがあったり,解説している人もいますが,あんまり幸せになる感じがしませんでした。普通にssh-addしてるほうが安全な気がします。

ただ,Homebrewでキーチェーンアクセス対応しなくちゃやだ,という人は,6.2用に自作Formulaを公開している人もいるので,それをtapしてください。使いかたは,そこのREADME.mdにかかれている通り。入れ替えが終わったら,再起動して数分ほっとくのがよいようです(再起動後,launchdが出すエラーが/var/log/syslogにしばらく出ているけれど,そのうち落ち着くので)。落ち着くとlaunchdがキーチェーン機能つきのssh-agentを自動で起動してくれるようになります。

ただ,README.mdの末尾に書かれているスクリプトはあちこちで孫引きされてますが,全く意味がないので無視してください。

というのは,$(ssh-agent)と変数を参照してますがどこにも定義がないからexecしてもなにも起きないし,shellを落とすときにkillが走るようにtrapつけてますが,ssh-agentはlaunchdが管理しているので,shellには期待している環境変数SSH_AGENT_PIDがありませんから,killしたくても引数が空なのでなにも起きません。実害はないけれど全く無駄な処理が動く分だけ資源の無駄なんではないかと思います。

これに意味があるのはキーチェーンを使わない,つまり自分でssh-agentを立ち上げて,ssh-addで鍵を覚えてもらうときに意味がある記述です。ただ,いつ書かれたものかわからないけれど,いまならもっと簡単に書けます。bash前提にすると,
exec `ssh-agent -s`
function cleanup {
  ssh-agent -k
}
trap cleanup EXIT
が妥当ではないでしょうか。ただこれだとshellの数だけssh-agentが生まれてそれぞれ別のソケットを作るので,ターミナルを複数開くとshellごとにssh-addする形になってうれしくない。それよりは,最初にUNIXソケット決め打ちで-aオプションから指定することにしてそれを共通の環境変数SSH_AGENT_SOCKに持ち,一度起動したら,以後はssh-agentを起動しないほうがいいんではないかと思うところ。複数ユーザがいるなら,ユーザ名をソケット名に入れるのが妥当なんではと思ったり。

GNU screenやtmux使う人で,再接続したときに環境変数失ってssh-agentとお話できないのをごりごりする人がいるようですが,この考え方でスマートに解決できるんではないかとも思いますがどうでしょうか。

2015年6月6日土曜日

Yosemiteに入れてしまったApple Java 6を片付ける方法

Yosemite登場の10.10.0では、なにかと以下のダイアログが出てうるさく、AppleからJava SE 6をダウンロードしてインストールした方もおられると思います。
でも、10.10.3であるいまは、消してしまってもたいてい大丈夫なようです。おさらばしましょう。

Apple Java SE 6を入れた状態は、こうなっているはずです。
$ pkgutil --pkgs |grep -i java
com.apple.pkg.JavaEssentials
com.apple.pkg.JavaForMacOSX107
com.apple.pkg.JavaMDNS
com.apple.pkg.JavaSecurity
com.apple.pkg.JavaTools
ちなみに、Vanillaな(素の)Mac OS X 10.10.3でこれをやると、以下のようになります。
$ pkgutil --pkgs |grep -i java
com.apple.pkg.JavaEssentials
com.apple.pkg.JavaTools
つまり、間の3つを消せばよいということですね。

それで、pkgutilコマンドで削除できればよいのですが、できません。rubyでこのコマンドを書かれた方がいらっしゃるのでありがたく使わせていただくことにします。
$ wget https://raw.githubusercontent.com/niw/profiles/master/bin/rm_pkg_files
$ chmod +x rm_pkg_files
どこか適当にpathの通っているところに置いておくとよいかと思います。

というわけで、消してしまいましょう。ついついbashのfor文を書きたくなりますが、わかりにくくなるのでひとつひとつ順番に。
$ rm_pkg_files com.apple.pkg.JavaForMacOSX107
$ pkgutil --forget com.apple.pkg.JavaForMacOSX107
$ rm_pkg_files com.apple.pkg.JavaMDNS
$ pkgutil --forget com.apple.pkg.JavaMDNS
$ rm_pkg_files com.apple.pkg.JavaSecurity
$ pkgutil --forget com.apple.pkg.JavaSecurity
これでさようなら。pkgutil --forgetで、pkgの一覧から出ないようにするのを忘れないことと、先にforgetしてしまうとrm_pkg_filesは、pkgutil --filesの結果を使うので「消せなくなる」という悲しいことが生じるので、こちらを先に実行するようにしてくださいね。

for文で書くと、どっちがどっちかあまり考えずにワンライナーでやってしまい後悔する(あらためてAppleからダウンロードしてインストールしなおすはめに)ことになりますはい。

2014年10月19日日曜日

YosemiteでMacPortsをコンパイルするにはXcode 6.1を入れる

Yosemiteいいですね。そういえば、6月以後、全くよそごとに手がつかなかったので、WWDCの録画も、iPhone 6などの発表イベントも、先日にイベントも、なにも見ていなかったんですけど、昨夜ようやく通して観まして、それで知ったんですが「Yosemite」は「ヨゥーセミリィ」と発音するんですね。

いや、アメリカは去年3回行って、大陸横断する感じで都合結構な滞在期間だったんですが、ほとんど観光らしきことしてないんで、いわゆる観光地のことは全然知らないんです。逆に庶民とか貧困な人たちの生活感覚みたいなのはすごく身体に入ったというか、普通の観光客や企業の海外滞在なんかでお膳立てされた生活している人よりよっぽどアメリカ人化したかもしれない。その勢いで語ると、Apple本社所在地の「Cupertino」も人によって違うけど、だいたい「クパーティノ」か「キュパーティノ」でして、辞書に載ってる「クパチーノ」はメヒカーノ(メキシコ人、つまりスペイン語)に近いんだと思うわけです。

あ、すみません、枕が長すぎました。でもまだ枕が続くんですがすみません。

そのMac OS X 10.10 Yosemiteなんですけど、9月に突然MacBook Air (mid 2011)のSSDがおかしくなりまして、家人拝み倒してMBPの、SSDが128GBでRetinaであること以外は最低スペックのを急遽購入させていただいたので、偶然空いた(Target Disk Modeでは起動できたので、Thunderbolt経由でマウントして内容を移行したあと、MBA側のパーティション壊して再フォーマットし、Internet Recoveryかけてやったら、一応起動した)MacBook AirがあったのでPublic Betaに参加しつつ、全くフィードバックせず、無事先日の公開となりました。

さてようやく本題です。

実は最終のPublic Betaでは、Chromeの安定版が数分固まることがあるという不具合があったんですが、固まるだけでほっとくと元に戻るので、Googleに報告すべきなのかAppleに報告すべきなのか判然としないまま、まあいいや緊急事態ではないから、という感じでありましたが、さすがに公開版のYosemiteではそんなことはありませんでした。「iOS 8公式魔改造の結果大炎上」(とまでは言ってないけど、先日のプレゼンでTim CookだったかCraigだったか忘れてしまいましたが『feedback』を苦笑交じりに連発する形でいいいわけしてましたね)に乗じて「人柱乙」と半笑いの人たちもおりますが、全く問題ないと思っております。

ただ、App Storeに載って大人気とかでもない限り、普通のサードパーティはしょうがないわけで、MacPortsも数日遅れのYosemite対応でありまして、少なくともいまのところは問題が若干あります。

まず、OSのバージョンが上がると全部コンパイルし直す感じになる(いままでそうでなくて済んだんだけど、最新の2.3.2では強制でそうなる)わけですが、CMakeのコンパイルで止まります。検索するといっぱい出てくるんですが、エラーの内容は、

Mac OS 10.10のSDKがないぞ
なわけです。

えっ、と思って入っているXcodeのバージョンをみると6.0.1で、Mac App Storeの最新もこれなんですが、iOS 8とSwift対応はしているのですが、よくみるとターゲットSDKは10.9、つまりMavericksなのです。

それで検索してみると、どうもXcode 6 betaのどこかで10.10のSDK入りがあったようで、ここからダウンロードしろというわけですが、

Xcode 6.1 available shortly
でありまして、そこに、「latest OS X and iOS SDKs」と添え書きがあって不安になるわけです。

しかし、意を決して「Additional Tools」の「View downloads」を選択すると、トップに「Xcode 6.1」があり、説明にもbetaとかGMとかそういうのはなくって、どうも公式っぽいです。が、Mac App Storeにある最新は6.0.1。

それでも、こちらはupgrade途中で環境が壊れて困っているので、そのままdmgをダウンロードして置き換えて、

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
sudo xcode-select --install
なんかしてあげて、Command Line Toolsも10.10用に設定してあげると、無事コンパイルが進んでいるようです。

というわけで、いま泣いている人は試してみてください。

ちなみに、Xcode 6.1はいま現在、日本語ロケールに対応した表示がありません。メニューその他、表示は全部英語です。だから日本向けには公開されていないのかな、と思います。

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時半ぐらいにはなったんだけれど。

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

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したもので、アプリによっては実際に購入手続きに進んでみないと、すでに購入したかどうかわからないものがある。すでに購入した場合は課金されないだけという、たいへんスリリングなものだ。いったん間違えて、記憶に従って、買っているはずだと思うものを選んで購入手続きを続けていたら、結構な金額を請求されたことがあった。

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

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

2012年12月4日火曜日

iOSの行動追跡回避設定について

結構あちこちで語られているので常識ではないかと思っていたのだが、意外と知られていないようなので、念の為に書いておきます。

iOS 6以後、広告配信のための行動追跡機能がデフォルトでオンとなっています。Appleは以前CarrierID問題など、利用者へのわかりやすい説明をしない形での様々な行動追跡問題を起こしてきましたが、今回もそれの繰り返しです。

GoogleやFacebookが様々な形でデバイスやサイトの利用をデータとして集積し、分析して、建前上は「サービス向上のため」となってはいますが直接的には商売(広告屋に売るなど)に使っていることが批判されますが、Appleも同類です。

まず、「設定」アプリを起動します。
「設定」アプリを起動
「一般」を選択します。
「一般」を選択
次からが、何らかの意図を感じるところなわけですが、Appleらしいといえばそのとおりというしかないわけですが、設定変更項目が、「情報」のところにあります。
なぜか設定は「情報」のなかにある
画面をスクロールしていちばん下から3番目に、「アドバタイズ」という不自然な日本語があります。これを選択します。
いちばん下までスクロールしていくと、ようやく「アドバタイズ」の項目が
すると、またもや不思議な日本語「追跡型広告を制限」があります。

なんだか、制限すると悪いことが起きるような印象を受けますが、追跡されたくない人は制限する設定をすべきなので、これを「オン」に切り替えます。
なんとなく抵抗を感じさせる不思議な説明だがかまわず「オン」に
これで行動追跡停止が設定される
ついでなので、その下にある「Advertising Identifire(広告識別子)をリセット」も押しておきましょうか。たぶん、以前追跡されていたときと別のIDが生成されるのだと思います。
ついでなので、追跡用IDも作りなおしておく
設定はこれだけですが、まだ罠があります。例えば、OSのアップデートなど、何らかの設定を引き継がなければならないような変更を加えるときに、この設定は再び、「オフ」に戻ります。(ただし、今回iOS 6.1 beta2からbeta3へのOTAでは解除されなかった)

もしかすると、他にもiTunesと同期する時とかに外れたりするかもしれませんので油断はできません。再起動したときも怪しいかもしれません。とにかく、隙があればこの設定はすぐに「オフ」になるので、たびたび確認して、「オン」が維持される条件を確定するまで安心できませんが、将来的にその条件が維持されるかどうかも保障できないので、何事かあったときにはすぐにここの設定に戻るようにするのが賢明ではないかと思います。

2012年11月27日火曜日

Saurikが集めている情報

Cydiaには、「Manage Account」という機能があり、Cydia経由で購入した有料アプリやTweak等を、あとからGoogleアカウントもしくはFacebookアカウントを使ってCydiaにログインすることでいつでも「購入済み」としてダウンロード&インストールできるようになっている。

この機能はとても便利だ。同じアカウントからならば、複数のiOSデバイスに、どのバージョンのiOSからでも同じ有料アプリやTweaksを追加の費用なく入れることができるからだ。

もちろんこれは、AppleのApp StoreやGoogle Play、Microsoft Storeなどとも同じで、それぞれのアカウントにアプリがひもづけられ、ひとつ購入すれば同じアカウントで使う限りどのマシンやデバイスにもインストールできる。Cydiaがこれらと違うのは、Apple, Google, Microsoftがそれぞれにアカウントを作らせて、それぞれが独自にアカウント情報とアプリ情報を管理しているけれども、CydiaはGoogleアカウントやFacebookアカウントでログインするので、Cydia用のアカウントは不要ということだ。

少しネットの事情に詳しい人なら、他にもWebサイトで独自のアカウントを作らせずにGoogleやTwitter、Facebookのアカウントなどでログインできるように作っているところが結構あることをご存知だろう。そして、Open IDやOAuthなどといったしくみについてもご存知の識者もおられることだろう。

ここから類推するならば、CydiaのバックエンドであるAmazon AWSサービス側にはアカウント管理のしくみはなく、いわゆる(広い意味での)Open IDで利用者管理を行っていると考えるところだろう。つまり、Cydiaは利用者識別情報とそれに関する購入情報の対応を持っているだけで、それ以外の情報は一切持っていないはずだと。

ところが、あるときGoogleアカウントのダッシュボードで、関連付けられているアプリ及びアクセスされる情報を確かめる必要があったとき(2要素認証を設定すれば必ず目にすることになる)、Cydiaが3つのアクセスをかけていることを知ってしまった。ひとつは、個人のプロフィールなどアカウントへのフルアクセス、次に連絡帳、そしてGMailだ。ここに魚拓を貼ろうと思ってダッシュボードを開いてみたが、いったん2要素認証を外して再設定したのち、一度もCydiaを使っていないため、すべてがクリアされており、魚拓がとれなかった。もしこれを読まれた方で、心当たりのある方は、ご自身のダッシュボードを確かめてみていただきたい。「Googleアカウントに許可された項目」、英語なら「Websites authorized to access the account」となる。

Facebookの場合、僕はFacebookには詳しいプロフィールを入れているため警戒してCydiaには使っていないので、どのようになるかはわからないけれども、おそらく同程度の内容にアクセスしている可能性がなくはない。心当たりがおありの方は、FacebookサイトでCydiaが何にアクセスしているか確かめてみていただきたい。

Saurikが集めた情報を何に使っているのかはわからない。また、それを示唆する調査が行われたという話もきいたことがない。けれども、瞬間風速で世界中から同時に莫大なアクセスがかかってもびくともしないCydiaのことだから、おそらくAmazon EC2で無制限にスケールアウトするような契約になっていても不思議ではない。そして、そのために支払っている費用は膨大な金額だろう。CydiaはWebアクセスするほぼすべてのページに広告が入っているけれども、果たしてその広告収入だけでどこまで費用を賄うことができるのか、あるいはそれ以外の資金が投入されているのか、もちろん誰にもわからない。

もうひとつ、Cydiaで購入したアプリやTweaks等はすべてSaurik名義での請求になる。たとえそれが$0.99のものであっても、数$のものであっても、いったんSaurikの口座を経由して作者に支払いがなされているのは間違いない。実際にファイルが置かれているリポジトリは外部にあることが多いけれども、それでもPayPalからの請求書には必ずSaurikIT, LCCと書かれている。これまで疑問には思わなかったけれども、Cydiaで「購入済み」と表示できるようにするためにはCydiaのバックエンドで購入行為を管理するというのはわかるものの、Saurik名義ですべて請求する必要が絶対にあるかどうかには議論の余地があるように思われなくもない。

Cydiaはapt-getをコマンドラインで行わなくてもよく、登録したリポジトリの更新情報も管理してくれる、よくできたアプリだ。そして、Cydiaそのものが死ぬときはCydiaがデプロイされているAmazonクラウドのリージョンが死んだときだけで、瞬間風速で困ったことになるのは、外部のリポジトリが負荷に耐えられなくなって死ぬとかストールしているときに、更新情報が得られなくてCydiaの画面のなかでタイムアウトするだけだ。Saurikはそのためのバックエンドの改良や維持管理の責任を十分に果たしているとは思う。ただ、それと、ログインに使ったアカウントに対するほぼ無制限のアクセスを登録することとは話が少し違うのではないかと思うのだが、勘違いなのだろうか。

iOSデバイスへの無制限のアクセスを可能にする自由への対価として、個人情報をSaurikに渡すことが妥当かどうかは考えてもよいことだろう。早い話、Cydiaでログインに使うアカウントは普段のGoogleアカウントとは別のものを使えばよいのだが、その場合、もしそれまでに購入した有料アプリやTweaksがあったとしても、それらは(必要ならば)買い直しになる。もしくは、無料のものを取得するためだけに使っているならば(CydiaがiOSのなかを探っているのではない限り)懸念することはないだろう。ただし、Cydiaが動いているということは、Sandbox機能が外されているということだから、任意のアプリがiOSのあらゆる場所をアクセスできるということは考慮すべきとは思う。

iOS 6はTwitterのみならずFacebookとの統合が進み、どこからでもツイートやポストができるし、両方を登録したデバイスでツイートすればFacebookにも勝手にポストされる。

自分のFacebookアカウントで確認してみたところ、TwitterアプリはFacebook上のありとあらゆる個人情報にアクセスするような表示が出た。TwitterアプリはFacebookサイトから削除ができたけれども、Facebook公式アプリはサイトに現れないので、どうなっているかは全くわからない。ただ、Facebookのありとあらゆるところ(設定変更など)が触れなければ欠陥アプリとなるおそれが大だから、すべて許可なのだろう。iOSとFacebookの「深い統合(deep integration)」の意味するところについて、そろそろよく検討してみたほうがいいかもしれない。

2012年11月12日月曜日

問題だったWebKitのバグはiOS 6.0.1で修正されたそうだ

先日やられたWebKitのバグは、きちんとAppleに伝えられ、iOS 6.0.1で対策されたようだ。threatpostが伝えている。

Apple Patches Kernel, Passcode Lock and WebKit Flaws in iOS 6.0.1

https://threatpost.com/en_us/blogs/apple-patches-kernel-passcode-lock-and-webkit-flaws-ios-601-110212

そもそもカーネル内部に入り込める脆弱性があったというのは驚き。kext用に用意してあったOSBundleMachOHeadersというキーでカーネル内部のアドレスを取得でき、そこはADSRしてあっても直接アクセスできるから便利という話のようだ。

Passcode LockとPassbookの関係は各地で既報の通り。デザインの問題と思う。

最後のWebKitの問題で、僕がやられたのはおそらく前者のJavaScriptの配列の扱いに関するものだと思われる。どうやらここに何らかの脆弱性があって、細工したJavaScriptを食べさせれば任意のコードが実行可能だったらしい。

後者はSVGに関するコードに、ダングリングポインタを放置しているところがあるらしく、当然戻り先がおかしくなるのでSVGを含むページをうまく細工して任意のコードを実行させるという話。

とりあえず、すでに攻撃コードが配布されている脅威は対策されたということなのだろう。

ただ、iOS 6.0.1もまだWi-Fiに問題があるような気がしている。6.0は問題外だったが、アンテナ立ってるのに通信しないケースが、まだ6.0.1にも残っている感じがする。そこで、Apple税を払っているので6.1 beta 1にしてみたら、結構いい感じ。iOSに関してはいつものことだが、6.0より軽くなっている感じがする。

いい気になってiPod Touch 4GだけでなくiPad 3までiOS 6.1 beta 1にしたのだが、WOWOWのオンデマンドアプリがiOSバージョンチェックで動かなくなってしまったというオチ。いやはや。

2012年9月25日火曜日

WebKitのセキュリティホールにやられたorz

YahooメールのspamをiPadの「メール」から削除しようとしたら、プレビューが表示されて、以後3分ぐらいに一度、「Macのメールウイルス対策には...comへ」の日本語アラートが数分おきに現れるようになった。iOS4まで標準だったアラートなので、[OK]を押すまで他のことは何もできない。とりあえずこのアラートは、「設定」の「通知」で空白アイコン、無名のエントリを「オフ」設定にすることで出なくすることはできたが、たいへん気分が悪い。

おそらくプレビューでWebKitが呼び出されて、WebKitのセキュリティホールを使って何らかのトロイの木馬が仕込まれたのだと思う。メールを開いたつもりもなく、「編集」で削除しようとしただけでプレビューが出たように記憶するのだが、もしかしたらタップして踏んでしまったのかもしれない。

iOSは5.1.1。6には事情があってまだしていない。

きょうのthreatpostの投稿に、iOS 6にも存在するWebKitのexploitの説明があったので、例によって超訳することで鬱憤を晴らすことにする。なお、WebKitなのでAndroidのChromeでも踏めるらしい。もしかしたら、少し前にMac OSのSafariがアップデートされたがそれに関係があるかもしれない(アラートの文面からしても、Mac OS X Mountain Lionの「通知」でこれを表示させたほうが効果的な気がする)。

(2012年11月12日追記:このexploitとPOCはApple側で認識され、iOS 6.0.1で対策されたようだ。僕は早速アップデートした。事情があって上げられない人とかいるかもしれないが、乗っ取られるのとどっちをとるかよく考えたほうがいいと思う)

原文はこちら:
----

iPhone 5出荷開始、iOS 6でも生きているexploitへの旅についてハッカーが語る

threatpost - Apple
Michael mimoso
2012年9月21日

AppleのiPhone 5を待ちわびて今日まで行列を作って泊まりこんだ数万人と同じ時間、ハッカーたちはすでにそのコアであるiOS 6オペレーティングシステムを配下に置いていた。2人のオランダ人ハッカーたちはAppleの頑丈な防壁をうまくやりすごし、今週アムステルダムで行われたEUSecWest会議で「iPhone 4Sにパッチを当てるハック」に最初に成功したことをプレゼンした。このexploitは、いままさに登場する新しいデバイスについても有効なものだ。

Joost PolとDaan Keuperは数多くの賞賛と、$30,000を、このmobile Pwn2Ownコンテスト(注:Pwnはオンラインゲームでの勝利、Wonをチャットでミスタイプしたことから広まったもの。ここでの勝利はクラック成功を意味していて、Pwn2Ownとは、クラック成功者に商品授与するイベントを指す)勝者にその努力を報うものとして授与された。この2人は、オランダのセキュリティ会社Certified Secure社の研究員で、WebKit、つまりAppleのSafariブラウザの下敷きになっているブラウザエンジンの脆弱性を利用した。3週間の価値ある労働を経て、このペアは携帯からデータを盗み出すことのできる、生きているexploitを見つけ出した。本ブログはPolとKeuperに、どうやって彼らがiPhoneを首尾よくクラックしたのか尋ねてみた。

Threatpost: iPhone 4S(とiOS 6)をターゲットにした動機は?

Pol and Keuper: iPhoneには考えられる最善のセキュリティ機能(例えばASLR - アプリのメモリ割り当て空間をランダムにする, DEP, サンドボックス、コード署名など)を備えていて、なにより僕たちにとって最も興味深いターゲットだったから。iOS 6のリリースについては、WebKitの新しいバージョンが使われていて、以前の脆弱性やexploit経路はふさがれていると思っていたから、おまけでついてきた関心といったところ。

Threatpost: 君たちが発見した「WebKit脆弱性(注:今年8月末の同ブログ記事で、WebKit脆弱性を嘆くコラム)はどの程度深刻で、それをどうやって見つけたのか説明してくれないか。

Pol and Keuper: 脆弱性を発見したのは、WebKitのコードの検査をする過程からだった。脆弱性の程度は極めて深刻で、(若干の罠を仕掛けておけば)任意のコード実行が(Safariのサンドボックス内で)可能だ。僕たちがPwn2Ownで実演したように。これを活用すれば、(例えば)誰かの個人的な写真やアドレス帳やブラウザの履歴に直接アクセスすることができてしまう。

Threatpost: 「WebKitのセキュリティ(注:今年2月にRSAカンファレンスで講演されたAndroid携帯のWebKitが持つゼロデイ脆弱性の悪夢についての記事)の話について、君たちはどんな意見を持っている?

Pol and Keuper: 不完全だと思う。現時点で、僕たちが見つけた脆弱性の詳細について話すことはよいことではないと思うし、WebKitのセキュリティ全般(そして競技のルール全体やその他すべて)についてもそう思う。でも、僕たちがexploitできる脆弱性を3週間以内に見つけられたという点で、この「不完全な」話は極めて強い意味を持つことになったと思う。

Threatpost: 脆弱性を発見してから、君たちはいくばくかのコードを継ぎ合わせて、生きているexploitに仕上げてしまった。それはどんなもので、なぜそんなことをしなければならなかったのか話してくれないか。

Pol and Keuper: 脆弱性があったからといって、それが「直接」コード実行に結びつくことは極めてまれだ。ほとんどのexploitは、コード実行を可能にするために、あなたが言う「追加の作業」がある程度必要なんだ。僕たちのケースでは、iOSの機能であるコード署名(Appleが付与する署名なしではいかなるコードも実行できない機能)に対するワークアラウンドも必要だった。

Threatpost: Appleのコード署名に対して、どんな細工をしたのかな? 難しかった?

Pol and Keuper: 普通、iOSではコード空間のあるページに対して、実行可能か書き込み可能かのどちらかしか許可していない。両方の権限がつくことはありえない。また、対象となるページは実メモリにロードされる前に署名されている必要もある。これはとても厳密な規則で、(注:セキュリティにとって)非常によい働きをする。iOS 4.3以後、Appleはこのポリシーを導入した。

iOS 4.3以後、Appleがそれを決めたのは、Mobile Safariブラウザのパフォーマンス向上のためにJust In Time (JIT)コンパイラを導入したからだった。だから、いまではMobile SafariはページにRWX(注:読み書き実行)をマップできる。この例外はMobile Safariだけのために与えられた(つまり特権を持っている)。僕たちのexploitでは、JITページのロケーションを見つけ出して自作のシェルコードを上書きし、そこへジャンプする。

もしJITページがなかったら、ROP [return-oriented programming]を使って全く同じ結果(つまりコード実行)が得られるようにしてやる。けれど、ROPのペイロードを作るのは実にまったくしんどい作業だ。

どちらも既知のテクニックで、以前にも利用されたことがあるものだ。

Threatpost: そのexploitを働かせるためには、利用者をうまく釣って携帯から悪意あるサイトを観るように仕掛けるの必要があると思うんだけれども、それはどうやるの?

Pol and Keuper: exploitはバックグラウンドで動いて、ひそかに利用者の個人データ(アドレス帳、カメラで撮った写真、ブラウザ履歴など)を携帯から外部のサーバに、攻撃者の指示で送信することになるだろう。

Threatpost: 君たちの仕事では、iPhoneからemailやSMSメッセージを取り出すことはできなかったようだけれど、それはどうして?

Pol and Keuper: Safariのサンドボックス(つまり僕たちのコードが動くところ)からはSMSやemailのデータベースにアクセスできないんだ。

Threatpost: 今回のexploitはiOS 6にもそのまま残っていて、iOS 6でも同じexploitが働くという理解でいいのかな?

Pol and Keuper: 今回の脆弱性はiOS 6にそのまま残っている。exploitに対する一般的なアイディアも同じだ。けれど、iOS 6では少し異なった中間作業が必要になる。

Threatpost: 君たちはexploitを破壊した、ということだけれどそれは本当なの? どうして?

Pol and Keuper: 本当だ。そんなものは、もはや不要だろう? 競技のルールのなかに、脆弱性の説明と簡単なPOC(コンセプトを証明する)プログラムをZDI [TippingPoint's Zero Day Initiative program]へ送る必要があった、それだけのこと。

Threatpost: その詳細はAppleと共有している? やりとりはどんな感じだったの?

Pol and Keuper: 競技の規則の一部に、脆弱性はZDIからAppleに開示されると明示されている。
----

2012年9月7日金曜日

SONY DCR-TRV900 mini DVカメラをiMovieで認識させる

Mini DVで持っていたテープの内容を発掘するために、手持ちのSONY DCR-TRV900をMac mini mid 2011に「Thunderbolt to Firewire Adapter」に接続してみた。

ところが、この機種は昔VAIOでもうまく認識されず、ケーブルを選ぶところがあった。案の定、Macはカメラを認識してくれない。こういうときは検索ということで、Appleのサポートフォーラムがひっかかったが、理由はよくわからないがうまくいったりいかなかったりするようだ。

困ったなと思い、接続したままカメラの電源を入れたり、VTR側に切り替えたり(テープを再生したいのだから、VTR側が正しい)するのだが、どうもうまくいかなかった。

システムの詳細をみても、カメラは見あたらない。

そこで思い立って、VTRでオンにしたままi-Link端子のケーブルを抜いて挿しなおしてみたところ、いきなりiMovieにDVカメラのウインドウが開いた。要するに成功したということ。

何にせよ、理由がわからないのは確か。お困りの方のご参考になればとここに記しておく。

なお、iMovieでの「自動」取り込みは、無録画からはじまるテープではうまくいかないようだ。僕はテープの先頭部分は信用していなかったので、少し送ってから使うようにしていた。この場合は、「手動」で録画されているところの頭まで巻き戻してから、おもむろに「取り込む...」を押すとよいようだ。

2012年9月3日月曜日

Emacs 24.2をMac用にコンパイルする

いままで使ってきたEmacs23、ふと思うところがあり、思い切ってGit Headをもってくることにした。きょうのバージョンは24.2.50だった。

そのまま./automake.sh && ./configure --with-ns && make bootstrap installでもよいのだが、おなじみinlineパッチLion Full Screenパッチをあてることにした。

どちらもEmacs24ではあるが、inlineパッチは24.50、Full Screenパッチは24.1を対象にしたもの。結論からいうと、あまり問題にはならなかった。

先にFull Screenパッチをあてるといいと思う。こちらは行が若干前後するだけで、パッチはきれいにあたる。一方、inlineパッチは、最初がconfigure.inに対するパッチで、これはGit Headには存在しないので、./automake.shしてconfigureを生成してからpatchコマンドを実行することになる。すると最初にファイル名を問われるので、そこで「configure」を入れてやればよい。1つだけrejectが出るが、inlineパッチで追加したmacim.mのオブジェクトを追加するところ。rejファイルを見て、その前にある"nsfont.o"を検索して、そのあとにmacim.oを追記してやればよい。

なお、sourceforgeに置かれているinlineパッチは、インストール時のOSのLocaleを見ているので、英語設定でインストールして、システム環境設定で言語を日本語に切り替えた場合、ことえりなど日本語IMEを見つけてくれない。MacEmacs JPメーリングリストの記事にある、現在選択されているLocaleが日本語なら日本語IMEを探すようにしておくほうがいいかもしれない。

make installまでやると、nextstepディレクトリの下にEmacs.appとして一式揃っているので、/Applicationにでもmvしてやればよいと思う。というか、そうした。

最後にいちばん苦労したのは、.emacsが結構違うということだった。さまざまな議論があちこちにあるけれども、Mac Wikiの説明がいちばん有用だと思う。あまり詳しいコメントはついていないが、Emacs Lispを少々かじっていれば何をやっているかはわかるはず。個人的にはSection 6の、文字の拡大縮小(\C-+,-,0)に対応したフォントの設定がたいへんありがたかった。いままで12ptで、さすがにThunderbolt Displayの27inchには文字が小さかったので、14ptになって助かっている。また、ここのブログエントリでも苦労が明かされているが、「(setq default-input-method "MacOSX")」の行は、画面の各種設定をやった後に置かないとinlineパッチで期待される動き(toggle-input-methodがIMEのオンオフと連動する)をしないようだ。ここはEmacs23までとは大きく違う、おそらくパッチで何らかの手立てが必要と思われる部分と思われるところなので、当面注意しておくことをおすすめする。

(2012年9月7日追記:Emacs23以後はUnicodeのIVSに対応しているような話があったが、どうもこれはLinux上での話のようだ。つまり、--with-nsでCocoaを使った場合とは違うようだ。そこで--with-Xをつけてコンパイルしようとするが、libotfを組み込んでくれない。理由はpkg-infoでまずlibXftを調べ、そのあとpkg-infoでfreetype2の存在を調べてからpkg-infoでlibotfを調べるからのようだった。作ろうとしたのがHomebrewを使っているMacだったので、Xquartzに入っているものは普通にはインストールしない。強引に作るにはconfigureを書き換えることになるが、面倒なのでやめた。)

2012年5月16日水曜日

Mac mini (Mid 2011)で空のSSDからLionをインストールする

Mac mini (A1347)が納品された。これを買うのはThunderbolt DisplayとつながるMacが手持ちのAirしかなかったから、ということなのだがそれはそれとして。

せっかくなので、内蔵ハードディスクはおまけと考えて、SSDメインで使うことを考えた。ただし予算がないので240GB。結局セカンドディスクは必要ということが判明。

箱から出して、電源を入れる前にまず分解(お約束)。検索キーワードで「Mac mini 分解」とか入れればいろいろ丁寧な説明のあるサイトがあるので参照。

それなりの特殊ドライバーセットがあれば、分解はたいしたことはない。しかし、大問題があることに気がついた。

いくらAppleだからといって、特殊なコネクタをわざわざ内部で使うことはないでしょうと高をくくっていたのが大間違い。SATAのコネクタは、マザーボード側は1cm角程度の表面実装コネクタ。
2.5inchドライブとは、特殊なコネクタで接続することになる。今回はHDD 1台のみで発注しているので、内蔵500GB HDDにそれがついている。

サイトによっては、「上位モデルのMac miniでは2台目の増設ができるようにマウンタも入っている」などという記述があったけれども、実はこのMac mini、上位モデルにもかかわらず、そんなものは入っていなかった。

よって、500GB HDDを外して240GBのSSDと置き換えるほか手はない。ただ、まぁ製造元の中国工場からの横流し品かもしれないけれど、増設用マウンタと特殊コネクタのセットは販売されている。IT系ニュースサイトでも記事になっているので検索して確かめていただきたい。国内価格では、4980円。それが秋葉館では6300円。たぶん同じものだろう(途中経路は違うかもしれないけど)から、お好きなほうでどうぞという感じ。
もちろん、正規修理代理店に在庫があればごにょごにょする方法もないわけではないだろうが、きいた話では、「高いよ」とのことだった。なんでも、Appleは正規修理代理店にも部品では卸さず、故障品との交換を証明できなければ品物を出してくれないとのこと。昔、SONYショップからいろいろと保守用部品を取り寄せて自分で交換していたものだが、Appleは世知辛いよのうと思った次第。SONYの偉かったことは、交換部品(故障部分)を必ず添付して返却してくれること。不要ならその場で引取りにも応じてくれるが、自分で故障原因を調べるとか、部品とりに使うとか、コレクションするとか、すりすりするとか自由にしてよいということで、「お客様がご購入されたものはお客様のものです」という商売の基本を示していると感じたものだった。

とりあえず秋葉原まで6300円握りしめて出かけるようなところに住んでいるわけでもないので、そのうちどこかから通販で入手するとして、SSDに換装した状態でふたを閉めた。ただし、オリジナルのHDDとねじ穴が若干ずれていたせいか、ひとつだけどうしても止められないねじがあった。ちなみにSSDは、OCZのAgility 3の240GBモデル。なぜこれかというと単に店に置いてあったものでいちばん安かったから。Appleが新製品を発表すると1時間以内に完全分解写真を提供する名物サイトiFixitが扱っているのは、偶然同じOCZのAgility 3の120GBモデルだった。もしかすると、120GBであればぴったりサイズなのかもしれない。

で、論理フォーマットさえ定かでないSSDからLionをどうやって入れるか。普通の人は、「LionにアップグレードするときのイメージファイルをDVDに焼いた“インストールディスク”があるじゃないか」と考えるだろう。あるいは、Snow LeopardのCDでいったんクリーンインストールしてからMac App StoreでLionにアップグレードする人もいるだろう。僕は前者の考えだったのだが、どうにもインストールできない。
普通なら、「Cを押しながら電源を入れる」という伝統的なやりかたで強制的に光学ディスクからbootさせようとするだろう。ところが、なにもしないで起動しても、フォルダに「?」がついた絵が点滅するのみ。Cを押すと、通行止マークがしばらく出て電源が落ちてしまう。

なお、この状態ではThunderbolt Displayをつないでも電源は入らない。あくまでLionが起動していることが前提のようだ。本体と同梱された「HDMI-DVI変換ドングル」を利用して、DVI端子をもったディスプレイを接続しなければならない。また、念のため、キーボードもマウスもBluetoothではなく、有線のものをつないでおいた。

さて、こういうときにどうやってLionのインストーラを起動するか。ここでようやく、Lionから導入された「Internet Recovery」が活躍する場面になる。ちょいと検索してみたら、ややわかりにくかったが、「Optionキーを押しながら電源を入れる」のだそうだ。そのときの画像が以下のもの。


まずWi-Fiを検索しようとする。ここでWi-Fiスポットに接続してもよいが、有線LANを接続してほっておいても、いずれ右の画面に移る。ここで「↑」をクリックすればインストーラがダウンロードされる。その画面が次のもの。


ネットワークの速度によるだろうが、10分ほどもすると、おなじみMax OS Xのインストール画面になる。

ただし、Lionのインストールに入っても、SSDがMac OS Xの論理フォーマットになっていないので、インストール先のディスクが現れず先に進めなくなる。まず、「ディスクユーティリティ」を選択して、SSD全体をひとつのパーティションに設定しておく(パーティション分割したい人はそれなりに)必要がある。そうすれば、あらためてLionをインストールする段になって、ちゃんとフォーマットしたディスクドライブが現れる。

Internet Recoveryでは、LionもAppleからダウンロードされる。ざっと1時間程度でインストールは完了した。

ここまでくれば、Thunderbolt Displayをつなげばすぐに認識され、電源が入る。あとは「移行アシスタント」などで環境を移すなど、いつもの手順を進めていけばいい。

なお、本日現在の最新はLion 10.7.4のはずだが、Internet Recoveryでは、「ソフトウェア アップデート」を実行してみたところ、AirMacアシスタントとかいくつかのアップデートとともに、10.7.4のアップデートも現れた。雰囲気としては、1週間ぐらい前のイメージだ(なぜか、Safari 5.1.7は現れなかった。あとでもう一度確かめなくてはならない)。

現在「移行アシスタント」実行中なのだが、もとのMac mini (Early 2009)が遅いからだろうか、いまのところ3時間以上の残り時間を表示しつつ、時間は伸びていく一方だ。このまま静観したい(社説の終わり方風)。