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

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

unisuke
October 28, 2020
210

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

unisuke

October 28, 2020
Tweet

Transcript

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

    View Slide

  2. 自己紹介
    ● うにすけ
    ● 埼玉県出身
    ● 21才
    ● 東北大学工学部電気情報物理工学科3年
    ● はじめてのIT勉強会副代表
    @uniuni__8282 mayu.uenishi.1

    View Slide

  3. View Slide

  4. プログラマが3年目までに身に付けたい一
    生役立つ101の原理原則

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    ● 書いたコードを見返した時読みにくいと感じる
    ● 書いたコードを修正すると途端に動かなくなる
    ● 書いたコードを修正すると予想外の箇所に影響が出る
    ● 書いたコードに機能を追加しようとしてもうまくいかない
    ● 書いたコードに仕様変更が入るとその部分全てが書き直しになる
    「よいコード」にならない

    View Slide

  9. なぜ「よいコード」が書ける
    プログラマに成長するのが困難か?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. プログラミングに銀の弾丸はない
    No Silver Bullet in programing.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  32. KISS
    Keep It Simple, Stupid.
    「シンプルにしておけ、愚か者よ」

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  38. 名前重要
    Naming is important.

    View Slide

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

    View Slide

  40. プログラマの3大美徳
    Three great virtues of a programmer.

    View Slide

  41. 短気
    怠惰
    傲慢

    View Slide

  42. 短気
    怠惰
    傲慢

    View Slide

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

    View Slide

  44. 短気
    怠惰
    傲慢

    View Slide

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

    View Slide

  46. 短気
    怠惰
    傲慢

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  55. Twitterのフォローお願いします!
    @uniuni__8282
    ご清聴ありがとうございました

    View Slide