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

はじめてのIT勉強会 プリンシプルオブプログラミング

36db74c2b509d12cb2404b62846afa27?s=47 uniSuke
October 28, 2020
170

はじめてのIT勉強会 プリンシプルオブプログラミング

36db74c2b509d12cb2404b62846afa27?s=128

uniSuke

October 28, 2020
Tweet

Transcript

  1. The Principles of Programing part.1 2020.10.28 はじめてのIT勉強会

  2. 自己紹介 • うにすけ • 埼玉県出身 • 21才 • 東北大学工学部電気情報物理工学科3年 •

    はじめてのIT勉強会副代表 @uniuni__8282 mayu.uenishi.1
  3. None
  4. プログラマが3年目までに身に付けたい一 生役立つ101の原理原則

  5. どんな人のための本?

  6. コードは書けるけど 「よいコード」にならない人

  7. 「よいコード」にならない はどんな状況?

  8. • 書いたコードがリリースされると頻繁に障害が発生する • 書いたコードがリリースされると動作が遅い、すぐに落ちるなどのクレームがくる • 書いたコードを見てもらうとわかりにくい、シンプルでない、美しくないと指摘をうけ る • 書いたコードを見返した時読みにくいと感じる •

    書いたコードを修正すると途端に動かなくなる • 書いたコードを修正すると予想外の箇所に影響が出る • 書いたコードに機能を追加しようとしてもうまくいかない • 書いたコードに仕様変更が入るとその部分全てが書き直しになる 「よいコード」にならない
  9. なぜ「よいコード」が書ける プログラマに成長するのが困難か?

  10. 成長したいが 方法・指針がわからない

  11. よいコードを書くための 「プリンシプル」を紹介

  12. 「プリンシプル」とは?

  13. プログラミングの指針となる 前提・原則・思想・習慣・視点 手法・法則

  14. なぜ「プリンシプル」を学ぶべきか?

  15. 今ある技術はプリンシプルの目的「コードを書きやすく・読みやすく・バグを生じに くく・修正しやすくする」の具現化 • 技術がなぜ必要かを理解できるために習得が早く・深くなる • 技術の目的に沿った形で適用できるために技術の使い方がうまくなる • 普遍的な情報であるために陳腐化しない 「プリンシプル」の価値

  16. プログラマとしての成長の 「正しい道」かつ「近道」になる

  17. ❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜

    ❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
  18. ❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜

    ❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
  19. ❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜

    ❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
  20. プログラミングに銀の弾丸はない No Silver Bullet in programing.

  21. プログラミングに特効薬はない どういうこと? なんで? どうすれば?

  22. プログラミングに特効薬はない どういうこと? なんで? どうすれば? ソフトウェアは本質的に困難である

  23. プログラミングに特効薬はない どういうこと? なんで? どうすれば? ソフトウェアは本質的に困難である 歴史を学び「複雑さ」と戦う

  24. コードは設計図である Code as design.

  25. ハードウェア ソフトウェア 設計 設計図 製造(物理)

  26. ハードウェア ソフトウェア 設計 設計図 設計 設計書 製造(物理) 製造(コーディング)

  27. ハードウェア ソフトウェア 設計 設計図 設計 設計書 製造(物理) 製造(コーディング)

  28. ハードウェア ソフトウェア 設計 設計図 設計 (基本設計・詳細設計・プログラミ 設計書=コード 製造(物理) 製造(リリースビルド)

  29. 成果物の改良は「設計」で行う ソフトウェア開発において改良するべき対象はコード 優秀なプログラマが必要

  30. コードは必ず変更される Code will be changed.

  31. ❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜

    ❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
  32. KISS Keep It Simple, Stupid. 「シンプルにしておけ、愚か者よ」

  33. DRY Don’t Repeat Yourself. 「繰り返すな。」

  34. YAGNI You Aren’t Going to Need It. 「それはきっと必要にならない」

  35. PIE Program Intently and Expressively. 「意図を表現してプログラミングせよ」

  36. SLAP Single Level of Abstraction Principle. 「抽象化レベルの統一」

  37. OCP Open-Closed Principles. 「オープン・クローズドの原則」

  38. 名前重要 Naming is important.

  39. ❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜

    ❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
  40. プログラマの3大美徳 Three great virtues of a programmer.

  41. 短気 怠惰 傲慢

  42. 短気 怠惰 傲慢

  43. 全体の労力を減らすために手間を惜しまない気質 どういうこと? なんで? どうすれば? 繰り返される作業を取り除くことで時間節約・正確さにつながる 繰り返しの仕事を自分の手順に沿って仕組み化する

  44. 短気 怠惰 傲慢

  45. コンピュータがサボっている時に直ちにコードを書き直す気質 どういうこと? なんで? どうすれば? 我慢していた時間が快適になる 起こりうる問題を想定して動く

  46. 短気 怠惰 傲慢

  47. 高いプライドをもち恥ずかしくないコードを書く気質 どういうこと? なんで? どうすれば? コードを綺麗に保つことが習慣化される 作成したソフトウェアは機能ごとにモジュール化しておく

  48. ボーイスカウトの規則 Boy Scout Rule

  49. ボーイスカウトの規則 「自分のいた場所はそこを出ていく時、 来た時よりも綺麗にしなければならない」

  50. パフォーマンスチューニングの箴言 Proverb of performance tuning.

  51. エゴレスプログラミング Egoless programming

  52. 1歩ずつ少しずつ One by one

  53. TMTOWTDI There’s more than one way to do it. 「やり方は、1つではない。」

  54. ❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜

    ❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
  55. Twitterのフォローお願いします! @uniuni__8282 ご清聴ありがとうございました