STEP UP プログラミング高速化 「君、プログラミング早いね」 / Step up! fast programming
by
nrs
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
STEP UP プログラミング高速化 Masanobu Naruse 「君、プログラミング早いね」
Slide 2
Slide 2 text
君、プログラミング早いね
Slide 3
Slide 3 text
君、プログラミング早いね と、言われたことはありますか?
Slide 4
Slide 4 text
君、プログラミング早いね 言われてみたいですよね?
Slide 5
Slide 5 text
話す内容
Slide 6
Slide 6 text
プログラミングを 早くするための ステップ
Slide 7
Slide 7 text
STEP 1 STEP 2 STEP 3 STEP 4 4つのステップを確認しよう
Slide 8
Slide 8 text
Step 1 書いて覚える
Slide 9
Slide 9 text
なんか 遅いな プログラミング研修の一コマ
Slide 10
Slide 10 text
覗いてみよう プログラミング研修の一コマ
Slide 11
Slide 11 text
private という 単語すら コピペしてる プログラミング研修の一コマ
Slide 12
Slide 12 text
Q. なぜコピペ?
Slide 13
Slide 13 text
Q. なぜコピペ? A. 失敗が怖い
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
赤くて怖い
Slide 16
Slide 16 text
No content
Slide 17
Slide 17 text
意味不明で怖い
Slide 18
Slide 18 text
総評
Slide 19
Slide 19 text
総評 コンパイルエラーは怖い
Slide 20
Slide 20 text
総評 コンパイルエラーは怖い コピペすればエラーは起きない
Slide 21
Slide 21 text
コピペすればエラーは起きない 総評 コンパイルエラーは怖い
Slide 22
Slide 22 text
コピペは常に悪
Slide 23
Slide 23 text
コピペは常に悪 とまでは言わないけれど
Slide 24
Slide 24 text
コピペは常に悪 とまでは言わないけれど 単語レベルなら書いた方が早い
Slide 25
Slide 25 text
画面上に常にコピペ元があるとは限らない
Slide 26
Slide 26 text
基礎的な構文は 書けるようにしよう 画面上に常にコピペ元があるとは限らない
Slide 27
Slide 27 text
IDE は君の味方 頼ってよし
Slide 28
Slide 28 text
すらすら書けるまで ひたすら書いて トレーニングしよう
Slide 29
Slide 29 text
Step 2 丁寧に書く
Slide 30
Slide 30 text
できましたー!! おー早いね!
Slide 31
Slide 31 text
バグっとるやんけ
Slide 32
Slide 32 text
急いで書いたから・・・
Slide 33
Slide 33 text
急いで書くとバグるの?
Slide 34
Slide 34 text
急いで 書いた 丁寧に 書いた 作業時間:
Slide 35
Slide 35 text
急いで 書いた 丁寧に 書いた 早い 作業時間:
Slide 36
Slide 36 text
急いで 書いた 丁寧に 書いた バグ修正 作業時間:
Slide 37
Slide 37 text
急いで 書いた 丁寧に 書いた バグ修正 早い 作業時間:
Slide 38
Slide 38 text
丁寧に書くと 遅い
Slide 39
Slide 39 text
丁寧に書くと 遅い
Slide 40
Slide 40 text
丁寧に書くのに慣れていないから 遅い
Slide 41
Slide 41 text
慣れるとどうなるか
Slide 42
Slide 42 text
急いで 書いた 丁寧に 書いた バグ修正 作業時間:
Slide 43
Slide 43 text
急いで 書いた 丁寧に 書いた 作業時間: バグ修正 増加→
Slide 44
Slide 44 text
急いで 書いた 丁寧に 書いた 作業時間: バグ修正 適当な書き方では頭の整理が できなくなり遅くなる 増加→
Slide 45
Slide 45 text
急いで 書いた 丁寧に 書いた バグ修正 作業時間: 適当な書き方では頭の整理が できなくなり遅くなる 増加→ ←減少
Slide 46
Slide 46 text
急いで 書いた 丁寧に 書いた バグ修正 作業時間: 圧倒的 適当な書き方では頭の整理が できなくなり遅くなる 増加→ ←減少
Slide 47
Slide 47 text
もしも改修が必要になったら?
Slide 48
Slide 48 text
急いで 書いた 丁寧に 書いた 修正コスト 作業時間:
Slide 49
Slide 49 text
急いで 書いた 丁寧に 書いた 修正コスト 作業時間: 早い
Slide 50
Slide 50 text
急いで 書いた 綺麗に 書いた 修正コスト 作業時間: 早い ソフトウェアは変化する ツケを誰かが払うときがくる
Slide 51
Slide 51 text
だからこんなことが叫ばれます
Slide 52
Slide 52 text
綺麗なプログラムを書きなさい
Slide 53
Slide 53 text
What is 綺麗?
Slide 54
Slide 54 text
各種原則に則って デザインパターンに当てはめて 感嘆するような手法を生み出し
Slide 55
Slide 55 text
各種原則に則って デザインパターンに当てはめて 感嘆するような手法を生み出し
Slide 56
Slide 56 text
誰にでも読みやすいコード
Slide 57
Slide 57 text
誰にでも読みやすいコード
Slide 58
Slide 58 text
自身が思う綺麗さについて 妥協していないコード
Slide 59
Slide 59 text
自身が思う綺麗さについて 妥協していないコード
Slide 60
Slide 60 text
よい 経験 悪い 経験
Slide 61
Slide 61 text
よい 経験 悪い 経験
Slide 62
Slide 62 text
よい 経験 悪い 経験 よい経験は悪い経験に常に勝る
Slide 63
Slide 63 text
よい 経験 悪い 経験 どんなときも 自分ができる精一杯の 丁寧なコードを書いて トレーニングしよう
Slide 64
Slide 64 text
Step 3 書き方を覚える
Slide 65
Slide 65 text
プログラミングを 遅くする原因は? Q.
Slide 66
Slide 66 text
プログラミング中
Slide 67
Slide 67 text
これはどこに 書こうかな プログラミング中
Slide 68
Slide 68 text
これはどこに 書こうかな この書き方で いいのかな プログラミング中
Slide 69
Slide 69 text
これはどこに 書こうかな この書き方で いいのかな あの処理 どこだっけ プログラミング中
Slide 70
Slide 70 text
これはどこに 書こうかな この書き方で いいのかな 似たような 処理ないかな あの処理 どこだっけ プログラミング中
Slide 71
Slide 71 text
プログラミングを 遅くする原因は? Q.
Slide 72
Slide 72 text
迷い A.
Slide 73
Slide 73 text
迷いを無くす = 早くなる
Slide 74
Slide 74 text
Q. 底辺が3cm、高さが2cmの 三角形の面積は?
Slide 75
Slide 75 text
Q. 底辺が3cm、高さが2cmの 三角形の面積は? 底辺 × 高さ ÷ 2
Slide 76
Slide 76 text
数学は公式 プログラミングはパターン
Slide 77
Slide 77 text
XXXXX のときは YYYYY する という引き出しを増やせば 迷わなくなり早くなる
Slide 78
Slide 78 text
デザインパターン
Slide 79
Slide 79 text
デザインパターン ある問題を解決する実装のパターン GoF (Gang of four) が有名
Slide 80
Slide 80 text
デザインパターン ある問題を解決する実装のパターン GoF (Gang of four) が有名 覚えておくと 適用できるときがある
Slide 81
Slide 81 text
デザインパターン ある問題を解決する実装のパターン GoF (Gang of four) が有名 覚えておくと 適用できるときがある 適用できないときもある
Slide 82
Slide 82 text
適用できないなら意味ないじゃん
Slide 83
Slide 83 text
適用できないなら意味ないじゃん
Slide 84
Slide 84 text
適用できないなら意味ないじゃん そのまま適用できないだけ 応用したら適用できるかも
Slide 85
Slide 85 text
Q. どのパターンにも当てはめられないときは?
Slide 86
Slide 86 text
Q. どのパターンにも当てはめられないときは? A. おめでとう! 君のパターンを作るときだ
Slide 87
Slide 87 text
自分でパターンを作るときの糧として 原則を学び 皆の書き方を参考にする
Slide 88
Slide 88 text
原則 単一責任の原則 開放・閉鎖原則 リスコフの置換原則 デメテルの原則 etc…
Slide 89
Slide 89 text
皆の書き方 オープンソース プロダクトのコード 技術書 etc… ※玉石混合なので気を付けて
Slide 90
Slide 90 text
実装パターンについて学び 原則について学び 皆の書き方を見て学ぶ
Slide 91
Slide 91 text
実装パターンについて学び 原則について学び 皆の書き方を見て学ぶ Step 2 と平行すると効果は抜群
Slide 92
Slide 92 text
Step 4 ?
Slide 93
Slide 93 text
ここまでのトレーニングを ひたすらこなせば かなり早くプログラムが 書けるようになる
Slide 94
Slide 94 text
でもまだ足りない
Slide 95
Slide 95 text
誰も追いつけない速度まで 到達したい
Slide 96
Slide 96 text
指の速度には限界がある
Slide 97
Slide 97 text
指を使わなければいい
Slide 98
Slide 98 text
つまり
Slide 99
Slide 99 text
Step 4 ?
Slide 100
Slide 100 text
Step 4 プログラムをするプログラムを書く
Slide 101
Slide 101 text
似たような作業が何度も必要な コーディングは存在する
Slide 102
Slide 102 text
似たような作業が何度も必要な コーディングは存在する 肩代わりするツールがあれば 早く書ける
Slide 103
Slide 103 text
一般的な実例 Snippet
Slide 104
Slide 104 text
一般的な実例 スキャフォールディング
Slide 105
Slide 105 text
Front Server C# json Typescript 実プロダクトからの実例・その1
Slide 106
Slide 106 text
Front Server C# json Typescript 定義を書くのを一度にしたい 実プロダクトからの実例・その1
Slide 107
Slide 107 text
Front Server C# json Typescript 定義を書くのを一度にしたい https://github.com/nrslib/NrsLib.CSharpToTypescriptInterface 実プロダクトからの実例・その1
Slide 108
Slide 108 text
設計都合で 作る必要のあるコード 実プロダクトからの実例・その2
Slide 109
Slide 109 text
設計都合で 作る必要のあるコード 実プロダクトからの実例・その2
Slide 110
Slide 110 text
設計都合で 作る必要のあるコード 実プロダクトからの実例・その2 必要なファイルが作られ 正しく設定される https://nrslib.com/clean-architecture/
Slide 111
Slide 111 text
ツールの副次的効果
Slide 112
Slide 112 text
ツールを作ると Step 2 のトレーニングができる
Slide 113
Slide 113 text
ツールを作ると Step 2 のトレーニングができる ?
Slide 114
Slide 114 text
ツールを作ると Step 2 のトレーニングができる 丁寧に
Slide 115
Slide 115 text
ツールを作ると Step 2 のトレーニングができる Step 3 で学んだことが実験できる 丁寧に
Slide 116
Slide 116 text
ツールを作ると Step 2 のトレーニングができる Step 3 で学んだことが実験できる ? 丁寧に
Slide 117
Slide 117 text
ツールを作ると Step 2 のトレーニングができる Step 3 で学んだことが実験できる パターン・原則 丁寧に
Slide 118
Slide 118 text
ツールがないと 皆に説明して 設計を守ってもらう必要がある
Slide 119
Slide 119 text
ツールがあれば 説明不要で設計を守れる
Slide 120
Slide 120 text
ツールを作るのが大変?
Slide 121
Slide 121 text
入力を解釈してデータを出力する
Slide 122
Slide 122 text
入力を解釈してデータを出力する いつもの仕事と変わりはない
Slide 123
Slide 123 text
作成時間 プログラミング ツール
Slide 124
Slide 124 text
作成時間 プログラミング ツール 何度も作って早く作れるようになろう
Slide 125
Slide 125 text
ツールが間違ってたら?
Slide 126
Slide 126 text
ツールが間違ってたら? 間違い方に法則がある
Slide 127
Slide 127 text
ツールが間違ってたら? 間違い方に法則がある 対処のしようがある
Slide 128
Slide 128 text
実践の場をプロダクトだけにすると いつまでもトレーニングができない 気軽にツールを作って トレーニングしよう Step 4 まとめ
Slide 129
Slide 129 text
これらを実践して Step 1 : 書いて覚える Step 2 : 丁寧に書く Step 3 : 書き方を覚える Step 4 : プログラムをする プログラムを書く
Slide 130
Slide 130 text
君、プログラミング早いね
Slide 131
Slide 131 text
君、プログラミング早いね 言われるようになろう
Slide 132
Slide 132 text
だから他の人より大量に 仕事任せるね! 君、プログラミング早いね !?
Slide 133
Slide 133 text
Step 1 : 書いて覚える Step 2 : 丁寧に書く Step 3 : 書き方を覚える Step 4 : プログラムをする プログラムを書く
Slide 134
Slide 134 text
Auther nrs HomePage https://nrslib.com Twitter @nrslib