iPhone/iPod touchをお風呂で使う

iPhoneやiPod touchをお風呂でも使いたいと思い、iPhoneでも使えそうな防水スピーカーを探してみると、TWINBIRD AV-J122Wリラックオン SK-SPK01Pといった製品が見つかりました。

Twinbird_avj122w Sknet_skspk01p

しかしながら、これらの製品だとiPhoneをとても大きな防水ケースに入れて操作しなければいけないため、あまりスマートではありません。iPhoneやiPod touchはなるべくその筐体にフィットした小さな防水ケースに入れ、防水スピーカは外付けで繋ぐ方式のものはないかと探してみたところ、とてもよいソリューションを見つけました。

ステレオBluetoothスピーカー(SBS-BTSKT01/WH)は、BluetoothのA2DPで接続でき、防滴仕様のステレオスピーカです。現状iPhoneもiPod touchもA2DPには対応していませんが、サンワサプライのBluetoothアダプタを使用すれば、iPhone/iPod touchと接続できるはずです。後は、Bluetoothアダプタをつけた状態のiPhoneが入る適当な防水ポーチを見つければ、お風呂の中でも快適に音楽やインターネットを楽しめます。

今回、私が試した「お風呂でiPhone」に必要なものは以下の通りです。

  • iPhoneまたはiPod touch
  • ステレオBluetoothスピーカー (SBS-BTSKT01/WH)
  • A2DP対応のBluetoothアダプタ (サンワサプライ MM-BTAD10BK)
  • BTアダプタをつけたiPhoneまたはiPod touchが入る防水ポーチ (約7cm x 14cm)
Touch_in_the_bath

iPod touchの防水ポーチには、アクアトーク スライドを使用しました。実際にiPod touchを入れてみると、高さ方向はちょっと余裕がありすぎますが、幅はちょうど良い感じです。また、防水ポーチに入れた状態でのiPod touchの操作も問題ありません。

Touch_w_aquatalk

BluetoothスピーカSBS-BTSKT01のパスコードは0000に固定ですが、サンワサプライのBTアダプタは0000, 1234, 8888に対応しており、ペアリング時にこれらのパスコードを順番にチャレンジしてくれるため、SBS-BTSKT01とも問題なく繋がります。

実際に使用するときの手順は簡単で、先にBluetoothスピーカSBS-BTSKT01の電源を入れるとペアリング開始モードになるため、iPod touch側でどれかの音楽の再生を開始させれば、BTアダプタがペアリングを成功させ、その後スピーカから音楽が流れ始めます。

BluetoothスピーカSBS-BTSKT01の音質は決してよいとは言えませんが、密閉された浴室の適度にエコーがかかる環境では、それほど悪くないと思います。また、SBS-BTSKT01は思ったより筐体が小さいため、浴室内での置き場所にも困りませんし、ビーチで音楽を聞くのにも適しています。

Sbsbtskt01

理想を言えば、やはりiPhone/iPod touch本体がA2DP対応して、iPhone/iPod touchにぴったりフィットする防水ケースがあればよりスマートになります。しかし、現時点でのこのソリューションでもかなり満足で、妻にもとても気に入ってもらえました。

| | コメント (1) | トラックバック (0)

jailbreak時にrsyncでホームディレクトリを復元する

iPhone Dev TeamのPwnage Tool(Windows向けには、firmware 2.0.2にも対応したQuickPwnも出ている)のおかげで、iPhone 3Gに移行した後も無事にjailbreakできています。やはり、純正AppStoreのアプリだけでは満足できないため、今後もjailbreakは必須になりそうです。

しかしながら、jailbreak環境のファームウェア・アップデート作業後は、必ずホームディレクトリが初期状態に戻ってしまうため、以前の環境を復元するのは面倒です。音楽やカレンダ、アドレスブック、AppStore経由のアプリはiTunesとの再同期で以前の環境を復元できますが、それ以外のホームディレクトリのデータ(~/.bashrcや独自にコピーしたファイル)はiTunesでは復元されないため、別途バックアップ/リストアを行う必要があります。

バックアップ/リストアのツールと言えば、やはりrsyncが柔軟で信頼できる代表的なツールであることから、iPod touch/iPhone用のバックアップスクリプトを作成してみました。

バックアップ先はsshログイン可能なPCあるいはMacを前提とします。また、iPod touch/iPhoneはjailbreak済みであり、Cydiaを使ってOpenSSHとrsyncがインストール済みであるとします。

rsyncコマンドは、バックアップ先とiPod touch/iPhoneのどちらで実行しても構いませんが、ここではiPod touch/iPhone上でrsyncコマンドを実行することにします。以下のスクリプトは、iPod touch/iPhoneのホームディレクトリ/var/mobileをPCあるいはMacの~/Backup/iPhone/mobileにバックアップするためのものです。

#!/bin/sh
# backup.sh
rsync -a -E --delete --progress \
--exclude="mobile/Applications" \
--exclude="mobile/Library" \
--exclude="mobile/Media/iTunes_Control*" \
--exclude="mobile/Media/ApplicationArchives" \
--exclude="mobile/Media/DCIM" \
--exclude="mobile/Media/Downloads" \
--exclude="mobile/Media/Photos" \
--exclude="mobile/Media/Purchases" \
--exclude="mobile/Media/com.apple*" \
/private/var/mobile <user>@<backup-host>:~/Backup/iPhone

基本的に、iTunesで復元可能な~/Applications、~/Library、および~/Media内のApple管理対象ディレクトリはバックアップの対象から外しました。

jailbreak後にリストアする場合は、以下のスクリプトを使用します。安全のためリストア時には--deleteオプションを外しています。

#!/bin/sh
# restore.sh
rsync -a -E --progress \
--exclude="mobile/Applications" \
--exclude="mobile/Library" \
--exclude="mobile/Media/iTunes_Control*" \
--exclude="mobile/Media/ApplicationArchives" \
--exclude="mobile/Media/DCIM" \
--exclude="mobile/Media/Downloads" \
--exclude="mobile/Media/Photos" \
--exclude="mobile/Media/Purchases" \
--exclude="mobile/Media/com.apple*" \
<user>@<backup-host>:~/Backup/iPhone/mobile /private/var

なお、スクリプト中のbackup-hostはバックアップ先PCまたはMacのホスト名(またはIPアドレス)に、userはPCまたはMacのアカウント名に置き換えてください。

| | コメント (0) | トラックバック (0)

Sun Microsystems、iPhone SDK公開を受けてiPhone向けJava MEの開発を表明

