rabbit-slide-Piro-presentation-vanilla-js-library-topics 2024.5.24.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9982f56f316f7a4998e095b4951f057dadfe17162265c8d06b098e188dc31ab3
4
+ data.tar.gz: c781139d3b1e60add64654ae1ca2f9ee5ede7ab33ecf7f1c840f5a3f72650d76
5
+ SHA512:
6
+ metadata.gz: 341f40a3e3df2f4591aee60d32783275bac06d16f885a4991b00e7c40b15e1daf683185c335cb948b97b48e81e9f62419c0587a30881a8f6eef6c0de5ee7cc98
7
+ data.tar.gz: 7c92a6f0df619dfeb6857b65a48ce6dabe14c122f190a8b463a65b38ff5acd2f5a654e887ebc929d18e06d8c50e31450c02b4af63f1ac9f6d4475f69734618ec
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ scenario.rab
data/LICENSE ADDED
@@ -0,0 +1,11 @@
1
+ CC BY-SA 4.0 International
2
+
3
+ Copyright 2015-2016 (C) 株式会社クリアコード
4
+ Copyright 2016-2017 (C) Kouhei Sutou <kou@clear-code.com>
5
+ Copyright 2016 (C) Yasunori Goto <ygotopersonal@gmail.com>
6
+ Copyright 2016 (C) TADA, Tadashi <t@tdtds.jp>
7
+ Copyright 2017 (C) Kimiaki Kuno <knokmki612@gmail.com>
8
+ Copyright 2017 (C) Yoichi Nakayama <yoichi.nakayama@gmail.com>
9
+ Copyright 2017 (C) Toshihiko Osawa <tshkh8@gmail.com>
10
+
11
+ http://creativecommons.org/licenses/by-sa/4.0/
data/README.md ADDED
@@ -0,0 +1,23 @@
1
+ # バニラJS開発ライブラリー事情
2
+
3
+ [Nextbeat Tech Bar:第一回ライブラリ開発について考える会](https://nextbeat.connpass.com/event/312789/)での発表資料です。
4
+
5
+ ## ライセンス
6
+
7
+ CC BY-SA 4.0
8
+
9
+ 詳細は[LICENSE](./LICENSE)を確認してください。
10
+
11
+ ## スライド
12
+
13
+ ### 表示
14
+
15
+ ```console
16
+ % rake
17
+ ```
18
+
19
+ ### 公開
20
+
21
+ ```console
22
+ % rake publish
23
+ ```
data/Rakefile ADDED
@@ -0,0 +1,28 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ Dir.glob("../{LICENSE,images/**/*.*}") do |shared_file|
6
+ relative_path = shared_file.gsub(/\A\.\.\//, "")
7
+ file relative_path => shared_file do
8
+ mkdir_p(File.dirname(relative_path))
9
+ cp(shared_file, relative_path)
10
+ end
11
+ end
12
+
13
+ spec = nil
14
+ Rabbit::Task::Slide.new do |task|
15
+ spec = task.spec
16
+ task.spec.files += ["LICENSE"]
17
+ task.spec.files += Dir.glob("../images/**/*.*").collect do |path|
18
+ path.gsub(/\A\.\.\//, "")
19
+ end
20
+ # task.spec.files -= Dir.glob("private/**/*.*")
21
+ task.spec.add_runtime_dependency("rabbit-theme-clear-code")
22
+ end
23
+
24
+ desc "Tag #{spec.version}"
25
+ task :tag do
26
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
27
+ sh("git", "push", "--tags")
28
+ end
data/config.yaml ADDED
@@ -0,0 +1,24 @@
1
+ ---
2
+ id: presentation-vanilla-js-library-topics
3
+ base_name: scenario
4
+ tags:
5
+ - rabbit
6
+ - oss_gate
7
+ - workshop
8
+ presentation_date: 2024-05-24
9
+ version: 2024.5.24.0
10
+ licenses:
11
+ - CC-BY-SA-4.0
12
+ slideshare_id:
13
+ speaker_deck_id:
14
+ ustream_id:
15
+ vimeo_id:
16
+ youtube_id:
17
+ source_code_uri: https://gitlab.com/clear-code/presentation-vanilla-js-library-topics
18
+ author:
19
+ markup_language: :rd
20
+ name: YUKI Hiroshi
21
+ email: yuki@clear-code.com
22
+ rubygems_user: Piro
23
+ slideshare_user:
24
+ speaker_deck_user:
Binary file
Binary file
data/images/tst.png ADDED
Binary file
data/scenario.rab ADDED
@@ -0,0 +1,131 @@
1
+ = バニラJS開発\nライブラリー事情
2
+
3
+ : theme
4
+ clear-code
5
+
6
+ : author
7
+ 結城洋志 aka Piro
8
+
9
+ : institution
10
+ 株式会社クリアコード
11
+
12
+ : allotted_time
13
+ 5m
14
+
15
+ = 活動1:シェルコマンド解説漫画
16
+
17
+ # image
18
+ # src = ./images/systemadmingirl.jpg
19
+ # relative_width = 40
20
+
21
+ == プロパティー
22
+
23
+ : enable-title-on-image
24
+ false
25
+
26
+ = 活動2:Firefoxアドオン\nTree Style Tabなど
27
+
28
+ # image
29
+ # src = ./images/tst.png
30
+ # relative_width = 70
31
+
32
+ == プロパティー
33
+
34
+ : enable-title-on-image
35
+ false
36
+
37
+ = Firefox\nアドオンを\nバニラJSで
38
+
39
+ = なんでバニラJS?
40
+
41
+ (('wait'))昔のFirefoxアドオンは\n
42
+ 「動的なパッチ」だった
43
+
44
+ * (('wait'))Firefox本体のスクリプトの\n
45
+ 名前空間に変数や関数を注入
46
+ * (('wait'))静的解析しにくい
47
+ * (('wait'))下手にライブラリーを使うと\n
48
+ 名前空間汚染でFirefoxが壊れる
49
+
50
+ = なぜライブラリー自作?
51
+
52
+ * (('wait'))ニッチすぎて既存の物が無い
53
+ * Firefoxの内部実装に強く依存
54
+ * 設定読み書き, UIの多言語対応, etc.
55
+ * (('wait'))既製UIライブラリーは\n
56
+ 自我が強すぎる
57
+ * メニューUIなど
58
+ * FirefoxのUI=ネイティブUIに\n
59
+ 馴染むUIウィジェットが欲しい
60
+
61
+ = ライブラリーができるまでの流れ
62
+
63
+ * (('wait'))複数アドオンで共通して\n
64
+ 実現したい機能が出てくる
65
+ * (('wait'))→関数やクラスを\n
66
+  単体のファイルに切り出す
67
+ * (('wait'))→README, LICENSEを付けて\n
68
+  GitHubで公開
69
+
70
+ = できるもの
71
+
72
+ * (('wait'))数十~数百行程度
73
+ * (('wait'))他のライブラリーに非依存
74
+ * Firefox専用だからpolyfillも不要
75
+ * (('wait'))パッケージマネージャーの\n
76
+ 必要性が薄い
77
+
78
+ = ていうか……
79
+
80
+ # image
81
+ # src = ./images/lifetime.png
82
+ # relative_width = 90
83
+
84
+ 早死にされそうで不安
85
+
86
+ == プロパティー
87
+
88
+ : enable-title-on-image
89
+ false
90
+
91
+ = そんなライブラリーの使い方
92
+
93
+ * (('wait'))Gitのサブモジュール
94
+ git submodule add <URL> submodules/<name>
95
+
96
+ = ビルド・パッケージング時
97
+
98
+ * (('wait'))Makefileのmale rule中で\n
99
+ ファイルをコピーするだけ
100
+ xpi:
101
+ cp submodules/webextensions-lib-configs/Configs.js extlib/
102
+ zip -r -9 treestyletab.xpi manifest.json ... extlib
103
+ * (('wait'))コピー後のファイルは\n
104
+ .gitignore、.eslintignoreで\n
105
+ 除外
106
+
107
+ = ライブラリーのロード
108
+
109
+ * (('wait'))<script src="..."> で\n
110
+ 同じ名前空間にロード
111
+ * (('wait'))ES Modulesのimport
112
+ * (('wait'))コピー後に小加工して
113
+ 両対応
114
+ xpi:
115
+ cp submodules/webextensions-lib-configs/Configs.js extlib/
116
+ echo 'export default Configs;' >> extlib/Configs.js
117
+ ...
118
+
119
+ = 何が正解なんだろう?
120
+
121
+
122
+ = ちなみに、今の\nFirefoxアドオン開発
123
+
124
+ * Chromiumと同様のモデル\n
125
+ (WebExtensions)
126
+ * 名前空間が完全に分離された
127
+ * ライブラリも安全に読み込める
128
+ * みんなTypeScriptで書いてる
129
+
130
+ 今さらバニラJSの必要性は皆無\n
131
+ (オチ)
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-Piro-presentation-vanilla-js-library-topics
3
+ version: !ruby/object:Gem::Version
4
+ version: 2024.5.24.0
5
+ platform: ruby
6
+ authors:
7
+ - YUKI Hiroshi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-05-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: rabbit-theme-clear-code
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: "[Nextbeat Tech Bar:第一回ライブラリ開発について考える会](https://nextbeat.connpass.com/event/312789/)での発表資料です。"
42
+ email:
43
+ - yuki@clear-code.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".rabbit"
49
+ - LICENSE
50
+ - README.md
51
+ - Rakefile
52
+ - config.yaml
53
+ - images/lifetime.png
54
+ - images/systemadmingirl.jpg
55
+ - images/tst.png
56
+ - pdf/presentation-vanilla-js-library-topics-scenario.pdf
57
+ - scenario.rab
58
+ homepage: https://slide.rabbit-shocker.org/authors/Piro/presentation-vanilla-js-library-topics/
59
+ licenses:
60
+ - CC-BY-SA-4.0
61
+ metadata:
62
+ source_code_uri: https://gitlab.com/clear-code/presentation-vanilla-js-library-topics
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ requirements: []
78
+ rubygems_version: 3.3.5
79
+ signing_key:
80
+ specification_version: 4
81
+ summary: バニラJS開発ライブラリー事情
82
+ test_files: []