2014年01月22日

iPhone 4のファームウェアをiOS 6.1.3へ更新した

ページ01/01の記事で紹介した2台目のiPhone 4のファームウェアのアップデートを(ついでに脱獄処理も)行いました。このiPhone 4は入手時点ではiOS 5.1.1bでしたが、1台目のiPhone 4を同じバージョンのファームウェアに更新したので、こちらの方はiOS 6.1.3へ更新することにしました。

iPhone 3GSのファームウェアをiOS 5.0.1へアップデートしたときの作業記録を12/24の記事に書きましたが、このときはredsn0w(Mac OS X版)を使って作業をやりました。今回はredsn0wではなく、sn0wbreeze(2.9.14)というツールを使いました。sn0wbreezeはredsn0wと並ぶ有名な脱獄ツールですが、Mac OS X版は存在せずWindows版しか配布されていません。そのため、今回のiPhone 4のファームウェア更新作業はWindows 7 64bitを搭載したPCで行いました。

Windows PCでiPhoneファームウェアの更新を行う場合、そのPCにiTunesをインストールしておくことが必須条件になります。iPad/iPhone/iPod touch用のUSBドライバはiTunesに含まれており、iTunesと一緒にこれらのUSBドライバがインストールされていないと、脱獄ツールはiOSデバイスがPCに接続されていることを認識できません。Windows版のiTunesはAppleから配布されています。今回使用したPCにはすでにiTunes 11.1.3(本記事投稿時点の最新版)をインストール済みでしたが、このバージョンを一旦アンインストールして、少し古いバージョンのiTunes 11.0.5をインストールし直しました。iTunes 11.1.xではカスタムファームウェアを用いた復元時にエラーが発生する問題に遭遇すると、参考ページBに書かれていたからです。iTunesのアンインストールは、下のページから入手できるCopyTrans Drivers Installerというソフトを利用して行いました。

 iTunesと関連するAppleのソフトを完全にアンインストールする方法

以前Windows版iTunesをアンインストールしようとしたときに、「Apple Mobile Device Support」というコンポーネントを削除できずに大変困った経験を持っています。コントロールパネルの[プログラムと機能]から一つずつ手動でiTunesのコンポーネントを削除していくと、必ずこの状態になってしまいます。上のページから入手できるCopyTrans Drivers Installerを使うと、WindowsからiTunes本体と全コンポーネントをきれいさっばりとアンインストールしてくれます。

以降に、sn0wbreezeを用いたiPhoneファームウェアの更新方法について書いていきます。なお、以下の説明は次の条件を満たしていることを前提としています。
  • TinyUmbrella、redsn0w、iFaith等のツールを使って、更新対象iOSバージョンのSHSHを取得済みであること。

【注意事項】

脱獄ツールを用いたiPhoneのファームウェア更新は、製品および携帯キャリア・メーカー(Apple,ソフトバンク,au)の保証対象外となります。ご自分の責任の範囲において実施してください。いかなる結果を招いても、本サイトは一切の責任を負いかねます。

■sn0wbreezeによる脱獄版iOSファームウェア更新


  1. USBケーブルでiPhoneをPCに接続した状態で、sn0wbreezeを起動します。下がsn0wbreeze直後のウィンドウです。
    PrtSc140122_0007-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    このウィンドウには、sn0wbreezeの目的と性質に関する注意事項が表示されているだけです。[OK]ボタンを押すると、下のようなウィンドウに変わります。
    PrtSc140122_0008-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    sn0wbreezeのすべての処理はこのウィンドウから始まります。右下の[]ボタンを押すと、最初の処理ウィンドウへ移ります。

  2. このウィンドウでは、iPad/iPhone/iPod touchのファームウェアが格納されているファイル(拡張子がipswのファイル)を選択します。
    PrtSc140122_0009-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    左側の[Browse for an IPSW]ボタンは、すでにファームウェア・ファイルを取得済みの場合に使用します。右側の[Download iOS Firmwares]ボタンを押すと、sn0wbreezeによってiPhoneのファームウェア・ファイルをダウンロードすることもできます。

    左側の[Browse for an IPSW]ボタンを押すと、ファイル選択ダイアログが開くので、対象のファームウェア・ファイルを選択します(今回はiPhone 4をiOS 6.1.3へ更新するので、iPhone3,1_6.1.3_10B329_Restore.ipswというファイルを選択しました)。
    PrtSc140122_0010-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-840x5254
    ファームウェア・ファイルを選択すると、sn0wbreezeはその内容を検証します。ファームウェアに問題がなければ、下のようなウィンドウが表示されます。
    PrtSc140122_0011-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    右下の[]ボタンを押すと、次の処理ウィンドウへ移ります。

  3. このウィンドウでは、カスタムファームウェア作成処理の実行モードを選択します。
    PrtSc140122_0013-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    sn0wbreezeは以下の4つのカスタムファームウェア作成モードを持っています。

     iFaith Mode SHSHを組み込んだ脱獄版ファームウェアを作成する
     Simple Mode SHSHを組み込まない脱獄版ファームウェアを作成する
     Expert Mode オプションを指定して、脱獄版ファームウェアを作成する
     Baseband Preservation Mode ベースバンド情報を削除した非脱獄版ファームウェアを作成する

    iFaith Modeで作成したファームウェアのみ、iPhoneへ書き込む際にSHSHは不要となります。それ以外のモードで作成したファームウェアは、AppleまたはCydiaサーバーからSHSHを取得できないとiPhoneへ書き込むことはできません。また、いずれのモードで作成したファームウェアもiPhoneに搭載されている現状のベースバンドは維持されます。

    今回はiOS 6.1.3 SHSHを組み込んだ脱獄版カスタムファームウェアを作成するので、一番上の[iFaith Mode]を選びました。すると、手順2で選択済みのファームウェアとバージョンおよびデバイス種別が一致するSHSHを指定するように指示するウィンドウが表示されます。
    PrtSc140122_0017-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-359x146.png
    このウィンドウの[OK]ボタンを押すと、ファイル選択ダイアログが開くので、対象のSHSHファイルを選択します。
    PrtSc140122_9018-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-840x525
    SHSHファイルを選択すると、sn0wbreezeはその内容を検証します。SHSHに問題がなければ、下のようなウィンドウが表示されます。
    PrtSc140122_9019-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-272x146.png
    [OK]ボタンを押すと、次の処理ウィンドウへ移ります。

  4. このウィンドウでは、カスタムファームウェアに適用するいくつかのオプションを指定できます。
    PrtSc140122_0021-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    いずれも脱獄版ファームウェアに対する特殊なオプションなので、すべてデフォルト設定のままで問題ありません。このウィンドウの[Build IPSW]を選択状態にして、右下の[]ボタンを押します。

  5. すると、カスタムファームウェアの作成処理が開始されます。
    PrtSc140122_0027-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    なぜか処理中にPacManをやらないかと誘われますが、ここでは丁重にお断りしましょう。カスタムファームウェアの作成処理は3〜5分程かかります。
    PrtSc140122_0038-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    PrtSc140122_0040-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    カスタムファームウェアの作成が完了すると、下のようにウィンドウが表示されます。
    PrtSc140122_0041-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    カスタムファームウェアが格納されているファイルは、PCのデスクトップに作成されます(iFaith Modeで作成したカスタムファームウェアは、下のように00000<ECID Hexdecimal>_sn0wbreeze-<Device Type>-<Product Version>-<Build Version>_signed.ipswというファイル名になります)。
    PrtSc140122_9003-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-168x168.png
    ここでカスタムファームウェアのファイルが作成されたか確認して、そのファイル名を憶えておきましょう。手順8でこのファイルを指定する必要があるからです。上のウィンドウの[OK]ボタンを押すと、次の処理ウィンドウへ移ります。

  6. カスタムファームウェアを書き込むには、iPhoneをDFU(Device Firmware Upgrade)モードにする必要があります。下のウィンドウで指示されているとおり、一旦iPhoneの電源をOFFにします。
    PrtSc140122_0043-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    上のウィンドウの[Start]ボタンを押すと、iPhoneをDFUモードににするための手順が順次表示されます。
    PrtSc140122_0044-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    上の手順ウィンドウが表示されている間に、以下の操作を実行して、iPhoneをDFUモードします(上のウィンドウに表示される手順と若干異なっていますが、以下のとおりに操作すれば、経験的にiPhoneは確実にDFUモードになります)。

    1. パワーボタンを1秒程度押します(iPhoneの電源が入り、画面にAppleロゴが表示される)。
    2. パワーボタンを押したまま、同時にホームボタンを10秒間押します(iPhoneの画面が暗くなる)。
    3. パワーボタンを離して、そのままホームボタンを10秒間押し続けます。

    iPhoneがDFUモードになったことを検出すると、sn0wbreezeは下のようなウィンドウに変わり(このウィンドウに変わったら、iPhoneのホームボタンを離しても構いません)、いくつかのファイルをiPhoneへ転送します。
    PrtSc140126_0001-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-796x574
    上の処理が終わった後、下のようなウィンドウが表示されます。
    PrtSc140126_0002-sn0wbreeze-iPhone4_GSM-Upgrading_iOS6.1.3-390x205.png

  7. 上のウィンドウで指示されているとおり、ここでiTunesを起動します。DFUモードのiPhoneを検出して、起動後のiTunesは下のような表示になります。
    PrtSc140122_0056-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725

  8. <Shift>キーを押しながら[iPhone を復元]ボタンをクリックします(<Shift>キーを押さずに[iPhone を復元]ボタンをクリックすると、最新バージョンのiOSに更新されてしまいます)。
    PrtSc140122_0070-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725
    すると、ファイル選択ダイヤログが開くので、手順5でデスクトップに作成されたカスタムファームウェアのファイルを選択します。PrtSc140122_9057-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-840x525

  9. iTunesによって、iPhoneファームウェアの復元(更新)処理が実行されます。
    PrtSc140122_0060-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725
    iPhone 4の場合、ファームウェア更新処理は7〜10分程度かかります。この処理が実行されている間、iPhoneの画面にsn0wbreezeの雪マーク・ロゴとプログレスバーが表示されます。
    IMG_4033-20140126-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-320x427.jpg

  10. ファームウェア更新処理が終了すると、iPhoneは新しいファームウェアで再起動します。
    PrtSc140124_0013-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725

  11. ファームウェアの更新後、iPhoneは未アクティベート状態になっています。
    IMG_0001-20140122_180248-iPhone4_GSM-Activating_iOS6.1.3-320x480.png
    PrtSc140122_0061-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725
    携帯キャリアのSIM(アクティベート専用SIMでも可)をiPhoneに挿入し、iPhoneの初期設定を行います。
    IMG_0006-20140122_180812-iPhone4_GSM-Activating_iOS6.1.3-320x480.pngIMG_0009-20140122_181447-iPhone4_GSM-Activating_iOS6.1.3-320x480.png

    iPhoneの初期設定中に下のような画面が存在しますが、この画面でWi-Fiの設定と選択を行えば、iPhoneのアクティベート処理はWi-Fiネットワーク経由で実行されます。
    IMG_0001-20140124_134511-iPhone4_GSM-Activating_iOS6.1.3-320x480.pngIMG_0002-20140124_134525-iPhone4_GSM-Activating_iOS6.1.3-320x480.png

    上の画面で[iTunesに接続]を選択した場合は、確認の画面に続いて下のような画面になり、PC側でiTunesが起動していると、iTunes経由でiPhoneのアクティベート処理が実行されます(PC側ですでにiTunesが起動しており、アクティベート中のiPhoneを認識しない場合は、iTunesを再起動すると認識するようです)。
    IMG_0004-20140124_134618-iPhone4_GSM-Activating_iOS6.1.3-320x480.pngIMG_0003-20140124_134534-iPhone4_GSM-Activating_iOS6.1.3-320x480.png

    iPhoneの初期設定とアクティベートが終わると、iTunes側は下のようなウィンドウに変わります。
    PrtSc140122_0062-iTunes-iPhone4_GSM-Upgrading_iOS6.1.3-1100x725

  12. 初期設定が終わり、iPhoneにホーム画面が表示されたら、[設定]>[一般]>[情報]画面を開いて、iOSとベースバンドのバージョンを確認しておきましょう。
    IMG_0022-20140122_182446-iPhone4_GSM-Activating_iOS6.1.3-320x480.pngIMG_0025_1-20140122_182517-iPhone4_GSM-Activating_iOS6.1.3-320x480.png


■iBootyによる脱獄再起動


sn0wbreezeを使ってiPhone 4のファームウェアをiOS 6.1.3へ更新した場合、そのiPhone 4は仮脱獄状態になります。仮脱獄は「紐つき脱獄」(英語では「Tethered Jailbreak」)とも呼ばれ、USBケーブルでiPhoneとPCを接続した状態で、ツールを使って特殊な操作を行わないと脱獄状態になりません。この操作を行った後はiPhoneの脱獄状態は維持されますが、一旦iPhoneの電源を切って再起動すると、再度ツールを使って同じ操作を行う必要があります。

sn0wbreezeでカスタムファームウェアを作成した際に、PCのデスクトップに下のようなフォルダが作成されているはずです。このフォルダの中に格納されているiBooty.exeというプログラムが、iPhoneを脱獄状態に設定するためのツールです。
PrtSc140122_0004-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-168x168.pngPrtSc140125_0002-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-452x392.png