Sun MicrosystemsはiPhone SDKの公開を受けて、iPhone向けJavaプラットフォームを開発することを明らかにしました。

これが実現されるならば、Java開発者にとってはとても嬉しいニュースです。しかしながら、Java on the iPhoneに関しては2つの観点で心配な点があります。

まず1点目は、前のエントリで書いたように、VMやスクリプト言語環境のランタイムとそのランタイムを前提とするアプリケーションの両方がサードパーティソフトウェアであるという構成を、iPhone OSがサポートするかどうかが現時点で不透明であるということです。Javaランタイム環境がiPhone OS 2.0に予め含まれる構成になるのであればおそらく問題はないのでしょうが、現時点ではAppleはiPhoneにJavaを載せることに関してはあまり積極的ではありません。LeopardのXcode 3.0でCocoa Javaプロジェクトがサポートされなくなったことからも、AppleがJavaの採用に積極的でなくなったことが分かります。

2点目は、iPhone OSのユーザインタフェース(Core touch)はJava MEの標準APIでだけではサポートしきれないということです。これはJava SEを採用するとしても同様です。iPhoneアプリケーションの魅力は、Multi-Touchイベント/コントロールと加速度センサ(Accelerometer)が利用できることによるものが大きいです。これらのAPIやiPhone独特のUIがJava APIで利用できないのであれば、iPhone開発者が開発言語として積極的にJavaを採用する理由がありません。おそらく、これらiPhoneの独自機能を利用できる拡張APIをJava MEに追加することになるのだろうと思います。

いずれにしてもiPhone OS 2.0を取り巻く各社の動向には暫く目が離せません。

| | コメント (0) | トラックバック (0)

iPhone SDK β公開とアプリケーション配布の今後

もうご覧になった方も多いと思いますが、3月6日にiPhoneソフトウェアのロードマップが発表され、そのプレスイベントのビデオが公開されています。

iPhoneソフトウェアは6月にバージョン2.0となる予定で、エンタープライズ向けに以下の広範囲な機能追加が行われることになっています。

  • Push email/calendar/contacts (MS ActiveSync)
  • Global address list
  • Cisco IPsec VPN
  • Certificates and Identities
  • WPA2/802.1x
  • Enforced security policies
  • Device configuration
  • Remote wipe

また、同時にデベロッパー向けに公開されたiPhone SDKのβ版では、Core OS/Core Services/Media/Core Touchの全てのレイヤのAPIのドキュメントおよびサンプルコードが公開されています(上記、2.0の仕様は非公開)。

アプリケーションの配布については、予想通りiTunes Storeの音楽配信と同様にAppleが管理するApp Storeからの配信によるインストールのみが許されることになりました。このアプリケーション配信サービスを利用するデベロッパーはアプリケーションの有償無償に関わらず、$99のiPhone Developer Program(または$299のEnterprise Program)に加入しなければなりません。

ここで気になるのは、App Store開始後のjailbreakを前提とした従来のパッケージマネージャであるapp tapp InstallerCydiaの将来です。Appleは登録依頼のあったアプリケーションの登録を拒否することもできるため、InstallerやCydiaのようなAppleのコントロール下にできない二次配布を行うソフトウェアのApp Storeへの登録を拒否するかもしれません。また、仮にこれら二次配布を行うソフトウェアが許可されたとしても、ルートディレクトリ配下にインストールされることを前提としたアプリケーションはインストールできない可能性が高くなります。アプリケーションのインストール先はディレクトリ~mobile/Applications/配下に限定されることになるでしょう。JavaやRubyなどのサードパーティのラインタイムとそのランタイムを前提としたサードパーティのアプリケーションという構成や、実行にルート権限を必要とするsshdなどのデーモン型のアプリケーションをiPhone OS 2.0配下で実現可能かは現在のところ不透明です。

App Storeによるサードパーティアプリケーションの配布システムはおそらく成功するでしょう。しかし、もし、Flash、Java、Ruby、Pythonなどのランタイム環境のどれをiPhone OSとして採用するかがAppleのビジネス的な方針によってコントロールされるようになるのであれば、大変残念なところです。

6月のApp Storeの開始を待ってみなければ上記の詳細は分かりませんが、iPhone/iPod touchがオープンプラットフォームとしても魅力的なデバイスでいてくれることを望みます。

| | コメント (0) | トラックバック (0)

Jay Freeman氏、Debian APTベースの新しいパッケージマネージャCydiaをリリース

Cydiaicon

iPhone/iPod touch向けにJavaベースのUIKitレイヤJocStrapを開発したJay Freeman (saurik)氏が、Linuxの世界では有名なDebianパッケージマネージャAPTをベースに新しいiPhone/iPod touch向けパッケージマネージャをリリースしました。

iPhone向けのパッケージマネージャとしては既にapptapp Installerが不動の地位を確立していますが、より標準的で実績のあるDebianパッケージを採用したことにより、バージョン管理や多段の依存関係管理ができるメリットがあるだけでなく、多くのUNIX資産をiPhoneに移植・配布する敷居が1つ低くなったと言えます。

それよりも、もっと嬉しいメリットとして以下が挙げられます。

  • ファームウェア1.1.3から問題を起こしているBSD Subsystemのpasswdコマンドによる/etc/master.passwd破壊の問題が解決する
  • ファームウェア1.1.3から、mobileアカウントでsshログインしようとすると直ぐに接続が解除されてしまう問題(rootアカウントでは問題なし)が解決している
  • ruby: GCのバグを修正した新しいバージョンがインストールでき、irbやrubygemsがきちんと使えるようになっている
  • python: PyObjCが使えるようになり、pythonからでもUIKitベースのGUIアプリケーション開発ができるようになっている

その他、X11のクライアントライブラリが移植されているようで、テストアプリとしてxeyesが用意されています。残念ながら私の環境ではsshのX11 forwardingがうまくいってなくて表示できていませんが、将来的にX11アプリケーションも充実していく可能性があります。

パッケージマネージャのCydia.appそのものはInstaller.appのSystemカテゴリからインストールできます。ただし、ここで注意しなければいけないのは、Cydiaをインストールする前にルートパーティションに35MB程度の空き容量が必要だということです。私の場合は、Java関連一式、Ruby、Pythonを削除(いずれもCydiaから新しいバージョンをインストール可能)して、35MBの空きを確保できました。

