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 +7 -0
- data/.rabbit +1 -0
- data/LICENSE +11 -0
- data/README.md +23 -0
- data/Rakefile +28 -0
- data/config.yaml +24 -0
- data/images/lifetime.png +0 -0
- data/images/systemadmingirl.jpg +0 -0
- data/images/tst.png +0 -0
- data/pdf/presentation-vanilla-js-library-topics-scenario.pdf +0 -0
- data/scenario.rab +131 -0
- metadata +82 -0
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:
|
data/images/lifetime.png
ADDED
Binary file
|
Binary file
|
data/images/tst.png
ADDED
Binary file
|
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: []
|