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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
LW_brochure_engineer
lincwellhr
1
45k
AIがなくてもつよいPM/PdM/ディレクターになるには?
iflection
0
900
データマネジメント研修(デジタル庁)
haseryo
22
27k
TableCheck Inc. - Company Profile
tablecheckac
0
530
株式会社ジオコード 会社紹介・採用説明資料
geocode0214
0
740
KEEBHOLIC NAGOYA Vol.2
shakupan
0
160
正解が消えた開発現場で、どう後輩を育てればいいのか?~ AI時代における「若手のストレス」と「メンターの限界」に向き合う ~
mkitahara01985
1
110
三井物産グループのデジタル証券~福岡・天神~徹底解説セミナー
c0rp_mdm
PRO
0
1k
20260813_ブラジル産鶏肉『ほぼ半額』報道の裏側_AI推測
doradora09
PRO
0
130
データを使う側視点のデータ整備 / 第2回 データ整備を前向きに考える会
shinu
PRO
0
330
UNICORN株式会社2026会社説明資料
unicorn
0
1.6k
家族アルバム みてね 事業紹介 / Our Business
familyalbum
9
63k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
RailsConf 2023
tenderlove
30
1.5k
Accessibility Awareness
sabderemane
1
210
Site-Speed That Sticks
csswizardry
13
1.5k
Balancing Empowerment & Direction
lara
6
1.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Git: the NoSQL Database
bkeepers
PRO
432
67k
Become a Pro
speakerdeck
PRO
31
6.2k
We Are The Robots
honzajavorek
0
360
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
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