47
「簡単アンケート for iPad & iPhone」 - Parse 使ってみたよ - ご紹介 Hatman Research ©

「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

Embed Size (px)

DESCRIPTION

第26回名古屋iPhoneアプリ開発勉強会での発表資料です。 参考になれば幸いです。 名古屋でビギナー&上級者オールインワンの 勉強会やってますので、どしどしご参加を。 アプリのダウンロードはこちらから ↓ https://itunes.apple.com/jp/app/jian-dananketo-for-ipad-iphone/id836026986?mt=8 サポートページはこちらです ↓ https://www.facebook.com/EasyQuestionnaire

Citation preview

Page 1: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

「簡単アンケート for iPad & iPhone」

- Parse 使ってみたよ -

ご紹介

Hatman Research©

Page 2: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

自己紹介名前:服部貴俊 | はっとまん

名古屋市南区在住

facebook :「服部貴俊」で登録してます。よろしくどうぞ。

2

やるときはやる しっかり者 (*ノω・*)テヘペロ

Page 3: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

3

この度、リリースしました。

簡単アンケート for iPad & iPhone

https://itunes.apple.com/jp/app/id836026986?mt=8&ign-mpt=uo%3D4

アンケート。作るも、 答えるもコレ一本。

UI(洒落乙度) / UX(分かり易さ)は、まだまだ商用品質ではないけど。

Page 4: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

4

何が出来るの?

アンケートを作成しアップロードします。

[主催者]

Parse.com

Page 5: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

4

何が出来るの?

[ご回答者]

アンケートを ダウンロードして頂きます

アンケートを作成しアップロードします。

[主催者]

Parse.com

Page 6: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

4

何が出来るの?

[ご回答者]

アンケートを ダウンロードして頂きます

アンケートを作成しアップロードします。

[主催者]

Parse.com

ご回答後、 アップロードして頂きます。

Parse.com

Page 7: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

4

何が出来るの?

[ご回答者]

アンケートを ダウンロードして頂きます

回答データをダウンロードして 集計結果を確認できます。

[主催者]

アンケートを作成しアップロードします。

[主催者]

Parse.com

ご回答後、 アップロードして頂きます。

Parse.com

Page 8: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

4

何が出来るの?

[ご回答者]

アンケートを ダウンロードして頂きます

回答データをダウンロードして 集計結果を確認できます。

[主催者]

[ご回答者]

アンケートの設定次第でご回答者自身も 集計結果を確認できます。

アンケートを作成しアップロードします。

[主催者]

Parse.com

ご回答後、 アップロードして頂きます。

Parse.com

Page 9: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

5

開発動機

Page 10: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

6

http://www.slideshare.net/takatoshihattori

毎回、数百人~千人規模で、 御覧頂いております。

ここ一年近く、本勉強会のアンケートを担当していまして、 集計結果は、slideshareで公開しています。

即満足度向上とはいきませんが、

ご回答頂いたものは、 せめて全員が見える形へ。

※アンケートが好きかと思われるかも知れませんが、特に好きというわけではありません。

Page 11: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

7

質問形式はこんな感じ。自由回答

統計 | 複数回答

統計 | 単一回答

Page 12: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

8

アンケートのそもそもの目的について 考えてみた

Page 13: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

8

アンケートのそもそもの目的について 考えてみた

勉強会はみんなで作る。みなさんの声を聞いて、勉強会を実り多き方向へ。

Page 14: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

8

アンケートのそもそもの目的について 考えてみた

勉強会はみんなで作る。みなさんの声を聞いて、勉強会を実り多き方向へ。

まだ見ぬ初参加の方へのメッセージ(広報用)。

ささやかながら、参加者のアプリ宣伝も。

Page 15: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

8

アンケートのそもそもの目的について 考えてみた

勉強会はみんなで作る。みなさんの声を聞いて、勉強会を実り多き方向へ。

まだ見ぬ初参加の方へのメッセージ(広報用)。

ささやかながら、参加者のアプリ宣伝も。

photo credit: tec_estromberg via photopin cc

Page 16: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

9

でもね。後処理(集計)あり。

Page 17: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

9

でもね。後処理(集計)あり。

Page 18: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

10

集計が手間だな~(飽きてたw)。毎月の事だし自動で出来たら。

Webなら普通にアンケートシステムとかあるよな~

