Siv3D 勉強会で学んだことなどを色々駄弁る会

# はじめに
　この記事は [Siv3D Advent Calendar 2022](https://qiita.com/advent-calendar/2022/siv3d) 16日目の記事です。

　こんにちは。Sapph（さふ）です。ありがたいことにプログラミング初心者の私にもこの場で記事を書く機会を頂けたので、僭越ながら色々書こうと思います。
　さて、昨日までの15日分の記事に目を通して、その凄さに怯えているわけですが。いや、これ私が居ていい場所なのか...？そんな思いに駆られながら記事を書いているので拙い部分も多々ありますがお許しください。

　Siv3D を使ってみようと思ったのはちょうど今年。作りたいものがあったので作ろうとしたけれど、普段あまりプログラミングをしない（他分野がメインなため）のもあってソフトウェア開発なんて初めてなので何もわからない。そんなとき、Discord サーバーに勉強会の案内が。そうだ、勉強会開けばいいじゃん。そんなわけで、部活の友人と後輩を巻き込んで Siv3D 勉強会を主催することを決めました。栄えある Siv3D デビューです。せっかくなので、これから主催しようと思っている人向けに色々書こうと思います。

# Siv3D 勉強会 is 何
　文字通り、Siv3D を勉強する会です。講師に Siv3D 開発者の [Reputeless](https://twitter.com/Reputeless) さんをお招きし、**誰でも無料で** 開催することができます。詳しい概要等は [こちら](https://www.dropbox.com/s/eiz3ohkqdt70w1g/Siv3D%20%E8%A8%AA%E5%95%8F%E5%8B%89%E5%BC%B7%E4%BC%9A%E3%81%AE%E6%A1%88%E5%86%85.pdf?dl=0) をご覧ください。

# 主催までの流れ

### はじめの一歩
　まずは Siv3D 勉強会を主催したい旨と、どういう団体（部活動、サークル等）として主催したいのかを Reputeless さんに伝えましょう。私は高校の部活としての開催をお願いしました。[Siv3D 公式 Discord サーバー](https://discord.gg/Zg6BqtMZ) の訪問勉強会チャンネルで伝えるのがいいと思います。Reputeless さんの承諾が下りれば、開催に向けて調整をしていきます。個人情報も多く扱うため、以降は基本的にDMでやりとりをすることになります。

### 開催場所の選び方
　開催場所はいくつかありますが、学校内の施設か公民館を借りて開催することが多いです。どちらも借りられない場合は、オンラインで開催することもできます。私は、まずは高校の施設で開催できないか学校に問い合わせてみることにしました。学校の返答がこちら。

> **学校の施設を使用して開催する場合は生徒主催ではなく学校主催でないと不可**

ですよねー。学校主催での開催は別途金銭がかかってしまったり、PC 部としての実績にならなかったりと色々めんどくさいので、学校での開催は諦めることにしました。

　次の候補として、市内の公民館を借りることを考えました。実際に公民館に足を運び、予約をしようとすると、施設の方からこう言われました。

> **部活動での利用は不可**

いや、は？そんなことある？これはさすがに予想していませんでした。いや、なにがおかしいって、部活動の利用が不可だなんて利用規約に書いていないんですよ。禁止される理由がありません。さすがにおかしいと思い、市に問い合わせると、

> **部活動での利用を許可すると、一般の人が利用しづくなってしまうので利用は許可できません。**

とのこと。いや、予約ガラ空きやったやんけ。なんでや。
　そんなわけで、市内にすら拒絶されてしまったため、市外の公民館に問い合わせたところ、諸々の事情で少し割高になったものの、無事公民館での開催を決定することができました。
　当然ですが、一連の私の文句において、市・学校、Reputeless さん並びに Siv3D に一切の責任はありません。決して貶める意図があるわけではないのであしからず。ただ、こういう想定外のハプニングが起こり得るので、余裕をもって調整するようにしましょう。
　なお、講義では Wi-Fi やプロジェクターの用意が必要です。借りられるかどうかも確認しておきましょう。借りられなくてもものによっては Reputeless さんが用意してくださるので、最悪なくても問題ありません。

### 日程調整
　日程は、こちら側から候補を提示して、 Reputeless さんの予定と照らし合わせて調整します。参加者全員がなるべく参加できた方がいいので、私は事前にアンケートを取って全員の都合が合う日時を提示しました。開催時期については、夏休みや冬休みなど、長期休みに設定すると都合が合いやすいです。公民館を借りて開催する場合は、予約が埋まっている可能性もあるのでそこも加味します。

### その他
主催者ができることやすべきことを書きます。

- [connpass](https://connpass.com/) でイベントページの作成
　学内参加の可否なども決められます。
- 講義内容のリクエストなど
　私の場合、参加者に初心者も上級者もいたので、どちらも楽しめるような内容をお願いしました。
- 参加者アンケート
  参加者がどれくらいプログラミングができるのか（使用言語、Siv3D 使用歴など）アンケートを取って結果を Reputeless さんに渡すと、講義内容の設定に役立つかもしれません。
- Reputeless さんとお食事
　日程次第では、勉強会の運営者は Reputeless さんとお食事をご一緒させていただくことができます。とにかく勉強になります。
- LT 参加者の募集
　当日は LT タイムが設けられるので、勉強会参加者から募りましょう。もちろん自分自身も挑戦してみましょう。

　現時点で、Siv3D は Apple Silicon に対応していませんが、当日は Windows PC の貸し出しがあるので、M1 や M2 しか持っていない人でも参加することができます（事前申請が必要です）。

　さらに、事前に後輩への C++ 講座を開きました。というのも、後輩にコーディングを伴うプログラミングの経験がなかったり、普段 C++ を使っていなかったりした生徒がいたので、最低限の知識だけでもあったほうがいいと思ったので軽く触りだけ教えることにしました。if 文とループと配列あたりが理解できれば十分だと思います。

# 勉強会の感想
　何もかもちんぷんかんぷんだった私の知識が一瞬で増えました。やはり人に教わるのが最善ですね。正直言って活動が精力的でなかった後輩たちも、プログラミングに興味を持って色々始めてくれたので良かったです。ということで皆さん、勉強会を開きましょう。

# 成果物など
　勉強会での講義や OpenSiv3D 実装会などでも色々とサポートしてくださったおかげで、人生初ソフトウェアの開発をしたので紹介します。
　唯一競技プログラミングをしているので、なにかアルゴリズムのビジュアライザを作ってみたいなと思い、バブルソートのビジュアライザを開発しました。ちなみにバブルソートとは、左から順番に隣接する２つの要素を比較し、左のほうが大きければ左右を入れ替える、という操作を繰り返すことで昇順にソートすることができるアルゴリズムです。今回は、長さの異なる棒を並べ替えるようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2964710/de79d285-2d8b-613d-f355-78aca50295be.png)

　「Shuffle」を押すと各要素をシャッフルすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2964710/be9ead71-9c92-cfaf-13ad-3dafb70a3469.png)


　「一手進める」を押すと要素の比較をしてくれます。比較対象には色を付けています...が、現時点では比較が終わった要素に色がついているので、修正が必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2964710/82bc1a06-f2dc-4738-1b4d-55dc0a13c335.png)

　一周比較が終わったところ。何回目の比較なのかは、変数 historyIndex で管理しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2964710/dd5bd748-eb8d-999a-fc4f-d4b2dc007437.png)

　「自動再生」を押すと、自動でソートしてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2964710/f8819dc9-2760-e98c-642b-2a232d9101ef.png)

　ソート完了！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2964710/949afdea-b8b1-bd31-1320-e8cd044b6bea.png)

# これからやりたいこと
　せっかくなのでソートアルゴリズムに限らず、いろんなアルゴリズムのビジュアライザを作ってみようと思います。あと、最近サウンドプログラミングに興味を持ち始めたので、シンセサイザの自作とか面白そうだなーと思っています。

# 終わりに
　ほかの方と比べると10周りくらい映えない内容になってしまいましたが、こういう場で記事を書くのは初めてだったのでとてもいい経験になりました。来年も書く機会を頂ければ（なお受験）、ほかの方に見劣りしない記事を書けたらなと思います。