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

フレームワーク使おうぜ!
フレームワーク使おうぜ!フレームワーク使おうぜ!
フレームワーク使おうぜ!Takuya Sato
 
Weekend Androidのススメ
Weekend AndroidのススメWeekend Androidのススメ
Weekend AndroidのススメSuzuki Junko
 
TCUE:地域:コンピューティング4b_01ガイダンス
TCUE:地域:コンピューティング4b_01ガイダンスTCUE:地域:コンピューティング4b_01ガイダンス
TCUE:地域:コンピューティング4b_01ガイダンスKyoko Hanada
 
エンジニアのプレゼンスライド作成入門
エンジニアのプレゼンスライド作成入門エンジニアのプレゼンスライド作成入門
エンジニアのプレゼンスライド作成入門Tomoaki Imai
 
20200803 プログラミングの基礎
20200803 プログラミングの基礎20200803 プログラミングの基礎
20200803 プログラミングの基礎Hikaru Tanaka
 
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようYAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようazuma satoshi
 
プログラミング勉強会
プログラミング勉強会プログラミング勉強会
プログラミング勉強会ssuser50bb47
 
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#3Takeshi Akutsu
 
クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017Motohiro Ueki
 
「チケット駆動開発」への思い
「チケット駆動開発」への思い「チケット駆動開発」への思い
「チケット駆動開発」への思いMakoto SAKAI
 
アイディア発想法とかモノ作りを初める前にやること
アイディア発想法とかモノ作りを初める前にやることアイディア発想法とかモノ作りを初める前にやること
アイディア発想法とかモノ作りを初める前にやることYumi uniq Ishizaki
 
50代現役SEのつぶやき
50代現役SEのつぶやき50代現役SEのつぶやき
50代現役SEのつぶやきKenichi Yamada
 
CodingTips+ 基礎編
CodingTips+ 基礎編CodingTips+ 基礎編
CodingTips+ 基礎編Yusuke Ito
 
サービス開発者の読書会#5
サービス開発者の読書会#5サービス開発者の読書会#5
サービス開発者の読書会#5Sosuke Kimura
 
eXtremeProgramming入門
eXtremeProgramming入門eXtremeProgramming入門
eXtremeProgramming入門You&I
 
第1回 Android勉強会
第1回 Android勉強会第1回 Android勉強会
第1回 Android勉強会fujikunn
 
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 testingTakuto Wada
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyoShuyo 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+ 基礎編
 
サービス開発者の読書会#5
サービス開発者の読書会#5サービス開発者の読書会#5
サービス開発者の読書会#5
 
20120522 アジャイルサムライ読書会第5回
20120522 アジャイルサムライ読書会第5回20120522 アジャイルサムライ読書会第5回
20120522 アジャイルサムライ読書会第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

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (9)

自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

The principles of programming part.1