0
Web系エンジニアがiPhoneアプリ開発を1年続けてみて学んだこと
自己紹介• 渡邉 将人 • Twitter  @nave_m                                       2012/6/29 • Facebook facebook.com/masato.nave        ...
本日の内容• iPhoneアプリ開発のノウハウ                     2012/6/29• 継続開発                     BPStudy#58• エンジニア視点• 今回の対象外 • 細かい設計・実装 • 企...
発表の流れ1.   iPhoneアプリ Nailbookのご紹介                              2012/6/292.   開発前にすべきこと                              BPStudy...
2012/6/29                       BPStudy#58ネイルの写真を共有するiPhoneアプリNAILBOOKのご紹介             5
Nailbookとは• ネイル好きのためのiPhoneアプリ                                                        2012/6/29  • みんなのネイル写真を見る           ...
ネイルの写真を見る・探す       • 写真が豊富                        2012/6/29       • 検索機能        •   色                        BPStudy#58   ...
写真をお気に入り登録       • かわいい ボタン        • フィードバック                          2012/6/29        • Facebookのいいね!                    ...
開発に関して• 使用言語 • アプリ:Objective-C                                        2012/6/29 • サーバ:Python + Django                     ...
主なバージョンアップ•   2011/2 開発着手•   2011/5 Ver.1.0                                2012/6/29•   2011/7 Ver.1.4 写真の表示方法を変更•   2011/...
2012/6/29                      BPStudy#58Appleのプラットフォームを理解する開発前にすべきこと             11
アプリが世に出るまで1.   開発者登録、アプリ公開用登録をする                            2012/6/292.   アプリを開発する                            BPStudy#583....
Appleによるレビュー• レビューを通らないと公開できない • バージョンアップにも毎回レビューが要る                          2012/6/29• 「ガイドライン」と「レビュー担当者」が絶対            ...
却下される条件を知る• App Store Review Guideline  • 閲覧にiOS Developer Program登録が必要                                    2012/6/29  • 英語...
iOS開発環境を知るどんな開発でも言語とフレームの理解は重要• Objective-C                                                           2012/6/29  • 独特 (書式、...
iOS Developer Library を読むアプリ全体、概念的な設計• iOS Human Interface Guidelines                                              2012/6/...
サンプルをたくさん動かす• ドキュメントとサンプルを行ったり来たり                               2012/6/29• 慣れてきたら3rd Partyライブラリを使ってみる                     ...
2012/6/29             BPStudy#58計画外のことばかりリリース後にすること   18
いざリリースしてみると計画外のことだらけ                       2012/6/29• ライバルアプリの出現                       BPStudy#58• 新しいiOSで動かない• AppStoreのユ...
AppStoreのユーザ評価• 評価点数(☆1~☆5)がダウンロードに影響 • ☆1評価 をなんとかして回避したい                          2012/6/29 • できれば ☆5をつけてほしい             ...
エンジニアができること• 品質を高める                  2012/6/29• バグをすぐに修正する                  BPStudy#58• よい評価を促す仕組みを作る                  21
品質を高めるiOS開発ではメモリ管理に特に気をつける                                                                                     2012/6/29• ...
バグをすぐに修正する  • 1週間ごとに機能追加Ver.を申請し、    バグ修正もそこに含めてしまう                                                                       ...
奥の手: Expedited Review• 通常1週間ぐらいかかるAppleのレビューを  即日で通してもらう                               2012/6/29 • Appleのサイトから英語で申請 • 本当に困...
よい評価を促す仕組みを作る• アプリのお得意様にレビューしてほしい                          2012/6/29• ある回数起動したら、依頼のダイアログを出す                          BPStu...
バージョンアップを続ける上で                 BPStudy#58   2012/6/29  26
アプリバージョンが混在する• 古いVer.のアプリを使い続けるユーザがいる • アプリとWebAPIとの整合性をどうやって保つのか?                                2012/6/29               ...
強制バージョンアップ• アプリ起動時に最新バージョンを問い合わせる  WebAPIを用意                          2012/6/29• 現在のアプリよりも新しいものがあれば、                      ...
クライアントの混在を許す• APIのレスポンスボディ の拡張方法 • JSON へ 新しい要素の追加はOK                               2012/6/29 • 既存の要素の削除・改名はNG   • パース時にデフ...
まとめ• Appleのルールを理解し、適応する                                  2012/6/29• 細かく、継続的に改善する  • 開発言語にPythonを使っているのなら                  ...
ありがとうございました     BPStudy#58      2012/6/2931
Upcoming SlideShare
Loading in...5
×

BPStudy58 第1部 Web系エンジニアがiPhoneアプリ開発を1年続けてみて学んだこと

9,003

Published on

ゆめみ提供のiPhoneアプリ Nailbook (http://nailbook.jp)につきまして開発全般を通じて得たiPhoneアプリ開発ノウハウ を紹介します。

関連リンク
App Store - ネイルブック
http://itunes.apple.com/jp/app/nailbook/id432831907?mt=8

ゆめ技:ゆめみスタッフブログ
http://yumewaza.yumemi.co.jp/

ビープラウド著 Pythonプロフェッショナルプログラミング
http://www.amazon.co.jp/Python%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%83%93%E3%83%BC%E3%83%97%E3%83%A9%E3%82%A6%E3%83%89/dp/4798032948

0 Comments
20 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,003
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
24
Comments
0
Likes
20
Embeds 0
No embeds

No notes for slide

Transcript of "BPStudy58 第1部 Web系エンジニアがiPhoneアプリ開発を1年続けてみて学んだこと"

  1. 1. Web系エンジニアがiPhoneアプリ開発を1年続けてみて学んだこと
  2. 2. 自己紹介• 渡邉 将人 • Twitter @nave_m 2012/6/29 • Facebook facebook.com/masato.nave BPStudy#58• ゆめみ で 働いているプログラマ • スマートフォン アプリ、Web • C/C++, Objective-C , Python 2
  3. 3. 本日の内容• iPhoneアプリ開発のノウハウ 2012/6/29• 継続開発 BPStudy#58• エンジニア視点• 今回の対象外 • 細かい設計・実装 • 企画・プロモーション 3
  4. 4. 発表の流れ1. iPhoneアプリ Nailbookのご紹介 2012/6/292. 開発前にすべきこと BPStudy#583. リリース後にすること4. バージョンアップを続ける上で5. まとめ 4
  5. 5. 2012/6/29 BPStudy#58ネイルの写真を共有するiPhoneアプリNAILBOOKのご紹介 5
  6. 6. Nailbookとは• ネイル好きのためのiPhoneアプリ 2012/6/29 • みんなのネイル写真を見る BPStudy#58 • 自分のネイルを投稿する• App Store http://itunes.apple.com/jp/app/nailbook/id432831907 6• Webサイト http://nailbook.jp/
  7. 7. ネイルの写真を見る・探す • 写真が豊富 2012/6/29 • 検索機能 • 色 BPStudy#58 • デザイン • シーン • ハンド/フット • サロン / セルフ 7
  8. 8. 写真をお気に入り登録 • かわいい ボタン • フィードバック 2012/6/29 • Facebookのいいね! BPStudy#58 • ランキング • 過去 1週間 集計 • 実際にウケている 旬のネイルがわかる 8
  9. 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. 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. 11. 2012/6/29 BPStudy#58Appleのプラットフォームを理解する開発前にすべきこと 11
  12. 12. アプリが世に出るまで1. 開発者登録、アプリ公開用登録をする 2012/6/292. アプリを開発する BPStudy#583. 申請してAppleによるレビューを受ける4. App Storeに公開 12
  13. 13. Appleによるレビュー• レビューを通らないと公開できない • バージョンアップにも毎回レビューが要る 2012/6/29• 「ガイドライン」と「レビュー担当者」が絶対 BPStudy#58• レビュワーは米国にしかいないらしい 13
  14. 14. 却下される条件を知る• App Store Review Guideline • 閲覧にiOS Developer Program登録が必要 2012/6/29 • 英語 BPStudy#58• レビューで却下される条件は必読• アプリ関係者全員で読んだほうがよい 14
  15. 15. iOS開発環境を知るどんな開発でも言語とフレームの理解は重要• Objective-C 2012/6/29 • 独特 (書式、メモリ管理)• iOS SDK BPStudy#58 • パターンさえを覚えてしまえば生産性は高い • Referenceに従わないコードはRejectされます • 例 ) ファイル保存のディレクトリ • App Store Review Guideline - 2. Functionality を読む• その他 • 非同期通信、 タッチ処理、画面のコントローラなど イベント駆動なアプローチがたくさん 15
  16. 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
  17. 17. サンプルをたくさん動かす• ドキュメントとサンプルを行ったり来たり 2012/6/29• 慣れてきたら3rd Partyライブラリを使ってみる BPStudy#58• 困ったらStackOverflow 17
  18. 18. 2012/6/29 BPStudy#58計画外のことばかりリリース後にすること 18
  19. 19. いざリリースしてみると計画外のことだらけ 2012/6/29• ライバルアプリの出現 BPStudy#58• 新しいiOSで動かない• AppStoreのユーザ評価が荒れる 19
  20. 20. AppStoreのユーザ評価• 評価点数(☆1~☆5)がダウンロードに影響 • ☆1評価 をなんとかして回避したい 2012/6/29 • できれば ☆5をつけてほしい BPStudy#58 20
  21. 21. エンジニアができること• 品質を高める 2012/6/29• バグをすぐに修正する BPStudy#58• よい評価を促す仕組みを作る 21
  22. 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. 23. バグをすぐに修正する • 1週間ごとに機能追加Ver.を申請し、 バグ修正もそこに含めてしまう 2012/6/29 • レビューでRejectされたら指摘事項を修正して、 BPStudy#58 その間に作った機能もマージして最申請 → Git大活躍 • 機能追加は可能な限り小分けにする → チケット駆動開発ゆめ技:Git-Redmine: GitのコミットとRedmineを連携する。チケット駆動開発にも。By @coiledcoil 23http://yumewaza.yumemi.co.jp/2011/08/git-redmine-integration-using-rest-api-python.html
  24. 24. 奥の手: Expedited Review• 通常1週間ぐらいかかるAppleのレビューを 即日で通してもらう 2012/6/29 • Appleのサイトから英語で申請 • 本当に困ったときだけ使う • 例 )外部インフラが障害で乗り換えが必要になった BPStudy#58 24
  25. 25. よい評価を促す仕組みを作る• アプリのお得意様にレビューしてほしい 2012/6/29• ある回数起動したら、依頼のダイアログを出す BPStudy#58 25
  26. 26. バージョンアップを続ける上で BPStudy#58 2012/6/29 26
  27. 27. アプリバージョンが混在する• 古いVer.のアプリを使い続けるユーザがいる • アプリとWebAPIとの整合性をどうやって保つのか? 2012/6/29 BPStudy#58• 強制バージョンアップ• クライアントの混在を許す設計 27
  28. 28. 強制バージョンアップ• アプリ起動時に最新バージョンを問い合わせる WebAPIを用意 2012/6/29• 現在のアプリよりも新しいものがあれば、 BPStudy#58 AppStoreへ移動させるダイアログ表示 28
  29. 29. クライアントの混在を許す• APIのレスポンスボディ の拡張方法 • JSON へ 新しい要素の追加はOK 2012/6/29 • 既存の要素の削除・改名はNG • パース時にデフォルト値になってしまう BPStudy#58• レスポンスの仕様を大きく変える場合、API を分ける • URIにVer番号を入れる • GET /1/app/action 29
  30. 30. まとめ• Appleのルールを理解し、適応する 2012/6/29• 細かく、継続的に改善する • 開発言語にPythonを使っているのなら BPStudy#58 書籍 「Pythonプロフェッショナルプログラミング」 はぜひ読んでおきたいさりげなく重要• 技術英語 ( Reading ) 30
  31. 31. ありがとうございました BPStudy#58 2012/6/2931
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×