2010年7月29日木曜日

iPhone テザリング事情

噂の HandyLight を買うことができました。この機会にテザリング機能について調べたので、まとめておきます。

iOS 標準機能のテザリング

(日本ではキャリアの都合で使えませんが) まずは iOS が標準で提供しているテザリングです。以下の情報は、実際に確認できていないので、理論的にはこうだ、というものになります。

  • 3G 回線を Bluetooth PAN でブリッジ (複数クライアント共有可)
  • 3G 回線を USB 接続でブリッジ

Bluetooth の速度は 1Mbps なので、これ以上の速度は出ません。PAN (Personal Area Network) を構成するので、複数の Mac/PC を接続することができます。また iPad は Bluetooth PAN には対応していないようですので、将来的にテザリングが解禁されても、iPad から iPhone のテザリングを利用することはできません。

USB で接続した場合は、もっと速度が出ますが、複数の Mac/PC を接続することはできません。有線での接続になるので、煩わしいかもしれません。Mac 本体のハイパワー USB ポート※に直接接続していない場合、充電しながらの利用はできないかもしれません。

ハイパワー USB ポートはデバイスからの要求により +5V 1100mA を供給できる。最近の Mac および Cinema Display に搭載されている。

Wi-Fi でのブリッジは対応していないようです。他のスマートフォンでもそうですが、Wi-Fi と 3G 回線を同時に使用すると、バッテリーの消費量が大きくなります。Touch Diamond S21HT では、AC アダプタで接続していてもバッテリーの残量が減っていくという、ひどい有様です。Apple はこうした事態を嫌って Wi-Fi ブリッジを避けたのかもしれません。

そういえば、iPhone の脱獄は合法という判断が出ましたが、目的が勝手アプリを起動するためであれば OK で、テザリングを有効にするために脱獄するのは今でもグレーなのでしょうか…。

NetShare、HandyLight、iProxy

NetShare は老舗のテザリングアプリ、HandyLight は懐中電灯アプリに偽装したテザリングアプリです。この 2つは App Store で配布されたものです。iProxy はいわゆる勝手アプリです。

この 3つに共通するのは、いずれも SOCKS サーバを立ち上げているということです。実装が簡単なのでしょうか?  Wi-Fi での接続が別途必要ですが、Mac/PC からは iPhone 上のSOCKS プロキシを経由するように指定すれば使えます。複数の Mac/PC を接続することができます。通信速度は使用する Wi-Fi 接続の速度に依存しますが、3G回線より遅くてボトルネックになるということはないでしょう。

当然ですが、アプリが起動していないといけないので、その間、iPhone は使えないことになります。また、バッテリーの消費も気になります。私の Touch Diamond S21HT はテザリングしまくっていたら、バッテリが半年でだめになりました。充電していても残量が減っていくというのはバッテリに相当負荷をかけるのでしょう。運良く HandyLight が手に入った方でも、テザリングをしていると同じような目に遭うかもしれません。自己責任でご利用ください。

私はバッテリへの負荷がとても気になっています。私は HandyLight をインストールして接続できることを試しただけで、それ以来使っていません…。

2010年7月22日木曜日

ユースケース: iPad でプレゼンをしてみる

iPad で 1時間程度のプレゼン (講義) をしてみました。

準備編

Mac 上の Keynote でスライドを作成します。iPad の Keynote には色々制約があります。iPad の Keynote に読み込んだときに、あれやこれや警告が出ます。いくつか気になった点や Tips などを列挙します。

  • フォントは限られたものしか使えません。日本語フォントはヒラギノ角ゴProN-W3とW6がある※ので、とりあえず十分です。英語フォントは、Mac OS X で広く使われている Lucida Grande が使えません (コピペすると大抵このフォントになっている) 。Courier New 、Helvetica 、Times New Roman は使えるので、通常の用途には十分です。
  • グループ化図形がサポートされていません。つまり、グループ化した図形に対してトランジションが設定できません。代替の方法としては、スライドのページをコピーして、ページ単位のトランジションを設定するという方法があります。
  • 表のセルの結合や塗りつぶしが無効になってしまいます。これでは表が役に立ちません。この点は早急に改良してほしいです。
  • ベクトル画像は Adobe Illustrator で作成した PDF ファイルをスライドに貼り付けています。ビットマップ画像は PNG にして貼り付ければ表示されます。

新規に作成するスライドは、上記のような点に注意しておけばよいのですが、既存のスライドを読み込むと、画像が表示されなかったりして、調整が必要になります。

※ Mac OS X 10.5 から導入された。それ以前の (Nが付いていない) ヒラギノ角ゴPro-W3とW6ではないので注意。
※ バージョンアップにより、現在は改善している箇所については取り消し線を入れています。

プレゼン編

プロジェクターに iPad をつないで、Keynote を起動してスライドの再生を始めます。プロジェクターにはスライドが表示されていますが、手元の iPad の画面には簡単な UI が表示されているだけです。iPad の画面にもスライドを表示してほしいのですが、難しいのでしょうか。

