2021年3月5日に、mruby 3.0.0 のリリースがされました。おめでとうございます! mruby.org これに関連してなのか、mrubyをこれから始めようとか、ここのところどうなっていますかという質問をちょくちょく受けたり、ツイートを拝見したりするようになりました。 一方で、どうしても情報が古い、あるいは多くのmgemのメンテナンス状況が悪いように見える、などの初学者にとっては難しい状況が広がっており、厳しい気持ちになったり、厳しい感想を述べたりされている方もいるように思います。そして、その感想中には誤解も含まれているようです。 ここでいったん、少しでも「心構え」ができるように、これから触ってみる方々に対しての自分の考えをまとめておこうと思いました。 (さらにいうと、基本的に本原稿はいちユーザ、それもWebインフラに関わるユーザとしての解釈なので、Matzをはじめとした他のmru
こんにちは、R&Dチームの齋藤(@aznhe21)です。 さあみなさん、ついにこの時がやってまいりました。 本日2019/11/8にリリースされたRust 1.39により、あらゆる環境で最高速な非同期プログラミングが可能になりました。 新たな時代に乗り遅れないよう、今のうちにRustでの非同期プログラミングをマスターしておきましょう。 なお、この記事は、先日開催したOPTiM TECH BLOG Meetupの内容を大幅に加筆修正した上でエントリに仕上げたものです。 まず最初に伝えたいこと 非同期の歴史 Rustの非同期プログラミングの歴史 Rust 1.0以前 Rust 1.0 〜Rust 1.3 Rust 1.2あたり Rust 1.11あたり Rust 1.26あたり Rust 1.36 Rust 1.39 Rustの非同期プログラミングの特徴 ゼロコスト抽象化 プラットフォーム非依
tan(355/226)の計算は関数電卓の正確さを試すベンチマークによく使われるらしいです。というのも、355/226はπ/2に極めて近い有理数であり、π/2近傍でtanは無限大に発散するからです。 下表のように両者は10進数で7桁まで一致しています。 π/2 1.5707963267948966192313216916398 355/226 1.5707964601769911504424778761062 tan(355/226) の真の値は、-7497258.185...ですが、この近傍でラジアン値の有効数字10桁目が1ズレるだけでtanの値は有効数字3桁目からズレてきます。ちなみに、Androidの関数電卓アプリの定番といえるRealCalcは正しい10桁の値を出しますが、市販の関数電卓では4桁〜7桁くらいの正確さになるのものが多いようです。 今回は、いろいろなマイコン/開発環境で
144labの入江田です。 今回TinyGoという素敵なプロダクトを試してみました。 TinyGoとは TinyGoは本家Go言語の組み込み向けのサブセット版。 本家Go言語はPOSIX-OSに対する機能依存が大きく、リッチなランタイムを持っています。その為、本来はOSを持たない組み込み用途には不向きでした。 TinyGoはPOSIX-OSに依存する機能を簡易的な実装で代用しつつLLVM(コンパイラを作る為のフレームワーク)を使って組み込み向けアーキテクチャをサポートするGo言語のコンパイラです。 つまりサポートするCPUアーキテクチャはLLVMがサポートするものを前提にしています。 リポジトリ https://github.com/tinygo-org/tinygo ドキュメント https://tinygo.org/ サポートアーキテクチャ ARMのCortex-M0系 WebAsse
はじめに こんにちは、kishimaと申します。 mruby/c(えむるびーすらっしゅしー)という言語を皆さんは御存知でしょうか? この記事では、mrubyから派生して生まれたmruby/cを使ったIoTっぽい電子工作について説明していきたいと思います。 mruby/cでIoT 筆者は仕事で馴染み深かったのもあり、2017年後半あたりから電子工作を本格的に趣味として始めました。 機器の制御のためにマイコンにソフトを書き込むわけですが、プログラミング言語は基本的にC言語を用いてきました。 しかしちょっとした機能の実装に、いつもC言語を使うのも面倒と感じる場面も多く、Rubyのようなスクリプト言語を使えたらいいなとずっと思ってきました。 最近では、mrubyという選択肢もあるわけなのですが、RAMが数百KB程度のマイコンで動かすことを考えると、mrubyは動かせないということはないのですが、あ
★この記事はMicroPython Advent Calendar 2018に参加しています。★ NUCLEO-L432KCは、STM32L4シリーズのMCUを使った、Arduino Nanoサイズの小型ボードです。 写真のように、他のNUCLEOボードに比べて非常に小さく、省電力ですが、フラッシュは256KB、RAMは48KB+パリティチェック付き16KBと、そこそこのスペックです。 秋月電子の店頭などでは見かけないのですが、RSやdigi-keyなどの通販では1500円くらいで買えます。 MicroPythonのフォーラムの以下のスレッドで話題になっていたのですが、まだMicroPythonが載せられていなかったので載せてみました。 [STM32L432 – NUCLEO 32] – MicroPython Forum 具体的にはどういう作業になるのかを紹介してみたいと思います。 全体
IoTデバイス用プログラミング言語「Eclipse Mita」登場。C言語へ変換、組み込み開発を容易に Eclipse Mitaでは、IoTデバイスをプログラミングする際に面倒になりがちな、センサーの読み取りやネットワークデバイスの制御といった低レベルかつデバイスごとに異なる部分をプラットフォームごとに吸収する仕組みを持ち、IoTデバイスにおいてもモダンなプログラミングを実現できるとのこと(プラットフォーム吸収部分のドキュメントはまだ準備中のようです)。 また、イベントループを用いることでプログラミングモデルを分かりやすくするなど、組み込み開発を経験したことのないプログラマでも容易にIoTデバイスのプログラミングができるような言語設計になっています。 Eclipse MitaのコードはC言語として出力されるため、多くのIoTデバイスに対応できる見通しです。 Eclipse Mitaの発表に
組み込み開発へのテスト駆動開発の導入 - 千里霧中の続きです。 実機を伴うテストの問題点 では次に実機を伴うテスト環境についてですが、こちらはターゲットに似た実機環境を用意する方法と、テスト専用の機器上で動かす方法があると思います。 まず後者については、有力な候補ではないと思います。テスト用デバイスというのはパッケージソフトウェア以上に高額な価格設定がされているのが一般的な上、ターゲットと大分違う条件でテストをせざるを得ないためです。おそらくこのような環境を活用できるのは、よほど恵まれた環境か、特定製品に専業化した環境ぐらいに限られると思います。 一方前者に関しては、組み込み開発では最も一般的に行われている手段ではないかと思われます。例えば試作段階のターゲットの基盤を最低限のプロセッサが動作できるように一時的に改造して、Tera Termといった端末でファームウェアと通信したり、メモリダン
こんにちは。去る11月8日に、BadUSB体験会という社内勉強会を開催しましたのでその内容を簡単に紹介します。 (KLab Advent Calendar 2016 の2日目の記事になります) 概要 BadUSBとはUSBメモリのファームウェアを書き換えてHIDデバイスとして動作させ、任意のキー入力を行う攻撃手法の事なのですが、今回はその攻撃手法の 「任意のキー入力を行うHIDデバイス」 という部分を自作してみる事で、この攻撃について学んでみます。 デバイスの入手 任意のキー入力を行うHIDデバイスの作り方には様々な方法があり、PS/2キーボードの通信プロトコルを実装してUSB -> PS/2変換アダプタを通す などの手法がありますが、現状もっとも手軽な方法としては、 キーボード操作を行えるArduinoを利用する方法があります。 Arduino には標準で、キーボードとマウスを操作するラ
本ページのLPCXpresso54114に、Baseboard、Arduinoプロトタイプシールドを使ったNXP版FreeRTOSアプリケーションテンプレートを発売しました。FreeRTOS基礎固め、FreeRTOSアプリケーションのプロトタイプ開発に最適です。 FreeRTOSを例に、RTOS基本機能を解説し、習得のための開発環境と、RTOSサンプルソフトを示します。 IoT MCUのソフト開発は、RTOS: Real Time Operation Systemが必要になると思います。その理由が以下です。 一般的なMCU開発でも、通信UART制御は処理が複雑で重く、鬼門! IoT MCUの通信プロトコルが何に決まるかは不透明だが、UARTに比べて複雑な通信処理になることは明らか これらの対策、切り札として、FreeRTOSやmbed OSなどのMCU RTOSが期待されています。弊社ブロ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? これは Rustその2 Advent Calendar 2017 24日目の記事です。ARM Cortex-M アーキテクチャを採用した32ビット・マイクロコントローラ(マイコン)向けに、Rust でプログラムを開発する方法を紹介します。これらのマイコンでは Linux などの OS は動きませんので、OS なしで動作する「ベアメタル」なプログラムを書きます。 Rust を使うと、たとえマイコンであってもマルチスレッドでデータ競合のない「安全な」プログラムを簡単に開発できます。 今回は STM32F4 Discovery という Cor
前にLuaを入門Luaプログラミングで勉強してたんですが、Luaの文法は分かっても肝心の組み込み方やコルーチン・メタテーブル等はサラッとしか書いておらず、結局どう使えばいいのやらサッパリ分からなくて挫折してました。 最近、Programming in Luaという公式の解説書を読んで、勉強し直してます。 さすが公式というだけあって、情報量が半端ない。 C++組み込み部分だけでも、自分用に備忘録を作っておきます。 ちなみに、ライブラリのリンクが一番手間取ったのですが、今でもよく分かってないので書きません。 Makefileでビルドしたのをリンクしても、↓のようなエラーが出てリンクできません。 ignoring file.../liblua.a, file was built for archive which is not the architecture being linked (x86
まえおき ちょっとアプリの対抗として BLE Peripheral を実装(エミュレーション)する必要があったのだが、iOS/AndroidだとMACアドレス周りのセキュリティ考慮や、Android同士だと相性が出るという不治の病などがあって、スマートフォンでやるのは無理があるなぁと思っていた。 また、現場で実際にアプリのテストをやろうとしたりすると、Macのエミュレーションとかも、パラでやるのに向いていないのでなんだかなぁという状態だった。 「Raspberry Pi 3 Model B」発表のお知らせ https://raspberry-pi.ksyic.com/news/page/nwp.id/24 そんな折、Raspberry Pi 3先生にBluetooth 4.0/Wifiが内蔵されたということで、node.js/blenoあたりで実装すればハードの仕様差も少ないし調達も楽だし
Rust は、Firefox を開発する Mozilla が開発し、次世代ブラウザの開発に使っているプログラミング言語です。借用検査という概念を導入することによりメモリ安全およびデータ競合安全をコンパイラが保証する言語であり、2015年中頃の安定版のリリースあたりから次第に注目を集めるようになりました。 メモリ安全とは、メモリの範囲外アクセスや二重解放、ヌル参照、未初期化領域へのアクセスがない状態を表します。ただし、Rust の言うメモリ安全とは、メモリリークをしないことを保証するものではありません。 データ競合安全とは、あるひとつのオブジェクトに対しての読み込みおよび書き込みのが同時に起き結果が不定になる状態にならないことを表します。競合状態とは異なります。 無名関数という概念を様々な言語が次々と導入したように、プログラミング言語は相互に影響を及ぼし徐々に変化しています。Rust は「寿
CUnity is written in 100% pure C code. It follows ANSI standards while supporting most embedded compiler quirks. Portable Unity is equally happy running tests for an 8-bit microcontroller as it is a 64-bit processor on steroids. Expressive Unity is designed to help you make the most of your test suite. It features a rich set of assertions so you can find the perfect match for your needs HOW UNITY
C言語のユニットテストのフレームワークには、昔はCUnit+自前のテストコードジェネレータを使用していたのですが、前々からUnityの使用機会が増えています。 理由は色々ありますが、自分の場合だと以下の点で便利なのが特に大きいです。 移植性に優れるため組み込み環境(ホスト、ターゲット両方で)でも使える 標準で自動テストディスカバリ機能(テストランナーの自動生成)を持っているので、そのままTDDのような軽快なテスティングを実現できる 特に組み込みCでTDDをやる場合は、PCUnitと並ぶ有望なテスティングフレームワークだと感じます。 少し前にTest Driven Development for Embedded Cの読書会にて解説を行う機会もあったので、今回Unityについて簡単にまとめたいと思います。 特徴 組み込み開発も対象に含むC言語向けユニットテスティングフレームワーク サイト:
目次 1.0.0 Lua の基礎 1.1.0 Lua v.s. Python 1.2.0 Lua 初心者の戸惑い 1.2.1 文字列の結合演算子 1.2.2 関数の戻り値 1.2.3 nil と None 1.2.4 部分文字列 1.2.5 正規表現 1.2.6 module 1.2.7 long comment 1.2.8 local 1.3.0 import 2.0.0 Lua XML 2.1.0 XML collect 2.2.0 XML collect (修正版) 2.3.0 XML mktree 2.4.0 XML viewer mkidf 2.5.0 XML 雑感 2009/01/29 2009/02/15 追加 2009/02/16 追加 2009/03/17 追加 2009/04/04 追加 2009/04/05 追加 今年の冬休みは Lua で WebDA
家の照明などを操作しようと思うと、やはりモバイルアプリよりも簡単な物理ボタンが欲しくなることは多いと思います。 流行に身を任せて、市販のIoTボタンを買ったり、ArduinoやESP8266などで電子工作したりしてもいいですが、USBでつながる普通の無線マウスで実用的には十分なことがあったので紹介します。 ほかのIoTボタンと比べてこんなメリットがあります。 安い (737円とか) どこでも手に入る 設定が不要 乾電池で動作して長持ち ホイールが使える マウスで電球スイッチ 今回は、家全体の電球を操作するボタンをつくるのを例に説明します。電球にはPhilips Hueを使って、HTTP API経由で電球を制御します。このようなものを使います。 USB接続のワイヤレスマウス Raspberry Pi (常時稼働のマシンならなんでもOK) 制御するもの (今回はHue) マウスをクリックすると
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く