iosアプリ開発 脱初心者に向けて

50
iOSアプリ開発 脱初心者に向けて Kosuke Ogawa (@koogawa) 2014.3.27 スマホアプリ開発勉強会@Talknote

Upload: kosuke-ogawa

Post on 28-Jun-2015

12.591 views

Category:

Technology


3 download

DESCRIPTION

2014.3.27 スマホアプリ開発勉強会@Talknote

TRANSCRIPT

Page 1: iOSアプリ開発 脱初心者に向けて

iOSアプリ開発 脱初心者に向けて

Kosuke Ogawa (@koogawa) 2014.3.27 スマホアプリ開発勉強会@Talknote

Page 2: iOSアプリ開発 脱初心者に向けて

•小川航佑 Kosuke Ogawa • @koogawa • 趣味と仕事の両方でiOSアプリを開発

Page 3: iOSアプリ開発 脱初心者に向けて

作ったアプリ

Page 4: iOSアプリ開発 脱初心者に向けて

まりも

• スマホ内でまりもを育成するアプリ

• やることは水を換えるだけ

• 30万ダウンロード突破!

Page 5: iOSアプリ開発 脱初心者に向けて

テレビでも紹介されました

Page 6: iOSアプリ開発 脱初心者に向けて

今回の対象者• アプリの作成~実機でのテストなど基本的なことは理解している

• もっと効率的に開発したい

• アプリをリリースしてみたい

• もっと多くの人に使ってもらいたい

Page 7: iOSアプリ開発 脱初心者に向けて

アジェンダ

1. 開発Tips

2. リリースしてみよう

3. より多くの人に使ってもらうために

4. おまけ

Page 8: iOSアプリ開発 脱初心者に向けて

1.開発Tips

Page 9: iOSアプリ開発 脱初心者に向けて

実行中のメソッド名を表示する• NSLog(“%s”, __func__);

• どのメソッドを通ってきたか把握できる

• マクロにしておくと便利#define LOG_METHOD NSLog(@"%s", __func__)

• LOG_METHOD;

• アプリ名-Prefix.pch に書いておくと便利

Page 10: iOSアプリ開発 脱初心者に向けて

NSLogを隠す

• リリース時にNSLogは出すべきではない

• リリース後もコンソールから見られてしまう

• デバッグ時にのみ出力するマクロを作ろう

• LOG(@“hogehoge”);

Page 11: iOSアプリ開発 脱初心者に向けて

// NSLogと同じように書ける LOG(@"debug log”); !

// メソッド名表示 LOG_METHOD;

Page 12: iOSアプリ開発 脱初心者に向けて

NSStringFromXXX系を使う

CGRect rect = CGRectMake(0, 0, 200, 100);

NSLog(@"%@", NSStringFromCGRect(rect));

// {{0, 0}, {200, 100}} と出力される

Page 13: iOSアプリ開発 脱初心者に向けて

他にもいろいろ• NSStringFromCGPoint

• NSStringFromCGSize

• NSStringFromCGRect

• NSStringFromCGAffineTransform

• NSStringFromUIEdgeInsets

• NSStringFromUIOffset

Page 14: iOSアプリ開発 脱初心者に向けて

ViewControllerに 何でも書くのをやめる

Page 15: iOSアプリ開発 脱初心者に向けて

よくあるパターン1

AAAViewController

API

BBBViewController CCCViewController

通信 通信 通信

Page 16: iOSアプリ開発 脱初心者に向けて

よくあるパターン1

AAAViewController

API

BBBViewController CCCViewController

通信 通信 通信= =

Page 17: iOSアプリ開発 脱初心者に向けて

通信処理を分ける

AAAViewController

API

BBBViewController CCCViewController

通信

Page 18: iOSアプリ開発 脱初心者に向けて

• ソースコードの重複が無くなる

• 再利用しやすい

• メンテナンスしやすい

Page 19: iOSアプリ開発 脱初心者に向けて

よくあるパターン2!

TableViewController

DataSource

Delegate

Page 20: iOSアプリ開発 脱初心者に向けて

DataSource/Delegateを分ける

!TableViewController

DataSource

Delegate

Page 21: iOSアプリ開発 脱初心者に向けて

CollectionViewにも対応できる

!CollectionViewController

DataSource

Delegate

Page 22: iOSアプリ開発 脱初心者に向けて

• 高い柔軟性が得られる

• 再利用しやすい

• ViewControllerを軽量化できる

Page 23: iOSアプリ開発 脱初心者に向けて

便利なライブラリ

Page 24: iOSアプリ開発 脱初心者に向けて

Reachability

• ネットワークの接続状況を確認できる

• 現在の接続状況が3G、WiFi、もしくは圏外なのか

• Apple公式のライブラリ

Page 25: iOSアプリ開発 脱初心者に向けて

AFNetworking

• もはや定番の通信ライブラリ

• ファイルアップロードも簡単