またもう一つの注意点は、CydiaのインストールプロセスはBSD Subsystemのアンインストール、デフォルトで用意されるBSD Subystem互換セットのインストールやディレクトリの移動などに少し時間がかかります。ですので、iPhone/iPod touchが自動スリープしないように、予め「設定>一般>自動ロック」を「しない」に設定しておいてからCydiaのインストールを開始することをお勧めします。

インストールが完了したら、Cydiaを起動後、右上の丸い矢印のアイコンを(ちょっと押しにくいですが)タップするとパッケージリストを取得して、様々なアプリケーションをインストールできるようになります。ユーザインタフェースはInstaller.appとそっくりなのでほとんどの方は迷わず使えると思います。

CydiaCydia2

Cydiaのインストールが完了した時点では、/usr/shareが丸ごと/private/var/shareに移動されているため、ルートパーティションの空き容量は私の場合35MBから123MBに増えました。

また、Cydia.appとInstaller.appの共存も可能なようです。既存のアプリケーションの中には従来のBSD Subsystemに依存しているものも多いのですが、Cydia.appではBSD Subsystem互換セットがインストールされるため基本的に問題ありません。後は、CydiaとInstallerの両方に同じアプリケーションが登録されている場合があるので、両方に登録されているアプリケーションをどちらか片方のパッケージマネージャでのみアップデートするように気をつければ問題ないと思います。

なお、JamVM、JocStrapなどJava開発ツールは今後Cydiaでのみアップデートしていくようなので、Java on iPhoneに興味のある方はCydiaの導入をお勧めします。

| | コメント (0) | トラックバック (1)

1.1.3 jailbreak: iPhone Dev Team Official vs. iJailBreak 0.4.1

iPhone/iPod touchをファームウェア1.1.3のjailbreak環境にするには、iPhone Dev Teamによるオフィシャルな方法とiJailBreak 0.4.1の2つの方法が知られています。どちらを選択すべきかは、皆さんの環境や1.1.3環境の出来上がり具合で判断する必要がありそうです。

具体的な手順は他の方のブログサイトに譲るとして、ここではそれぞれの方法の利点と欠点を紹介し、自分にとってどちらの手順が好ましいかを判断するための情報を紹介しようと思います。

iPhone Devチーム・オフィシャル手順の特徴:

まず、オフィシャル版の手順の大まかな流れは、以下の図のようになります。

113_jailbreak_official_2

ここで注意しなければならない点は、1.1.3 jailbreakへ変更するためには1.1.2 jailbreak環境が必要なのですが、1.1.1 jailbreakから1.1.2 jailbreakに変更するにはiTunes 7.5環境が必要になってしまう点です。既に、iTunes 7.6にアップデートしてしまっている場合は、もう一台のMac/PC環境でiTunes 7.5を用意する必要があります。物理的に別のマシンが用意できない場合は、VMWareやPallarelsなどのWindows仮想環境を利用するとよいでしょう。

1.1.1の状態から始めると非常にたくさんのステップを踏む必要がありますが、それほど複雑な手順はなく、出来上がる1.1.3 jailbreak環境も日本語表示されていますので、基本的にはオフィシャル版の方法がお勧めです。以下に、オフィシャル版手順の特徴をまとめます。

利点

  • 手順は難しくない
  • 日本語のリソースがきちんと反映されている

欠点

  • 1.1.2 jailbreakを用意するために、iTunes 7.5環境が必要
  • リカバリ手順が長い
  • 追加アプリケーションはiTunes 7.6から購入する必要がある(¥2,480)
  • 追加アプリケーションを有効にしないとアイコン位置の編集機能も使えない

詳細手順

手順の詳細は、iPod touchラボさんのガイドで分かりやすく説明されていますので、そちらを参考にしてください。

iJailBreak 0.4.1手順の特徴:

一方、iJailBreakの手順では、最新のiTunes 7.6の環境のままで問題ありません。また、1.1.1 jailbreakと1.1.2 jailbreakのどちらからでも1.1.3 jailbreak環境に移行することができます。

Ijailbreak_041


しかし、iJailBreak 0.4.1は、Mac OS Xでのみ利用可能であること、現状、intel Macでのみ実行可能であるという制約があります(iJailBreak 0.5.xではPPCもサポートされました)。

また、iJailBreakが完了すると、1.1.3アップグレードユーザが本来¥2,480($20)払わなければ入手できないはずの追加アプリケーションもインストールされます。リリースノートには、合法的であるとの記述がありますが、実際のところは私にもよく分からないため、各自の判断で利用してください。ただ、実際にはオフィシャル版の手順でもファームウェアをアップグレードしただけで/Applications配下にMobileMail.appやMaps.appは存在し、SpringBoard上に表示されないだけの状況になっています。仕組みとしてはiTunesにおける1月のアップデート購入のタイミングでこれらの追加アプリケーションがダウンロードされるわけではなく、表示が有効になるということのようです(QuickTimeの有償Pro機能と同様)。従って、iJailBreakが行っている処理もSpringBoradに対して、これら追加アプリケーションの表示を有効にしているだけだろうと想像されます。

なお、残念なことに、iJailBreak後の1.1.3は、日本語のリソースバンドルがインストールされないため、表示が全て英語表記になります。もちろん、日本語キーボードは使用できますし、リソース以外の日本語の入力/表示は全く問題はありませんが、英語表記が気になる方は現状ではiJailBreakの手順はお勧めしません。以下に、iJailBreakの場合の特徴をまとめます。

利点

  • 1.1.1 jailbreak、1.1.2 jailbreakどちらからでも移行が可能
  • iTunes 7.5環境が必要ない
  • 追加アプリを購入しなくてもインストールされる

欠点

  • PPC MacおよびWindowsでは利用できない
  • 日本語リソースがインストールされない
  • 手順がやや分かりにくい
  • 追加アプリを購入しなくてもインストールされる(合法的?)

詳細手順

iJailBreak 0.4.1の詳細な手順は、iPod loveさんのページで画面のスナップショット付きで大変分かりやすく解説されています。

なお、iJailBreak完了後は、/var/root/Media/softupgrade/に300MBのインストールイメージの残骸が残っていますので、手動で削除するか、Installer.appから"1.1.3 Soft Upg. Cleaner"をインストール/アンインストールしてください(アンインストールしたタイミングで該当ディレクトリが削除されます)。

【追記 2008.2.13】

iJailBreakは、0.5.xでPowerPC Macがサポートされたようです(個人的には未確認)。

| | コメント (2) | トラックバック (0)

1.1.3 jailbreak後にパスワードを変更するとSpringBoardが再起動を繰り返す問題

