Mecha-Mozilla

1,270 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,270
On SlideShare
0
From Embeds
0
Number of Embeds
46
Actions
Shares
0
Downloads
3
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Mecha-Mozilla

  1. 1. Mecha-Mozilla 赤塚大典12年8月21日火曜日
  2. 2. Firefox の灯12年8月21日火曜日
  3. 3. Mecha-Mozilla Web x ?12年8月21日火曜日
  4. 4. var blink = function(value) { var arduino = document.arduino; arduino.analogWrite(8, value); setTimeout(blink, 1000, value == 0 ? 255 : 0); } $(document).ready(function() { var arduino = document.arduino; arduino.open("/dev/ cu.usbmodemfa131"); arduino.pinMode(8, true); //start blinking blink(0); }); arduino.js12年8月21日火曜日
  5. 5. • ウェブを 実世界に取り出してみる • ウェブブラウザでできないコトを 実世界で補填してみる • ウェブと実世界の良いところを併せた コンテンツ/体験を模索してみる12年8月21日火曜日
  6. 6. 通天閣12年8月21日火曜日
  7. 7. re-finder12年8月21日火曜日
  8. 8. weburret12年8月21日火曜日
  9. 9. • ウェブを 実世界に取り出してみる • ウェブブラウザでできないコトを 実世界で補填してみる • ウェブと実世界の良いところを併せた コンテンツ/体験を模索してみる12年8月21日火曜日
  10. 10. デモ12年8月21日火曜日
  11. 11. arduino.js12年8月21日火曜日
  12. 12. arduino.js //JavaScript var blink = function(value) { var arduino = document.arduino; arduino.analogWrite(8, value); setTimeout(blink, 1000, value == 0 ? 255 : 0); } $ (document).ready(function() { var arduino = document.arduino; arduino.open("/dev/ cu.usbmodemfa131"); arduino.pinMode(8, true); //start blinking blink(0); });12年8月21日火曜日
  13. 13. arduino.js : ソフトウェア構成 Addon User’s js-ctypes JavaScript c Arduino12年8月21日火曜日
  14. 14. User’s JavaScript アプリケーション  Arduino を  JavaScript から制御12年8月21日火曜日
  15. 15. Addon構成 libArduinoBridge.lib  ネイティブ arduino.js  Cとの接続ライブラリ main.js  Addonメイン12年8月21日火曜日
  16. 16. Addon : main.js Addon エントリポイント  arduinoライブラリを  読み込み  各ドキュメントから  触れるようにする12年8月21日火曜日
  17. 17. Addon : arduino.js Addon用ライブラリ  js-ctypes を利用して  Cネイティブと接続12年8月21日火曜日
  18. 18. ネイティブ : ArduinoBridge.h Header  js-ctypes はこれにあわせる12年8月21日火曜日
  19. 19. js-ctypes と header の比較 js-ctypes header var openArduino = dylib.declare( "openArduino", /* function name */ ctypes.default_abi, /* ABI type */ ctypes.int32_t, /* return type */ ctypes.char.ptr, /* parameter */ new ctypes.PointerType(ctypes.char.ptr) ); int openArduino(char* portname, char** error); exports.open = function(portname) { var err = ctypes.char.ptr(); if ( -1 == openArduino(portname, err.address()) ) { throw err.readString(); } }12年8月21日火曜日
  20. 20. ネイティブ : ArduinoBridge.m 実装  Arduino のコマンドを送る12年8月21日火曜日
  21. 21. Arduino コマンドをUSB経由で 受け付け実行12年8月21日火曜日
  22. 22. packege.json { "name": "arduino.js", "license": "MPL 1.1/GPL 2.0/LGPL 2.1", "author": "Daisuke Akatsuka", "version": "0.1", "fullName": "arduino.js", "id": "", "description": "arduino.js core", "unpack":"true" }12年8月21日火曜日
  23. 23. 今後の展開 • バリエーションを増やす12年8月21日火曜日
  24. 24. kiinect.js12年8月21日火曜日
  25. 25. kinect.js //JavaScript next: function() { Main.kinect.getDepthTo(Main.bu ffer); var depthBuffer = Main.buffer; for (var i = 0, n = depthBuffer.length; i < n; i+ +) { var depth = depthBuffer[i]; var color = 255- Math.floor(depth/ MAX_DEPTH*255); var index = i * 4; Main.imagedata.data[index +1] = color; } Main.context.putImageData(Main .imagedata, 0, 0); setTimeout(Main.next, 10); }12年8月21日火曜日
  26. 26. kinect.js : ソフトウェア構成 Addon User’s js-ctypes JavaScript c++ open kinect12年8月21日火曜日
  27. 27. デモ12年8月21日火曜日
  28. 28. ネイティブの配列 • js-ctypes の配列をそのまま使うと遅い ※JITコンパイラが効かない • JavaScript の配列にコピーして利用する • XPCOM で実装しても速度は変わらない ※JSAPI の JS_SetElement が遅い?? • XPCOM で予め配列のメモリを確保しても それを返す実装はできない ※XPCOMで返した配列のメモリが破棄される • 極力配列数を少なくする • ビット演算を使って圧縮するなど12年8月21日火曜日
  29. 29. 今後の展開 • Tangible Webmaker12年8月21日火曜日
  30. 30. Mecha-Mozilla http://www.mecha-mozilla.org http://mecha-mozilla.tumblr.com 毎週金曜日にMecha-Mozillaミーティング12年8月21日火曜日

×