以下に、iBootyの使い方について説明します。
  1. USBケーブルでiPhoneとPCを接続した状態で、iBootyを起動します。iBootyが起動すると、下のようなウィンドウが開きます。
    PrtSc140122_0064-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-468x188.png
    右下の[Select your iDevice: ]プルダウンメニューから[iPhone 4-GSM](「iPhone 4 GSM」とは、SoftBank版のiPhone 4のことです)を選択します。

  2. すると、iBootyのウィンドウは下のような表示になります。
    PrtSc140122_0065-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-468x165.png
    ここで、iPhoneをDFUモードにする必要があります。iPhoneの電源を一旦OFFにした後、左側の[Start]ボタンを押します。すると、iBootyにはiPhoneをDFUモードにするための手順が表示されます。
    PrtSc140122_0068-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-468x165.png
    上の手順ウィンドウが表示されている間に、以下の操作を実行して、iPhoneをDFUモードにします。

    1. パワーボタンを1秒程度押します(iPhoneの電源が入り、画面にAppleロゴが表示される)。
    2. パワーボタンを押したまま、同時にホームボタンを10秒間押します(iPhoneの画面が暗くなる)。
    3. パワーボタンを離して、そのままホームボタンを10秒間押し続けます。

  3. iPhoneがDFUモードになったことを検出すると、iBootyは下のようなウィンドウに変わり(このウィンドウに変わったら、iPhoneのホームボタンを離しても構いません)、いくつかのファイルをiPhoneへ転送します。
    PrtSc140124_0001-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-468x165.png
    PrtSc140124_0004-iBooty-iPhone4_GSM-Booting_Tethered_iOS6.1.3-468x165.png
    上の処理が終わった後、iBootyはiPhoneを再起動します。

  4. 再起動後のiPhoneは脱獄状態に設定されており、電源をOFFにしないかぎり、脱獄状態は維持されます。


■p0sixspwnによる完全脱獄化


仮脱獄状態のiPhoneでは脱獄アプリを実行することができません。脱獄アプリの配布センターであるCydia Storeも脱獄アプリなので、仮脱獄状態のiPhoneでCydiaアプリを起動すると、強制終了してしまいます。iBootyを使って再起動したiPhoneは脱獄状態になっているので、Cydiaアプリを開くことができます。
IMG_0026-20140122_183705-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.pngIMG_0037-20140122_192115-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.png

iOS 6.1.3〜6.1.5を搭載したiPhoneを完全脱獄状態にするp0sixspwnというプログラムがCydia Storeで配布されているので、このプログラムをインストールしておくと良いでしょう。Cydia StoreのSearchページ内の検索対象エディットボックスに「P0」と入力すれば、アプリの候補として「p0sixspwn」が表示されます。この画面で「p0sixspwn」を選択すると、下のような画面が開きます。
IMG_0041-20140122_192207-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.pngIMG_0042-20140122_192216-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.png

上の画面の右上の[Install]ボタンを押すと、アプリをインストールする直前の確認画面が表示されます。この画面の[Confirm]ボタンを押せば、p0sixspwnのインストールが実行されます。
IMG_0043-20140122_192222-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.pngIMG_0044-20140122_192237-iPhone4_GSM-Cydia-Installing_p0sixspwn-320x480.png

p0sixspwnをインストールした後は、普通に再起動しても、iPhoneは脱獄状態を維持するようになります。そのため、iBootyは不要となります。

【2014/01/30 追記】

約一年ぶりにWindowsを数日間使いましたが、そのあまりの使い難くさに呆れてしまいました。グラフィックは荒くて配色が悪いし、フォントはバランスが悪くて視認性が低いし、Windowsの画面を観ていると頭が痛くなってきます。人間の自然な感覚に合っていない画面ばかりで、UIの操作性も憶え難くいこと極まりないです。毎日Macを使っていて久しぶりにWindowsを使うと、Windowsはつくづく不自然な作りのOSだと感じます。Macと比べてWindowsが優れている点など一つもないことを改めて実感しました。アプリやドライバを追加したり設定を変えるだけで動作が不安定になるし、普通にWebページを閲覧しているだけでウィルス感染の危険にさらされます。こんな使い難くくかつ低セキュリティなOSがいまだに広く使われていることが不思議でなりません。Macではこういう問題に遭遇することは皆無です。Windowsユーザーの本来の目的から外れた作業(左記のような問題を解決したり、アプリやドライバをインストールしたり、システムやアプリの設定を調べたり、Windows Updateやウィルス定義更新を実行するなどの諸々の作業)に消費する時間をすべて累計すると、全PC使用時間のなんと80%に達しているという統計データがあるそうです。WindowsからMacへ乗り換えたユーザーに聞いてみると良いでしょう。誰しも格段に作業効率が上がったと答えるはずです。Windowsを使うことは多大な時間の浪費であると、私は確信を持って断言できます。

【参考ページ】

  1. [iOS] iOS 6.1.3 / 6.1.5 〜A4デバイスを完全脱獄する方法 『p0sixspwn』 | Tools 4 Hack
  2. iTunes 11.1 ではCFWを使った復元でエラーが発生… & iTunes 11.0.5 に戻す方法 | Tools 4 Hack
  3. [〜A4] CFWで復元するときは、iREBを使ってPwnedDFUモードにするのが良い [iOS] | Tools 4 Hack
  4. [〜A4] iOS 6.1.3 を 仮脱獄する方法 「Sn0wbreeze 2.9.14」 | Tools 4 Hack


タグ:iphone iOS 脱獄
posted by とみやん at 20:06| Comment(0) | TrackBack(0) | モバイルデバイス > iOS

2014年01月20日

Xcode 5.0.2でのiOS実機開発環境の構築

Mac mini(OS X Mountain Lion)上のXcode 4.6.3にiOS実機開発環境を構築しましたが、同じMac上に共存させているXcode 5.0.2でも実機デバイスを利用できるように環境設定を行いました。

01/14の記事で行った作業で、すでにキーチェーンへの証明書の登録は済んでいるので、あとはXcode 5.0.2側でProvisioning Profileを取得すれば良いだけです。まずは、Xcode 5.0.2を起動して、Organizerを開きました。すると、Xcode 4.6.3まで存在していた[Provisioning Profiles]カテゴリがOrganizerウィンドウから消えていることに気がつきました。Xcode 4のOrganizerと比較すると、ずいぶん寂しいウィンドウになってしまっていますね。
SCShot140120_0031-Xcode5.0.2_Organizer-Obtaihing_Provisioning_Profiles-991x694
メジャー・バージョンアップで仕様が変わったのかなぁと思いながら、ググって調べてみると、やっぱりXcode 5から[Preferences]ウィンドウに[Accounts]というタブが新設されて、Provisioning Profileの取得と確認はこの[Accounts]タブ画面から行うようになったらしいです。さっそく[Xcode]>[Preferences]メニューを開いてみると、確かに[Accounts]タブが存在していました。
SCShot140120_0004-Xcode5.0.2_Accounts-Obtaihing_Provisioning_Profiles-750x592
左下の[]をクリックすると[Add Apple ID]というメニュー項目が存在したので、これを選択してみました。すると、ADCアカウントのApple IDとパスワードを入力するように要求されたので、それらを入力すると、下のようにウィンドウが表示されました。
SCShot140120_9015-Xcode5.0.2_Accounts-Obtaihing_Provisioning_Profiles-750x550
これでXcodeにADCのアカウント情報が登録されたようです。上のウィンドウの右下に[View Details]というボタンが存在することに気づいたので、このボタンを押してみました。すると、証明書とプロファイルの一覧情報が表示された下のようなウィンドウが現れました。
SCShot140120_9041-Xcode5.0.2_Accounts-Obtaihing_Provisioning_Profiles-750x564
この状態で、すでに全プロファイルを取得できているようです(何だか、また新しいプロファイルが追加されていますね。これもXcode 5が追加しているのかなぁ?)。アカウント情報を登録した時点で、Xcodeは自動的にiOS Provisioning Portalからプロファイルを取得しているみたいです。iOS Provisioning Portalで新しいプロファイルを作成した場合は、左下のRefresh(丸い矢印の)ボタンを押せば、Xcodeがローカルなプロファイル情報を更新してくれるんだと思います。

上記の操作を行った後、iOS Provisioning Portalに登録済みのデバイスをMacに接続すると、Organizerは下のような表示になりました。
SCShot140120_9054-Xcode5.0.2_Organizer-Obtaihing_Provisioning_Profiles-991x694
Organizerが自動的にデバイスに適合するプロファイルを設定してくれました。

これで、Xcode 5.0.2でも実機デバイスが使えるようになりました。既存のプロジェクトを実機デバイス用にビルドして、ちゃんとアプリが動くこもと確認できました。

【参考ページ】

 【開発者向け】iOS7で変わったXcode5の気になる変更点まとめ|iPhoneアプリのアプリ学園
 [iOS]Xcode5でのProvisioning Profileの管理: Seesaa京都アプリエンジニアブログ

タグ:iOS Xcode
posted by とみやん at 10:57| Comment(0) | TrackBack(0) | モバイルアプリ開発 > iOS

2014年01月17日

Xcode 3.2.6をインストールせずにiOS 4.3 SDKを取得する方法

前記事に書いたとおり、デスクトップ機のMac miniにもiOS実機開発環境を構築しました。これによって、iPhone 3GS(iOS 5.0.1搭載)でアプリのデバッグや動作テストができるようになりました。私はもう一台のiPhone 3GSを持っていますが、こちらのファームウェアは現状iOS 4.3.3になっています。やはりiOS 4.3を搭載したデバイスを一台は残しておきたいので、こちらのiPhone 3GSは当面このまま使っていくつもりです。MBA11上のXcode 4.3.3にはiOS 4.3 SDKを追加済みでしたが、Mac mini上のXcode 4.6.3へは追加していませんでした。

Mac mini(OS X 10.8 Mountain Lion搭載)にはXcode 4.6.3とXcode 5.0.2を共存させています。今回iOS 4.3 SDKを追加したのはXcode 4.6.3の方です。問題はiOS 4.3 SDKをどこから取得するかですが、iOS 4.3 SDKが収納されているのはXcode 3.2.6〜4.1だけです。この中のどれかを一旦Macへインストールして、iOS 4.3 SDKだけをコピーすれば良いのですが、いずれのバージョンもMountain Lionには対応していません。Xcode 3.2.6を無理やりMountain Lionへインストールするという手(2012/07/06の記事を参照)もありますが、手間がかかるので、この方法はあまりやりたくありませんでした。以前Mountain LionとiOS 4.3 Simulatorの組み合わせについて色々と調べたことがあります。このときに、Xcode 3.2.6のDMGイメージからパッケージを抜き出して利用しているシェルスクリプト(参考ページAにこのシェルスクリプトが掲載されています)を見つけました。このシェルスクリプトを読んでいるうちに、同様の方法によって、Xcode 3.2.6のDMGイメージからiOS SDK 4.3を抽出できるのではないかというアイデアを思いつきました。このアイデアを実際に試してみたら成功したので、以下にその方法を紹介します。

  1. Xcode 3.2.6(Xcode 3.2.6 and iOS SDK 4.3 for Snow Leopard)のDMGファイルをダブルクリックして、マウントします。ターミナルから以下のコマンドを実行しても、同じ操作を行えます。
    % hdiutil attach ~/Downloads/xcode_3.2.6_and_ios_sdk_4.3.dmg

  2. マウントされたDMGボリューム上にPacakgesというディレクトリが存在しています(Finderからはこのディレクトリは見えません)。この中に、Xcode 3.2.6を構成する全パッケージが格納されています。iPhoneSDK4_3.pkgというファイルがiOS 4.3 SDKが収納されているパッケージです。以下のコマンドを実行して、このパッケージを展開します。
    % pkgutil --expand /Volumes/Xcode\ and\ iOS\ SDK/Packages/iPhoneSDK4_3.pkg /tmp/XC326
    % cd /tmp/XC326
    % gzip -dc Payload | sudo cpio -i

    上のコマンドを実行すると、/tmp/XC326の下にPlatformsusrの2つのディレクリトが作成されます。

  3. iOS 4.3 SDK一式はPlatforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk以下に格納されているので、このディレクトリをXcode 4.6.3へコピーします。
    % sudo cp -Rp Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

  4. iPhoneSDK4_3.pkgの展開先として使った作業ディレクリトを削除します。
    % cd
    % sudo rm -rf /tmp/XC326

  5. Xcode 3.2.6のDMGボリュームをアンマウントします。以下のコマンドでも同じ操作が行えます。
    % hdiutil detach /Volumes/Xcode\ and\ iOS\ SDK

今回の作業対象はXcode 4.6.3でしたが、上記の方法によって、Xcode 4.2以降のすべてのバージョンへiOS 4.3 SDKを追加できるはずです。

上の操作を行った後、[ユーティリティ]>[システム情報]を開いて、Xcode 4.6.3のDeveloper Informationを確認すると、下のようになっていました。
SCShot140118_0010-Xcode4.6.3-Adding_iOS_4.3_SDK-OSX_MLion-750x761
xcodebuild -showsdks」コマンドでも同種の情報を確認できます。
% xcodebuild -showsdks
OS X SDKs:
Mac OS X 10.6 -sdk macosx10.6
Mac OS X 10.7 -sdk macosx10.7
OS X 10.8 -sdk macosx10.8

iOS SDKs:
iOS 4.3 -sdk iphoneos4.3
iOS 5.0 -sdk iphoneos5.0
iOS 5.1 -sdk iphoneos5.1
iOS 6.0 -sdk iphoneos6.0
iOS 6.1 -sdk iphoneos6.1

iOS Simulator SDKs:
Simulator - iOS 5.0 -sdk iphonesimulator5.0
Simulator - iOS 5.1 -sdk iphonesimulator5.1
Simulator - iOS 6.0 -sdk iphonesimulator6.0
Simulator - iOS 6.1 -sdk iphonesimulator6.1


