WantedlyではどうやってiOSアプリ開発しているのか
!
2014-04-24
Yoshinori Kawasaki
Wantedlyを支えてくれる
スーパーエンジニア募集中!
https://www.wantedly.com/projects/6578
自己紹介
川崎 禎紀 (かわさき よしのり)
twitter: @kawasy
GitHub: @luvtechno
2012年4月よりウォンテッドリー株式会社にCTOと
して参加。社員第一号
開発プロジェクト全般に責任をもち、設計・開発・
進行管理など全ての面で関わっている
最近の課題はチーム作り。今期のKPIは採用人数
詳しいプロフィール
→ https://www.wantedly.com/users/10599
会社紹介
シゴトでココロオドル人をふやす
• シゴト充実化サービス・アプリの提供
• 2012年2月に会社訪問サービス正式ローンチ
• 2014年2月に会社訪問iPhone版リリース
• アルバイト・インターン含めて25人
• 開発チームは8人 (エンジニア+デザイナ)
• 利用企業2700社
• ユーザ数80000人
• https://www.wantedly.com/companies/wantedly
contacts.wantedly.com
Wantedlyではどうやって
iOSアプリ開発しているのか
1. プロトタイピング
ホワイトボードをつかう
モックアップツールをつかう
moqups.com
モックアップを実機でさわってみる
https://popapp.in
2. 開発
• iOS側
• フルネイティブでwebviewなし
• 定番CocoaPodsを活用
• StoryboardとContainerを多用
• APIサーバ側
• Rails 4 で JSON APIを用意
• Webと同じコードベース
• Webと同様 Heroku で運用
Elasticsearch cluster
(EC2)
RDS PostgreSQL
ELB
Heroku dynos
US East Region
Tokyo Region
S3 bucket for ImagesCloudFront
iPhone
JSON API
Image
Distribution
• RestKit - consuming and modeling RESTful web resources
• AFNetworking - networking framework
• SDWebImage - Asynchronous image downloader with cache
support with an UIImageView category
• RNCryptor - Encryptor/Decryptor
• UICKeyChainStore - a simple wrapper for Keychain
• SVProgressHUD - A clean and lightweight progress HUD
• TTTAttributedLabel - A drop-in replacement for UILabel that
supports attributes, data detectors, links, and more.
• NUI - Style iOS apps with a stylesheet, similar to CSS
• JLRoutes - Advanced URL parsing designed to handle complex
URL schemes with a block-based callback API
定番CocoaPodsをさがす
cocoapods.wantedly.com
コード管理
• 開発初期はAPIサーバとiOSのコードを単一レポジトリ
へ
• Pull Requestがひとつになる
• レビューしやすい&mergeのタイミングがあう
• リリース後にレポジトリ分割
• アプリとAPIサーバのリリースサイクルの違い
• Rails側はmasterは常にdeployされている ( 5
deploy / day)
• アプリのアップデートは数週間ごと
コーディングスタイルガイドをGitHubで公開中
https://github.com/wantedly/objective-c-style-guide
3. テスト
Rails側
• Continuas Integration
• werckerというCIサービス
を利用 (βだが十分使える)
• Pull Request毎にテスト結
果を確認・コードレビュー
• masterは常にdeployableな
状態にたもつ
iOS側
• ユーザテストをしっかり
やる
• フィードバックをもとに
改善サイクルを繰り返す
• 本番と別にテスト用のQA
サーバを用意
• BuildSettingsで切り替え
• TestFlightで配布
• 自動テストはしていない
まとめ
1. プロトタイピング
• デザイナーでなくてもできる
• 実機で触ってアイデアを確かめるのが大切
2. 開発
• GitHubでpull requestベースのチーム開発
• スタイルガイドを用意して標準をそろえる
• 車輪の再発明をしない。定番CocoaPodsを活用
3. テスト
• サーバ側でやりやすいところはしっかり自動化
• UXを高めるためにユーザテストをしっかり
ありがとうございました!
Wantedlyを支えてくれる
スーパーエンジニア募集中!
https://www.wantedly.com/projects/6578

WantedlyではどうやってiOSアプリ開発しているのか