iPhone/iPod touchを1.1.3 jailbreakした後、passwdコマンドでパスワードを変更すると、SpringBoardが数秒毎に再起動を繰り返してしまう問題が発生します。これは、BSD Subsystemに含まれるpasswdコマンドがファームウェア1.1.3の/etc/passwdおよび/etc/master.passwdファイルを壊してしまうことにより引き起こされる問題のようです。

したがって、BSD Subsystemのこの問題が解決されるまでpasswdコマンドを実行してはいけません。かといって、ユーザrootとmobileのパスワードをデフォルトのalpineにしておくわけにはいきませんので、以下の手順に従って/etc/master.passwdを直接編集しておくことをお勧めします。

/etc/master.passwdは以下のように1カラム目がユーザ名、2カラム目がDESエンコードしたパスワードになっています。

##
nobody:*:-2:-2::0:0:Unprivileged User:/var/empty:/usr/bin/false
root:/smx7MYTQIi2M:0:0::0:0:System Administrator:/var/root:/bin/sh
mobile:/smx7MYTQIi2M:501:501::0:0:Mobile User:/var/mobile:/bin/sh
daemon:*:1:1::0:0:System Services:/var/root:/usr/bin/false
unknown:*:99:99::0:0:Unknown User:/var/empty:/usr/bin/false
_securityd:*:64:64::0:0:securityd:/var/empty:/usr/bin/false

この2カラム目をviなどを使用して編集すれば問題は解決します。Mac OS Xにはcryptコマンドがありませんので、代わりにperlのcrypt()関数を使用してDES暗号化されたパスワード文字列を取得します。

$ perl -e 'print crypt("YOUR_PASSWORD", "SA"), "\n";'
SAb.ud/B16dTo

ここで、YOUR_PASSWORDの部分を実際に使用するパスワードに変更してください。SAの部分はsaltと呼ばれる暗号化の種ですので、任意の2文字を与えてください(例えば、パスワードalpineの暗号化には"/s"が使われています)。crypt()関数の実行結果としてsalt2文字から始まる13バイトの文字列が得られますので、これを/etc/master.passwd内のパスワード(/smx7MYTQIi2Mの部分)と置き換えて保存します。

【追記 2008.3.01】

apptapp Installerから導入されるBSD Subsystemでは未だに解決されていませんが、Jay Freeman氏による新しいパッケージマネージャCydiaからインストールされるBSD Subsystem互換セットではこの問題が解決されています。

| | コメント (9) | トラックバック (0)

Snapshot - screen snapshot utility for iPhone/iPod touch

Icon

Snapshot is a utility of taking snapshots of screen image of iPhone/iPod touch.

In order to take snapshot, follow these steps:

  1. tap on Snapshot.app on your iPhone/iPod touch.
  2. choose the preferred snapshot delay on the dialog.
  3. choose the number of snapshots after the delay.
  4. after that, change the screen that you want to snapshot before the snapshot delay has expired.
  5. if snapshot succeeded, the snapshot notification dialog will appear.
  6. the snapshot image is stored in your home directory. The file name is like snapshot-mmddhhmmss.png.

This application is implemented as a shell script with Erica's Utilities. So you can easily customize the behavior, alternatives of delay value or snapshot file name, by editing the file main.sh located in Snapshot.app.

If you are interested in this application, add my apptapp repository http://javaflavor.cocolog-nifty.com/apptapp/ to your Installer.app. Snapshot will appear in the category Utilities.

If you want to manually install the application, download the application from the following link, copy it to your iPhone/iPod touch and expand it under /Applications directory.

Note that Snapshot requires Erica's Utilities and BSD Subsystem. These required softwares can be installed from Installer.app.

FYI: we shall not be liable for any damage or data loss arising out of or resulting from your use of this software.

History:

  • 1.0 Initial version. (1/12/2008)
  • 1.1 Small changes to work on firmware 1.1.3. (2/02/2008)

| | コメント (0) | トラックバック (0)

Respring - restarts SpringBoard with two taps on iPhone/iPod touch

Icon

Respring is the small application which restarts SpringBoard. Some other applications like SysInfo have the same feature. But this applications is very easy to use.

Interestingly, this application is implemented as a shell script with the alert command of Erica's Utilities:

#!/bin/sh
/var/root/bin/alert -C -b 'Restart SpringBoard now?'
if [ "$?" = "1" ]; then
  launchctl stop com.apple.SpringBoard
fi

If you are interested in this application, add my apptapp repository http://javaflavor.cocolog-nifty.com/apptapp/ to your Installer.app. Respring will appear in the category System.

If you want to manually install the application, download the application from the following link, copy it to your iPhone/iPod touch and expand it under /Applications directory.

Note that Respring requires Erica's Utilities and BSD Subsystem. These required softwares can be installed from Installer.app.

FYI: we shall not be liable for any damage or data loss arising out of or resulting from your use of this software.

History:

  • 1.0. Initial version. (12/30/2007)

| | コメント (0) | トラックバック (1)

jiggy - JavaScriptベースのiPhone/iPod touch開発ツール

iPhone/iPod touch向けのもう一つの開発ツールが登場しました。jiggyはmozilla.orgのSpiderMonkeyをベースに独自拡張したJavaScriptエンジンを用い、UIKitベースのスタンドアロンアプリケーションをJavaScriptシンタックスを用いて簡単に行うことができます。

jiggyのユニークな点は、開発環境としてWebブラウザを使用し、JavaScriptの編集からアプリケーションのパッケージングまで全てWebブラウザで行うことができる点です。

現在のiPhone/iPod touchの制約により、GUIのアプリケーションを同時に複数起動することができません。そのため、通常Jiggyアプリケーションの開発はiPhone/iPod touchとは別のマシンのWebブラウザが必要になります。JiggyのIDEはAJAXを使用しており、非常によくできたインタフェースなので、もしJiggy IDEとMobileSafariを同時に起動することができれば、スタンドアロンのアプリケーション開発ツールとして十分実用になるはずです。幸いJiggy IDE自身もJavaScriptで書かれているため、サーバ側のパスワード変更画面を表示させないようにスクリプトを修正し、Term-vt100からコマンドラインでバックグラウンド実行できるように修正してみました。結果はJiggy IDEのサーバ側の起動はうまくいきましたが、残念ながらエディタペインの部分が以下のようにぐちゃぐちゃになってしまい、事実上MobileSafariでの使用は不可能でした。

Jiggy

エディタペインの元になっているEditAreaのサンプルをMobileSafariで見ても同じ現象となるため、原因はEditAreaとMobileSafariとの相性問題のようです。

