rabbit-slide-hasumikin-OsakaRubyKaigi04 2024.08.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 +7 -0
- data/.rabbit +2 -0
- data/README.rd +24 -0
- data/Rakefile +17 -0
- data/WhereIsPicoRubyGoing.md +652 -0
- data/config.yaml +23 -0
- data/images/fukuoka2020.jpg +0 -0
- data/images/fukuoka2022.jpg +0 -0
- data/images/goshuin.jpg +0 -0
- data/images/gps1.png +0 -0
- data/images/gps2.png +0 -0
- data/images/gps3.png +0 -0
- data/images/headline.png +0 -0
- data/images/kaneko.jpg +0 -0
- data/images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.001.png +0 -0
- data/images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.002.png +0 -0
- data/images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.003.png +0 -0
- data/images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.004.png +0 -0
- data/images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.005.png +0 -0
- data/images/matsue.png +0 -0
- data/images/rubykaigi2018.png +0 -0
- data/images/rubykaigi2020.png +0 -0
- data/images/rubykaigi2021.png +0 -0
- data/images/rubykaigi2023.png +0 -0
- data/images/rubyprize.png +0 -0
- data/images/sugihara.jpg +0 -0
- data/images/sugihara2.jpg +0 -0
- data/images/suitouro.png +0 -0
- data/images/toyama01.png +0 -0
- data/images/water.jpg +0 -0
- data/images/water2.jpg +0 -0
- data/pdf/OsakaRubyKaigi04-WhereIsPicoRubyGoing.md.pdf +0 -0
- data/theme.rb +189 -0
- metadata +89 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a64a793d81d2f10f94563526a239ceb00bf0c4d925b7a9f48b7aca5e3871a358
|
4
|
+
data.tar.gz: 2281a2c283a6ada6ed1d083ef9ccd146e0285cacc45ed0e3965892c1f8e4614f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1e1cff33914b22b4e42335f75a24dde1875c9104e60b5908291a6d49fdc66841ca463af4cffe3bf911e391c313565e826ebae5806fe3b2cfa83fe64366a97255
|
7
|
+
data.tar.gz: 9f3221fc4c817d111905511ff7d46d96d9acd42acb2854a793a460739bac8ffd5a8fa9cbd76143f52a277c7960b22fdde56dec876f7af43c018052a207e190c2
|
data/.rabbit
ADDED
data/README.rd
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
= A Beginner's Complete Guide to Microcontroller Programming with Ruby
|
2
|
+
|
3
|
+
Presentation slide for Euruko 2023
|
4
|
+
|
5
|
+
== For author
|
6
|
+
|
7
|
+
=== Show
|
8
|
+
|
9
|
+
rake
|
10
|
+
|
11
|
+
=== Publish
|
12
|
+
|
13
|
+
rake publish
|
14
|
+
|
15
|
+
== For viewers
|
16
|
+
|
17
|
+
=== Install
|
18
|
+
|
19
|
+
gem install rabbit-slide-hasumikin-Euruko2023
|
20
|
+
|
21
|
+
=== Show
|
22
|
+
|
23
|
+
rabbit rabbit-slide-hasumikin-Euruko2023.gem
|
24
|
+
|
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("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,652 @@
|
|
1
|
+
# 令和の隙間産業
|
2
|
+
|
3
|
+
subtitle
|
4
|
+
: PicoRubyはどこから来て、\\nどこへ行くのか
|
5
|
+
|
6
|
+
author
|
7
|
+
: hasumikin
|
8
|
+
|
9
|
+
date
|
10
|
+
: 令和6年8月24日
|
11
|
+
|
12
|
+
allotted-time
|
13
|
+
: 45m
|
14
|
+
|
15
|
+
theme
|
16
|
+
: theme
|
17
|
+
|
18
|
+
# Slide
|
19
|
+
キーノート
|
20
|
+
|
21
|
+
# Slide
|
22
|
+
キーノート!!!
|
23
|
+
|
24
|
+
# Slide
|
25
|
+
だからきょうのRabbitスライドは
|
26
|
+
|
27
|
+
# Slide
|
28
|
+
Matzスタイル
|
29
|
+
|
30
|
+
# Slide
|
31
|
+
ヘッドラインなし
|
32
|
+
|
33
|
+
# Slide
|
34
|
+
{:
|
35
|
+
relative_height="100"
|
36
|
+
}
|
37
|
+
|
38
|
+
# Slide
|
39
|
+
天地左右センタソロエ
|
40
|
+
|
41
|
+
# Slide
|
42
|
+
キーノートとは?
|
43
|
+
|
44
|
+
# Slide
|
45
|
+
カンファレンストークとは?
|
46
|
+
|
47
|
+
# Slide
|
48
|
+
(たしか)台湾にて、
|
49
|
+
|
50
|
+
# Slide
|
51
|
+
{:
|
52
|
+
relative-height="35"
|
53
|
+
relative_margin_top="-2"
|
54
|
+
}
|
55
|
+
|
56
|
+
> はすみさんて、誰の役にも立たない話を
|
57
|
+
> 楽しそうにしますよね(意訳)
|
58
|
+
|
59
|
+
# Slide
|
60
|
+
{:
|
61
|
+
relative-height="35"
|
62
|
+
relative_margin_top="-2"
|
63
|
+
}
|
64
|
+
|
65
|
+
> 前田修吾さんも
|
66
|
+
> 誰の役にも立たない話しますよね
|
67
|
+
|
68
|
+
# Slide
|
69
|
+
役に立たない話😣
|
70
|
+
|
71
|
+
# Slide
|
72
|
+
そうは言っても
|
73
|
+
RubyKaigiトークの80%くらいは
|
74
|
+
誰の役にも立ってない(個人の感想です)
|
75
|
+
|
76
|
+
# Slide
|
77
|
+
役に立たない👈これにも種類がある
|
78
|
+
|
79
|
+
# Slide
|
80
|
+
CRubyの内部実装を改善
|
81
|
+
👉(直接には)役に立たない
|
82
|
+
|
83
|
+
# Slide
|
84
|
+
型の書き方に新提案
|
85
|
+
👉(すぐには)役に立たない
|
86
|
+
|
87
|
+
# Slide
|
88
|
+
メガドライブでRubyを動かす
|
89
|
+
👉(1ミリも)役に立たない
|
90
|
+
|
91
|
+
# Slide
|
92
|
+
自作のエディタのために新メソッドを提案
|
93
|
+
👉意味がわからない
|
94
|
+
|
95
|
+
# Slide
|
96
|
+
尊敬する「世界のshugomaeda」と
|
97
|
+
同じカテゴリー(光栄)
|
98
|
+
|
99
|
+
# Slide
|
100
|
+
きょうはせっかくのキーノートなので、
|
101
|
+
堂々と誰の役にも立たない話をします
|
102
|
+
|
103
|
+
# Slide
|
104
|
+
【ご報告】ところで、最近転職しました
|
105
|
+
|
106
|
+
# Slide
|
107
|
+
株式会社アンドパッド
|
108
|
+
|
109
|
+
# Slide
|
110
|
+
暑い夏、水分補給してますか?
|
111
|
+
|
112
|
+
# Slide
|
113
|
+
{:
|
114
|
+
relative-height="100"
|
115
|
+
}
|
116
|
+
|
117
|
+
# Slide
|
118
|
+
{:
|
119
|
+
relative-height="100"
|
120
|
+
}
|
121
|
+
|
122
|
+
# Slide
|
123
|
+
【ご報告】RubyConf Africa 2024
|
124
|
+
|
125
|
+
# Slide
|
126
|
+
{:
|
127
|
+
relative_height="130"
|
128
|
+
relative_margin_top="-15"
|
129
|
+
}
|
130
|
+
|
131
|
+
# Slide
|
132
|
+
ブログ読んでください
|
133
|
+
|
134
|
+
# Slide
|
135
|
+
【ご案内】2024年10月5日
|
136
|
+
松江Ruby会議11
|
137
|
+
|
138
|
+
# Slide
|
139
|
+
{:
|
140
|
+
relative-height="100"
|
141
|
+
}
|
142
|
+
|
143
|
+
# Slide
|
144
|
+
{:
|
145
|
+
relative-height="100"
|
146
|
+
}
|
147
|
+
|
148
|
+
# Slide
|
149
|
+
(たぶん)
|
150
|
+
きょうは質問タイムがあります
|
151
|
+
|
152
|
+
# Slide
|
153
|
+
いちばんよい質問をしてくれた人に
|
154
|
+
|
155
|
+
# Slide
|
156
|
+
{:
|
157
|
+
relative_height="100"
|
158
|
+
}
|
159
|
+
|
160
|
+
# Slide
|
161
|
+
mruby/c御朱印帳をプレゼント!
|
162
|
+
|
163
|
+
# Slide
|
164
|
+
みんなでつくるキーノート
|
165
|
+
|
166
|
+
# Slide
|
167
|
+
あしたはあなたがキーノート
|
168
|
+
|
169
|
+
# Slide
|
170
|
+
令和の隙間産業
|
171
|
+
|
172
|
+
# Slide
|
173
|
+
隙間産業 =ちょっとしたプロダクト
|
174
|
+
|
175
|
+
# Slide
|
176
|
+
ちょっとしたプロダクトを持つと楽しい
|
177
|
+
|
178
|
+
# Slide
|
179
|
+
ちょっとしたプロダクトを持つに至った経緯
|
180
|
+
|
181
|
+
# Slide
|
182
|
+
PicoRubyはどこから来て、どこへ行くのか
|
183
|
+
|
184
|
+
# Slide
|
185
|
+
PicoRuby知ってる人🙋
|
186
|
+
|
187
|
+
# Slide
|
188
|
+
(デモ)
|
189
|
+
|
190
|
+
# Slide
|
191
|
+
PicoRubyのすごいところ
|
192
|
+
|
193
|
+
# Slide
|
194
|
+
名前がよい
|
195
|
+
|
196
|
+
# Slide
|
197
|
+
mruby/c
|
198
|
+
スラッシュって
|
199
|
+
PL/I?
|
200
|
+
|
201
|
+
# Slide
|
202
|
+
mruby|MRuby|mRuby
|
203
|
+
|
204
|
+
# Slide
|
205
|
+
PicoRuby
|
206
|
+
名前がよい
|
207
|
+
|
208
|
+
# Slide
|
209
|
+
マイコンがコンパイルしてくれる
|
210
|
+
|
211
|
+
# Slide
|
212
|
+
ファイルシステムがある
|
213
|
+
|
214
|
+
# Slide
|
215
|
+
Rubyの生産性
|
216
|
+
|
217
|
+
# Slide
|
218
|
+
Cだと千行、Rubyだと数百行
|
219
|
+
みたいなこと、昔はよく言いました
|
220
|
+
|
221
|
+
# Slide
|
222
|
+
きょうび、CとRubyは比較しない
|
223
|
+
|
224
|
+
# Slide
|
225
|
+
Cではふつう、
|
226
|
+
ウェッブアプリを書きませんが、
|
227
|
+
|
228
|
+
# Slide
|
229
|
+
マイコンは今でもC/C++が主流
|
230
|
+
|
231
|
+
# Slide
|
232
|
+
(仮定)Cだと千行、Rubyだと数百行
|
233
|
+
のマイコンアプリケーション
|
234
|
+
|
235
|
+
# Slide
|
236
|
+
数百行なら型は要らない
|
237
|
+
(あればあったでべんりな日もある)
|
238
|
+
|
239
|
+
# Slide
|
240
|
+
マイコンアプリだと動的型付けの
|
241
|
+
メリットが最大化される(当社比)
|
242
|
+
|
243
|
+
# Slide
|
244
|
+
REPL(IRB)による漸進的開発
|
245
|
+
|
246
|
+
# Slide
|
247
|
+
ペリフェラルgemsが揃っている
|
248
|
+
|
249
|
+
# Slide
|
250
|
+
GPIO、ADC、I2C、SPI、UART、PWM
|
251
|
+
|
252
|
+
# Slide
|
253
|
+
GPIO:汎用入出力。Lチカ
|
254
|
+
ソフト制御でプロトコルをしゃべらせてもいい
|
255
|
+
|
256
|
+
# Slide
|
257
|
+
ADC:アナログ値(電圧)をデジタル値に変換
|
258
|
+
温度センサ、マイク、ジョイスティックなど
|
259
|
+
|
260
|
+
# Slide
|
261
|
+
I2C:シリアル通信
|
262
|
+
2本の配線で複数機器がつながる
|
263
|
+
各種センサ、小型ディスプレイなど
|
264
|
+
|
265
|
+
# Slide
|
266
|
+
SPI:シリアル通信。I2Cより速い
|
267
|
+
各種センサ、LCD、メモリ
|
268
|
+
|
269
|
+
# Slide
|
270
|
+
UART:非同期のシリアル通信
|
271
|
+
コンソール、通信モジュールなど
|
272
|
+
|
273
|
+
# Slide
|
274
|
+
PWM:
|
275
|
+
こまかなデジタル出力制御でアナログっぽい波形
|
276
|
+
モータ制御、LED明滅、ブザーを鳴らすなど
|
277
|
+
|
278
|
+
# Slide
|
279
|
+
よくある質問
|
280
|
+
「ピコルビーはGPS対応してますか?」
|
281
|
+
|
282
|
+
# Slide
|
283
|
+
よくある質問
|
284
|
+
「PRKはトラックボールつかえますか?」
|
285
|
+
|
286
|
+
# Slide
|
287
|
+
{:
|
288
|
+
relative-height="100"
|
289
|
+
}
|
290
|
+
|
291
|
+
# Slide
|
292
|
+
{:
|
293
|
+
relative-height="100"
|
294
|
+
}
|
295
|
+
|
296
|
+
# Slide
|
297
|
+
{:
|
298
|
+
relative-height="100"
|
299
|
+
}
|
300
|
+
|
301
|
+
# Slide
|
302
|
+
ペリフェラルgemsがあれば、
|
303
|
+
たいていのことはできる
|
304
|
+
|
305
|
+
# Slide
|
306
|
+
つまり、PicoRubyはすでに
|
307
|
+
たいていのことができます
|
308
|
+
|
309
|
+
# Slide
|
310
|
+
ちなみに
|
311
|
+
ビット演算の知識は必須
|
312
|
+
|
313
|
+
# Slide
|
314
|
+
WiFiもComing soon!
|
315
|
+
|
316
|
+
# Slide
|
317
|
+
PicoRubyの歴史
|
318
|
+
|
319
|
+
# Slide
|
320
|
+
2017年1月、mruby/c 1.0
|
321
|
+
mruby準拠VMだけの軽量実装
|
322
|
+
|
323
|
+
# Slide
|
324
|
+
作者:
|
325
|
+
田中教授(九州工業大学)
|
326
|
+
東研究員(ITOC)
|
327
|
+
|
328
|
+
# Slide
|
329
|
+
コンパイラは別途開発せず、
|
330
|
+
mrubyのものを使用
|
331
|
+
|
332
|
+
# Slide
|
333
|
+
mrubyコンパイラはメモリ消費が大きく、
|
334
|
+
ワンチップマイコンには載らなかった
|
335
|
+
|
336
|
+
# Slide
|
337
|
+
マイコンに載せるのはVMとVMコード
|
338
|
+
|
339
|
+
# Slide
|
340
|
+
そのころのhasumikin
|
341
|
+
👦🏻「IoTやりたい」
|
342
|
+
|
343
|
+
# Slide
|
344
|
+
島根県職員
|
345
|
+
|
346
|
+
# Slide
|
347
|
+
{:
|
348
|
+
relative-height="75"
|
349
|
+
relative_margin_top="0"
|
350
|
+
}
|
351
|
+
|
352
|
+
> いいのがあるよ!
|
353
|
+
|
354
|
+
# Slide
|
355
|
+
2017年にmruby/cを触り始める
|
356
|
+
|
357
|
+
# Slide
|
358
|
+
Version1.0だったけど
|
359
|
+
|
360
|
+
# Slide
|
361
|
+
バグあり
|
362
|
+
(誰にも)ノウハウなし
|
363
|
+
|
364
|
+
# Slide
|
365
|
+
そもそものC言語力不足
|
366
|
+
(私の問題)
|
367
|
+
|
368
|
+
# Slide
|
369
|
+
(真の意味での)モンキーパッチ
|
370
|
+
|
371
|
+
# Slide
|
372
|
+
コンパイルして書き込んで実行(無限ループ)
|
373
|
+
|
374
|
+
# Slide
|
375
|
+
辛い日々
|
376
|
+
|
377
|
+
# Slide
|
378
|
+
麹の温度管理システム完成
|
379
|
+
(旭日酒造)
|
380
|
+
|
381
|
+
# Slide
|
382
|
+
2018年、仙台
|
383
|
+
RubyKaigi初登壇
|
384
|
+
|
385
|
+
# Slide
|
386
|
+
{:
|
387
|
+
relative-height="100"
|
388
|
+
}
|
389
|
+
|
390
|
+
# Slide
|
391
|
+
角谷さんと松田さんがザワついたプロポーザル
|
392
|
+
|
393
|
+
# Slide
|
394
|
+
「mrubyで酒を造っています」
|
395
|
+
|
396
|
+
# Slide
|
397
|
+
2020年
|
398
|
+
フクオカRuby大賞🎉
|
399
|
+
|
400
|
+
# Slide
|
401
|
+
{:
|
402
|
+
relative-height="100"
|
403
|
+
}
|
404
|
+
|
405
|
+
# Slide
|
406
|
+
PicoRubyはまだ陰も形もない
|
407
|
+
|
408
|
+
# Slide
|
409
|
+
(話は2019年に戻ります)
|
410
|
+
富山Ruby会議01
|
411
|
+
|
412
|
+
# Slide
|
413
|
+
{:
|
414
|
+
relative-height="100"
|
415
|
+
}
|
416
|
+
|
417
|
+
# Slide
|
418
|
+
Rubyで書くmrubyコンパイラ
|
419
|
+
|
420
|
+
# Slide
|
421
|
+
`puts "Hello World!"`だけできる
|
422
|
+
(正確には、関数呼び出し+Stringリテラル)
|
423
|
+
|
424
|
+
# Slide
|
425
|
+
パーサジェネレータはLemon
|
426
|
+
(SQLiteプロジェクトの一部。隙間産業)
|
427
|
+
|
428
|
+
# Slide
|
429
|
+
オレオレparse.cをFFIでRubyにリンク
|
430
|
+
|
431
|
+
# Slide
|
432
|
+
トークナイザとコードジェネレータはRuby
|
433
|
+
わりと簡単にできた
|
434
|
+
|
435
|
+
# Slide
|
436
|
+
2020年
|
437
|
+
「全部Cで書けるのでは?」🤔
|
438
|
+
|
439
|
+
# Slide
|
440
|
+
トークナイザをCで書く苦行
|
441
|
+
|
442
|
+
# Slide
|
443
|
+
コンパイラがなんとなく完成
|
444
|
+
|
445
|
+
# Slide
|
446
|
+
マイコン上でRubyをコンパイルする
|
447
|
+
という隙間産業
|
448
|
+
|
449
|
+
# Slide
|
450
|
+
mruby/c + mini mruby compiler
|
451
|
+
|
452
|
+
# Slide
|
453
|
+
名前がよくない
|
454
|
+
|
455
|
+
# Slide
|
456
|
+
{:
|
457
|
+
relative-height="100"
|
458
|
+
}
|
459
|
+
|
460
|
+
# Slide
|
461
|
+
その後のR2P2につながるアイデアではあったが
|
462
|
+
コロナ禍のやる気減退もあって消化不良
|
463
|
+
|
464
|
+
# Slide
|
465
|
+
2021年1月
|
466
|
+
ラズパイ財団、ラズパイピコを発表
|
467
|
+
|
468
|
+
# Slide
|
469
|
+
Raspberry Pi Pico(隙間産業)
|
470
|
+
|
471
|
+
# Slide
|
472
|
+
264KB RAM
|
473
|
+
2MB Flash ROM
|
474
|
+
五百円
|
475
|
+
|
476
|
+
# Slide
|
477
|
+
ゲームチェンジャーでは?
|
478
|
+
|
479
|
+
# Slide
|
480
|
+
「キーボードファームウェアつくれそう」
|
481
|
+
|
482
|
+
# Slide
|
483
|
+
PRK Firmware(隙間産業)
|
484
|
+
|
485
|
+
# Slide
|
486
|
+
RubyKaigi Takeout 2021
|
487
|
+
|
488
|
+
# Slide
|
489
|
+
"DIYキーボードは実質Ruby"
|
490
|
+
|
491
|
+
# Slide
|
492
|
+
{:
|
493
|
+
relative-height="100"
|
494
|
+
}
|
495
|
+
|
496
|
+
# Slide
|
497
|
+
(オレ史上)最高傑作
|
498
|
+
|
499
|
+
# Slide
|
500
|
+
2021年
|
501
|
+
PicoRubyと命名
|
502
|
+
|
503
|
+
# Slide
|
504
|
+
Ruby Prize最終ノミネート🎉
|
505
|
+
|
506
|
+
# Slide
|
507
|
+
{:
|
508
|
+
relative-height="100"
|
509
|
+
}
|
510
|
+
|
511
|
+
# Slide
|
512
|
+
Matzによる偉業認定
|
513
|
+
|
514
|
+
# Slide
|
515
|
+
2022年
|
516
|
+
フクオカRuby大賞おかわり🎉
|
517
|
+
|
518
|
+
# Slide
|
519
|
+
{:
|
520
|
+
relative-height="100"
|
521
|
+
}
|
522
|
+
|
523
|
+
# Slide
|
524
|
+
RubyKaigi 2023
|
525
|
+
|
526
|
+
# Slide
|
527
|
+
"Build Your Own SQLite3"
|
528
|
+
|
529
|
+
# Slide
|
530
|
+
{:
|
531
|
+
relative-height="100"
|
532
|
+
}
|
533
|
+
|
534
|
+
# Slide
|
535
|
+
マイコンで動かすSQLite3(隙間産業)
|
536
|
+
|
537
|
+
# Slide
|
538
|
+
(オレ史上)最苦労作品
|
539
|
+
|
540
|
+
# Slide
|
541
|
+
(オレ史上)最も世界のshugomaeda的トーク
|
542
|
+
|
543
|
+
# Slide
|
544
|
+
最近のうごき
|
545
|
+
|
546
|
+
# Slide
|
547
|
+
パーサのPrism化
|
548
|
+
|
549
|
+
# Slide
|
550
|
+
からのLrama-gen化(?)
|
551
|
+
|
552
|
+
# Slide
|
553
|
+
詳しくは来週(RubyKaigi 2024 followup)
|
554
|
+
|
555
|
+
# Slide
|
556
|
+
今後やりたいこと
|
557
|
+
|
558
|
+
# Slide
|
559
|
+
パーサがCRubyとコンパチになると
|
560
|
+
|
561
|
+
# Slide
|
562
|
+
CRubyと相互運用しやすくなる
|
563
|
+
(クレームが減る)
|
564
|
+
|
565
|
+
# Slide
|
566
|
+
ぺん!さんのTRICKyなコードが動く
|
567
|
+
(かもしれない)
|
568
|
+
|
569
|
+
# Slide
|
570
|
+
Kernel.#eval
|
571
|
+
|
572
|
+
# Slide
|
573
|
+
エラー箇所をわかりやすくする
|
574
|
+
|
575
|
+
# Slide
|
576
|
+
PC(Unix)への歩み寄り
|
577
|
+
|
578
|
+
# Slide
|
579
|
+
Socketクラス、Kernel.#system
|
580
|
+
|
581
|
+
# Slide
|
582
|
+
クロスプラットフォームなワンバイナリツール
|
583
|
+
picoruby-cli(?)
|
584
|
+
|
585
|
+
# Slide
|
586
|
+
ペリフェラルシミュレータ
|
587
|
+
PCでGPIOなどの操作を"仮組み"してからマイコンへ
|
588
|
+
|
589
|
+
# Slide
|
590
|
+
教育コンテンツ化
|
591
|
+
(セットアップが簡単、再現性が高い)
|
592
|
+
|
593
|
+
# Slide
|
594
|
+
ラズパイピコだけでは弱いので
|
595
|
+
|
596
|
+
# Slide
|
597
|
+
ポーティングを進めたい
|
598
|
+
ESP32、nRF52、STM32
|
599
|
+
|
600
|
+
# Slide
|
601
|
+
やるべきことは大きく2つ:
|
602
|
+
|
603
|
+
# Slide
|
604
|
+
①それぞれのマイコンごとのビルド方法に
|
605
|
+
対応したR2P2プロジェクトをつくる
|
606
|
+
|
607
|
+
# Slide
|
608
|
+
②ペリフェラルgemsのマイコン依存部分を書く
|
609
|
+
|
610
|
+
# Slide
|
611
|
+
ぜんぶ隙間産業
|
612
|
+
|
613
|
+
# Slide
|
614
|
+
協力者大募集中
|
615
|
+
|
616
|
+
# Slide
|
617
|
+
PicoRuby(隙間産業)
|
618
|
+
|
619
|
+
# Slide
|
620
|
+
JRuby(隙間産業)
|
621
|
+
|
622
|
+
# Slide
|
623
|
+
mruby(隙間産業)
|
624
|
+
|
625
|
+
# Slide
|
626
|
+
mruby/c(隙間産業)
|
627
|
+
|
628
|
+
# Slide
|
629
|
+
Ruby(隙間産業)
|
630
|
+
|
631
|
+
# Slide
|
632
|
+
隙間産業<->負けず嫌い
|
633
|
+
|
634
|
+
# Slide
|
635
|
+
ITはつまらなくなんかない
|
636
|
+
|
637
|
+
# Slide
|
638
|
+
隙間はもう無いのか?
|
639
|
+
|
640
|
+
# Slide
|
641
|
+
あなたのすぐとなりに在る
|
642
|
+
|
643
|
+
# Slide
|
644
|
+
ぼくらにはそれぞれ
|
645
|
+
旅に出る理由がある
|
646
|
+
|
647
|
+
# Slide
|
648
|
+
きょうのわたくしの話が
|
649
|
+
役に立ちそうな人🙋
|
650
|
+
|
651
|
+
# Slide
|
652
|
+
質問タイム
|
data/config.yaml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
---
|
2
|
+
id: OsakaRubyKaigi04
|
3
|
+
base_name: WhereIsPicoRubyGoing.md
|
4
|
+
tags:
|
5
|
+
- PicoRuby
|
6
|
+
- "niche industry"
|
7
|
+
presentation_date: '2024-08-24'
|
8
|
+
presentation_start_time:
|
9
|
+
presentation_end_time:
|
10
|
+
version: 2024.08.24.0
|
11
|
+
licenses: ["MIT License"]
|
12
|
+
slideshare_id:
|
13
|
+
speaker_deck_id:
|
14
|
+
ustream_id:
|
15
|
+
vimeo_id:
|
16
|
+
youtube_id:
|
17
|
+
author:
|
18
|
+
markup_language: :md
|
19
|
+
name: HASUMI Hitoshi
|
20
|
+
email: hasumikin@gmail.com
|
21
|
+
rubygems_user: hasumikin
|
22
|
+
slideshare_user:
|
23
|
+
speaker_deck_user:
|
Binary file
|
Binary file
|
data/images/goshuin.jpg
ADDED
Binary file
|
data/images/gps1.png
ADDED
Binary file
|
data/images/gps2.png
ADDED
Binary file
|
data/images/gps3.png
ADDED
Binary file
|
data/images/headline.png
ADDED
Binary file
|
data/images/kaneko.jpg
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/images/matsue.png
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/images/sugihara.jpg
ADDED
Binary file
|
Binary file
|
data/images/suitouro.png
ADDED
Binary file
|
data/images/toyama01.png
ADDED
Binary file
|
data/images/water.jpg
ADDED
Binary file
|
data/images/water2.jpg
ADDED
Binary file
|
Binary file
|
data/theme.rb
ADDED
@@ -0,0 +1,189 @@
|
|
1
|
+
# puts font_families.sort
|
2
|
+
@xxx_large_font_size = screen_size(10 * Pango::SCALE)
|
3
|
+
@xx_large_font_size = screen_size(8 * Pango::SCALE)
|
4
|
+
@x_large_font_size = screen_size(7 * Pango::SCALE)
|
5
|
+
@large_font_size = screen_size(5.5 * Pango::SCALE)
|
6
|
+
@normal_font_size = screen_size(5 * Pango::SCALE)
|
7
|
+
@small_font_size = screen_size(4 * Pango::SCALE)
|
8
|
+
@x_small_font_size = screen_size(3.5 * Pango::SCALE)
|
9
|
+
@xx_small_font_size = screen_size(2.5 * Pango::SCALE)
|
10
|
+
|
11
|
+
@font_family = find_font_family('Kiwi Maru')
|
12
|
+
@monospace_font_family = 'Courier Prime'
|
13
|
+
@title_font_family = find_font_family('Kiwi Maru')
|
14
|
+
|
15
|
+
# colors
|
16
|
+
foreground = "#111111"
|
17
|
+
red = "#8f3230"
|
18
|
+
blue = "#5b9bbb"
|
19
|
+
black = "#000000"
|
20
|
+
dark_gray = "#333333"
|
21
|
+
light_gray = "#a9a7ad"
|
22
|
+
preformatted_foreground = "#00ffc2"
|
23
|
+
|
24
|
+
@default_headline_line_color = light_gray
|
25
|
+
@default_headline_line_width = 2
|
26
|
+
@default_headline_line_expand = true
|
27
|
+
|
28
|
+
@default_emphasis_color = red
|
29
|
+
@default_emphasis_level2_color = "#ffffff"
|
30
|
+
|
31
|
+
set_graffiti_color red
|
32
|
+
set_graffiti_line_width 5
|
33
|
+
|
34
|
+
#@table_frame_color = "#ffffff"
|
35
|
+
#@table_fill_color = "#0f0428"
|
36
|
+
#@table_body_frame_color = "#ffffff"
|
37
|
+
#@table_body_fill_color = "#3f3468"
|
38
|
+
#@table_head_frame_color = "#ffffff"
|
39
|
+
#@table_head_fill_color = "#rf0428"
|
40
|
+
|
41
|
+
@preformatted_fill_color = black
|
42
|
+
@preformatted_frame_color = red
|
43
|
+
@preformatted_frame_width = 5
|
44
|
+
# @preformatted_centering = true
|
45
|
+
|
46
|
+
@space = screen_y(1)
|
47
|
+
|
48
|
+
@image_slide_number_start_flag_color = blue
|
49
|
+
@image_slide_number_goal_flag_color = red
|
50
|
+
|
51
|
+
#@slide_headline_hide = true
|
52
|
+
|
53
|
+
@slide_background_image = 'images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.003.png'
|
54
|
+
include_theme("slide-background-image")
|
55
|
+
|
56
|
+
@title_slide_background_image = 'images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.002.png'
|
57
|
+
include_theme("title-slide-background-image")
|
58
|
+
|
59
|
+
include_theme('default')
|
60
|
+
|
61
|
+
match(Slide, HeadLine) do |heads|
|
62
|
+
heads.hide
|
63
|
+
heads.margin_top = -120
|
64
|
+
end
|
65
|
+
match(Slide) do |slides|
|
66
|
+
slides.horizontal_centering = true
|
67
|
+
slides.margin_left = 100
|
68
|
+
slides.margin_right = 100
|
69
|
+
slides.prop_set("foreground", foreground)
|
70
|
+
end
|
71
|
+
|
72
|
+
match TitleSlide do |slides|
|
73
|
+
slides.margin_right = 550
|
74
|
+
slides.prop_set("foreground", foreground)
|
75
|
+
slides.prop_set "style", "normal"
|
76
|
+
end
|
77
|
+
match TitleSlide, Title do |title|
|
78
|
+
title.margin_top = 10
|
79
|
+
title.prop_set "size", @xxx_large_font_size
|
80
|
+
title.prop_set "font-family", @title_font_family
|
81
|
+
title.prop_set "weight", "normal"
|
82
|
+
end
|
83
|
+
match TitleSlide, Subtitle do |subtitle|
|
84
|
+
subtitle.margin_left = 50
|
85
|
+
subtitle.prop_set "size", @large_font_size
|
86
|
+
subtitle.prop_set "font-family", @title_font_family
|
87
|
+
subtitle.prop_set "weight", "bold"
|
88
|
+
end
|
89
|
+
match TitleSlide, Author do |authors|
|
90
|
+
authors.margin_top = 70
|
91
|
+
authors.prop_set "size", @large_font_size
|
92
|
+
end
|
93
|
+
match TitleSlide, ContentSource do |cs|
|
94
|
+
cs.margin_top = 20
|
95
|
+
cs.prop_set "size", @small_font_size
|
96
|
+
cs.prop_set "weight", "bold"
|
97
|
+
cs.prop_set "foreground", red
|
98
|
+
end
|
99
|
+
match TitleSlide, Place do |cs|
|
100
|
+
cs.margin_top = 20
|
101
|
+
cs.prop_set "size", @x_small_font_size
|
102
|
+
end
|
103
|
+
match TitleSlide, Date do |date|
|
104
|
+
date.prop_set "size", @x_small_font_size
|
105
|
+
date.prop_set "weight", "bold"
|
106
|
+
date.prop_set "foreground", red
|
107
|
+
end
|
108
|
+
match TitleSlide, Institution do |i|
|
109
|
+
i.prop_set "size", @x_small_font_size
|
110
|
+
end
|
111
|
+
|
112
|
+
#@slide_logo_image = 'images/mark_g.png'
|
113
|
+
#include_theme('slide-logo')
|
114
|
+
|
115
|
+
@item_image_1 = 'images/assets/bullet-point-36.png'
|
116
|
+
@item_image_2 = 'images/assets/bullet-point-36.png'
|
117
|
+
@item_image_3 = 'images/assets/bullet-point-24.png'
|
118
|
+
|
119
|
+
include_theme("default-item-mark")
|
120
|
+
|
121
|
+
add_image_path("rabbit-images")
|
122
|
+
|
123
|
+
slide_body = [Slide, Body]
|
124
|
+
item_list_item = [ItemList, ItemListItem]
|
125
|
+
|
126
|
+
indent = 50
|
127
|
+
|
128
|
+
match(*(slide_body + (item_list_item * 1))) do |items|
|
129
|
+
name = "item1"
|
130
|
+
items.delete_pre_draw_proc_by_name(name)
|
131
|
+
items.delete_post_draw_proc_by_name(name)
|
132
|
+
draw_image_mark(items, @item_image_1, name, indent: indent)
|
133
|
+
end
|
134
|
+
|
135
|
+
match(*(slide_body + (item_list_item * 2))) do |items|
|
136
|
+
name = "item2"
|
137
|
+
items.delete_pre_draw_proc_by_name(name)
|
138
|
+
items.delete_post_draw_proc_by_name(name)
|
139
|
+
draw_image_mark(items, @item_image_2, name, indent: indent)
|
140
|
+
end
|
141
|
+
|
142
|
+
match(*(slide_body + (item_list_item * 3))) do |items|
|
143
|
+
name = "item3"
|
144
|
+
items.delete_pre_draw_proc_by_name(name)
|
145
|
+
items.delete_post_draw_proc_by_name(name)
|
146
|
+
draw_image_mark(items, @item_image_3, name, indent: indent)
|
147
|
+
end
|
148
|
+
|
149
|
+
enum_list_item = [EnumList, EnumListItem]
|
150
|
+
|
151
|
+
match(*(slide_body + enum_list_item + item_list_item)) do |items|
|
152
|
+
name = "enum-item1"
|
153
|
+
items.delete_pre_draw_proc_by_name(name)
|
154
|
+
items.delete_post_draw_proc_by_name(name)
|
155
|
+
draw_image_mark(items, @item_image_1, name, indent: indent)
|
156
|
+
end
|
157
|
+
|
158
|
+
match(*(slide_body + enum_list_item + (item_list_item * 2))) do |items|
|
159
|
+
name = "enum-item2"
|
160
|
+
items.delete_pre_draw_proc_by_name(name)
|
161
|
+
items.delete_post_draw_proc_by_name(name)
|
162
|
+
draw_image_mark(items, @item_image_2, name, indent: indent)
|
163
|
+
end
|
164
|
+
|
165
|
+
# table
|
166
|
+
all_table = ["**", Table]
|
167
|
+
match(*(all_table + [TableBody, TableRow, TableCell])) do |cells|
|
168
|
+
set_font_family(cells, @monospace_font_family)
|
169
|
+
end
|
170
|
+
match(*(all_table + [TableHead, TableRow, TableHeader])) do |headers|
|
171
|
+
set_font_family(headers, @monospace_font_family)
|
172
|
+
end
|
173
|
+
|
174
|
+
match("**", Emphasis) do |texts|
|
175
|
+
texts.prop_set("foreground", "#ff0000")
|
176
|
+
texts.prop_set("weight", "normal")
|
177
|
+
end
|
178
|
+
|
179
|
+
match("**", PreformattedBlock) do |block|
|
180
|
+
# assume console
|
181
|
+
block.prop_set("foreground", preformatted_foreground)
|
182
|
+
# block.prop_set("background", dark_gray)
|
183
|
+
end
|
184
|
+
# ↑↓ the order matters
|
185
|
+
match("**", SyntaxHighlightingBlock) do |block|
|
186
|
+
# assume ruby
|
187
|
+
block.prop_set("foreground", black)
|
188
|
+
end
|
189
|
+
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-hasumikin-OsakaRubyKaigi04
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2024.08.24.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- HASUMI Hitoshi
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-08-28 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: Presentation slide for Euruko 2023
|
28
|
+
email:
|
29
|
+
- hasumikin@gmail.com
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- ".rabbit"
|
35
|
+
- README.rd
|
36
|
+
- Rakefile
|
37
|
+
- WhereIsPicoRubyGoing.md
|
38
|
+
- config.yaml
|
39
|
+
- images/fukuoka2020.jpg
|
40
|
+
- images/fukuoka2022.jpg
|
41
|
+
- images/goshuin.jpg
|
42
|
+
- images/gps1.png
|
43
|
+
- images/gps2.png
|
44
|
+
- images/gps3.png
|
45
|
+
- images/headline.png
|
46
|
+
- images/kaneko.jpg
|
47
|
+
- images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.001.png
|
48
|
+
- images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.002.png
|
49
|
+
- images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.003.png
|
50
|
+
- images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.004.png
|
51
|
+
- images/keynote_template_osaka_rubykaigi04/keynote_template_osaka_rubykaigi04.005.png
|
52
|
+
- images/matsue.png
|
53
|
+
- images/rubykaigi2018.png
|
54
|
+
- images/rubykaigi2020.png
|
55
|
+
- images/rubykaigi2021.png
|
56
|
+
- images/rubykaigi2023.png
|
57
|
+
- images/rubyprize.png
|
58
|
+
- images/sugihara.jpg
|
59
|
+
- images/sugihara2.jpg
|
60
|
+
- images/suitouro.png
|
61
|
+
- images/toyama01.png
|
62
|
+
- images/water.jpg
|
63
|
+
- images/water2.jpg
|
64
|
+
- pdf/OsakaRubyKaigi04-WhereIsPicoRubyGoing.md.pdf
|
65
|
+
- theme.rb
|
66
|
+
homepage: https://slide.rabbit-shocker.org/authors/hasumikin/OsakaRubyKaigi04/
|
67
|
+
licenses:
|
68
|
+
- MIT License
|
69
|
+
metadata: {}
|
70
|
+
post_install_message:
|
71
|
+
rdoc_options: []
|
72
|
+
require_paths:
|
73
|
+
- lib
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
requirements: []
|
85
|
+
rubygems_version: 3.5.11
|
86
|
+
signing_key:
|
87
|
+
specification_version: 4
|
88
|
+
summary: A Beginner's Complete Guide to Microcontroller Programming with Ruby
|
89
|
+
test_files: []
|