.27 2012

iOSアプリのファイルサイズ (Xcode4.5)

Tasakiです。

iPhone5とiOS6がリリースされました。

開発者視点で見ると、煩わしい変更点などもいくつかあり、マイナスなイメージがどうしてもつきまとってしまう今回のアップデートですが、そんな中で改良された点の話をしたいと思います。


スポンサーサイト



.22 2012

iOS向けフレームワークを作る - Tips

Tasakiです。


もういくつ寝るとWWDCてな感じになってきましたね。
今年の注目はなんといってもMacのアップデートですが、iOS側がどういう進化をするのか、それともしないのかについて、iOS開発者としては気になる点です。

さて、今回は前回まで説明していたフレームワークを作成する際の注意点をまとめたいと思います。


.16 2012

Xcode 4 に慣れよう(8)

あけましておめでとうございます。
Tasakiです。

個人的には、年が明けるとそろそろiPadの季節かなと感じています。
後継機はついにRetinaに対応するとの噂もあり、もし現実になれば、僕もついにiPadデビューしちゃいそうです。

まあ、今年一番の注目はなんといってもiTV(?)の発表ですけども(あるのかな…?)

そんなこんなで、半年以上に渡って続けてきたXcode4の導入についてですが、今回で最後となります。
あまりに期間が空いたせいでXcode4自体にもバージョンによる差違が発生してきていますが…
基本的にそのときの最新版の話をしていると思っていただければ良いかと。

最後のテーマはOrganizerについてです。
Xcode3の頃から存在し、iOS開発の上では、比較的重要なポジションにあった同画面ですが、今回統合されたエディタを含むメイン画面からは、切り離された独立した画面として提供されています。

まずは、開き方から。
・上部メニューから"Window">"Organizer"を選択(またはショートカットキー)
・メイン画面の右上にあるOrganizerアイコンを選択(↓こういうやつです)
xcode4_organizer_icon