残念ながらJiggy IDEのスタンドアロン利用はできませんが、Javaと同様、ソースコードエディタとして、viかTextEdit.appを使用すれば、iPhone/iPod touchだけでアプリケーションを開発することは可能です。

JiggyのJavaScriptランタイムはJamVMよりメモリフットプリントが小さく、コンパイルも不要であるため、非常に手軽にアプリケーション開発が可能です。

【追記 2008.2.23】

現在、Installer.appから取得できるjiggy 0.21はファームウェア1.1.3では正しく動作しません。1.1.3に対応したjiggy 0.25をインストールするためには、http://jiggyapp.com/iをInstaller.appのリポジトリに追加する必要があります。

| | コメント (0) | トラックバック (1)

JavaSysInfo - shows Java system properties of iPhone/iPod touch

I am evaluating JocStrap, Java Objective-C binding framework, developed by Jay Freeman (saurik). JocStrap+JamVM+GNU Classpath provides the unique standalone iPhone/iPod touch development environment. I'm so excited!

JavaSysInfo is my first Java-on-iPhone application using JocStrap. JavaSysInfo simply shows Java system information on iPhone/iPod touch.

Javasysinfo

If you are interested in this application, add my apptapp repository http://javaflavor.cocolog-nifty.com/apptapp/ to your Installer.app. JavaSysInfo will appear in the category Java.

If you want to manually install the application, download the application from the following link, copy it to your iPhone/iPod touch and expand it under /Applications directory.

Note that JocStrap applications, including JavaSysInfo, currently require JocStrap, UICaboodle, JamVM, GNU Classpath, GNU Classpath Tools, Apache APR, libffi and BSD Subsystem. These required softwares can be installed by adding Jay's repository http://apptapp.saurik.com/ to Installer.app. Also note this application may not work with the future version of JocStrap. I will continue to maintain so that it will work with the up-to-date version of JocStrap.

FYI: the package also includes source codes. You can freely use these source codes for any purpose. But we shall not be liable for any damage or data loss arising out of or resulting from your use of this software.

History:

  • 0.9.0. Initial version. (12/22/2007)
  • 0.9.1. Changed to work with JocStrap 1.0.2274-1. No new feature added. (12/23/2007)
  • 0.92. Fixed broken packaging about symlink. You can install the package from my repository http://javaflavor.cocolog-nifty.com/apptapp/. (12/30/2007)

| | コメント (0) | トラックバック (0)

iPhone/iPod touch用Java SE実行環境:JocStrapでJavaからUIKitが利用可能に

Jay Freeman (saurik)氏は、iPhone/iPod touch用Java SE環境(JamVM+GNU Classpath)で、GUIを含む各種Objective-CフレームワークをJavaから利用する事ができるJava Objective-CバインディングライブラリJocStrapを公開しています。

現在、iPhone用のアプリケーション開発ツールとしては、gccクロスコンパイラ、Python、Perl、Rubyなどがあります。しかし、iPhone/iPod touch単体でUIKitを使用したGUIアプリケーションを開発できるスタンドアロン開発環境は、現状JamVM+GNU Classpath+JocStrapの組み合わせだけです。

JocStrapを利用する場合は、以前のエントリ「iPhone/iPod touch用Java SE実行環境(JamVM+GNU Classpath)」に従ってsaurikのレポジトリを設定することで、Installer.appからインストールすることができます。なお、パッケージの依存関係には明示されていませんが、JocStrapはランタイム時にAPR、libffiおよびUICaboodleを必要としますので、合わせてインストールしておきます。

JocStrapのObjective-Cバインディングは、Mac OS X用のCocoa Javaフレームワークとは全く異なります。Cocoa Javaフレームワークは、Objective-CのクラスライブラリをJavaらしいプログラミングスタイルに合わせてデザインされたものです。一方、JocStrapはObjective-Cのクラスライブラリを機械的にJavaライブラリにマッピングしたものとなっているため、アプリケーションの記述スタイルはJavaのシンタックスでありながら、良くも悪くもObjective-Cライクなソースコードに近いものになります。例えば、NSAutoreleasePoolオブジェクトの初期化処理はObjective-Cでは、

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

のように記述しますが、これをJocStrapを使用してJavaで記述すると以下のようになります。

NSAutoreleasePool pool = (NSAutoreleasePool) new NSAutoreleasePool().init();

通常、Objective-Cにおけるオブジェクトの初期化はallocとinitの2つのオペレーションのペアによって行われますが、Javaの場合もデフォルトコンストラクタの後にinit()メソッドを実行する事になります。ここでJavaプログラマは、init()の戻り値を明示的にNSAutoreleasePoolでキャストしている点が不思議に思われるかもしれません。Objective-Cはコンパイラ言語でありながら、強いリフレクションの性質を持っており、initの結果として自分自身以外のオブジェクトを返すことが許されています。JocStrapのObjective-Cバインディングもこの性質を引き継ぐため、init()メソッドの戻り値もObject型で宣言されています。Javaは強い型付けの言語であるため、実際に返されるオブジェクトの型に合わせてダウンキャストが必要になるわけです。

また、Objective-CはSmalltalkと同じように、オブジェクトのメソッド宣言には名前付きパラメータ形式を採用しおり、同じ引数型の並びであってもパラメータ名が異なっていれば、メソッドのオーバローディングができるようになっています。

- (void)send:(id)mail to:(id)address;
- (void)send:(id)mail with:(id)signature; 

一方、Javaのメソッド呼び出しではパラメータに名前をつけない仕様であるため、Objective-Cクラスバイディング時のメソッドの衝突を避けるため、Objective-Cクラスにおけるメソッド名とパラメータ名を全て繋ぎ合わせたものをJavaのメソッドにマッピングしています。

public void send$to$(Object, Object);
public void send$with$(Object, Object);

また、Window Serverからのイベントメッセージを受け取るアクションメソッドには、@Messageアノーテションを付与する必要があります。

@Message
public void applicationDidFinishLaunching$(Object unused) {...}

上記のようないくつかのルールがありますが、Objective-Cの知識さえあれば、比較的ストレートにJavaでアプリケーションを記述することができます。現在のバージョンでは、UIApplicationMainクラスが自動検出できなかったために、ブートストラップのためのコードが若干醜くなってしまうようですが、Objective-CネイティブのHello Worldが、Java版のHello Worldに変換してきちんと動いているのは立派です。

まだまだ改善の余地が沢山あるJocStrapですがとても興味深いプロジェクトだと思います。

