SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
BLUETOOTH LEを使った、
すれ違い通信
2014.2.25
Bitz Co., Ltd.
•村上幸雄	

•@m_yukio	

•ビッツ有限会社

http://www.bitz.co.jp/

今回のサンプルコードは以下のURL.
https://github.com/murakami/workbook/tree/master/ios/Wibree
Bluetoothは、省電力な電波を使った無線通信
で、最新の4.xでは対応機器は次の3つに分類さ
れます。
分類

Bluetooth Smart

Bluetooth Smart Ready

Bluetooth

説明
4.0で追加されたBluetooth Low Energyのみ対
応。
Bluetooth LEと従来のBluetoothの両方に対
応。
従来のBluetoothのみ対応。
iOSでBluetoothに対応する方法を整理してみます。

Bluetoothの種類

説明
MFi機器に対してExternal Accessory
Frameworkで通信。

従来のBLuetooth
Game Kit

Bluetooth LE

Core Bluetooth Framework

iOSでは、無関係の機器と自由に通信したいのならBluetooth LEという事にな
るかと思います。
すれ違い通信

Bluetooth LE

識別子

識別子

識別子を交換
Service
UUID

Central

発見

Peripheral

Advertise

Peripheralが対応しているService UUIDをAdvertiseする。
Centralは探しているService UUIDがないか調査する。
Centralが見つけられたら、Peripheralに対して接続要求を出
し、受けいれるとデータ通信が可能になる。
サンプルコードでは、識別子のCharacteristic UUIDを問い合わ
せて、識別子を受け取っている。
SAMPLE CODE
Central Managerの用意
self.centralManager = [[CBCentralManager alloc] initWithDelegate:self
queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];

Peripheralを探す
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
if (central.state != CBCentralManagerStatePoweredOn) {
return;
}
[self scan];
}

!

探すサービスUUID

- (void)scan
{
[self.centralManager scanForPeripheralsWithServices:
@[[CBUUID UUIDWithString:WIBREE_SERVICE_UUID]]
options:@{ CBCentralManagerScanOptionAllowDuplicatesKey : @YES }];
}
Peripheralが見つかったので接続する
- (void)centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
{
if (self.discoveredPeripheral != peripheral) {
self.discoveredPeripheral = peripheral;
[self.centralManager connectPeripheral:peripheral options:nil];
}
}

サービスUUIDで検索
- (void)centralManager:(CBCentralManager *)central
didConnectPeripheral:(CBPeripheral *)peripheral
{
[self.centralManager stopScan];
[self.data setLength:0];
peripheral.delegate = self;
[peripheral discoverServices:@[[CBUUID UUIDWithString:WIBREE_SERVICE_UUID]]];
}
キャラクタリスティックUUIDで検索
- (void)peripheral:(CBPeripheral *)peripheral

didDiscoverServices:(NSError *)error

{
if (error) {
[self cleanup];
return;
}
for (CBService *service in peripheral.services) {
[peripheral discoverCharacteristics:
@[[CBUUID UUIDWithString:WIBREE_CHARACTERISTIC_UUID]]
forService:service];
}
}

!

- (void)peripheral:(CBPeripheral *)peripheral
didDiscoverCharacteristicsForService:(CBService *)service
error:(NSError *)error
{
if (error) {
[self cleanup];
return;
}
for (CBCharacteristic *characteristic in service.characteristics) {
if ([characteristic.UUID isEqual:[CBUUID UUIDWithString:
WIBREE_CHARACTERISTIC_UUID]]) {
[peripheral setNotifyValue:YES forCharacteristic:characteristic];
}
}
}
識別子を受け取る
- (void)peripheral:(CBPeripheral *)peripheral
didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic
error:(NSError *)error
{
NSString *stringFromData = [[NSString alloc]
initWithData:characteristic.value encoding:NSUTF8StringEncoding];
if ([stringFromData isEqualToString:@"EOM"]) {
NSString
*uniqueIdentifier = [[NSString alloc]
initWithData:self.data encoding:NSUTF8StringEncoding];
dispatch_async(dispatch_get_main_queue(), ^{
[self _notifyParserDidDiscoverUUID:uniqueIdentifier];
});
[peripheral setNotifyValue:NO forCharacteristic:characteristic];
[self.centralManager cancelPeripheralConnection:peripheral];
}
[self.data appendData:characteristic.value];
}

