このワークショップは対象者毎にアレンジしたバージョンが存在します。このバージョンは次のような方向けのバージョンで、1番難易度が高いバージョンです。
- 世の中で言われているベストプラクティスが自分にあったものかどうかを取捨選択できる人
- 書籍「リーダブルコード」を読んで日々リーダブルコード(=読んだ人が読みやすいコード)を書いている人、または、書籍を読んでいないが日々リーダブルコードを書いている人。(本人が「リーダブルコードを書いている」と考えていれば書いているとします。)
- 自分だけでなくチーム全体でもリーダブルコードを書きたい人
最大参加人数は8人です。
このワークショップの目的は「チームとしてリーダブルコードを書く」方法を体験することです。
参加者のチームがこの方法と完全に同じ方法を使えるわけではありませんが、チームで実践する際の参考になるはずです。
このワークショップで体験する「チームでリーダブルコードを書く」方法は、書籍「リーダブルコード」の解説に書かれていることです。こちらも合わせて読むと理解が進みます。
- 10:30〜 アイスブレイク
- いつも通りコードを書ける状態にするために少し手を動かします。
- 11:45〜 イントロダクション(講義)
- どうしてチームでリーダブルコードを書く必要があるのか、チームでリーダブルコードを書くにはどうしらよいか、そのためにこの講座では何をするかについて説明します。
- 11:15〜 個人として課題を実装
- 各自課題を実装します。自分の精一杯のリーダブルコードを書いてください。
- 12:30〜 昼食
- 講師も交えながら昼食をとります。午前中やってみて感じたことや普段悩んでいることなどを講師に相談したり、参加者同士で共有します。
- 13:30〜 ペアとして課題を実装
- 午前中に実装したコードを他の参加者が実装したコードと交換します。午後は、交換したコードをベースに開発を継続します。他の参加者が書いたコードから「リーダブルコードを見つけながら」開発を進めることがポイントです。
- 14:45〜 休憩
- 15:00〜 参加者が見つけたリーダブルコードを共有
- 各参加者が見つけたリーダブルコードを参加者全体と共有します。実際のコードの中から「リーダブルコードを見つけられること」の確認と、「見つけたリーダブルコードを共有すること」の練習です。
- 15:30〜 コミットメールを読んでよいコミットにコメント
- 参加者全員の今日のコミットを読んで、よいと思ったコミットにコメントします。チームでリーダブルコードを共有する方法を体験します。
- 16:00〜 まとめとこれからやるべきこと(講義)
- このワークショップでやったことを再確認します。
- 16:10〜 感想ヒアリング・質疑応答
- 参加者に順に講義の感想を聞きます。
- 参加者からの質問に回答します。
- ワークショップをスムーズに進めるための準備を整えること
- 参加者がリラックスすること
- GitHubにワークショップのためのリポジトリーを作成すること
- コミットメール受信の準備をすること
icebreaker/以下にあるスライドを参照。
- 自分のGitHubアカウントで「${自分のアカウント名}-rcw」というリポジトリーを作ります。
- このワークショップ用コミットメール配信メーリングリストに登録します。
- ワークショップの目的を共有
- 目的を実現するためにやること・やらないことを共有
introduction/以下にあるスライドを参照。
- 午後の作業の布石
- 課題の仕様を理解するため
- 読まれることを意識して書かれたコードを用意するため
- いつもより意識してリーダブルなコードを書く
- 自分が工夫した点をメモに残す
- 各自、課題を確認する
- 講師は、参加者の様子に気を配り、リーダブルなコードを書くという本来の忘れて実装することに意識がいかないようにフォローする
- 講師は、随時、自分がリーダブルコードを書くために工夫した点をメモに残すことを促す
- メモの残し方はスライドにして常に表示しておく。こうすることで参加者はいつでも参照できる。
- メモはこのリポジトリーのissueに書く。全員で共通のissueを使う。
implementation/以下にあるスライドを参照。
- 空腹を満たす
- 午前中に感じたことを共有する
- ご飯を食べる
- 講師も一緒にご飯を食べる
- 午前中の感想を聞いてみる
- 疑問点があるなら回答する
- リーダブルコードを発見する
- リーダブルかどうかの基準は読む人。「読む人」が読みやすいならリーダブル。
- 自分以外の誰かと一緒に実装する状況を再現するために、コードを交換して引き続き課題を実装すること。
- 参加者が他の人のコードから「リーダブルコード」を見つけること。
- 「リーダブルコード」と判断した理由や、どのようにして「リーダブルコード」を見つけたか(どうやって気付いたか)をメモしておく。
- 見つけた「リーダブルコード」をその後の開発に役立てること。
- 「リーダブルじゃないコード」ばかりに目がいかないようにする。
- 他の人が見つけていない凝ったコードを見つけるのは目的ではない!単純なコードでもリーダブルなコードを見つけること。
code-change/以下にあるスライドを参照。
- グループの誰かのリポジトリーをforkする。
- 誰のリポジトリーをforkするかは講師から指示がある
- forkしたリポジトリーがやっていたところから課題を再開する
- コミットログなどを参考にする
- 午前中と同じ仕様を実装することになるかもしれないけど、OK
- ベースが違うので違う実装が適しているかもしれない
- よいコードを見つけたら全員共用のissueにどうしてそのコードがよかったかをメモしていく。
- メモは後で他の人にどうしてそのコードがよいのかを説明するために使うので、次の情報も含めること。
- 対象のコード
- どうしてそのコードがよいと思ったか
- そのコードがよいと気づいたきっかけ
- メモは後で他の人にどうしてそのコードがよいのかを説明するために使うので、次の情報も含めること。
- 講師は、参加者が「リーダブルじゃないコード」ばかりに目がいってしまって「リーダブルコード」を見つけることができないときは、「リーダブルコード」を見つけるこつを教えてあげること。
- リーダブルコードを見つけられることを確認すること
- 意識すれば「リーダブルコード」を見つけられるし、他の人に説明もできるということを実感すること。
share-readable-code/以下にあるスライドを参照。
- 目的を再確認する
- issueに集まったリーダブルコードメモを講師が紹介する
- 他のメンバーのコードからリーダブルコードを見つけ、それをチームで共有することを体験すること
- コミットを読みながらリーダブルコードを見つけることを体験する
- リーダブルコードをチームで共有することを体験する
commit-email/以下にあるスライドを参照。
- 各自、一日分のコミットメールを読みながらリーダブルコードを探す
- リーダブルコードを見つけたら、なぜリーダブルだと思ったかを返信する
- 他の人のリーダブルコードコメントを読んでチームでコミュニケーションをとる
- たしかにこれはいいね、自分も取り入れようと思う、とか
- 講師もコミットメールを読みながらリーダブルコードに返信する
- ワークショップでやったことの復習
- 参加者がワークショップで学んだことを日々の開発に取り入れるために明日から何をすればよいかがわかる
conclusion/以下にあるスライドを参照。
- ワークショップでの疑問を解消する
- 学んだことを日々の開発に取り入れる障害を取り除く
- 全員から感想を聞く
- いきなり質疑応答をはじめても萎縮してしまう
- 質疑応答を受け付ける