BPStudy58 第1部 Web系エンジニアがiPhoneアプリ開発を1年続けてみて学んだこと
- 2. 自己紹介
• 渡邉 将人
• Twitter @nave_m
2012/6/29
• Facebook facebook.com/masato.nave
BPStudy#58
• ゆめみ で 働いているプログラマ
• スマートフォン アプリ、Web
• C/C++, Objective-C , Python
2
- 4. 発表の流れ
1. iPhoneアプリ Nailbookのご紹介
2012/6/29
2. 開発前にすべきこと
BPStudy#58
3. リリース後にすること
4. バージョンアップを続ける上で
5. まとめ
4
- 5. 2012/6/29
BPStudy#58
ネイルの写真を共有するiPhoneアプリ
NAILBOOKのご紹介 5
- 6. Nailbookとは
• ネイル好きのためのiPhoneアプリ
2012/6/29
• みんなのネイル写真を見る
BPStudy#58
• 自分のネイルを投稿する
• App Store
http://itunes.apple.com/jp/app/nailbook/id432831907
6
• Webサイト http://nailbook.jp/
- 7. ネイルの写真を見る・探す
• 写真が豊富
2012/6/29
• 検索機能
• 色
BPStudy#58
• デザイン
• シーン
• ハンド/フット
• サロン / セルフ
7
- 8. 写真をお気に入り登録
• かわいい ボタン
• フィードバック
2012/6/29
• Facebookのいいね!
BPStudy#58
• ランキング
• 過去 1週間 集計
• 実際にウケている
旬のネイルがわかる
8
- 9. 開発に関して
• 使用言語
• アプリ:Objective-C
2012/6/29
• サーバ:Python + Django
BPStudy#58
• プロジェクト開始時のPG経験
• iPhoneアプリ: Web中心(ネイティブはほぼ未経験)
• Python :3か月くらいGAEさわったことがある程度
• Django : 未経験
• 開発期間
• 初期開発 2011/2 – 2011/4
9
• 追加開発 2011/5 – 現在に至る (途中1ヶ月ほど別アプリも)
- 10. 主なバージョンアップ
• 2011/2 開発着手
• 2011/5 Ver.1.0
2012/6/29
• 2011/7 Ver.1.4 写真の表示方法を変更
• 2011/8 Ver.2.0 メニューを大幅に変更
BPStudy#58
• 2011/10 Ver.2.3 Push通知に対応
• 2012/3 Ver.3.0 ユーザ検索
• 2012/3 Ver.3.1 写真検索
• 累計37回のアップデート (1ヶ月に3回のペース)
10
- 11. 2012/6/29
BPStudy#58
Appleのプラットフォームを理解する
開発前にすべきこと 11
- 12. アプリが世に出るまで
1. 開発者登録、アプリ公開用登録をする
2012/6/29
2. アプリを開発する
BPStudy#58
3. 申請してAppleによるレビューを受ける
4. App Storeに公開
12
- 14. 却下される条件を知る
• App Store Review Guideline
• 閲覧にiOS Developer Program登録が必要
2012/6/29
• 英語
BPStudy#58
• レビューで却下される条件は必読
• アプリ関係者全員で読んだほうがよい
14
- 15. iOS開発環境を知る
どんな開発でも言語とフレームの理解は重要
• Objective-C
2012/6/29
• 独特 (書式、メモリ管理)
• iOS SDK
BPStudy#58
• パターンさえを覚えてしまえば生産性は高い
• Referenceに従わないコードはRejectされます
• 例 ) ファイル保存のディレクトリ
• App Store Review Guideline - 2. Functionality を読む
• その他
• 非同期通信、 タッチ処理、画面のコントローラなど
イベント駆動なアプローチがたくさん 15
- 16. iOS Developer Library を読む
アプリ全体、概念的な設計
• iOS Human Interface Guidelines
2012/6/29
• iOS App Programming Guide
BPStudy#58
画面構成、 ある画面におけるイベント管理
• View Controller Programming Guide for iOS
• View Programming Guide for iOS
16
- 18. 2012/6/29
BPStudy#58
計画外のことばかり
リリース後にすること 18
- 22. 品質を高める
iOS開発ではメモリ管理に特に気をつける
2012/6/29
• メモリの解放忘れ
BPStudy#58
ゆめ技:Objective-CのPropertyの解放忘れを見つけるスクリプト
By @mokemokechicken
http://yumewaza.yumemi.co.jp/2012/01/objectivecproperty.html
• Nailbookでは 画像関連のメモリ管理
• カメラ撮影、画像の加工、大量のダウンロード
ゆめ技:iOSシミュレータでメモリ警告を定期的に発生させる
By @mokemokechicken 22
http://yumewaza.yumemi.co.jp/2012/03/memorywarningsender_in_ios_simulatorios.html
- 23. バグをすぐに修正する
• 1週間ごとに機能追加Ver.を申請し、
バグ修正もそこに含めてしまう
2012/6/29
• レビューでRejectされたら指摘事項を修正して、
BPStudy#58
その間に作った機能もマージして最申請
→ Git大活躍
• 機能追加は可能な限り小分けにする
→ チケット駆動開発
ゆめ技:Git-Redmine: GitのコミットとRedmineを連携する。チケット駆動開発にも。
By @coiledcoil 23
http://yumewaza.yumemi.co.jp/2011/08/git-redmine-integration-using-rest-api-python.html
- 24. 奥の手: Expedited Review
• 通常1週間ぐらいかかるAppleのレビューを
即日で通してもらう
2012/6/29
• Appleのサイトから英語で申請
• 本当に困ったときだけ使う
• 例 )外部インフラが障害で乗り換えが必要になった
BPStudy#58
24
- 29. クライアントの混在を許す
• APIのレスポンスボディ の拡張方法
• JSON へ 新しい要素の追加はOK
2012/6/29
• 既存の要素の削除・改名はNG
• パース時にデフォルト値になってしまう
BPStudy#58
• レスポンスの仕様を大きく変える場合、API を分ける
• URIにVer番号を入れる
• GET /1/app/action
29
- 30. まとめ
• Appleのルールを理解し、適応する
2012/6/29
• 細かく、継続的に改善する
• 開発言語にPythonを使っているのなら
BPStudy#58
書籍 「Pythonプロフェッショナルプログラミング」
はぜひ読んでおきたい
さりげなく重要
• 技術英語 ( Reading )
30