SlideShare a Scribd company logo
多分怖くない,
Androidとハードウェア
DroidKaigi 2021
@nyafunta9858
⾃⼰紹介
u ⼩林 慶弘
u Androidアプリ開発
u ハードウェアに触れる開発多め(⾞載機/BLE/独⾃端末など)
「ハードウェア連携」の印象
u なんだか⼤変そう
u 元からハードウェアとか好きじゃないとつらそう
u ツラい・⼤変と聞くことが多くてちょっと怖い
それでも仕事が巡ってくるかもしれない
本セッションのゴール
本セッションを聞くことで...
u ハードウェアと連携するシステム構成のプロジェクトで
つらい, ⼤変と感じがちなつまずきポイントを知り
その対策案を考えられる
注釈
u この発表では, ハードウェア連携におけるポイントをス
ピーカーの経験を元に構成しています
u 必ずしもベストなアイディアではないことをご了承くださ
い
アジェンダ
u つらいところ・⼤変なところ
u 情報源・問い合わせ先を確認する
u ログ取得・検証環境を整える
u 思いやり設計
u 分離
u ⾮機能要件を知る
つらいところ・⼤変なところ
つらいところ・⼤変なところ
u 求める動作・挙動になかなか辿り着けない
つらいところ・⼤変なところ
u 求める動作・挙動になかなか辿り着けない
接続が不安定
つらいところ・⼤変なところ
u 求める動作・挙動になかなか辿り着けない
接続が不安定
リファレンスの通りなのに…
つらいところ・⼤変なところ
u 求める動作・挙動になかなか辿り着けない
接続が不安定
謎のエラー
と
接続切断
つらいところ・⼤変なところ
u 求める動作・挙動になかなか辿り着けない
接続が不安定
謎のエラー
と
接続切断
GATT_ERROR ︖
GENERIC_ERROR ︖
INTERNAL_ERROR ︖
つらいところ・⼤変なところ
u 求める動作・挙動になかなか辿り着けない
接続が不安定
謎のエラー
と
接続切断
ライブラリへの
深い理解
つらいところ・⼤変なところ
u 求める動作・挙動になかなか辿り着けない
接続が不安定
謎のエラー
と
接続切断
ライブラリへの
深い理解
Android Code Searchは
便利だけれど…
つらいところ・⼤変なところ
u 求める動作・挙動になかなか辿り着けない
接続が不安定
謎のエラー
と
接続切断
ライブラリへの
深い理解
情報源・問い合わせ先を確認する
情報源・問い合わせ先を確認する
~それぞれの候補~
情報源の候補
u デベロッパーサイト
u リファレンス
u コード内のコメント
u ハードウェア関連技術
コミュニティ
など
問い合わせ先の候補
u サポートセンター
u 開発体制内のハードウェア開
発チーム窓⼝
など
情報源・問い合わせ先を確認する
~狙い~
以下の回避, 及び解決へ⾜がかりの補強
u 実践的な情報を⾒つけにくい
u 鮮度の良い, 信頼性の⾼い公式ドキュメントが不明
u 解析の⼿掛かりを求めて, SDKの中へ
情報源・問い合わせ先を確認する
u 公式以外にも広く情報源・問い合わせ先を⽤意
u 不⼗分な場合はそれを⾒越したスケジュールを
ログ取得・検証環境を整える
ログ取得環境を整える
ログ取得・検証環境を整える
ログ取得環境を整える
ログ取得がままならないと…
u 開発効率の低下
u 不具合解析の⼿掛かり不⾜
u 振る舞いの詳細が分からないことによる不安
作業環境を知る
ハードウェアとの連携⽅法
無線接続
Bluetooth/BLE Wi-Fi
有線接続
USBケーブル HDMI
ログ取得が必要な場⾯を知る
開発者
机上確認
フィールド
テスト
開発者以外
QAチーム 顧客
ログ取得を整える上でのポイント
u 実際は様々な条件・制約が課されていることが多い
u 先述の状況に無理に当てはめる必要はない
u 複数の⽅法・選択肢から柔軟に選べるのが好ましい
無線環境下でのログ取得
Android 11以降
u ワイヤレスデバッグ
Android 10以前
u ADBコマンド tcpip / connect
無線環境下でのログ取得
~Android 11以降~
1. ワイヤレスデバッグの有効化
2. ワイヤレスデバッグ利⽤許諾
3. Wi-Fiペア設定コード情報確認
4. ADB pair実⾏
5. ⼿順3.でメモしたWi-Fiペア設定コードを⼊⼒
https://developer.android.com/studio/command-line/adb -
connect-to-a-device-over-wi-fi-android-11+
無線環境下でのログ取得
~Android 10以前~
1. USBケーブルでAndroid端末とPCを接続
2. ポート番号5555で ADB tcpipを実⾏
3. USBケーブルを抜去
4. 「デバイス情報」などに表⽰されている「IPアドレス」をメモ
5. ⼿順4.でメモしたIPアドレス, ⼿順2.で指定したポート番号を⽤いて
ADB connectを実⾏
https://developer.android.com/studio/command-line/adb#wireless
無線環境下でのログ取得
~特徴~
うれしいところ
u 有線接続が必要な場⾯でもリアルタイムにログ取得が可能
注意点
u 不揮発ではない
不揮発への出⼒
ログをファイルへ出⼒
u ファイル出⼒するTimber.Treeを⽤意
u ファイル出⼒するLogユーティリティクラスを⽤意
不揮発への出⼒
~特徴~
うれしいところ
u ログが揮発せずに残る
注意点
u ファイル出⼒の負荷
u ストレージの逼迫
不揮発への出⼒
~補⾜~
$ adb shell
$ cd /sdcard/Download
# logcatのファイル出⼒をバックグラウンド実⾏
$ logcat > log.txt &
検証環境を整える
ログ取得・検証環境を整える
検証環境を整える
~狙い~
u 開発のスピードアップ
u 実動作から⾒えてくる考慮すべき点
検証環境についての押さえどころ
u 実機相当の検証環境を⽤意できるか︖
u いつ頃に⽤意, 動作確認出来るようになるか︖
検証環境
~⾞載機連携編~
Android Auto DHU
SmartDeviceLink 開発キット
検証環境
~BLE編~
Central
Peripheral
GATT
Server
GATT Service
• Characteristics1
• Characteristics2
...
検証環境についての押さえどころ
検証環境をすぐには⽤意出来ない場合もある
u いつ頃に検証環境が⽤意出来るか︖
u いつ頃に動作確認可能なファームウェアが配布されるか︖
思いやり設計
思いやり設計
ハードウェアを利⽤不能な状態…
u 連携対象が近くにない
u 無線の電波が弱い
u 連携対象の電源が⼊っていない
思いやりを持ったリトライ機能
リトライ
~BLE~
BLE端末検出
GATTサーバー
接続
GATTサービス
検索
Characteristics
検索
リトライ
~BLE~
BLE端末検出
GATTサーバー
接続
GATTサービス
検索
Characteristics
検索
もう
近くにいないかも
電波が
弱くなってきた
イベントが
通知されてこない
リトライ
~BLE~
private val bluetoothGattCallback = object : BluetoothGattCallback() {
override fun onConnectionStateChange(gatt: BluetoothGatt?, status: Int, newState: Int) {
when (newState) {
// GATT切断
BluetoothProfile.STATE_DISCONNECTED -> {
handler.postDelayed({
gatt?.device?.connectGatt(context, false, this)
}, 1000) // すぐに再接続をせず, 間を開けて実⾏
}
}
}
}
リトライ
~⾞載機連携(SDL)~
利⽤可能な
機器検索
連携のため
のProxy起動
Session確⽴
HMI Levelの
受信
Proxyが
起動できない…
Sessionが
確⽴されない…
接続完了が
通知されてこない
リトライ
~SDL (SmartDeviceLink)~
init {
// Proxy起動 & Session要求
sdlProxy = SdlProxyBuilder
.Builder(proxyListener, appId, appName, false, context)
.build()
initializeTimer = coroutineScope.launch {
delay(10_000) // タイムアウトは⻑めに設定
dispose()
}
}
思いやりを持った設計
u 急かさず, 思いやりを持ってリトライ
u リトライを開発者が考慮不要の場合もある
u 詳細は検証環境での動作確認で判断・検討
分離
2つの分離
u ハードウェア連携処理の分離, 独⽴
u ハードウェア連携導⼊対象プロジェクトのUI / ドメインの
分離
ハードウェア連携処理の分離・独⽴
分離
ハードウェア連携処理の分離・独⽴
事業戦略的な狙い
u 他サービスへの横展開・再利⽤
u ハードウェア連携機能削除時の影響, 及び除去コストの低減
開発者視点での狙い
u アプリと異なるライフサイクルの制御をUIに混⼊しにくくする
u ハードウェア連携, 制御処理の集約に依りメンテナンスコストを
抑える
ハードウェア連携処理の分離・独⽴
~モジュール分割~
app
mod1
mod2
mod3
H/W
Core
u ハードウェアと連携する処理を集約
u ハードウェアのライフサイクル管理
を集約
u 利⽤するハードウェアの機能は
抽象に公開
など
導⼊対象プロジェクトの
UI / ドメインの分離
分離
UI / ドメインの分離
既存機能をハードウェア連携側でも利⽤したい…
u 既存機能をそのまま利⽤
u 既存機能をコピペ
UI / ドメインの分離
~モジュール分割~
app uiFeature1
uiFeature3
uiFeature2
modelA
modelC
modelB
H/W UI
分離
u ハードウェア連携処理の分離, 独⽴
u ハードウェア連携導⼊対象プロジェクトのUI/ドメインの分
離
u マルチモジュールの依存関係の強制を活⽤
⾮機能要件を知る
⾮機能要件を知る
u ハードウェア側のパフォーマンス考慮が必要
u 中⻑期に渡ってのパフォーマンス・チューニング
⾮機能要件を知る
UIのカクつきの対処は︖
u 描画を妨げている箇所の特定
u より⾼頻度な更新へと改修・改善
⾮機能要件を知る
⾞載機でも同じ要領で改善するか︖
u 描画を妨げている箇所の特定
u より⾼頻度な更新へと改修・改善
Ans. No
⾞載機連携での描画性能
当時のアプローチ
u より⾼頻度に更新する⽅針でアプローチ
u カクついたまま
u 動作が不安定に, 最悪切断も
⾞載機連携での描画性能
u アプリで出せる最⾼性能 ≠ ハードウェアで出せる最⾼性能
u スマートフォンよりもスペックが低い機種も
u アプリからの要求を捌ききれなくなる可能性も
当時のスマートウォッチ
程度のスペックの機種も
⾞載機連携での描画性能
private val devSettingRepository: DevelopSettingsRepository // 開発向け設定Repository
private fun invalidate() {
// 開発向け設定の読み込み
invalidateIfNotReachMaxFps(devSettingRepository.maxFps)
}
private fun invalidateIfNotReachMaxFps(
maxFps: Int,
) {
val now = System.currentTimeMillis()
val last = lastSendTime
// 読み込んだ設定を元に更新を制御
if (now - last > 1000 / maxFps) {
invalidate()
}
}
⾮機能要件を知る
u ハードウェア側のパフォーマンス考慮が必要
u 中⻑期に渡ってのパフォーマンス・チューニング
まとめ
まとめ
u 「求める動作・挙動になかなか辿り着けない」ことが「怖さ」に繋が
りがち
u 怖さを減らすために以下をご紹介
u 情報源・問い合わせ先を確認する
u ログ取得・検証環境を整える
u 思いやり設計
u 分離
u ⾮機能要件を知る