いやまてよ。 アンケートぐらい、手軽なiPhoneでやればいいじゃん。 そもそもアプリの勉強会なんだし。

よしっアプリ作ってみよっ。

アンケートを担当してかれこれ半年・・・ ある時ふと思った

Page 19: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

11

アンケートはAppで。

Page 20: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

12

アプリ開発舞台裏ちょっとだけ

Page 21: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

13

ざっくりと決めた目標

        スマホオンリーで

アンケートの回答は、とにかく簡単にできること。

アンケートの作成は、それなりに簡単にできること。

Page 22: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

14

どう構成すれば成り立つか、画面遷移の絵書きました。

とっかかり

Page 23: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

15

アンケート作成モード

主な技術的要素

ViewController + TableView アンケート・質問・選択肢のUIに使用

データ永続化 オブジェクトアーカイブ

深いコピー  アンケートを丸ごと流用する際に使用

twitter/ Facebook連携  ほとんどおまけw

ネットワーク連携  アンケートのアップロードと 集計データのダウンロード

Parse使用

Page 24: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

16

アンケート回答モード主な技術的要素

ScrollViewで十字スクロール  選択肢が多くても上下スクロール、 質問の移動はスワイプか方向ボタン

データ永続化オブジェクトアーカイブ

twitter/ Facebook連携  ほとんどおまけw

ネットワーク連携  回答をアップロード 集計データのダウンロード

Parse使用

Page 25: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

17

そもそもParseってなんですか?

アプリでサーバー連携するためのバックエンドサービスを提供してる会社名、及びサービス名らしいです(現在Facebookの傘下)。https://parse.com

プッシュ通知、ソーシャル連携とか、いろいろ出来るらしいですが、今回は、iPhone間のデータのやりとりに使いました。

アンケートアップロード[主催者]

Parse.com

[ご回答者]アンケート ダウンロード

Page 26: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

18

アップロードの例

PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];

testObject[@"A"] = @“Hatman";

testObject[@"B"] = @"love";

[testObject saveInBackground];

Parse SDKのインストールとか、フレームワークのインポートとか、ありますが、数行でParseにデータをアップロード可能です。(Parse利用手引のQuickstartから直ぐ試せます。)

クラス名(テーブル名):TestObject

A BBatman likeHatman love データが入る

Page 27: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

19

ダウンロードの例条件にマッチしたデータをダウンロードできます。// PFQueryオブジェクト作成

PFQuery *query = [PFQuery queryWithClassName:@"TestObject"];

// クエリ条件に、Bのキーが love に一致する[query whereKey:@"B" equalTo:@“love”];

// 検索する[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

// 1件以上存在する場合 if ([objects count] != 0) {

//やりたい処理・・・

}

}];^(仮引数){コードの断片} がブロックです。要は単純にコード断片をまとめたもので、 メソッドや関数に値と同じように渡し、渡した先でコード断片が実行されます。ここでは、「データ取得後に何をしたいかをブロックで記述するメソッドfindObjectsInBackgroundWithBlock」を使うので、しょうがなくブロックで書いたということになります。

Parseが勝手にスレッド生成し、メインスレッドとは別に実行される様が

デバッガで確認できます

メインスレッド

ダウンロード完了後、”遅れて”実行

Page 28: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

20

データ入手後の各種処理をGrand Central Dispatchで書いたサンプル。 直列Queueを作ってGrand Central Dispatchで並列処理させます(動いたけど正しいか不明w)。

dispatch_queue_t queue = dispatch_queue_create("jp.hatman.gcd.MySerialDispatchQueue", DISPATCH_QUEUE_SERIAL);// PFQueryオブジェクト作成

PFQuery *query = [PFQuery queryWithClassName:@"TestObject"];

// クエリ条件に、Bのキーが love に一致する[query whereKey:@"B" equalTo:@“love”];

// 検索する[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

// 1件以上存在する場合 if ([objects count] != 0) {

  dispatch_async(queue, ^{

           // 処理 (例えば、ダウンロードしたアンケートを集計したり)

     dispatch_async(queue, ^{

    // 処理(例えば、メーラーを起動したり)

          });

       });

}

}];

直列キューに入れたので、集計途中で、メーラーが

起動することはありません。

Page 29: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

21

Parse使うには、ブロック構文と並列プログラミングに慣れが必要そうです。Parseのドキュメントでは、ブロック構文によるサンプルが、ビシバシ登場します。

