2011年4月8日

パノラマ作成アプリAutoStitchを使ってみた

最近、パノラマを撮るために、いくつかiPhoneアプリを試してみた。その中でなかなかよいと思ったのがAutoStitchである。このアプリは撮影時にパノラマを作るのではなく、撮影後に写真を選んでパノラマを作る、というものである。非常にベーシックな機能に特化しており、扱いが簡単だ。パノラマを作りたいと思ったら通常のカメラアプリでバシバシとって、後でゆっくりAutoStitchを使って写真を選んでつなげるだけである。

AutoStitchを立ち上げると写真アルバムの中から写真を選択する画面になる。
そこで、パノラマを構成する写真を選択する。


写真を選択したら「貼付け」を選べば、後はAutoStitchがせっせとつなげてパノラマ画像を作ってくれる。
パノラマ画像ができたら正方形に切り取ってカメラロールに保存するだけである。ちなみにこのクロップ作業も気が利いていて、クロップボタンをタップするだけで、自動的に適切な範囲が選択される。もちろんこの範囲は自分で調整可能だ。ちなみにフォトアルバムに保存する以外にEメール送信とFacebookへの投稿オプションも用意されている。
以下は京都の清水寺に行ったときに撮影した写真をパノラマにした画像。

以下は嵐山の竹林を縦方向でパノラマにしたもの以下はリビングをパノラマにしたもの。近距離での背景では画像がゆがみ、パノラマには向かない。これはどのアプリでも同じ。



iPhoneのパーソナルホットスポットでテザリング速度測定

ここオーストラリアではインターネット接続スピードが日本に比べて格段に悪い。YouTubeを観ていてもたびたび中断される。またネットワークコストも高く、一定のデータ量制限がかけられている(一定上は従量課金となる)
当然、iPhoneでのデータ通信も無制限定額ではなく、私の場合は2GB上限でそれ以上は1MbあたりA$0.25の従量課金となる。(自宅の回線は20GBまでで、それ以上は接続速度が64kbpsに制限されてしまう。)

このようなネット事情のオーストラリアでテザリングができてもあまりうれしくなく、使えないよりは使えたほうがいい程度である。このiPhone 4.3.1のパーソナルホットスポットでEeePC S101をネットにつなげて接続速度の測定をしたのでここに掲載しておく。測定はWiFi, Bluetooth、そしてUSBケーブル接続の場合と比較した。結果は以下。
測定はCNETのInternet Speed Testを使用した。
wifi, bluetooth, cable(USB接続)のリンク速度はそれぞれ54Mbps, 2Mbps, 1Mbpsである。これに応じて速度もある程度制限されるが、おおよそ1Mbps程度である。上記の測定では3回の測定とその平均だが、たとえばwifiのときでも500kbpsしか出ない場合や、USB接続でも(なぜか)1300kbps以上出た場合もある。自宅の無線LAN環境では同じテストで9Mbp程度は出ている。wifi接続はわりと速いのでたとえばkeyholetv程度のストリーミングではまったく問題なかった。

iOS 4.3.1で紐なしJailbreak

iOS 4.3.1となり、最近ではそのJailbreakも「紐なし(untethered)」でできるようになっている。しかも数クリックで簡単に。iOS4.2以降、Jailbreakは大きくに2種類に分かれる。"tethered(紐付き)"と"untethered(紐なし)"である。tethered JailbreakではJailbreakはできているが、iPhoneの電源ON/OFFもしくはreboot(再起動)のたびに、特殊なソフトウェアを使わないとiPhone自体が立ち上がらない(もしくはJailbreakの状態で起動できない)。これはたとえば出先でiPhoneの電源をOffにしなければならない(あまりこのような状況はないかもしれないが)、もしくはバッテリーが切れて気づいたらOffになっていた、という場合には致命的である。いちいちPCにつなげ、特殊なソフトを使ってiPhoneをONにしなければならないからだ。実際、私も海外に旅行に行ったときに不用意に電源をOffにしてしまい、えらく苦労したことがある。
しかし、今私のiPhoneはuntethered Jailbreakされている。これはつまり、iPhoneの起動に際して特殊なソフトウェアを必要としないことを意味する。だれがネーミングしたかよくわからないが、非常にいい表現である。tetheredでは脱獄できるが、足枷がついている、ということである。そしてredsn0w 0.9.6rc11では最新のiOS 4.3.1 (一部機種を除く)をuntetheredの状態でJailbreakができる。

そしてiOS 4.3.1になった今、なぜJailbreakが必要なのか。私の理由は以下である:
  1. お気に入りのJailbreakアプリが多数ある。たとえば、YourTube (YouTubeの動画をダウンロードして、iPhoneに保存できる)、Browser Changer(iPhoneのデフォルトブラウザを変更できる)、TruPrint(iPhone 4.2以降で追加されたAirPrint機能を使ってHP以外のプリンタでも印刷できる)、i-KeyholeTV (KeyholeTVをiPhoneで観れる)、などなど枚挙に暇がない。
  2. App Storeの多数のアプリを試用してみることができる。多くのApp Storeのアプリは"Light版"と称して、有料アプリの無償版が提供されていることも多いが、Light版の提供されていないものも多い。こういうときにInstallousを使ってダウンロードすれば、購入前にアプリを試してみることができる。
昔はテザリング目的にJailbreakすることが多かったが、いまやホットスポット機能があり、今の私にはJailbreakの目的のひとつではなくなった。今はTruPrintがメインの目的かもしれない。(以前、iPhone 4.2.1のAirPrintをブラザーのプリンタでダイレクト印刷をしようと試みたが、今やTruPrintでいとも簡単に実現できる)

