$30 off During Our Annual Pro Sale. View Details »

Ruby after 25 years

Ruby after 25 years

Ruby25周年記念イベント

Yukihiro Matsumoto

February 24, 2018
Tweet

More Decks by Yukihiro Matsumoto

Other Decks in Programming

Transcript

  1. Powered by Rabbit 2.2.0
    Ruby after 25 years
    Rubyアソシエーション 理事長
    Heroku
    @yukihiro_matz
    Yukihiro "Matz" Matsumoto
    まつもとゆきひろ

    View Slide

  2. Powered by Rabbit 2.2.0
     
    Ruby誕生25周年

    View Slide

  3. Powered by Rabbit 2.2.0
     
    「言語の誕生」とは?

    View Slide

  4. Powered by Rabbit 2.2.0
     
    プログラミング言語の誕生

    View Slide

  5. Powered by Rabbit 2.2.0
     
    ソフトウェアの誕生

    View Slide

  6. Powered by Rabbit 2.2.0
     
    公開日(Wikipedia)

    View Slide

  7. Powered by Rabbit 2.2.0
     
    Ruby 0.95公開

    View Slide

  8. Powered by Rabbit 2.2.0
     
    1995-12-21

    View Slide

  9. Powered by Rabbit 2.2.0
     
    しかし、それは「誕生」か?

    View Slide

  10. Powered by Rabbit 2.2.0
     
    ソフトウェアの誕生

    View Slide

  11. Powered by Rabbit 2.2.0
     
    物理的実体がない

    View Slide

  12. Powered by Rabbit 2.2.0
     
    概念上の存在

    View Slide

  13. Powered by Rabbit 2.2.0
     
    RubyはいつからRubyか

    View Slide

  14. Powered by Rabbit 2.2.0
     
    哲学的

    View Slide

  15. Powered by Rabbit 2.2.0
     
    Rubyという概念が誕生した日

    View Slide

  16. Powered by Rabbit 2.2.0
     
    Rubyという概念?

    View Slide

  17. Powered by Rabbit 2.2.0
     
    Rubyという名前

    View Slide

  18. Powered by Rabbit 2.2.0
     
    「名前重要」

    View Slide

  19. Powered by Rabbit 2.2.0
     
    名前によって存在が認識される

    View Slide

  20. Powered by Rabbit 2.2.0
     
    名前は概念と直結

    View Slide

  21. Powered by Rabbit 2.2.0
     
    Rubyと名付けた日

    View Slide

  22. Powered by Rabbit 2.2.0
     
    Rubyの誕生日

    View Slide

  23. Powered by Rabbit 2.2.0
     
    1993-02-24

    View Slide

  24. Powered by Rabbit 2.2.0
     
    Perlに倣って宝石の名前

    View Slide

  25. Powered by Rabbit 2.2.0
     
    Ruby or Coral

    View Slide

  26. Powered by Rabbit 2.2.0
     
    Rubyのほうがキレイ

    View Slide

  27. Powered by Rabbit 2.2.0
     
    Rubyのほうが短い

    View Slide

  28. Powered by Rabbit 2.2.0
     
    Rubyのほうが高級

    View Slide

  29. Powered by Rabbit 2.2.0
     
    その後の偶然

    View Slide

  30. Powered by Rabbit 2.2.0
     
    誕生石

    View Slide

  31. Powered by Rabbit 2.2.0
     
    6月:Pearl、7月:Ruby

    View Slide

  32. Powered by Rabbit 2.2.0
     
    フォントサイズ

    View Slide

  33. Powered by Rabbit 2.2.0
     
    5pt:Pearl、5.5pt:Ruby

    View Slide

  34. Powered by Rabbit 2.2.0
     
    「Perlの次」としてふさわしい名前

    View Slide

  35. Powered by Rabbit 2.2.0
     
    「Perlの次」

    View Slide

  36. Powered by Rabbit 2.2.0
     
    当初の目標

    View Slide

  37. Powered by Rabbit 2.2.0
     
    Perlと同じくらい使える

    View Slide

  38. Powered by Rabbit 2.2.0
     
    Perlのできることはできる

    View Slide

  39. Powered by Rabbit 2.2.0
     
    正直やりすぎた

    View Slide

  40. Powered by Rabbit 2.2.0
     
    現状Rubyは「Perlの次」ではない

    View Slide

  41. Powered by Rabbit 2.2.0
     
    「Pythonの隣」

    View Slide

  42. Powered by Rabbit 2.2.0
     
    想像力の限界

    View Slide

  43. Powered by Rabbit 2.2.0
     
    未来の予測は困難

    View Slide

  44. Powered by Rabbit 2.2.0
     
    「Ruby After 25 Years」

    View Slide

  45. Powered by Rabbit 2.2.0
     
    Rubyの25年

    View Slide

  46. Powered by Rabbit 2.2.0
     
    Rubyの25年後

    View Slide

  47. Powered by Rabbit 2.2.0
     
    未来の予測は困難

    View Slide

  48. Powered by Rabbit 2.2.0
     
    誰にとっても困難

    View Slide

  49. Powered by Rabbit 2.2.0
     
    誰が予想しても外れる

    View Slide

  50. Powered by Rabbit 2.2.0
     
    当たるも八卦
    当たらぬも八卦

    View Slide

  51. Powered by Rabbit 2.2.0
     
    無責任でも許される

    View Slide

  52. Powered by Rabbit 2.2.0
     
    25年後のRuby

    View Slide

  53. Powered by Rabbit 2.2.0
     
    過去25年の変化

    View Slide

  54. Powered by Rabbit 2.2.0
     
    驚くほど小さい

    View Slide

  55. Powered by Rabbit 2.2.0
     
    OSはUNIX系に収斂

    View Slide

  56. Powered by Rabbit 2.2.0
     
    MacOSはUNIX

    View Slide

  57. Powered by Rabbit 2.2.0
     
    Windowsすら(WSL)

    View Slide

  58. Powered by Rabbit 2.2.0
     
    CPUはx86系

    View Slide

  59. Powered by Rabbit 2.2.0
     
    ちょっとARM

    View Slide

  60. Powered by Rabbit 2.2.0
     
    減少する多様性

    View Slide

  61. Powered by Rabbit 2.2.0
     
    Rubyの初期の開発環境

    View Slide

  62. Powered by Rabbit 2.2.0
     
    OS:NEWS-OS(BSD)→SunOS

    View Slide

  63. Powered by Rabbit 2.2.0
     
    CPU:M68030→SPARC→386

    View Slide

  64. Powered by Rabbit 2.2.0
     
    劇的には違わない

    View Slide

  65. Powered by Rabbit 2.2.0
     
    この安定性に救われた

    View Slide

  66. Powered by Rabbit 2.2.0
     
    変化したところ

    View Slide

  67. Powered by Rabbit 2.2.0
     
    性能
    容量
    価格
    台数

    View Slide

  68. Powered by Rabbit 2.2.0
     
    Web
    モバイル
    クラウド
    マルチコア

    View Slide

  69. Powered by Rabbit 2.2.0
     
    データサイエンス
    AI
    IoT

    View Slide

  70. Powered by Rabbit 2.2.0
     
    性能・容量

    View Slide

  71. Powered by Rabbit 2.2.0
     
    プログラマー的にはより楽に

    View Slide

  72. Powered by Rabbit 2.2.0
     
    価格・台数

    View Slide

  73. Powered by Rabbit 2.2.0
     
    Web

    View Slide

  74. Powered by Rabbit 2.2.0
     
    システムアーキテクチャ

    View Slide

  75. Powered by Rabbit 2.2.0
     
    サーバークライアント

    View Slide

  76. Powered by Rabbit 2.2.0
     
    スケールしやすい

    View Slide

  77. Powered by Rabbit 2.2.0
     
    水平・垂直

    View Slide

  78. Powered by Rabbit 2.2.0
     
    モバイル

    View Slide

  79. Powered by Rabbit 2.2.0
     
    Beyond Serverside

    View Slide

  80. Powered by Rabbit 2.2.0
     
    モバイルアプリ

    View Slide

  81. Powered by Rabbit 2.2.0
     
    SPA

    View Slide

  82. Powered by Rabbit 2.2.0
     
    JavaScript

    View Slide

  83. Powered by Rabbit 2.2.0
     
    Java・Swift

    View Slide

  84. Powered by Rabbit 2.2.0
     
    クラウド

    View Slide

  85. Powered by Rabbit 2.2.0
     
    サーバーサイドアーキテクチャ

    View Slide

  86. Powered by Rabbit 2.2.0
     
    マルチコア

    View Slide

  87. Powered by Rabbit 2.2.0
     
    分散・並列実行環境

    View Slide

  88. Powered by Rabbit 2.2.0
     
    クラウド

    View Slide

  89. Powered by Rabbit 2.2.0
     
    データサイエンス

    View Slide

  90. Powered by Rabbit 2.2.0
     
    機械学習

    View Slide

  91. Powered by Rabbit 2.2.0
     
    AI

    View Slide

  92. Powered by Rabbit 2.2.0
     
    IoT

    View Slide

  93. Powered by Rabbit 2.2.0
     
    デバイスプログラミング

    View Slide

  94. Powered by Rabbit 2.2.0
     
    変化の傾向

    View Slide

  95. Powered by Rabbit 2.2.0
     
    スケーラブル

    View Slide

  96. Powered by Rabbit 2.2.0
     
    データ規模
    コード規模
    チーム規模

    View Slide

  97. Powered by Rabbit 2.2.0
     
    分散

    View Slide

  98. Powered by Rabbit 2.2.0
     
    マルチコア
    マルチノード
    マルチDC

    View Slide

  99. Powered by Rabbit 2.2.0
     
    これを踏まえて

    View Slide

  100. Powered by Rabbit 2.2.0
     
    未来のRuby

    View Slide

  101. Powered by Rabbit 2.2.0
     
    言語(文法)

    View Slide

  102. Powered by Rabbit 2.2.0
     
    あまり変わらない

    View Slide

  103. Powered by Rabbit 2.2.0
     
    チューリング完全性

    View Slide

  104. Powered by Rabbit 2.2.0
     
    劇的な変化の不必要性

    View Slide

  105. Powered by Rabbit 2.2.0
     
    やれるべきことはできる

    View Slide

  106. Powered by Rabbit 2.2.0
     
    文法的な限界

    View Slide

  107. Powered by Rabbit 2.2.0
     
    全く異なった言語にはならない

    View Slide

  108. Powered by Rabbit 2.2.0
     
    言語の進化の方向

    View Slide

  109. Powered by Rabbit 2.2.0
     
    生産性

    View Slide

  110. Powered by Rabbit 2.2.0
     
    より早く
    より安く
    より速く

    View Slide

  111. Powered by Rabbit 2.2.0
     
    より早く

    View Slide

  112. Powered by Rabbit 2.2.0
     
    短い時間で開発

    View Slide

  113. Powered by Rabbit 2.2.0
     
    簡潔な表現

    View Slide

  114. Powered by Rabbit 2.2.0
     
    高い抽象性

    View Slide

  115. Powered by Rabbit 2.2.0
     
    直接的な表現

    View Slide

  116. Powered by Rabbit 2.2.0
     
    イメージに近い表記

    View Slide

  117. Powered by Rabbit 2.2.0
     
    優れた抽象

    View Slide

  118. Powered by Rabbit 2.2.0
     
    しかし、保守性も必要

    View Slide

  119. Powered by Rabbit 2.2.0
     
    現状のRubyの良さ

    View Slide

  120. Powered by Rabbit 2.2.0
     
    簡潔で

    View Slide

  121. Powered by Rabbit 2.2.0
     
    直接的で

    View Slide

  122. Powered by Rabbit 2.2.0
     
    優れたモデル

    View Slide

  123. Powered by Rabbit 2.2.0
     
    より安く

    View Slide

  124. Powered by Rabbit 2.2.0
     
    より短い開発期間

    View Slide

  125. Powered by Rabbit 2.2.0
     
    小さなチーム

    View Slide

  126. Powered by Rabbit 2.2.0
     
    ピザ2枚の法則

    View Slide

  127. Powered by Rabbit 2.2.0
     
    より高速な開発(サイクル)

    View Slide

  128. Powered by Rabbit 2.2.0
     
    アジャイル(俊敏)

    View Slide

  129. Powered by Rabbit 2.2.0
     
    より高い保守性

    View Slide

  130. Powered by Rabbit 2.2.0
     
    保守性支援

    View Slide

  131. Powered by Rabbit 2.2.0
     
    より速く

    View Slide

  132. Powered by Rabbit 2.2.0
     
    実行効率

    View Slide

  133. Powered by Rabbit 2.2.0
     
    未来の要求

    View Slide

  134. Powered by Rabbit 2.2.0
     
    より早く
    より安く
    より速く

    View Slide

  135. Powered by Rabbit 2.2.0
     
    高度な分散
    高度な抽象
    高度な支援

    View Slide

  136. Powered by Rabbit 2.2.0
     
    近未来のRuby

    View Slide

  137. Powered by Rabbit 2.2.0
     
    Ruby3

    View Slide

  138. Powered by Rabbit 2.2.0
     
    「次のRuby」

    View Slide

  139. Powered by Rabbit 2.2.0
     
    高速
    分散
    解析

    View Slide

  140. Powered by Rabbit 2.2.0
     
    高速(速いRuby)
    分散(スケーラブルRuby)
    解析(賢いRuby)

    View Slide

  141. Powered by Rabbit 2.2.0
     
    MJIT
    Guild
    Steep

    View Slide

  142. Powered by Rabbit 2.2.0
     
    MJIT

    View Slide

  143. Powered by Rabbit 2.2.0
     
    JITコンパイラ

    View Slide

  144. Powered by Rabbit 2.2.0
     
    Javaなどで有効な技法

    View Slide

  145. Powered by Rabbit 2.2.0
     
    Ruby3x3

    View Slide

  146. Powered by Rabbit 2.2.0
     
    Guild

    View Slide

  147. Powered by Rabbit 2.2.0
     
    分散処理の枠組み

    View Slide

  148. Powered by Rabbit 2.2.0
     
    Steep

    View Slide

  149. Powered by Rabbit 2.2.0
     
    静的型推論

    View Slide

  150. Powered by Rabbit 2.2.0
     
    プロファイル型解析

    View Slide

  151. Powered by Rabbit 2.2.0
     
    Ruby3

    View Slide

  152. Powered by Rabbit 2.2.0
     
    2020年目標

    View Slide

  153. Powered by Rabbit 2.2.0
     
    連続的な変化

    View Slide

  154. Powered by Rabbit 2.2.0
     
    巨大なギャップを避ける

    View Slide

  155. Powered by Rabbit 2.2.0
     
    Ruby3はラベル

    View Slide

  156. Powered by Rabbit 2.2.0
     
    「目標を達成しました」

    View Slide

  157. Powered by Rabbit 2.2.0
     
    実装し次第提供

    View Slide

  158. Powered by Rabbit 2.2.0
     
    例:Ruby2.6はMJITつき

    View Slide

  159. Powered by Rabbit 2.2.0
     
    25年後のRuby

    View Slide

  160. Powered by Rabbit 2.2.0
     
    より遠い未来

    View Slide

  161. Powered by Rabbit 2.2.0
     
    開発効率と保守性の向上
    大規模分散環境対応
    非均質計算環境対応

    View Slide

  162. Powered by Rabbit 2.2.0
     
    開発効率と保守性の向上

    View Slide

  163. Powered by Rabbit 2.2.0
     
    IDE(統合開発環境)

    View Slide

  164. Powered by Rabbit 2.2.0
     
    静的解析ツール

    View Slide

  165. Powered by Rabbit 2.2.0
     
    Rubyならではの難しさ

    View Slide

  166. Powered by Rabbit 2.2.0
     
    新たな技術の開発

    View Slide

  167. Powered by Rabbit 2.2.0
     
    スタイルガイド(Rubocop)

    View Slide

  168. Powered by Rabbit 2.2.0
     
    静的型推論(Success based)

    View Slide

  169. Powered by Rabbit 2.2.0
     
    プロファイル型解析

    View Slide

  170. Powered by Rabbit 2.2.0
     
    インタラクティブプログラミング

    View Slide

  171. Powered by Rabbit 2.2.0
     
    「もしかして:〜」

    View Slide

  172. Powered by Rabbit 2.2.0
     
    ペア・プログラミングAI

    View Slide

  173. Powered by Rabbit 2.2.0
     
    テディベア・プログラミング

    View Slide

  174. Powered by Rabbit 2.2.0
     
    賢いテディベア

    View Slide

  175. Powered by Rabbit 2.2.0
     
    テディベアつきコンパイラ

    View Slide

  176. Powered by Rabbit 2.2.0
     
    大規模分散環境対応

    View Slide

  177. Powered by Rabbit 2.2.0
     
    ムーアの法則

    View Slide

  178. Powered by Rabbit 2.2.0
     
    1コアでの性能向上限界

    View Slide

  179. Powered by Rabbit 2.2.0
     
    マルチコア

    View Slide

  180. Powered by Rabbit 2.2.0
     
    マルチコア活用

    View Slide

  181. Powered by Rabbit 2.2.0
     
    マルチノード活用

    View Slide

  182. Powered by Rabbit 2.2.0
     
    マルチDC活用

    View Slide

  183. Powered by Rabbit 2.2.0
     
    コンカレンシー

    View Slide

  184. Powered by Rabbit 2.2.0
     
    分散処理の抽象化

    View Slide

  185. Powered by Rabbit 2.2.0
     
    スケーラブルなアーキテクチャ

    View Slide

  186. Powered by Rabbit 2.2.0
     
    WWW

    View Slide

  187. Powered by Rabbit 2.2.0
     
    Webは万能ではない

    View Slide

  188. Powered by Rabbit 2.2.0
     
    XaaS

    View Slide

  189. Powered by Rabbit 2.2.0
     
    FaaS

    View Slide

  190. Powered by Rabbit 2.2.0
     
    Function as a Service

    View Slide

  191. Powered by Rabbit 2.2.0
     
    Amazon Lambda

    View Slide

  192. Powered by Rabbit 2.2.0
     
    Guildのその先

    View Slide

  193. Powered by Rabbit 2.2.0
     
    非均質計算環境対応

    View Slide

  194. Powered by Rabbit 2.2.0
     
    BigLITTLE

    View Slide

  195. Powered by Rabbit 2.2.0
     
    GPGPU

    View Slide

  196. Powered by Rabbit 2.2.0
     
    FPGA

    View Slide

  197. Powered by Rabbit 2.2.0
     
    コンカレンシー抽象

    View Slide

  198. Powered by Rabbit 2.2.0
     
    大規模分散へ

    View Slide

  199. Powered by Rabbit 2.2.0
     
    簡単なRubyコードで

    View Slide

  200. Powered by Rabbit 2.2.0
     
    ものすごく大きなことが

    View Slide

  201. Powered by Rabbit 2.2.0
     
    シンプルに

    View Slide

  202. Powered by Rabbit 2.2.0
     
    安全に

    View Slide

  203. Powered by Rabbit 2.2.0
     
    楽しく

    View Slide

  204. Powered by Rabbit 2.2.0
     
    人間は25年ではさほど変わらない

    View Slide

  205. Powered by Rabbit 2.2.0
     
    生物学的には

    View Slide

  206. Powered by Rabbit 2.2.0
     
    文化は若干変化する

    View Slide

  207. Powered by Rabbit 2.2.0
     
    環境への適応

    View Slide

  208. Powered by Rabbit 2.2.0
     
    心理的障壁の克服

    View Slide

  209. Powered by Rabbit 2.2.0
     
    「コンピューターは難しい」

    View Slide

  210. Powered by Rabbit 2.2.0
     
    「コンピューターは楽しい」

    View Slide

  211. Powered by Rabbit 2.2.0
     
    「楽しい」が当たり前に

    View Slide

  212. Powered by Rabbit 2.2.0
     
    賢くなるコンピューター

    View Slide

  213. Powered by Rabbit 2.2.0
     
    コンピューターとのコミュニケーション

    View Slide

  214. Powered by Rabbit 2.2.0
     
    思考の明確化

    View Slide

  215. Powered by Rabbit 2.2.0
     
    思考ツールとしてのRuby

    View Slide

  216. Powered by Rabbit 2.2.0
     
    Rubyの価値の本質

    View Slide

  217. Powered by Rabbit 2.2.0
     
    人間のためのRuby

    View Slide

  218. Powered by Rabbit 2.2.0
     
    わたし(たち)のためのRuby

    View Slide

  219. Powered by Rabbit 2.2.0
     
    人間とともに育つRuby

    View Slide

  220. Powered by Rabbit 2.2.0
     

    View Slide

  221. Powered by Rabbit 2.2.0
     
    25歳

    View Slide

  222. Powered by Rabbit 2.2.0
     
    いい歳

    View Slide

  223. Powered by Rabbit 2.2.0
     
    大人だがまだ若い

    View Slide

  224. Powered by Rabbit 2.2.0
     
    未来がある

    View Slide

  225. Powered by Rabbit 2.2.0
     
    未来を作る

    View Slide

  226. Powered by Rabbit 2.2.0
     
    私たちが作る未来

    View Slide

  227. Powered by Rabbit 2.2.0
     
    Rubyで作る未来

    View Slide

  228. Powered by Rabbit 2.2.0
     
    プログラミング言語サバイバル

    View Slide

  229. Powered by Rabbit 2.2.0
     
    Only Paranoid Survives

    View Slide

  230. Powered by Rabbit 2.2.0
     
    生き残るために

    View Slide

  231. Powered by Rabbit 2.2.0
     
    「価値」を提供し続ける

    View Slide

  232. Powered by Rabbit 2.2.0
     
    「たのしいRuby」

    View Slide

  233. Powered by Rabbit 2.2.0
     
    「たのしいプログラミング」

    View Slide

  234. Powered by Rabbit 2.2.0
     
    提供
    Rubyアソシエーション

    View Slide