SlideShare a Scribd company logo
1 of 50
Download to read offline
The Principles of
Programming
part.1
3年目までに身につけたい
一生役立つ101の原理原則
本書がおすすめな理由
本を読んで勉強したい
but
なにを読めばいいか分からない
おすすめできる理由
おすすめできる理由
1. プログラミングの本質的課題を解決すること
が目的の本である
おすすめできる理由
1. プログラミングの本質的課題を解決すること
が目的の本である
2. 陳腐化しない、普遍的な情報を学ぶことがで
きる本である
おすすめできる理由
1. プログラミングの本質的課題を解決すること
が目的の本である
2. 陳腐化しない、普遍的な情報を学ぶことがで
きる本である
3. プログラマの成長の土台を作る本である
おすすめできる理由
1. プログラミングの本質的課題を解決すること
が目的の本である
2. 陳腐化しない、普遍的な情報を学ぶことがで
きる本である
3. プログラマの成長の土台を作る本である
4. 主たる情報となった参考書籍が
チャプター単位で記載してある本で
ある!
おすすめできる理由
1. プログラミングの本質的課題を解決すること
が目的の本である
2. 陳腐化しない、普遍的な情報を学ぶことがで
きる本である
3. プログラマの成長の土台を作る本である
4. 主たる情報となった参考書籍が
チャプター単位で記載してある本で
ある!
おすすめできる理由
1. プログラミングの本質的課題を解決すること
が目的の本である
2. 陳腐化しない、普遍的な情報を学ぶことがで
きる本である
3. プログラマの成長の土台を作る本である
4. 主たる情報となった参考書籍が
チャプター単位で記載してある本で
ある!
どんなことが書いてある本か?
● プリンシプルオブプログラミング
● 第1章 前提 - プログラミングの変わらぬ真実
● 第2章 原則 - プログラミングのガイドライン
● 第3章 思想 - プログラミングのイデオロギー
● 第4章 視点 - プログラマの観る角度
● 第5章 習慣 - プログラマのルーティーン
● 第6章 手法 - プログラマの道具箱
● 第7章 法則 - プログラミングのアンチパターン
今日話をするのはどこ?
● プリンシプルオブプログラミング
● 第1章 前提 - プログラミングの変わらぬ真実
● 第2章 原則 - プログラミングのガイドライン
● 第3章 思想 - プログラミングのイデオロギー
● 第4章 視点 - プログラマの観る角度
● 第5章 習慣 - プログラマのルーティーン
● 第6章 手法 - プログラマの道具箱
● 第7章 法則 - プログラミングのアンチパターン
Let’s think about “プリンシプル” !
● プリンシプルとはなにか
● プログラミングの指針となる ..
➢ 前提
➢ 原則
➢ 思想
➢ 習慣
➢ 視点
➢ 手法
➢ 法則
● なぜ必要か..
- 先人たちの審査(試行錯誤)を受けて、今なお現場
に残された知識を学ばない手はない
先人たちが残した
(もしかしたら)「近道」ができる(かもな)情報
● プリンシプルオブプログラミング
● 第1章 前提 - プログラミングの変わらぬ真実
● 第2章 原則 - プログラミングのガイドライン
● 第3章 思想 - プログラミングのイデオロギー
● 第4章 視点 - プログラマの観る角度
● 第5章 習慣 - プログラマのルーティーン
● 第6章 手法 - プログラマの道具箱
● 第7章 法則 - プログラミングのアンチパターン
まずは「前提」を知りましょう
「プログラミングに銀の弾丸はない」
- No Silver Bullet in programming. -
「コードは設計書である」
- Code as design. -
「コードは必ず変更される」
- Code will be changed. -
● プリンシプルオブプログラミング
● 第1章 前提 - プログラミングの変わらぬ真実
● 第2章 原則 - プログラミングのガイドライン
● 第3章 思想 - プログラミングのイデオロギー
● 第4章 視点 - プログラマの観る角度
● 第5章 習慣 - プログラマのルーティーン
● 第6章 手法 - プログラマの道具箱
● 第7章 法則 - プログラミングのアンチパターン
「ガイドライン」を知りましょう
「KISS(キス)」
- Keep It Short and Simple. -
コードはKISSに書
いていこう!
「DRY(ドライ)」
- Don’t Repeat Yourself. -
そのコード、DRY
じゃないよね!
「YAGNI(ヤグニ)」
- You Aren’t Going to Need It. -
「PIE(パイ?)」
- Program Intently and Expressively. -
「SLAP(スラップ)」
- Single Level of Abstraction Principle. -
「OCP(オーシーピー)」
- Open-Closed Principle. -
「名前重要」
- Naming is important. -
この「ガイドライン」を知らないと?
● プリンシプルオブプログラミング
● 第1章 前提 - プログラミングの変わらぬ真実
● 第2章 原則 - プログラミングのガイドライン
● 第3章 思想 - プログラミングのイデオロギー
● 第4章 視点 - プログラマの観る角度
● 第5章 習慣 - プログラマのルーティーン
● 第6章 手法 - プログラマの道具箱
● 第7章 法則 - プログラミングのアンチパターン
良質なコードを書くための
「習慣」を知りましょう
「怠慢」「短気」「傲慢」
どう思う?
「プログラマーの三大美徳」
- Three great virtues of a programmer. -
「ボーイスカウトの規則」
- Boy Scout Rule. -
「パフォーマンスチューニングの箴言」
- Proverb of performance tuning. -
「速い」コードより「よ
い」コード
「エゴレスプログラミング」
- Egoless programming. -
● エゴレスプログラミングの十戒
1. 自分自身も間違いを犯すということを理解し、受け入れます
2. 書いたコードは、自分自身ではありません
3. どれほど極めたと思っていても、上には上がいます
4. 相談なしに、コードは書き直しません
5. 自分よりもスキルが劣る人にも、尊敬と敬意と忍耐を持って接します
6. 世界で唯一変わらないことは、変わるということだけです
7. 本当の権威は、地位ではなく、知識から生じます
8. 信じるもののために戦います。ただし、負けは潔く受け入れます。
9. 部屋に籠りきりはいけません
10. 「人に優しく、コードに厳しく」して、人ではなくコードを批評します
「1歩ずつ少しずつ」
- One by one. -
「TMTOWTDI(ティムトゥデイ)」
- There’s more than one way to do it. -
やり方は
一つではない。
● おわりに
● 本質的な「プログラミングスキル」は...
○ 「一度身につけると、その後、長期間活用ができる」スキルが多い
生涯戦える「考え方」を身につけるための良書
次回は8/23(水)
● プリンシプルオブプログラミング
● 第1章 前提 - プログラミングの変わらぬ真実
● 第2章 原則 - プログラミングのガイドライン
● 第3章 思想 - プログラミングのイデオロギー
● 第4章 視点 - プログラマの観る角度
● 第5章 習慣 - プログラマのルーティーン
● 第6章 手法 - プログラマの道具箱
● 第7章 法則 - プログラミングのアンチパターン
ご拝聴ありがとうございました