• URLから画像を取得して直接UIImageViewを作成することもできる

Page 26: iOSアプリ開発 脱初心者に向けて

SVProgressHUD

ローディング表示を数行で実装できる

Page 27: iOSアプリ開発 脱初心者に向けて

心がけること

• ライセンスをよく読む

• iOSのバージョンアップで動かなくなることも

• 作者に感謝すること

Page 28: iOSアプリ開発 脱初心者に向けて

便利なサービス

Page 29: iOSアプリ開発 脱初心者に向けて

クラッシュレポート

• Crashlytics

• Crittercism

• Bugsense

Crashlytics公式サイトより

Page 30: iOSアプリ開発 脱初心者に向けて

• クラッシュするとメールで教えてくれる

• iOSバージョン

• 端末の種類(iPhone, iPad, iPod…)

• クラッシュ発生箇所(行数までわかる)

• 無料

Page 31: iOSアプリ開発 脱初心者に向けて

テストアプリ配布

• TestFlight

• DeployGate

Page 32: iOSアプリ開発 脱初心者に向けて

プッシュ通知• サーバサイドプログラムなしでプッシュ通知を送れる

• 証明書(.p12)ファイルをアップロード

• 専用のSDKが用意されている

• 1ヶ月あたり1,000,000プッシュまで無料

Page 33: iOSアプリ開発 脱初心者に向けて

2.リリースしてみよう

Page 34: iOSアプリ開発 脱初心者に向けて

リジェクトされないために

• 落ちないよう努力する

• ポルノコンテンツを表示しない

• 機能的なアプリを作る

Page 35: iOSアプリ開発 脱初心者に向けて

落ちないよう努力する

• 複数のiOSバージョンでテストする

• 複数のデバイスでテストする(カメラ有無など)

• クラッシュレポートを使う

Page 36: iOSアプリ開発 脱初心者に向けて

ポルノコンテンツを表示しない

• 外部コンテンツだとしても不可(バナー等)

• レーティングを正しく設定する

• 違反報告の仕組みを作る

Page 37: iOSアプリ開発 脱初心者に向けて

機能的なアプリを作る

• シンプルすぎるアプリはリジェクトされる

• Webをただ表示するだけのもダメ(それHTML5でもいいやんって言われる)

• 役に立つアプリを作ろう

Page 38: iOSアプリ開発 脱初心者に向けて

ダメなアプリの例

Page 39: iOSアプリ開発 脱初心者に向けて

改善後

Page 40: iOSアプリ開発 脱初心者に向けて

3.より多くの人に 使ってもらうために

Page 41: iOSアプリ開発 脱初心者に向けて

口コミをねらう

• シェア機能を付けよう

• ユーザが友達に紹介してくれる

• ハッシュタグをつけると検索しやすい

Page 42: iOSアプリ開発 脱初心者に向けて

アイコンは手を抜かない

• アイコンが第一印象を決める

• カッコ悪いとホーム画面に置いてもらえない

• 自分で作れないならクラウドソーシングなどを使う(Lancersがおすすめ)

Page 43: iOSアプリ開発 脱初心者に向けて

ブログで紹介してもらう• なんだかんだ言って一番効果がある(当社比)

• ブログ(持続性)>テレビ(瞬発性)>雑誌

• エゴサーチを定期的にやる

• 紹介していただいたら「ありがとう」を忘れずに

• 効果を教えてあげると喜ばれる

Page 44: iOSアプリ開発 脱初心者に向けて

こまめなアップデート• バグはすぐ直す

• iOSアップデートにすばやく対応する

• ユーザの要望に耳を傾ける(すべてを聞く必要はない)

• ブレないことが大事

Page 45: iOSアプリ開発 脱初心者に向けて

自分がヘビーユーザーに

• リリースして終わりだとアプリが成長しない

• 自分で使い込んでみることが大事

• 毎日使ってみると、改善すべき点が見えてくる

Page 46: iOSアプリ開発 脱初心者に向けて

ASOはほどほどに…• タイトルにいろいろ詰め込まないこと

• 最近はリジェクトされる例が増えてきています

• どんなにASOを頑張っても検索上位に表示されるのは一番使われているアプリなのです

• 中身で勝負しよう!

Page 47: iOSアプリ開発 脱初心者に向けて

何のためにアプリを作るのか?

• 勉強のため?

• 有名になりたいから?

• お金がほしいから?

• たくさんの人に喜んでもらいたいから?

Page 48: iOSアプリ開発 脱初心者に向けて

4.おまけ

Page 49: iOSアプリ開発 脱初心者に向けて

マネタイズ• 広告出すなら最初から出す

• 広告は邪魔にならない場所に

• 位置次第ではレビューが炎上します^^

• ターゲットをよく考える(国・年代性別など)

• 有料アプリより無料アプリに広告載せるほうが儲かってます(当社比・アプリの性質にもよる)

Page 50: iOSアプリ開発 脱初心者に向けて

ありがとう ございました