| | コメント (0) | トラックバック (0)

iPod touchでワイヤレスヘッドフォンを接続する - サンワサプライ MM-BTAD10BK

iPod touchは残念ながらBluetoothが省略されているため、A2DPプロファイルのワイヤレスヘッドフォンを直接接続する事ができませんが、サンワサプライから発売されているiPod用のBluetoothアダプタ MM-BTAD10BK(白の方はMM-BTAD10W)を接続することでBluetoothステレオヘッドフォンを利用する事ができます。

Ipodtouchbta2dp

MM-BTAD10BK/WはiPodのドックコネクタに接続するタイプのBluetoothアダプタで、A2DP、AVRCPプロファイルに対応しています。MM-BTAD10BK/Wの対応機種にはiPod touchが明示的にはリストアップされていませんが、実用上の問題はなさそうです。今回私が接続に使用したBluetoothヘッドフォンはiTech Clip R35で、ペアリングのパスコードが8888に固定のものですが、MM-BTAD10BK/Wは複数のパスコード0000, 1234, 8888に対応しており、ペアリング時にこれらのパスコードを順番にチャレンジしてくれるため、iTech Clip R35とも問題なくペアリングに成功します。

本当は、サンワサプライのものと同等機能で、さらにUSBポートがついているPrincetonのPTM-BAHIDがよかったのですが、製品仕様からiTechのパスコード8888に対応しているかどうかが分からなかったため、安全をみてサンワサプライの方にしました。いずれにしても、これでiTech Clip R35は、705NK(Nokia N73)、MacBook、iPod touchの3つのデバイスで利用できるようになりました。

アダプタをつけると通常のiPodより大きいiPod touchがさらに大きくなってしまいますが、使用感としては大変満足です。ヘッドフォンがワイヤレスになったこともありますが、それよりもiPod touchをズボンのポケットに入れたまま、音楽の再生コントロールとボリュームの調整が胸元のボタンで制御できるようになったことの方がメリットとして大きいと思います。

また、iTech Clip R35に対してiPod touchとbluetooth接続可能な携帯電話の両方から同時に接続しておくと、iPod touchで音楽の再生中に電話がかかってきたときにはiPod touchの音楽が自動的に停止し、ワンタッチで電話に応答することができます。

| | コメント (4) | トラックバック (0)

iPhone/iPod touch用Java SE実行環境:jikesも利用可能に

以前のエントリ「iPhone/iPod touch用Java SE実行環境(JamVM+GNU Classpath)」で紹介したJay Freeman (saurik)氏のレポジトリからjikesがインストールできるようになっています。

jikesはC++で実装されたJVMを使用しないjavac互換の高速Javaコンパイラです。先にも述べたようにJamVMにはJITがないため、ecj.jarを使用したjavacは非常に遅いのが問題でしたが、jikesの登場によってiPhone/iPod touch上でのJavaのコンパイルが非常に快適になります。

簡単なHello Worldなクラスでもjavacではコンパイルに40秒近くかかっていますが、jikesなら1秒足らずで終了します。

Jikesiphone

| | コメント (0) | トラックバック (0)

iPod touchで読書しよう - Books.app

Iphonebooks

iPhone/iPod touchをjailbreakすると、InstallerのカテゴリにeBooksというカテゴリがあり、著作権の切れたいくつかのEブックが含まれています。これらのEブックは、カテゴリProductibityにあるBooksというEブックリーダで読むことができます。

eBooksカテゴリにあるEブックはHTMLで整形されたEブックですが、Books.app自身はテキスト形式にも対応しています。また、UTF-8でエンコーディングされていれば、日本語の表示も問題なくできます。例えば、青空文庫で公開されているテキストはShift_JISですが、nkfなどを利用してUTF-8に変換すれば、iPhone/iPod touchをEブックリーダとして利用することができるわけです。

Books.appは、ディレクトリ/var/root/Media/EBooks/配下のファイルを認識しますので、UTF-8変換したテキストファイルをscpコマンドなどでこのディレクトリに転送します。この時、ファイル名は日本語であっても構いません。

$ ls
太宰治「斜陽」.txt 畑仲哲雄「スレイブ」.txt
夏目漱石「明暗」.txt
$ scp * root@xx.xx.xx.xx:~/Media/EBooks/
root@xx.xx.xx.xx's password:
太宰治「斜陽」.txt                     100%  280KB 280.0KB/s   00:00   
夏目漱石「明暗」.txt                  100% 1086KB   1.1MB/s   00:01   
畑仲哲雄「スレイブ」.txt         100%  280KB 279.7KB/s   00:01   
$

sshでiPodにログインしてみるとロケールを設定しても日本語が化けてしまいますが、iPhone/iPod touchのファイルシステムはMac OS Xと同じでロケールに関わらずファイル名のエンコーディングにはUTF-8が使用されているようです。そのため、~/Media/EBooks/をMobileFinder.appで表示させてみても、キチンと日本語のファイル名が表示できますし、Books.appでも以下のように日本語のファイル名でテキストファイルをリストしてくれます。

Iphonebooks1

以下は実際にテキストファイルを表示させたところです。Eブックはスナップジェスチャでもスクロールできますが、画面下のボタンを使ってページめくりした方が圧倒的に便利です。また、画面のタップ1回で画面上部にスクロールバーが現れるため、これを使って任意のページに高速スクロールする事もできます。

Iphonebooks4Iphonebooks5

その他、フォントの拡大/縮小、画面の白黒反転などの機能があり、どこまで読み進めたかはEブック毎に記憶しておいてくれるため、大変便利です。

Iphonebooks7Iphonebooks8

Books.appがサポートしているフォーマットは、HTML形式、テキスト形式以外に、PalmDOCやPluckerにも対応しています。例えば、Project Gutenbergのサイトで公開されているPlucker (.pdb)形式のファイルも以下のように表示することができました。

Iphonebookspdb1

| | コメント (0) | トラックバック (0)

iPhone/iPod touch用Java SE実行環境(JamVM+GNU Classpath)

Jay Freeman (saurik)氏は、GNU ClasspathJamVMをiPhone向けにコンパイルしたバイナリを公開し始めました。自分でコンパイルする場合は、iPhone toolchainを使ってこちらの手順に従えばOKですが、Installer.appにsaurikのリポジトリを追加すれば簡単にバイナリをインストールできます。

iPhone/iPod touchでInstaller.appを起動し、右下のSourcesアイコンをタップして、http://apptapp.saurik.com/ をリポジトリに追加します。

