[MIERUNE] rubyのChrome拡張機能の開発について
by
a774 nn
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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!