Upgrade to Pro — share decks privately, control downloads, hide ads and more …

STEP UP プログラミング高速化 「君、プログラミング早いね」 / Step up! fast programming

E37b4344ef4bfd0fc4826c04971e54fb?s=47 nrs
January 15, 2019

STEP UP プログラミング高速化 「君、プログラミング早いね」 / Step up! fast programming

プログラミングを高速にするためのステップを解説するセミナーの資料です。
あとがき: https://nrslib.com/postscript-stepup-fast-programming/

元となった LT: https://speakerdeck.com/nrslib/you-write-a-program-fast
HP: https://nrslib.com/
Twitter: https://twitter.com/nrslib

以下資料中 URL
https://nrslib.com/csharp-to-typescript-interface/
https://nrslib.com/clean-architecture/

E37b4344ef4bfd0fc4826c04971e54fb?s=128

nrs

January 15, 2019
Tweet

Transcript

  1. STEP UP プログラミング高速化 Masanobu Naruse 「君、プログラミング早いね」

  2. 君、プログラミング早いね

  3. 君、プログラミング早いね と、言われたことはありますか?

  4. 君、プログラミング早いね 言われてみたいですよね?

  5. 話す内容

  6. プログラミングを 早くするための ステップ

  7. STEP 1 STEP 2 STEP 3 STEP 4 4つのステップを確認しよう

  8. Step 1 書いて覚える

  9. なんか 遅いな プログラミング研修の一コマ

  10. 覗いてみよう プログラミング研修の一コマ

  11. private という 単語すら コピペしてる プログラミング研修の一コマ

  12. Q. なぜコピペ?

  13. Q. なぜコピペ? A. 失敗が怖い

  14. None
  15. 赤くて怖い

  16. None
  17. 意味不明で怖い

  18. 総評

  19. 総評 コンパイルエラーは怖い

  20. 総評 コンパイルエラーは怖い コピペすればエラーは起きない

  21. コピペすればエラーは起きない 総評 コンパイルエラーは怖い

  22. コピペは常に悪

  23. コピペは常に悪 とまでは言わないけれど

  24. コピペは常に悪 とまでは言わないけれど 単語レベルなら書いた方が早い

  25. 画面上に常にコピペ元があるとは限らない

  26. 基礎的な構文は 書けるようにしよう 画面上に常にコピペ元があるとは限らない

  27. IDE は君の味方 頼ってよし

  28. すらすら書けるまで ひたすら書いて トレーニングしよう

  29. Step 2 丁寧に書く

  30. できましたー!! おー早いね!

  31. バグっとるやんけ

  32. 急いで書いたから・・・

  33. 急いで書くとバグるの?

  34. 急いで 書いた 丁寧に 書いた 作業時間:

  35. 急いで 書いた 丁寧に 書いた 早い 作業時間:

  36. 急いで 書いた 丁寧に 書いた バグ修正 作業時間:

  37. 急いで 書いた 丁寧に 書いた バグ修正 早い 作業時間:

  38. 丁寧に書くと 遅い

  39. 丁寧に書くと 遅い

  40. 丁寧に書くのに慣れていないから 遅い

  41. 慣れるとどうなるか

  42. 急いで 書いた 丁寧に 書いた バグ修正 作業時間:

  43. 急いで 書いた 丁寧に 書いた 作業時間: バグ修正 増加→

  44. 急いで 書いた 丁寧に 書いた 作業時間: バグ修正 適当な書き方では頭の整理が できなくなり遅くなる 増加→

  45. 急いで 書いた 丁寧に 書いた バグ修正 作業時間: 適当な書き方では頭の整理が できなくなり遅くなる 増加→ ←減少

  46. 急いで 書いた 丁寧に 書いた バグ修正 作業時間: 圧倒的 適当な書き方では頭の整理が できなくなり遅くなる 増加→

    ←減少
  47. もしも改修が必要になったら?

  48. 急いで 書いた 丁寧に 書いた 修正コスト 作業時間:

  49. 急いで 書いた 丁寧に 書いた 修正コスト 作業時間: 早い

  50. 急いで 書いた 綺麗に 書いた 修正コスト 作業時間: 早い ソフトウェアは変化する ツケを誰かが払うときがくる

  51. だからこんなことが叫ばれます

  52. 綺麗なプログラムを書きなさい

  53. What is 綺麗?

  54. 各種原則に則って デザインパターンに当てはめて 感嘆するような手法を生み出し

  55. 各種原則に則って デザインパターンに当てはめて 感嘆するような手法を生み出し

  56. 誰にでも読みやすいコード

  57. 誰にでも読みやすいコード

  58. 自身が思う綺麗さについて 妥協していないコード

  59. 自身が思う綺麗さについて 妥協していないコード

  60. よい 経験 悪い 経験

  61. よい 経験 悪い 経験

  62. よい 経験 悪い 経験 よい経験は悪い経験に常に勝る

  63. よい 経験 悪い 経験 どんなときも 自分ができる精一杯の 丁寧なコードを書いて トレーニングしよう

  64. Step 3 書き方を覚える

  65. プログラミングを 遅くする原因は? Q.

  66. プログラミング中

  67. これはどこに 書こうかな プログラミング中

  68. これはどこに 書こうかな この書き方で いいのかな プログラミング中

  69. これはどこに 書こうかな この書き方で いいのかな あの処理 どこだっけ プログラミング中

  70. これはどこに 書こうかな この書き方で いいのかな 似たような 処理ないかな あの処理 どこだっけ プログラミング中

  71. プログラミングを 遅くする原因は? Q.

  72. 迷い A.

  73. 迷いを無くす = 早くなる

  74. Q. 底辺が3cm、高さが2cmの 三角形の面積は?

  75. Q. 底辺が3cm、高さが2cmの 三角形の面積は? 底辺 × 高さ ÷ 2

  76. 数学は公式 プログラミングはパターン

  77. XXXXX のときは YYYYY する という引き出しを増やせば 迷わなくなり早くなる

  78. デザインパターン

  79. デザインパターン ある問題を解決する実装のパターン GoF (Gang of four) が有名

  80. デザインパターン ある問題を解決する実装のパターン GoF (Gang of four) が有名 覚えておくと 適用できるときがある

  81. デザインパターン ある問題を解決する実装のパターン GoF (Gang of four) が有名 覚えておくと 適用できるときがある 適用できないときもある

  82. 適用できないなら意味ないじゃん

  83. 適用できないなら意味ないじゃん

  84. 適用できないなら意味ないじゃん そのまま適用できないだけ 応用したら適用できるかも

  85. Q. どのパターンにも当てはめられないときは?

  86. Q. どのパターンにも当てはめられないときは? A. おめでとう! 君のパターンを作るときだ

  87. 自分でパターンを作るときの糧として 原則を学び 皆の書き方を参考にする

  88. 原則 単一責任の原則 開放・閉鎖原則 リスコフの置換原則 デメテルの原則 etc…

  89. 皆の書き方 オープンソース プロダクトのコード 技術書 etc… ※玉石混合なので気を付けて

  90. 実装パターンについて学び 原則について学び 皆の書き方を見て学ぶ

  91. 実装パターンについて学び 原則について学び 皆の書き方を見て学ぶ Step 2 と平行すると効果は抜群

  92. Step 4 ?

  93. ここまでのトレーニングを ひたすらこなせば かなり早くプログラムが 書けるようになる

  94. でもまだ足りない

  95. 誰も追いつけない速度まで 到達したい

  96. 指の速度には限界がある

  97. 指を使わなければいい

  98. つまり

  99. Step 4 ?

  100. Step 4 プログラムをするプログラムを書く

  101. 似たような作業が何度も必要な コーディングは存在する

  102. 似たような作業が何度も必要な コーディングは存在する 肩代わりするツールがあれば 早く書ける

  103. 一般的な実例 Snippet

  104. 一般的な実例 スキャフォールディング

  105. Front Server C# json Typescript 実プロダクトからの実例・その1

  106. Front Server C# json Typescript 定義を書くのを一度にしたい 実プロダクトからの実例・その1

  107. Front Server C# json Typescript 定義を書くのを一度にしたい https://github.com/nrslib/NrsLib.CSharpToTypescriptInterface 実プロダクトからの実例・その1

  108. 設計都合で 作る必要のあるコード 実プロダクトからの実例・その2

  109. 設計都合で 作る必要のあるコード 実プロダクトからの実例・その2

  110. 設計都合で 作る必要のあるコード 実プロダクトからの実例・その2 必要なファイルが作られ 正しく設定される https://nrslib.com/clean-architecture/

  111. ツールの副次的効果

  112. ツールを作ると Step 2 のトレーニングができる

  113. ツールを作ると Step 2 のトレーニングができる ?

  114. ツールを作ると Step 2 のトレーニングができる 丁寧に

  115. ツールを作ると Step 2 のトレーニングができる Step 3 で学んだことが実験できる 丁寧に

  116. ツールを作ると Step 2 のトレーニングができる Step 3 で学んだことが実験できる ? 丁寧に

  117. ツールを作ると Step 2 のトレーニングができる Step 3 で学んだことが実験できる パターン・原則 丁寧に

  118. ツールがないと 皆に説明して 設計を守ってもらう必要がある

  119. ツールがあれば 説明不要で設計を守れる

  120. ツールを作るのが大変?

  121. 入力を解釈してデータを出力する

  122. 入力を解釈してデータを出力する いつもの仕事と変わりはない

  123. 作成時間 プログラミング ツール

  124. 作成時間 プログラミング ツール 何度も作って早く作れるようになろう

  125. ツールが間違ってたら?

  126. ツールが間違ってたら? 間違い方に法則がある

  127. ツールが間違ってたら? 間違い方に法則がある 対処のしようがある

  128. 実践の場をプロダクトだけにすると いつまでもトレーニングができない 気軽にツールを作って トレーニングしよう Step 4 まとめ

  129. これらを実践して Step 1 : 書いて覚える Step 2 : 丁寧に書く Step

    3 : 書き方を覚える Step 4 : プログラムをする プログラムを書く
  130. 君、プログラミング早いね

  131. 君、プログラミング早いね 言われるようになろう

  132. だから他の人より大量に 仕事任せるね! 君、プログラミング早いね !?

  133. Step 1 : 書いて覚える Step 2 : 丁寧に書く Step 3

    : 書き方を覚える Step 4 : プログラムをする プログラムを書く
  134. Auther nrs HomePage https://nrslib.com Twitter @nrslib