Webエンジニアの備忘録

およそ自己の作業メモとして残しております。

iOS開発の事始め

今まで近くて遠い存在だったiOS開発ですが、ひょんな事から先月より自社アプリの主担当に就任し、突貫で技術習得しました。 「ピンチはチャンス」 、この1ヶ月は会社の理解もあり引き継ぎ名目で集中してインプットができました。

ここで1ヶ月を振り返り、覚えたことをメモがてら記録しておこうと思います。

やったこと

Xcodeの使い方を学ぶ 

ウィンドウ名称の把握

まずは各ウィンドウの名称を把握し、ググれる準備からです(^_^;)

【アプリ開発】Xcodeのウィンドウ名称 | Fussan Blog

こちらのサイトなど、参考にさせていただきました。 また、書籍でいくつかのXcodeバージョンのキャプチャなども確認しました。

ファイルタイプの把握

利用されているファイルの種類についても少しまとめました。

  • .xcodeproject: Xcodeプロジェクト。実体はディレクトリで存在する。
  • .xcworkspace: XcodeワークスペースPods利用など、プロジェクトが複数になるときに利用。
  • .plist: プロパティリスト。内部的にはxmlで記載される、おもに設定ファイル。
  • .h: Objective-Cヘッダーファイル。
  • .m: Objective-Cメインファイル。今回の主戦場。
  • .swift: Swiftファイル。残念ながら当該のプロジェクトではほぼ取扱なし…
  • .xib: XML Interface Builderファイル。単ページのテンプレートフォーマット。
  • .storyboad: Storyboadファイル。画面遷移を可視化できる新テンプレートフォーマット。
    • xibからstoryboadへの完全移行も共存も可能。
  • .xcassets: アセットカタログ。ディレクトリ構造のファイル群を contents.json を用いてカタログ管理している。

エディタの把握

Xcodeを使った最初の違和感は、ツールを触った際に出てくる git差分 でした。どの操作がどのコードに影響を与えているのかが、序盤の肝となりました。

ナビゲータ/プロジェクトエディター

ナビゲータの ファイルツリーは実ファイルの配置と異なります 。こちらは [プロジェクト名].xcodeproj 下の project.pbxproj で管理されており、ファイルの並び順が変わった際にもコードが書き換えられます。

ナビゲータツリーのルートをクリックすると、プロジェクトやターゲットの設定(下図)が確認できますが、こちらも [プロジェクト名].xcodeproj 下のxml等に対する書き出しを行っています。

f:id:tak_taniguchi:20181117003951p:plain

なので、意図する書き換え以外で [プロジェクト名].xcodeproj 下に差分が出た際はマウス操作等による可能性もあり、ちょくちょくコミットから外しています。

アプリ起点について

コードリーディングに際して真っ先に気にする起点についてもこちらに設定がありました。Main Interface を用いて起点となる Storyboard が選べるようです。

f:id:tak_taniguchi:20181117020342p:plain

とはいえ、 AppDelegate.m も起動時に実行されるので、こちらでインスタンス生成しても良さそうです。

インターフェイスビルダー/ストーリーボード

xib/storyboard を開いた際はこれらのエディタが起動しています。こちらもXcodeのバージョンアップでオプションの追加などが発生し、ときおり意図せずコードが勝手に書き換わるケースがあります。

アセットカタログ

xcassets は実ファイルが json で存在するのですが、画像をサイズで括って管理するのに便利です。旧仕様だとおそらくファイル名に hoge@2x.png などと節尾句を設けるのがセオリーだったようですが、こちらのほうが一覧性もあるので、追々完全移行する予定です。 唯一、多言語対応の考慮がされていないのが難ありです。

f:id:tak_taniguchi:20181117011307p:plain

Objective-Cを学ぶ

ネット上の記事やブログはSwiftに席巻されていて、Objective-Cについてはあまり残っていませんでした。こちらは書籍を購入し体系的に学習中です。

詳解 Objective-C 2.0 第3版

詳解 Objective-C 2.0 第3版

NSLog(@"test");

最初に学ぶべきはどの言語でもダンプでしょう。わたしはそのほうが捗ります。

  • コード実行箇所のあたりを付けて、ブレイクポイントで確認。
  • ダンプで細かな値なども確認。

これで実動を踏まえたコードリーディングが可能です。 ひとまずObjective-Cはこれを利用して読み解いていく予定です。

ライブラリ管理を学ぶ

CocoaPodsの把握

iOS開発ではCocoaPodsというパッケージ管理ツールを用いるようです。

CocoaPods.org

こちらを扱い始めると、実プロジェクトと別に Pods プロジェクトが併設されます。それによって、Xcode起動直後に開くファイルが xcodeproject から xcworkspace に変わります。

xcodeproject を開いてビルドしようとすると、 Libraryが見つからない という内容のエラーに苦しみます…(苦しんだ)

f:id:tak_taniguchi:20181117015217p:plain


インプットが多く纏めきれませんでしたが、俯瞰的にこんな感じで情報収集をしていました。次はもう少し絞り込んで、メモを残そうと思います。