More Related Content

What's hot

JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
 
Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)masanori kataoka
 
モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-Cモックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-C
Shoichi Matsuda
 
Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例
健一 辰濱
 
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しようテスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
Akira Ikeda
 
Androidアプリのストレージ戦略
Androidアプリのストレージ戦略Androidアプリのストレージ戦略
Androidアプリのストレージ戦略
Masahiro Hidaka
 
smartphone test (know how & tools)
smartphone test (know how & tools)smartphone test (know how & tools)
smartphone test (know how & tools)Yukio Andoh
 
「マインドマップから始めるソフトウェアテスト」まとめ
「マインドマップから始めるソフトウェアテスト」まとめ「マインドマップから始めるソフトウェアテスト」まとめ
「マインドマップから始めるソフトウェアテスト」まとめ
Kosuke Fujisawa
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
Toshiyuki Hirata
 
GUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるにはGUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるには
Nozomi Ito
 
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれからテスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
Keizo Tatsumi
 
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料Masatoshi Itoh
 
Agileツール適合化分科会(dev opsツール)
Agileツール適合化分科会(dev opsツール)Agileツール適合化分科会(dev opsツール)
Agileツール適合化分科会(dev opsツール)
masanori kataoka
 
SQuBOK読破会活動紹介とSQuBOKにおける派生開発
SQuBOK読破会活動紹介とSQuBOKにおける派生開発SQuBOK読破会活動紹介とSQuBOKにおける派生開発
SQuBOK読破会活動紹介とSQuBOKにおける派生開発
Kosuke Fujisawa
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
Naoki Umehara
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめatsushi_tmx
 