メインスレッドのループ(UIのイベント処理担当) データ通信など重い処理はスレッド作って分岐。

「~Background~」と付くメソッドは、勝手にスレッド生成して、”裏で”処理してくれます。

長時間の処理(目安1sec以上)でメインスレッドを

ブロックしてはいけません。

アップロード、ダウンロード、色々処理

App終了

App起動

とどのつまり

図はイメージです。

Page 30: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

22

Page 31: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

22

Saving data to the cloud is fun,アップロードは楽しい!

Page 32: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

22

Saving data to the cloud is fun,アップロードは楽しい!

but it's even more fun to get that data out again. ダウンロードはもっと楽しい!!

Page 33: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

22

Saving data to the cloud is fun,アップロードは楽しい!

By Parse

but it's even more fun to get that data out again. ダウンロードはもっと楽しい!!

Page 34: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

23

参考にしたWebサイト | 並列プログラミング

mixi-inc/iOSTraining 8.2 Grand Central Dispatch https://github.com/mixi-inc/iOSTraining/wiki/8.2-Grand-Central-Dispatch マルチコア時代の新機軸! Snow LeopardのGCDhttp://ascii.jp/elem/000/000/455/455786/

mixiの資料は必読です。2つ目はGCD登場の雑学など。

Page 35: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

24

参考にしたWebサイト | Parse

Parseについてのあれこれhttp://tech.aainc.co.jp/archives/3145

ParseをObjective-Cで使用するhttp://inon29.hateblo.jp/entry/2013/12/15/153315

[Parse][iOS] PFObjectの保存・更新・削除の基本http://dev.classmethod.jp/smartphone/iphone/parse-ios-pfobject/ アプリ開発をよりスマートに、スピーディに | ニフティクラウド mobile backend http://mb.cloud.nifty.com

Parse.comの使い方に特化した分かりやすい(日本語)書籍とかは多分無くて、以下Webサイトがとても参考になりました。

Page 36: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

25

参考にしたApple公式ドキュメント

iOS Scroll View プログラミングガイド 十字スクロールについての説明あり。 !Objective-Cによる プログラミングブロック構文の章、初歩的な説明が分かりやすい。10回ぐらい読めばOK。

!iTunes Connect デベロッパガイドリリースの際に、ネット上に散在する情報と照らして読むと、わかりやすい。

https://developer.apple.com/jp/devcenter/ios/library/japanese.html

Page 37: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

26

おすすめ書籍とっても参考になりました。

・TableView・データの永続化・オブジェクト間の通信方法 (デリゲートデザインパターン)・Model-View-Controller デザインパターン

 なぜか、Amazonの評価はいまいち。

・TableView、Switch、Button・・・の 細かい使い方・ScrollViewで十字スクロール

 古いのか、これでも載ってないものは、 とにかくググったわけです。  

参考) 俺的Objective-C勉強法

Page 38: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

苦労した点 | 画面サイズ

27

Page 39: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

苦労した点 | 画面サイズ

iPhone4S (and earlier)3.5’’ Screen

320 x 480 pts

27

Page 40: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

苦労した点 | 画面サイズ

iPhone4S (and earlier)3.5’’ Screen

320 x 480 pts

iPhone5縦長になった4’’ Screen

320 x 568 pts

27

Page 41: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

苦労した点 | 画面サイズ

iPhone4S (and earlier)3.5’’ Screen

320 x 480 pts

iPhone5縦長になった4’’ Screen

320 x 568 pts

次期iPhoneは?

予想図 27

Page 42: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

28

iOS5

iOS6

iOS7

iPhone4S(and earlier) iPhone5,5S iPad

iPad mini

画面サイズとiOSのバージョンとの組み合わせで、以下の枠分、動作確認しました(回転に対応)。

苦労した点 | iOSのバージョン

Page 43: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

29

最後に…これから始める方に向けて

Page 44: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

30

iPhone/iPadの性能は、10年前のPCに匹敵要はアイデアとやる気次第。

[要出典]

photo credit: AGmakonts via photopin cc

Page 45: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

31

iPhoneは楽しい!

Page 46: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

31

iPhoneは楽しい!アプリ開発はもっと楽しい!!

Page 47: 「簡単アンケート for iPad & iPhone」ご紹介 - Parse 使ってみたよ -

ご清聴ありがとうございました。

第26回名古屋iPhoneアプリ開発勉強会 ’14.4.19 Sat.