この状態のXcode 4.6.3を使って、iOS 4.3実機デバイス用にアプリをビルドすることができるか試してみました。その結果は以下のようになりました。
 Apple LLVM compiler (Clang) 4.2 ARC関連のリンクエラーが発生(ビルド失敗)
 LLVM GCC 4.2  ビルド成功
 GCC 4.2  ビルド成功

コンパイラがClangの場合に発生するのは、下のようなエラーです。
SCShot140117_0020-Xcode_4.6.3-Adding_iOS_4.3_SDK-OSX_MLion-1140x619
上のエラーメッセージの中に存在する「arclite.o」というのは、多分iOS 5.0から導入されたメモリ管理機構ARC(Automatic Reference Counting)に関連するオブジェクトファイルではないかと想像しています。iOS 4.3ではARCは利用できないので、これを無効にする必要があるのではないかと思いますが、その方法が判りません(なぜClangのときだけ、arclite.oをリンクしようとするのか?)。このエラーはまだ解決できておらず、現在原因について調査中です。

コンパイラをLLVM GCCにすると、プロジェクトのビルドは問題なく通りました。ただし、[Build Settings]−[Architectures]の以下のどちらかの値を変えないとダメでした。
 [Build Active Architecture Only] No → Yes
 [Valid Architectures]  armv7 armv7s → armv7

この設定変更をやらないと、下のようなエラーが発生します(このエラーの解決方法は参考ページBに載っていました)。
SCShot140117_0026-Xcode_4.6.3-Adding_iOS_4.3_SDK-OSX_MLion-1140x428

最後のGCCは、2013/07/20の記事で紹介した方法によってXcode 4.6.3のCommand Line Tools(CLT)へ追加したコンパイラです(デフォルトのXcode 4.6.3ではGCCは利用できません)。こちらも一応プロジェクトのビルドは通りました。ただし、CLTにGCC 4.2を追加しただけではコマンドの参照関係でエラーが発生するので、Xcode側のファイル構成に特殊な工夫を施してこれを回避するようにしています。

プロジェクトのビルドが通ったLLVM GCCとGCCでは、アプリの実行イメージをiPhone 3GS(iOS 4.3.3搭載)へ転送して動作確認を行いましたが、いずれもOKでした。

Clangでビルドが通らないという問題は残っていますが、一応これでXcode 4.6.3でのiOS 4.3用実機開発環境は整いました。Mountain LionではiPad/iPhone 4.3 Simulatorは利用できませんが、実機デバイスが使えるので、iOS 4.3向けのアプリ開発はできるようになりました。

【2014/01/18 追記】

上の作業を行った後、Xcode 4.1(Xcode 4.1 for Lion)のDMGファイルに格納されているパッケージの内容を調べてみました。その結果、Xcode 4.1に収納されているiOS 4.3 SDKはXcode 3.2.6のものより若干バージョンが新しいことが判りました。そこで、Xcode 4.6.3に追加したiOS 4.3 SDKをXcode 4.1から抽出したものに置き換えました。以下に、その際の作業手順を記します。

  1. Xcode 4.1(Xcode 4.1 for Lion)のDMGファイルをダブルクリックして、マウントします。ターミナルから以下のコマンドを実行しても、同じ操作を行えます。
    % hdiutil attach ~/Downloads/installxcode_41_lion.dmg

  2. マウントされたDMGボリューム上のInstallXcodeLion.pkgというファイルにXcode 4.1の全パッケージが格納されています。ただし、このファイル自体もパッケージなので、以下のコマンドにより展開してやる必要があります。
    % pkgutil --expand /Volumes/Install\ Xcode/InstallXcodeLion.pkg /tmp/XC41
    % cd /tmp/XC41/InstallXcodeLion.pkg
    % gzip -dc Payload | cpio -i

    上のコマンドを実行すると、/tmp/XC41/InstallXcodeLion.pkgの下にApplicationsというディレクリトが作成されます。Xcode 4.1を構成するパッケージはApplications/Install\ Xcode.app/Contents/Resources/Packagesに格納されており、この中のiPhoneSDK4_3.pkgというファイルがiOS 4.3 SDKが収納されているパッケージです。以下のコマンドを実行して、このパッケージを展開します。
    % pkgutil --expand Applications/Install\ Xcode.app/Contents/Resources/Packages/iPhoneSDK4_3.pkg /tmp/XC41/pkg
    % cd /tmp/XC41/pkg
    % gzip -dc Payload | sudo cpio -i

    上のコマンドを実行すると、/tmp/XC41/pkgの下にPlatformsusrの2つのディレクリトが作成されます。

  3. iOS 4.3 SDK一式はPlatforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk以下に格納されているので、このディレクトリをXcode 4.6.3へコピーします。
    % sudo cp -Rp Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

  4. InstallXcodeLion.pkgiPhoneSDK4_3.pkgの展開先として使った作業ディレクリトを削除します。
    % cd
    % sudo rm -rf /tmp/XC41

  5. Xcode 4.1のDMGボリュームをアンマウントします。以下のコマンドでも同じ操作が行えます。
    % hdiutil detach /Volumes/Install\ Xcode

下のスクリーンショットが、Xcode 4.1から抽出したiOS 4.3 SDKに置き換えた後のXcode 4.6.3のDeveloper Information([ユーティリティ]>[システム情報]の[Developer]カテゴリの表示情報)です。
SCShot140118_0012-Xcode4.6.3-Adding_iOS_4.3_SDK-OSX_MLion-750x761
Xcode 3.2.6のiOS 4.3 SDKを入れていたときのDeveloper Informationと比較すると、下のように変化していることが判るかと思います。
 Xcode 3.2.6 → iOS SDK 4.3: (8F191m)
 Xcode 4.1 → iOS SDK 4.3: (8H7)


【参考ページ】

  1. xcodelegacy/XcodeLegacy.sh at master ・ devernay/xcodelegacy ・ GitHub
  2. objective c - File is universal (three slices), but it does not contain a(n) ARMv7-s slice error for static libraries on iOS, anyway to bypass? - Stack Overflow


タグ:iOS Xcode
posted by とみやん at 11:13| Comment(0) | TrackBack(0) | モバイルアプリ開発 > iOS

2014年01月14日

iOS実機開発環境を複数台のMacに構築する

01/07から始まる続き記事でiOSアプリを実機デバイスで動かす方法について書きましたが、じつは、本サイトを開設して以来一番書きたかったのがこれらの記事でした。結構大きな労力を使いましたが、念願の記事を書けた達成感を味わっているところです(自己満足かもしれませんが・・・)。一度この実機デバイス環境を構築すると、いつでもiPad/iPhone/iPod touchでアプリを動かせるので、iOSアプリ開発への意欲が自然に高まってきます。iOS Developer Programの年間ライセンス料は8,400円(本記事投稿時現在)ですが、この環境を使い始めてから、その価値の大きさを日々実感しています。

さて、現在私がメインに使っているPCはMacBook Air 11"(Mid 2011)です。室内でも外出先でもこいつをメインに使っていて、もう一台のMac miniはサブ機的な使い方になってしまっています(MacBook Air 13", Late 2010と合わせて現在3台のMacを所有しています)。プログラム開発をやっていると、一台のマシンに現状の全ファイルを集約したくなるので自然にこんな風になります。せっかくデスクトップ機のMac miniを持っているので、こちらの方にもiOS実機開発環境を構築しておくことにしました(近いうちに、このMac miniはOS X Marveriksへアップグレードしようと考えています)。備忘録を兼ねて、その作業記録を記事に書いておきます。同じ事をやろうとしている人は結構いそうなので、そんな方には役立つ記事になるでしょう。なお、Mac miniで使っているiOS開発環境はXcode 4.6.3(iOS 5.0, 5.1, 6.0 SDKを追加済み)です。

■証明書の移植


2台目のMacにiOS実機開発環境を構築する場合、最初にやらなければならないのは証明書をそのMacへインストールすることです。作成済みの証明書のファイルはADCのiOS Provisioning Portalサイトから取得できるので、これをもう一台のMacへインストールすれば良いだけに思えますが、じつは、それだけではダメです。証明書に紐づいている秘密鍵がないと、証明書を参照することができないからです。01/07の記事の『開発用証明書の作成とインストール』でCertificate Signing Request(CSR)というものを作成しましたが、このCSRと一緒に秘密鍵が作成され、自動的にキーチェーンアクセスへ登録されています。もう一台のMacへ証明書をインストールするには、この秘密鍵を移植してやる必要があります。別のMacへ証明書を移植する手順を以下に説明します。

  1. 証明書をインストール済みのMacで[ユーティリティ]>[キーチェーンアクセス]を起動して、[証明書]カテゴリを開きます。

  2. 証明書エントリの左端が右向き三角1マークになっている場合は、それをクリックしてください。すると、下のような表示になります。
    SCShot140113_9117-Keychain_Access-Exporting_Certificate_Private_Key-900x555

  3. 開発用証明書にリンクされている秘密鍵のコンテキストメニューを開いて、その中から["<鍵の名前>"を書き出す]を選択します。
    SCShot140113_9125-Keychain_Access-Exporting_Certificate_Private_Key-900x555

  4. すると、下のようなファイル保存ダイアログが開きます。
    SCShot140113_0129-Keychain_Access-Exporting_Certificate_Private_Key-900x555
    適当なファイル名をつけて、[保存]ボタンを押します。すると、秘密鍵ファイルにパスワードを設定するように求められます。
    SCShot140113_0091-Keychain_Access-Exporting_Certificate_Private_Key-433x278.png
    任意のパスワードを入力して[OK]ボタンを押すと(上の両方のエディットボックスを空にすると、パスワードは設定されません)、さらに下のようなウィンドウが表示されます。
    SCShot140113_0077-Keychain_Access-Exporting_Certificate_Private_Key-433x233.png
    ログインパスワードを入力して[許可]ボタンを押せば、秘密鍵ファイルが作成されます(デフォルトでは、秘密鍵ファイルは~/Library/Keychainsに保存されます)。

  5. 配布用証明書も存在する場合は、上と同様の手順で、その秘密鍵ファイルを作成します。
    SCShot140113_9127-Keychain_Access-Exporting_Certificate_Private_Key-900x555

  6. 上で作成した秘密鍵ファイルを、実機デバイス環境を構築しようとしているMacへコピーします。

  7. 秘密鍵ファイルをコピーしたMacでキーチェーンアクセスを開き、[証明書]カテゴリを選択します。
    SCShot140114_0002-Keychain_Access-Importing_Certificate_Private_Key-900x555

  8. 開発用証明書の秘密鍵ファイルをダブルクリックするか、キーチェーンアクセスのウィンドウへドラッグ&ドロップします。すると、秘密鍵ファイルのパスワードを入力するように求めるウィンドウが表示されます。
    SCShot140114_0008-Keychain_Access-Importing_Certificate_Private_Key-443x227.png
    手順4で秘密鍵ファイルに設定したパスワードを入力して、[OK]ボタンを押します。すると、キーチェーンアクセスの[証明書]カテゴリに開発用証明書のエントリが追加されます(同時に、[鍵]カテゴリにも秘密鍵のエントリが追加されます)。
    SCShot140114_9010-Keychain_Access-Importing_Certificate_Private_Key-900x555

  9. 配布用証明書の秘密鍵ファイルが存在する場合は、上と同様の手順で、そちらもキーチェーンアクセスへ追加します。
    SCShot140114_9025-Keychain_Access-Importing_Certificate_Private_Key-900x555
    これで、新しいMacへ証明書をインストールできました。


■Provisioning Profileの取得


キーチェーンアクセスに証明書が登録できたら、後はProvisioning Profileをインストールしてやれば、Xcodeで実機デバイスが使えるようになります。この作業はOrganizer(Xcodeに含まれているツール)単独で行うことができます。iOS Provisioning PortalからProvisioning Profileのファイルを取得しておく必要はありません。
  1. Xcodeを起動して、[Window]>[Organizer]メニューを選択します。

  2. Organizerのウィンドウが開いたら(Organizerウィンドウの上部に並んでいるボタンのうち[Devices]が選択されていない場合は、同ボタンを選択してください)、左側の[LIBRARY]−[Provisioning Profiles]を選択します。
    SCShot140114_0027-Xcode4.6.3_Organizer-Refreshing_ProvProfiles-991x694.png
    上のウィンドウの右側エリアの右下に存在する[Refresh]ボタンを押します。

  3. すると、OrganizerはiOS Provisioning Portalへログインしようとします。下のようなウインドウが表示されたら、自分のADCアカウントのApple IDとパスワードを入力します。
    SCShot140114_9029-Xcode4.6.3_Organizer-Refreshing_ProvProfiles-991x694.png
    すると、OrganizerはiOS Provisioning Portalから全プロファイルを取得する処理を開始します。しばらく待つと、下のように[LIBRARY]−[Provisioning Profiles]ウィンドウの右側エリアにプロファイル情報が追加されます。
    SCShot140114_9062-Xcode4.6.3_Organizer-Refreshing_ProvProfiles-991x694.png
    これで、新しいMacへProvisioning Profileがインストールされました。

  4. ここまでの操作が終わったら、実機デバイスをMacへ接続します。すると、Organizerウィンドウの左側の[DEVICES]エリアにそのデバイスのエントリが追加されます(デバイス名は自動的にiOS Provisioning Portalに登録済みの名前になります)。
    SCShot140114_9063-Xcode4.6.3_Organizer-Refreshing_ProvProfiles-991x694.png
    追加されたデバイス名の右横に存在するマークの色がグリーンで、右側エリアの[Provisioning]に値が設定されていることを確認してください。Xcodeでアプリを転送して実行できるのは、この状態のデバイスだけです。


