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
280
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
22k
パーソルビジネスプロセスデザイン株式会社 会社説明資料
persolcareer
0
2.2k
Шпаргалка менеджера: перші 30 днів на новій посаді | Презентація вебінару з Альоною Лубчак
e5ua
0
160
ビーヘルシー採用
behealthy
0
130
クリヤマホールディングス㈱採用資料
uemura2024
0
9.1k
事業計画及び成長可能性に関する事項
kuradashi
0
1.2k
株式会社うるる エンジニア向け採用資料
uluru_hr
3
140k
202609_UPDATER_companysummary
updater_pr
0
180k
I Ran 30+ GEO Experiments So You Don't Have To: What 200M AI Citations Say Actually Works
thomaspeham
1
120
社外CTOパートナー(2026.10版) - ORDINARY LLC
ordy_nishiyama
0
190
向山純平 メニュー表 / Junpei Mukouyama – Professional Services
mj6237
3
300
増え続ける運用を、 Skill化する"型"でさばく
morimori3
0
410
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
970
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
The SEO Collaboration Effect
kristinabergwall1
1
590
Product Roadmaps are Hard
iamctodd
55
13k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How to Ace a Technical Interview
jacobian
280
24k
How to build a perfect <img>
jonoalderson
1
6.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Unsuck your backbone
ammeep
672
58k
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