!

- (void)peripheral:(CBPeripheral *)peripheral
didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic
error:(NSError *)error
{
if (![characteristic.UUID isEqual:[CBUUID
UUIDWithString:WIBREE_CHARACTERISTIC_UUID]]) {
return;
}
if (! characteristic.isNotifying) {
[self.centralManager cancelPeripheralConnection:peripheral];
}
}
Peripheral Managerの用意
self.peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self
queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];
[self.peripheralManager startAdvertising:
見つけてもらうサービスUUID
@{ CBAdvertisementDataServiceUUIDsKey :
@[[CBUUID UUIDWithString:WIBREE_SERVICE_UUID]] }];

Peripheralが利用可能
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral
{
if (peripheral.state != CBPeripheralManagerStatePoweredOn) {
return;
}
self.transferCharacteristic = [[CBMutableCharacteristic alloc]
initWithType:[CBUUID UUIDWithString:WIBREE_CHARACTERISTIC_UUID]
properties:CBCharacteristicPropertyNotify
value:nil
permissions:CBAttributePermissionsReadable];
CBMutableService *transferService = [[CBMutableService alloc]
initWithType:[CBUUID UUIDWithString:WIBREE_SERVICE_UUID]
primary:YES];
transferService.characteristics = @[self.transferCharacteristic];
[self.peripheralManager addService:transferService];
}
識別子の送信
- (void)peripheralManager:(CBPeripheralManager *)peripheral
central:(CBCentral *)central
didSubscribeToCharacteristic:(CBCharacteristic *)characteristic
{
self.dataToSend = [[Document sharedDocument].uniqueIdentifier dataUsingEncoding:NSUTF8StringEncoding];
self.sendDataIndex = 0;
[self sendData];
}

!

- (void)sendData
{
static BOOL sendingEOM = NO;
if (sendingEOM) {
BOOL didSend = [self.peripheralManager
updateValue:[@"EOM" dataUsingEncoding:NSUTF8StringEncoding]
forCharacteristic:self.transferCharacteristic onSubscribedCentrals:nil];
if (didSend) sendingEOM = NO;
return;
}
if (self.sendDataIndex >= self.dataToSend.length) return;
BOOL didSend = YES;
while (didSend) {
NSInteger amountToSend = self.dataToSend.length - self.sendDataIndex;
if (amountToSend > NOTIFY_MTU) amountToSend = NOTIFY_MTU;
NSData *chunk = [NSData dataWithBytes:self.dataToSend.bytes+self.sendDataIndex length:amountToSend];
didSend = [self.peripheralManager updateValue:chunk
forCharacteristic:self.transferCharacteristic onSubscribedCentrals:nil];
if (!didSend) return;
NSString *stringFromData = [[NSString alloc] initWithData:chunk encoding:NSUTF8StringEncoding];
self.sendDataIndex += amountToSend;
if (self.sendDataIndex >= self.dataToSend.length) {
sendingEOM = YES;
BOOL eomSent = [self.peripheralManager updateValue:
[@"EOM" dataUsingEncoding:NSUTF8StringEncoding]
forCharacteristic:self.transferCharacteristic onSubscribedCentrals:nil];
if (eomSent) sendingEOM = NO;
return;
}
}
}

!

- (void)peripheralManagerIsReadyToUpdateSubscribers:(CBPeripheralManager *)peripheral
{
[self sendData];
}
バックグラウンドで動かすには
Info.plistのRequired background modesでApp
communicates using CoreBluetoothを設定。
Info.plistのRequired background modesでApp
shares data using CoreBluetoothを設定。
Core Bluetooth使用時の課題
数分単位の周期でしたバックグラウンドで動かな
いし、動いても数秒。
なので、実際のすれ違い通信は難しい。
iBeaconを試してみる。
CoreBluetoothでビーコンを実装。
CoreLocationでビーコンを検出。
常に検出できるみたい。
iBeaconを探す
/* CLLocationManagerを生成 */
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
if (! self.locationManager) {
/* CLLocationManagerの初期化失敗 */
self.state = kBeaconCentralStateError;
self.error = [self _errorWithCode:kBeaconCentralResponseParserGenericError
localizedDescription:@"CLLocationManagerの初期化に失敗しました。"];
}