以上の操作によって、新しいMac上にiOS実機デバイス環境を構築することができました。後は、01/09の記事で説明した『Xcodeの実機デバイス用設定』の手順6以降に従って、実機デバイス用にプロジェクトを設定してやれば良いだけです。プロジェクトの設定を変更したら、実際にアプリが実機デバイスで動くか確認してみると良いでしょう。

【2014/01/15 追記】

上記の『Provisioning Profileの取得』の手順3で取得したプロファイルの中に、自分で作成した憶えのない「iOS Team Provisioning Profile: *」という名前の開発用プロファイルが存在することに気づくかと思います。これはOrganizer(Xcode)が自動的に作成するプロファイルのようです。

iOS Provisioning Portalサイトで確認すると、下のようなApp IDとProvisioning Profileが追加されていました。
ASShot140114_9017-ADC-Examining_AppID_ProvProfile_Xcode_Managed-1000x914.png
ASShot140114_0019-ADC-Examining_AppID_ProvProfile_Xcode_Managed-1000x745.png
このプロファイルに組み込まれている「Xcode iOS Wildcard App ID」という名前のApp IDはBundle IDが「*」に設定されています。これだとアプリ側のBundle IDがどんな値でも一致するので、すべてのアプリで使うことができます。つまり、プロジェクトのBundle IDを変更する必要がなくなります(Xcodeさん、賢いですね)。

これらはiOS Provisioning Portalで削除することもできますが、最高の汎用性を持つプロファイルなので、削除しないで残したまま利用した方が良いでしょう。

【参考ページ】

 GClue blog: Xcodeで実機デバッグをするまでの手順(スクリーンショット付き)
 デベロッパー登録を更新し2台目のMacにiOS開発環境をセットアップするためのメモ ≪ イナヅマTVログ
 iPhone開発 複数台のMacで開発 実機転送まで - WEB周辺の話

タグ:iOS Xcode
posted by とみやん at 09:31| Comment(0) | TrackBack(0) | モバイルアプリ開発 > iOS

2014年01月11日

IPPのiOSデバイスリスト情報を更新した

ページ前記事を書くにあたって、久しぶりにApple Developer Connection(ADC)のiOS Provisioning Portal(IPP)サイトにアクセスしました。新しく開発ターゲット機として使うiPhone 3GSを登録するためにデバイス一覧ページを開いたら、下のような警告メッセージが表示されていました。
ASShot140108_9015-ADC-Updating_iOS_Device_List-1000x745
そして、このページの右上の[]ボタンがグレーアウト表示になっており押せない状態でした。何だろうと思いながら、[Get Started]ボタンを押してみると、下のようなページに変わりました。
ASShot140108_9016-ADC-Updating_iOS_Device_List-1000x782
どうやら登録済みのデバイス情報を更新するように促しているようです。1台しかデバイスを登録しておらず、そのチェックボックスがすでにONになっていたので、このまま[Continue]ボタンを押しました。すると、さらにページは下のような変わりました。
ASShot140108_9019-ADC-Updating_iOS_Device_List-1000x809
このページの[I acknowledge that …]チェックボックスをONにして、[Reset]ボタンを押すと、最後に下のようなページが表示されました。
ASShot140108_0020-ADC-Updating_iOS_Device_List-1000x745
これで、iOS Provisioning Portalに登録済みのデバイス情報が更新されたようです。このページに表示されているように、iOS Provisioning Portalに登録できるデバイスは年間100個までです。

デバイス一覧ページに戻ると、右上の[]ボタンが押せるようになっていました。
ASShot140108_9021-ADC-Updating_iOS_Device_List-1000x745
最初のページの警告メッセージに「Reset ...」という単語が含まれていたので、一瞬の全デバイス情報が削除されてしまうのかと思ってしまいました。

どうやら一年に一回iOS Provisioning Portalに登録済みのデバイス情報を更新しなければならないようです。iOS Developer Program年間ライセンスの更新時に登録可能なデバイス数がリセットされるので、それに伴って、既存のデバイス情報も更新する必要があるのでしょう。新しいデバイスを登録したい場合は、上の操作を行えば良いだけです。

【参考ページ】

 iOS Dev Center のデバイスリスト更新 | 餃子マナー
タグ:iOS
posted by とみやん at 17:43| Comment(0) | TrackBack(0) | モバイルアプリ開発 > iOS

2014年01月09日

iOSアプリをiPhone実機で動かす (3)

前記事の続きを書いていきます(こんなに長い記事になるとは・・・)。

■Xcodeの実機デバイス用設定


これで、やっとiOSアプリをiPhone実機上で動かすための環境が整いました。実際にやった方は結構面倒だと感じたかもしれませんが、ここまでの作業で証明書や認証関連の準備は完了しています(私が初めてこの作業をやったときは丸一日かかってしまいました。失敗したくなかったので、Google先生に教えてもらいながら慎重に進めた所為もありますが・・・)。後はXcodeを使ってアプリを実機デバイスで動かすだけですが、ただし、iOS Simulatorでアプリを動かす場合とはいくつか異なる点があります。以下に、Xcodeで開発したアプリを実機デバイスで動かす際に行うべき手順について説明します(前の2つの記事と合わせてここまで読んでいただいた方。もう少しですから、がんばって最後まで読んでください)。
  1. ターゲットのiPhoneをMacに接続した状態で、Xcodeを起動します。

  2. 実機デバイスで動作させるiOSアプリのプログジェクトを開きます。
    SCShot140111_0012-Xcode4.3.3_Project-Setting_Build_Run_Device-1366x742

  3. [Window]>[Organizer]メニューを選択して、Organizerのウィンドウを開きます(Organizerウィンドウの上部に並んでいるボタンのうち[Devices]が選択されていない場合は、同ボタンを選択してください)。
    SCShot140109_9008-Xcode4.3.3_Organizer-Device_Use_Development-991x694
    左側の[DEVICES]カテゴリから対象デバイス(iOS Provisioning Portalに登録済みで、Provisioning Profileが未設定のデバイス)を選択し、右側エリアに存在する[Use for Development]ボタンを押します。

  4. すると、OrganizerはiOS Provisioning Portalにログインしようとします。下のようなウインドウが表示されたら、自分のADCアカウントのApple IDとパスワードを入力します。
    SCShot140109_9034-Xcode4.3.3_Organizer-Device_Use_Development-991x678
    OrganizerにProvisioning Profileが登録済みなら、対象デバイスに対して適用可能なProvisioning Profile(以降「プロファイル」)が自動的に選択されます。

    なお、Macに配布用証明書がインストールされていない場合、下のようなウィンドウが表示されます。
    SCShot140109_9039-Xcode4.3.3_Organizer-Device_Use_Development-991x678
    Organizerを使って配布用証明書を作成することもできますが、当面iOSアプリのデバッグや動作テストしか行わない(当面App StoreでiOSアプリ製品をリリースする予定はない)なら、このウィンドウでは[Cancel]を選択すると良いでしょう。開発用証明書と同様の手順でiOS Provisioning Portalサイトで配布用証明書を作成して、Macへインストールすることもできます。

    対象デバイスに適合するプロファイルが設定されると、Organizerは下のような表示に変わります。
    SCShot140109_9041-Xcode4.3.3_Organizer-Device_Use_Development-991x678
    右側エリアの[Provisioning]の値が適切なプロファイル名になっていることを確認してください。

  5. これでOrganizerによるデバイスの設定は終わりですが、最後に、対象デバイスの名前を変更しておくことをお勧めます。新しく追加されたデバイスの名前はデフォルトではすべて「iPhone」や「iPad」になってしまうので、一定のルールで名前をつけておかないと、デバイスの数が増えてきたときに判別が難しくなってくるからです。
    SCShot140110_9014-Xcode4.3.3_Organizer-Device_Use_Development-991x678
    左側の対象デバイスの名前部分をクリックすると、その名前を変更することができます。自分で判り易いデバイス名にリネームしておきましょう。

  6. プログジェクトワークスペースのウィンドウに戻ります。

    同ウィンドウの左上に存在するターゲットデバイス・プルダウンメニューから、アプリを動作させたい実機デバイスを選択します(このプルダウンメニューの中に、Organizerでリネームしたデバイス名が項目として存在するはずです。下のとおり、なぜか本プルダウンメニューには2つの同名の実機デバイス項目が表示されます。一番上のメニュー項目を選択するとアプリは実機デバイスで起動しますが、上から二番目の同名メニュー項目を選択するとアプリは起動しませんでした。これらの現象の原因はいまのところ判っていません)。
    SCShot140110_0028-Xcode4.3.3_Project-Setting_Build_Run_Device-500x96.png
    SCShot140110_0026-Xcode4.3.3_Project-Setting_Build_Run_Device-500x124.png

  7. 続いて、TARGETS−<Appication Name>の[Summary]ページを開いて、[Bundle Identifier]の設定値を確認します。
    SCShot140109_9084-Xcode4.3.3_Project-Setting_Build_Run_Device-847x666
    この項目の値は、プロファイルに含まれるApp ID(Bundle ID)と一致していなければなりません。もし一致していない場合は、適切な値に書き換えてください(Bundle IDが「com.ourcompany.*」でアプリ名が「MyApp」なら、「com.ourcompany.MyApp」という値にします)。

  8. さらに、PROJECT−<Appication Name>の[Build Setting]ページを開いて、[Code Signing]の[Code Signing Identity]−[Debug]項目の設定値を確認します(Organizerで対象デバイスとプロファイルがリンク済みなら、この項目は自動的に適切な値に設定されるはずです)。
    SCShot140109_9081-Xcode4.3.3_Project-Setting_Build_Run_Device-1080x666
    手順4で対象デバイスにリンクされたプロファイル(上の例だと「TomyYann App Profile 02」)が、この項目に設定されていればOKです。もし適切なプロファイルが設定されていない場合は、同メニューの項目の中から対象のプロファイルを選択してください。

これで、実機デバイス用にアプリをビルドするためにXcodeで行うべき設定はすべて完了です。

プロジェクトワークスペースの左上の[Run]ボタン(Playマークのボタン)を押せば、プロジェクトのビルドとランが実行されます。
SCShot140110_0029-Xcode4.3.3_Project-Setting_Build_Run_Device-500x96.png
実機デバイス用にプロジェクトをビルドしようとすると、下のようなウィンドウが表示されます。
SCShot140109_0062-Xcode4.3.3_Project-Setting_Build_Run_Device-434x184.png
このウィンドウでは、[許可]または[常に許可]ボタンを押してください([常に許可]ボタンを押すと、次回からこのウィンドウは表示されません)。秘密鍵で保護された開発用証明書を利用してXcodeがアプリに署名しようとしているので、上のようなウィンドウが表示されます。

プロジェクトのビルド中にエラーが起きなければ、アプリの実行イメージが実機デバイスへ転送され、その起動画面がスクリーンに表示されるはずです(初めてiPhone実機でアプリが動いた瞬間きっと誰しも感激するでしょう。私は思わず「おー、ヤッター!」と叫んで、iPhoneに向かって柏手を打ってしまいました)。
IMG_3988_1-Xcode4.3.3-Running_BNR_Quiz-iPhone3GS_iOS5.0.1-320x427.pngIMG_3990_1-Xcode4.3.3-Running_BNR_Quiz-iPhone3GS_iOS5.0.1-320x427.png

iPhone Simulatorで実行したときと同様に、自分で開発したアプリがiPhone実機でもちゃんと動くのか触りまくりたくなるでしょう。どうぞ、思う存分やってください。
IMG_3991_1-Xcode4.3.3-Running_BNR_Quiz-iPhone3GS_iOS5.0.1-320x427.pngIMG_3992_1-Xcode4.3.3-Running_BNR_Quiz-iPhone3GS_iOS5.0.1-320x427.png

本当にお疲れ様でした(私が)。本ブログで最長の内容になってしまいました。やはり3つの記事に分割して正解でしたね。

ちなみに、本記事の説明では、2012/08/17の記事で紹介したQuizというサンプルアプリを用いました。下のスクリーンショットが、このアプリがiPhone 3GSで動いている様子です。
IMG_0022-20140110_120441-Xcode4.3.3-Running_Quiz-iPhone3GS_iOS5.0.1-320x480.pngIMG_0023-20140110_120449-Xcode4.3.3-Running_Quiz-iPhone3GS_iOS5.0.1-320x480.png

IMG_0027-20140110_120502-Xcode4.3.3-Running_Quiz-iPhone3GS_iOS5.0.1-320x480.pngIMG_0028-20140110_120505-Xcode4.3.3-Running_Quiz-iPhone3GS_iOS5.0.1-320x480.png

このQuizというサンプルアプリは、以下の書籍の第一章に掲載されている小さな練習用プログラムです。

iOS Programming: The Big Nerd Ranch Guide (4th Edition) (Big Nerd Ranch Guides)iOS Programming: The Big Nerd Ranch Guide (4th Edition) (Big Nerd Ranch Guides)
Joe Conway Aaron Hillegass Christian Keur

Big Nerd Ranch Guides 2014-02-20
売り上げランキング : 3486

Amazonで詳しく見る
by G-Tools

iOS Programming: The Big Nerd Ranch Guide (3rd Edition) (Big Nerd Ranch Guides)iOS Programming: The Big Nerd Ranch Guide (3rd Edition) (Big Nerd Ranch Guides)
Joe Conway Aaron Hillegass

Addison-Wesley Professional 2012-03-19
売り上げランキング : 39675

Amazonで詳しく見る
by G-Tools

iOS Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)iOS Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)
Joe Hillegass, Aaron Conway

Addison-Wesley Professional 2011-06-22
売り上げランキング : 106268

Amazonで詳しく見る
by G-Tools

iPhone Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)iPhone Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)
Aaron Conway, Joe Hillegass

Addison-Wesley Professional 2010-04-13
売り上げランキング : 116907

Amazonで詳しく見る
by G-Tools