Iphonejava1Iphonejava2

すると、Installer.appのカテゴリにJavaが現れますので、GNU Classpath、JamVM、GNU Classpath Toolsの順番でインストールします。

Iphonejava3

ここで注意ですが、これらのツールは全て/usr配下にインストールされます。特にGNU Classpathに含まれるクラスアーカイブが9MBありますので、ルートパーティション(disk0s1)に十数MBの空きがないとインストールできません。ルートパーティションを圧迫しないためには、予め以下のようにGNU Classpathがインストールされる/usr/share/classpathをセカンドパーティション(disk0s2)に移動してからGNU Classpathをインストールするとよいでしょう。

# mkdir -p /private/var/usr/share/classpath
# ln -s /private/var/usr/share/classpath /usr/share/classpath

また、上記ツールセットにはjavacの実装が含まれていませんので、Eclipse Projectのサイトからecj.jarをダウンロードし、これをCLASSPATHに含めることでjavacも使用することができます。以下に、javacのエイリアス定義の例を示します。

# export CLASSPATH=/usr/share/classpath/tools.zip:~/java/lib/ecj.jar:.
# alias javac='java com.sun.tools.javac.Main'

現在の実装ではAWT/Swingは使えず、JamVMにはJITが含まれないためjavacの実行がとても遅いのですが、jarコマンドをzip/unzipツールとして使用した場合は比較的実用的な速度だと感じました。iPhone/iPod touchでのJava実行・開発環境も徐々に現実的になりつつあることが実感できます。

Iphonejava4

以下の画面は、jetty (jetty-5.1.14)を実行してMobileSafari.appからアクセスしたところです。Term-vt100.appはホームボタンを押すとログインシェルを終了してしまうので、jettyを実行したまま、MobileSafariにスイッチするには、nohupコマンドを使ってjettyをバックグラウンドで実行する必要があります。javacがきちんと動作しているため、JSPのコンパイルも問題なくできていることが分かります。

Iphonejetty1

【追記 2007.12.10】 saurik氏のレポジトリURLが http://iphone.saurik.com/ から http://apptapp.saurik.com/ に変更になりました。今後はこちらを使用してください。なお、前者は後者のエイリアスだそうですので、既に前者で設定済みの方はそのままでも構わないそうです。

【追記 2007.12.11】 GNU Classpathの再インストールに失敗する場合は、Installer.appがアンインストールに失敗した/usr/lib/rt.jarのシンボリックリンクを手動で削除してから、再度インストールしてみてください。Installer.appがシンボリックリンクを削除できないのはバグのようです。

| | コメント (2) | トラックバック (0)

MacPortsでiPhoneクロスコンパイル環境をインストール

iPhone/iPod touchの開発ツールは、現在Google Codeのiphone-devプロジェクトでメンテナンスされています。現在のところ正式なバイナリは提供されていないため、iphone-devのWiki "HOWTO build the toolchain"に従ってインストールするか、ここから非公式なバイナリをダウンロードするか、どちらかの方法が知られています。

しかし、MacPortsを利用するともっと簡単にtoolchainをインストールすることができます。インストール手順は、MacPortsにコントリビュートしてくれた、Landon Fullerさんのページに分かりやすく記述されています。

上記リンク先の手順通りに行えば問題なくツールがインストールできるため、あえてここではその手順を繰り返して説明することはしません。

実際には上記手順に加えて、以下のCelso Martinhoさんのブログエントリにリンクされているarm-cc-specsをMacPortsでインストールされた /opt/local/arm-apple-darwin/etc/arm-cc-specと置き換えてあげる必要がありますが、これだけの手順でiPhone/iPod touchのクロスコンパイル環境を手に入れることができます。Mac OS X 10.5 Leopardでも問題ありません。

なお、Landon Fullerさんは、Java SE 6のFreeBSDポートをMac OS Xに移植することにも尽力されています。

| | コメント (0) | トラックバック (0)

jailbreakする人はiTunes 7.5へのアップデートはちょっと待った方がいいらしい。

Itunes75update

現在、Mac OS XのソフトウェアアップデートからiTunes 7.5へのアップデートが可能になっていますが、iPod touch/iPhoneでjailbreakしたい方は、暫く待った方がいいようです。

jailbreakの自動化ツールiJailBreakも内部でiphucを使用しているため、iTunes 7.5ではうまくいかなくなるでしょう。

【追記 2007.11.12】

engadget Japaneseによれば、iTunesの機能に頼らずにiPod touch/iPhone単体でjailbreakすることができるAppSnapp Installer for 1.1.1が登場したようです。私自身は試していませんが、これがうまく機能するなら、iTunes 7.5にアップグレードした後でも再jailbreakが可能になります。AppSnapのページを見るとiPhone Dev TeamとNullriver Softwareがクレジットされているため、悪意のサイトではない可能性は高いと思いますが、この方法を安全と考えるかどうかは各自の責任において判断してください。

| | コメント (0) | トラックバック (0)

iPod touch 1.1.1でiJailBreak 0.3

当初私はiPod touchを単なるメディアプレイヤ(iPod)+Webブラウザ(Safari)として見ており、3G iPhoneが入手可能になるまでは全く購入するつもりはありませんでした。メディアプレイヤー+Webブラウザであれば、若干制約はあるもののNokia N73(705NK)で十分でしたので、携帯電話とは別にもう一つの携帯デバイスを持ち歩く程の魅力はiPod touchに見いだすことができませんでした。

しかし、JailBreakを簡単にするiJailBreakの登場と、Installer.appによるインストール可能なアプリケーションの急速な充実ぶりを知りました。iPod touchはiPhoneと同様UNIXをベースとするMac OS Xが動作しているため、ApachePythonRubyなども動かせるようになっています。iPod touchを単なるメディアプレーヤと考えるのは明らかに間違いであり、3G iPhoneが登場するまでの間、十分に楽しませてもらえるデバイスであることが分かったため、遂に購入するに至りました。

iJailBreakは、Jailbreak Guideの全てのステップを半自動化したAppleScriptでできているユーティリティで、13才のAriX君によって作成されたものです。

iJailBreakはかなり自動化されているとはいえ、その実行手順は、きちんとドキュメントされておらず、先人たちのブログでの実施報告だけが頼りです。ところが、iPhone/iPod touchのファームウェアバージョンやiJailBreakのバージョンによって若干手順が異なるため、やはり最初は戸惑います。本エントリでは詳細なiJailBreakの実施手順の全てを報告することはしませんが、初めてJailbreakingする方がつまずきそうな点や注意点をお伝えします。なお、私がJailbreakingした環境は以下の通りです。

  • Mac: Mac OS X 10.5 Leopard
  • iTunes: 7.4.2
  • iPod touch: firmware version 1.1.1 (3A110a)
  • iJailBreak: 0.3

