iosエンジニア in ハードウェア・プロジェクト

62
iOS エンジニア in ハードウェア・プロジェクト 2014.4.26 yidev@ 恵比寿勉強会 @shu223

Upload: shuichi-tsutsumi

Post on 28-May-2015

9.154 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: iOSエンジニア in ハードウェア・プロジェクト

iOSエンジニアin ハードウェア・プロジェクト

2014.4.26 yidev@恵比寿勉強会 堤 (@shu223)

Page 2: iOSエンジニア in ハードウェア・プロジェクト

自己紹介

Page 3: iOSエンジニア in ハードウェア・プロジェクト

自己紹介

• 経歴:某SIer → 某メーカー → カヤック → 海外スタートアップ → フリーランス

Page 4: iOSエンジニア in ハードウェア・プロジェクト

自己紹介

• 経歴:某SIer → 某メーカー → カヤック → 海外スタートアップ → フリーランス

• ブログ:『Over&Out その後』

Page 5: iOSエンジニア in ハードウェア・プロジェクト

自己紹介

• 経歴:某SIer → 某メーカー → カヤック → 海外スタートアップ → フリーランス

• ブログ:『Over&Out その後』

• 書籍:『iOSアプリ開発 達人のレシピ100』

Page 6: iOSエンジニア in ハードウェア・プロジェクト

自己紹介

• 経歴:某SIer → 某メーカー → カヤック → 海外スタートアップ → フリーランス

• ブログ:『Over&Out その後』

• 書籍:『iOSアプリ開発 達人のレシピ100』

• 連載:『iOSアプリと連携させて使えるデバイスたち』

Page 7: iOSエンジニア in ハードウェア・プロジェクト

概要

Page 8: iOSエンジニア in ハードウェア・プロジェクト

概要

ハードまわり(メカや電子回路)の知識やスキルを持たない iOSエンジニア が、ハードウェア関連プロジェクトに関わる際に、

Page 9: iOSエンジニア in ハードウェア・プロジェクト

概要

ハードまわり(メカや電子回路)の知識やスキルを持たない iOSエンジニア が、ハードウェア関連プロジェクトに関わる際に、

• どのあたりを担当するのか

Page 10: iOSエンジニア in ハードウェア・プロジェクト

概要

ハードまわり(メカや電子回路)の知識やスキルを持たない iOSエンジニア が、ハードウェア関連プロジェクトに関わる際に、

• どのあたりを担当するのか

• どんな知識/スキルを要するのか

Page 11: iOSエンジニア in ハードウェア・プロジェクト

概要

ハードまわり(メカや電子回路)の知識やスキルを持たない iOSエンジニア が、ハードウェア関連プロジェクトに関わる際に、

• どのあたりを担当するのか

• どんな知識/スキルを要するのか

について、自分の経験談をお話しします

Page 12: iOSエンジニア in ハードウェア・プロジェクト

自分が経験した3つのケース

• CASE 1 : 実店舗での iBeacon 利用アプリ

• CASE 2 : 新規ウェアラブルデバイス用アプリ

• CASE 3 : 次世代車椅子と連携するアプリ

Page 13: iOSエンジニア in ハードウェア・プロジェクト

CASE 1 iBeacon x 実店舗

Page 14: iOSエンジニア in ハードウェア・プロジェクト

火鍋チェーン「小肥羊」アプリ

Page 15: iOSエンジニア in ハードウェア・プロジェクト

火鍋チェーン「小肥羊」アプリ

• iBeaconの機能を使用

Page 16: iOSエンジニア in ハードウェア・プロジェクト

火鍋チェーン「小肥羊」アプリ

• iBeaconの機能を使用

• 入店を検知

Page 17: iOSエンジニア in ハードウェア・プロジェクト

火鍋チェーン「小肥羊」アプリ

• iBeaconの機能を使用

• 入店を検知

• 退店後にクーポン付与

Page 18: iOSエンジニア in ハードウェア・プロジェクト

iBeaconアプリ/サービス開発での iOSエンジニアのカバー範囲

iOSアプリ ハードBLE

Page 19: iOSエンジニア in ハードウェア・プロジェクト

iBeaconアプリ/サービス開発での iOSエンジニアのカバー範囲

iOSアプリ ハードBLE

Page 20: iOSエンジニア in ハードウェア・プロジェクト

iBeaconアプリ/サービス開発での iOSエンジニアのカバー範囲

• BLEやハード側の知識がなくてもOK

iOSアプリ ハードBLE

Page 21: iOSエンジニア in ハードウェア・プロジェクト

iOS側実装に必要な知識・スキル

Page 22: iOSエンジニア in ハードウェア・プロジェクト

iOS側実装に必要な知識・スキル

• Core Location の iBeacon まわりを理解していればよい

Page 23: iOSエンジニア in ハードウェア・プロジェクト

iOS側実装に必要な知識・スキル

• Core Location の iBeacon まわりを理解していればよい

‣ 関連API

Page 24: iOSエンジニア in ハードウェア・プロジェクト

iOS側実装に必要な知識・スキル

