世界を動かす技術を、日本語で。

Koboがアプリを実行できるようになりました

概要

Cobalt はKobo電子書籍リーダー向けの オープンソースアプリケーションプラットフォーム。 一度USBでインストールすれば、以降のアプリ管理はすべて Wi-Fi経由 で完結。 各アプリは 独立したプロセス で動作し、セキュリティも確保。 Rust SDK による簡単なアプリ開発と、署名済みApp Storeを提供。 Kobo Clara BW のみ公式サポート、他機種は要検証。

Cobaltの特徴

  • Kobo端末でアプリが動作 する新しいプラットフォーム
  • USB経由で一度インストール 後、アプリの追加・更新・削除は全て端末上でWi-Fi経由
  • アプリは独立したARMバイナリ として、特権なしで実行
  • 再起動で標準のKoboリーダーに戻る 安全設計
  • Rakuten Kobo非公式プロジェクト であり、独立開発

主なアプリ・機能

  • Launcher :インストール済みアプリの起動とKoboリーダーへの戻り口
  • App Store :Wi-Fi経由で署名済みアプリのインストール・更新・削除
  • arXiv :最新のarXiv論文の閲覧、HTMLレンダリング対応
  • Sudoku :Storeからのみ入手可能、USBパッケージに未収録の配信検証用
  • Morse :フロントライトを使ったモールス信号送信
  • Gutenbird :Project Gutenberg等OPDSライブラリの読書
  • Hacker News :スレッド付きで最新記事閲覧
  • Feeds :任意サイトのRSSフィード記事表示
  • Daily Brief :他アプリ利用中に当日のニュースをバックグラウンド収集
  • Sidekick :コーディングエージェントからのリクエスト承認/拒否
  • Terminal :即時入力反映のシェル
  • Settings :接続・ハードウェア・プラットフォーム更新管理
  • その他 :Todoリスト、Tic-tac-toe、Magnet(ホールセンサー検出)等

開発環境・SDK

  • Rust製SDK でアプリ開発が容易
    • 1ファイルからKoboApp実装、画面宣言的記述
    • レイアウトやE-inkリフレッシュ計画、ナビゲーション、ライフサイクル管理はランタイムが担当
  • 端末リソースへのアクセスは明示的許可制
    • ネットワーク、ストレージ、オーディオ、フロントライト、Wi-Fiはケーパビリティ制御
    • 拒否時はアプリ側で値として受け取る設計
  • シミュレータ :ブラウザ・ランタイムで動作検証可能
  • 署名済みARMv7バイナリ として配布、アプリ単位で独立リリース

App Storeとセキュリティ

  • App StoreはGitHubリリースの署名済みカタログ を参照
  • 各パッケージはARMバイナリ+署名済みマニフェストを含む
  • 実行前にカタログ・パッケージ・マニフェスト・バイナリ全てを検証
  • アプリリリースはプラットフォームリリースと独立、PRマージで即反映
  • Cobalt本体のアップデートもWi-Fi経由、USBは初回のみ必要
  • インストール・カタログ更新は リカバリーセーフ 設計

インストール方法(Kobo Clara BW)

  • Kobo Clara BW(N365)を 充電しUSB接続
  • 他モデルは未対応、誤判定なし
  • セットアップ手順:
    • 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経由 で完結

アプリ開発・コントリビュート

  • アプリ貢献は通常のPull Request で受付
    • apps/<app-id>/にワークスペースパッケージ追加、apps/catalog.jsonに登録
    • ユニット・レイアウトテスト追加、シミュレータで検証
    • 実機(Clara BW)で動作確認し、gifや写真をPRに添付
    • マージ後は署名・Store反映(プラットフォームリリース不要)
  • 他機種対応も歓迎、事前にIssueで相談
  • 詳細はdocs/CONTRIBUTING_APPS.md参照

安全性・注意点

  • Koboのブートチェーンは変更せず 安全性を確保
  • ハード・ファームウェア一致時のみ書き込み許可
  • 再起動で純正リーダーに戻る
  • 初回インストールのみユーザーストレージパーティションを変更
  • 無保証提供、Clara BW以外のモデルは未検証
  • Rakuten Koboとは 無関係な独立プロジェクト

まとめ

  • Kobo Clara BW で安全にアプリを動作可能にする Cobalt
  • Wi-Fi経由でアプリ管理、Rust製SDKで開発容易
  • 独立性・セキュリティ・拡張性 を重視した設計
  • 技術者・開発者・電子書籍好きに 新たな可能性

Hackerたちの意見

すごい!めっちゃいいね。Clara Colour用の代替OSを探してたんだけど、これめっちゃ良さそう。アプリを作れるってことは、やっとハイライトや引用をレビューしたり、簡単に検索できる方法を追加できるってことだね。追記:やばい、BWノート見ちゃった。Cobaltにブロックされるっぽいね、Clara Colourは…

最近Elips 2Eのサポートがマージされたみたいだね。早くカラーもテストされるといいな。

もうそれできるよ。NickelMenuを調べてみて。

すごくクールで、確かに役立つね。私はターゲットじゃないけど、私の電子書籍リーダーには同期できる本だけあればいいんだ。それだけで十分。私の図書室で平穏な時間を過ごしたいから、Claudeに気を散らされたくないんだよね。

Kindle(や他の電子書籍リーダー)の本質って、気を散らさずに本が読めることじゃないの?

ある人たちは、einkスクリーン、そこそこパワーのあるアプリボード、そして適度なバッテリーとストレージを含むコンパクトなパッケージを求めてるんだ。ある人にとっては、完璧な薄型クライアントかもしれないね。

私も電子書籍リーダーにそれを求めてる。だけど、140ドルのe-inkタブレットを汎用ツールにできるのは本当にすごいね。

デバイスがLinuxを動かせると分かると、ターミナルを使いたがる熱心な人たちがいるよね。トースターにSSHする必要があるのかは分からないけど、できるからってやるんだよね。私は、ただ信頼できるトースターが欲しいだけなんだけど。

個人的な経験から言うと、ちょっと技術的な本の場合、もっと情報を得るためにノートパソコンやスマホに切り替える必要があって、結局時間がかかっちゃうことがあるよね。

古いKoboを使って、父のために低注意力のテレビリモコンにするアイデアでChatGPTとデザインフェーズを経たんだ。コンピュータのメディアサーバーと連携して、従来のリモコンよりも読みやすく、彼のスマホにアプリが入ってすぐにスマホに気を取られないようにするつもりだった。結局、得られるメリットよりも手間がかかることが分かった。特に、これらのメディアサーバープログラムはHDMI経由で従来のリモコンと連携できるし、スマートテレビのように選択UIを画面に表示できるからね。まあ、結論としては「電子書籍リーダーを複雑にする必要はないよ。電子書籍リーダーじゃない選択肢もあるから。」

本だけのために使いたいなら、KOReaderみたいなものをインストールするメリットがあるよ(デフォルトよりずっといい電子書籍リーダーだし)。これでCalibreと同期できるし。何年も前、地元のグッドウィルに行って、すごく安い古いKoboを見つけて誰かに寄付するのが趣味だったんだ。今は、シンプルなアプリを動かすためにeinkディスプレイのためだけに古いKoboを手に入れようかなって思ってる。普通のKoboはそのまま電子書籍リーダーとして使い続けるつもり。

いや、ポイントはe-inkスクリーンなんだよね。Kindleは最初のバージョンからウェブブラウザがあったし、みんなそれで本を読んでも全然問題なかったよ。

Hacker Newsで議論の続きを見る