What is object-oriented programming like?

065123b2946f423fd30072b422fcedd2?s=47 bando
August 15, 2019

What is object-oriented programming like?

065123b2946f423fd30072b422fcedd2?s=128

bando

August 15, 2019
Tweet

Transcript

  1. None
  2. 今⽇のタイムスケジュール

  3. 今⽇のタイムスケジュール s  ガイダンス 10分 s  講義 40分 s  質疑応答 10〜20分 s 

    懇親会
  4. 今⽇の勉強会の概要

  5. 今⽇の勉強会の概要 s  ⾃⼰紹介 s  初現場でしくじった話 s  オブジェクト指向を考える s  マクドナルドとシステムの類似性 s 

    オブジェクト指向のメリット s  (時間あれば)正しい現場での振る舞い⽅
  6. ⾃⼰紹介

  7. 簡単な紹介 s  板東 祐太朗(バンドウ ユウタロウ) s  業務系フリーランスエンジニア -主にバックエンド(Java、C#メイン) s  新卒で塾講師               

    -中学⽣に英語の指導や模試の作成 s  模試づくりをしている際に「ものづくり」の楽しさに気づく -エンジニアへ                  
  8. 簡単な紹介その2 s  IT業界のキャリア  ・Webセキュリティサイトの開発(2ヶ⽉)  ・銀⾏業務のペーパーレス化開発(半年) ・⾃動⾞サイトの保守開発(半年) ・⾦融系新規Webサイト構築(今ココ!) -開発経験は1年半くらい s  暇さえあれば⼤体せんべろ巡りをしている

  9. フリーランスはいいよって話 s  お⾦について  中⼩SIer時代: ⽉給25万(ボーナス雀の涙)  フリーランス:⽉給50万  -倍になる s  休みについて  準委任契約なら⼤体140〜200時間の時間契約

     -⽉2回くらいなら休んでもOK
  10. 初現場でしくじった話

  11. 当時の私 ・2ヶ⽉の研修終わったばかり ・For⽂やif⽂といった基本的な⽂法はマスター ・クラス?メソッド?オブジェクト指向? ・⾃社の先輩とセットで⼊場  →まぁなんとかなるか・・・?

  12. 結果

  13. None
  14. None
  15. ⼤ 炎 上

  16. 当時の⼼境 s  クラス多すぎてどこからソース追えばいいかわか らない s  クラス⾒つかってもメソッドがどこから呼ばれて るのかわからない s  デバッグする時はどこにブレークポイント置けば いいの?

    s  API?Json?バッチ?
  17. なぜそうなったのか? s  単純な勉強不⾜ s  スキルが無いため質問がうまくできない s  何がわからないのか⾃分でもわからない s  調べてもそのままコピペするくらいにしかできな い

    s  膨⼤なソースの量に思考停⽌する
  18. 根本的な原因は? 1.システムの全体像が⾒えていない 膨⼤な量に圧倒されてシステムが不可解な塊にしか⾒えない 2.システムを作る上での決まりごとを理解していない コーディングにはオリジナリティ・独創性が必要だと勘違い

  19. 1年半経った今わかること

  20. エンジニアは コーディングする際に ある種の共通認識 を持っている

  21. その共通認識とは?

  22. “オブジェクト指向”

  23. オブジェクト指向に ついて考える

  24. そもそも オブジェクト指向って? s  オブジェクト指向(オブジェクトしこう、英: object- oriented)は、ソフトウェア⼯学理論の⼀つであり、 ソフトウェア設計とプログラム記述の際に⽤いられる 考え⽅である。元々は特定のプログラミング・パラダ イムを説明する為に考案された⾔葉だった。object- oriented

    programmingのように修飾語として⽤いられ るのが常であり、それ単体で扱われる事はない漠然と した設計構想でもある。 (引⽤元:https://ja.wikipedia.org/wiki/ %E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3 %82%AF%E3%83%88%E6%8C%87%E5%90%91) 詳細は「オブジェクト指向プログラミング」を参照
  25. ???

  26. そもそも オブジェクト指向って? s  オブジェクト指向(オブジェクトしこう、英: object- oriented)は、ソフトウェア⼯学理論の⼀つであり、 ソフトウェア設計とプログラム記述の際に⽤いられる 考え⽅である。元々は特定のプログラミング・パラダ イムを説明する為に考案された⾔葉だった。object- oriented

    programmingのように修飾語として⽤いられ るのが常であり、それ単体で扱われる事はない漠然と した設計構想でもある。 (引⽤元:https://ja.wikipedia.org/wiki/ %E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3 %82%AF%E3%83%88%E6%8C%87%E5%90%91) 詳細は「オブジェクト指向プログラミング」を参照
  27. そもそも オブジェクト指向って? s  オブジェクト指向プログラミング(オブジェクトしこうプ ログラミング、英: object-oriented programming、略 語:OOP)は、オブジェクト指向の考え⽅[1]を取り⼊れたコ ンピュータプログラミング⼿法である。オブジェクトとは ⼤まかに⾔うとデータ(変数またはプロパティ)とコード

    (関数またはメソッド)の複合体を意味しているが、その 詳細については様々な解釈が存在する。OOPに基づくプロ グラムはこのオブジェクトの集合として組み⽴てられる事 になるが、その実装スタイルもまた千差万別である。 (引⽤元:https://ja.wikipedia.org/wiki/ %E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82% AF%E3%83%88%E6%8C%87%E5%90%91%E3%83%97%E3%83 %AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3% 82%B0)
  28. ???????

  29. わからないので 聞いてみよう s あなた「先輩!オブジェクト指 向って何ですか?」

  30. Answer s 先輩A 「オブジェクト指向ね!ああ、あ の継承とかカプセル化とかプログ ラミングをやりやすくする⽅法だ よ!」

  31. Answer s 先輩B 「え?そんなことも知らないの? 勉強不⾜にも程があるよ。まぁま ず⾃分でググって調べなよ」

  32. この説明の 何がいけないのか s  先輩A 「オブジェクト指向ね!ああ、あの継承とかカプセ ル化とかプログラミングをやりやすくする⽅法だ よ!」 -専⾨⽤語を使って何となく返答しているパターン --実務に活かせる回答では無い -そもそも本⼈も理解がアヤシイ

  33. この説明の 何がいけないのか s  先輩B 「え?そんなことも知らないの?勉強不⾜にも程が あるよ。まぁまず⾃分でググって調べなよ」 -謎にマウンティングされるパターン -こういう⼈とは先輩でも仲良くしない⽅がいい -⾃分⾃⾝が先輩になった時反⾯教師にするべき -

    SIerに多い
  34. 私たちが知りたいのは

  35. 「理念より、まずは 実務で使える考え⽅」

  36. オブジェクト指向とは

  37. “部品化“

  38. マクドナルドとシステム の類似性

  39. 部品化を紐解くために

  40. None
  41. オーダーから提供まで 1.レジで注⽂を受ける 2.オーダーが⼊る 3.オーダーを作る 4.商品をまとめる 5.お客様へ提供する

  42. 検索システムに 置きかえる

  43. 1.レジで注⽂を受ける s  マクドナルド: 「ハンバーガーセット1つ」のオーダーを受ける ⇅ s  検索システム: 「社員番号から経理部の佐藤さんの情報が欲しい」 との命令を受ける

  44. 1.の役割 s  役割1 マクドナルド:オーダーを記録する 検索システム:⼊⼒情報を保持する s  役割2 マクドナルド:オーダーを厨房に届ける 検索システム:情報を内部(サーバ)に伝達する

  45. レジ=クライアント

  46. クライアントとは s  ユーザー(利⽤者)と直接やり取りを⾏う ≒マックでいうレジのお姉さん的役割 s  ユーザーとシステムの橋渡しをするインターフェース s  ユーザーが⼊⼒した情報をバックエンド (サーバ側) に渡す

    →サーバにリクエストを投げる(HTTPとか)
  47. 2.オーダーが⼊る s  マクドナルド:  オーダーの内容を厨房の担当者が理解する           ⇅ s  検索システム:  「社員番号」という検索条件の⽂字列を  サーバ側が受け取る

  48. 3.オーダーを作る s  マクドナルド:  オーダーを厨房の担当者が処理していく   EX) パンを焼く、⾁を焼く、ポテトを作る ⇅ s  検索システム:

     検索キーワードの「社員番号」から佐藤さんの  情報を⽣成する   EX) DBにアクセスする、⼊⼒チェックを⾏う
  49. 4.商品をまとめる s  マクドナルド:  ハンバーガーやポテト、ドリンクをまとめて  1つのセットにする           ⇅ s  検索システム:  DBから抽出してきたデータを画⾯で表⽰  できるよう情報を整形する

  50. 2.〜4.の役割 s  役割 マクドナルド:オーダーを厨房担当者が調理する 検索システム:検索条件の⽂字列から        サーバがDBに問い合わせをし、        取得したデータを⽣成する

  51. 厨房=サーバ

  52. 5.お客様へ提供する s  マクドナルド:  完成した「ハンバーガーセット」をお客様に提供する           ⇅ s  検索システム:  DBに登録されていた「経理部の佐藤さん」の情報を   ブラウザに表⽰する

  53. 各々の役割は? マクドナルド: Aさん: レジ打ち担当 Bさん: ドリンク作り担当 Cさん: オーダーされた商品の取りまとめ担当 Dさん: ポテト・フライ作り担当

    Eさん: パンを焼く&盛り付け担当 Fさん: クレーム担当
  54. 各々の役割は? システム: クラスA: 画⾯表⽰担当 クラスB: ⼊⼒チェック担当 クラスC : クライアントとサーバの橋渡し担当 クラスD:

    DBの接続担当 クラスE: データの整形担当 クラスF: エラー処理担当
  55. ⼀つのシステム≠⼀つの機能

  56. ⼀つのシステム=各部品の集合体

  57. 部品=オブジェクト

  58. オブジェクト指向とは

  59. システム全体を 機能ごとに部品化して ⼀つのシステムを作る思想

  60. オブジェクト指向の メリット

  61. オブジェクト指向を 考慮しないと・・・ https://twitter.com/minodriven/status/ 1127539251761909760 アカウント:ミノ駆動@MinoDriven

  62. オブジェクト指向 のメリット s  改修しやすい s  可読性が⾼い(=誰もが⾒ても読みやすい) s  バグが⽣じにくい  -クラスに機能がまとまっている  -原因追求がしやすい

  63. 最後に

  64. 質疑応答Time s Twitter bandy@yudetamagonnn