【Unite 2018 Tokyo】エディター拡張マニアクス2018
【Unite 2018 Tokyo】エディター拡張マニアクス2018【Unite 2018 Tokyo】エディター拡張マニアクス2018
【Unite 2018 Tokyo】エディター拡張マニアクス2018
Unity Technologies Japan K.K.
 
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Koji Hasegawa
 
テストを分類してみよう!
テストを分類してみよう!テストを分類してみよう!
テストを分類してみよう!
Kenji Okumura
 

What's hot (20)

JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
 
Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)
 
モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-Cモックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-C
 
Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例Sansan における Android アプリ自動テスト導入事例
Sansan における Android アプリ自動テスト導入事例
 
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しようテスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
テスト分析・設計を体感しよう ~マインドマップを活用してテスト観点を発想しよう
 
Androidアプリのストレージ戦略
Androidアプリのストレージ戦略Androidアプリのストレージ戦略
Androidアプリのストレージ戦略
 
smartphone test (know how & tools)
smartphone test (know how & tools)smartphone test (know how & tools)
smartphone test (know how & tools)
 
About junit
About junitAbout junit
About junit
 
「マインドマップから始めるソフトウェアテスト」まとめ
「マインドマップから始めるソフトウェアテスト」まとめ「マインドマップから始めるソフトウェアテスト」まとめ
「マインドマップから始めるソフトウェアテスト」まとめ
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
GUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるにはGUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるには
 
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれからテスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
 
システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料システムテスト自動化標準ガイド 5章発表資料
システムテスト自動化標準ガイド 5章発表資料
 
Agileツール適合化分科会(dev opsツール)
Agileツール適合化分科会(dev opsツール)Agileツール適合化分科会(dev opsツール)
Agileツール適合化分科会(dev opsツール)
 
SQuBOK読破会活動紹介とSQuBOKにおける派生開発
SQuBOK読破会活動紹介とSQuBOKにおける派生開発SQuBOK読破会活動紹介とSQuBOKにおける派生開発
SQuBOK読破会活動紹介とSQuBOKにおける派生開発
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
 
【Unite 2018 Tokyo】エディター拡張マニアクス2018
【Unite 2018 Tokyo】エディター拡張マニアクス2018【Unite 2018 Tokyo】エディター拡張マニアクス2018
【Unite 2018 Tokyo】エディター拡張マニアクス2018
 
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
Xcode 7におけるUIテストとカバレジ計測 #yidev 第20回勉強会
 
テストを分類してみよう!
テストを分類してみよう!テストを分類してみよう!
テストを分類してみよう!
 

Similar to 多分怖くない, Androidとハードウェア

20120324 ABC2012S Android開発者とデザイナーの効率的な連携に利く話
20120324 ABC2012S Android開発者とデザイナーの効率的な連携に利く話20120324 ABC2012S Android開発者とデザイナーの効率的な連携に利く話
20120324 ABC2012S Android開発者とデザイナーの効率的な連携に利く話youten (ようてん)
 
Weekend Androidのススメ
Weekend AndroidのススメWeekend Androidのススメ
Weekend Androidのススメ
Suzuki Junko
 
今から実践できる㊙スライド作成術
今から実践できる㊙スライド作成術今から実践できる㊙スライド作成術
今から実践できる㊙スライド作成術
RadiumProduction
 
