OpenBlink
May 4, 2026 · View on GitHub
OpenBlink とは
OpenBlink は ViXion Blink からフォークされたオープンソースプロジェクトです。
- 瞬時の書き換え — Ruby コードの変更が 0.1 秒未満で実機に反映され、マイコンの再起動を伴いません(これを「Blink」と呼んでいます)
- 完全ワイヤレス — プログラム転送もデバッグコンソールもすべて Bluetooth LE 経由で動作し、ケーブルは不要です
- 組み込みに Ruby を — マイコン向け軽量 Ruby VM である mruby/c を使い、高い生産性と可読性で開発できます
- すべての人に — 組み込みソフトウェアエンジニアだけでなく、システム設計者・メカ設計者・ホビイスト・学生・エンドユーザーが自分のデバイスをカスタマイズできる「DIY できる価値」を提供します
目次
OpenBlink エコシステム
OpenBlink は連携する複数のリポジトリで構成されています:
- openblink — コアファームウェア(本リポジトリ)
- openblink-vscode-extension — Ruby コード編集と BLE 経由のワイヤレス Blink を行う VSCode 拡張機能
- openblink-webide — ブラウザベースの Web IDE
思想とゴール
OpenBlink は、組み込みプログラミングはすべての人に開かれるべきであるという信念に基づいています。専門のソフトウェアエンジニアだけのものではありません。
プログラマブルな世界
マイコンを搭載した組み込みデバイスは、家電やウェアラブル機器から産業機器・車両に至るまで、物理世界のあらゆる場所に遍在しており、現実世界の振る舞いに直接影響を与えています。しかし、これらのデバイス上で動作するファームウェアは従来メーカーの専有領域であり、エンドユーザーがそれを変更する手段はありませんでした。
OpenBlink はこの現状に挑みます。OpenBlink 対応デバイスでは、エンドユーザー自身がファームウェアの一部を安全かつワイヤレスに書き換えることができ、日常の組み込みデバイスがプログラマブルになる未来を切り拓きます。私たちの目標は、この真にプログラマブルな世界のビジョンを実現することです。
そして書き換えは高速です。瞬きするほどの時間しかかかりません — これが "Blink" という名前の由来です。
Build & Blink
自分の手で何かを Build(つくる)。それを Blink(瞬時に現実にする)。
Build & Blink は DIY の精神を体現しています — 自分で何かをつくり、それが目の前の実機で動き出す、そのシンプルな喜びです。プロのエンジニアである必要も、メーカーに許可を求める必要もありません。アイデアがあれば、自分のコードで、自分のやり方で、今すぐ試せます。
そしてこれはおもちゃではありません。同じ Build & Blink のワークフローがプロフェッショナルな開発にもそのままスケールします。エンジニアはこれを使って実製品のチューニング、出荷検査、量産ファームウェアの反復改善を行います — すべて同じツールで、同じ即時フィードバックで。OpenBlink は、最初の実験から出荷製品まで、その力をあなたの手に届けるために存在します。
思考速度のプロトタイピング
Ruby コードを編集して保存すると、動作中のデバイスに 0.1 秒以内で変更が反映されます。マイコンは再起動しません。対象タスクだけがリロードされ、BLE 接続やデバッグコンソールを含む他のすべてはそのまま動作し続けます。この緊密なフィードバックループにより、思考速度でイテレーションできます。
従来のデバイスカスタマイズ手法は、ファームウェア開発者が事前に定義した設定パラメータに依存しています。これにはジレンマがあります:設定項目が少なすぎるとユーザーのニーズを表現できず、多すぎるとインターフェースが複雑になり使いこなせません。さらに悪いことに、どんなに周到に設計されたオプションの組み合わせでも、すべてのユースケースを予測することはできません。
OpenBlink は、Ruby をデバイス動作のためのドメイン固有言語として扱うことで、この問題を根本的に回避します。固定メニューから選ぶのではなく、コードを書きます — つまりロジックそのものを書き換えることができます:ステートマシンの置き換え、制御アルゴリズムの再設計、デバイスの入力への応答方法の完全な見直し、すべてが一回の保存で可能です。この表現力こそが、OpenBlink を従来のパラメータ調整アプローチとは一線を画すものにしています。
なぜ Ruby なのか? Ruby はプログラマを幸せにするためにゼロから設計されました — その構文は自然言語のように読め、柔軟な文法(省略可能な括弧、ブロック、キーワード引数)により、クリーンで自己文書化されたドメイン固有コードを書くのに最適な言語のひとつです。つまり、組み込み開発に触れたことがない人でも LED.set(part: :led1, state: true) を読めば何をしているか理解できます。同時に、mruby/c — マイコン向けに設計された軽量 Ruby VM — により、わずか 15 KB のヒープメモリしかないデバイス上でも Ruby を実行でき、mruby コンパイラが生成するコンパクトなバイトコードは BLE の1回の転送に収まります。Ruby は OpenBlink に人間にとっての親しみやすさとマイコンへの適合性という稀有な組み合わせをもたらしています。
階層型タスクアーキテクチャ
OpenBlink のファームウェアは、組み込みソフトウェアを3つの層に分離します:
| 層 | 言語 | ワイヤレス書き換え |
|---|---|---|
| クリティカルタスク(ドライバ、BLE スタック、RTOS) | C | 不可 |
| UX タスク(デバイスの振る舞い、LED パターン) | Ruby | 可能 |
| DIY タスク(エンドユーザープログラム) | Ruby | 可能 |
Ruby 層のみが mruby/c VM 上で実行されます。C 層は Blink 中も変更されないため、システムの安定性とワイヤレス接続が維持されます。
すべての人に
OpenBlink は、組み込みソフトウェアエンジニアだけでなく、システム設計者、メカ設計者、ホビイスト、学生、エンドユーザーが実デバイスの振る舞いを変更できるように設計されています。
エンジニア・設計者向け:
- センサ閾値、制御シーケンス、LED フィードバックパターンを稼働中の製品上でチューニング — リビルド/フラッシュ書き込み/リブートのサイクル不要
- 出荷検査プログラムを量産ファームウェアと並行して実行でき、出荷コードベースに検査ロジックを組み込む必要がない
- メカ設計者がアセンブリ状態の実機上でモータタイミングやハプティクスフィードバックを直接調整でき、ソフトウェアチームとの往復が不要に
- 完璧な感性チューニングの実現 — 従来の開発では制御パラメータの追い込みに長いイテレーションサイクルが必要でしたが、OpenBlink ではデバイスがあらゆる調整を即座に反映するため、エンジニアは感覚と直感でチューニングし、結果が完璧になるまで追い込むことができます
- 画一的な製品からの脱却 — 従来の量産は統計的平均(例:3σ 範囲)をターゲットにしていますが、OpenBlink によりデバイスの振る舞いを個々のユーザーに合わせることが現実的になり、全員を同じ型にはめるのではなく一人ひとりに寄り添う、真にパーソナライズされた製品への道が開かれます
ホビイスト・学生向け:
- Ruby で組み込みプログラミングを即座に視覚的フィードバックとともに学べる — 1行変更して保存すれば、LED パターンがすぐに変わる
- I2C センサやアクチュエータをインタラクティブに試せる — C コードの再コンパイルなしにコマンドシーケンスを変えながら実験できる
- クリエイティブなプロジェクトを作って共有できる — ワイヤレス接続なので、ウェアラブルを装着したままプログラミングできる
- 実機でバイブコーディング — OpenBlink と AI コーディングアシスタントを組み合わせ、自然言語でやりたいことを伝えると、AI が Ruby コードを書き、保存すればデバイスが動作します。即時フィードバックループにより、シミュレータではなく物理デバイス上で AI とリアルタイムにイテレーションできます
エンドユーザー向け(「DIY できる価値」):
- 自分が所有するデバイスの振る舞いをカスタマイズ — ショートカットの個人設定、ルーティンの自動化、製品を自分のニーズに合わせた調整が可能
- 商業的に製造されたデバイス上で自作プログラムを実行し、完成品を自分だけのプラットフォームに変える
権限レベルに応じた API 制限により、オープンさと安定性が共存します:デバイスは各信頼レベルに適したメソッドのみを公開するため、メーカーは安心して製品をユーザープログラミングに開放できます。
教育から製品まで
ひとつのエコシステムが学習 → ホビー → 製品をカバーします。初めて LED を点滅させるときも、製品を出荷するときも、同じツールチェーン、同じ言語、同じワークフローが使えます。
Happy Hacking
OpenBlink は実機でハッキングする喜びを大切にしています。あらゆる設計判断がこの目標に奉仕します:
- 致命的なミスが起きない — バグのある Ruby プログラムでデバイスが文鎮化することはありません。C レベルのファームウェアと BLE スタックは動作し続けるため、いつでも修正を送信できます。この安全ネットが大胆な実験と挑戦を促します — OpenBlink はやってみて学ぶ人のために作られています。
- 即時フィードバック — 変更は 0.1 秒以内に反映され、フローを途切れさせない緊密な編集・テストループを維持します。
- 再起動なし — マイコンは動作し続けるため、ワイヤレスデバッグコンソールのセッションが中断されることはありません。
- 完全ワイヤレス — ウェアラブルを装着したまま、あるいは手の届きにくい場所に設置されたセンサに対しても、ケーブルに縛られずに開発できます。
これらの特徴が合わさり、Build & Blink するすべての人にハッピーハッキング体験を生み出します。
はじめに
前提条件
OpenBlink をビルドする前に、以下の開発環境をセットアップしてください:
- nRF Connect SDK v3.3.0 — 公式インストールガイド を参照
- nRF Connect SDK ツールチェーン v3.3.0
- west(nRF Connect SDK と一緒にインストールされます)
- Ruby(mruby/cのautogenファイル生成に必要)
リポジトリのクローン
$ git clone https://github.com/OpenBlink/openblink.git
$ cd openblink
$ git submodule update --init --recursive
ビルド
お使いのハードウェアに合わせてボードターゲットを選択してください:
# nRF54L15-DK
$ west build -b nrf54l15dk/nrf54l15/cpuapp --sysbuild
# nRF52840-DK
$ west build -b nrf52840dk/nrf52840 --sysbuild
書き込み
$ west flash
書き込みが完了すると、デバイスは OpenBlink という名前で BLE アドバタイズを開始します。VSCode 拡張機能 または Web IDE から接続して Blink を始めましょう。
検証済みハードウェア
以下のハードウェアプラットフォームが OpenBlink でテスト済みです:
- Nordic nRF54L15-DK (Board target:
nrf54l15dk/nrf54l15/cpuapp) - Nordic nRF52840-DK (Board target:
nrf52840dk/nrf52840)
開発環境バージョン
- nRF Connect SDK toolchain v3.3.0
- nRF Connect SDK v3.3.0
ドキュメント
- mruby API 仕様 — OpenBlink デバイス上で利用可能な Ruby クラスとメソッド
- Bluetooth 通信仕様 — BLE サービス、キャラクタリスティック、Blink プロトコルの詳細
- DeepWiki — コードベースを理解するための AI 駆動の包括的ドキュメント
- doc/ — ドキュメントディレクトリ全体(翻訳版を含む)
コントリビューション
コントリビューションを歓迎します!GitHub の Issues や Pull Requests からお気軽にどうぞ。バグ報告の際は、ボードターゲット、SDK バージョン、再現手順をご記入ください。
ライセンス
OpenBlink は BSD 3-Clause License の下で公開されています。全文は LICENSE をご覧ください。
謝辞
- ViXion Blink — OpenBlink は ViXion Blink からフォークされています
- mruby/c — マイコン向け軽量 Ruby VM
- Zephyr RTOS および nRF Connect SDK — 基盤となる RTOS と SDK