Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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
AIをマイクロマネジメントしない ~プロダクトと組織を、同じ原則で動かす~
shokikitajima8823
0
300
How SureSmile Clear Aligners Work Step-by-Step Guide for Beginners
burtonadvancedentalmi
0
130
kakaopiccoma_engineer_recruitingguide
kakaojapan
2
180
採用ピッチ資料_キヨモトテックイチ
satoshi01
0
170
ARI_BXデザイン第2事業ドメイン_事業紹介資料
arid2
0
170
Sotas Company Deck / 会社紹介資料
sotas
0
590
セーフィー株式会社(Safie Inc.) 会社紹介資料
safie_recruit
7
450k
営業、広報、開発。 多面的なAIネイティブ化のための 基盤について
timakin
0
200
プリザンターの紹介 - OpenSourceConference 2026 SENDAI
s_pochi
0
160
ログラス会社紹介資料 / Loglass Company Deck
loglass2019
17
550k
2025年度「海の家プロジェクト」ピッチ資料
brush2026
0
240
【サービス資料】toiro BPO.pdf
shiftgroup
PRO
0
210
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
330
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Believing is Seeing
oripsolob
1
140
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
140
Side Projects
sachag
455
43k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
200
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