Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
What is object-oriented programming like?
Search
bando
August 15, 2019
Business
270
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
What is object-oriented programming like?
bando
August 15, 2019
Other Decks in Business
See All in Business
Cobe Associe: Who we are? /コンサル・市場調査・人材紹介のCobe Associe
nozomi
6
21k
三井物産グループのデジタル証券~福岡・天神~徹底解説セミナー
c0rp_mdm
PRO
0
1.1k
OR Royalties Inc. - Corporate Presentation, September 2026
orroyalties
0
770
KEEBHOLIC NAGOYA Vol.2
shakupan
0
170
TableCheck Inc. - Company Profile
tablecheckac
0
540
自分が "コントロールできる" と思い込んで "引き出しを増やす"
konifar
15
6.3k
安定公務員みたいな学校から 毎年アップデートされる世界へ
maijun
1
1.1k
202609_UPDATER_companysummary
updater_pr
0
170k
10年、同じドメインに 浸かる覚悟 / Decade-deep in one domain.
hirokiyamamoto14
PRO
0
240
AIがなくてもつよいPM/PdM/ディレクターになるには?
iflection
0
950
向山純平 ご提供業務一覧 / Junpei Mukouyama – Professional Services
mj6237
3
110
エンジニアの示唆に溢れている漫画『HUNTER×HUNTER』
shinyasaita
0
190
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
My Coaching Mixtape
mlcsv
0
310
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
Designing for Timeless Needs
cassininazir
1
470
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
350
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
520
Documentation Writing (for coders)
carmenintech
77
5.5k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
230
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Transcript
None
今⽇のタイムスケジュール
今⽇のタイムスケジュール s ガイダンス 10分 s 講義 40分 s 質疑応答 10〜20分 s
懇親会
今⽇の勉強会の概要
今⽇の勉強会の概要 s ⾃⼰紹介 s 初現場でしくじった話 s オブジェクト指向を考える s マクドナルドとシステムの類似性 s
オブジェクト指向のメリット s (時間あれば)正しい現場での振る舞い⽅
⾃⼰紹介
簡単な紹介 s 板東 祐太朗(バンドウ ユウタロウ) s 業務系フリーランスエンジニア -主にバックエンド(Java、C#メイン) s 新卒で塾講師
-中学⽣に英語の指導や模試の作成 s 模試づくりをしている際に「ものづくり」の楽しさに気づく -エンジニアへ
簡単な紹介その2 s IT業界のキャリア ・Webセキュリティサイトの開発(2ヶ⽉) ・銀⾏業務のペーパーレス化開発(半年) ・⾃動⾞サイトの保守開発(半年) ・⾦融系新規Webサイト構築(今ココ!) -開発経験は1年半くらい s 暇さえあれば⼤体せんべろ巡りをしている
フリーランスはいいよって話 s お⾦について 中⼩SIer時代: ⽉給25万(ボーナス雀の涙) フリーランス:⽉給50万 -倍になる s 休みについて 準委任契約なら⼤体140〜200時間の時間契約
-⽉2回くらいなら休んでもOK
初現場でしくじった話
当時の私 ・2ヶ⽉の研修終わったばかり ・For⽂やif⽂といった基本的な⽂法はマスター ・クラス?メソッド?オブジェクト指向? ・⾃社の先輩とセットで⼊場 →まぁなんとかなるか・・・?
結果
None
None
⼤ 炎 上
当時の⼼境 s クラス多すぎてどこからソース追えばいいかわか らない s クラス⾒つかってもメソッドがどこから呼ばれて るのかわからない s デバッグする時はどこにブレークポイント置けば いいの?
s API?Json?バッチ?
なぜそうなったのか? s 単純な勉強不⾜ s スキルが無いため質問がうまくできない s 何がわからないのか⾃分でもわからない s 調べてもそのままコピペするくらいにしかできな い
s 膨⼤なソースの量に思考停⽌する
根本的な原因は? 1.システムの全体像が⾒えていない 膨⼤な量に圧倒されてシステムが不可解な塊にしか⾒えない 2.システムを作る上での決まりごとを理解していない コーディングにはオリジナリティ・独創性が必要だと勘違い
1年半経った今わかること
エンジニアは コーディングする際に ある種の共通認識 を持っている
その共通認識とは?
“オブジェクト指向”
オブジェクト指向に ついて考える
そもそも オブジェクト指向って? 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) 詳細は「オブジェクト指向プログラミング」を参照
???
そもそも オブジェクト指向って? 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) 詳細は「オブジェクト指向プログラミング」を参照
そもそも オブジェクト指向って? 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)
???????
わからないので 聞いてみよう s あなた「先輩!オブジェクト指 向って何ですか?」
Answer s 先輩A 「オブジェクト指向ね!ああ、あ の継承とかカプセル化とかプログ ラミングをやりやすくする⽅法だ よ!」
Answer s 先輩B 「え?そんなことも知らないの? 勉強不⾜にも程があるよ。まぁま ず⾃分でググって調べなよ」
この説明の 何がいけないのか s 先輩A 「オブジェクト指向ね!ああ、あの継承とかカプセ ル化とかプログラミングをやりやすくする⽅法だ よ!」 -専⾨⽤語を使って何となく返答しているパターン --実務に活かせる回答では無い -そもそも本⼈も理解がアヤシイ
この説明の 何がいけないのか s 先輩B 「え?そんなことも知らないの?勉強不⾜にも程が あるよ。まぁまず⾃分でググって調べなよ」 -謎にマウンティングされるパターン -こういう⼈とは先輩でも仲良くしない⽅がいい -⾃分⾃⾝が先輩になった時反⾯教師にするべき -
SIerに多い
私たちが知りたいのは
「理念より、まずは 実務で使える考え⽅」
オブジェクト指向とは
“部品化“
マクドナルドとシステム の類似性
部品化を紐解くために
None
オーダーから提供まで 1.レジで注⽂を受ける 2.オーダーが⼊る 3.オーダーを作る 4.商品をまとめる 5.お客様へ提供する
検索システムに 置きかえる
1.レジで注⽂を受ける s マクドナルド: 「ハンバーガーセット1つ」のオーダーを受ける ⇅ s 検索システム: 「社員番号から経理部の佐藤さんの情報が欲しい」 との命令を受ける
1.の役割 s 役割1 マクドナルド:オーダーを記録する 検索システム:⼊⼒情報を保持する s 役割2 マクドナルド:オーダーを厨房に届ける 検索システム:情報を内部(サーバ)に伝達する
レジ=クライアント
クライアントとは s ユーザー(利⽤者)と直接やり取りを⾏う ≒マックでいうレジのお姉さん的役割 s ユーザーとシステムの橋渡しをするインターフェース s ユーザーが⼊⼒した情報をバックエンド (サーバ側) に渡す
→サーバにリクエストを投げる(HTTPとか)
2.オーダーが⼊る s マクドナルド: オーダーの内容を厨房の担当者が理解する ⇅ s 検索システム: 「社員番号」という検索条件の⽂字列を サーバ側が受け取る
3.オーダーを作る s マクドナルド: オーダーを厨房の担当者が処理していく EX) パンを焼く、⾁を焼く、ポテトを作る ⇅ s 検索システム:
検索キーワードの「社員番号」から佐藤さんの 情報を⽣成する EX) DBにアクセスする、⼊⼒チェックを⾏う
4.商品をまとめる s マクドナルド: ハンバーガーやポテト、ドリンクをまとめて 1つのセットにする ⇅ s 検索システム: DBから抽出してきたデータを画⾯で表⽰ できるよう情報を整形する
2.〜4.の役割 s 役割 マクドナルド:オーダーを厨房担当者が調理する 検索システム:検索条件の⽂字列から サーバがDBに問い合わせをし、 取得したデータを⽣成する
厨房=サーバ
5.お客様へ提供する s マクドナルド: 完成した「ハンバーガーセット」をお客様に提供する ⇅ s 検索システム: DBに登録されていた「経理部の佐藤さん」の情報を ブラウザに表⽰する
各々の役割は? マクドナルド: Aさん: レジ打ち担当 Bさん: ドリンク作り担当 Cさん: オーダーされた商品の取りまとめ担当 Dさん: ポテト・フライ作り担当
Eさん: パンを焼く&盛り付け担当 Fさん: クレーム担当
各々の役割は? システム: クラスA: 画⾯表⽰担当 クラスB: ⼊⼒チェック担当 クラスC : クライアントとサーバの橋渡し担当 クラスD:
DBの接続担当 クラスE: データの整形担当 クラスF: エラー処理担当
⼀つのシステム≠⼀つの機能
⼀つのシステム=各部品の集合体
部品=オブジェクト
オブジェクト指向とは
システム全体を 機能ごとに部品化して ⼀つのシステムを作る思想
オブジェクト指向の メリット
オブジェクト指向を 考慮しないと・・・ https://twitter.com/minodriven/status/ 1127539251761909760 アカウント:ミノ駆動@MinoDriven
オブジェクト指向 のメリット s 改修しやすい s 可読性が⾼い(=誰もが⾒ても読みやすい) s バグが⽣じにくい -クラスに機能がまとまっている -原因追求がしやすい
最後に
質疑応答Time s Twitter bandy@yudetamagonnn