• Core Location の iBeacon まわりを理解していればよい

‣ 関連API

‣ iBeaconの仕様(UUID、major、minor をアドバタイズしている、みたいな話)

Page 25: iOSエンジニア in ハードウェア・プロジェクト

iOS側実装に必要な知識・スキル

• Core Location の iBeacon まわりを理解していればよい

‣ 関連API

‣ iBeaconの仕様(UUID、major、minor をアドバタイズしている、みたいな話)

‣ チート/セキュリティリスクとその対策方法

Page 26: iOSエンジニア in ハードウェア・プロジェクト

iOS側実装に必要な知識・スキル

• Core Location の iBeacon まわりを理解していればよい

‣ 関連API

‣ iBeaconの仕様(UUID、major、minor をアドバタイズしている、みたいな話)

‣ チート/セキュリティリスクとその対策方法

• Core Bluetooth 及び BLE の知識は不要

Page 27: iOSエンジニア in ハードウェア・プロジェクト

とはいえ

Page 28: iOSエンジニア in ハードウェア・プロジェクト

Core Bluetooth や BLE の知識はあった方が断然良い

Page 29: iOSエンジニア in ハードウェア・プロジェクト

Core Bluetooth や BLE の知識はあった方が断然良い

• iBeacon は BLE の縮退仕様

Page 30: iOSエンジニア in ハードウェア・プロジェクト

Core Bluetooth や BLE の知識はあった方が断然良い

• iBeacon は BLE の縮退仕様

• Core Bluetooth / BLE の知識があると、

Page 31: iOSエンジニア in ハードウェア・プロジェクト

Core Bluetooth や BLE の知識はあった方が断然良い

• iBeacon は BLE の縮退仕様

• Core Bluetooth / BLE の知識があると、

‣ iBeacon の仕様をより正確に理解できる

Page 32: iOSエンジニア in ハードウェア・プロジェクト

Core Bluetooth や BLE の知識はあった方が断然良い

• iBeacon は BLE の縮退仕様

• Core Bluetooth / BLE の知識があると、

‣ iBeacon の仕様をより正確に理解できる

‣ 「何が得意で、何が苦手なのか」をより明確に理解できる

Page 33: iOSエンジニア in ハードウェア・プロジェクト

Core Bluetooth や BLE の知識はあった方が断然良い

• iBeacon は BLE の縮退仕様

• Core Bluetooth / BLE の知識があると、

‣ iBeacon の仕様をより正確に理解できる

‣ 「何が得意で、何が苦手なのか」をより明確に理解できる

→ より的確なサービス設計が可能になる

Page 34: iOSエンジニア in ハードウェア・プロジェクト

Core Bluetooth や BLE の知識はあった方が断然良い

• iBeacon は BLE の縮退仕様

• Core Bluetooth / BLE の知識があると、

‣ iBeacon の仕様をより正確に理解できる

‣ 「何が得意で、何が苦手なのか」をより明確に理解できる

→ より的確なサービス設計が可能になる

‣ デバッグ、現場検証時にも勘が働く

Page 35: iOSエンジニア in ハードウェア・プロジェクト

Core Bluetooth や BLE の知識はあった方が断然良い

• iBeacon は BLE の縮退仕様

• Core Bluetooth / BLE の知識があると、

‣ iBeacon の仕様をより正確に理解できる

‣ 「何が得意で、何が苦手なのか」をより明確に理解できる

→ より的確なサービス設計が可能になる

‣ デバッグ、現場検証時にも勘が働く

• Core Bluetooth側からの動作確認

Page 36: iOSエンジニア in ハードウェア・プロジェクト

Core Bluetooth や BLE の知識はあった方が断然良い

• iBeacon は BLE の縮退仕様

• Core Bluetooth / BLE の知識があると、

‣ iBeacon の仕様をより正確に理解できる

‣ 「何が得意で、何が苦手なのか」をより明確に理解できる

→ より的確なサービス設計が可能になる

‣ デバッグ、現場検証時にも勘が働く

• Core Bluetooth側からの動作確認

• BLE電波の特性(WiFi電波との干渉、人体の吸収による影響等)

Page 37: iOSエンジニア in ハードウェア・プロジェクト

CASE 2 新規ウェアラブルデバイス

Page 38: iOSエンジニア in ハードウェア・プロジェクト

konashiを使用してプロトタイピング

iOSアプリ ハードBLE

センサ値

制御情報

Page 39: iOSエンジニア in ハードウェア・プロジェクト

konashiを使用してプロトタイピング

• デバイス側がまだないので、konashiで代用

iOSアプリ ハードBLE

センサ値

制御情報

Page 40: iOSエンジニア in ハードウェア・プロジェクト

konashiを使用してプロトタイピング

• デバイス側がまだないので、konashiで代用

• センサを konashi に接続し、iOS側でセンサ値を処理して制御情報を生成する

iOSアプリ ハードBLE

センサ値

制御情報

Page 41: iOSエンジニア in ハードウェア・プロジェクト

konashiを使用してプロトタイピング

• デバイス側がまだないので、konashiで代用