More Related Content

Similar to The principles of programming part.1

エンジニアのプレゼンスライド作成入門
エンジニアのプレゼンスライド作成入門エンジニアのプレゼンスライド作成入門
エンジニアのプレゼンスライド作成入門
Tomoaki Imai
 
アイディア発想法とかモノ作りを初める前にやること
アイディア発想法とかモノ作りを初める前にやることアイディア発想法とかモノ作りを初める前にやること
アイディア発想法とかモノ作りを初める前にやること
Yumi uniq Ishizaki
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編
Yusuke Ito
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
 

Similar to The principles of programming part.1 (20)

フレームワーク使おうぜ!
フレームワーク使おうぜ!フレームワーク使おうぜ!
フレームワーク使おうぜ!
 
Weekend Androidのススメ
Weekend AndroidのススメWeekend Androidのススメ
Weekend Androidのススメ
 
TCUE:地域:コンピューティング4b_01ガイダンス
TCUE:地域:コンピューティング4b_01ガイダンスTCUE:地域:コンピューティング4b_01ガイダンス
TCUE:地域:コンピューティング4b_01ガイダンス
 
エンジニアのプレゼンスライド作成入門
エンジニアのプレゼンスライド作成入門エンジニアのプレゼンスライド作成入門
エンジニアのプレゼンスライド作成入門
 
20200803 プログラミングの基礎
20200803 プログラミングの基礎20200803 プログラミングの基礎
20200803 プログラミングの基礎
 
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようYAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししよう
 
プログラミング勉強会
プログラミング勉強会プログラミング勉強会
プログラミング勉強会
 
Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611
 
S03 t1 python_learningdiary#3
S03 t1 python_learningdiary#3S03 t1 python_learningdiary#3
S03 t1 python_learningdiary#3
 
クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017
 
「チケット駆動開発」への思い
「チケット駆動開発」への思い「チケット駆動開発」への思い
「チケット駆動開発」への思い
 
アイディア発想法とかモノ作りを初める前にやること
アイディア発想法とかモノ作りを初める前にやることアイディア発想法とかモノ作りを初める前にやること
アイディア発想法とかモノ作りを初める前にやること
 
50代現役SEのつぶやき
50代現役SEのつぶやき50代現役SEのつぶやき
50代現役SEのつぶやき
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編
 
20120522 アジャイルサムライ読書会第5回
20120522 アジャイルサムライ読書会第5回20120522 アジャイルサムライ読書会第5回
20120522 アジャイルサムライ読書会第5回
 
サービス開発者の読書会#5
サービス開発者の読書会#5サービス開発者の読書会#5
サービス開発者の読書会#5
 
eXtremeProgramming入門
eXtremeProgramming入門eXtremeProgramming入門
eXtremeProgramming入門
 
第1回 Android勉強会
第1回 Android勉強会第1回 Android勉強会
第1回 Android勉強会
 
10+1 Things you should know about JavaScript testing
10+1 Things you should know about JavaScript testing10+1 Things you should know about JavaScript testing
10+1 Things you should know about JavaScript testing
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
 

Recently uploaded

Recently uploaded (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

The principles of programming part.1