generated at
RubyKaigi 2023: Build Your Own SQLite3
SQLite3
Public domain
Single-file db

Embedded SQLite3 in
カーナビ
iOS Androidアプリ
Webアプリ
マスターデータ
ブラウザー
Google Chrome
wasm
マイコン

Target device and OS
RP2040
Bara metal
developed by hasumikin
monsterlab

PicoRuby
マイコン上で動くシェル環境
irbを起動


SQLite3をソースからビルドする
オプションが異常に多い
Linux, Windowsではない場合、SQLITE_OS_OTHERというオプションの明示的な指定が必要
SQLITE_OS_OTHERを指定した場合、sqlite3_os_initを呼んであげる
sqlite3_open_v2という関数が呼ばれる
Cのopenが呼ばれる
Linuxの場合はシステムコール
そうではない場合はSQLite3においてVFSと呼ばれるものを実装してあげる必要がある
VFSのstructたち
sqlite3_mem_methods
sqlite3_vfs
sqlite3_io_methods
sqlite3_file

SQLite3のCのコードの中で(実行時に)PicoRuby? mruby?のメソッドが呼ばれている
prb_file_new
prb_file_read
prb_funcall

SQLite3.vfs_methods = File::VFS.vfs_methods

SQLite3のAPIをいじくりまわしてRubyを呼ぶようにしているyuiseki


自作キーボード
RP2040がベースで、SDカードが付いている
PicoRubyで動いている
SQLite3でキーロガーを作っている
キーアサインの最適化に使える
左右分割キーボード
最も良く押されているキーを左右に等しく配置すると速く入力できるはず
hjklが最も良く押されている
vimmerだから…