PBL反省会

# まず始めに
**PBL(Project Based Learning)**とは学生が主体となり何かを成し遂げるプロジェクト実習型学習の事である。PBLでは研究とは違った視点で、自由に何にでも挑戦することが可能だ。例えば「RaspberryPieを沢山繋げて高度な計算をする」というプロジェクトがあったり、「遅刻の言い訳を考える」といったプロジェクトなど、実に幅が広い。特にPBLでは学年や研究室という垣根を越えてプロジェクトチームを構成できるため、仲の良いもの同士でチームを組むこともドリームチームを組むことも可能だ。学年が下の人にとっては新しいことに挑戦でき、成長に繋げられる機会ではないかと考えている。
私はプロジェクトのリーダーとして活動し、3か月程経っている。**そんなPBLだが、あと一ヶ月で終わってしまう。**なので、今回はその反省を述べたいと思う。

# 反省~良かったところ~
## 絶対王政を布いた事
**絶対王政とはコーディング規約の事である。**プログラムを書く上で出来るだけ守ってほしいルールについて一番最初に決めておいた。これには2つのメリットがあった。まず**宗教戦争が起きないという事だ。**例えば、キャメル記法派とスネーク記法派が争った時を考えてほしい。その聖戦の跡として残るプログラムはどこか気持ちの悪いものになるだろう。それは綺麗好きの私としては心の安寧のために避けたい。なので、最初に記法や`var`は使うな等の規約を設けた。そのため、プログラムに統一性は出せたと思う。次に**全員にプログラムを綺麗に書こうという意識が多少芽生えたという事だ。**変数名はちゃんと考えよう、マジックナンバーは避けようといった事を全員で行えたのではないかと感じている。それによりバグが減った・作業時間が減ったという事はないが、ストレスないプログラミングに繋がったと考えている。

プログラムは綺麗に書くものだ。そう2,3年前の自身に言ってやりたい。

## Github講習会を開いたこと
**githubとは何か？　それはDropboxの事だ！**

一番最初にメンバー全員にgithubの使い方講習会を行った。使い方講習会ではgithubを使うと何故良いのか、githubはどう使うかなどを説明した。それにより、**githubの存在価値・導入理由を理解してもらえたと考えている。**githubを使える人は感じていると思うが、githubは共同作業をする上で欠かせないツールだ。それの使い方を最初に理解してもらうことにより、共同作業を簡単に始めることが出来た。

もしもあなたがまだLINEやDiscordに直接プログラムを送信しているなら、是非githubを利用してほしい。学習コスト以上の見返りがあるはずだ。

## コミュニケーションを取るようにした
「コミュニケーションは大切だ」とはよく言われる。私はそれを改めて実感できた。コミュニケーションを取ることで作業の停滞や進捗が分からないといった事態を避けることが可能だ。これは相手のやりがいにも関わる。全く作業が進まずにただ時間が過ぎたときの事を考えてほしい。虚しい思いをするのは想像に容易い。なので、答えをあげられなくても「こういうのはどうだろうか」的な案を上げると良いだろう。
逆も同じである。自分が何か分からないところがあったら積極的に聞いたほうが良い。

# 反省~失敗したこと~
## 設計をしていない
技術的に難しいところも無いし、複雑になる部分も少ない、また、私の設計力も低く、どうせ変更をするだろうと考え設計をせずにそのまま作業を進めた。結果としてこれは失敗だった。理由としては以下のものがある。
#### 進捗が分かりにくい
**設計がされていないので、どの機能が完了したか、どの機能が完了していないのかが分からないのだ。**そのため、今大体どれくらい終わっているのか、急ぐべきなのか、この作業が終わったら次に何をすべきかがイメージしにくいという結果になった。見通しを立てるためにも設計はすべきだ。

#### クライアントとサーバ間の通信の仕様が分からない
クライアントとサーバ間で行う通信の仕様が分からないため、お互い**何処から実装すべきか、どんなデータを渡せば良いのかが分からない**という事態が発生した。その仕様を考えるために何度シーケンス図を描いたことか・・・

## ライブラリにp5.jsを採用してしまった
p5.jsとはHTMLのcanvasタグ上に矩形や円を描くことが可能なライブラリだ。とても簡単に使うことが出来る。そんなp5.jsを採用することが悪だという事を言うつもりはない。ただ、p5.jsの選定理由の一番に「学習コストが低いから」があったことはとても問題だ。p5.jsは導入も手軽で使うのもとても簡単だ。しかし、少しでも難しいことは自分で実装しなくてはいけないのだ。例えばクリックされたかの検知、アニメーション、z-indexは自分で実装する必要がある。そのため、これらの実装のために私はこれからスパゲッティコードになりえる危険のあるコードを書こうと考えている。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">今日の格言 <a href="https://twitter.com/hashtag/%E3%81%A1%E3%82%87%E3%81%86%E3%81%9C%E3%81%A4%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%82%81%E3%82%82%E3%82%8A%E3%83%BC%E3%81%A1%E3%82%83%E3%82%93?src=hash&amp;ref_src=twsrc%5Etfw">#ちょうぜつエンジニアめもりーちゃん</a> <a href="https://t.co/qxa2lIIUGo">pic.twitter.com/qxa2lIIUGo</a></p>&mdash; ひさてるさん (@tanakahisateru) <a href="https://twitter.com/tanakahisateru/status/1332415756567408640?ref_src=twsrc%5Etfw">November 27, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> 

***「悩む理由が学習コストなら採用しなさい。　採用する理由が学習コストならやめときなさい。」***

学習コストでライブラリを選んでおいて、よく人にgithubを進められたものだ。しかし、どれだけ後悔しても遅いだろう。立ち止まって引き返すよりは進んだほうが早い。そう言って私は結局 p5.js を書く。

# 最後に
PBLも残り一ヶ月となった。様々な成功・失敗はあれど楽しく活動できたと考えている。ところで、今年のPBL成果発表会はGoogleMeetを用いて行うそうだ。プロジェクト演習と合同でおこなうためきっと300人以上の人間が同じチャットルームに接続するだろう。その場で自分の制作物の説明ができるのは実に嬉しい。この状況だったら現在進めている成果物の価値を体感してもらえるはずだ。この謎の伏線のような発言を持ってこの記事を終わろうと思う。もしも暇があったら是非PBL成果発表会に来ていただきたい。

> 「進むたびに負債が残り、後ろを振り返れば目を塞ぎたくなるようなものが成果として残るだろう。人が成長する生き物である以上それは避けられないのだ。」
> Kaito