私がいままで読んだ入門者向けのiOSプログラミング参考書の中では、この本がベストでした。洋書ですが、これからiOSアプリ開発をやろうとしている方に推薦します。米国Amazonではかなり評価の高い本です。上のとおり、すでに改訂第三版まで出版されており、今年の2月に改訂第四版が出るようです。最新版ではiOS 7とXcode 5に対応した内容に書き換わっているらしいです。第二版のみですが、翻訳本も出版されています。

iOSプログラミング 第2版iOSプログラミング 第2版
アーロン・ヒレガス ジョー・コンウェイ Aaron Hillegass Joe Conway 木南 英夫

ピアソン桐原 2011-12-21
売り上げランキング : 466798

Amazonで詳しく見る
by G-Tools

ただし、第二版はiOS 4.2とXcode 4.0をベースにしているので、翻訳本の内容はかなり古いです。第三版か第四版を読むことをお勧めします。

【2014/01/10 追記】

上記の手順7で説明した[Bundle Identifier]の値を変更し忘れると、プロジェクトのビルド時に下のようなエラーが起きます。
ASShot140110_0021-Xcode4.3.3_Project-Build_Target-Code_Signing_Error-1105x275
iPad/iPhone Simulator用にビルドする場合は、[Code Signing Identity]で指定したプロファイルのApp ID(Bundle ID)と[Bundle Identifier]の値の照合されないようで、このようなエラーは発生しません。[Bundle Identifier]は手動で設定する項目で、かつ実機デバイス用にビルドする場合しかエラーに遭遇しないので、「あっ、忘れていた」ということが良くあります。

【2014/01/11 追記】

上記の手順8について補足説明をしておきます。

[Build Setting]ページの[Code Signing]−[Code Signing Identity]には、以下の2つの設定項目が存在します。
 [Debug]   デバッグ用
 [Release] リリース用

[Debug]には開発用プロファイル(開発用証明書が組み込まれているプロファイル)を選択しなければなりませんが、[Release]には配布用プロファイル(配布用証明書が組み込まれているプロファイル)を選択するのが正しい設定の仕方のようです。開発用と配布用のどちらのプロファイルであるかは、これらのメニュー項目の先頭部分に表示されている「iPhone Developer」と「iPhone Distribution」で判別できます。

この2つの項目はXcodeによって自動的に設定されますが、Organizerに配布用プロファイルが登録されていないと、下のように、[Debug]と[Release]のどちらも開発用プロファイル(「iPhone Developer」)になってしまいます。
SCShot140111_0008-Xcode4.3.3_Project-Setting_Build_Run_Device-847x666
[Debug]はこのままで良いのですが、[Release]の方は「iPhone Distribution」のプロファイルに変更すべきです。しかし、配布用プロファイルが存在しないと、この設定項目のメニューは下のような表示になってしまいます。
SCShot140111_9009-Xcode4.3.3_Project-Setting_Build_Run_Device-1080x666
[iPhone Distribution]というメニュー項目を選択できますが、この項目には配布用プロファイルがリンクされていません。この状態で[Release]構成を選択して実機デバイス用にアプリをビルドすると、多分エラーになるのではないかと思います。

たとえiOSアプリをApp Storeで配布する予定がなくても、配布用の証明書とプロファイルを取得して、どちらもMacへインストールしておくべきなのかもしれません。

【2014/01/12 追記】

上の操作を行った後、ADCのiOS Provisioning Portalサイトにアクセスしたら、対象デバイスの名前が変更されていました。
ASShot140112_9002-ACD-Editing_iOS_Device_Registered-1000x745
上記の手順4を実行したときに、OrganizerがiOS Provisioning Portalに登録済みのデバイス名を更新しているようです。これを回避するために、手順4と手順5の順番は入れ替えた方が良さそうです。

ちなに、iOS Provisioning Portalに登録済みのデバイス名は変更することができます。上のページの対象デバイスをクリックすると、下のようなボタンが表示されます。
ASShot140112_9003-ACD-Editing_iOS_Device_Registered-1000x745
[Edit]ボタンを押すと、ページは下のように変わります。
ASShot140112_9005-ACD-Editing_iOS_Device_Registered-1000x745
[Name]エディットボックスに新しい名前を入力して、[Save]ボタンを押せば、デバイス名が書き換わります。

【参考ページ】

 [iOS]Xcodeで実機デバッグできるようにするための5つの手順 | iOS | ブログ | スーパーソフトウエア東京
 iOSデバイス(iPhone・iPad)実機テスト | Yasushi Noguchi Class
 iOS開発ガイド: アプリケーションのビルドと実行

タグ:iphone iOS Xcode
posted by とみやん at 15:50| Comment(0) | TrackBack(0) | モバイルアプリ開発 > iOS

2014年01月08日

iOSアプリをiPhone実機で動かす (2)

ページ前記事の続きを書いていきます。

■iOSデバイスの登録


  1. WebブラウザでADCサイトにアクセスし、ログインします。

  2. ADCにログイン後Member Centerページを開くと、下のようなページが表示されます。
    ASShot140108_0001-ADC-Member_Center-1000x656
    このページに存在する[Certificates, Identifiers & Profiles]メニューを選択します。すると、下のようなページが表示されます。
    ASShot140106_9202-ADC-Member_Center_CIP-1000x736
    このページの左側に存在する[Devices]メニューを選択します。

    なお、すでに「Certificates, Identifiers & Profiles」のいずれかのページを開いている場合は、左側に存在する[Devices]−[All]メニューをクリックしてください。
    ASShot140112_9008-ADC-Registering_iOS_Device-1000x745

  3. すると、下のようなページが表示されます。
    ASShot140108_9022-ADC-Registering_iOS_Device-1000x745
    iOSデバイスの登録はこのページから始まります(上のページは登録済みのデバイスが存在する場合に表示されるものです。デバイスが一つも登録されていないと、デバイス登録方法の概要について書かれた「Getting Started」ページが表示されます)。まずは、このページの右上に存在する[]ボタンを押します。

  4. すると、下のようなページが表示されます。
    ASShot140108_9024-ADC-Registering_iOS_Device-1000x1218
    これはiOSデバイスの属性情報を指定するためのページです。

    一つのデバイスを登録するだけなら、[Register Device]ラジオボタンを選択します。[Name]エディットボックスには、このデバイス登録情報につける名前を入力します。[UDID]には、デバイス固有のUDID(Unique Device Identifier)の値を入力します。このページ内の全項目の設定と入力が終わったら、[Continue]ボタンを押します。

    なお、デバイスのUDIDは以下の操作によって取得することができます。

    1. Xcodeを起動した後、[Window]>[Organizer]メニューを選択します。すると、下のようなOrganizerのウィンドウが開きます(Organizerウィンドウの上部に並んでいるボタンのうち[Devices]が選択されていない場合は、同ボタンを選択してください)。
      SCShot140109_9018-Xcode4.3.3_Organizer-Copying_Device_Identifier-991x694

    2. iOS Provisioning Portalに登録しようとしているデバイスをMacに接続します。すると、Organizerウィンドウの左側にそのデバイスのエントリが追加されます。
      SCShot140109_9008-Xcode4.3.3_Organizer-Copying_Device_Identifier-991x694
      右側エリアに表示されている[Identifier]の値がUDIDです。

    3. 追加されたデバイスのエントリを選択した状態でコンテキストメニューを開いて(<Control>キーを押しながらクリックするか、右ボタン・クリックでコンテキストメニューが開きます)、[Copy Device Identifier]メニューを選択します。
      SCShot140109_9010-Xcode4.3.3_Organizer-Copying_Device_Identifier-991x694
      これによって、デバイスのUDIDがクリップボードへコピーされます。

    4. Webブラウザに戻って、上のページの[UDID]エディットボックスにクリップボードの内容をペーストします。


  5. すると、登録しようとしているデバイス情報の確認ページが表示されます。
    ASShot140108_9025-ADC-Registering_iOS_Device-1000x879
    このページに表示されている内容を確認した上で、[Register]ボタンを押します。

  6. デバイスが登録されると、下のようなページが表示されます。
    ASShot140108_0026-ADC-Registering_iOS_Device-1000x745
    これで、デバイスの登録は完了です。


■Provisioning Profileの作成とインストール


  1. WebブラウザでADCサイトにアクセスし、ログインします。

  2. ADCにログイン後Member Centerページを開くと、下のようなページが表示されます。
    ASShot140108_0001-ADC-Member_Center-1000x656
    このページに存在する[Certificates, Identifiers & Profiles]メニューを選択します。すると、下のようなページが表示されます。
    ASShot140106_9302-ADC-Member_Center_CIP-1000x736
    このページの左側に存在する[Provisioning Profiles]メニューを選択します。

    なお、すでに「Certificates, Identifiers & Profiles」のいずれかのページを開いている場合は、左側に存在する[Provisioning Profile]−[All]メニューをクリックしてください。
    ASShot140112_9009-ADC-Registering_iOSAppDev_ProvProfile-1000x745

  3. すると、下のようなページが表示されます。
    ASShot140109_0052-ADC-Registering_iOSAppDev_ProvProfile-1000x745
    Provisioning Profileの作成はこのページから始まります(上のページは登録済みのProvisioning Profileが存在する場合に表示されるものです。Provisioning Profileが一つも登録されていないと、Provisioning Profile登録方法の概要について書かれた「Getting Started」ページが表示されます)。まずは、このページの右上に存在する[]ボタンを押します。

  4. すると、下のようなページが表示されます。
    ASShot140109_0031-ADC-Registering_iOSAppDev_ProvProfile-1000x886
    これはProvisioning Profileの種類を指定するためのページです。

    [Development]が開発時に、[Distribution]が製品リリース時に使用するProvisioning Profileです。今回作成したいのはiOSアプリのデバッグや動作テスト用に使うProvisioning Profileなので、このページで選択すべきなのは[iOS App Development]ラジオボタンです。この項目を選択した状態で、[Continue]ボタンを押します。

  5. すると、ページは下のような変わります。
    ASShot140109_9032-ADC-Registering_iOSAppDev_ProvProfile-1000x779
    このページでは、Provisioning Profileに組み込むApp IDを指定します。[App ID]ドロップダウンメニューから対象のApp IDを選択したら、[Continue]ボタンを押します。

  6. すると、ページは下のような変わります。
    ASShot140109_0034-ADC-Registering_iOSAppDev_ProvProfile-1000x745
    このページでは、Provisioning Profileに組み込む証明書を指定します。対象の証明書のチェックボタンをONにして、[Continue]ボタンを押します。

  7. すると、さらにページは下のような変わります。
    ASShot140109_0036-ADC-Registering_iOSAppDev_ProvProfile-1000x745
    このページでは、Provisioning Profileに組み込むデバイスを指定します(上では一つのデバイスしか選択していませんが、複数のデバイスに対応したProvisioning Profileを作成することも可能です)。デバイスの選択が済んだら、[Continue]ボタンを押します。

  8. すると、さらに続けてページは下のような変わります。
    ASShot140109_9045-ADC-Registering_iOSAppDev_ProvProfile-1000x787
    [Profile Name]エディットボックスにProvisioning Profileの名前を入力した上で、[Generate]ボタンを押します。〔※上では[Profile Name]を「TomyYann App Profile 02」にしましたが、「TomyYann Developer Profile 02」の方が良かったかもしれません。配布用プロファイルを作成する場合に、そちらの名前を「TomyYann Distribution Profile」とするとバランスが良いからです〕

  9. Provisioning Profileが作成されると、下のようなページが表示されます。
    ASShot140109_9053-ADC-Registering_iOSAppDev_ProvProfile-1000x886
    このページの[Download]ボタンを押せば、作成されたProvisioning Profileのファイルをダウンロードできます(手順8で[Profile Name]エディットボックスに入力した名前がProvisioning Profileのファイル名になます。上の例の場合、TomyYann_App_Profile_02.mobileprovisionというファイル名になります)。

  10. Provisioning ProfileをMacへインストールするには、Organizerを使います。Xcodeを起動した後、[Window]>[Organizer]メニューを選択して、Organizerのウィンドウを開きます(Organizerウィンドウの上部に並んでいるボタンのうち{Devices]が選択されていない場合は、同ボタンを選択してください)。

  11. 左側の[LIBRARY]−[Provisioning Profile]を選択した状態で、右側エリアの左下に存在する[Import]ボタンを押します。
    SCShot140109_9032-Xcode4.3.3_Organizer-Installing_ProvProfile-991x678
    すると、ファイル選択ダイヤログが開くので、上で取得したProvisioning Profileファイルを選択します。
    SCShot140110_9017-Xcode4.3.3_Organizer-Installing_ProvProfile-991x678

  12. OrganizerにProvisioning Profileの情報が追加されます。
    SCShot140109_9033-Xcode4.3.3_Organizer-Installing_ProvProfile-991x678
    これで、MacへProvisioning Profileをインストールできしました。


次の記事に続きます(やっぱり長い内容なってしまいました)。

タグ:iphone iOS Xcode
posted by とみやん at 05:45| Comment(0) | TrackBack(0) | モバイルアプリ開発 > iOS

2014年01月07日

iOSアプリをiPhone実機で動かす (1)

とうとう年末年始の休み期間も終わりましたね。皆様はどんな正月でしたか。信州は雪も降らず、珍しく晴天続きの穏やかな正月でした。ただし、厳しい冷え込みは相変わらずで、これからさらに寒さが厳しくなってくるので風邪をひかないように気をつけないといけません(中信地域の年間最低気温を記録するのは大抵1月末〜2月初頭で、街中で-10℃前後、山中だと-15℃以下まで下がることもあります)。全国的に昨日が仕事初めだったみたいですね。私もそうだったのですが、年明け最初の平日ということもあり、プライベートな用事がいくつも重なって日中はそちらにほとんどの時間を取られてしまいました。やっと仕事に取りかかったのは夕方になってからでした。

