$30 off During Our Annual Pro Sale. View Details »

ドキドキライブコーディング2019 #Burikaigi2019

ドキドキライブコーディング2019 #Burikaigi2019

2019/01/26(土) 富山県宇奈月国際会館セレナで開催された #Burikaigi2019 の発表資料です。

RyotaMurohoshi

January 26, 2019
Tweet

More Decks by RyotaMurohoshi

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  17. 結果

    View Slide

  18. View Slide

  19. 成功

    View Slide

  20. しかし失格

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. 結果

    View Slide

  26. 成功、しかしまた失格

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. 結果

    View Slide

  32. 敗北

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. ここから
    今回の話

    View Slide

  37. 作戦名

    View Slide

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

    View Slide

  39. View Slide

  40. View Slide

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

    View Slide

  42. 「むろほし」の実装

    View Slide

  43. View Slide

  44. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  48. Base64での
    処理時間バトル

    View Slide

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

    View Slide

  50. 注意!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  54. Fin

    View Slide