2011年2月27日

AirPrintでBrother Printerへダイレクト印刷

結論から言うと、プリンタ側のファームでURFをサポートしていないと印刷はできないようだ。残念!PC経由で印刷できるのは、URFをPDFへ変換して、これを印刷しているためだろう。。。

2010年12月19日

素数について

すべての素数は2と3の足し算および掛け算のみで表現できる。これって発見かな?

2010年11月29日

(調査中)iPhone 4.2.1のAirPrintをブラザーのプリンタでダイレクト印刷

やっぱり、自分の持っているプリンタでAirPrintしたい。それもPCを介さずに、ダイレクトに。
幸いなことに私の持っているプリンタはBonjour (mDNS)対応のプリンタであり、なんとかAirPrintできそうだ。

ネットで探せば、あるソフトを使うとAirPrintでプリンタ共有されているPCを介して印刷できる。まあこれだけでも大きな進歩だが、やはりiPhoneから直接プリンタへ出力したい。その方法を丸1日調査したところ少し光が見えてきた。といっても(まだ)正直言って成功していない。後一歩なので今後いろいろ調べて印刷できるようにしたい。



さて、私の持っているBrother MFC-9840CDWだが、これはAirPrint対応でなく、プリントしようとしてもiPhoneからプリンタが見つからない。4.2.1へアップグレードした(対応プリンタを持っていない)誰もがこれに遭遇するだろう。これはAirPrintがmDNSサービスレコードに一定の条件で問い合わせているためである。この条件は以下の2つである。
  1. subtypeが_universalであること
  2. TXTレコードにURFのキーがあり、かつEmptyでないこと
多くのBonjour対応プリンタは上記の対応をしていないためプリンタの検出がされないと思われる。
ここで実験であるが、WindowsやMacにはmDNSへサービスを登録するコマンドが存在する。
"dns-sd" コマンドである。このコマンドを使えばmDNSへ自由にサービスが登録できるので、プリンタのために私が手作業で登録してやることができる。以下のように-Pオプションを使用してコマンドを実行する:

dns-sd -P 名前 _ipp._tcp,_universal "" ポート ホスト名.local IPアドレス TXTレコード
(斜体には実際の値が入る)

名前:何でもいいでしょう。好きな名前を入れる。
ポート:これは通常631。Internet Printing ProtocolのWell-knownポートである。
ホスト名:これはプリンタのネットワーク登録名である。
IPアドレス:プリンタのIPアドレス。
TXTレコード:これはプリンタに依存するものが含まれる。たとえばこんな感じ
txtvers=1 priority=50 pdl=application/vnd.hp-PCL, type="Brother MFC-9840CDW" Color=T qtotal=1 ... URF=W8,SRGB24,DM1,CP255,RS600

dns-sd -P "Brother Printer" _ipp._tcp,_universal "" 631 BRDBB.local 192.168.0.22 txtvers=1 pdl=application/vnd.hp-PCL type="Brother" Color=T qtotal=1 URF=W8,SRGB24

さて上記で、気をつけるのが _ipp._tcp,_universal とサブタイプをつけていること、TXTレコードにURFを含めることである。URFについてはよくわからないがラスターフォーマット指定であろうか。
これでmDNSで登録してやれば少なくともiPhoneのAirPrint機能でプリンタを見つけてくれる。

しかし、残念なことにこれでもまだiPhoneから印刷が成功しない。プリントを実行すると一見プリント処理はされたかのようにふるまうが、実際にデータがプリンタまで届いていない。どうもiPhone側では送信のリトライをし続けているように見えるが、ネットワークへ送り出してもいない。ためしにポートを9100(PDL Datastream)へ変えてみるとプリンタへデータは送付され、文字化けしたものが印刷される。
なぜIPPポートでデータが送信できないのかがまだわからない。
ちなみに、ePrintでは手作業で登録したサービスでまったく問題なく印刷ができ、本体情報(トナー残量等)も取得できている。つまり、AirPrintにはまだTrickyな仕掛けがあるに違いない。

まだまだ先は長そうだ。

2010年11月27日

JailbreakしたiPhone 4.2.1でAppleマークが出た画面で止まってしまう

iPhone 4/iOS 4.2.1でJailbreakとCydiaインストールの最後でも少し注意書きをしておいたが、現在のところRedSn0w 0.9.6b3でJailbreakしたiPhone 4.2.1は通常の電源ON/OFF、リブート操作ではAppleマークが出た画面でとまってしまい、起動が完了しない。もしこうなってしまったら再びRedSn0wを用いないと起動できない。電源を切った後再び起動させるには以下の手順を踏めばよい。
  1. ロゴマークで固まっている状態で、iPhoneをPCと接続する。
  2. RedSn0w 0.9.6b3を立ち上げ、ipsw選択後、「Just boot tethered right now」を選択
  3. DFUモードにするインストラクションのところで、2.からはじめる。
    つまり、電源ボタンとホームボタンを同時に10秒ホールドする。その後、電源ボタンを離し、ホームボタンを引き続き15秒間ホールドする。
  4. ホームボタンをホールドしているときにRedSn0wのGUI画面が遷移するが、気にせずにホームボタンを押し続けている必要がある。
上記手順を経るとiPhoneは無事に起動する。
つまり、現状、4.2.1をJailbreakすると、電源OFFもしくはリブートのたびにRedSn0w(と4.2.1のipsw)が必要になる。飛行機に乗るとき等RedSn0wの環境にアクセスできることを確認してから電源を切ろう。