Slide 1

Slide 1 text

ハードウェアを動かす TypeScriptの世界

Slide 2

Slide 2 text

はじめに 2 スライド 98枚あります 1スライドあたり18秒 スライドは事前公開済みです

Slide 3

Slide 3 text

セッション概要 3 TypeScriptならフロントエンドも バックエンドもインフラも! ついでにハードウェアも TypeScriptでやろう!

Slide 4

Slide 4 text

本スライドのゴール 4 TypeScriptでハードウェアを動かすとき、 ● ハードウェアとはどんなものか ● 作る際にどんな選択肢があるのか ● どの選択肢がよさそうなのか をなんとなくイメージできるようになる

Slide 5

Slide 5 text

5 木戸康平 きど こうへい https://qiita.com/wicket https://github.com/9wick https://speakerdeck.com/9wick https://twitter.com/9wick https://9wick.com ハードウェアとソフトウェアの世界を いったりきたりしてます。 obniz(オブナイズ)というIoTツールを 開発しています

Slide 6

Slide 6 text

6 ハードウェアってなに?

Slide 7

Slide 7 text

7 ハードウェアってなに? ソフトウェア vs ハードウェア ではない キーボードもマウスも物理的に存在する

Slide 8

Slide 8 text

8 ハードウェアってなに? ハードウェアプログラミングの文脈では 「入出力が定型化されていないもの」(個人見解)

Slide 9

Slide 9 text

9 ハードウェアってなに? ソフトっぽい ハードっぽい ハードウェアプログラミングの文脈では 「入出力が定型化されていないもの」(個人見解)

Slide 10

Slide 10 text

10 ハードウェアってなに? ソフトっぽい ハードっぽい ハードウェアプログラミングの文脈では 「入出力が定型化されていないもの」(個人見解)

Slide 11

Slide 11 text

11 ハードウェアってなに? ソフトっぽい ハードっぽい ハードウェアプログラミングの文脈では 「入出力が定型化されていないもの」(個人見解)

Slide 12

Slide 12 text

12 ハードウェアってなに? ソフトっぽい ハードっぽい ハードウェアプログラミングの文脈では 「入出力が定型化されていないもの」(個人見解)

Slide 13

Slide 13 text

13 ハードウェアってなに? ソフトっぽい ハードっぽい ハードウェアプログラミングの文脈では 「入出力が定型化されていないもの」(個人見解)

Slide 14

Slide 14 text

14 ハードウェアってなに? ソフトっぽい ハードっぽい ハードウェアプログラミングの文脈では 「入出力が定型化されていないもの」(個人見解)

Slide 15

Slide 15 text

15 ハードウェアってなに? ソフトっぽい ハードっぽい ハードウェアプログラミングの文脈では 「入出力が定型化されていないもの」(個人見解) 昔はハード寄りだった 一般普及されてソフト寄りに

Slide 16

Slide 16 text

16 ハードウェアができると 何がいいの?

Slide 17

Slide 17 text

17 圧倒的自由度🙌

Slide 18

Slide 18 text

18 ハードウェアができると何がいいの?

Slide 19

Slide 19 text

19 ハードウェアができると何がいいの? これが作れるようになる!

Slide 20

Slide 20 text

20 ハードウェアができると何がいいの? 定型化された形状

Slide 21

Slide 21 text

21 ハードウェアができると何がいいの? 他人が作った ハードを選ぶ 定型化された形状

Slide 22

Slide 22 text

22 ハードウェアができると何がいいの? 自分で形を決める 他人が作った ハードを選ぶ 定型化された形状

Slide 23

Slide 23 text

23 自由だからこそ より良いものを目指せる

Slide 24

Slide 24 text

24 ハードウェアができると何がいいの? 結局、我々は現実のものに慣れている 紙の書き心地を再現するタブレット 他、マテリアルデザイン/タンジブル等も 紙に書くとデジタル化されるペン 360life.shinyusha.co.jp/articles/-/3465 より https://nuwapen.com/products/nuwa-pen より

Slide 25

Slide 25 text

