これからiOSアプリ制作を始めるにあたって色々教えてもらったまとめ

ネイティブでiOSアプリを制作する事になり、P4DでiOSアプリ開発のイロハを@satococoaさんに教えていただいたので、そのまとめ。

環境とか準備した方が良いものについて

ちなみに私のMac環境は以下の通り

  • MacBookAir Mid2013 / Moutain Lion

■Cocoapods

Cocoapodsは、Objective-Cのライブラリを管理するもので、RubyのGemみたいなものらしいです。これがあるとかなり楽になるそうです。
ライブラリのソースファイルをプロジェクトに毎回追加する必要がなく、依存関係なども全部面倒?みてくれるありがたい物らしいので、必須で入れます。

■Cocoa Controls

https://www.cocoacontrols.com
iOSやMax OS X開発者が開発したUIコンポーネントが大量に登録されているサイト。
まずはここで、実現したいUIが登録されていないか検索して、あったら使ってみる。というのがオススメとのこと。
ただし、似たような物がたくさん検索結果に出てきた時に、どれを使えば良いかを判断するには、このサイト上の評価(星の数)はあまりアテにならないため、Download先として指定されていることが多いGitHubをリンクから辿っていって、以下のようなことを確認すると良いらしい。

  • GitHub上のStarの数
  • 最終リリース日
  • 対応状況(iOS7対応されているかどうかなど)をREADMEで確認

インストールの方法は、使いたいライブラリのページを見ると懇切丁寧に記載してあるので、それを見ながら進めればOK。Podfileファイルにライブラリの情報を追記して、pod installで終了。簡単!

■Gitについて

作成するアプリのソースをGitで管理するにあたり、ビルドしたバイナリデータをGitに加える必要はないので、gitignoreにそれらを記述する。この時、Objective-C用に最適化されたgitignoreの定義ファイルがGitHub上で公開されているので、それを丸っとコピーして、ローカルのプロジェクトフォルダに保存する。
gitignoreの一覧はこちら
https://github.com/github/gitignore

Objective-Cのgitignoreはこちら
https://github.com/github/gitignore/blob/master/Objective-C.gitignore

Xcodeの便利な使い方など

マルチタブ

Xcodeの補完機能が優秀で感動しました。エディタ操作自体に慣れるのもそんなに苦労なく出来そうです。
大画面ではないMacBookとかで操作する場合には、エディタ領域や属性操作のパネル領域が狭くなってやりにくい。そういう時は、タブでウィンドウを複数起動できるので、ストーリーボードを表示する用のタブ、もう一つはProjectNavigator(一番左のツリー表示)とエディタ領域、みたいな表示設定にしておいて、タブを切り替えて操作するほうが効率が良いとのこと。

リファレンス

Xcodeの Help メニューの中に、「Documentation and Refarence」というのがあって、ここでAPIのリファレンスが確認できる。
ただしとても重いので、dashというツールを使うと高速検索が出来るので、これを使うと良いらしい。(有料)

App Store
https://itunes.apple.com/jp/app/dash-docs-snippets/id458034879

参考サイト
http://www.lastday.jp/2012/04/12/dash-fast-search-class-reference

これから学習するにあたっての指針など

ストーリーボードについて

開発する際、ストーリーボードを使った方が良いのか、コーディングした方が良いのか、という点について。これは他の方も同じことを質問されていました。
初心者のうちは、構造や仕組みの理解のためにもストーリーボードを使わずにコーディングするのが良いとのこと。慣れてきて作業効率化のためにストーリーボードを使う、という流れが良いそうです。

おすすめの書籍など

初心者向け

Xcodeの使い方も分からないような初心者は、まずは図解の多い本でObjective-CXcodeの使い方を、サクっとマスターするのが良い。特にこの本、というのは教えてもらわなかったですが、自分に合いそうなものを1つやってみるのが良さそうです。

中級者以上ならコレ

■改訂2版 Objective-C逆引きハンドブック 林 晃
http://www.amazon.co.jp/dp/4863541058/ref=cm_sw_r_tw_dp_2WjFsb0N9Z4DJ
他の言語で書くところのコレは、どうやるんじゃい?というストレスから開放されるのでオススメだそうです

■エキスパートObjective-Cプログラミング -iOS/OS Xのメモリ管理とマルチスレッド- 坂本 一樹 http://www.amazon.co.jp/dp/4844331094/ref=cm_sw_r_tw_dp_Q1jFsb0KFN5YS

電子書籍関連

技術本は電子書籍のほうが断然良いと思うので、こちらの素晴らしいまとめリンクも掲載。
XcodeObjective-Cを学ぶための電子書籍まとめ(随時更新)
http://bonobono.hatenablog.com/entry/20120906/1347032182

読んでおいたほうが良いドキュメント

https://developer.apple.com/jp/devcenter/ios/library/japanese.html
AppleのDeveloperにあるドキュメントのうち、よく使うものについては一読した方が良いようです。特にViewControllerなどは必読。

おまけ

今回製作するアプリは、ほぼUIWebViewのウェブベースアプリにする予定なので、すごく複雑なことはしないで済むと思いますが、それでもやっぱり多少の勘所は必要になりそう。 例えば、Facebookアプリのように、メニューアイコンクリックしたら、画面左側に、スライド式のメニュー画面を表示させたいと思っていますが、クックパッドさんのように2枚のWebViewを使って実現したい場合。
参考)http://el.jibun.atmarkit.co.jp/rails/2012/10/html5-d1ba.html
この時、WebViewだとメニュークリック時に、そのメニューのWebView内で遷移してしまうので、別のViewを遷移させるようなテクが必要になるとのこと。難しくはないけど、ちょっとだけ面倒くさいようです。
それ以外の実装方法として、メニュー部分はネイティブで表示させて、メニュー名や遷移先URLをAPIで取得して動的に表示するロジックにしておけば、たとえメニューが増えた場合でも、アプリのアップデートをしなくても済むような実装が可能とのこと。なるほど!

さいごに

イチから丁寧に教えていただけて本当に助かりました。次回までには、何かしら動くものが出来上がってるレベルになりたいと思います。