さて、これが今年3番目に記事になりますが、前の2つの記事は休暇中にリラックス気分で書いたので、何だかまとまりがなくて散漫な内容になってしまっている気がします。今度は実用的な内容にしようと思って少し悩んでいましたが、Xcodeで開発したiOSアプリをiPhone実機上で動かす方法について書くことにしました。

去年の8月に1台目のiPhone 4を入手しましたが、その一ヶ月後に、参考書を読みながら勉強で開発したiOSアプリをこいつで動かしてみました。もちろん上手くいったのですが、ただし、本業の仕事の関係で一日しか時間が取れなかったので、焦って作業をやってしまい、このときは記録やスクリーンショットなどを残せませんでした。

去年末に入手したiPhone 3GSを開発ターゲット機として使い始めるにあたって、今度こそその過程をブログ記事に書こうと思って、作業の全工程の記録をちゃんと取りました。本記事で、iOSアプリをiPhone実機で動かすまでの完全な手順を紹介します。同様の情報はググればたんさんヒットするので、これらの情報を参照すれば行うことはできるでしょう。しかし、この作業はかなり複雑でいくつもの工程をしっかりと踏みながらやらないと成功しません。他人の情報に頼るより自分自身で実行した記録をちゃんと残しておきたいと思いました。自分のための備忘録の意味合いが強い記事になりますが、これから同じ作業をやろうとしている方の参考になれば幸いです。

前回のiOSアプリの実機動作テストはXcode 3.2.6とiPhone 4(iOS 4.3.3搭載)でやりましたが、いまだにXcode 3を使っているユーザーは少ないでしょうし、iOS 4.3用にアプリを開発しているプログラマも少数派ではないかと思います。そう言いながらも、じつは、こだわりがあって私は少し前までメインに使っていたのはXcode 3で、アプリ開発の勉強はiOS 4.3ベースでやっていました。しかし、さすがにそんなこだわりを持ち続けるのはもう時代遅れだと悟って、去年末に完全にXcode 4へ乗り換えました(すでにXcode 5.0.2もリリースされているので、本当にいまさらという感じですね)。という訳で、今回は以下の組み合わせでiOSアプリの実機動作テストを行いました。
 開発環境  Xcode 4.3.3(収納されているのはiOS 5.1 SDKだけだが、iOS 4.3, 5.0 SDKを追加済み)
 ターゲット iPhone 3GS(iOS 5.0.1搭載)

iOSアプリをiPhone/iPad/iPod touchの実機で動かすには、Apple Developer Connection(ADC)サイトで各種の手続きを行う必要がありますが、これらの手続きが行えるのは有料のiOS Developer Programを購入してADCに登録済みのユーザーだけです。

■開発用証明書の作成とインストール


  1. WebブラウザでADCサイトにアクセスし、ログインします。

  2. ADCにログイン後Member Centerページを開くと、下のようなページが表示されます。
    ASShot140108_0001-ADC-Member_Center-1000x656
    このページに存在する[Certificates, Identifiers & Profiles]メニューを選択します。すると、下のようなページが開きます([Certificates, Identifiers & Profiles]メニューを選択したときに表示されるサイト全体を「iOS Provisioning Portal」と呼びます)。
    ASShot140106_9002-ADC-Member_Center_CIP-1000x736
    このページの左側に存在する[Certificates]メニューを選択します。

  3. すると、下のようなページが表示されます。
    ASShot140106_0003-ADC-Registering_iOSAppDev_Certificate-1000x966
    開発用証明書の作成はこのページから始まります。まずは、このページの右上に存在する[]ボタンを押します。

  4. すると、下のようなページが表示されます。
    ASShot140106_0005-ADC-Registering_iOSAppDev_Certificate-1000x1284
    これは証明書の種類を指定するためのページです。

    [Development]が開発時に、[Production]が製品リリース時に使用する証明書です。今回作成したいのはiOSアプリのデバッグや動作テスト用に使う証明書なので、このページで選択すべきなのは[iOS App Development]ラジオボタンです。この項目を選択した状態で、[Continue]ボタンを押します。

  5. すると、下のようなページが表示されます。
    ASShot140106_0006-ADC-Registering_iOSAppDev_Certificate-1000x867
    ADCから開発用証明書を発行してもらうには、Certificate Signing Request(CSR)というものを作成してADCへ送信する必要があります。上のページに表示されているのは、このCSRを作成するための手順です。これ以降、この手順に従って、MacでCSRを作成していきます。

  6. まずは、[ユーティリティ]>[キーチェーンアクセス]を起動します。

  7. キーチェーインアクセスが起動したら、[環境設定]メニューを選択して、その中に存在する[証明書]タブを開きます。
    ASShot140106_0032-Keychain_Access-Creating_CSR-777x303
    上の[オンライン証明書状況プロトコル(OCSP)]と[証明書失効リスト(CRL)]のドロップダウンメニューを両方とも[切]に設定します。

  8. [証明書アシスタント]>[証明局に証明書を要求]メニューを選択します。すると、下のようなウィンドウが開きます。
    ASShot140107_9024-Keychain_Access-Creating_CSR-616x436.png
    このウィンドウのエディットボックスに下のような情報を入力します。また、ボタン項目も下のように設定します。〔※上では[通称]を「TomyYann Devel Key」にしましたが、「TomyYann Developer Key」の方が良かったかもしれません。配布用証明書を作成する場合に、そちらの鍵の名前を「TomyYann Distribution Key」とするとバランスが良いからです〕
     ユーザーのメールアドレス:自分のメールアドレス(ADCアカウントのメールアドレスを使うぺき?)
     通称          :証明書に適用する鍵ペアの名前(任意の名前)
     CAのメールアドレス   :空欄のまま
     要求の処理       :[ディスクに保存]を選択
                  [鍵ペア情報を指定] → ON

    エディットボックスの入力とボタン項目の設定が済んだら、[続ける]ボタンを押します。

  9. すると、ファイル保存ダイヤログが開くので、CSRファイルの名前と保存先を指定します。ASShot140106_0041-Keychain_Access-Creating_CSR-616x436.png
    続いて、証明書に適用する鍵ペア(秘密鍵と公開鍵)の形式を指定するためのウィンドウが開きます。
    ASShot140106_0038-Keychain_Access-Creating_CSR-616x436.png
    いずれの設定項目も変更せず、[続ける]ボタンを押します。最後に、CSRファイルが作成されて、下のようなウィンドウが表示されます。
    ASShot140106_0039-Keychain_Access-Creating_CSR-616x436.png
    [Finder に表示]ボタンを押すと、Finderが開いてCSRファイルを確認することができます。

  10. CSRファイルが作成できたら、Webブラウザに戻り、手順5で開いていたページの[Continue]ボタンを押します。
    ASShot140106_9006-ADC-Registering_iOSAppDev_Certificate-1000x867

  11. すると、ページは下のような変わります。
    ASShot140106_0007-ADC-Registering_iOSAppDev_Certificate-1000x818
    [Choose File]ボタンを押すと、ファイル選択ダイヤログが開くので、上で作成したCSRファイルを選択します。
    ASShot140106_0008-ADC-Registering_iOSAppDev_Certificate-1000x818
    CSRファイルの選択が済んだら、[Generate]ボタンを押します。

  12. 無事に証明書が作成されると、下のようなページが表示されます。
    ASShot140106_0009-ADC-Registering_iOSAppDev_Certificate-1000x916
    このページの[Download]ボタンを押せば、作成された証明書のファイルをダウンロードできます(私が取得したときは、開発用証明書のファイル名はios_development.cerでした)。

  13. 上で取得した証明書ファイルをダブルクリックかキーチェーンアクセスにドラッグ&ドロップします。すると、キーチェーンアクセスの[証明書]カテゴリの中にそのエントリが追加されます。
    ASShot140107_9033-Keychain_Access-Installing_Certificate-900x555
    これで、MacへiOSアプリの開発用証明書をインストールできました。


■App IDの登録


  1. WebブラウザでADCサイトにアクセスし、ログインします。

  2. ADCにログイン後Member Centerページを開くと、下のようなページが表示されます。
    ASShot140108_0001-ADC-Member_Center-1000x656
    このページに存在する[Certificates, Identifiers & Profiles]メニューを選択します。すると、下のようなページが表示されます。
    ASShot140106_9102-ADC-Member_Center_CIP-1000x736
    このページの左側に存在する[Identifiers]メニューを選択します。

    なお、すでに「Certificates, Identifiers & Profiles」のいずれかのページを開いている場合は、左側に存在する[Identifiers]−[App IDs]メニューをクリックしてください。
    ASShot140112_0007-ADC-Registering_AppID_Identifier-1000x745

  3. すると、下のようなページが表示されます。
    ASShot140106_0014-ADC-Registering_AppID_Identifier-1000x966
    App IDの登録はこのページから始まります。まずは、このページの右上に存在する[]ボタンを押します。

  4. すると、下のようなページが表示されます。
    ASShot140107_9046-ADC-Registering_AppID_Identifier-1000x1837
    これはApp IDの属性情報を指定するためのページです。

    [App ID Description]−[Name]エディットボックスには、このApp ID登録情報につける名前を入力します。

    [App ID Prefix]はApp IDの接頭詞となる値で、Team IDが固定的に使用されます(Team IDはiOS Developer Program登録時に自動的に割り当てられます。一つのアカウントで複数のiOS Developer Programライセンスを取得していると、それぞれにTeam IDが割り当てられるので、その場合は複数のTeam IDから選択できます)。

    [App ID Suffix]はApp IDの接尾詞で、これにはできるだけユニークな文字列を指定する必要があります。App ID Suffixの前半部分は、慣例的にユーザーが持つドメイン名を逆並びにした文字列(ドメイン名が「ourcompany.com」なら「com.ourcompany」)を用います(ドメイン名を持っていない個人なら、「com.taroyamada」みたいに適当に決めても構いませんが、できるだけユニークな文字列にすることをお勧めします)。[Explicit App ID]ラジオボックスは、ユーザーが自分自身でアプリ毎にユニークな名前をつける場合に選択します(この形式のApp IDは、アプリ毎に一つずつ登録して使用します)。こちらの形式を選択した場合、ドメイン名を逆並びにした文字列にアプリの固有名を付加した「com.ourcompany.MyApp」のような文字列を[Bundle ID]エディットボックスに入力します。もう一方の[Wildcard App ID]という形式を選択する場合は、[Bundle ID]に「com.ourcompany.*」(最後は必ずアスタリクス)のような文字列を入力します。これによって、「*」部分に相当するアプリ固有名はユーザーが任意に決めることができます。後者の形式の方が汎用性が高いので、開発用のApp IDとしてはこちらがお勧めです。

    最後の[App Services]はアプリに組み込む特殊なサービス機能の選択です。いずれのサービス機能もアプリに組み込まないなら、すべてのチェックボックスをOFFにしておきます。

    このページ内の全項目の入力と設定が終わったら、[Continue]ボタンを押します。

  5. すると、登録しようとしているApp ID情報の確認ページが表示されます。
    ASShot140106_9023-ADC-Registering_AppID_Identifier-1000x1006
    このページに表示されている内容を確認した上で、[Submit]ボタンを押します。

  6. App IDが登録されると、下のようなページが表示されます。
    ASShot140106_9020-ADC-Registering_AppID_Identifier-1000x986
    これで、App IDの登録は完了です。


次の記事に続きます(何だかすごく長い内容になりそうな・・・)。

タグ:iphone iOS
posted by とみやん at 06:23| Comment(2) | TrackBack(0) | モバイルアプリ開発 > iOS

2014年01月04日

GitHubにdofilesリポジトリを作成した

前記事にGitHubのアカウントを登録したことを書きましたが、さっそくGitHubにリポジトリを作成してみました。予告どおり、最初のリポジトリはdotfilesです。.bashrc.vimrcなどの「.」で始まるファイルをこのリポジトリ格納しています。他のユーザーに利用してもらうことを前提に凝った内容のドットファイルを公開している人もいますが(「GitHub dotfiles」でググるとたんさんのページがヒットします。「こういうテクニックがあるのかぁ!」というようなTipsがいくつも見つかるはずです)、私の場合は、あくまで自分専用のプライベートなリポジトリです(と言っても、公開リポジトリなので誰でも参照できてしまいますが)。MacやLinux環境のドットファイルを一元的に管理するのがこのリポジトリの目的です。具体的には、「git clone」コマンドでdotfilesリポジトリのファイルを取得して、それらファイルのシンボリックリンクをホームディレクトリ直下に作成するというやり方で利用します。

■GitHubへのSSH公開鍵登録


GitHubにリポジトリを作成する前に、最初にやっておかなけはれならないことがあります。それは、GitHubへのSSH公開鍵の登録です。gitコマンドを使ってGitHubのリポジトリへのアクセスする際にSSH経由で接続するからです。まずは、ssh-keygenコマンドを使ってSSH鍵ペア(秘密鍵と公開鍵)を作成します。
% mkdir ~/.ssh/github
% ssh-keygen -t rsa -C "yourname@xyzzyxxyz.jp" -f ~/.ssh/github/id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/LOGINHOME/.ssh/github/id_rsa.
Your public key has been saved in /Users/LOGINHOME/.ssh/github/id_rsa.pub.
The key fingerprint is:
93:31:48:88:de:cb:37:ea:9c:9d:5f:01:79:93:c7:cf yourname@xyzzyxxyz.jp
The key's randomart image is:
+--[ RSA 2048]----+
| . .. |
| . .. . . o |
| . . . = + o |
| . . * o o |
| . . S . E |
| o o . . |
| o . . |
| ..o . . |
| .+ o.. |
+-----------------+

