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
オブジェクトの無い世界 / This world has no objects.
Search
sapi_kawahara
February 16, 2020
Education
1.2k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
オブジェクトの無い世界 / This world has no objects.
sapi_kawahara
February 16, 2020
More Decks by sapi_kawahara
See All by sapi_kawahara
氷川神社の話
sapi_kawahara
0
77
EzSignという 電子ペーパー
sapi_kawahara
2
94
Gitがない時代 インターネットがない時代の 開発話
sapi_kawahara
0
400
プログラミング言語において文字列を複数行にわたって だらだらと記載するアレ
sapi_kawahara
0
220
コマンドラインを見直そう(1995年からタイムリープ)
sapi_kawahara
0
780
今から始める8bits CPU アセンブラ言語
sapi_kawahara
0
2k
執筆テーマの決め方
sapi_kawahara
2
450
LTの禁じ手
sapi_kawahara
2
1.3k
||とorの違いは登壇して解決した
sapi_kawahara
0
430
Other Decks in Education
See All in Education
ちいかわを読め
uchi8977
1
350
データマネジメント試験対策教材1〜データマネジメント基礎〜
yoshimura_datam
1
750
[2026前期火5] 論理学(京都大学文学部 前期 第8回)「正規化定理の証明」
yatabe
0
340
Geografía y fútbol. Atlanta. la megalópolis del fútbol
juanmartin2026
1
12k
Examen de Selectividad. Geografía junio 2026 (Convocatoria Ordinaria). UCLM
juanmartin2026
1
6.7k
「答えを出す」より「わかる」をつくる
kzkmaeda
1
300
AI Generated Beer
lonbrew
0
120
中小規模私大の教学IRを支えるデータマネジメント ― データ基盤構築の取り組みと実務の現在地 ―
terazawa
0
160
Soluciones al examen de Geografía 2026. JULIO (Convocatoria Extraordinaria)
juanmartin2026
1
19k
AWS Skill Builderを活用した一石二鳥の業務計画
ysaeki
0
140
学生のうちに考えておきたい信頼の話
suisan
1
790
Portable & Reproducible Research Environments in the Age of AI Agents
denkiwakame
0
730
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
240
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
Docker and Python
trallard
47
4.2k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Agile that works and the tools we love
rasmusluckow
331
22k
BBQ
matthewcrist
89
10k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
65k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
How to make the Groovebox
asonas
2
2.4k
Designing Powerful Visuals for Engaging Learning
tmiket
1
560
Transcript
オブジェクトの無い世界 Object-Oriented Conference 2020
プロフィール • さっぴー川原 @sapi_kawahara • 放浪のITエンジニアです。 • 経験した言語は、BASIC,アセンブラ,C言 語,C++,Python,Java,Perl,PHP,Rubyです。 •
フロントエンドもある程度わかります。 • イケているテクノロジーも好きですが、過去のテクノロ ジーを話すのが好きです。(今回もそれ?)
注意 • 今回話す内容は、オブジェクト指向がほとんど出てきま せん。 • オブジェクト指向と言っても、2種類の考え方がありま す。 ◦ Simula (C++)
系とSmalltalk系です。 • つまり、抽象データ型と、メッセージ送信型の戦争の話 も出てきません。(当日11時半に追加しました) • 出てくるのは、それより前の話です・・・。
202*年のある日 • 主人公は、某システムの移行作業に明け暮れていた。 • システムは破綻しており 、毎日帰宅は終電というスケ ジュールでした。 • 時間も無いので、似たようなところはコピペで作業をし まくっていた。
• 疲れていた、とにかく疲れていた。 • もう、何もかも捨てたいと思っていた。 • スマホも捨ててしまえ!!!!
いつもと違う電車に乗る
到着したところは・・・
1億年後の未来
1億年後の未来で起きていること • 人は産まれると、特別な機械が埋め込まれる。 • 特別な機械が人の生活をすべてサポートする。 • 食事も、寝る必要もない。 • しゃべらなくても意思疎通ができるので、自然言語は失 われている。
• 地球はすべての地域で生活しやすい気候に変わってい る。
1億年後のコンピューター • 意思を持っている。 • 最適な判断ができる。 • 人を敵とは思っていない。 • プログラムをコンピューター自身がプログラミングす る。
開発言語も失われている
The world needs only one Computer. • 遠い昔にThe World Needs
Only Five Computers.という 予言がありました。 ◦ 当時のサン・マイクロシステムズのCTO、グレッグ・ パパドポラス氏が2006年にブログに書いたことで す。 ◦ Google、Yahoo、Amazon、Microsoft、Salesforce と、それにeBayあたりを加えれば、もうほかに地球上 にコンピュータなど不要という話です。 • 1億年後の世界は、それをさらに進めた世界です。
The world needs only one Computer. • 1億年後の未来は1つのコンピューターが、人類の衣食住 をすべて管理して、人は産まれたら、毎日好きなことを するだけで、遊んで暮らすだけです。
• 夢のような世界ですが、これを求めない集団が、この1つ のコンピューターにトラップというバグをしかけまし た。 • このことに気付いた1つのコンピューターが過去の世界か らエンジニアを呼び寄せました。
そう貴方は選ばれた戦士です!
さきほど言いました
この世界は開発言語が失われている
開発する方法は無いのか?
そこであることを思い出す
伝説のフィルム
GitHub Arctic Code Vault
GitHub Arctic Code Vaultとは? • GitHubは、ソースコードを1000年間アーカイブ(保管) することで、次世代にオープンソースソフトウェアを残 すというプロジェクトです。 • 残し方は、ソースコードをQRコードに置き換えてフィル
ムに焼き付けて、気候変化が少ない北極圏に保管しま す。 • 1億年後、この設備はメンテナンスされていなかったが、 フィルムは残っていた。
しかしカメラデバイスは存在しない 冒頭でスマホを捨てたよねー
あきらめよう!
バグっているコンピューターに依頼したこと • コンピューターにしか分からないニーモニックを、人が 分かる形に変換する。 • キーボードを用意してもらう。
できたプログラムは・・・ • コンピューターが好き勝手に作ったものなので、典型的 な動けばいい形になっている。 • 一枚板の巨大なプログラムがあるだけです。 • サブルーチン化すらしていない。 • 継ぎ接ぎだらけなので、あちこちに飛びまくる。(go
to 文) • そう、オブジェクト指向前のプログラムだったのです。
バグを直す前にRefactoringだ!
まずは構造化定理を決めよう! Structured theorem
構造化定理とは? • プログラムを整理された構造の組み合わせによって構成 することです。 • その際に使うものは「順次(Sequence)」「反復 (Iteration)」「分岐(Selection)」です。 • 出入り口は1つだけです。 ◦
1966年にイタリアのコンピュータ科学者コラド・ ベームとジュゼッペ・ヤコピーニが証明した「構造化 プログラム定理」(Structured program theorem) が元となっています。
自動に作られたプログラムは・・・ 処理B 判定 A 処理A true false 判定B 判定 C
処理C
これを構造化定理に合わせ直します
順次(Sequence) 処理B 処理A
反復(Iteration) 処理A 判定 A true false
分岐(Selection) 処理B 判定 A 処理A true false
構造化定理に収まりました
次に構造化プログラミングだ! Structured programming
構造化プログラミングとは? • 抽象(Abstraction)から細部(Refinement)への設計 (トップダウン設計)をすることによる開発手法で、当 時はパーツを作ってから全体を作る方式が主流になって ました。 • これにより車輪の再発明などのコピペプログラミングが 多かったです。
構造化プログラミングとは? • これに段階的抽象(Step-wise abstraction)を持ち込 み、抽象化したオブジェクトを設計してからの開発方式 を提唱しました。 ◦ 1969年にオランダ人の計算機科学者ダイクストラが 発表した構造化プログラミング(structured programming)が元になっています。
• まずは、全体を抽象化しよう!
まずは全体を抽象化しよう!
でも設計書が無いよね
まずはモジュール(Module)化しよう
モジュール(Module)化とは? • 構造化定理には、モジュール化、つまりサブルーチン (関数)の考えが無いです。 • 構造化プログラミングには、サブルーチンが必要です。 • サブルーチンは、構造化プログラミングの段階的抽象 (Step-wise abstraction)の考えにより作られていま
す。
頑張ってモジュール化しました
しかし・・・ • モジュール化しましたが、単なるサブルーチンで全然イ ケてない。 • サブルーチンを呼び出すだけになっているので、臨機応 変に変更ができない。 • もっとサブルーチンを使いやすくするには? •
サブルーチンを自由にする。
サブルーチンを自由にする • 自由にするということは以下のことが保証されていま す。 ◦ 変数として名前がつけられる。 ◦ 手続きに引数として渡せる。 ◦ 手続きの結果として返される。
◦ データ構造に組み込める。 • サブルーチンをインスタンス化(Instantiation)するこ とで実現できそうです。 • この自由なサブルーチンのことを次のように言います。
第一級関数(First class function)
オブジェクト指向な感じになりました
ここで目が覚める
元の世界に戻ってきました • 違う電車は逆方向に乗っただけです。 • 今日は1日休みましょう。 • 明日からは今までやってきたことを反省しつつ新たなこ とにチャレンジしようと思いました。 • まずはスマホを探そう!
まとめ • この資料は、当方が遠い昔にオブジェクト指向を学ぶときに、前座で 読んだ本に書いてあったことの抜粋で、未来の話は付け加えました。 • オブジェクト指向がブームなりつつあった頃、構造化定理はもちろ ん、構造化プログラミングが定着しておりません。 • その頃は構造化プログラミングに関して間違った考えも広まり、オブ ジェクト指向が定着するのは、Java言語やDelphi言語が登場してか
らです。 • 今回、歴史の話があまり無いと思い、このような登壇をしました。