return;

探すビーコンのUUID

!

/* ビーコン領域を生成 */
NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:BEACON_SERVICE_UUID];
self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid
                identifier:@"demo.Wibree.BeaconCentralResponseParser"];
if (! self.beaconRegion) {
/* ビーコン領域の初期化失敗 */
self.state = kBeaconCentralStateError;
self.error = [self _errorWithCode:kBeaconCentralResponseParserGenericError
localizedDescription:@"ビーコン領域の初期化に失敗しました。"];

}

self.locationManager = nil;
return;

!

/* ビーコン領域の出入りを監視 */
[self.locationManager startMonitoringForRegion:self.beaconRegion];

!

/* 距離を監視 */
[self.locationManager startRangingBeaconsInRegion:self.beaconRegion];
検出

領域に入る

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
DBGMSG(@"%s", __func__);
if ([self.delegate respondsToSelector:@selector(beaconCentralResponseParser:didEnterRegion:)]) {
[self.delegate beaconCentralResponseParser:self didEnterRegion:region];
}
領域から外れる
}

!

- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
{
DBGMSG(@"%s", __func__);
if ([self.delegate respondsToSelector:@selector(beaconCentralResponseParser:didExitRegion:)]) {
[self.delegate beaconCentralResponseParser:self didExitRegion:region];
}
}
距離を監視

!

-(void)locationManager:(CLLocationManager *)manager

{

}

!

didRangeBeacons:(NSArray *)beacons

inRegion:(CLBeaconRegion *)region

DBGMSG(@"%s", __func__);
if ([self.delegate respondsToSelector:@selector(beaconCentralResponseParser:didRangeBeacons:inRegion:)]) {
[self.delegate beaconCentralResponseParser:self didRangeBeacons:beacons inRegion:region];
}

- (void)locationManager:(CLLocationManager *)manager

monitoringDidFailForRegion:(CLRegion *)region

withError:(NSError *)error
{
DBGMSG(@"%s region:%@", __func__, region);
DBGMSG(@"%s error:%@", __func__, error);
}
見つけてほしいUUIDを告知

/* CBPeripheralManagerを生成 */
self.peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self
queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];
if (! self.peripheralManager) {
/* CBPeripheralManagerの初期化失敗 */
self.state = kBeaconPeripheralStateError;
self.error = [self _errorWithCode:kBeaconPeripheralResponseParserGenericError
localizedDescription:@"CBPeripheralManagerの初期化に失敗しました。"];
return;
}

!

見つけてほしいビーコンのUUID

/* ビーコン領域を生成 */
NSUUID *uuid = [[NSUUID alloc] initWithUUIDString:BEACON_SERVICE_UUID];
self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid
major:12345
minor:67890
identifier:@"demo.Wibree.BeaconCentralResponseParser"];
if (! self.beaconRegion) {
/* ビーコン領域の初期化失敗 */
self.state = kBeaconPeripheralStateError;
self.error = [self _errorWithCode:kBeaconPeripheralResponseParserGenericError
localizedDescription:@"ビーコン領域の初期化に失敗しました。"];
self.peripheralManager = nil;
return;
}

!

/* 告知開始 */
NSDictionary
*dictionary = [self.beaconRegion peripheralDataWithMeasuredPower:nil];
[self.peripheralManager startAdvertising:dictionary];
iBeacon使用時の課題
個体の識別子はmajorとminorの番号。
ただし、Sample Codeでは取得できていない。

Más contenido relacionado

Similar a Bluetooth LEとiBeaconを使った、すれ違い通信

I2CでRaspberry Piから 複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御するI2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから 複数の周辺機器を制御するHirokazu Nishio
 
IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.1
IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.1IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.1
IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.1Seeed K.K.
 
プロペラブForth発表osc愛媛
プロペラブForth発表osc愛媛プロペラブForth発表osc愛媛
プロペラブForth発表osc愛媛titoi2
 
