楽天技術研究所 ネットワーク応用通信研究所 rubyアソシエー...

Post on 13-Jul-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Powered by Rabbit 2.1.8

Second System Syndrome

楽天技術研究所ネットワーク応用通信研究所

RubyアソシエーションHeroku

まつもとゆきひろYukihiro "Matz" Matsumoto

@yukihiro_matz

Powered by Rabbit 2.1.8

 

ソフトウェア開発Software development

Powered by Rabbit 2.1.8

 

ソフトウェア開発は難しいSoftware development is hard

Powered by Rabbit 2.1.8

 

誤解もあるIt's often misunderstood

Powered by Rabbit 2.1.8

 

設計してコーディングDesign then code

Powered by Rabbit 2.1.8

 

間違いWrong!

Powered by Rabbit 2.1.8

 

ソフトウェア開発は設計であるSoftware development is designing

Powered by Rabbit 2.1.8

 

間違った前提による困難さDifficult to work on false assumption

Powered by Rabbit 2.1.8

 

設計=デザイン

Powered by Rabbit 2.1.8

 

デザインは難しいDesign is hard

Powered by Rabbit 2.1.8

 

何を作るべきか知らないWe don't know what we should make

Powered by Rabbit 2.1.8

 

Powered by Rabbit 2.1.8

 

欲しがるものを作ってはいけないWe shouldn't make what they want

Powered by Rabbit 2.1.8

 

顧客に何が欲しいか尋ねたら「速い馬」と答えたろう

ヘンリー・フォード

Powered by Rabbit 2.1.8

 

生活を変えるものを作るMake what changes their lives

Powered by Rabbit 2.1.8

 

存在しないものを創造するCreate something that have never existed

Powered by Rabbit 2.1.8

 

デザインは決断であるDesign is decision

Powered by Rabbit 2.1.8

 

決断は難しいDecision is hard

Powered by Rabbit 2.1.8

 

未来はわからないからBecause the future is unknown

Powered by Rabbit 2.1.8

 

状況が変化するからBecause the situation changes

Powered by Rabbit 2.1.8

 

昔は良かったGood old days

Powered by Rabbit 2.1.8

 

目的は明快だったThe target was clear

Powered by Rabbit 2.1.8

 

数値計算Numerical calculation

Powered by Rabbit 2.1.8

 

事務処理Business processing

Powered by Rabbit 2.1.8

 

良き昔は過ぎ去ったGood old days have over

Powered by Rabbit 2.1.8

 

今は解を求めてさまようNow we struggle to find the solution

Powered by Rabbit 2.1.8

 

解はないかもしれないThe solution may be illusion

Powered by Rabbit 2.1.8

 

Ruby

Powered by Rabbit 2.1.8

 

Rubyを公開した時(1995年)When I released Ruby in 1995

Powered by Rabbit 2.1.8

 

「スクリプト言語にオブジェクト指向は要らない」

Some said we don't need OO for scripting

Powered by Rabbit 2.1.8

 

間違ってたBut they were wrong

Powered by Rabbit 2.1.8

 

何が欲しいか聞かなかったI didn't ask them what they want

Powered by Rabbit 2.1.8

 

私が未来で使いたいものを作ったI created what I wanted to see in the future

Powered by Rabbit 2.1.8

 

わからない人もいたSome didn't understand what they saw

Powered by Rabbit 2.1.8

 

気にしなかったI didn't care

Powered by Rabbit 2.1.8

 

10年続けたI kept working for 10 years

Powered by Rabbit 2.1.8

 

「当たり前」になったRuby became new normal

Powered by Rabbit 2.1.8

 

未来の「当たり前」を作るCreate new normal

Powered by Rabbit 2.1.8

 

ソフトウェア開発の本質The essence of software development

Powered by Rabbit 2.1.8

 

良いソフトウェアを作ったSuppose you have created the great software

Powered by Rabbit 2.1.8

 

そこで終わりじゃないIt's not the end of your development

Powered by Rabbit 2.1.8

 

未来はわからないからBecause the future is unknown

Powered by Rabbit 2.1.8

 

