進め方¶ ↑
: author
須藤功平
: institution
株式会社クリアコード
: content-source
SEゼミ2014 - リーダブルコード勉強会1
: date
2014/06/22
: allotted-time
20m
: theme
clear-code
今日の流れ - 午前¶ ↑
* 10:00- 進め方の説明 * 11:00- 実装 * 12:00- ランチ
今日の流れ - 昼下がり¶ ↑
* 13:00- コード解説 * 13:20- チェンジして実装 * 15:00- グループふりかえり * 16:10- グループ発表
今日の流れ - 夕方¶ ↑
* 17:10- まとめ * 17:20- スポンサーセッション * 18:00- 懇親会
メンター紹介¶ ↑
* 参加者のサポート係 * 現役超優秀エンジニア * 参加者がわからない * →聞くと助けてくれる * →モジモジしてると声をかけてくる
メンター紹介1¶ ↑
((‘tag:center’))((‘tag:margin-bottom * 2’)) たなべさん
* DeNA社員 * C系グループ担当
メンター紹介2¶ ↑
((‘tag:center’))((‘tag:margin-bottom * 2’)) まきもとさん
* クックパッド社員 * Javaグループ担当
メンター紹介3¶ ↑
((‘tag:center’))((‘tag:margin-bottom * 2’)) 結城さん
* クリアコード社員 * Pythonグループ担当
メンター紹介4¶ ↑
((‘tag:center’))((‘tag:margin-bottom * 2’)) 沖元さん
* クリアコード社員 * Rubyグループ担当
メンター紹介5¶ ↑
((‘tag:center’))((‘tag:margin-bottom * 2’)) 川原さん
* 楽天社員 * C系とPythonグループ担当 (('note:(午前)')) * JavaとPythonグループ担当 (('note:(午後)'))
トレーナー紹介¶ ↑
((‘tag:center’))((‘tag:margin-bottom * 2’)) 須藤
* クリアコード代表取締役 * リーダブルコード(本)の\n 「解説」の著者 * 進行と全体を気にかける係
勉強会の目的¶ ↑
((‘tag:center’))((‘tag:large’)) 参加者のn リーダブルコード力のn レベルアップ
((‘ ’))
レベルアップ後のイメージ¶ ↑
# blockquote 自分が書いたコードってどのくらい覚えているんですか? # blockquote ほとんど覚えていないですよ。
レベルアップ後のイメージ¶ ↑
# blockquote 直すときどうするんですか?わからなくなってるじゃないですか。 # blockquote 忘れても見たら簡単にわかるように書いておくんですよ。
実現方法¶ ↑
* やること * コードを書いて読んでまた書く * やらないこと * リーダブルコードを書くための\n テクニックをたくさん伝授
やらないこと¶ ↑
((‘tag:center’)) リーダブルコードを書くためのn テクニックをたくさん伝授
((‘ ’))
テクニック伝授は範囲外¶ ↑
# image # src = images/many-tips-are-not-important.svg # relative_height = 100
プロパティー¶ ↑
: enable-title-on-image
false
やること¶ ↑
コードをn 書いて読んでn また書く
「書き読み書き」の狙い¶ ↑
# image # src = images/expected-by-reading-writing-reading.svg # relative_height = 100
プロパティー¶ ↑
: enable-title-on-image
false
将来を重視¶ ↑
# image # src = images/goal.svg # relative_height = 100
プロパティー¶ ↑
: enable-title-on-image
false
どうして将来を重視?¶ ↑
* 魚のたとえ話 * 昔話 * 高速道路と大渋滞 * 将棋の羽生さんの話\n (('note:http://japan.cnet.com/blog/umeda/2004/12/06/entry_post_203/'))
魚のたとえ話¶ ↑
* 魚を与える * その日は空腹を満たせる * でも、明日には飢える * 魚の獲り方を教える * 最初はうまくいかないかも * でも、身につければ一生飢えない
当てはめると¶ ↑
((‘tag:center’))((‘tag:margin-bottom * 2’)) 魚 = テクニック
* 魚を与える * テクニックを伝える * 魚の獲り方を教える * テクニックの開発方法を伝える
高速道路と大渋滞¶ ↑
* インターネットの普及 * 情報量大・いつでも対局できる * 将棋が強くなるための高速道路 * 高速道路の先は大渋滞 * 高速道路に終わりがある * 次の世代も高速道路を走ってくる * 終わった場所から抜け出せない
高速道路と大渋滞:イメージ¶ ↑
# image # src = images/highway-and-major-traffic-jam.svg # relative_height = 100
プロパティー¶ ↑
: enable-title-on-image
false
当てはめると¶ ↑
((‘tag:center’))((‘tag:margin-bottom * 2’)) 高速道路 = テクニック集
* 高速道路を走る * 先人が整理したテクニック集を学ぶ * 大渋滞 * 未整理のテクニックを活かせない
ここまでのまとめ¶ ↑
* タイムテーブル説明 * メンバー紹介 * 勉強会で目指すことを共有 * 目的: リーダブルコード力アップ * ポイント: ((*今*))ではなく((*将来*))を意識
将来を見据える¶ ↑
テクニックをn 自ら開発できる
テクニックの開発方法¶ ↑
(1) 既存のテクニックの習得 * 本から学ぶ * 野生のコードを読む→\n リーダブルコードを発見→\n 吸収 (2) 新規にテクニックを発明 * リーダブルでないコードを発見→\n 改善案を発明
本から学ぶ¶ ↑
(1) 既存のテクニックの習得 * 本から学ぶ ←((*各自やって*)) * 野生のコードを読む→\n リーダブルコードを発見→\n 吸収 (2) 新規にテクニックを発明 * リーダブルでないコードを発見→\n 改善案を発明
野生のコードから発見¶ ↑
(1) 既存のテクニックの習得 * 本から学ぶ * 野生のコードを読む→\n リーダブルコードを発見→\n 吸収 ↑((*今日のターゲット*)) (2) 新規にテクニックを発明 * リーダブルでないコードを発見→\n 改善案を発明
改善案を発明¶ ↑
(1) 既存のテクニックの習得 * 本から学ぶ * 野生のコードを読む→\n リーダブルコードを発見→\n 吸収 (2) 新規にテクニックを発明 * リーダブルでないコードを発見→\n 改善案を発明 ←((*別の機会で*))
リーダブルコードの発見¶ ↑
* 本の内容→世界の一部 * 世界 * 野生のリーダブルコードがたくさん * リーダブルコードがある場所 * OSSのコード * 大学・会社の仲間のコード
発見方法¶ ↑
書いて読んでn 書いて読んでn 書いて読んで
理由¶ ↑
* 読まないとコードのサンプルが0 * サンプルがないと見つけられない * 書かないと身につかない * 知識だけで終わらせない * 自分のスキルにする
今日やること¶ ↑
(1) 書いて (2) 読んで (3) 書いて
書いて読んで書いて¶ ↑
* 11:00- 課題を開発 * ((*書く*)) * 13:20 実装をチェンジ * 13:20- 他の人の実装で開発継続 * ((*読む*))・((*書く*)) * 読まないと変更できない
1: 初期状態¶ ↑
(1) 書いて←((*自己流で本気をだす*)) (2) 読んで (3) 書いて
2: 吸収¶ ↑
(1) 書いて←自己流で本気をだす (2) 読んで←((*他のコードから吸収*)) (3) 書いて
3: レベルアップ¶ ↑
(1) 書いて←自己流で本気をだす (2) 読んで←他のコードから吸収 (3) 書いて←((*↑を活用して成長*))
明日からは自分たちで¶ ↑
# image # src = images/level-up-cycle.svg # relative_height = 100
プロパティー¶ ↑
: enable-title-on-image
false
ここまでのまとめ¶ ↑
* リーダブルコードの\n 発見方法を紹介 * 書いて読んで書いて… * 今日やることの説明 * 書いて読んで書いて * 1ターンだけ * 2ターン目以降は各自がんばって!
書いた後にやること¶ ↑
* 15:00- グループふりかえり * 各自:リーダブルコードを発見済 * 各自からグループに共有 * 16:10- グループ発表 * グループ:リーダブルコードを発見済 * グループから全体に共有
最後¶ ↑
* 17:10- まとめ * 成功だった?(発見できた?) * 17:20- スポンサーセッション * 18:00- 懇親会 * 積極的に情報交換してね * 参加者同士 * メンターの人に質問←参考になるはず
確認¶ ↑
目的¶ ↑
((‘tag:center’))((‘tag:large’)) 参加者のn リーダブルコード力のn レベルアップ
((‘ ’))
ポイント¶ ↑
今よりも((*将来*))
やること¶ ↑
テクニックをn 開発する方法をn 体験
具体的なやること¶ ↑
((‘tag:center’))((‘tag:large’)) コードを読んでn リーダブルコードを発見
((‘ ’))
目標¶ ↑
((‘tag:center’))((‘tag:large’)) コードを読んでn リーダブルコードを発見
((‘tag:center’)) ↑が習慣になる
目標達成の判断基準例¶ ↑
(1) 今後はOSSのコードを毎日読む (2) 面接時に↓を質問 * コードを見せてください * チーム内で\n コードを読みあっている?
忘れないで¶ ↑
((‘tag:center’))((‘tag:margin-bottom * 2’)) プログラミングが好きなことはn とても大切にして欲しいこと
((‘tag:center’)) 誰かのコードからn リーダブルコードを見つける事はn 辛い事でなく楽しい事になるはず