mbed祭り2016@秋の虎ノ門(AzureIoTSuiteの検証)
mbed祭り2016@秋の虎ノ門(AzureIoTSuiteの検証)mbed祭り2016@秋の虎ノ門(AzureIoTSuiteの検証)
mbed祭り2016@秋の虎ノ門(AzureIoTSuiteの検証)Takehiko Tomiyama
 
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する日本マイクロソフト株式会社
 
【de:code 2020】 Azure IoT 最新動向 - クラウドからエッジまで網羅的にご紹介
【de:code 2020】 Azure IoT 最新動向 - クラウドからエッジまで網羅的にご紹介【de:code 2020】 Azure IoT 最新動向 - クラウドからエッジまで網羅的にご紹介
【de:code 2020】 Azure IoT 最新動向 - クラウドからエッジまで網羅的にご紹介日本マイクロソフト株式会社
 
de:code 2018 一挙紹介! Azure が提供する IoT 系サービス
de:code 2018 一挙紹介! Azure が提供する IoT 系サービスde:code 2018 一挙紹介! Azure が提供する IoT 系サービス
de:code 2018 一挙紹介! Azure が提供する IoT 系サービスMasaru Takahashi
 
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptxIoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptxTakashi Yamanoue
 
BOSHでお手軽CFデプロイon AWS
BOSHでお手軽CFデプロイon AWSBOSHでお手軽CFデプロイon AWS
BOSHでお手軽CFデプロイon AWSi_yudai
 
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ組み込みシステムのセキュリティ
組み込みシステムのセキュリティFFRI, Inc.
 
M5 stickvand and_spresense_wi-fi add-on
M5 stickvand and_spresense_wi-fi add-onM5 stickvand and_spresense_wi-fi add-on
M5 stickvand and_spresense_wi-fi add-onMasawo Yamazaki
 
Bluetooth connecting iot bluetooth
Bluetooth connecting iot bluetoothBluetooth connecting iot bluetooth
Bluetooth connecting iot bluetoothDaisuke Nagata
 
Azure RTOS 概要 - IoT ALGYAN 技術セミナー
Azure RTOS 概要 - IoT ALGYAN 技術セミナーAzure RTOS 概要 - IoT ALGYAN 技術セミナー
Azure RTOS 概要 - IoT ALGYAN 技術セミナーKnowledge & Experience
 
エンタープライズ.Net light switch
エンタープライズ.Net light switchエンタープライズ.Net light switch
エンタープライズ.Net light switchAkihiro Ehara
 
ラズパイ × Bluemix IoTハンズオンセミナー
ラズパイ × Bluemix IoTハンズオンセミナーラズパイ × Bluemix IoTハンズオンセミナー
ラズパイ × Bluemix IoTハンズオンセミナーsoftlayerjp
 
Microsoft Build 2020: Azure IoT 関連最新情報
Microsoft Build 2020: Azure IoT 関連最新情報Microsoft Build 2020: Azure IoT 関連最新情報
Microsoft Build 2020: Azure IoT 関連最新情報IoTビジネス共創ラボ
 

Similar a Bluetooth LEとiBeaconを使った、すれ違い通信 (20)

I2CでRaspberry Piから 複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御するI2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから 複数の周辺機器を制御する
 
IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.1
IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.1IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.1
IoT Kit ハンズオントレーニング ~ Seeed Wio LTE + SORACOM Beam ~ V4.1
 
プロペラブForth発表osc愛媛
プロペラブForth発表osc愛媛プロペラブForth発表osc愛媛
プロペラブForth発表osc愛媛
 
Jetson x Azure ハンズオン DeepStream With Azure IoT 事前準備
Jetson x Azure ハンズオン DeepStream With Azure IoT 事前準備Jetson x Azure ハンズオン DeepStream With Azure IoT 事前準備
Jetson x Azure ハンズオン DeepStream With Azure IoT 事前準備
 
mbed祭り2016@秋の虎ノ門(AzureIoTSuiteの検証)
mbed祭り2016@秋の虎ノ門(AzureIoTSuiteの検証)mbed祭り2016@秋の虎ノ門(AzureIoTSuiteの検証)
mbed祭り2016@秋の虎ノ門(AzureIoTSuiteの検証)
 