25 ハードウェアができると何がいいの? ソフトとハードでは受ける印象が違う https://aibo.sony.jp/store/ より https://lovot.life/ より

Slide 26

Slide 26 text

26 ハードウェアができると何がいいの? できる領域もちがう

Slide 27

Slide 27 text

27 ハードウェアで 世界が広がる! 👍

Slide 28

Slide 28 text

28 でも どうやって作ったらいいの?

Slide 29

Slide 29 text

定型化されてない ムズカシイ🫠 =

Slide 30

Slide 30 text

30 どうやって作ったらいいの? 定型化されていないということは難易度が高い 同じことをやろうと思っても複数のやり方があり 技術選定が難しい

Slide 31

Slide 31 text

31 たとえば

Slide 32

Slide 32 text

32 この会場でセッションの 聴講人数を計測したい! あなたならどうしますか

Slide 33

Slide 33 text

33 人数カウント方法 カメラで 画像分析

Slide 34

Slide 34 text

34 人数カウント方法 カメラで 画像分析 駅の 改札方式

Slide 35

Slide 35 text

35 人数カウント方法 カメラで 画像分析 駅の 改札方式 椅子で 体重を測る

Slide 36

Slide 36 text

36 人数カウント方法 カメラで 画像分析 駅の 改札方式 椅子で 体重を測る 無線タグを配り 電波を見る

Slide 37

Slide 37 text

37 人数カウント方法 カメラで 画像分析 駅の 改札方式 椅子で 体重を測る 無線タグを配り 電波を見る どれも「技術的には」可能そう

Slide 38

Slide 38 text

38 人数カウント方法 カメラで 画像分析 駅の 改札方式 椅子で 体重を測る 無線タグを配り 電波を見る ボツ案:CO2濃度の変化を測る どれも「技術的には」可能そう

Slide 39

Slide 39 text

39 精度ちゃんと出るかな?

Slide 40

Slide 40 text

40 人数カウント方法 精度 カメラ画像分析 そこそこ 駅の改札方式 かなり良い 椅子で体重計測 立ち見問題 無線タグを配る 悪い

Slide 41

Slide 41 text

41 それぞれ どれ らいコストかかるかな? 自分で形を決 める 他人が作った ハードを選ぶ 定型化された 形状

Slide 42

Slide 42 text

42 人数カウント方法 精度 コスト カメラ画像分析 そこそこ 1部屋5万円〜 駅の改札方式 かなり良い 1台10万円〜 椅子で体重計測 立ち見問題 1座席1000円〜 無線タグを配る 悪い 1人数百円 Alibaba(中国のEC) で売ってた 売ってないから 自作想定

Slide 43

Slide 43 text

43 開発難し ない?

Slide 44

Slide 44 text

44 人数カウント方法 精度 コスト 開発 カメラ画像分析 そこそこ 1部屋5万円〜 大変 駅の改札方式 かなり良い 1台10万円〜 楽 椅子で体重計測 立ち見問題 1座席1000円〜 少し大変 無線タグを配る 悪い 1人数百円 少し大変

Slide 45

Slide 45 text

45 運用できる?

Slide 46

Slide 46 text

46 人数カウント方法 精度 コスト 開発 運用 カメラ画像分析 そこそこ 1部屋5万円〜 大変 楽 駅の改札方式 かなり良い 1台10万円〜 楽 待ち行列計算 設置大変 椅子で体重計測 立ち見問題 1座席1000円〜 少し大変 設置大変 無線タグを配る 悪い 1人数百円 少し大変 回収大変 紛失リスク

Slide 47

Slide 47 text

47 会場が大き なっても大丈夫?

Slide 48

Slide 48 text

48 人数カウント方法 精度 コスト 開発 運用 スケール カメラ画像分析 そこそこ 1部屋5万円〜 大変 楽 画角重複問題 駅の改札方式 かなり良い 1台10万円〜 楽 待ち行列計算 設置大変 しやすい 椅子で体重計測 立ち見問題 1座席1000円〜 少し大変 設置大変 しやすい 無線タグを配る 悪い 1人数百円 少し大変 回収大変 紛失リスク 電波混信

