進め方

: author

須藤功平

: institution

株式会社クリアコード

: content-source

リーダブルコード勉強会 in 筑波大

: date

2015-07-04

: allotted-time

15m

: theme

clear-code

この勉強会の目的

((‘tag:center’)) ((‘tag:margin-bottom * 2’)) リーダブルコードに関してn ↓の2つを知る・体験する

* どういうコード?
* どうやって書くの?

目的の理由

複数人開発ではn リーダブルn コードがn 役に立つから

複数人開発

* 仕事での開発
* OSSの開発
* 1人でも年単位で続く開発
  * 去年の自分と今年の自分は同じ?

関係者紹介:企画

((‘tag:center’))((‘tag:margin-bottom * 2’)) この場を作った人たち

* 横山さん
* 高杉さん
* 寺田さん
* 今川さん

関係者紹介:スポンサー

((‘tag:center’))((‘tag:margin-bottom * 2’)) 資金面で支援したみなさん

* クロノファクトリー
* SEゼミ
* アジャイルチームを支える会
* 筑波大学 enPiT

関係者紹介:メンター

((‘tag:center’))((‘tag:margin-bottom * 2’)) みなさんのサポート

* 社会人
  * Ruby本体の開発者が混ざっている
* 筑波大学生
* 筑波大学院生

関係者紹介:トレーナー

((‘tag:center’))((‘tag:margin-bottom * 2’)) 進行と全体を気にかける係

* 須藤
* リーダブルコード(本)の\n
  「解説」の著者

この勉強会の目的

((‘tag:center’)) ((‘tag:margin-bottom * 2’)) リーダブルコードに関してn ↓の2つを知る・体験する

* どういうコード?
* どうやって書くの?

オススメの目的の実現方法

OSSの開発に参加n ((‘note:(詳細は勉強会の最後で)’))

今日の目的の実現方法

* 「知る→体験する」の狙い
  * 説明→なるほど?(知る)
  * 実践→実感!(体験する)
* ↑の対象
  * どういうコード?
  * どうやって書くの?

どういうコード?

読む人がn 読みやすいならn リーダブル

あなたのイメージは?

* 「誰しも」リーダブルだと思う\n
  コードの書き方がある\n
  (('note:(誤解を防ぐための補足:「多くの人が」ならあるよ!)'))
* すべてのコードを↑な書き方で\n
  書ける
* ↑ならリーダブルコード

違う!

* 他の人がリーダブルだから\n
  自分もリーダブルだと\n
  思わなきゃいけないじゃない!\n
  (('note:(誤解を防ぐための補足:自分も思ったならそれでよい)'))
* ↑を勘違いしている人が多い

リーダブルコード

読む人がn 読みやすいならn リーダブル

本にはこう書いている

# blockquote
# title = 1章 理解しやすいコード p. 3

コードは他の人が最短時間で理解できるように書かなければいけない。

((‘note:他の人(読む人)が理解しづらい→本が目指しているものじゃない’))

リーダブルコード

読む人がn 読みやすいならn リーダブル

今日の目的の実現方法

* 「知る→体験する」の狙い
  * 説明→なるほど?(知る)
  * 実践→実感!(体験する)
* ↑の対象
  * どういうコード?
  * ((*どうやって書くの?*))

どうやって書くの?

* 読む人のことを考えて書く
  * 読む人を「想像」は難しい
  * 読む人の「経験」が(('note:たくさん'))あると簡単
* 書くだけじゃなく読む経験を!
  * ただし、単に読む経験じゃない
  * 「読みやすい」の経験が大事

「読みやすい」の経験

* 「読みやすい」経験を再現
  * →読む人が読みやすいコード

((‘wait’)) ((‘tag:center’)) ((‘tag:large’)) リーダブルコード!

知ったこと

* どういうコード?
  * 読む人が読みやすいコード
* どうやって書くの?
  * 読みやすかった経験を再現

((‘wait’)) ((‘tag:center’)) ((‘tag:large’)) 実践だ!

実践方法の概要

((‘tag:center’)) ((‘tag:large’)) コードをn 読まざるを得ないn 状況で開発

((‘ ’))

実践

(1) 全員共通の課題を用意
(2) (('wait'))課題を実装\n
    (('note:まだ読む人視点はないけどリーダブルコードで書く'))
(3) (('wait'))実装を交換
(4) (('wait'))交換した実装で開発継続
    * ↑他の人のコードを読まないと\n
      継続して開発できない!\n
      (('note:「読みやすい」経験を積む→'))\n
      (('note:それを活かしてリーダブルコードで書く'))

今日の流れ - 午前

* 10:00- 進め方の説明
* 10:40- 実装
* 12:00- 無料ランチ\n
  (SEプラスさん提供!)
* 13:00- ランチセッション

今日の流れ - 昼下がり

* 13:30- メビュー
* 13:40- チェンジして実装
* 15:30- グループふりかえり
* 16:10- ふりかえり内容紹介

メビュー

* メビュー?(Mentor's View)
  * レビューに似ているけど違う
  * レビュー:問題を見つける
  * メビュー:メンターの視点を共有

今日の流れ - 夕方

* 16:20- まとめ
* 16:30- メビュー・質疑応答
* 17:00- アンケート記入
* 17:30- 無料懇親会