オープンソース
Koboでアプリが実行できるようになりました
Kobo can run apps now (bandarlabs.github.io)
要約
この記事は、Kobo電子書籍リーダー向けのオープンソースアプリケーションプラットフォーム「Cobalt」を紹介しています。Cobaltは、ランチャー、署名付きアプリストア、Rust SDK、および各アプリを分離された特権のないプロセスで実行するランタイムを提供します。一度USB経由でインストールすれば、以降のアプリのインストール、アップデート、削除はWi-Fi経由でリーダー上で行えます。再起動すると、標準のKoboリーダーに戻ります。
全文翻訳
あなたのKoboでアプリが実行できるようになりました。Cobaltは、Kobo電子書籍リーダー向けのオープンソースアプリケーションプラットフォームです。ランチャー、署名付きアプリストア、Rust SDK、そして各アプリを分離された特権のないプロセスで実行するランタイムを備えています。一度USB経由でインストールすれば、それ以降のアプリはすべて、Wi-Fi経由でリーダー上でインストール、アップデート、削除できます。再起動すると、標準のKoboリーダーに戻ります。
インストール
ソースを読む
Kobo Clara BW上のランチャー。Rakuten Koboとは提携していません。
オンデバイスで3倍速で録画されました。ビデオでご覧ください。
Koboで実行中。
各アプリは、標準ハードウェア上で独自の特権のないプロセスとして実行される静的なARMバイナリです。アプリストアは、起動前に署名が検証された状態で、Wi-Fi経由でそれらをインストール、アップデート、削除します。
arXivの論文とコーディングエージェントが、パネル上で利用可能です。
これらはデバイスの写真であり、シミュレーターのキャプチャではありません。
arXivアプリは、2023年12月以降のすべての論文のHTMLレンダリングを読み取ります。抄録、セクション、数式、結果テーブルは、パネル用にページネーションされています。
ある論文のプレプリント、ページ8/54。
同じ論文からの結果テーブル。
数式表記と番号付きアルゴリズム。
Claude Codeからの質問を表示するSidekick、タップ可能な回答付き。
ローカルネットワーク経由でペアリングされたSidekick、次の質問を待っています。
アプリ
アプリ。
以下のすべてのスクリーンショットは、Kobo Clara BWからのキャプチャです。
プラットフォームとは独立してアプリのバージョンを管理します。残りはプラットフォームのインストールとともに出荷されます。
ランチャー
インストールされたアプリを開き、常にKoboリーダーへのルートを維持します。
アプリストア
Wi-Fi経由で署名付きアプリをインストール、アップデート、削除、再インストールします。
arXiv
主題の最新のプレプリントを閲覧し、パネル上で全文を読みます。
数独
ストア限定設計。インストールすることで、USBパッケージには含まれていなかったアプリの配信を証明します。
モールス信号
入力したメッセージをモールス信号でフロントライトに、パネル全体に1文字ずつ送信します。
オーディオブックスタジオ
オリジナルのオーディオブックを調査、執筆、ナレーション、再生します。
Gutenbird
Project Gutenberg、Standard Ebooks、Open Library、または独自のOPDSライブラリを読み取ります。
Hacker News
トップ、新着、質問、紹介記事を、完全なコメントスレッドとともに表示します。
フィード
サイトのフィードを発見し、サイトのレイアウトなしで記事を表示します。
デイリーブリーフ
別のアプリを使用中に、その日の記事をバックグラウンドで収集します。
AIコマンドセンター
質問をし、その回答をタッチフレンドリーな読み物に変えます。
サイドキック
キーボードから離れた場所で、コーディングエージェントからの要求を承認または拒否します。
ターミナル
入力が即座に送信されるキーを備えた、パネルネイティブのシェル。
コンポーネント
UIツールキットのコントロール、レイアウト、タイポグラフィ、状態をパネル上に表示します。
設定
接続性、ハードウェア、プラットフォームのアップデートを、ストアとは別に管理します。
ToDo
タッチ入力と完了アイテムの状態を備えた、永続的なリスト。
三目並べ
2プレイヤー、個々のセルの部分的なリフレッシュ。
マグネット
ベゼルの背後にあるホールセンサーを検出し、その変更を報告します。
SDK
アプリは1つのRustファイルです。KoboAppを実装し、画面を宣言的に記述すると、ランタイムがレイアウト、E-inkリフレッシュ計画、バックナビゲーション、ライフサイクルを処理します。
アプリはデバイスリソースを開きません。要求します。
ネットワーク、ストレージ、オーディオ、フロントライト、Wi-Fiは機能ごとに制限されており、拒否はアプリが処理できる値として返されます。
E-ink
テキスト、タイル、ダイアログ、キーボード、ページネーション、部分リフレッシュ計画。
シミュレーター
レイアウト診断を備えたブラウザおよびランタイムシミュレーター。
非同期処理
HTTPS、範囲ダウンロード、キャンセル可能なタスク、スケジュールされたウェイクアップ。
状態
アプリごとにキー付けされたアトミックストレージ。
出荷
署名付き静的ARMv7バイナリ。アプリのPRがマージされたときに公開されます。
```rust
kobo new my-app
cd my-app
kobo dev
```
SDKドキュメントを使用する
```rust
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);
}
```
ストア
起動前に検証される署名付きパッケージ。
ストアは、固定されたGitHubリリースから署名付きカタログを読み取ります。各パッケージには、1つのARM実行可能ファイルと署名付きの正規マニフェストが含まれています。ランタイムは、アプリが実行される前に、カタログ、パッケージ、インストール済みマニフェスト、バイナリを検証します。
アプリのリリースはプラットフォームのリリースとは独立しています。アプリのPRをマージすると、ARM用にビルドされ、署名され、カタログが更新されます。Cobaltのバージョンアップも再インストールも不要です。アプリはストアに表示されるだけです。
Cobaltプラットフォーム自体も、アプリカタログとは別のチャネルで、設定を通じてWi-Fi経由でアップデートされます。USBケーブルが必要なのは一度だけです。インストールとカタログのトランザクションはリカバリ可能であり、中断されたアップデートでもリーダーは以前のバージョンを保持します。
独自のアプリを公開する →
数独がWi-Fi経由で到着しています。
図1 CLARA BW N365
インストール
ソースからのインストール。
Kobo Clara BW (N365) を充電し、USB経由で接続します。他のモデルは拒否され、推測されません。
セットアップを実行します。
```bash
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を開きます。ストアを開きます。ここからのすべてはWi-Fi経由で到着します。完全なウォークスルー(リカバリ手順を含む)は、docs/INSTALL.mdにあります。
貢献
アプリを貢献する。
アプリの貢献は定期的なプルリクエストです。デバイスで動作し、PRで実行されていることが示されていれば、マージされて公開されます。
ビルドする。
アプリを apps/<app-id>/ の下のワークスペースパッケージとして追加し、 apps/catalog.json に登録します。
テストする。
単体テストとレイアウトテストを追加し、ブラウザとランタイムシミュレーターで実行します。
自分のデバイスで実行する。
シミュレーターだけでなく、実際のClara BWで。
実行中のGIFまたは写真を含むPRを開きます。レビューとマージが行われると、公開ワークフローが署名し、ストアに表示されます。プラットフォームのリリースは不要です。
別のKoboモデルをお持ちですか?ポートも歓迎です。まずIssueを開いて、デバイスプロファイルを合意できるようにしてください。詳細はdocs/CONTRIBUTING_APPS.mdにあります。
安全性
デバイスのサポートと安全性。
CobaltはKoboのブートチェーンを置き換えるものではありません。デバイスへの書き込みは、正確なハードウェアとファームウェアの一致に基づいてゲートされており、再起動すると標準のリーダーに戻ります。最初のインストールではユーザーのストレージパーティションのファイルが変更されますが、保証なしで提供されます。Clara BWプロファイルのみがハードウェアテスト済みです。レビューされ、ハードウェアテスト済みのプロファイルが利用可能になるまで、他のモデルにインストールしないでください。
Cobaltは独立したプロジェクトであり、Rakuten Koboとは提携していません。