[MIERUNE] rubyのChrome拡張機能の開発について
by
a774 nn
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
RubyでChrome拡張開発 澤井優真 1
Slide 2
Slide 2 text
目次 •自己紹介 •Chrome拡張機能がどのように動くか •Chrome拡張機能の説明 2
Slide 3
Slide 3 text
自己紹介 •北海道情報大学 3年 twitter: @3yUma_rb github: @aaaa777 興味のある分野: ネットワーク、セキュリティ 3 my avatar
Slide 4
Slide 4 text
ruby.wasmとは • WebAssembly上で実行できるRuby • ブラウザ上で実行できる 例: ruby-wasm-wasi/example/lucky.html 4 ↓ 1. Click! ↑ 2. your luck!
Slide 5
Slide 5 text
Chrome拡張機能とは • ブラウザを便利にするための機能 • 例: Google翻訳 • ドラッグ部分を翻訳してくれる • アイコンクリックで翻訳ボックス表示 • JavaScriptとHTMLで作られる • インストールが簡単 • ほとんどのブラウザが対応 6
Slide 6
Slide 6 text
Chrome拡張機能の構成ファイル • Manifest.json • Chrome拡張の設定ファイル • Content Script • 特定のページでJSを読み込む機能 • Popup • ロゴクリック時のHTML表示機能 • Background(Service Worker) • バックグラウンドJS実行機能 and more… 7 拡張機能サンプル
Slide 7
Slide 7 text
どうすればRubyで動く? • manifest.jsonがそれぞれのイベントごとにファイルを読み込む • JS部分をruby.wasmで実装してみよう! 8
Slide 8
Slide 8 text
デモ: ruby.wasmのChrome拡張 demo extension on github: aaaa777/ruby-chrome-extension- demo 9
Slide 9
Slide 9 text
11 https://drive.google.com/file/d/1xb69MJu7W2yA MAgOn0A6pMEv6E7Cqr- c/view?usp=share_link デモ映像はこちら
Slide 10
Slide 10 text
ruby.wasmを利用した拡張機能の実装 • manifest.json - content-script.umd.jsを読み込む - これがruby.wasmのエントリー • content-script.umd.js - rubyVMの初期化 - Fetch API越しにコード実行 • content-script.rb - DOM操作とリスナの登録 12
Slide 11
Slide 11 text
何を学んだか • Rubyで書きたい? • Rubyで書く必要がない • なぜJSを書いているのだ • 楽しくない • JSが嫌いだ 素のJSで書いたほうがマシ 13 ↑ 面白くない!
Slide 12
Slide 12 text
どうすれば良くなる? 14
Slide 13
Slide 13 text
A. フレームワークを作ろう! • JSとruby.wasm実行 ファイルをまとめる • ロジック部分をapp.rb で記述 フレームワーク部分 15
Slide 14
Slide 14 text
フレームワークの名前 unloosen (ʌ̀nlúːsən) (発音揺れ防止) 16
Slide 15
Slide 15 text
デモ: クイックスタート 17
Slide 16
Slide 16 text
19 https://drive.google.com/file/d/1zHFjmMuZcwfHj I3X5nyYH8cnKJDFkDC1/view?usp=sharing デモ映像はこちら
Slide 17
Slide 17 text
デモ解説 • popup • element取得 • addEventListener('click') 20
Slide 18
Slide 18 text
コードの比較 21 JS ruby.wasm(unloosen) ruby.wasm
Slide 19
Slide 19 text
Try Unloosen! available on github/npm npm: unloosen-ruby-loader github: aaaa777/unloosen 22 bug reports, fork, requests are welcome!