再生中に iPad の画面を長めにタッチしていると、プロジェクターにレーザーポインタっぽいカーソルが表示されます。iPad の画面にはスライドが表示されていないので「大体この辺」という感じでタッチします。ですが、iPad を机などに置いたままでこの操作を行うのは難しいという印象を受けています。仕方なく、iPad を左手に持ち、右手で「この辺」とタッチすると案外うまくいくのですが、プレゼン中 iPad をずっと抱えているのは、かなり疲れます。

iPad を使った標準的なプレゼンスタイルは、まだまだ試行錯誤の段階なので、他の皆様がどのようにされているのか、とても興味があります。

2010年7月17日土曜日

ATOK の辞書を RAM ディスクに置く

ATOK 2010 が発売されました。ATOK 2009 と Mac OS X 10.6 の組み合わせで発生していた、ATOK で入力した文字がテキストの最後尾に追加する形でしか入力できない、という致命的なバグが解消され、再び快適な環境が帰ってきました。

それと前後して、MacBook Air の SSD が老朽化したようで、プチフリーズが発生し、文字入力中 (ATOK の学習辞書書き換え中?) に数秒程度待たされるという、見過ごせないパフォーマンス劣化が継続的に発生していました。S.M.A.R.T. 値は以下の通りで、そんなに悪くはないのですが…。(2010-08-09 追記) ATOK は無実です。

ATTRIBUTE_NAME          VALUE WORST THRESH TYPE
Used_Rsvd_Blk_Cnt_Chip  088   088   011    Pre-fail
Used_Rsvd_Blk_Cnt_Tot   098   098   010    Pre-fail
Unused_Rsvd_Blk_Cnt_Tot 098   098   010    Pre-fail

Mac OS X には RAM ディスクの機能があります。学習情報や登録単語情報が頻繁に更新されますので、これを RAM ディスクに移すことにします。私の場合 ATOK 2010 のユーザ辞書もろもろ (~/Library/Preferences/ATOK23/) で 2MB 程度です。

RAM ディスクを作成し、ATOK のユーザ辞書を RAM ディスクにコピーし、動作中の ATOK を強制終了するスクリプトは、以下の通りです。

#!/bin/sh

# Parameters
SIZE=4194304
MOUNTPOINT=/Volumes/ramdisk
ATOK=ATOK23.app/Contents/MacOS/ATOK23

# Initialize a RAM disk
NUMOFSECTOR=`expr $SIZE / 512`
RAMDISK=`hdid -nomount ram://$NUMOFSECTOR`
newfs_hfs -v ramdisk $RAMDISK
mkdir -p $MOUNTPOINT
mount -t hfs $RAMDISK $MOUNTPOINT

# Copy contents to the RAM disk
cp -R $HOME/Library/Preferences/ATOK23 $MOUNTPOINT

# Kick ATOK
kill `ps -ef | grep ${ATOK} | grep -v grep | awk '{ print $2; }'`

このスクリプトを、システムを起動する度に実行します。Automator を起動し、アプリケーションとしてワークフローを作成し、ログイン項目に登録しておけば OK です。本来の順番としては、RAM ディスクを作成 → 初期化 → 辞書をコピー → ATOK 起動にしないといけないのですが、私の環境では FileVault を使っているなど、諸々の事情で起動順序をうまく制御することができません。ATOK を強制終了するというのは、あまり気持ちよくないのですが、ATOK 起動後にしかこれ以外の方法がないのが現状です。

Mac OS X の RAM ディスクはうまくできていて、4MB の容量を指定して初期化しても、実際にファイルをコピーして使用した分だけメモリを確保します。ですので、容量をどうするか試行錯誤しなくても、若干大きめに設定しておけば大丈夫です。

あとは、ATOK の環境設定で、RAM ディスクのユーザ辞書データを参照するように設定します。

“ATOK省入力学習データ” も時々更新されますので、これも RAM ディスクのファイルを参照するようにしたいのですが、設定する GUI がありません。仕方がないので、設定ファイルを直接いじります。現在使用中の設定ファイル (私の場合は “環境移行設定 (ATOK 2009)” でした) をテキストエディタでで開き、“ATOK省入力学習データ” を検索し、以下のように変更します。

<key>ユーザーデータ</key>
<dict>
  <key>パス種別</key>
  <integer>1</integer>
  <key>辞書ファイル名</key>
  <string>/Volumes/ramdisk/ATOK23/ATOK省入力学習データ</string>
</dict>

同様に、“ATOK再変換ユーザー辞書”も RAM ディスクのファイルを参照するようにしたいのですが、こちらは設定箇所がわかりません。どうしたらよいのでしょうか?

RAM ディスクなので、電源を切ると内容が消えてしまいます。辞書のデータをどうバックアップするかは、今後の課題です。