Slide 49

Slide 49 text

49 このバランスを とらないといけない

Slide 50

Slide 50 text

考えることが多すぎる😡 だからムズカシイ

Slide 51

Slide 51 text

51 どれが正解かは ケースバイケース

Slide 52

Slide 52 text

52 ちなみに、自分ならどうするか

Slide 53

Slide 53 text

53 自分ならどうするか これを買ってきて 入口/出口で押して貰う https://www.amazon.co.jp/dp/B0C36Y3RPK

Slide 54

Slide 54 text

54 自分ならどうするか 精度 センサコスト 開発 運用 スケール カメラ画像分析 そこそこ 1部屋5万円〜 大変 楽 画角重複問題 駅の改札方式 かなり良い 1台10万円〜 楽 待ち行列計算 設置大変 しやすい 椅子で体重計測 立ち見問題 1座席1000円〜 少し大変 設置大変 しやすい 無線タグを配る 悪い 1人数百円 少し大変 回収大変 紛失リスク 電波混信 ボタン 参加者 リテラシー依存 1部屋1500円〜 楽 待ち行列計算 しやすい

Slide 55

Slide 55 text

55 「いい方法」に後で気づくのも ハードウェアあるある😔

Slide 56

Slide 56 text

56 でもそこが面白い😆

Slide 57

Slide 57 text

57 ひときゅう い 途中までのまとめ ● ハードウェアは入出力が不定形。圧倒的自由度がある ● 一つのことをやるにも複数のやり方がある ● 選択肢のメリット・デメリットバランスを取るのが大変 ここまでで18分切りたい

Slide 58

Slide 58 text

58 TypeScriptで ハードウェアをやるメリット

Slide 59

Slide 59 text

59 TypeScriptでやるメリット 開発難易度が劇的に下がる(vs C言語) 精度 センサコスト 開発 運用 スケール カメラ画像分析 そこそこ 1部屋5万円〜 大変 楽 画角重複問題 駅の改札方式 かなり良い 1台10万円〜 楽 待ち行列計算設 置大変 しやすい 椅子で体重計測 立ち見問題 1座席1000円〜 少し大変 設置大変 しやすい 無線タグを配る 悪い 1人数百円 少し大変 回収大変 紛失リスク 電波混信 ボタン 参加者 リテラシー依存 1部屋1000円〜 楽 待ち行列計算 しやすい 上記は全部TypeScriptで実現可能

Slide 60

Slide 60 text

60 C言語でできることは TypeScriptでもできる! ※個人の感想です

Slide 61

Slide 61 text

ただし コンピューティングコストも 考えないといけない 💰💰💰

Slide 62

Slide 62 text

62 具体例

Slide 63

Slide 63 text

処理性能 メモリ ストレージ 値段 C言語 TypeScript MacBookPro 動く 動く ESP32 動く ぎり動く PIC 動く 動かない 63 TypeScript vs C言語 ※単純比較できるものではないですがイメージのための概要として

Slide 64

Slide 64 text

処理性能 メモリ ストレージ 値段 C言語 TypeScript MacBookPro M3 4.05GHz 8コアCPU 16GB 255GB 248,800円 動く 動く ESP32 動く ぎり動く PIC 動く 動かない 64 TypeScript vs C言語 ※単純比較できるものではないですがイメージのための概要として

Slide 65

Slide 65 text

処理性能 メモリ ストレージ 値段 C言語 TypeScript MacBookPro M3 4.05GHz 8コアCPU 16GB 255GB 248,800円 動く 動く ESP32 240MHz 536kB 4MB 530円 動く ぎり動く PIC 動く 動かない 65 TypeScript vs C言語 ※単純比較できるものではないですがイメージのための概要として

Slide 66

Slide 66 text

処理性能 メモリ ストレージ 値段 C言語 TypeScript MacBookPro M3 4.05GHz 8コアCPU 16GB 255GB 248,800円 動く 動く ESP32 240MHz 536kB 4MB 530円 動く ぎり動く PIC 32MHz 2kB 3.5kB 160円 動く 動かない 66 TypeScript vs C言語 ※単純比較できるものではないですがイメージのための概要として

