rabbit-slide-Piro-readable-code-workshop-2022-11-02a-introduction 2022.11.02

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: a396558d69419f3d0f786e78fdd5c83f44ad99c4fa0f152293a79a0b019d4dea
4
+ data.tar.gz: b90a4b6efa347b75853e48b6412c7acbe76bdc7d00c87961728d54a7553928c9
5
+ SHA512:
6
+ metadata.gz: e65521f1e03c0af88548934baf52dd42941c622430500f76c2963047fdbeb2e6db30d83bd842c4134b6a41afc52c5329cc1274ae060e9b949e635be5267871f0
7
+ data.tar.gz: 9c255a1a88364fa907a02dd5689f0ad5330a413f30e31050bfd723fbeab51b57da7b65277da53e2c4a8ca8f5ed8058ed00fad16415d9cf6e5531b9534bd6861b
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ introduction.rab
data/README.rd ADDED
@@ -0,0 +1,32 @@
1
+ = リーダブルコード演習の概要
2
+
3
+ 2022-08-04開催のリーダブルコード演習の概要と進め方の説明。
4
+
5
+ == ライセンス
6
+
7
+ CC-BY-SA-4.0
8
+
9
+ 原著作者名は以下の通りです。
10
+
11
+ * 株式会社クリアコード
12
+
13
+ == 作者向け
14
+
15
+ === 表示
16
+
17
+ rake
18
+
19
+ === 公開
20
+
21
+ rake publish
22
+
23
+ == 閲覧者向け
24
+
25
+ === インストール
26
+
27
+ gem install rabbit-slide-piroor-readable-code-workshop-2022-08-04-introduction
28
+
29
+ === 表示
30
+
31
+ rabbit rabbit-slide-piroor-readable-code-workshop-2022-08-04-introduction.gem
32
+
data/Rakefile ADDED
@@ -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("images/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ spec.add_runtime_dependency("rabbit-theme-clear-code")
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
data/config.yaml ADDED
@@ -0,0 +1,22 @@
1
+ ---
2
+ id: readable-code-workshop-2022-11-02a-introduction
3
+ base_name: summary
4
+ tags:
5
+ - rabbit
6
+ - readable-code
7
+ presentation_date: 2022-11-02
8
+ version: 2022.11.02
9
+ licenses:
10
+ - CC-BY-SA-4.0
11
+ slideshare_id: readable-code-workshop-2022-11-02a-introduction
12
+ speaker_deck_id:
13
+ ustream_id:
14
+ vimeo_id:
15
+ youtube_id:
16
+ author:
17
+ markup_language: :rd
18
+ name: YUKI Hiroshi
19
+ email: yuki@clear-code.com
20
+ rubygems_user: Piro
21
+ slideshare_user: pirooutsiderreflex
22
+ speaker_deck_user: piroor
@@ -0,0 +1,167 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:cc="http://creativecommons.org/ns#"
7
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+ xmlns:svg="http://www.w3.org/2000/svg"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+ width="416.15005"
13
+ height="233.13203"
14
+ id="svg2"
15
+ version="1.1"
16
+ inkscape:version="0.48.5 r10040"
17
+ sodipodi:docname="readable-code-reasonability.svg">
18
+ <defs
19
+ id="defs4">
20
+ <marker
21
+ inkscape:stockid="Arrow1Lend"
22
+ orient="auto"
23
+ refY="0"
24
+ refX="0"
25
+ id="Arrow1Lend"
26
+ style="overflow:visible">
27
+ <path
28
+ id="path3764"
29
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
30
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
31
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
32
+ inkscape:connector-curvature="0" />
33
+ </marker>
34
+ </defs>
35
+ <sodipodi:namedview
36
+ id="base"
37
+ pagecolor="#ffffff"
38
+ bordercolor="#666666"
39
+ borderopacity="1.0"
40
+ inkscape:pageopacity="0.0"
41
+ inkscape:pageshadow="2"
42
+ inkscape:zoom="1.979899"
43
+ inkscape:cx="304.97745"
44
+ inkscape:cy="179.2249"
45
+ inkscape:document-units="px"
46
+ inkscape:current-layer="layer1"
47
+ showgrid="false"
48
+ inkscape:window-width="1237"
49
+ inkscape:window-height="817"
50
+ inkscape:window-x="2116"
51
+ inkscape:window-y="68"
52
+ inkscape:window-maximized="0"
53
+ fit-margin-top="10"
54
+ fit-margin-left="10"
55
+ fit-margin-right="10"
56
+ fit-margin-bottom="10" />
57
+ <metadata
58
+ id="metadata7">
59
+ <rdf:RDF>
60
+ <cc:Work
61
+ rdf:about="">
62
+ <dc:format>image/svg+xml</dc:format>
63
+ <dc:type
64
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
65
+ <dc:title></dc:title>
66
+ </cc:Work>
67
+ </rdf:RDF>
68
+ </metadata>
69
+ <g
70
+ inkscape:label="レイヤー 1"
71
+ inkscape:groupmode="layer"
72
+ id="layer1"
73
+ transform="translate(-42.823639,-264.5498)">
74
+ <path
75
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
76
+ d="m 62.629458,450.31127 286.883322,0"
77
+ id="path2985"
78
+ inkscape:connector-curvature="0" />
79
+ <path
80
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
81
+ d="m 104.04571,487.18183 0,-212.13203"
82
+ id="path2987"
83
+ inkscape:connector-curvature="0" />
84
+ <text
85
+ xml:space="preserve"
86
+ style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
87
+ x="310.62192"
88
+ y="476.57526"
89
+ id="text4402"
90
+ sodipodi:linespacing="125%"><tspan
91
+ sodipodi:role="line"
92
+ id="tspan4404"
93
+ x="310.62192"
94
+ y="476.57526">時間</tspan></text>
95
+ <text
96
+ xml:space="preserve"
97
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
98
+ x="52.022858"
99
+ y="293.73761"
100
+ id="text4406"
101
+ sodipodi:linespacing="125%"><tspan
102
+ sodipodi:role="line"
103
+ id="tspan4410"
104
+ x="52.022858"
105
+ y="293.73761">開発</tspan><tspan
106
+ sodipodi:role="line"
107
+ id="tspan4412"
108
+ x="52.022858"
109
+ y="318.73761">速度</tspan></text>
110
+ <path
111
+ style="fill:none;stroke:#a40000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
112
+ d="m 104.02541,309.39499 c 0,0 15.15229,97.47972 90.40865,116.67261 75.25637,19.1929 140.91628,13.63706 140.91628,13.63706"
113
+ id="path5532"
114
+ inkscape:connector-curvature="0"
115
+ sodipodi:nodetypes="csc" />
116
+ <text
117
+ xml:space="preserve"
118
+ style="font-size:25px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#a40000;fill-opacity:1;stroke:none;font-family:Sans"
119
+ x="174.97467"
120
+ y="387.88406"
121
+ id="text5534"
122
+ sodipodi:linespacing="125%"><tspan
123
+ sodipodi:role="line"
124
+ id="tspan5536"
125
+ x="174.97467"
126
+ y="387.88406">リーダブルじゃない場合</tspan></text>
127
+ <path
128
+ style="fill:none;stroke:#204a87;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
129
+ d="m 103.57143,342.36218 c 0,0 63.28367,10.3815 101.53626,13.06635 43.48081,3.05182 112.03517,4.79079 132.74945,4.07651"
130
+ id="path5546"
131
+ inkscape:connector-curvature="0"
132
+ sodipodi:nodetypes="csc" />
133
+ <text
134
+ sodipodi:linespacing="125%"
135
+ id="text5548"
136
+ y="301.74121"
137
+ x="144.83182"
138
+ style="font-size:25px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#204a87;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
139
+ xml:space="preserve"><tspan
140
+ sodipodi:role="line"
141
+ id="tspan5552"
142
+ x="144.83182"
143
+ y="301.74121">リーダブルな場合</tspan></text>
144
+ <text
145
+ xml:space="preserve"
146
+ style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
147
+ x="148.05447"
148
+ y="330.21933"
149
+ id="text5554"
150
+ sodipodi:linespacing="125%"><tspan
151
+ sodipodi:role="line"
152
+ id="tspan5556"
153
+ x="148.05447"
154
+ y="330.21933">開発速度が落ちにくい</tspan></text>
155
+ <text
156
+ sodipodi:linespacing="125%"
157
+ id="text5558"
158
+ y="412.21933"
159
+ x="177.2403"
160
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
161
+ xml:space="preserve"><tspan
162
+ sodipodi:role="line"
163
+ id="tspan5562"
164
+ x="177.2403"
165
+ y="412.21933">開発速度が落ちやすい</tspan></text>
166
+ </g>
167
+ </svg>
data/introduction.rab ADDED
@@ -0,0 +1,331 @@
1
+ = 概要
2
+
3
+ : author
4
+ 結城洋志
5
+ : institution
6
+ 株式会社クリアコード
7
+ : content-source
8
+ 実践リーダブルコード
9
+ : date
10
+ 2022-11-02
11
+ : allotted-time
12
+ 30m
13
+ : theme
14
+ clear-code
15
+
16
+ = 全体の流れ
17
+
18
+ * 概要と進め方の説明
19
+ * 実装
20
+ * 実装を交換、続きを実装
21
+ * 全体で結果を共有
22
+
23
+ == ノート
24
+
25
+ まず最初に、全体の大まかな予定を示すが、ここはサッと流す。
26
+ 進行の進行度合いによっては、実装作業の時間を長めに取る可能性があることを伝える。
27
+
28
+
29
+ = 講師紹介
30
+
31
+ (('tag:center'))(('tag:margin-bottom * 2'))
32
+ 結城洋志(ゆうき ひろし)\n
33
+ aka Piro
34
+
35
+ * 株式会社クリアコード所属
36
+ * FirefoxやThunderbirdの\n
37
+ 法人サポートに従事
38
+ * トラブルの原因や対策を探るため\n
39
+ ソースコードを調査することが多い
40
+
41
+ == ノート
42
+
43
+ Mozilla FirefoxはWebブラウザー。
44
+ Mozilla Thunderbirdはメールクライアント。
45
+
46
+ 開発元のMozillaは、企業ユーザーからのトラブル問い合わせなどに回答するサービスは提供していない。
47
+ そのため、クリアコードのような事業者が、ある意味で勝手にサポートサービスを行っている。
48
+ クリアコードは10人未満の小規模事業者で、エンドユーザーからの電話問い合わせに対応するといったビジネスはできないので、そうではなく、企業の情報システム担当者や、大学であればシステム管理者といったレベルの方が、ある程度までは自分達で対応した上で、それでもまだ分からないことを問い合わせる(エスカレーションする)先としてテクニカルサポートを提供している。
49
+
50
+ FirefoxもThunderbirdも、自分達が作っている物ではないし、作っている人達は企業ユーザーの実際の利用の仕方を知らないので、企業ユーザー向けの技術資料といった物も特にない。
51
+ よって、問い合わせを受ける度にソースコードを読んで調査することになる。
52
+ 「リーダブルなコード」の恩恵を非常に強く受ける立場だと言える。
53
+
54
+ = アジェンダ
55
+
56
+ * ((*講座の目的*))を確認
57
+ * リーダブルコードの\n
58
+ ((*必要性*))を確認
59
+ * リーダブルコードの\n
60
+ ((*実践方法*))を紹介
61
+ * 実践方法を((*練習*))
62
+
63
+
64
+ = 講座の目的
65
+
66
+ * 自分の開発チームに
67
+ * (('note:注:個々人の話ではない'))
68
+ * ((*リーダブルなコードが\n
69
+ 当たり前な文化の作り方*))を
70
+ * 持ち帰る
71
+
72
+ (('tag:center'))
73
+ (('note:→ 「解説」に書いていることの実践方法を学ぶ'))
74
+
75
+ = 目的でないこと
76
+
77
+ * 実践前の不安のケア
78
+ * 「やる」と決めないと理解が進まない
79
+ * テクニックをたくさん覚える
80
+ * 難しいプログラムを実装する
81
+ * 早解きや実行時性能の追求
82
+ * 奇抜な方法で目立つ
83
+
84
+ = ワークショップ後
85
+
86
+ * ぜひ実践を!
87
+ * 今日の資料はすべて再利用可能
88
+ * チーム内で同じ講座を再現できる
89
+
90
+ =  
91
+
92
+ = そもそもの話
93
+
94
+ * リーダブルコードは\n
95
+ なぜ必要か
96
+
97
+ = リーダブルコードのニーズ
98
+
99
+ チーム開発を\n
100
+ 無理なく\n
101
+ 続けるため
102
+
103
+ = チーム開発でのニーズ
104
+
105
+ * 既存のコードを読んで\n
106
+ ((*素早く内容を把握したい*))
107
+ * 既存のコードに\n
108
+ ((*素早く手を加えたい*))
109
+ * ((*開発速度*))を落としたくない
110
+
111
+ = 読みにくいと開発が遅くなる
112
+
113
+ * 既存のコードを\n
114
+ 理解しにくいと……
115
+ * 修正・機能追加に時間がかかる\n
116
+ (('note:(理解しないと変更できない)'))
117
+ * 後退バグが発生しやすい\n
118
+ (('note:(理解しないまま変更すると問題発生)'))
119
+
120
+ (('tag:center'))
121
+ →((*コストがかかる*))
122
+
123
+ = 時間が経つほど影響大
124
+
125
+ # image
126
+ # src = images/readable-code-reasonability.svg
127
+ # relative_width = 90
128
+
129
+ (('tag:center'))
130
+ (('note:(注意:グラフではなく概念図です)'))
131
+
132
+ == プロパティー
133
+
134
+ : enable-title-on-image
135
+ false
136
+
137
+ == ノート
138
+
139
+ 「保守性を犠牲にして開発する場合と、保守性を高く保って開発する場合に、曲線が交差する点(つまり損益分岐点)には1ヵ月くらいで到達する」と言われている。
140
+
141
+ 1ヵ月という数字の出典:
142
+ 質とスピード(2020秋100分拡大版) / Quality and Speed 2020 Autumn Edition
143
+ https://speakerdeck.com/twada/quality-and-speed-2020-autumn-edition
144
+
145
+ = つまり
146
+
147
+ * 現実的なコストの範囲で
148
+ * 既存のコードを継続的に、\n
149
+ 無理なく改良・修正したい
150
+
151
+ (('tag:center'))
152
+ →なので、リーダブルコード
153
+
154
+ =  
155
+
156
+ = リーダブルコードの実践
157
+
158
+ (('note:どうすれば無理なく実践できる?'))
159
+
160
+ = リーダブルコードの実践
161
+
162
+ コードを((*読む*))\n
163
+ 習慣を作る
164
+
165
+ = 読む?書くじゃないの?
166
+
167
+ * リーダブルコードを書くには\n
168
+ コードを読むことが欠かせない
169
+ * なぜ?
170
+
171
+ (('wait'))
172
+ (('tag:center'))
173
+ ↓\n
174
+ 読まないと\n
175
+ 何が「読みやすい」か\n
176
+ 分からないから
177
+
178
+ = 何が「良い」かは受け手の状況次第
179
+
180
+ * しょっぱいのが好きな人と\n
181
+ 甘いのが好きな人で\n
182
+ 「おいしい」の基準は違う
183
+ * 自分はどんな味が好みか?
184
+ * 日常の運転とレースでは\n
185
+ 「乗りやすい」の基準は違う
186
+ * 自分はどんな乗り方をするのか?
187
+
188
+ = リーダブルコードも同じ
189
+
190
+ * チームの状況によって\n
191
+ 「リーダブル」の基準が違う
192
+
193
+ = リーダブルコード
194
+
195
+ 「読む人」が\n
196
+ 読みやすいなら\n
197
+ リーダブル
198
+
199
+ = 読む人
200
+
201
+ * 多くの場合、いない
202
+ * チームのコードを読んでいますか?
203
+ * 読む人(チームメンバー)毎に\n
204
+ リーダブルの基準は違う
205
+ * 背景が違うので当たり前\n
206
+ (('note:(背景:使ってきた言語・今の知識)'))
207
+
208
+ = チームでのリーダブル
209
+
210
+ * 1つずつ見つけていくしかない
211
+ * 各メンバーの読んだ感覚を\n
212
+ チームで共有
213
+ * 既存の基準をベースにするのはアリ\n
214
+ (('note:(基準:本の内容やコーディングスタイルなど)'))
215
+
216
+ (('tag:center'))
217
+ チームでのリーダブルコードは\n
218
+ 育てていくもの
219
+
220
+ = リーダブルの基準の育て方
221
+
222
+ * コードを読む文化を作る\n
223
+ (('note:(最初の難関)'))
224
+ * チームのコードの中から\n
225
+ リーダブルなコードを見つける
226
+ * リーダブルなコードを\n
227
+ チームで共有
228
+ * ↑の繰り返しで基準を増やす
229
+
230
+ = コードを読む文化を作る
231
+
232
+ * まず自分が読み始める
233
+ * 仲間がいると心強い
234
+ * リーダブルなコードを探す
235
+ * 読みにくいコードは今は置いておく\n
236
+ (('note:(チームにコードを読む文化ができてから!)'))
237
+ * 見つけたリーダブルなコードは…
238
+
239
+ = リーダブルなコードは…
240
+
241
+ * 他のメンバーに共有する\n
242
+ (('note:(例:話しかける。チャットに書く。Wikiにまとめる。)'))
243
+ * 「○○さんの△△という書き方、\n
244
+  ◇◇な所がリーダブルですね」
245
+
246
+ (('tag:center'))
247
+ ↓\n
248
+ 読みやすさの基準を共有\n
249
+ コードが読まれているという自覚
250
+
251
+ = 読むことを「当たり前」に
252
+
253
+ * 「あいつはコードを読むやつ」\n
254
+ という認識を広める
255
+ * 自分だけからチームへ
256
+ * 「このチームはコードを読み合う」\n
257
+ という認識を広める
258
+
259
+ (('tag:center'))
260
+ …続きはセミナーの最後に
261
+
262
+
263
+ = この後の実践
264
+
265
+ (('tag:center'))
266
+ 開発を続けるために\n
267
+ ((*他の人のコードを読む*))
268
+
269
+ * まず自分が読み始める
270
+ * リーダブルコードを探す\n
271
+ (('note:(読みにくいコードは今は置いておく)'))
272
+ * リーダブルの基準を共有\n
273
+ (('note:(チームでのリーダブルコードができる)'))
274
+
275
+ = やること
276
+
277
+ 読む文化作りの\n
278
+ 体験
279
+
280
+ = 読む文化作りの体験
281
+
282
+ * 10:45-12:15 課題を実装
283
+ * リーダブルコードを書く
284
+ * 13:30-14:45 実装チェンジ\n
285
+       →開発継続
286
+ * 「まず自分が読み始める」
287
+ * 「リーダブルコードを探す」
288
+ * 15:00- グループふりかえり
289
+ * 「他のメンバーに教える」
290
+
291
+ = おさらい
292
+
293
+ * この講座の目的
294
+ * リーダブルコードの必要性
295
+ * この講座でやること
296
+
297
+ = この講座の目的
298
+
299
+ * 自分の開発チームに
300
+ * ↑注意:個々人の話ではない
301
+ * ((*リーダブルなコードが\n
302
+ 当たり前な文化の作り方*))を
303
+ * 持ち帰る
304
+
305
+ = リーダブルコードの必要性
306
+
307
+ * チームの開発速度の維持のため
308
+ * 継続的に改良・修正したい
309
+ * それも現実的なコストの範囲内で
310
+
311
+ = 変更コストと開発速度
312
+
313
+ # image
314
+ # src = images/readable-code-reasonability.svg
315
+ # relative_width = 90
316
+
317
+ == プロパティー
318
+
319
+ : enable-title-on-image
320
+ false
321
+
322
+ = この講座でやること
323
+
324
+ * コードを読む文化作りの体験
325
+ * まず自分が読み始める
326
+ * リーダブルコードを探す
327
+ * 他のメンバーに教える
328
+
329
+ = ここまでの説明
330
+
331
+ 腑に落ちましたか?
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-Piro-readable-code-workshop-2022-11-02a-introduction
3
+ version: !ruby/object:Gem::Version
4
+ version: 2022.11.02
5
+ platform: ruby
6
+ authors:
7
+ - YUKI Hiroshi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-11-01 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: 2022-08-04開催のリーダブルコード演習の概要と進め方の説明。
42
+ email:
43
+ - yuki@clear-code.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".rabbit"
49
+ - README.rd
50
+ - Rakefile
51
+ - config.yaml
52
+ - images/readable-code-reasonability.svg
53
+ - introduction.rab
54
+ - pdf/readable-code-workshop-2022-11-02a-introduction-summary.pdf
55
+ homepage: http://slide.rabbit-shocker.org/authors/Piro/readable-code-workshop-2022-11-02a-introduction/
56
+ licenses:
57
+ - CC-BY-SA-4.0
58
+ metadata: {}
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 2.7.6
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: リーダブルコード演習の概要
79
+ test_files: []