状況が変化するからBecause the situation changes

Powered by Rabbit 2.1.8

 

生まれた瞬間から古びるソフトウェアSoftware gets older soon after created

Powered by Rabbit 2.1.8

 

変化する状況への対応We have to adapt to changing situation

Powered by Rabbit 2.1.8

 

時間が経つにつれてAs time goes by

Powered by Rabbit 2.1.8

 

システムはより大きく複雑にSystems will go bigger, more complex

Powered by Rabbit 2.1.8

 

保守も難しくなるMore difficult to maintain

Powered by Rabbit 2.1.8

 

複雑なシステムがイヤになった時When we become sick of complex systems

Powered by Rabbit 2.1.8

 

セカンド・システム症候群が起きるSecond system syndrome will come

Powered by Rabbit 2.1.8

 

セカンド・システム症候群Second system syndrome (SSS)

Powered by Rabbit 2.1.8

 

廃棄再創造希求症候群Scrap and build syndrome

Powered by Rabbit 2.1.8

 

症状Symptoms

Powered by Rabbit 2.1.8

 

すべて捨てたい誘惑Temptation to throw away everything

Powered by Rabbit 2.1.8

 

ゼロから作り治したい誘惑Temptation to create everything from scratch

Powered by Rabbit 2.1.8

 

もっと綺麗なシステムが作れるという幻想

Illution that we could create cleaner systems

Powered by Rabbit 2.1.8

 

もっと高性能なシステムが作れるという幻想

Illution that we could create systems that performs better

Powered by Rabbit 2.1.8

 

意思決定者を説得する熱意Enthusiasm to persuade the boss

Powered by Rabbit 2.1.8

 

良いデザインへの強い熱意Strong enthusiasm for better design

Powered by Rabbit 2.1.8

 

予想以上に困難なデザインDifficult design problems beyond expectation

Powered by Rabbit 2.1.8

 

予想以上にかかる時間Delayed schedule beyond forecast

Powered by Rabbit 2.1.8

 

予算を越える費用Development cost beyond budget

Powered by Rabbit 2.1.8

 

怒る顧客Angry clients

Powered by Rabbit 2.1.8

 

破綻するプロジェクトProject failure

Powered by Rabbit 2.1.8

 

あ痛た、たOuch!!

Powered by Rabbit 2.1.8

 

しょっちゅう起きるSSS happens all the time

Powered by Rabbit 2.1.8

 

程度の違いこそあれwith different severity

Powered by Rabbit 2.1.8

 

私の専門はプログラミング言語My expertise is programming languages

Powered by Rabbit 2.1.8

 

言語も例外ではないLanguages are no exception

Powered by Rabbit 2.1.8

 

むしろ言語では頻発するRather many languages suffer SSS

Powered by Rabbit 2.1.8

 

言語は長生きだからBecause languages live longer

Powered by Rabbit 2.1.8

 

普通のアプリよりもはるかにFar more than usual applications

Powered by Rabbit 2.1.8

 

Case 1

Powered by Rabbit 2.1.8

 

Perl5 vs Perl6

Powered by Rabbit 2.1.8

 

Perl6は2000年に開発開始Perl6 project started 2001

Powered by Rabbit 2.1.8

 

Perlの思想を引継ぐPerl6 inherit Perl philosophy

Powered by Rabbit 2.1.8

 

ゼロから実装Perl6 implementation from scratch

Powered by Rabbit 2.1.8

 

新文法Totally new syntax

Powered by Rabbit 2.1.8

 

新VMTotally new virtual machine

Powered by Rabbit 2.1.8

 

15年後(2015年)15 years later (2015)

Powered by Rabbit 2.1.8

 

Perl6はまだないWe don't have Perl6 yet

Powered by Rabbit 2.1.8

 

今年のクリスマス(予定)Finally this christmas (hopefully)

Powered by Rabbit 2.1.8

 

普及には恐らくさらに何年もProbably need years to become widely used

Powered by Rabbit 2.1.8

 

誤解しないで欲しいDon't get me wrong

Powered by Rabbit 2.1.8

 

