# モブプログラミング形式

## 何故モブプログラミングか
> 自分のなかだけで閉じていた「学び」を開いてみると、ひとりでは得られない発見や成長がある。
>
> - 一人がもてる知識や視点には、限りがある。
> - 様々な視点・意見に触れることは、自分の世界観や理解を深めることにつながる。
> - 話すことで初めて、自分が何を理解していて、何を理解していないのかが明らかになる。
> - 人は、他者の存在や眼差しを意識することで、より頑張ることができる。
> - 一緒に学ぶ仲間や話し相手、ライバルなど、いろいろなかたちで他の人との関係性を構築する。
> - 完璧になってから学びの成果を披露するのではなく、途中段階で他の人と共有し、フィードバックを得る。
>
> by [ラーニング・パターン, No.3 学びをひらく](https://learningpatterns.sfc.keio.ac.jp/No3.html)

---
## モブプログラミングのやり方
モブプログラミングとは、みんなで一つの画面を見てワイワイしながらプログラミングすること。
- 参考記事
  - [モブプログラミングを実際にやってみた](https://qiita.com/TAKAKING22/items/31e027dfb6ea8b1a8d69)
  - [あなたのチームはどんなモブ？モブプログラミング・フォーメーション！](https://martin-lover-se.hatenablog.com/entry/2019/12/06/230536)
- 前提
  - ドライバ：作業者、実際にコードを書く人のこと。
  - ナビゲータ：どのように取り組むかを指示する人のこと。ドライバ以外は全員ナビゲータ。
- 複数人で作業する意義
  - 分かること、分からないことを言語化する（伝える）練習。
  - 考え方、細かな操作等といったノウハウの共有。
- 積極的にすべきこと
  - 今考えていることを言語化する。
    - 言葉に出さず悩んでいるだけだと、他者からは何もわからない。ちょっと考える時間が欲しいなら「30秒待って」とか、とにかく今やっていること、やろうとしていることを伝えることが大事。
  - 相談し合う。
    - ドライバは分かる場合でも、わからない場合でも、言語化しよう。黙々と作業するのでは、他者からは何もわからないし、ただただ悩んでいるだけでも同様に分からない。
    - ナビゲータは、今すべきことを言語化しよう。ドライバはナビがないとどこに向かうべきかが分からず、ゴールにたどり着けない。
    - 10分ぐらい悩んでも相談しあっても解決できないなら、TAや教員に相談しよう。
- 気にしなくて良いこと
  - 作業の進展ペースの遅さ
    - グループ毎のペースで構わないので、メンバ全員が分かるまでじっくり取り組もう。
- 駄目なやり方
  - 分かる人が脳内自己完結してコードを書いて終了する。
    - ドライバ自身がアイデアを持っている場合には「こうして良い？」のように提案し、ナビゲータの理解を得てから作業しよう。
  - 誰が何をしているのか分からない状況に陥る。
    - お互いが独立して作業しているのは駄目。それは授業外でやれば良い。ここでは考え方などを言語化し伝える練習を兼ねているため、必ず意識共有しよう。

```{note}
- 何をしたら良いのか分からないなら「今何したら良いの？」。
- 他の人が何してるか分からないなら「今何してるの？」。

何でも尋ねよう！尋ねることができる時間であり、そのために授業中に時間を設けてやっている。
```

---
## 共通補足
- 説明文では便宜上「変数x」「変数y」と記載しているが、その変数が何を表すのか分かるように、適切な変数名を付けよう。
- 演習毎に記録を Google ドライブに残す。
  - グループ1が演習1について記録するなら「ex/ex1/group1」に書こう。
