
2026/08/22 1:25
Kobo でアプリを実行できるようになりました
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Cobalt は、Kobo eリーダー向けオープンソースのアプリケーションプラットフォームであり(公式に Kobo Clara BW でテスト済み)、これらのデバイスを多機能な計算端末に変換しつつハードウェアセキュリティを維持します。そのコア設計は、すべてのアプリを未特権プロセスとして分離し、起動前にデジタル署名を検証した静的 ARM バイナリを実行させることで実現しています。機密デバイスリソース(ネットワーク、ストレージ、オーディオ、フロントライト、Wi‑Fi)は機能ゲート付きであり、拒否は管理可能な値として返され、アプリが優雅に対応できるようにしています。このセキュリティアーキテクチャにより、ユーザーはプロプライエタリライセンスを必要とせずに多様なアプリケーション(arXiv リーダー(2023 年 12 月以降公開されたフルテキスト HTML をレンダリング)、ターミナルエミュレーター、スудоク、モールス信号、Gutenbird、Hacker News、Feeds、Daily Brief、Sidekick、Todo、Tic‑tac‑toe、Magnet など)をインストールできます。
開発は Rust SDK を通じて効率化されており、アプリは単一の
KoboApp Rust ファイルで定義でき、宣言的な画面はランタイムがレイアウト、e インクのリフレッシュ、ライフサイクル管理を担当します。署名された App Store はコアシステムと独立して配送され、新しいアプリは Wi‑Fi 経由でインストール・更新でき、デバイスの再起動やメイン OS の再インストールは不要です。セットアップには、充電済みの Kobo Clara BW(N365)を USB で接続する必要がありますが、その後すべてのインストール、更新、削除、プラットフォーム更新は Wi‑Fi 経由で行われます。リリースが独立しているため、アプリの更新もプラットフォーム再起動を必要とせず、署名されたパッケージは固定 GitHub リリースからの署名済みカタログを読み取ります。コントリビュートするには、Rust ワークスペースパッケージを構築し、ハードウェア上でテストし、写真または GIF を含めたプルリクエストを送付します。Clara BW プロフィールのみがハードウェアテスト済みであり、再起動するとデバイスは元に戻り(保証対象外)、Cobalt は楽天 Kobo と無関係であり、開発者および熱心な読者の双方にとってアクセス可能な代替手段を提供しています。本文
Cobalt: Kobo リーダー向けオープンソースアプリプラットフォーム
Kobo リーダー(Clara BW 等)でもアプリを実行できるようになりました。Cobaltは、非特権プロセスとして独立して動作させる機能を備えたオープンソースプラットフォームです。
📦 コア機能
- ランチャー: インストール済みアプリへのアクセスを提供し、Kobo リーダーへのルートを維持します。
- 署名されたアプリストア: Wi-Fi を経由してアプリの取り付け、更新、削除を管理します。
- Rust SDK: シンプルなコードでアプリ開発が可能です。
- ランタイム: 各アプリを非特権プロセスとして独立動作させます。
- 一時的インストール: USB接続は一度のみです。以降のインストールや更新はすべてWi-Fi経由で行えます。
- 完全復元: 端末を再起動すると、元の標準的な Kobo リーダーの状態に戻ります。
注意: 本プラットフォームと楽天 Kobo は無関係です。
📱 アプリ一覧
以下のスクリーンショットはすべて Kobo Clara BW で撮影された実際の画面です(シミュレーションではありません)。
- arXiv: 2023 年 12 月以来の論文 HTML レンダリング(抄録、数式、図表など)をパネル上で読み取れます。
- Gutenbird: Project Gutenberg や Open Library など、OPDS ライブラリを表示します。
- Hacker News: Top, New, Ask, Show のストーリーを完全なコメントスレッド付きで表示します。
- Feeds: サイト固有のレイアウトなしにフィード記事を表示します。
- Daily Brief: アプリ使用中でもバックグラウンドで当日ニュースを収集します。
- Sidekick: 離れていても、コーディングエージェントからのリクエストを受け付ける・拒否できます。
- Terminal: パネルネイティブなシェルを搭載し、即時入力をサポートします。
- Todo: タッチ入力対応の永続的なタスクリストです。
- Magnet: ベゼル裏面のホールセンサーの変化を検知します。
- Components: UI ツールやタイポグラフィの状態をパネル上で表示します。
特定のカテゴリと特徴
| アプリ名 | 特徴・詳細 |
|---|---|
| ランチャー | インストール済みアプリを開くエントリーポイントです。 |
| ストア | 署名されたアプリの管理(追加/更新/削除)を行います。 |
| Sandou (Sudoku) | Store 専用。USB パッケージには含まれないアプリです。 |
| Morse | 前面ライトを使い、パネル全体を横切るモールス信号を送信します。 |
| Tic-tac-toe | 2 人対戦型ゲームで、個別セルの部分的刷新を実現します。 |
| Settings | 接続性やハードウェア設定を管理。ストアとは独立して扱われます。 |
🛠️ SDK (開発環境)
1 つの Rust ファイルだけでアプリを作成可能です。**
KoboApp**を拡張するだけで、ランタイムがレイアウト、インクリフレッシュ計画、ナビゲーション、ライフサイクルを自動管理します。
特徴
- 静的な ARM バイナリ: すべてのアプリは署名された独自の実行ファイルです。
- 機能ゲート化: ネットワーク、ストレージ、オーディオなどは「必要であれば」のみ要求されます。拒否された場合もアプリ側で対応可能です。
- 自動署名・配布: アプリの PR がマージされると同時に署名され、カタログが更新されます(再インストール不要)。
基本コマンド
kobo new my-app cd my-app kobo dev # SDK ドキュメントを読む
コード例:Hello World
以下のコードは、タップカウントを表示するシンプルなアプリです。
use kobo_sdk::{ ActionId, Context, KoboApp, ScreenBuilder, }; #[derive(Default)] struct Hello { taps: u32 } impl KoboApp for Hello { fn on_start(&mut self, ctx: &mut Context) { self.show(ctx); } fn on_action( &mut self, ctx: &mut Context, a: ActionId, ) { if a == kobo_sdk::action_id("tap") { self.taps += 1; } self.show(ctx); } } impl Hello { fn show(&self, ctx: &mut Context) { let screen = ScreenBuilder::new("hello") .top_bar("Hello") .heading(format!("{} taps", self.taps)) .button("tap", "Tap me") .build(); ctx.set_screen(screen); } } fn main() { let app = Hello::default(); let _ = kobo_sdk::run("hello", app); }
提供されるコンポーネント:
- E-Ink UI: テキスト、タイル、ダイアログ、キーボード、ページネーション
- 部分的リフレッシュ計画のサポート
とレイアウト診断付きシミュレーターSimulatorsBrowser- 非同期作業:HTTPS、範囲指定ダウンロード、取り消し可能タスク
🛒 ストアとインストール
スストア仕組み
- 起動前に署名が厳密に検証されます。
- パッケージには 1 つの ARM 実行ファイルと署名されたマニフェストが含まれます。
- アプリリリースはプラットフォームリリースとは独立しています(Cobalt 本体更新も不要です)。
- USB ケーブルはインストール直後のみ必要で、その後は Wi-Fi で完結します。
- インストールプロセスは「復元安全」。中断しても以前のバージョンが残ります。
インストール手順 (ソースから)
注意: この手順は Kobo Clara BW (N365) 専用です。他のモデルは認識されず、拒否されます。
- 接続と充電
- Kobo Clara BW を充電し、USB で PC に接続します。
- セットアップ実行
git clone https://github.com/BandarLabs/Cobalt.git cd Cobalt rustup target add armv7-unknown-linux-musleabihf cargo run -p kobo-cli -- setup - 起動と初期設定
- リーダーを再起動します。
- Kobo メニューから「Cobalt」を開き、次に「Store」へ移動します。
- 完了
- 以降はすべて Wi-Fi を経由してデータを取得・更新します。
完全な手順書は
を参照してください。docs/INSTALL.md
🤝 貢献方法
アプリの追加や機能向上にご協力ください。マージされた PR は自動的に署名され、ストアに公開されます。
- ビルド: アプリを
に追加し、apps/<app-id>/
に登録します。apps/catalog.json - テスト: 単体テストとレイアウトテストを追加し、ブラウザまたはランタイムシミュレータで動作確認を行います。
- 実機検証: シミュレーターだけでなく、実際の Clara BW で動作することを確認してください。
- PR 提出: GIF や実行中のスクリーンショットを含んだ PR を提出します。レビュー後、署名ワークフローが自動実行されます。
他モデルへの対応: 他の Kobo モデルでの動作確認も歓迎です。まずは ISSUE でデバイスプロファイルの合意を得てから進めてください(詳細:
)。docs/CONTRIBUTING_APPS.md
⚠️ セーフティと保証
- ブートチェーン置換なし: Cobalt は Kobo のブートチェーンを置き替えるものではありません。
- 完全なハードウェア一致: 端末への書き込みは、ハードウェアとファームウェアが正確に一致していることが条件です。
- 自動復元: 再起動すると標準的なリーダー状態に戻ります。初回インストール時にユーザーストレージパーティションのファイルを改変するため、保証は限りません。
- テスト済みモデル: ハードウェアテストは現在 Clara BW のみ です。他のモデルへのインストールはお控えください。