Perlコミュニティを尊敬しているI respect Perl community

Powered by Rabbit 2.1.8

 

Perlコミュニティは賢いPerl people are smart

Powered by Rabbit 2.1.8

 

そんな彼らも苦しむEven they suffer

Powered by Rabbit 2.1.8

 

セカンドシステム症候群は恐ろしいSecond system syndrome is scary

Powered by Rabbit 2.1.8

 

Case 2

Powered by Rabbit 2.1.8

 

Python2 vs Python3

Powered by Rabbit 2.1.8

 

Python3000

Powered by Rabbit 2.1.8

 

Python3000設計方針Python3000 design policy

Powered by Rabbit 2.1.8

 

古いやり方を捨て機能重複を減らす"reduce feature duplication by removing old ways of doing

things"

Powered by Rabbit 2.1.8

 

西暦3000年までに出ればWish we could release it before A.D.3000

Powered by Rabbit 2.1.8

 

何年も何年も議論Discussed for years

Powered by Rabbit 2.1.8

 

2006年、Python3000開発開始Python3000 project started in 2006

Powered by Rabbit 2.1.8

 

2008年、Python3.0公開Python3.0 was relased in 2006

Powered by Rabbit 2.1.8

 

互換性問題Compatibility problems

Powered by Rabbit 2.1.8

 

2015年になってもPython2がまだ使われている

In 2015, Python2 is still widely used

Powered by Rabbit 2.1.8

 

Python3を捨てようという人までSome even claimed to give up Python3

Powered by Rabbit 2.1.8

 

最近Python3率が増えたようなRecently Python3 has adapted more widely

Powered by Rabbit 2.1.8

 

ようやくかFinally

Powered by Rabbit 2.1.8

 

誤解しないで欲しいDon't get me wrong

Powered by Rabbit 2.1.8

 

Pythonコミュニティを尊敬しているI respect Python community

Powered by Rabbit 2.1.8

 

Pythonコミュニティは賢いPython people are smart

Powered by Rabbit 2.1.8

 

そんな彼らも苦しむEven they suffer

Powered by Rabbit 2.1.8

 

セカンドシステム症候群は恐ろしいSecond system syndrome is scary

Powered by Rabbit 2.1.8

 

Rubyも例外ではないRuby is no exception

Powered by Rabbit 2.1.8

 

Ruby1.8 vs Ruby1.9

Powered by Rabbit 2.1.8

 

パフォーマンスPerformance

Powered by Rabbit 2.1.8

 

多言語化Multilingualization (M17N)

Powered by Rabbit 2.1.8

 

2000年構想開始The idea was born in 2000

Powered by Rabbit 2.1.8

 

2004年プロジェクト開始The project started in 2004

Powered by Rabbit 2.1.8

 

2007年1.9.0リリース1.9.0 was released in 2007

Powered by Rabbit 2.1.8

 

互換性問題Compatibility problems

Powered by Rabbit 2.1.8

 

普及に5年以上Took 5 or more years

Powered by Rabbit 2.1.8

 

PythonよりマシWe've done better than Python3

Powered by Rabbit 2.1.8

 

「あきらめよう」という人はいなかったNo one suggested to give up at least

Powered by Rabbit 2.1.8

 

なにがよかったのかBut how?

Powered by Rabbit 2.1.8

 

どうやってセカンドシステム症候群を克服するか

How can we overcome second system syndrome?

Powered by Rabbit 2.1.8

 

1. 「全部捨てる」ことを避けたwe have never thrown away everything

Powered by Rabbit 2.1.8

 

ひとつずつ置き換えたWe have replaced one at a time

Powered by Rabbit 2.1.8

 

文字列クラスReplaced string class

Powered by Rabbit 2.1.8

 

仮想マシンReplaced Virtual machine

Powered by Rabbit 2.1.8

 

オブジェクト表現Replaced object representation

Powered by Rabbit 2.1.8

 

ガーベージコレクターReplaced garbage collector

Powered by Rabbit 2.1.8

 

できるだけご完成を維持しつつKeep compatibility as much as possible

