35
WantedlyではどうやってiOSアプリ開発しているのか 2014-04-24 Yoshinori Kawasaki

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

Embed Size (px)

Citation preview

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