AndroidでのAntiVirus
AndroidでのAntiVirusAndroidでのAntiVirus
AndroidでのAntiVirusShoko Araki
 
クラウドコミュニケーションAPI Twilio&sakura.io体験ハンズオン 20180312
クラウドコミュニケーションAPI Twilio&sakura.io体験ハンズオン 20180312クラウドコミュニケーションAPI Twilio&sakura.io体験ハンズオン 20180312
クラウドコミュニケーションAPI Twilio&sakura.io体験ハンズオン 20180312
さくらインターネット株式会社
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
chatGPTの驚くべき対話能力.pdf
chatGPTの驚くべき対話能力.pdfchatGPTの驚くべき対話能力.pdf
chatGPTの驚くべき対話能力.pdf
YamashitaKatsushi
 
ソフトウェア開発会社の経営者から見たクラウド
ソフトウェア開発会社の経営者から見たクラウドソフトウェア開発会社の経営者から見たクラウド
ソフトウェア開発会社の経営者から見たクラウド
Ryo Ooishi
 
浪江町ハッカソンインプットセミナー20140621
浪江町ハッカソンインプットセミナー20140621浪江町ハッカソンインプットセミナー20140621
浪江町ハッカソンインプットセミナー20140621
Satoshi Maeda
 
これからはじめるIoTデバイス mbed入門編
これからはじめるIoTデバイス mbed入門編これからはじめるIoTデバイス mbed入門編
これからはじめるIoTデバイス mbed入門編
Naoto Tanaka
 
TouchDesigenr Beginners' workshop vol.003
TouchDesigenr Beginners' workshop vol.003TouchDesigenr Beginners' workshop vol.003
TouchDesigenr Beginners' workshop vol.003
Dan Imagineer
 
ソースで学ぶ脆弱性診断 - SmartTechGeeks #2
ソースで学ぶ脆弱性診断 - SmartTechGeeks #2ソースで学ぶ脆弱性診断 - SmartTechGeeks #2
ソースで学ぶ脆弱性診断 - SmartTechGeeks #2
tobaru_yuta
 
【14-E-7】Technology Enterprise Development「悪ふざけに関する真面目な話」
【14-E-7】Technology Enterprise Development「悪ふざけに関する真面目な話」【14-E-7】Technology Enterprise Development「悪ふざけに関する真面目な話」
【14-E-7】Technology Enterprise Development「悪ふざけに関する真面目な話」
Kent Ishizawa
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
windows向けツール紹介
windows向けツール紹介windows向けツール紹介
windows向けツール紹介
ryutakatori
 
春の勉強会 2015
春の勉強会 2015 春の勉強会 2015
春の勉強会 2015
Ryo Okuno
 
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」Takashi Uemura
 
10数年運用されているシステムの紐解き方
10数年運用されているシステムの紐解き方10数年運用されているシステムの紐解き方
10数年運用されているシステムの紐解き方
amano shohei
 
映像・音響機材入門
映像・音響機材入門映像・音響機材入門
映像・音響機材入門
Takeo Noda
 
Arduino~エルチカ編~
Arduino~エルチカ編~Arduino~エルチカ編~
Arduino~エルチカ編~
Loli Com
 

Similar to 多分怖くない, Androidとハードウェア (20)

20120324 ABC2012S Android開発者とデザイナーの効率的な連携に利く話
20120324 ABC2012S Android開発者とデザイナーの効率的な連携に利く話20120324 ABC2012S Android開発者とデザイナーの効率的な連携に利く話
20120324 ABC2012S Android開発者とデザイナーの効率的な連携に利く話
 
Weekend Androidのススメ
Weekend AndroidのススメWeekend Androidのススメ
Weekend Androidのススメ
 
今から実践できる㊙スライド作成術
今から実践できる㊙スライド作成術今から実践できる㊙スライド作成術
今から実践できる㊙スライド作成術
 
AndroidでのAntiVirus
AndroidでのAntiVirusAndroidでのAntiVirus
AndroidでのAntiVirus
 
