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