RSS

初出:2008年1月27日 00:14

更新:2008年9月 3日 09:02

【追記】

・2/3 追記
脱獄した1.1.3でいくつか不具合発見。まず、iTunes Storeで購入したDRM付きの音楽が再生できず。さらに、iPhotoからiTunes Mobile Storeへアクセスしても試聴すらできません。どうやらiTunes Storeのアカウントが紐づけていない様子。

あと、これはiPod touchでも起こっている不具合なので1.1.3自体のバグですが、Safariでのフォーム入力時、日本語キーボードのdeleteキーを押すとSafariが堕ちます。英語キーボードだと大丈夫です。

iPhone firmware 1.1.3(Jailbreaked)

分かるかなあ、左のスクリーンショット。JailbreakしたiPhone 1.1.3の画面です。iPhone firmware 1.1.3が出たのが1月15日。その10日後にはiPhone Dev Teamによって脱獄(Jailbreak)方法が解明されました。今回はファームウェアに暗号処理がされていたみたいですが、それでも10日くらいで解読されてしまうとは。イタチごっこもここに極まれり。

僕は決して脱獄が趣味な人間ではないですよ。v1.1.1のときは日本語入力ができるようになるという理由で率先して脱獄しましたが、v.1.1.2はそのままスルー。で、v1.1.3でホームアイコンのカスタマイズができるのと、Webクリップをアイコンとして登録できるようになりまして、iPhone使いとしてはこれがとても魅力的なわけです*1

それでもiNdependenceの1.1.3対応版が出るまで待とうかと思いましたが、現時点での脱獄方法もそれほど難しい手順ではなさそうなのでトライしてみたわけです。…とはいえ今回も諦めたくなるくらい苦しいポイントがいくつかありましたけどね。結果は無事に脱獄成功! 一段と使い勝手のよいiPhoneになりましたよ。

ここからは備忘録的な手順のまとめを。以下の手順は、脱獄済みのv1.1.1もしくはv.1.1.2環境とInstaller.appが必要。日本語キーボードのことを考えると、実はv1.1.2で脱獄しておいたほうが吉。

  1. まず最初に見るべきサイトはここ
  2. うちはMacなので「1.1.3 package maker」をダウンロード
  3. iPhoneをケーブルで繋いで「Run_This」というスクリプトを実行
  4. ひたすらEnterキーを押す
  5. 暗号が解除されたv1.1.3ファームウェアがiPhoneにコピーされる
  6. Installer.appを起ち上げ、「System」の中にある「1.1.3 soft upgrade」を実行…なんだけど、あらかじめ「Community Sources」パッケージをインストールしておかないと表示されないので注意
  7. ここで「Main script execution failed」というエラーが出てスクリプトが止まってしまう問題発生
  8. iPhoneの中にある /etc/fstab を開き、 /private/var の noexecを外して保存する(これを見つけるまでが長かった…)
  9. 再度「1.1.3 soft upgrade」を実行。しばらく放っておくと再起動して、見事v1.1.3脱獄完了。YouTubeもOK
  10. ここで、日本語キーボードが有効にならないという問題発生。v1.1.1の時に使えたM68AP.plistの書き換えは、v1.1.2から役に立たないことが判明
  11. 必死に調べると、/private/var/root/Library/Preferences/.GlobalPreferences.plist を書き換える方法を発見。 AppleKeyboardの下の階層に<string>ja</string> を追加。plist editorでは「1  String  ja」
  12. 上記の作業の後で再起動。キーボードに地球儀マークが追加される。ただしこの方法だと環境設定の「International」「Keyboard」を開いただけで元に戻ってしまうので、ここは二度と一切いじらない
  13. このサイトの「More Keyboards & Regions」がv1.1.3に対応してくれると助かる。今のところv1.1.2対応版なので、脱獄前にあらかじめv1.1.2にしておくのが、やはり吉

これでめでたく作業完了。

iPod touch用のv1.1.3 Firmware Updateもリリースされ、Mail、Google Map、メモという普段から頻繁に使う3大機能がiPod touchでも利用可能になりました。加えてSafari、カレンダー、住所録は元から入っているので、もはや電話が使えないiPhone状態。つまり、日本で使うにはiPod touchで完全に事が足ります。それなので、いよいよiPhoneを捨ててtouchを買おうかって悩みましたが、以下の理由からやっぱりiPhoneで脱獄することにしました

  • ボリューム調整が画面を見ずとも本体横のボタンでできる。電車の中とかでの音量調整にはかなり便利
  • なんちゃってだけどカメラが付いている。出先でのちょっとした資料撮影などに便利
  • スピーカーがついている。飲み屋で音楽談義をするときに便利
  • 街中でWi-Fiホットスポットに繋ぐ際に、「Devicescape」があれば、いちいちユーザ名とパスワードを打たなくてもよくて、これがえらく便利。touchでも使えるけど、どっちにせよ脱獄しないといけない
  • 未だに4〜5月説が聞こえてくるので、今ここでtouchを買っても、すぐに新たな出費に見舞われそうな予感

Googleさんは、この記事をこう解釈しました

記事の詳細ページ

記事の全文を表示します。関連するコメントやトラックバックなどもこちらからどうぞ。

本日のBGM

★印があったら「これは聴いてみてほしい!」という推薦曲です。曲名をクリックするとiTunes Storeへジャンプします。

'; // loop through the songs in the array and get 4 fields that I want to see foreach ($songs as $song) { $output .= '
  • '; if ($song["Rating"] == 100){ $output .= ''.$song["Rating"].''; } $output .= '
    '; $output .= '
    '.$song["Name"].''; $output .= '
    '.$song["Artist"].''; $output .= ''.$song["Album"].''; if ($song["Year"]){ $output .= '('.$song["Year"].')'; } $output .= '
  • '; } // end the table $output .= ''; // show my new table print ($output); } ?>

    Now & Then

    Twitter Updates

      OAuthRequest('https://api.twitter.com/1.1/statuses/user_timeline.json','GET',array('screen_name' =>$search_word,'count' =>'3')); //Jsonデータをオブジェクトに変更 $oObj = json_decode($vRequest); //var_dump(json_decode($vRequest)); //オブジェクトを展開 for($i_tweet = 0; $i_tweet < sizeof($oObj); $i_tweet++){ $screen_name = $oObj[$i_tweet] -> {'screen_name'};//ユーザーID $profile_image_url = $oObj[$i_tweet] -> {'profile_image_url'};//プロフィール画像のURL $text = $oObj[$i_tweet] -> {'text'};//ツイート $date = $oObj[$i_tweet] -> {'created_at'};//時間 $tweet_time=strtotime($date);//Unixタイムスタンプ形式に変換 $now_time=time();//現在の時刻をUnixタイムスタンプで取得 $relative_time=$now_time-$tweet_time;//つぶやかれたのが何秒前か if($relative_time<60){//ss $displayTime = $relative_time.'秒前'; }elseif($relative_time>=60 && $relative_time<(60*60)){//mm $displayTime = floor($relative_time/60).'分前'; }elseif($relative_time>=(60*60) && $relative_time<(60*60*24)){//hh $displayTime = floor($relative_time/(60*60)).'時間前'; }elseif($relative_time>=(60*60*24)){//日付 $displayTime = date('n月j日',$tweet_time); } //表示 echo '
    • ' . $text .'' . $displayTime . '
    • '; } ?>
    follow me on Twitter