rails with ios app

13
Rails & iOSApp LT @Rails勉強会つくば あおみかん@AknEp

Post on 11-Sep-2014

1.716 views

Category:

Technology


3 download

DESCRIPTION

Rails勉強会@つくば #1 での発表スライドです。 http://rails-meeting-tsukuba.doorkeeper.jp/events/6518 iOSとiOSアプリの連携について、Railsアプリケーション開発者向けに簡単に解説しました。

TRANSCRIPT

Page 1: Rails with iOS App

Rails & iOSApp LT@Rails勉強会つくば

あおみかん@AknEp

Page 2: Rails with iOS App

自己紹介• Railsアプリ書いたりiOSアプリ書いたり

• 最近退院()しました

• フリーランスで仕事してます。おかねください。

• 同人サークル 4th cluster 代表

• 筑波大が舞台のゲーム作ってますhttps://www.facebook.com/suzuki.satoshi.1988

Page 3: Rails with iOS App

基礎的なこと• アプリとサーバーがHTTP(S)で通信

• 最近のトレンド:

• RESTfulなURL設計→Railsでは当たり前だよね!

• JSONによるAPI→XMLでも良いけどJSONが楽

Page 4: Rails with iOS App

STEP1: API設計• /api/v1/users.json

• 美しいURLを!

• apigee 社の資料(→)が神

• http://offers.apigee.com/web-api-design-ebook/

• TwitterとかのAPIを使うと様々な作法が分かる

Page 5: Rails with iOS App

STEP2: 基本仕様の策定• ユーザ認証はどうするのか?

• ユーザ名とパスワードを送ってトークン受け取る方式が良い。 oAuthとか

• → 端末に生パスワードを保存するのは悪

• SSLを使えよ!絶対!

• クライアント側の知識があると設計がよくなる

Page 6: Rails with iOS App

STEP3: iOSアプリ開発

• CocoaPods でライブラリを使いまくる→ Ruby界隈でいうGemのiOS/OSX環境版

• APIのaction毎にWrapperクラスのメソッドが1つあるようにすると綺麗に設計できる

Page 7: Rails with iOS App

キャッシュについて• ネットワークアクセスがないと何も表示されないのうざくね?

• → キャッシュの管理を自前でやるのは大変…

• Twitterクライアントとかどうしてるの?

• → 内部DBへの挿入

Page 8: Rails with iOS App

CoreDataへのキャシュ

サーバー

画面

iOSの世界

CoreData(端末内のDB)

Page 9: Rails with iOS App

考慮したいこと• 古いアプリをずっと使うユーザーがいるかも?

• APIの更新で旧アプリがバグる

• iOS7で状況は良くなった

• APIは解析される!

• → 中間者攻撃で通信は全部見れる → APIはセキュアに設計しましょう

Page 10: Rails with iOS App

Facebook/Twitterログイン• WebViewで認証するのはダサい

• Twitter: iOS5以上で対応

• Facebook: iOS6以上で対応

• iOS5のシェアも落ちたので 基本的にOSネイティブでOK

• トークンを受け取る形式のログインをサーバー側であらかじめ策定しておく

Page 11: Rails with iOS App

ライブラリ紹介とか

• AFNetworking ネットワークアクセスが簡単に書ける。 Authorizationヘッダの指定も基本仕様に存在

• RestKitRestfulなAPIアクセスを超簡単に書けるらしい(最近知ったので使ったことがない…)

Page 12: Rails with iOS App

宣伝• ベアテイル社 Dr.Wallet

• MAST休学中の学生が中心のベンチャー

• 僕はiOSクライアント側で参画

• レシートを撮るだけで家計簿がつくのは快感

Page 13: Rails with iOS App

蛇足: respond_to ってどうよ

• 同じコントローラでjsonもhtmlも返せる

• かえって分かりにくいことが多い

• →僕は使ってないです