将来のファームウェアバージョン、iJailBreakの上記以降のバージョンでは、以下の記述と実際の振る舞いは異なっている可能性がある点にご注意ください。

1. iPod touchのシステムレベルの基本操作

まず、iJailBreakを実行する前に、iPod touchのシステムレベルの基本操作を体験しておくことをお勧めします。iPod touchにはマニュアルらしきものは一切添付されていませんので、以下の操作のうち少なくとも「シャットダウン」方法と「システム再起動」方法は練習しておきましょう。

  • シャットダウン: 本体上部の「スリープ/解除」ボタンの(約3秒)長押し。しばらくすると「電源オフ」の赤いスラダが画面上部に現れるため、このスライダを右にスライドする。
  • システム起動: 本体上部の「スリープ/解除」ボタンをアップルマークが画面に出るまで(約1秒)押す。
  • システム再起動: ワンステップの操作はないようです。シャットダウン操作+システム起動操作になります。
  • アプリ強制終了: ディスプレイ下の「ホーム」ボタンの(約6秒)長押し。画面がフリーズして操作できなくなったときに実施します。
  • システム強制再起動: 本体上部の「スリープ/解除」ボタンとディスプレイ下の「ホーム」ボタンを同時に長押し。上記、アプリ強制終了の効果がなかった場合、最後の手段として実施します。

参考:Appleサポート「iPod touch のフリーズなどの一般的な問題

2. iPod touchを工場出荷状態にする場合は?

場合によって、iPod touchを工場出荷状態にリセットしたくなる場合があります。この場合は、iPod touchをUSBケーブルで繋ぎ、Mac側でiTunesを起動しておきます。次に、iPod touchの本体上部の「スリープ/解除」ボタンとディスプレイ下の「ホーム」ボタンを同時に押し続けます。しばらくするとiPod touchがリスタートします。画面中央にアップルマークが出たら、「スリープ/解除」ボタンを離しますが、「ホーム」ボタンはそのまま押し続けます。しばらくすると、Mac側のiTunesに修復が必要なiPodが検出された旨のダイアログが表示されます。ガイドに従ってiPod touchの復元を実施します。

3. iJailBreakを実行する前に実施しておくこと

iPod touchを一時的に自動ロックをしないに設定にしておきます。iJailBreakが実行中にiPod touchの画面が暗くなると、きちんと処理が行われているかどうかが非常に不安になります。この不安を少しでも取り除くため、「設定」の「一般>自動ロック」で「しない」を設定しておきます。

4. iJailBreakを実行中に注意すること

iJailBreakをMacで起動したら、「JailBreak」ボタンを押し、後は画面の指示に従って作業を進めていくだけです。iPhoneアプリはデフォルトでインストールされるため、通常「Install iPhone Apps」ボタンの方は使用しません。

iJailBreakの処理が完了するまで、iPod touchを全部で3回手動で再起動(電源オフと電源オン)することになります。上記でシャットダウンとシステム起動の操作を練習しておいた方がいいと述べたのはそのためです。なお、iJailBreakの処理中に、iPod touchの再起動時に合わせてiTunesが自動起動し、名前を設定するダイアログが現れますが、iJailBreakの処理が完了するまでiTunesは無視してください。

5. iJailBreakが完了後に実施すること

iJailBreakが成功すると、iPhoneにはあってiPod touchで省略された「天気」、「Maps」、「メール」、「メモ」、「株価」が追加されます。さらに、コミュニティで開発された様々なアプリケーションを簡単にインストールできるInstaller.appが追加されています。

Img_9000

Installer.appでiPod touchのカスタマイズを進めていく前に、以下の手順を実行しておくことをお勧めします。

5.1 ssh rootパスワードの変更

iJailBreakの最後のダイアログに表示されたように、iJailBreakが完了するとWiFiを通じてリモートからsshログインができるようになっていますので、デフォルトのパスワードを必ず変更しておきましょう。

Macのターミナルからsshを実行し、iPod touchにrootアカウントでログインします。iPod touchのIPアドレスは、「設定>WiFi」で設定済みのチェックがついたワイヤレスネットワークの右側にある青い丸をタップすることで確認できます。

$ ssh root@xx.xx.xx.xx       ←xx.xx.xx.xxはiPod touchのIPアドレス
root@xx.xx.xx.xx's password: ←デフォルトパスワード"alpine"
# /usr/bin/passwd
Changing password for root.
New password:                ←新しいパスワードを入力
Retype new password:         ←確認のためもう一度入力

なお、mobileというアカウントも同じパスワード"alpine"でsshログインできるようになっているため、こちらも変更しておきます。

# /usr/bin/passwd mobile
Changing password for mobile.
New password:                ←新しいパスワードを入力
Retype new password:         ←確認のためもう一度入力

5.2 "/Applications"ディレクトリの移動

iPod touchのパーティション構成は、以下のように/dev/disk0s1(mounted on "/")が300MB、/dev/disk0s2(mounted on "/private/var")が残り全てになっています。

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/disk0s1          300M  254M   44M  86% /
devfs                  15K   15K     0 100% /dev
/dev/disk0s2           15G   35M   15G   1% /private/var

Installer.appからインストールされる通常のアプリケーションは、300MBしかないdisk0s1の/Applicationsにインストールされるため、あっという間にdisk0s1が一杯になり、運が悪いとiPod touchが起動しなくなってしまいます。この問題を避けるため、/Applicationsを容量に余裕のあるdisk0s2に移動し、シンボリックリックを張っておきます。

# mkdir /private/var/Applications
# cp -Rp /Applications/* /private/var/Applications/
# rm -Rf /Applications
# ln -s /private/var/Applications /Applications

また、PythonやRubyなどの開発ツールは/optにインストールされます。これらをインストールする予定の方は、今のうちにdisk0s2の方に/optを作成し、シンボリックリンクを作成しておくとよいでしょう。

# mkdir /private/var/opt
# ln -s /private/var/opt /opt

以上の作業が完了したら、iPod touch上のInstaller.appから好みをアプリケーションを簡単にインストールできます。

| | コメント (0) | トラックバック (0)

その他のカテゴリー

applescript | book | camcorder | development | english | iphone | ipod | java | linux | mac | solaris | 携帯