Powered by Rabbit 2.1.8

 

移行パスを用意しつつPrepare migration path

Powered by Rabbit 2.1.8

 

劇的な変化を試みないNever tried too drastic changes

Powered by Rabbit 2.1.8

 

少しずつ変化するChanged step by step

Powered by Rabbit 2.1.8

 

バージョンの幻想2. versioning illusion

Powered by Rabbit 2.1.8

 

2.0 vs 3.0

Powered by Rabbit 2.1.8

 

5.0 vs 6.0

Powered by Rabbit 2.1.8

 

1.8 vs 1.9

Powered by Rabbit 2.1.8

 

3. 移行のご褒美migration bait

Powered by Rabbit 2.1.8

 

1.9以降の大きなメリットMoving 1.9 had huge benefit

Powered by Rabbit 2.1.8

 

パフォーマンスPerformance

Powered by Rabbit 2.1.8

 

動機付けMotivation

Powered by Rabbit 2.1.8

 

セカンドシステム症候群対策の大原則

Rules of thumb of SSS

Powered by Rabbit 2.1.8

 

「全部捨て」をしないDon't throw away everything

Powered by Rabbit 2.1.8

 

一気にやりすぎないDon't push too hard

Powered by Rabbit 2.1.8

 

やさしくPush softly

Powered by Rabbit 2.1.8

 

着実にPush steady

Powered by Rabbit 2.1.8

 

互換性Compatibility

Powered by Rabbit 2.1.8

 

変化を止めないKeep moving forward

Powered by Rabbit 2.1.8

 

2.0は(ほぼ)完全な互換性を維持2.0 had (almost) perfect compatibility

Powered by Rabbit 2.1.8

 

しかし時が経つにつれBut as time goes by

Powered by Rabbit 2.1.8

 

セカンドシステム症候群はまたやってくる

Second system syndrome comes again

Powered by Rabbit 2.1.8

 

Ruby 3.0

Powered by Rabbit 2.1.8

 

我々は原則を忘れないBut we don't forget the rules

Powered by Rabbit 2.1.8

 「全部捨て」をしないDon't throw away everything

1.

一気にやりすぎないDon't push too hard

2.

やさしくPush softly

3.

着実にPush steady

4.

Powered by Rabbit 2.1.8

 

Ruby3構想中We started working on Ruby3.0

Powered by Rabbit 2.1.8

 

状況が変化するからBecause the situation changes

Powered by Rabbit 2.1.8

 

マルチコアMulti cores

Powered by Rabbit 2.1.8

 

データスケーラビリティData scalability

Powered by Rabbit 2.1.8

 

コードスケーラビリティCode scalability

Powered by Rabbit 2.1.8

 

実験中By experimenting ideas

Powered by Rabbit 2.1.8

 

なにも約束しないWe don't promise anything

Powered by Rabbit 2.1.8

 

セカンドシステム症候群対策の大原則

Rules of thumb of SSS

Powered by Rabbit 2.1.8

 「全部捨て」をしないDon't throw away everything

1.

一気にやりすぎないDon't push too hard

2.

やさしくPush softly

3.

着実にPush steady

4.

Powered by Rabbit 2.1.8

 

Ruby3

Powered by Rabbit 2.1.8

 

人とコンピューターの協同Man-machine collaboration

1.

パフォーマンスPerformance2.

コンカレンシーConcurrency3.

Powered by Rabbit 2.1.8

 

より広い領域へToward broader domain

Powered by Rabbit 2.1.8

 

より高い生産性More productive

Powered by Rabbit 2.1.8

 

かなり高い互換性Yet keeping compatibility

Powered by Rabbit 2.1.8

 

Rubyが未来を作るRuby will create the future

Powered by Rabbit 2.1.8

 

Rubyコミュニティと一緒にAlong with Ruby community

Powered by Rabbit 2.1.8

 

あなたと一緒にWith you

Powered by Rabbit 2.1.8

 

みなさんと一緒にWith all of you

Powered by Rabbit 2.1.8

 

Happy Hacking!

Powered by Rabbit 2.1.8

 

Thank you

top related