Slide 1

Slide 1 text

ドキドキライブコーディング in BuriKaigi2019 ~全てが0になる、全てがAになる~ @RyotaMurohoshi 2019/01/26(土) Burikaigi 2019

Slide 2

Slide 2 text

「ドキドキライブコーディング」 を見るの、皆さんは初めてですか?

Slide 3

Slide 3 text

「ドキドキライブコーディング」は 2014年、小島さん・石野さん・鈴木さんの 3人ではじまりました

Slide 4

Slide 4 text

2015/1/31(土) 富山県 呉羽ハイツ

Slide 5

Slide 5 text

第2回ドキドキライブコーディング を観客として、見ていました。

Slide 6

Slide 6 text

『めちゃくちゃやばい。 C#すげぇ。この人達やばい』 そう思ったんです。

Slide 7

Slide 7 text

その時のテーマは 「七並べ」

Slide 8

Slide 8 text

「七並べ」のロジックを C#で実装するプログラムバトル

Slide 9

Slide 9 text

アルゴリズムを駆使したバトル? 違う!それ"だけ"じゃない!

Slide 10

Slide 10 text

例えば、小島さんの作戦 「相手のロジックをすり替え、 挙動を書き換える」

Slide 11

Slide 11 text

『C#こんなことできるのか! ていうか これって”そういう戦い”か!』

Slide 12

Slide 12 text

ドキドキライブコーディングは 普通の プログラミングバトルじゃない

Slide 13

Slide 13 text

相手の裏を書き C#を駆使し、相手を倒す

Slide 14

Slide 14 text

そして2017年 第4回ドキドキライブコーディング 俺、「むろほし」も参戦

Slide 15

Slide 15 text

2017年のテーマ テーマ : 四人打ちオセロ

Slide 16

Slide 16 text

「むろほし」の作戦 No.1 開始時にマスを書き換える 一手目で全部俺のマス、作戦

Slide 17

Slide 17 text

結果

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

成功

Slide 20

Slide 20 text

しかし失格

Slide 21

Slide 21 text

ある人は言いました 「あれはダメだ。オセロじゃない」

Slide 22

Slide 22 text

 『なるほど。   オセロのルールは   守らなきゃいけないのか。』

Slide 23

Slide 23 text

時が経ち 第5回 四人打ちオセロ 再び

Slide 24

Slide 24 text

「むろほし」の作戦 No.2 他の3人の挙動を乗っ取り 終局まで全部コントロール、作戦

Slide 25

Slide 25 text

結果

Slide 26

Slide 26 text

成功、しかしまた失格

Slide 27

Slide 27 text

さらにさらに 第6回 四人打ちオセロ またまた

Slide 28

Slide 28 text

『流石に今回は、真面目にやろう 三度目だし・・・』

Slide 29

Slide 29 text

『そう言えばこの四人打ちオセロ チーム戦だった・・・』

Slide 30

Slide 30 text

「むろほし」の作戦 No.3 石野さんをいい感じにサポート 石野さんに勝ってもらおう!作戦

Slide 31

Slide 31 text

結果

Slide 32

Slide 32 text

敗北

Slide 33

Slide 33 text

ただそれ以上に悔しかったのは、

Slide 34

Slide 34 text

バトル後のコメント 「今回は破壊力が足りなかったんじゃない?」 「小利口にまとまりすぎでは?」 「自分の役割がわかっていないのでは?」

Slide 35

Slide 35 text

そこまで言うなら やってやんよ!

Slide 36

Slide 36 text

ここから 今回の話

Slide 37

Slide 37 text

作戦名

Slide 38

Slide 38 text

〜全てが0になる  全てがAになる〜

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

● 16[byte]のデータソース ● エンコードし、デコード ● 元のデータソースと、 デコード結果を比較 ● 1000000回繰り返し ● ここまでかかる時間で勝負

Slide 42

Slide 42 text

「むろほし」の実装

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

元のデータソースを Clearする (0で書き換える)

Slide 46

Slide 46 text

エンコード結果は固定 『"AAAAAAAAAAAAAAAAAAAAAA=="』 デコード結果も固定 『new byte[16]』

Slide 47

Slide 47 text

〜全てが0になる  全てがAになる〜

Slide 48

Slide 48 text

Base64での 処理時間バトル

Slide 49

Slide 49 text

エンコード・デコード ちゃんとした! ※ただしデータソースは書き換えた

Slide 50

Slide 50 text

注意!

Slide 51

Slide 51 text

こう言う感じで意図せず、配列やリスト の中身を書き換えて、副作用を与えること 本当にやっちゃダメだぞ!約束だ! 本当に、普通のコードじゃダメだぞ!約束だ!

Slide 52

Slide 52 text

おまけ 実際は、「bytes.AsSpan().Clear()」 よりも、forで回して0クリアした方が早かった 面白いから、こっちを採用したよ!

Slide 53

Slide 53 text

ドキドキライブコーディング in BuriKaigi2019 ~全てが0になる、全てがAになる~ @RyotaMurohoshi 2019/01/26(土) Burikaigi 2019

Slide 54

Slide 54 text

Fin