Organizerを開くと上部に↓のようなメニューが表示されます。
xcode4_organizer_menu
それぞれの概要は以下の通りです。
  • Devices … Macに繋いだ端末の履歴および接続中の端末

  • Repositories … Xcodeで管理中のSVN(git)リポジトリ

  • Projects … Xcodeで開いたことのあるプロジェクトの履歴

  • Archives … ビルドして生成したアーカイブの履歴

  • Documentation … ヘルプドキュメントビューア

  • このうち、DevicesとProjects(確かArchivesも)はXcode3のころからOrganizerに備わっていた機能です。
    RepogitoriesはSCMウィンドウ、Documentationはドキュメントビューアが単独のビューとして表示されていたものを統合した形です。

    とにかくXcode3では、ウィンドウが開きすぎてExpose必須だったものが、基本的にはメインとOrganizerの2画面に統合された、というのがXcode4の大きな改善点といえるでしょう。

    ここでは、これらの機能のうち、実機テストと配布の際にお世話になるDevicesとArchivesについて解説したいと思います。

    <Devices>
    Devicesを選択すると左側に以下のようなリストが表示されます。
    xcode4_devices_left_pane

    ここは大きくLIBRARYとDEVICESに大別されます。
    LIBRARYは、Xcodeで管理している全てのデータを一覧にするものです。
    対して、DEVICESの方は各端末毎のデータを一覧にするものです。
    Provisioning Profilesを例にとると、LIBRARY側のそれには、Xcodeにインポートした全てのプロビジョニングプロファイルが表示されるのに対して、DEVICES以下の各端末毎のそれには、実際にiOS端末に登録しているものだけが表示されるという具合です。
    よって、端末にあるプロビジョニングプロファイルを削除したい場合は、端末名以下のProvisioning Profilesを選び、その中の行を削除する必要があります。

    各項目の概要は以下の通りです。
  • Developer Profile … インストール済の開発/配布証明およびプロビジョニングプロファイルの一覧

  • Provisioning Profiles … Xcode/iOS端末へインストール済のプロビジョニングプロファイルの一覧

  • Software Images … XcodeへインポートしたiOSイメージファイル(ベータ版OSのバイナリ)の一覧

  • Device Logs … クラッシュレポートの履歴

  • Screenshots … スクリーンショットの管理/撮影

  • Applications … Xcodeからインストールしたテストアプリの管理

  • Console … iOS端末のコンソールログ(NSLogの出力結果等を含む)


  • このうち、Applicationsがかなり便利で、Xcodeからインストールしたアプリのサンドボックス内部へのアクセスが可能となっており、アプリのファイル構成を確認したり、ファイルの抽出、追加を行うことができます。
    内部でファイルを生成するようなアプリの場合、ファイルが作成されたか、どこに作成したかなどは気になるところだと思いますが、これを利用すれば簡単に内部構造が確認できるというわけです。

    <Archives>
    アプリを配布する際にお世話になる機能です。
    左ペインにバンドルIDもしくはプロダクト名称毎にアプリ名称とアイコンが表示されます。
    そこからなんらかの行を選択すると、そのアプリのアーカイブの履歴が中央に表示されます。
    アーカイブとは、Archiveコマンドで実行すると作られるデータでビルドしたアプリのバイナリをラッピングしたものです。
    アーカイブは作成日時、コメント、ステータスといった属性を持っています。
    アーカイブにメモしたり、アーカイブの申請結果等がステータスに記録されたりします。
    Archivesで提供されている機能は、画面右側にある以下のボタン群に集約されています。
    xcode4_archives_buttons

  • Validate … AppStoreへ申請するバイナリをチェックする機能

  • Share … Ad hoc等で配布するためのipaファイルもしくはアーカイブを書き出す機能

  • Submit … AppStoreへバイナリを送付する機能


  • アプリを配布する際には、Ad hoc だろうが、AppStoreだろうが必ずここを通ることになります。

    以上が、かなりざっくりとですが、Xcode4の概要です。
    現在、Lionでは既にXcode4しか提供されておらず、iOS 5.1beta SDKはLionのみに提供されていることから、ここ数ヶ月のうちにLion + Xcode4の環境に否が応でも移らざるをえないでしょう。

    新規で開発される方はいいとして、古参の開発者は次々と新しい環境に対応していかなくてはならないため、大変なところもありますが、新しい環境に常にワクワクする僕のような人にはたまらないかと思います。
    (もちろん、無料で使えるってのが大きいわけですけども...)
    .30 2011

    Xcode 4 に慣れよう(7)

    久しぶりの投稿になりました。
    Tasakiです。

    先日5.1SDKが公開されました!!
    今バージョンの要点は2つありまして、
    ・Lionのみの提供(!!)
    ・追加されたAPIが異様に少ない(たったこれだけ?!)
    ということで、デベロッパ的にはSnowLeopardの引退勧告を突きつけられただけな気がしました...


    気を取り直して、本題に入りましょう。
    前回から5ヶ月が経ち、既にバリバリお使いの方ばかりかもしれませんが、次は…と言い出した以上、責任はとらないと…

    ということで、上、左右の話と来て、ついに中央のペインです。

    ここはエディタのメイン画面で、左のツリーから選んだファイルに応じて適切なエディタが開かれるようになっています。
    これは、説明する必要もないでしょう。

    ここの使い方に関して、以前ご紹介した上部のEditorペインが絡んできます。
    xcode4_editor_group

    左から順に"スタンダード"、"アシスタント"、"バージョン"エディターの各モードを表しています。
    選択中のペインに応じて、エディタ画面の構成が切り替わるってことですね。

    左のスタンダードは普段見慣れたモードですので、説明することも特にありません。

    中央のアシスタントを選択してみましょう。
    すると、左右2つにエディタが分割されます。
    2つのファイルを同時に見れてこりゃ便利…ですが、単純にそれだけではありません。
    というのも、右側のエディタにフォーカスを移して選択中のファイルを切り替えても、内容が変化するのは、左の画面だからです。
    では、右側の画面は何のためにあるのでしょうか。
    左の画面で、何らかのソースファイルを開いた状態でエディタの上部に注目してみます。
    こんなアイコンがあるはずです。

    xcode4_assistant_button

    この窓風のボタンを選択してみると…

    xcode4_assistant_menu
    上図のような項目がずらっと表示されました。
    現在はManualにチェックが入っていますね。
    例えば、Counterpartsを選択してみます。

    するとどうでしょうか。
    左で開いたソースファイルに対応するヘッダファイルが自動的に開かれますね。
    逆にヘッダファイルを開いた場合は、ソースファイルが開かれます。これは便利です!!
    他にもスーパークラスやカテゴリ、インクルードしているヘッダファイルを参照したりもできます。
    コーディング中にこれらの情報を参照する機会は多々ありますから、上手く使えれば効率アップ間違いなしです。
    ディスプレイに余裕があるなら、さらにエディタ画面を追加していくこともできます。(そんなにたくさん一度に開くこともあまりないでしょうけど...)

    最後に右のバージョンです。
    これは、その名の通り、バージョン間での差分を視覚的に確認する機能です。
    以前からあったソース比較機能ですね。
    これはリビジョンをさかのぼって確認できるので、強化された印象です。
    ただし、有効活用するためには、Xcodeで直接バージョン管理を行う必要があるみたいです。
    僕の場合、バージョン管理自体は別のツールでやっているので、今のところ活用できてはいませんけども。

    以上が中央ペインの概要です。
    ソースファイル以外の物を選択した際の各エディタの紹介は割愛しますが、IBやプロパティリストエディターに加えて、プロジェクトファイルの専用ビューアまで表示できて、かなり強力になってます。
    一旦4になれると、3には戻りづらくなる一番のポイントはこのエディタの使い勝手に拠るところが大きいように思います。

    それでは、また。




    .27 2011

    Xcode4のAssistantEditorで失敗した時の修正方法

    はいどうもこんばんわ
    hayateです。


    Xcode4になって追加された機能のひとつにAssistantEditorってやつがいます。
    IBとソースコードの関連付けを視覚的に実装でき、かつ、@propertyや@synthesize、メモリ掃除コードなどを自動で書いてくれる便利なヤツです。

    AssistantEditor

    ただこれ、上の例みたいに「あ、変数名ミスった・・・」ってときに簡単に修正できない。
    いや、できるんだけど、AssistantEditorが何をやってくれているかを理解していないと絶対混乱する。
    特にXcode4しか知らない入門者の方とかは、どハマりポイントになりかねない。


    一番簡単な修正方法は
    以下の3ファイルでcommand+zを使ってアンドゥする方法。

     .h
     .m
     .xib

    ただし、これはAssistantEditorを使った直後に間違いに気付いた時しか使えない。
    アンドゥだからね。他にいろいろ手を入れた後にアンドゥしても手遅れです。

    そうなったらもう一個ずつ修正するしかない。
    いや、修正するより一旦削除してやり直したほうがいい。
    修正箇所は以下のとおり

    ■修正方法
    IBOutletの場合
     1..hファイルの@property行を削除

      header1

     2..mファイルの@synthesize行を削除

      source1

     3..mファイルのviewDidUnLoadの中の該当変数のメモリ解放箇所を削除

      source2

     4..mファイルのdeallocの中の該当変数のメモリ解放箇所を削除

      source3

     5..xibファイルで修正対象オブジェクトを選択してconnections inspectorを開き、関連付けを削除する

      nib1

    IBActionの場合
     1..hのIBActionの定義を削除
     2..mの一番下に追加されているIBActionメソッドを削除
     3..xibで修正対象オブジェクトを選択してconnections inspectorを開き、関連付けを削除する


    IBOutletやIBActionで変な名前をつけちゃって修正したいって時に、むやみにコードだけ修正しちゃうと
    xibにゴミ関連付けが残ったままになってアプリ実行時に落ちるという罠です。


    まぁ、逆を言えばAssistantEditorではこれだけのことをD&Dとちょっとした入力だけでやってくれてるってことです。
    上手に使いましょう。


     HOME 

    ブログ内検索

    関連リンク

    製品情報

    最新記事

    カテゴリ

    プロフィール

    neoxneo



    NEXT-SYSTEM iOS Developers Blog


    • UTO:
      カナダ版iPhone4Sは、マナーモードでシャッター音がならない…


    • Ehara:
      ...


    • Hayate:
      ...


    • Tasaki:
      Developer登録完了...したのはいいけど


    • Ueda:
      ...



    リンク