rabbit-slide-unasuke-heiseirubykaigi-1 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4656e31e0f010c6a52a2b99f6600ea5e78a3d526a66a198675018f3fd56fce21
4
+ data.tar.gz: 717355083ca626f30dcb962efc8d954c7169e79cf2398cae9118e0240ee666f7
5
+ SHA512:
6
+ metadata.gz: 71648f71605ed135a73bb28b48bcad4a101ba710b4185495550f6aaf338c3e26cc26e8623d8689306c08c08621aadb3269f8105209eccdf86f197602c68218eb
7
+ data.tar.gz: 3c731a6a4e87c023cdcc5f9ad0e1380d2d6a6b37a566b7029259cd44e95ee4c0cae7d7eff3b9074c84f7e3f29db7f0c8ec5c407d7eb513447d38f6317f1aa0da
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ slide.md
@@ -0,0 +1,24 @@
1
+ # heiseirubykaigi-1
2
+
3
+ https://heiseirb.github.io/kaigi01/
4
+
5
+ ## 作者向け
6
+
7
+ ### 表示
8
+
9
+ rake
10
+
11
+ ### 公開
12
+
13
+ rake publish
14
+
15
+ ## 閲覧者向け
16
+
17
+ ### インストール
18
+
19
+ gem install rabbit-slide-unasuke-heiseirubykaigi-1
20
+
21
+ ### 表示
22
+
23
+ rabbit rabbit-slide-unasuke-heiseirubykaigi-1.gem
24
+
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
@@ -0,0 +1,21 @@
1
+ ---
2
+ id: heiseirubykaigi-1
3
+ base_name: slide
4
+ tags: ['Windows', 'Middleman']
5
+ presentation_date: 2019-12-14
6
+ presentation_start_time: 14:05
7
+ presentation_end_time: 14:20
8
+ version: 1.0.0
9
+ licenses: ['CC-BY-SA-4.0']
10
+ slideshare_id:
11
+ speaker_deck_id:
12
+ ustream_id:
13
+ vimeo_id:
14
+ youtube_id:
15
+ author:
16
+ markup_language: :markdown
17
+ name: unasuke
18
+ email: yusuke1994525@gmail.com
19
+ rubygems_user: unasuke
20
+ slideshare_user:
21
+ speaker_deck_user:
Binary file
@@ -0,0 +1 @@
1
+ <svg width="2500" height="2500" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><rect fill="#F1C761" width="256" height="256" rx="22"/><g fill-opacity=".35"><path d="M118.097 189.197V68.218L88.676 72.35l-22.499 43.601-21.381-38.41-24.732 3.909v95.353l23.28 3.964v-60.35l22.777 42.931h.503L90.63 120.25v64.871l27.467 4.076M19.561 53.983v12.505l108.864-18.033V32.49L19.561 53.983M19.561 201.87l108.864 21.438v-15.911L19.561 189.308v12.562"/></g><g fill="#FFF"><path d="M128.425 32.489v15.966L237.29 66.488V53.983L128.425 32.489M236.786 176.803V81.45l-24.731-3.908-21.382 38.409-22.499-43.6-29.42-4.133v120.979l27.467-4.076v-64.87l24.006 43.097h.502l22.778-42.93v60.349l23.28-3.964M128.425 223.308L237.29 201.87v-12.562l-108.864 18.089v15.91"/></g></svg>
Binary file
Binary file
Binary file
@@ -0,0 +1,231 @@
1
+ # あなたのそのgem、Windowsでも動きますか?
2
+ subtitle
3
+ : 2019-12-14
4
+
5
+ subtitle
6
+ : 平成Ruby会議01 \\n#heiseirubykaigi
7
+
8
+ author
9
+ : うなすけ
10
+
11
+ theme
12
+ : unasuke-white
13
+
14
+ # はじめに
15
+ ある日のことであった……
16
+
17
+
18
+ (私がこの発表をしようと思うようになったいきさつをお話しします。)
19
+
20
+ # Middleman
21
+ Ruby製の静的サイトジェネレーター
22
+ <https://middlemanapp.com/>
23
+
24
+ ![](img/middleman.svg){:relative_width="40"}
25
+
26
+ # Middlemanの拡張gemを作ったのです
27
+ - Middlemanで生成したHTMLの\<img\>にloading="lazy"を付与するgemを作りました \| うなすけとあれこれ
28
+ - <https://blog.unasuke.com/2019/middleman-lazy-img-loading/>
29
+ - <https://github.com/unasuke/middleman-img_loading_attribute>
30
+
31
+ # 過程でMiddleman本体にPull Requestを出したのです
32
+ - <https://github.com/middleman/middleman/pull/2294>
33
+ - "Conform generated gemspec to `bundle gem` style"
34
+ - `middleman extension` コマンドによって生成される `gemspec` を `bundle gem` の形式に揃えるもの
35
+
36
+ # そしたらこんなコメントが……
37
+ > This is very nice. Is there a way to check if the shelling out to `git` is safe on Windows?
38
+
39
+ (意訳 「とてもいいね! gitコマンドを呼び出してるけどWindowsでも大丈夫?」)
40
+
41
+ <https://github.com/middleman/middleman/pull/2294#issuecomment-540301124>
42
+
43
+
44
+ # MiddlemanはWindows対応を謳っている
45
+ > Windows users can install both using RubyInstaller. For windows RubyInstaller-Devkit is also required.
46
+
47
+ <https://github.com/middleman/middleman/blob/master/README.md>
48
+
49
+ でもCIはLinuxでしか動いていない!!!
50
+
51
+ <https://travis-ci.org/middleman/middleman>
52
+
53
+ ⇒ そして私はMiddlemanにWindowsでのCIを追加しようと思ったのであった……
54
+
55
+ # いきさつのまとめ
56
+ - MiddlemanにPull Requestを出したらWindowsでの挙動を確認されたので、Windows環境でのCIを追加することにした
57
+ - その過程で得られた知見をお話しします
58
+
59
+ ![](img/middleman-pullrequest-2297.png){:relative_width="80"}
60
+
61
+ # 自己紹介
62
+ - 名前 : うなすけ
63
+ - 仕事 : プログラマー (フリーランス)
64
+ - インフラ寄りサーバーサイドエンジニア
65
+ - Ruby, Rails, Kubernetes...
66
+ - Itamae gem maintainer
67
+
68
+ - {::tag name="x-small"}GitHub [@unasuke](https://github.com/unasuke){:/tag}
69
+ - {::tag name="x-small"}Mastodon [@unasuke@mstdn.unasuke.com](https://mstdn.unasuke.com/@unasuke){:/tag}
70
+ - {::tag name="x-small"}Twitter [@yu\_suke1994](https://twitter.com/yu_suke1994){:/tag}
71
+
72
+ ![](img/icon_raw.jpg){:relative_width="24" align="right" relative_margin_right="-10" relative_margin_top="42"}
73
+
74
+ # アンケート、その前に
75
+ これから皆さんにアンケートを4つ出します。
76
+
77
+ 絶対挙手してほしい!というわけではないですが、自分かどうだったかを思い出してみてください。
78
+
79
+ # アンケート
80
+ みなさん、どのOSを日常で使っていますか?
81
+
82
+ - macOS
83
+ - Catalina
84
+ - Mojave
85
+ - Linux
86
+ - Ubuntu
87
+ - Arch Linux (発表者のマシン)
88
+ - Windows
89
+
90
+ # アンケート2
91
+ みなさんは以下OSがインストールされているマシンを持っていますか?
92
+
93
+ - macOS
94
+ - Linux
95
+ - Windows
96
+
97
+ # アンケート3
98
+ みなさんが最初に触ったパソコンのOSは何でしたか?
99
+
100
+ - macOS
101
+ - Linux
102
+ - Windows
103
+ - その他
104
+
105
+ # アンケート4
106
+ みなさんはRubyGemを作成し、公開していますか?
107
+
108
+ - はい
109
+ - まだ
110
+
111
+ # OSのシェア (画像はマイナビより)
112
+ - <https://netmarketshare.com/operating-system-market-share.aspx>
113
+
114
+ ![](img/os-share-2019-10.png){:relative_width="80"}
115
+
116
+ # Rubygems and Bundler metrics
117
+ ![](img/rubytogether-ecosystem-platform.png){:relative_width="90"}
118
+
119
+ <https://ecosystem.rubytogether.org/>
120
+
121
+ # デスクトップOSのシェア
122
+ Windows `>>` macOS + others
123
+
124
+ ⇒ Windowsで動けばユーザーが増える!!!
125
+
126
+ # WindowsでRubyを動かす方法
127
+ <https://rubyinstaller.org/> を使うとRubyをWindowsにインストールすることができます
128
+
129
+ - <https://railsgirls.jp/install#setup_for_windows_without_wsl>
130
+
131
+ # あなたのgem、Windowsで動きましたか?
132
+ ![](img/powershell-ruby-v.png){:relative_width="100"}
133
+
134
+ # gemをWindowsで動くようにしよう!
135
+ - MiddlemanのtestがWindowsでpassするようになるまでにやったことを紹介します
136
+
137
+ # shell commandを使わない
138
+ ```ruby
139
+ def cleanup!
140
+ Dir.chdir ROOT
141
+ `rm -rf #{TMP}` if File.exist? TMP
142
+ end
143
+ ```
144
+
145
+ <https://github.com/middleman/middleman/blob/ba2098ec/middleman-core/spec/support/given.rb>
146
+
147
+ Windowsには `rm` コマンドが存在しないので実行できない
148
+
149
+ # shell commandを使わない
150
+ ```diff
151
+ def cleanup!
152
+ Dir.chdir ROOT
153
+ - `rm -rf #{TMP}` if File.exist? TMP
154
+ + FileUtils.remove_entry_secure(TMP) if File.exist? TMP
155
+ end
156
+ ```
157
+
158
+ `FileUtils` を使うなど、なるべく Pure Rubyで実装する
159
+
160
+ # なるべくPure Rubyで実装する
161
+
162
+ > 実のところWindows専用アプリでもないにも関わらずこれほど力を入れてWindows対応がなされているものって、なかなか見ないよ。本当に。頭が下がります。
163
+
164
+ <https://shyouhei.tumblr.com/post/64498820681/10年代のrubyコア用語集> より
165
+
166
+ # Gem.win_platform? で分岐する
167
+ Windowsとその他のOSで処理を分けたい場合、 `Gem.win_platform?` を使用する
168
+
169
+ ```ruby
170
+ Cucumber::Rake::Task.new do |t|
171
+ exempt_tags = ["--tags 'not @wip'"]
172
+ exempt_tags = if Gem.win_platform?
173
+ ["--tags 'not(@wip or @skip-windows)'"]
174
+ else
175
+ ["--tags 'not @wip'"]
176
+ end
177
+ #...
178
+ ```
179
+
180
+ # あきらめる
181
+ 「どうしてもWindowsでこの機能を動かすのはムリ〜〜」となったときは潔く諦める
182
+
183
+ (※ そのための `Gem.win_platform?` による分岐)
184
+
185
+ # ここまでのまとめ
186
+ - Pure Rubyで実装する
187
+ - `Gem.win_platform?` で処理を分岐する
188
+ - あきらめも時には大事
189
+
190
+ ローカルのWindowsでtestがpassするよう修正できましたか?
191
+ ではCIを有効にしていきます。
192
+
193
+ # CIを有効にする
194
+ Windowsが使用できるCI service
195
+
196
+ - GitHub Actions
197
+ - AppVeyor
198
+ - CircleCI
199
+
200
+ # CIを有効にする
201
+ Windowsが使用できるCI service
202
+
203
+ - GitHub Actions ← ☆
204
+ - AppVeyor
205
+ - CircleCI ← ☆
206
+
207
+ GitHub ActionsとCircleCIはcronによる定期実行をYAMLに書くことで設定できる
208
+
209
+ # CIに関して
210
+ GitHub Actionsではどんなに頑張っても落ちるtestがAppVeyorではすんなりpassしたりするので、
211
+ 行き詰まったらCI serviceを変えてみるのも手です
212
+
213
+ (実体験 <https://github.com/middleman/middleman/pull/2297>)
214
+
215
+ ![](img/test-failed.png){:relative_width="60"}
216
+
217
+ # 成果
218
+ <https://github.com/middleman/middleman/pull/2297>
219
+
220
+ ![](img/middleman-pullrequest-2297.png){:relative_width="90"}
221
+
222
+ # 最後に
223
+ > 実のところWindows専用アプリでもないにも関わらずこれほど力を入れてWindows対応がなされているものって、なかなか見ないよ。本当に。頭が下がります。ただ、ユーザー定義したライブラリとかで対応が残念な事があって、そのため結局総体としては残念なことになってしまうって場合はまま見受けられるので、その点残念。
224
+
225
+ <https://shyouhei.tumblr.com/post/64498820681/10年代のrubyコア用語集> より
226
+
227
+ # まとめ
228
+ - Pure Rubyで実装すればWindowsでも動く(可能性が高い)
229
+ - CIはcronで定期的に実行できると便利
230
+ - Windows対応やっていきましょう
231
+ - 「総体としてのRuby」は我々で良くしていける
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-unasuke-heiseirubykaigi-1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - unasuke
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-12-14 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
+ description: https://heiseirb.github.io/kaigi01/
28
+ email:
29
+ - yusuke1994525@gmail.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rabbit"
35
+ - README.md
36
+ - Rakefile
37
+ - config.yaml
38
+ - img/icon_raw.jpg
39
+ - img/middleman-pullrequest-2297.png
40
+ - img/middleman.svg
41
+ - img/os-share-2019-10.png
42
+ - img/powershell-ruby-v.png
43
+ - img/rubytogether-ecosystem-platform.png
44
+ - img/test-failed.png
45
+ - pdf/heiseirubykaigi-1-slide.pdf
46
+ - slide.md
47
+ homepage: https://slide.rabbit-shocker.org/authors/unasuke/heiseirubykaigi-1/
48
+ licenses:
49
+ - CC-BY-SA-4.0
50
+ metadata: {}
51
+ post_install_message:
52
+ rdoc_options: []
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ requirements: []
66
+ rubygems_version: 3.0.3
67
+ signing_key:
68
+ specification_version: 4
69
+ summary: heiseirubykaigi-1
70
+ test_files: []