Android bluetooth
Android bluetoothAndroid bluetooth
Android bluetooth
 
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
【de:code 2020】 Azure Bot Services を使って Teams bot を開発する
 
【de:code 2020】 Azure IoT 最新動向 - クラウドからエッジまで網羅的にご紹介
【de:code 2020】 Azure IoT 最新動向 - クラウドからエッジまで網羅的にご紹介【de:code 2020】 Azure IoT 最新動向 - クラウドからエッジまで網羅的にご紹介
【de:code 2020】 Azure IoT 最新動向 - クラウドからエッジまで網羅的にご紹介
 
Boost Tour 1.50.0
Boost Tour 1.50.0Boost Tour 1.50.0
Boost Tour 1.50.0
 
de:code 2018 一挙紹介! Azure が提供する IoT 系サービス
de:code 2018 一挙紹介! Azure が提供する IoT 系サービスde:code 2018 一挙紹介! Azure が提供する IoT 系サービス
de:code 2018 一挙紹介! Azure が提供する IoT 系サービス
 
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptxIoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
 
BOSHでお手軽CFデプロイon AWS
BOSHでお手軽CFデプロイon AWSBOSHでお手軽CFデプロイon AWS
BOSHでお手軽CFデプロイon AWS
 
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ組み込みシステムのセキュリティ
組み込みシステムのセキュリティ
 
M5 stickvand and_spresense_wi-fi add-on
M5 stickvand and_spresense_wi-fi add-onM5 stickvand and_spresense_wi-fi add-on
M5 stickvand and_spresense_wi-fi add-on
 
IoT Architecture
IoT ArchitectureIoT Architecture
IoT Architecture
 
Bluetooth connecting iot bluetooth
Bluetooth connecting iot bluetoothBluetooth connecting iot bluetooth
Bluetooth connecting iot bluetooth
 
Azure RTOS 概要 - IoT ALGYAN 技術セミナー
Azure RTOS 概要 - IoT ALGYAN 技術セミナーAzure RTOS 概要 - IoT ALGYAN 技術セミナー
Azure RTOS 概要 - IoT ALGYAN 技術セミナー
 
エンタープライズ.Net light switch
エンタープライズ.Net light switchエンタープライズ.Net light switch
エンタープライズ.Net light switch
 
ラズパイ × Bluemix IoTハンズオンセミナー
ラズパイ × Bluemix IoTハンズオンセミナーラズパイ × Bluemix IoTハンズオンセミナー
ラズパイ × Bluemix IoTハンズオンセミナー
 
Microsoft Build 2020: Azure IoT 関連最新情報
Microsoft Build 2020: Azure IoT 関連最新情報Microsoft Build 2020: Azure IoT 関連最新情報
Microsoft Build 2020: Azure IoT 関連最新情報
 

Más de 幸雄 村上

アプリケーション識別子.pdf
アプリケーション識別子.pdfアプリケーション識別子.pdf
アプリケーション識別子.pdf幸雄 村上
 
圧縮ネイティブ・ライブラリについて.pdf
圧縮ネイティブ・ライブラリについて.pdf圧縮ネイティブ・ライブラリについて.pdf
圧縮ネイティブ・ライブラリについて.pdf幸雄 村上
 
分散環境におけるジャストインタイム設定の試み
分散環境におけるジャストインタイム設定の試み分散環境におけるジャストインタイム設定の試み
分散環境におけるジャストインタイム設定の試み幸雄 村上
 
SwiftのOptionalを理解する
SwiftのOptionalを理解するSwiftのOptionalを理解する
SwiftのOptionalを理解する幸雄 村上
 
え!それって参照渡し?
え!それって参照渡し?え!それって参照渡し?
え!それって参照渡し?幸雄 村上
 
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)幸雄 村上
 
AppleScriptとは何ぞや
AppleScriptとは何ぞやAppleScriptとは何ぞや
AppleScriptとは何ぞや幸雄 村上
 
Web API 通信の符号化について
Web API 通信の符号化についてWeb API 通信の符号化について
Web API 通信の符号化について幸雄 村上
 
Master-Detail App を実装する
Master-Detail App を実装するMaster-Detail App を実装する
Master-Detail App を実装する幸雄 村上
 
