SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
シェイクを検知して学ぼう!
モーションイベント
Swiftビギナーズ倶楽部 第5回
写真素材ぱくたそ
http://www.pakutaso.com
• WordPressもくもく倶楽部@Co-Edoもやってます。
• Ruby / Ruby on Rails ビギナーズ倶楽部@Co-Edoやってます( ́ ▽ ` )ノ
• スマホアプリ開発初心者な、アプリケーションエンジニア(Rails / LAMP / Java / Oracle)
Self-Intoroduction
http://ror-beginners.doorkeeper.jp/
http://wp-moku.doorkeeper.jp/
1) シェイクをカウントしてみよう!
Today's Agenda
2)モーションイベントを学ぼう!
3)モーションイベントの実装方法!
1-1) シェイクをカウントしてみよう!
Let s DEMO!
2-1)モーションイベントを学ぼう!
モーションイベントとは!
デバイスを振ったり、傾けたりすることで、
モーションイベントが発生します。
デバイスのハードウェア
加速度センサー ジャイロスコープ
イベントを検知してくれるのは
CoreMotionフレームワーク
2-2)モーションイベントを学ぼう!
https://developer.apple.com/jp/documentation/EventHandlingiPhoneOS.pdf
引用資料:イベント処理ガイド(iOS用)
加速度センサー
・x、y、z軸に沿った速度の変化を測定します。
・加速度データを受け取って処理するためには、
 CMMotionManagerクラスを利用します。
・startAccelerometerUpdates(プル型)
 ーアプリケーションは定期的にこの値を取得します。
・startAccelerometerUpdatesToQueue:withHandler(プッシュ型)
 ー加速度センサーのデータ更新に応じて実行されます。
いずれかのメソッドを利用。
2-3)モーションイベントを学ぼう!
ジャイロスコープ
・3つの空間軸の周りの回転速度を測定します。
・ジャイロスコープが搭載されているデバイス。
https://developer.apple.com/jp/documentation/EventHandlingiPhoneOS.pdf
引用資料:イベント処理ガイド(iOS用)
・startGyroUpdates(プル型)
 ーアプリケーションは定期的にこの値を取得します。
・startGyroUpdatesToQueue:withHandler(プッシュ型)
 ージャイロスコープのデータ更新に応じて実行されます。
ー iPhone 4以降/iPod touch第4世代/iPad 2以降
いずれかのメソッドを利用。
2-4)モーションイベントを学ぼう!
データにアクセスする方法
1)デバイスの大まかな向きが分かればよく、
  向きベクトルは必要ないという場合
=> UIDeviceを使ってデバイスの向きを取得します。
2)デバイスを振る動きに応答したい場合
=> UIEventオブジェクトから必要な情報を取得します。
3)UIDeviceやUIEventを使って
必要な情報が得られない場合
=> Core Motionフレームワークを利用して、加速度センサー、
ジャイロスコープ、デバイスモーションの各クラスにアクセスします。
3-1)モーションイベントの実装方法!
モーション処理メソッドは、3種類あります。
・motionBegan:withEvent
・motionEnded:withEvent
・motionCancelled:withEvent
motionBegan、motionEndedのいずれか、
あるいは両方を実装する必要があります。
motionCancelledメソッドも実装して、iOSが
モーションイベントをキャンセルした場合に、
対処できるようにしましょう。
@IBOutlet weak var countLabel: UILabel!
var cnt = 0
override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent) {
if event.type == UIEventType.Motion && event.subtype == UIEventSubtype.MotionShake {
// シェイク動作始まり時の処理
// 今回は特に処理を入れていません。
}
}
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) {
if event.type == UIEventType.Motion && event.subtype == UIEventSubtype.MotionShake {
// シェイク動作終了時の処理
cnt++
countLabel.text = cnt.description
}
}
override func motionCancelled(motion: UIEventSubtype, withEvent event: UIEvent) {
// モーションイベントをキャンセルしたとき対処
// イベントがキャンセルされるのは、シェイクモーションが割り込まれたとき、
// あるいは(シェイクがあまりに長く続くなどのため)モーションが有効でないとiOSが判断したときです。
countLabel.text = "NG"
}
3-2)モーションイベントの実装方法!
DEMOアプリのコード
3-3)モーションイベントの実装方法!
シュミレータでの
確認方法!
iOS Simulator > Hardware > Shake Gesture
Or
control + command + z
ま と め
モーションイベントデータにアクセスする方法
1)デバイスの大まかな向きを取得する場合は、
  UIDeviceを利用する。
2)シェイク時には、UIEventを利用する。
3)UIDeviceやUIEventを使って必要な情報が得られない
  場合は、Core Motionフレームワークを利用する。
わからないー!
だれか教えてー♪
Swiftビギナーズ倶楽部は
わからないことは周りの人に聞いて、気軽に教え合って、
皆の疑問を1つでも解決して、楽しんで開発していきましょう。
Let's study together!
Thank you :)

Más contenido relacionado

Similar a シェイクを検知して学ぼう、モーションイベント!

WordPressの構造を理解しよう
WordPressの構造を理解しようWordPressの構造を理解しよう
WordPressの構造を理解しよう
Kanako Kobayashi
 
Ruby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストRuby on Railsではじめるrspecテスト
Ruby on Railsではじめるrspecテスト
Kanako Kobayashi
 
oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!
Kanako Kobayashi
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Yoichiro Sakurai
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
Yoichiro Sakurai
 
岐阜スーパーものづくり講座:第7回
岐阜スーパーものづくり講座:第7回岐阜スーパーものづくり講座:第7回
岐阜スーパーものづくり講座:第7回
Shigeru Kobayashi
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
Yoji Shidara
 

Similar a シェイクを検知して学ぼう、モーションイベント! (20)

WordPressの構造を理解しよう
WordPressの構造を理解しようWordPressの構造を理解しよう
WordPressの構造を理解しよう
 
Swiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみようSwiftで外部ライブラリを使ってみよう
Swiftで外部ライブラリを使ってみよう
 
Movable Type Data API Swiftアプリ作成事例
Movable Type Data API Swiftアプリ作成事例Movable Type Data API Swiftアプリ作成事例
Movable Type Data API Swiftアプリ作成事例
 
楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)楽しいSwift!クラスと構造体を知る:)
楽しいSwift!クラスと構造体を知る:)
 
Ruby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストRuby on Railsではじめるrspecテスト
Ruby on Railsではじめるrspecテスト
 
oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!oEmbedで、色んなコンテンツをWordPressに組み込もう!
oEmbedで、色んなコンテンツをWordPressに組み込もう!
 
Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!Swiftで、Webサーバにデータを送信・登録しよう!
Swiftで、Webサーバにデータを送信・登録しよう!
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計
 
Tmcn Leap Motion
Tmcn Leap MotionTmcn Leap Motion
Tmcn Leap Motion
 
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
 
railsはじめの一歩
railsはじめの一歩railsはじめの一歩
railsはじめの一歩
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
 
20141220_iOS8マルチデバイス対応(Size Classes編)
20141220_iOS8マルチデバイス対応(Size Classes編)20141220_iOS8マルチデバイス対応(Size Classes編)
20141220_iOS8マルチデバイス対応(Size Classes編)
 
20140523 jQuery基礎 (HTML5ビギナーズ)
20140523 jQuery基礎 (HTML5ビギナーズ)20140523 jQuery基礎 (HTML5ビギナーズ)
20140523 jQuery基礎 (HTML5ビギナーズ)
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
 
Leap Motion を用いた数学教材開発の例
Leap Motion を用いた数学教材開発の例Leap Motion を用いた数学教材開発の例
Leap Motion を用いた数学教材開発の例
 
岐阜スーパーものづくり講座:第7回
岐阜スーパーものづくり講座:第7回岐阜スーパーものづくり講座:第7回
岐阜スーパーものづくり講座:第7回
 
Pepper tech festival_2014_技術セッション基本
Pepper tech festival_2014_技術セッション基本Pepper tech festival_2014_技術セッション基本
Pepper tech festival_2014_技術セッション基本
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
 
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
姫路の方から来ました 〜 兵庫県姫路市の熱い勉強会を紹介 〜
 

Más de Kanako Kobayashi

Railsで非同期処理を実装しよう!!
Railsで非同期処理を実装しよう!!Railsで非同期処理を実装しよう!!
Railsで非同期処理を実装しよう!!
Kanako Kobayashi
 

Más de Kanako Kobayashi (7)

React Nativeの話のその前に… サービスの作り方の話
React Nativeの話のその前に… サービスの作り方の話React Nativeの話のその前に… サービスの作り方の話
React Nativeの話のその前に… サービスの作り方の話
 
Movable Type Data API連携!店舗情報を地図に表示させよう!
Movable Type Data API連携!店舗情報を地図に表示させよう!Movable Type Data API連携!店舗情報を地図に表示させよう!
Movable Type Data API連携!店舗情報を地図に表示させよう!
 
Xcodeのデバッグを極めよう!
Xcodeのデバッグを極めよう!Xcodeのデバッグを極めよう!
Xcodeのデバッグを極めよう!
 
Swiftオープンソース化ってなんですか?
Swiftオープンソース化ってなんですか?Swiftオープンソース化ってなんですか?
Swiftオープンソース化ってなんですか?
 
Railsで非同期処理を実装しよう!!
Railsで非同期処理を実装しよう!!Railsで非同期処理を実装しよう!!
Railsで非同期処理を実装しよう!!
 
Swiftビギナーズ勉強会 第一回@Co-Edo
Swiftビギナーズ勉強会 第一回@Co-EdoSwiftビギナーズ勉強会 第一回@Co-Edo
Swiftビギナーズ勉強会 第一回@Co-Edo
 
Gulp De wordpress in WordBench
Gulp De wordpress in WordBenchGulp De wordpress in WordBench
Gulp De wordpress in WordBench
 

Último

Último (12)

Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

シェイクを検知して学ぼう、モーションイベント!