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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []