Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
はじめてのIT勉強会 プリンシプルオブプログラミング
Search
unisuke
October 28, 2020
0
220
はじめてのIT勉強会 プリンシプルオブプログラミング
unisuke
October 28, 2020
Tweet
Share
More Decks by unisuke
See All by unisuke
Rustってどんな言語
uni_82
0
150
Verified Software Toolchain C ~Coqを用いたCプログラムの検証~
uni_82
0
52
はじめてのIT勉強会 プリンシプルオブプログラミングPart.3
uni_82
0
130
2021.01はじめてのIT勉強会.pdf
uni_82
0
130
20201129WBALT.pdf
uni_82
0
67
2020.11.26ポートフォリオを素敵にしたい 副代表のゆるゆるLT第1段
uni_82
0
78
2020.10.14 はじめての〇〇 超LT会- vol.1 #ultralt
uni_82
0
69
Goconference_20__1_.pdf
uni_82
0
90
はじめてのIT勉強会.pdf
uni_82
0
120
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Building Your Own Lightsaber
phodgson
103
6.1k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Transcript
The Principles of Programing part.1 2020.10.28 はじめてのIT勉強会
自己紹介 • うにすけ • 埼玉県出身 • 21才 • 東北大学工学部電気情報物理工学科3年 •
はじめてのIT勉強会副代表 @uniuni__8282 mayu.uenishi.1
None
プログラマが3年目までに身に付けたい一 生役立つ101の原理原則
どんな人のための本?
コードは書けるけど 「よいコード」にならない人
「よいコード」にならない はどんな状況?
• 書いたコードがリリースされると頻繁に障害が発生する • 書いたコードがリリースされると動作が遅い、すぐに落ちるなどのクレームがくる • 書いたコードを見てもらうとわかりにくい、シンプルでない、美しくないと指摘をうけ る • 書いたコードを見返した時読みにくいと感じる •
書いたコードを修正すると途端に動かなくなる • 書いたコードを修正すると予想外の箇所に影響が出る • 書いたコードに機能を追加しようとしてもうまくいかない • 書いたコードに仕様変更が入るとその部分全てが書き直しになる 「よいコード」にならない
なぜ「よいコード」が書ける プログラマに成長するのが困難か?
成長したいが 方法・指針がわからない
よいコードを書くための 「プリンシプル」を紹介
「プリンシプル」とは?
プログラミングの指針となる 前提・原則・思想・習慣・視点 手法・法則
なぜ「プリンシプル」を学ぶべきか?
今ある技術はプリンシプルの目的「コードを書きやすく・読みやすく・バグを生じに くく・修正しやすくする」の具現化 • 技術がなぜ必要かを理解できるために習得が早く・深くなる • 技術の目的に沿った形で適用できるために技術の使い方がうまくなる • 普遍的な情報であるために陳腐化しない 「プリンシプル」の価値
プログラマとしての成長の 「正しい道」かつ「近道」になる
❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜
❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜
❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜
❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
プログラミングに銀の弾丸はない No Silver Bullet in programing.
プログラミングに特効薬はない どういうこと? なんで? どうすれば?
プログラミングに特効薬はない どういうこと? なんで? どうすれば? ソフトウェアは本質的に困難である
プログラミングに特効薬はない どういうこと? なんで? どうすれば? ソフトウェアは本質的に困難である 歴史を学び「複雑さ」と戦う
コードは設計図である Code as design.
ハードウェア ソフトウェア 設計 設計図 製造(物理)
ハードウェア ソフトウェア 設計 設計図 設計 設計書 製造(物理) 製造(コーディング)
ハードウェア ソフトウェア 設計 設計図 設計 設計書 製造(物理) 製造(コーディング)
ハードウェア ソフトウェア 設計 設計図 設計 (基本設計・詳細設計・プログラミ 設計書=コード 製造(物理) 製造(リリースビルド)
成果物の改良は「設計」で行う ソフトウェア開発において改良するべき対象はコード 優秀なプログラマが必要
コードは必ず変更される Code will be changed.
❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜
❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
KISS Keep It Simple, Stupid. 「シンプルにしておけ、愚か者よ」
DRY Don’t Repeat Yourself. 「繰り返すな。」
YAGNI You Aren’t Going to Need It. 「それはきっと必要にならない」
PIE Program Intently and Expressively. 「意図を表現してプログラミングせよ」
SLAP Single Level of Abstraction Principle. 「抽象化レベルの統一」
OCP Open-Closed Principles. 「オープン・クローズドの原則」
名前重要 Naming is important.
❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜
❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
プログラマの3大美徳 Three great virtues of a programmer.
短気 怠惰 傲慢
短気 怠惰 傲慢
全体の労力を減らすために手間を惜しまない気質 どういうこと? なんで? どうすれば? 繰り返される作業を取り除くことで時間節約・正確さにつながる 繰り返しの仕事を自分の手順に沿って仕組み化する
短気 怠惰 傲慢
コンピュータがサボっている時に直ちにコードを書き直す気質 どういうこと? なんで? どうすれば? 我慢していた時間が快適になる 起こりうる問題を想定して動く
短気 怠惰 傲慢
高いプライドをもち恥ずかしくないコードを書く気質 どういうこと? なんで? どうすれば? コードを綺麗に保つことが習慣化される 作成したソフトウェアは機能ごとにモジュール化しておく
ボーイスカウトの規則 Boy Scout Rule
ボーイスカウトの規則 「自分のいた場所はそこを出ていく時、 来た時よりも綺麗にしなければならない」
パフォーマンスチューニングの箴言 Proverb of performance tuning.
エゴレスプログラミング Egoless programming
1歩ずつ少しずつ One by one
TMTOWTDI There’s more than one way to do it. 「やり方は、1つではない。」
❖ 第1章 前提〜プログラミングの変わらぬ真実〜 ❖ 第2章 原則〜プログラミングのガイドライン〜 ❖ 第3章 思想〜プログラミングのイデオロギー〜 ❖ 第4章 視点〜プログラマの見る角度〜 ❖ 第5章 習慣〜プログラマのルーティーン〜
❖ 第6章 手法〜プログラマの道具箱〜 ❖ 第7章 法則〜プログラミングのアンチパターン〜 The Principles of Programing
Twitterのフォローお願いします! @uniuni__8282 ご清聴ありがとうございました