Slide 67

Slide 67 text

処理性能 メモリ ストレージ 値段 C言語 TypeScript MacBookPro M3 4.05GHz 8コアCPU 16GB 255GB 248,800円 動く 動く ESP32 240MHz 536kB 4MB 530円 動く ぎり動く PIC 32MHz 2kB 3.5kB 160円 動く 動かない 67 TypeScript vs C言語 ※単純比較できるものではないですがイメージのための概要として

Slide 68

Slide 68 text

68 コストか て良 れば すべてTypeScriptでできる

Slide 69

Slide 69 text

69 できるだ コストもか た ない ↓ 動作の仕組みで工夫できる

Slide 70

Slide 70 text

70 TypeScriptはどこで動 のか

Slide 71

Slide 71 text

71 TypeScriptのコンパイル(tsc)は 本番環境CPUでやっていますか?

Slide 72

Slide 72 text

72 TypeScriptはどこで動 のか 大抵の場合はtscは別の場所でやっている 本番環境 コンパイル済 プログラム (JavaScript) Local / CD上 tscで使うCPUは こっち

Slide 73

Slide 73 text

73 TypeScriptを動かす場所に 種類がある

Slide 74

Slide 74 text

75 TypeScriptはどこで動 のか デバイス サーバー Cloud デバイス クラウド接続型 有線接続型 スタンドアロン型 デバイス PC 常時通信 デバイス JSデプロイ型 PC PC デバイス バイナリデプロイ型 常時通信 専用 OS 専用 OS 専用 OS 機能特化型デバイスで ・Webhook型 ・API型 ・BLE通信型 などなど

Slide 75

Slide 75 text

76 デバイス比較(一部) 汎用性 デバイス単価 開発 運用 スケール Raspberry Pi スタンドアロン型 大 高い 楽 しにくい しやすい Moddable スタンドアロン型 大 普通 楽 しにくい しやすい MakeCode バイナリデプロイ型 小 安い 楽 しにくい しやすい Johnny Five 有線接続型 中 普通 楽 しやすい しにくい obniz クラウド接続型 大 高め 楽 しやすい しやすい ※個人の感覚です やりたいことが できるか?の列

Slide 76

Slide 76 text

77 デバイスマップ 専用機 汎用機 デバイスコスト 高 デバイスコスト 安 Arduino RaspberryPi obniz Moddable Johnny Five PIC STM webiot C言語ゾーン TypeScriptゾーン Toio SH /H8 mbed ※個人の感覚です スマスピ Edison.js

Slide 77

Slide 77 text

78 1台なら高級でもいい ど 100万台作るなら1円でも安 したい…

Slide 78

Slide 78 text

79 デバイスマップ 専用機 汎用機 デバイスコスト 高 デバイスコスト 安 Arduino RaspberryPi obniz Moddable Johnny Five PIC STM webiot C言語ゾーン TypeScriptゾーン Toio SH /H8 mbed ※個人の感覚です スマスピ Edison.js

Slide 79

Slide 79 text

80 TypeScriptは少量多品種に向いている =ハードウェア入門には最適!

Slide 80

Slide 80 text

81 ピックアップ紹介

Slide 81

Slide 81 text

82 ピックアップ紹介 - RaspberryPi デバイス スタンドアロン型 ⦿ 小型のコンピューター ⦿ IoT以外でもよく使われる ⦿ PCでTSを動かすのと同じようにできる ⦿ 最近RaspberryPi5がでた ⦿ ¥11,000~15,000/台

Slide 82

Slide 82 text

83 ピックアップ紹介 - obniz デバイス サーバー Cloud クラウド接続型 常時通信 専用 OS ⦿ 各デバイスについたIDでインターネット越しに 接続して操作するデバイス ⦿ クラウド接続型なので、AWSなどから動かせる ⦿ アプリアップデートなどがクラウドと同様にで きて楽 ⦿ ¥6,000~¥22,000/台

Slide 83

Slide 83 text