SwiftのOptionalを理解する
SwiftのOptionalを理解するSwiftのOptionalを理解する
SwiftのOptionalを理解する幸雄 村上
 
Getting a packet trace
Getting a packet traceGetting a packet trace
Getting a packet trace幸雄 村上
 
The Bash in Tokyo : AppKitとUIKit
The Bash in Tokyo : AppKitとUIKitThe Bash in Tokyo : AppKitとUIKit
The Bash in Tokyo : AppKitとUIKit幸雄 村上
 
Swiftでブロックチェーンを実装する
Swiftでブロックチェーンを実装するSwiftでブロックチェーンを実装する
Swiftでブロックチェーンを実装する幸雄 村上
 
ゲームの企画書づくりに挑戦
ゲームの企画書づくりに挑戦ゲームの企画書づくりに挑戦
ゲームの企画書づくりに挑戦幸雄 村上
 
IBM Watson Services for Core ML
IBM Watson Services for Core MLIBM Watson Services for Core ML
IBM Watson Services for Core ML幸雄 村上
 
独自Documentクラス
独自Documentクラス独自Documentクラス
独自Documentクラス幸雄 村上
 
独自Documentクラス
独自Documentクラス独自Documentクラス
独自Documentクラス幸雄 村上
 

Más de 幸雄 村上 (20)

アプリケーション識別子.pdf
アプリケーション識別子.pdfアプリケーション識別子.pdf
アプリケーション識別子.pdf
 
圧縮ネイティブ・ライブラリについて.pdf
圧縮ネイティブ・ライブラリについて.pdf圧縮ネイティブ・ライブラリについて.pdf
圧縮ネイティブ・ライブラリについて.pdf
 
分散環境におけるジャストインタイム設定の試み
分散環境におけるジャストインタイム設定の試み分散環境におけるジャストインタイム設定の試み
分散環境におけるジャストインタイム設定の試み
 
SwiftのOptionalを理解する
SwiftのOptionalを理解するSwiftのOptionalを理解する
SwiftのOptionalを理解する
 
え!それって参照渡し?
え!それって参照渡し?え!それって参照渡し?
え!それって参照渡し?
 
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
プライバシーとセキュリティ(リモート通知のデバイストークンの扱いなど)
 
AppleScriptなど
AppleScriptなどAppleScriptなど
AppleScriptなど
 
MojaveのDark Mode
MojaveのDark ModeMojaveのDark Mode
MojaveのDark Mode
 
AppleScriptとは何ぞや
AppleScriptとは何ぞやAppleScriptとは何ぞや
AppleScriptとは何ぞや
 
Web API 通信の符号化について
Web API 通信の符号化についてWeb API 通信の符号化について
Web API 通信の符号化について
 
Master-Detail App を実装する
Master-Detail App を実装するMaster-Detail App を実装する
Master-Detail App を実装する
 
SwiftのOptionalを理解する
SwiftのOptionalを理解するSwiftのOptionalを理解する
SwiftのOptionalを理解する
 
Getting a packet trace
Getting a packet traceGetting a packet trace
Getting a packet trace
 
The Bash in Tokyo : AppKitとUIKit
The Bash in Tokyo : AppKitとUIKitThe Bash in Tokyo : AppKitとUIKit
The Bash in Tokyo : AppKitとUIKit
 
RUDP
RUDPRUDP
RUDP
 
Swiftでブロックチェーンを実装する
Swiftでブロックチェーンを実装するSwiftでブロックチェーンを実装する
Swiftでブロックチェーンを実装する
 
ゲームの企画書づくりに挑戦
ゲームの企画書づくりに挑戦ゲームの企画書づくりに挑戦
ゲームの企画書づくりに挑戦
 
IBM Watson Services for Core ML
IBM Watson Services for Core MLIBM Watson Services for Core ML
IBM Watson Services for Core ML
 
独自Documentクラス
独自Documentクラス独自Documentクラス
独自Documentクラス
 
独自Documentクラス
独自Documentクラス独自Documentクラス
独自Documentクラス
 

Último

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Último (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

Bluetooth LEとiBeaconを使った、すれ違い通信