• センサを konashi に接続し、iOS側でセンサ値を処理して制御情報を生成する

• (現在、ハード屋さんがデバイスを開発中)

iOSアプリ ハードBLE

センサ値

制御情報

Page 42: iOSエンジニア in ハードウェア・プロジェクト

プロトタイピング段階での iOSエンジニアのカバー範囲

iOSアプリ ハードBLE

Page 43: iOSエンジニア in ハードウェア・プロジェクト

プロトタイピング段階での iOSエンジニアのカバー範囲

• konashi SDKを使用すれば、CoreBluetoothは直接たたく必要はない

iOSアプリ ハードBLE

Page 44: iOSエンジニア in ハードウェア・プロジェクト

プロトタイピング段階での iOSエンジニアのカバー範囲

• konashi SDKを使用すれば、CoreBluetoothは直接たたく必要はない

• が、仕様検討をする際に、CoreBluetooth / BLE についての理解が必須

iOSアプリ ハードBLE

Page 45: iOSエンジニア in ハードウェア・プロジェクト

プロトタイピング段階での iOSエンジニアのカバー範囲

• konashi SDKを使用すれば、CoreBluetoothは直接たたく必要はない

• が、仕様検討をする際に、CoreBluetooth / BLE についての理解が必須

‣ そもそもBLEでいくのかどうか

iOSアプリ ハードBLE

Page 46: iOSエンジニア in ハードウェア・プロジェクト

プロトタイピング段階での iOSエンジニアのカバー範囲

• konashi SDKを使用すれば、CoreBluetoothは直接たたく必要はない

• が、仕様検討をする際に、CoreBluetooth / BLE についての理解が必須

‣ そもそもBLEでいくのかどうか

‣ どういう情報をどの程度の通信間隔でやりとりするか, etc…

iOSアプリ ハードBLE

Page 47: iOSエンジニア in ハードウェア・プロジェクト

CASE 3 次世代車椅子

Page 48: iOSエンジニア in ハードウェア・プロジェクト

WHILLと連携するiOSアプリ

Page 49: iOSエンジニア in ハードウェア・プロジェクト

WHILLと連携するiOSアプリ

• WHILLの情報を表示する

Page 50: iOSエンジニア in ハードウェア・プロジェクト

WHILLと連携するiOSアプリ

• WHILLの情報を表示する

• 速度、バッテリー残量等

Page 51: iOSエンジニア in ハードウェア・プロジェクト

WHILLと連携するiOSアプリ

• WHILLの情報を表示する

• 速度、バッテリー残量等

• WHILLを操作する

Page 52: iOSエンジニア in ハードウェア・プロジェクト

WHILLと連携するiOSアプリ

• WHILLの情報を表示する

• 速度、バッテリー残量等

• WHILLを操作する

• WHILLの設定を行う

Page 53: iOSエンジニア in ハードウェア・プロジェクト

iOSエンジニアのカバー範囲

iOSアプリ ハードBLE

Page 54: iOSエンジニア in ハードウェア・プロジェクト

iOSエンジニアのカバー範囲

• BLEモジュールのファームのプロトタイプ実装までカバー

iOSアプリ ハードBLE

Page 55: iOSエンジニア in ハードウェア・プロジェクト

iOSエンジニアのカバー範囲

• BLEモジュールのファームのプロトタイプ実装までカバー

• 本番ファームまではやらない(はず。現在進行中なので未定)

iOSアプリ ハードBLE

Page 56: iOSエンジニア in ハードウェア・プロジェクト

BLE112 Development Kit

BLE112ディスプレイ

USB

Page 57: iOSエンジニア in ハードウェア・プロジェクト

BLE112 Development Kit• BLEモジュールの開発・検証に必要な諸々がボードにビルトイン

BLE112ディスプレイ

USB

Page 58: iOSエンジニア in ハードウェア・プロジェクト

BLE112 Development Kit• BLEモジュールの開発・検証に必要な諸々がボードにビルトイン• 買ってすぐに BLE モジュールのファームウェア開発を始められる

BLE112ディスプレイ

USB

Page 59: iOSエンジニア in ハードウェア・プロジェクト

BGScript• BASICライク、イベントドリブンなスクリプト言語

Page 60: iOSエンジニア in ハードウェア・プロジェクト

GATT記述ファイル• GATTベースプロファイルをXMLで記述する

Page 61: iOSエンジニア in ハードウェア・プロジェクト

まとめ

ハードまわりのスキル/知識のないiOSエンジニアでも、ハードウェア開発のプロジェクトに楽しく関われます

‣ Core Bluetooth / BLE まわりの知識大事

‣ BLEモジュールのファームまわりもできると捗る

Page 62: iOSエンジニア in ハードウェア・プロジェクト

ご清聴ありがとうございました!• Twitter

• Facebook

• GitHub

• LinkedIn

• Blog : 『Over&Out その後』

• Book : 『iOSアプリ開発 達人のレシピ100』

• gihyo.jp : 『iOSアプリと連携させて使えるデバイスたち』

• Facebook Page : 『iOS開発に役立つTips』