クラウドコミュニケーションAPI Twilio&sakura.io体験ハンズオン 20180312
クラウドコミュニケーションAPI Twilio&sakura.io体験ハンズオン 20180312クラウドコミュニケーションAPI Twilio&sakura.io体験ハンズオン 20180312
クラウドコミュニケーションAPI Twilio&sakura.io体験ハンズオン 20180312
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
chatGPTの驚くべき対話能力.pdf
chatGPTの驚くべき対話能力.pdfchatGPTの驚くべき対話能力.pdf
chatGPTの驚くべき対話能力.pdf
 
ソフトウェア開発会社の経営者から見たクラウド
ソフトウェア開発会社の経営者から見たクラウドソフトウェア開発会社の経営者から見たクラウド
ソフトウェア開発会社の経営者から見たクラウド
 
浪江町ハッカソンインプットセミナー20140621
浪江町ハッカソンインプットセミナー20140621浪江町ハッカソンインプットセミナー20140621
浪江町ハッカソンインプットセミナー20140621
 
これからはじめるIoTデバイス mbed入門編
これからはじめるIoTデバイス mbed入門編これからはじめるIoTデバイス mbed入門編
これからはじめるIoTデバイス mbed入門編
 
TouchDesigenr Beginners' workshop vol.003
TouchDesigenr Beginners' workshop vol.003TouchDesigenr Beginners' workshop vol.003
TouchDesigenr Beginners' workshop vol.003
 
ソースで学ぶ脆弱性診断 - SmartTechGeeks #2
ソースで学ぶ脆弱性診断 - SmartTechGeeks #2ソースで学ぶ脆弱性診断 - SmartTechGeeks #2
ソースで学ぶ脆弱性診断 - SmartTechGeeks #2
 
【14-E-7】Technology Enterprise Development「悪ふざけに関する真面目な話」
【14-E-7】Technology Enterprise Development「悪ふざけに関する真面目な話」【14-E-7】Technology Enterprise Development「悪ふざけに関する真面目な話」
【14-E-7】Technology Enterprise Development「悪ふざけに関する真面目な話」
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
windows向けツール紹介
windows向けツール紹介windows向けツール紹介
windows向けツール紹介
 
春の勉強会 2015
春の勉強会 2015 春の勉強会 2015
春の勉強会 2015
 
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
20121124 学生セミナー「基礎からわかる! IT業界とプログラミング」
 
10数年運用されているシステムの紐解き方
10数年運用されているシステムの紐解き方10数年運用されているシステムの紐解き方
10数年運用されているシステムの紐解き方
 
映像・音響機材入門
映像・音響機材入門映像・音響機材入門
映像・音響機材入門
 
Arduino~エルチカ編~
Arduino~エルチカ編~Arduino~エルチカ編~
Arduino~エルチカ編~
 

Recently uploaded

Bhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSDBhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSD
Yuichiro Naito
 
RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19
GrapeCity, inc.
 
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet DocumentationRaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
GrapeCity, inc.
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19
GrapeCity, inc.
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
TatsuyaHanayama
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
K Kinzal
 
RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19
GrapeCity, inc.
 

Recently uploaded (8)

Bhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSDBhyve Management Daemon Version 3.0 on FreBSD
Bhyve Management Daemon Version 3.0 on FreBSD
 
RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19RayBarcode Product Description Documentation - 2024.6.19
RayBarcode Product Description Documentation - 2024.6.19
 
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet DocumentationRaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
RaySheetで解決できるシナリオ10選-業務改善に貢献する機能 - RaySheet Documentation
 
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Eventシグネチャで始めるRustプログラミング - Superteam Japan Developer Event
シグネチャで始めるRustプログラミング - Superteam Japan Developer Event
 
RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19RaySheet Product Description Documentation - 2024.6.19
RaySheet Product Description Documentation - 2024.6.19
 
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdfクラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
クラウドネイティブにおけるセキュアなソフトウェア・サプライ・チェーンの考え方とベストプラクティス.pdf
 
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer EventSolanaで始めるRustプログラミング - Superteam Japan Developer Event
Solanaで始めるRustプログラミング - Superteam Japan Developer Event
 
RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19RayPen Product Description Documentation - 2024.6.19
RayPen Product Description Documentation - 2024.6.19
 

多分怖くない, Androidとハードウェア