84 ピックアップ紹介 - DeviceScript PC デバイス バイナリデプロイ型+α もどき 専用 VM Bin ⦿ Microsoftが2023年に唐突に出した ⦿ TS”もどき”をコンパイルしてバイナリ を生成 / 専用VMで実行 ⦿ まだExperimental Project ⦿ VSCodeとの連携/デバッグがしやすい ⦿ ¥600~2,000/台 https://microsoft.github.io/devicescript

Slide 84

Slide 84 text

85 ピックアップ紹介 - moddable ⦿ Embedded JavaScript (組み込み向けJSランタイム) ⦿ スタックチャンで使われている ⦿ バイナリデプロイが主体だがevalもできる ⦿ ¥600~2,000/台 ⦿ 詳しくは16:40からのセッションを 聞こう! PC デバイス バイナリデプロイ型 | JSデプロイ型 専用 VM

Slide 85

Slide 85 text

86 ピックアップ紹介 - Edison.js ⦿ FirmataというPC/マイコンの 通信プロトコルを使っている ⦿ ¥1,500~6,000/台 ⦿ 詳しくは17:20からのセッションを 聞こう! 有線接続型 デバイス PC 常時通信 専用 OS

Slide 86

Slide 86 text

87 デバイスマップ 専用機 汎用機 デバイスコスト 高 デバイスコスト 安 Arduino RaspberryPi obniz Moddable Johnny Five PIC STM webiot C言語ゾーン TypeScriptゾーン Toio SH /H8 mbed ※個人の感覚です スマスピ Edison.js

Slide 87

Slide 87 text

88 あくまでこれは コンピューティングコストの話

Slide 88

Slide 88 text

89 精度 センサコスト 開発 運用 スケール カメラ画像分析 そこそこ 1部屋5万円〜 大変 楽 画角重複問題 駅の改札方式 かなり良い 1台10万円〜 楽 待ち行列計算設 置大変 しやすい 椅子で体重計測 立ち見問題 1座席1000円〜 少し大変 設置大変 しやすい 無線タグを配る 悪い 1人数百円 少し大変 回収大変 紛失リスク 電波混信 ボタン 参加者 リテラシー依存 1部屋1000円〜 楽 待ち行列計算 しやすい これは センサの話

Slide 89

Slide 89 text

90 これは 頭脳の話 専用機 汎用機 デバイスコスト 高 デバイスコスト 安 Arduino RaspberryPi obniz Moddable Johnny Five PIC STM webiot C言語ゾーン TypeScriptゾーン Toio SH /H8 mbed ※個人の感覚です スマスピ

Slide 90

Slide 90 text

91 精度 センサコスト 開発 運用 スケール カメラ画像分析 そこそこ 1部屋5万円〜 大変 楽 画角重複問題 駅の改札方式 かなり良い 1台10万円〜 楽 待ち行列計算設置 大変 しやすい 椅子で体重計測 立ち見問題 1座席1000円〜 少し大変 設置大変 しやすい 無線タグを配る 悪い 1人数百円 少し大変 回収大変 紛失リスク 電波混信 ボタン 参加者 リテラシー依存 1部屋1000円〜 楽 待ち行列計算 しやすい 組み合わせ 専用機 汎用機 デバイスコスト高 デバイスコスト安 Arduino RaspberryPi obniz Moddable Johnny Five PIC STM webiot C言語ゾーン TypeScriptゾーン Toio SH /H8 mbed スマスピ

Slide 91

Slide 91 text

92 デバイスコスト コンピューティングコスト + センサコスト + 筐体コスト + …… =

Slide 92

Slide 92 text

93 トータルコストを踏まえた 選定が必要

Slide 93

Slide 93 text

考えることが多すぎる😡 (再掲)

Slide 94

Slide 94 text

95 でも やれることは広い😆

Slide 95

Slide 95 text

96 やってみると楽しいはず!

Slide 96

Slide 96 text

97 ぜひハードウェアも 触ってみて ださい

Slide 97

Slide 97 text

ハードウェアを動かす TypeScriptの世界

Slide 98

Slide 98 text

99 Fin