上の操作によって、以下の2つのSSH鍵(いずれもRSA 2048ビット形式)が作成されます。

 ~/.ssh/github/id_rsa     SSH秘密鍵
 ~/.ssh/github/id_rsa.pub SSH公開鍵

デフォルトのSSH鍵の格納先は~/.sshですが、~/.ssh/githubというディレクトリを作成してそちらに格納することにします。私の場合、さくらのVPSのクラウドPCへアクセスするためのSSH鍵も作成済みなので、これらと区別するためです。

SSH秘密鍵と公開鍵を作成したら、自分以外のユーザーがそれらの内容を参照できないようにするため、ファイルのパーミションを変更しておきます。
% chmod 600 ~/.ssh/github/*

ssh-keygenコマンドによって作成されたSSH公開鍵の内容を確認します。
% cat ~/.ssh/github/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0voXZsGtiGasZR/AEZa/ATRMrHjog3hfqZsIHhPflikKnsmyX+6
8eV+Kgs37/yFzUbexn2CP+JloXiQNBxlza/+bWhkg2q8KdeH29N+7IUj/W+NORQ/WEGRoQEj0YIAEqmarQ2cG0N/Ow
KcHO7dID9Aofjrg5QFDmq84qNRtNMq/GK0ymo5GI7nlrEN4L99uX/3ieE6U3E8HE30pKlUMZdZSso2ic1vnYzS5LKu
VXtzwdeuWPbYPl4+pwJaoL9Pb6pEwLhdbCFJbgFfjWvWthuCmvfhYlxnhKsd77oXJSZIZrl9AInT4OyZJ3mKYlphdi
zN7LbqCCjVUbKNY6hHdx yourname@xyzzyxxyz.jp

続いて、上で作成したSSH公開鍵をGitHubへ登録していきます。
  1. Webブラウザで自分のGitHubアカウントのDashboardページを開き、[Account settings]ボタンを押します。
    ASShot140104_0001-GitHub-Registering_SSH_Key-1020x828

  2. すると、下のようなページに変わります。
    ASShot140104_0002-GitHub-Registering_SSH_Key-1020x926
    左側の[SSH Keys]メニューを選択すると、下のようなページに変わります。
    ASShot140104_0003-GitHub-Registering_SSH_Key-1020x714

  3. 右側に存在する[Add SSH Key]をボタンを押すと、さらに下のようなページに変わります。
    ASShot140104_0004-GitHub-Registering_SSH_Key-1020x806
    作成済みのSSH公開鍵~/.ssh/github/id_rsa.pubの内容を[Key]エディットボックス内へコピべした上で([Title]エディットボックスの入力はオプション)、[Add key]ボタンを押します。

  4. パスワードの入力を求められので、GitHubアカウントの登録時に決めたパスワードを入力した上で、[Confirm password]ボタンを押します。
    ASShot140104_0007-GitHub-Registering_SSH_Key-1020x654
    下のようなページが表示されれば、SSH公開鍵の登録は完了です。
    ASShot140104_0008-GitHub-Registering_SSH_Key-1020x714

  5. MacからSSH経由で接続ができるか確認するため、下のコマンドを実行します。
    % ssh -T -i ~/.ssh/github/id_rsa git@github.com
    The authenticity of host 'github.com (192.30.252.130)' can't be established.
    RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'github.com,192.30.252.130' (RSA) to the list of known hosts.
    Hi yourname! You've successfully authenticated, but GitHub does not provide shell access.

    このコマンドの実行中に、下のようなウィンドウが表示されて、SSH秘密鍵id_rsaのパスワードを入力するように要求されます。
    SCShot140102_0021-GitHub-Registering_SSH_Key-444x251.png
    ここで入力すべきなのは、SSH鍵ペアを作成する際に設定したパスフレーズ(passphrase)です。このウィンドウの[パスワードをキーチェーンに保存]チェックボックスをONにしておきます。すると、この情報がキーチェーンに保存され、次回からGitHubへアクセスする際にSSH鍵パスフレーズの入力を省略できるようになります。

  6. sshコマンドは、デフォルトでは~/.ssh/id_rsaに存在するSSH秘密鍵を使います。上のとおり、「-i」オプションによってSSH秘密鍵ファイルのパスを指定することができますが、毎回このオプションを入力するのは面倒です。そこで、SSHのコンフィグレーションファイル~/.ssh/configに以下のような設定を追加します。
    % vi ~/.ssh/config
    Host github
    HostName github.com
    IdentityFile ~/.ssh/github/id_rsa

    これによって、GitHubに接続する際に、sshコマンドの「-i」オプションを省略できるようになります。下のコマンドを実行して、GitHubに接続できることを再度確認します。
    % ssh -T git@github.com
    Hi yourname! You've successfully authenticated, but GitHub does not provide shell access.



■GitHubへのリポジトリ追加


これで準備が整って、やっとリポジトリが作成できるようになりました。GitHubに新しいリポジトリを追加していきます。
  1. GitHubアカウントのDashboardページを開き、[Create a new repo]ボタンを押します。
    ASShot140104_9001-GitHub-Registering_SSH_Key-1020x8284

  2. すると、下のようなページが開きます。このページの[Repository name]エディットボックスに新しく作成するリポジトリの名前を、[Description (optional)]にリポジトリの簡単な説明文を入力します([Description (optional)]はオプションですが、必ず入力しておいた方が良いでしょう)。
    ASShot140104_0018-GitHub-Creating_New_Repository-1020x654

  3. [Create repository]ボタンを押すと、新しいリポジトリが作成されて、下のようなページが開ます。
    ASShot140104_0014-GitHub-Creating_New_Repository-1020x776これで、GitHub上にdotfilesリポジトリが作成できました。

  4. これ以降、dotfilesのローカルリポジトリを作成していきます。最初に次の2つのコマンドを実行します。
    % git config --global user.name "YOUR NAME"
    % git config --global user.email "yourname@xyzzyxxyz.jp"

    これらのコマンドは、全ローカルリポジトリに適用するユーザー名とメールアドレスを設定しています。

  5. 続いて、dotfilesのローカルリポジトリ・ディレクトリに相当するディレクトリを作成し、その中に管理したいファイルをコピーします。
    % cd
    % mkdir -p github/dotfiles
    % mv .bash_profile github/dotfiles
    % mv .bashrc github/dotfiles
    % mv .zshrc github/dotfiles
    % mv .vimrc github/dotfiles
    % mv .gvimrc github/dotfiles
    % mv .vimrc.bundle github/dotfiles

    ~/github/dotfilesへ移動したファイルのシンボリックリンクをホームディレクトリ直下に作成しておきます。
    % ln -s github/dotfiles/.bash_profile ./
    % ln -s github/dotfiles/.bashrc ./
    % ln -s github/dotfiles/.zshrc ./
    % ln -s github/dotfiles/.vimrc ./
    % ln -s github/dotfiles/.gvimrc ./
    % ln -s github/dotfiles/.vimrc.bundle ./

  6. ローカルリポジトリを初期化して、~/github/dotfilesディレクトリ下の全ファイルを追加した後、コミットします。
    % cd github/dotfiles
    % git init
    Initialized empty Git repository in /Users/LOGINHOME/github/dotfiles/.git/
    % git add .
    % git commit -m "first commit"
    [master (root-commit) 53b8ced] first commit
    6 files changed, 325 insertions(+)
    create mode 100644 .bash_profile
    create mode 100644 .bashrc
    create mode 100644 .gvimrc
    create mode 100644 .vimrc
    create mode 100644 .vimrc.bundle
    create mode 100644 .zshrc

  7. 上のコマンドを実行しただけでは、ローカルリポジトリにしかコミット内容は保存されていません。コミット内容をリモートリポジトリへ反映させるには、下のコマンドを実行します。
    % git remote add origin git@github.com:GIT_USERNAME/dotfiles.git
    % git push -u origin master
    Counting objects: 8, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (7/7), done.
    Writing objects: 100% (8/8), 4.34 KiB | 0 bytes/s, done.
    Total 8 (delta 1), reused 0 (delta 0)
    To git@github.com:GIT_USERNAME/dotfiles.git
    * [new branch] master -> master
    Branch master set up to track remote branch master from origin.

    これで、ローカルリポジトリの全ファイルがリモートリポジトリへpushされました。

  8. WebブラウザでGitHubのdotfilesリポジトリを開くと、pushしたファイルが登録されていることが確認できます。
    ASShot140104_0015-GitHub-Creating_New_Repository-1020x832

上の操作を行った後GitHubのDashboardぺージを確認すると、アクティビティ情報が更新されていました。
ASShot140104_0016-GitHub-Creating_New_Repository-1020x821
「0」が3つ並んでいたのが恥ずかしかったので、やっとこれで一安心です。左側のソーシャル情報(followers, starred, following)にはまだ「0」が3つ並んでいます。こちらも早く数字を増やしていきたいです。

【参考ページ】

 GitHubの活用(アカウントの作成と設定) | UQ Times 開発の記録
 ナウなヤングのためのgithub入門講座 -基本機能からdotfiles管理まで- - 馬鹿と天才は紙一重

タグ:Github git dotfiles
posted by とみやん at 11:59| Comment(0) | TrackBack(0) | 開発・プログラミング > Mac

2014年01月02日

GitHub始めました

皆様どのような正月をお過ごしでしょうか。一部の地域(北海道や東北の日本海側)は荒れた天気のようですが、穏やに晴れているところ所が多いようですね。信州も天候が安定しており、ここ数日晴天が続いています。年末年始の信州は天気が崩れて降雪が続くことが多いのですが、こんなに天候が安定しているのは珍しいです。冷え込みは厳しいですが、こう天気が良いとちゃんと防寒して出かけてみようかという気になりますね。まだ初詣を済ませていないので、今日か明日にでも近くの神社へ行こうかと思っています。

さて、今年二番目の記事を書きます。じつは、この年末年始の休暇中にぜひやろうと決めていたことがあります。それは、GitHubのアカウント登録です。

いまどきGitHubを知らないITエンジニアはまずいないでしょう。もしいたとしたら、そんな人はいますぐにプログラマを辞めるべきです。アマチュアならともかく、GitHubを知らないでプログラマという職業を名乗る資格はないからです。日本のITベンチャー企業でも、人材採用の応募者にGitHubアカウントの提示を求めるところが出てきているみたいですね。GitHub上のソースコードを観れば、応募者のプログラミングスキルは一目瞭然だからです。アメリカのITベンチャー企業ではこれはもはや常識になっていて、GitHubアカウントを持たない応募者は採用選考から外されてしまうくらいです。GitHubで公開しているソースコードがプログラマのスキル証明になる時代がすでに到来しているのです。

本ブログの記事にも頻繁にGitHubのリポジトリが登場しています。当然私もGitHubの存在は知っていました。メジャーなオープンソースプロジェクトは大抵GitHub上にリポジトリを作成していますが、大多数のユーザーは自作プログラムの保管場所としてGitHubを利用していることも知っていました。ただし、自分もアカウントを登録して、自作プログラムのソースを公開しようという気にはなかなかなれませんでした。公開できるような実用的なプログラムはまだ開発していないからです。しかし、エンジニアtypeに載っていた下の対談記事を読んで、そんな考え方は大きな誤りだということを知りました。

 小飼弾×増井雄一郎が大激論! 開発者「大増殖時代」の到来で、プログラマーの存在意義はどう変わる? - エンジニアtype

この記事に登場した次の一言が、私にものすごいインパクトを与えました。

 「これからの時代、プログラマーをやりたい人にとって、GitHubアカウントを持たなくて済むのは小学生までとなるでしょう。」

これって下のように意訳できますよね。

 「いまどき、中・高校生のアマチュアプログラマでもGitHubアカウントを持っている」

JavaScript, Python, Rubyなどのスクリプト言語が普及したおかげで、ここ数年アマチュアプログラマの数が一気に増えました。ほとんどの中・高校生はPCを持っていますし、電子工作ブームも続いています。休日などの空き時間を利用してプログラム開発に取り組むアマチュアプログラマは増える一方です。ニコニコ動画には「ニコニコ技術部」「ニコニコ工作部」というタグがあって、アマチュアプログラマや電子工作愛好家などの作品の発表の場になっています。悪ふざけ的な作品も多いですが、その中には思わず「これはスゲー」と唸ってしまうような作品もあります。いまやニコニコ動画の一大ジャンルなってしまったMikuMikuDance(MMDはアニメ制作会社でも使われているらしいです)の開発者である樋口優氏も自称アマチュアプログラマです。そして、そんなアマチュアプログラマが開発したソフトウェアがNASAに採用されるなんて事例も起きています。

 アマチュアプログラマ柏井勇魚氏の作品がNASAの管制に採用された! - Togetterまとめ

もはやアマチュアとプロの間に大きな差などなくなってきているのではないかと思わせるくらい、プログラミングの裾野は大きく拡がっています(志の低いプロが作ったものより、特定の分野を極めたオタクなアマチュアが作ったブログラムの方が出来が良かったりします)。

「学生のアマチュアプログラマが公開できるようなプログラムをバリバリ書いているんだろうか」という疑問を持つ人もいるでしょう。その疑問はもっともです。じつは、学生のアマチュアプログラマがGitHubに置いているのは学校のカリキュラムやクラブ活動などで作った小さなプログラムが多いようです。GitHubはそんなレベルの使い方で十分であって、別にかしこまる必要なんか無いんだと思います。「どんなものでも良いので自分が書いたコードを誰かに観てもらう」それがコミニュケーションの出発点になるんですね。SourceForge.netのような単なるリポジトリサービスではなく、「GitHubはプログラマのためのソーシャルサービス」と考えるべきなんだということがやっと解ってきました。

一昨年の3月のニュースになってしまいますが、GitHubに絡んで下のようなニュースが話題になりました。

 踊るPerfumeのモーションキャプチャデータ公開 GitHubに「perfume-dev」ページ - ITmedia ニュース

GitHubがソーシャルサービスとして各方面から大きな注目を集めていることは、このような動きからも判ります。また、面白い話題としては下のようなニュースもあります(このニュースに掲載されているGitHubのページは現時点でまだ存在しています。条件のハードルが結構高い気がしますが、彼女が欲しい方、応募してみてはいかがでしょう)。

 githubで彼氏を募集されてる方がいらっしゃいます : ギズモード・ジャパン

GitHubは2008年にサービスが開始されたGitリポジトリを中心とした開発支援環境です。Facebookの公開は2004年、Twitterの公開は2006年なので比較的新しいサービスだと言えるでしょう。これらのソーシャルメディアの影響を受けて、現在のGitHubには、ユーザーがアバター(Gravatar)を設定できたり、他のユーザーやリポジトリをフォロー(Follow)できる機能などが追加されています。Subversionに換わるバージョン管理システムとしてGitへの注目が高まるのと相まって、ここ1〜2年ほどの間にGitHubは急激に注目されてきています。


今回私が作成したGitHubのアカウントは無料のFreeプランです。Freeプランは非公開リポジトリを作成することはできず、ユーザーが作成したリポジトリはすべて公開扱いになります。下が私のGitHubアドレスです。

 https://github.com/tomyyann

ASShot140102_9014-GitHub_My_Dashboard-tomyyann-1204x828
まだGravatarの登録も行っていおらず、寂しいプロフィール/アクティビティ画像ですね。「0」が3つ並んでいるのが何とも言えない気分です。このままでは寂しすぎるので、これからアバターを登録したり、誰かをフォローしたり、リポジトリを作成したりしていきます。GitHubアカウントを持っている方。もし良かったらフォローしてください。

いまのところリポジトリはまだ一つも作成していません。取りあえず、一番最初に作るリポジトリはdotfilesにするつもりです。.bashrc.vimrcなどのホームディレクトリに存在する「.」で始まるファイル群をGitHubで管理するのが流行りらしく、dotfilesというのはそれらのファイルを格納しておくリポジトリです。私もMacとLinuxの両方の環境を使いますし、さくらのVPSを利用したクラウドPCはUbuntu Linuxで作成しています。これらの環境のドットファイル群をGitHubで一元的に管理するのは良いアイデアだと思います。

いま勉強中のiOSアプリのサンプルプログラムやこれから開発するつもりのNode.jsベースの試作WebサービスのソースなどもすべてGitHubに置いてしまおうと思っています。GitHubで公開するプログラムは別に実用的である必要はないんです。プライベートなプログラムコードの置き場がたまたま公開の場所だったと思って利用していきます。こういう軽いノリでGitHubを利用しているユーザーは結構多いみたいです。TwitterやFacebookみたいなソーシャルサービスはこういう軽いノリで利用すべきものでしょう。GitHubもソーシャルサービスなんですから。

私はいままでTwitterやFacebookのようなソーシャルサービスはまったく利用していませんでしたが、GitHubでソーシャル・デビューしたのを機会に、こういうサービスに対する興味が湧いてきました。上で引用した対談記事の中に登場した次の一言もインパクトがあったからです。

 これからは「人が見えるところで遊ぶ」ことが一流になる近道に

いままでブログ記事に自分の活動記録を書いてきましたが、最近「ブログって人が見える場所なのか」という疑問を持っていました。毎日アクセス解析情報をチェックしていますが、本サイトの一日の訪問者は平均500人程度です。これってやっぱり「人が見える場所」ではないよなぁと思ってしまいます。観てくれている人数が最低でも千できたら万の単位に届かないと、とても「人が見える場所」とは言えないですよね。この単位の観客が常にいて気軽に参加できる場所がどこにあるのかと言えば、やはりいまはソーシャルメディア上にしか存在しないと思います。

ちなみに、私がいままでTwitterとFacebookに興味が持てなかったのは、どちらのメディアも私に合っていないような気がしていたからです。Twitterは主に10代後半〜20代前半の若者がコミュケーションツールとして利用しており、Facebookはいままさに「若者離れ」が進行中で、30〜40代(特に高所得層)のリア充生活自慢が目立つメディアへと変わりつつあると思っていました。これらのイメージは多分それ程大きく外れていないでしょう。これらの年代やユーザー層のどちらにも私は属していません。私のような50代でITリテラシーはそこそこ高いが裕福な生活はしていないエンジニアが、たくさん集まっているソーシャルメディアはいまのところ存在していないように思えます。こういうユーザー層はマイナーな存在なので仕方がないことだとは思いますが・・・。このような理由により、TwitterとFacebookに対してはいまいち積極的に使ってみたいという意欲が湧いてきません。TwitterとFacebookを始めるかどうかについてはもう少し考えてから決めようと思っています。私の趣味や志向と合いそうなソーシャルメディアが見つかれば、積極的に参加したいという気持ちは持っているんですが・・・。

【参考ページ】

 ユーザ数400万に達したGitHubが「コラボレーションサービスの百貨店」になることで未来の成長を目指す | TechCrunch Japan
 ユカイ、ツーカイ、カイハツ環境!(29):GitHubはリアルRPG? そして、ソーシャルコーディングへ (1/3) - @IT
 そもそもGitHubとは一体何か? | TechCrunch Japan

タグ:Github git
posted by とみやん at 16:27| Comment(0) | TrackBack(0) | 開発・プログラミング > Mac

2014年01月01日

二台目のiPhone 4を入手した

明けましておめでとうございます。本年もよろしくお願いします。

こんな僻地のサイトを訪問してくれる人は少ないと思いますが、年明けの決まり文句なので、ご挨拶だけはちゃんとしておかないと・・・。ご訪問いただいた方々には心より感謝いたします。今年一年が良い年になりますようにお祈りしております。

年明け最初のブログ記事はその年の抱負や目標とかを書くのが恒例のようですね。以前のブログサイトでは毎年そういう内容の記事を書いていたのですが、本サイトでは書くのをやめておきます。心に秘めている目標はありますが、そういうものは公表しない方が吉運が訪れるんじゃないかという気もするので・・・。ただし、iOSアプリ開発を習得する(それも、できるだけ高いレベルで)という目標だけは書いておきます。これだけは絶対に達成しようと強い決意を抱いています。自分自身に対するプレッシャーの意味も兼ねて、この目標だけはしっかりと明記しておきます。他にも色々取り組みたいことはありますが、毎年アッという間に一年が過ぎて結局ほとんど達成できずに一年が終わったりします。「結局今年もそうなってしまっなぁ」とか思いながら、昨日までの年の瀬を過ごしていました。

形式的な挨拶はこれくらいで終わりにして、今年最初の記事はまたiPhoneに関する内容です。去年の最後の記事で2台目のiPhone 3GSを入手したことを書きましたが、じつは、2台目のiPhone 4(Black,32GB,SoftBank版,MC605J/A)を入手済みであることを報告しておきます。こいつを手に入れたのは去年の12/02ですが、何となく記事に書きそびれていました。入手手段はいつもようにオークションで、落札価格は現在の相場のほぼ下限値でした。
IMG_3919_1-Apple_iPhone4-MC605JA-PackageBox.jpg
IMG_3921_1-Apple_iPhone4-MC605JA-PackageItems.jpg
IMG_3927-Apple_iPhone4-MC605JA-FrontBackView.JPG
IMG_3950-Apple_iPhone4-MC605JA-BodyBackView.JPG
去年08/20の記事で紹介した1台目のiPhone 4と比較すると、全体的に小キズが多く、本機の状態は中の下というところかと思います。小さいですが、背面パネル上部中央の角部分に削れている箇所もあります(落下によって出来たキズかも)。製品箱は在りますが、簡易取扱説明書以外の付属品はすべて欠品でした。上の写真では判り難いですが、特に背面パネルにキズがたくさんあります(カバー・ケースや保護フィルムなしで使っていたみたい)。背面に搭載されているカメラのガラス部分にもキズがついているため、カメラを使うとキズが写って滲んだ画像が撮れてしまいます。それから、もう一つ難点があって、カメラ横のLEDフラッシュが点灯しません。前オーナーが一度分解してバッテリー部品の交換を行ったそうで、そのときに本機内部のフラッシュのケーブルを切断してしまったという話でした。落札価格が安価だったのは、これらの難点があったからです。オークションで検索してみると、iPhone 4用のバックパネル部品(正規の部品ではなく、パネル面の色が違っていたり、Appleロゴがレインボーカラーだったりするデコレーション用部品)がいくつか出品されているのを見つけました。そのうち、これらの一つを入手して交換しようと思っています。前者の難点はこれで解決できるはずです。

このiPhone 4に搭載されているファームウェアはiOS 5.1.1bで、入手した時点で入獄(未脱獄)状態でした。
IMG_0002-20140101_154515-iPhone4_MC605JA-HomeScreen-320x480.pngIMG_0003_1-20140101_154544-iPhone4_MC605JA-DeviceInfo-320x480.png

ただし、前オーナーは本機を脱獄状態で使っていたそうです。そして、前オーナーが保有していたSHSHを一緒に譲ってもらいました。Cydiaサーバーに保存されていたSHSHも取得済みで、最終的にiOS 4.3.3〜7.0.4のほぼすべてのバージョンのSHSHを入手できました。ただし、ツールを使ってチェックしてみると、iOS 6.0〜6.1.2のSHSHは不良で利用できないと表示されてしまいした。これらはどうもCydiaが自動的に取得した物のようです。これはCydia側の不具合によって起きている問題ですが、いまのところ解決策は発表されておらず、将来的にも解決できそうな見通しは立っていないらしいです。したがって、iOS 6.0〜6.1.2への更新は諦めるしかなさそうです。iOS 6.1.3 SHSHは問題なさそうなので、取りあえず、こいつのファームウェアはiOS 6.1.3へ更新するつもりです。ベースバンド(モデムファームウェア)は04.12.09ですが、ググって調べた情報では、これはSIMアンロック不可能なバージョンです。脱獄した上でSIMアンロック・ソフトを導入しても、SIMアンロック・アダプタを使っても、このバージョンのベースバンドはSIMフリー化ができないらしいです。こいつで3G回線を使うのは諦めるしかなさそうです。どうせ開発専用機として使うつもりだったので、本機はWiFi接続オンリーで利用していきます。

これでiPhoneが4台になりました。すべて開発ターゲット機として使っていますが、次に入手するのはiPhone 4Sにしようと目論んでいます。もしiPhone 4Sが手に入ったら、今度は実用機として使いたいです。開発ターゲット機の役割も兼ねさせるつもりですが、メインの目的はあくまで実用機として常用することです。NTTドコモMVNOの格安SIMを挿して、iPhone 4Sでスマホデビューを果たすのが目標です。また、FUSION IP-Phone SMARTNTTコミュニケーションズの050 plusを契約してIP電話アプリも使おうと思っています。最近たくさんの種類の格安SIMが出回っていますが、これらの一つを利用すれば月額1,000〜1,500円位で運用できるみたいです。ただし、格安SIMには通信データ量の制限がついているものが多いので、YouTubeやニコニコ動画を楽しむような使い方はできないことはちゃんと理解しています。メールやWebサイト閲覧などが中心の軽めの使い方になりますが、それで十分だと思っています。WiMAXのモバイルルーターを持っているので、動画鑑賞とかはそちらで運用すれば済みます。スマホの小さな画面で動画を視たいとはあまり思いません(動画を視るなら、タブレットの大きな画面の方が良いです)。電車の中などでスマホで電子書籍を読んでいる人を見かけますが、老眼の私にはこれも無理です。Kindle Paperwhite 3Gを持っているので、電子書籍の読書はこいつかタブレットを使います。

じつは、私は携帯電話はいまだにガラケーしか使っておらず、実用機としてのスマホは一台も持っていません。以前の記事にも書きましたが、やはり日常的にスマホを使っていないと、モバイルアプリのトレンドを知るのは難しいのではないかという気がしています。最近特にひしひしとそう感じます。いままでずっとスマホは敬遠していて、「このまま死ぬまでガラケーでいいやぁー」とか思っていました。しかし、さすがにもう観念して、そろそろ一台位持っても良いかなぁと考え方が変わってきました。スマホ・ユーザーには、「いまどき時代遅れの奴だなぁ」とか思われそうですね。私のように、ずっとガラケーを使い続けている人も結構いるみたいです(50代の6割がガラケー保有なのに対して、20代のスマホ保有率は7割、10代は8割に達している)。しかし、iOSアプリ開発の習得を目標にしているプログラマとしては、さすがにスマホを常用していないのはダメダメかなぁという気がしています。Apple贔屓の私がスマホを持つなら、やはりiPhone以外考えられません。アンチAndroid派なので、Androidスマホを使う気はまったくないですし。

という訳で、毎日オークションに出品されているiPhone 4Sをチェックしています。狙っているのは、当然SIMアンロック可能なベースバンドを搭載している奴です。(最新バージョンのiOS 7.0.4ではなく)iOS 6.1.3を搭載していてストレージ容量32GBか64GBの物が欲しいです。本体の状態やストレージ容量にもよりますが、現在の落札相場価格は17,000〜24,000円位だと見ています。いまは金欠病なので、相場価格の下限値かそれ以下で落札することを目標にしています。粘り強く安価な中古品を探していきます。

タグ:iphone iOS
posted by とみやん at 23:29| Comment(0) | TrackBack(0) | モバイルデバイス > iOS