Upload
takatoshi-hattori
View
5.267
Download
0
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
「簡単アンケート for iPad & iPhone」
- Parse 使ってみたよ -
ご紹介
Hatman Research©
自己紹介名前:服部貴俊 | はっとまん
名古屋市南区在住
facebook :「服部貴俊」で登録してます。よろしくどうぞ。
2
やるときはやる しっかり者 (*ノω・*)テヘペロ
3
この度、リリースしました。
簡単アンケート for iPad & iPhone
https://itunes.apple.com/jp/app/id836026986?mt=8&ign-mpt=uo%3D4
アンケート。作るも、 答えるもコレ一本。
UI(洒落乙度) / UX(分かり易さ)は、まだまだ商用品質ではないけど。
4
何が出来るの?
アンケートを作成しアップロードします。
[主催者]
Parse.com
4
何が出来るの?
[ご回答者]
アンケートを ダウンロードして頂きます
アンケートを作成しアップロードします。
[主催者]
Parse.com
4
何が出来るの?
[ご回答者]
アンケートを ダウンロードして頂きます
アンケートを作成しアップロードします。
[主催者]
Parse.com
ご回答後、 アップロードして頂きます。
Parse.com
4
何が出来るの?
[ご回答者]
アンケートを ダウンロードして頂きます
回答データをダウンロードして 集計結果を確認できます。
[主催者]
アンケートを作成しアップロードします。
[主催者]
Parse.com
ご回答後、 アップロードして頂きます。
Parse.com
4
何が出来るの?
[ご回答者]
アンケートを ダウンロードして頂きます
回答データをダウンロードして 集計結果を確認できます。
[主催者]
[ご回答者]
アンケートの設定次第でご回答者自身も 集計結果を確認できます。
アンケートを作成しアップロードします。
[主催者]
Parse.com
ご回答後、 アップロードして頂きます。
Parse.com
5
開発動機
6
http://www.slideshare.net/takatoshihattori
毎回、数百人~千人規模で、 御覧頂いております。
ここ一年近く、本勉強会のアンケートを担当していまして、 集計結果は、slideshareで公開しています。
即満足度向上とはいきませんが、
ご回答頂いたものは、 せめて全員が見える形へ。
※アンケートが好きかと思われるかも知れませんが、特に好きというわけではありません。
7
質問形式はこんな感じ。自由回答
統計 | 複数回答
統計 | 単一回答
8
アンケートのそもそもの目的について 考えてみた
8
アンケートのそもそもの目的について 考えてみた
勉強会はみんなで作る。みなさんの声を聞いて、勉強会を実り多き方向へ。
8
アンケートのそもそもの目的について 考えてみた
勉強会はみんなで作る。みなさんの声を聞いて、勉強会を実り多き方向へ。
まだ見ぬ初参加の方へのメッセージ(広報用)。
ささやかながら、参加者のアプリ宣伝も。
8
アンケートのそもそもの目的について 考えてみた
勉強会はみんなで作る。みなさんの声を聞いて、勉強会を実り多き方向へ。
まだ見ぬ初参加の方へのメッセージ(広報用)。
ささやかながら、参加者のアプリ宣伝も。
photo credit: tec_estromberg via photopin cc
9
でもね。後処理(集計)あり。
9
でもね。後処理(集計)あり。
10
集計が手間だな~(飽きてたw)。毎月の事だし自動で出来たら。
Webなら普通にアンケートシステムとかあるよな~
いやまてよ。 アンケートぐらい、手軽なiPhoneでやればいいじゃん。 そもそもアプリの勉強会なんだし。
よしっアプリ作ってみよっ。
アンケートを担当してかれこれ半年・・・ ある時ふと思った
11
アンケートはAppで。
12
アプリ開発舞台裏ちょっとだけ
13
ざっくりと決めた目標
スマホオンリーで
アンケートの回答は、とにかく簡単にできること。
アンケートの作成は、それなりに簡単にできること。
14
どう構成すれば成り立つか、画面遷移の絵書きました。
とっかかり
15
アンケート作成モード
主な技術的要素
ViewController + TableView アンケート・質問・選択肢のUIに使用
データ永続化 オブジェクトアーカイブ
深いコピー アンケートを丸ごと流用する際に使用
twitter/ Facebook連携 ほとんどおまけw
ネットワーク連携 アンケートのアップロードと 集計データのダウンロード
Parse使用
16
アンケート回答モード主な技術的要素
ScrollViewで十字スクロール 選択肢が多くても上下スクロール、 質問の移動はスワイプか方向ボタン
データ永続化オブジェクトアーカイブ
twitter/ Facebook連携 ほとんどおまけw
ネットワーク連携 回答をアップロード 集計データのダウンロード
Parse使用
17
そもそもParseってなんですか?
アプリでサーバー連携するためのバックエンドサービスを提供してる会社名、及びサービス名らしいです(現在Facebookの傘下)。https://parse.com
プッシュ通知、ソーシャル連携とか、いろいろ出来るらしいですが、今回は、iPhone間のデータのやりとりに使いました。
アンケートアップロード[主催者]
Parse.com
[ご回答者]アンケート ダウンロード
18
アップロードの例
PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];
testObject[@"A"] = @“Hatman";
testObject[@"B"] = @"love";
[testObject saveInBackground];
Parse SDKのインストールとか、フレームワークのインポートとか、ありますが、数行でParseにデータをアップロード可能です。(Parse利用手引のQuickstartから直ぐ試せます。)
クラス名(テーブル名):TestObject
A BBatman likeHatman love データが入る
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が勝手にスレッド生成し、メインスレッドとは別に実行される様が
デバッガで確認できます
メインスレッド
ダウンロード完了後、”遅れて”実行
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, ^{
// 処理(例えば、メーラーを起動したり)
});
});
}
}];
直列キューに入れたので、集計途中で、メーラーが
起動することはありません。
21
Parse使うには、ブロック構文と並列プログラミングに慣れが必要そうです。Parseのドキュメントでは、ブロック構文によるサンプルが、ビシバシ登場します。
メインスレッドのループ(UIのイベント処理担当) データ通信など重い処理はスレッド作って分岐。
「~Background~」と付くメソッドは、勝手にスレッド生成して、”裏で”処理してくれます。
長時間の処理(目安1sec以上)でメインスレッドを
ブロックしてはいけません。
アップロード、ダウンロード、色々処理
App終了
App起動
とどのつまり
図はイメージです。
22
22
Saving data to the cloud is fun,アップロードは楽しい!
22
Saving data to the cloud is fun,アップロードは楽しい!
but it's even more fun to get that data out again. ダウンロードはもっと楽しい!!
22
Saving data to the cloud is fun,アップロードは楽しい!
By Parse
but it's even more fun to get that data out again. ダウンロードはもっと楽しい!!
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登場の雑学など。
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サイトがとても参考になりました。
25
参考にしたApple公式ドキュメント
iOS Scroll View プログラミングガイド 十字スクロールについての説明あり。 !Objective-Cによる プログラミングブロック構文の章、初歩的な説明が分かりやすい。10回ぐらい読めばOK。
!iTunes Connect デベロッパガイドリリースの際に、ネット上に散在する情報と照らして読むと、わかりやすい。
https://developer.apple.com/jp/devcenter/ios/library/japanese.html
26
おすすめ書籍とっても参考になりました。
・TableView・データの永続化・オブジェクト間の通信方法 (デリゲートデザインパターン)・Model-View-Controller デザインパターン
なぜか、Amazonの評価はいまいち。
・TableView、Switch、Button・・・の 細かい使い方・ScrollViewで十字スクロール
古いのか、これでも載ってないものは、 とにかくググったわけです。
参考) 俺的Objective-C勉強法
苦労した点 | 画面サイズ
27
苦労した点 | 画面サイズ
iPhone4S (and earlier)3.5’’ Screen
320 x 480 pts
27
苦労した点 | 画面サイズ
iPhone4S (and earlier)3.5’’ Screen
320 x 480 pts
iPhone5縦長になった4’’ Screen
320 x 568 pts
27
苦労した点 | 画面サイズ
iPhone4S (and earlier)3.5’’ Screen
320 x 480 pts
iPhone5縦長になった4’’ Screen
320 x 568 pts
次期iPhoneは?
予想図 27
28
iOS5
iOS6
iOS7
iPhone4S(and earlier) iPhone5,5S iPad
iPad mini
画面サイズとiOSのバージョンとの組み合わせで、以下の枠分、動作確認しました(回転に対応)。
苦労した点 | iOSのバージョン
29
最後に…これから始める方に向けて
30
iPhone/iPadの性能は、10年前のPCに匹敵要はアイデアとやる気次第。
[要出典]
photo credit: AGmakonts via photopin cc
31
iPhoneは楽しい!
31
iPhoneは楽しい!アプリ開発はもっと楽しい!!
ご清聴ありがとうございました。
第26回名古屋iPhoneアプリ開発勉強会 ’14.4.19 Sat.