Madogiwa Blog

主に技術系の学習メモに使っていきます。

Ruby:Rubyの25周年イベント「Ruby25」に参加してきた

Ruby25周年イベント

本日は、Rubyの25周年のイベントRuby25に参加してきました! Rubyは日本で生まれ、世界中で使われているプログラミング言語です。

そんな日本産のプログラミングが四半世紀普段自分が勉強で使っている言語が25周年という節目を迎えるのは、すごく喜ばしいことだと思いました!:D

そんな記念すべきイベントRuby25の内容を参加した記念として、超超粗々ですがメモを残しておくφ(..)※参考リンクや記載内容をあとで綺麗にしたい。。。

※その場で取ったメモなので記載不足、誤記等があると思います、すいません。。。

特別講演「Rubyの1/4世紀」

Rubyのいままでに関するお話しφ(..)

Rubyの歴史

↓詳しい内容は下記にてまとめて頂いております。

github.com

1995年

  • Rubyが正式リリース

1997年

  • ネット記事や書籍でルビーが紹介
  • OSP'97入選

参考リンク * https://www.iajapan.org/osp/osp97.html

1999年

参考リンク * https://www.ruby-lang.org

2001年

  • RubyWorldConference開催

参考リンク * http://2017.rubyworld-conf.org/

RailsRubyに与えた影響「Rubyのパッケージ管理」

  • パッケージ管理をRubyGems
  • Bundlerのリリース

おわりに

専門家は私達しかいないんだ まつものゆきひろさんの書籍から引用

プログラミング言語を広めることは難しい。 多くの個人が手探りで進めてきた。

組織としては、個人の活動やインフラを支援してきた。 * フルタイムコミッター * イベントスポンサー

基調講演「Ruby after 25 years」

Rubyのこれからに関するお話しを、まつもとゆきひろさん自身から聞くことが出来ましたφ(..)

Rubyはいつ生まれたか?

  • Rubyという名前が付けられた日が生まれた日
    • 1993/2/24
  • なぜRuby
    • Perlを元にしたから宝石の名前、CoralかRubyが候補にあがり、高級感のあるRuby

参考リンク https://freelance.levtech.jp/guide/detail/113/まつもとゆきひろさんは、同僚の誕生石というのは否定していたように思いますが笑

Rubyの未来予測

  • 多様性が減少傾向にあるところ
  • 逆に変化したところ
    • ハードウェア関連(スペック等)
    • アーキテクチャ(Web,モバイル)
    • キーワード(AI,IOT)
    • データ、コード、チームの規模
  • 未来のRuby

参考リンク https://ja.wikipedia.org/wiki/チューリング完全

Ruby3

  • 高速
    • MJIT※Ruby2.6から
    • Ruby3x3※Rubyを3倍速くしよう!プロジェクト
  • 分散
  • 解析
    • 静的解析
  • Ruby3はラベル、大きなギャップはつくらない
    • 過去の1.8と1.9の分断を考慮

さらなる未来

  • 開発効率と保守性の向上
    • IDE、静的解析、rubocop、success based、プロファイラ型解析、テディベアプログラミング
  • 分散性※あやふや
    • マルチコア、マルチDC、コンカレンシー(分散処理)、Faas(AWS Lamda)
  • 非均質計算環境対応
    • 複数のPCかつ性能が違うものを役割ごと分担して扱う

生物学的には25年は変わらない、でも文化は変わる。

「コンピュータは楽しい」

Rubyの価値の本質 = 人間のためのRuby

私達のRuby、私達が未来をつくる

おまけ

まつもとゆきひろさんのプライベート情報が、ご家族からありました笑 * 探しものが嫌い * 親ばからしい * 人から可愛がられるのがうまい * インドア派、いつもパソコンしてる * 好きなもので生きていくを体現している

参考リンク https://ja.wikipedia.org/wiki/%E4%B8%A6%E8%A1%8C%E6%80%A7

Ruby on Ruby on Rails

RubyとWeb≒Ruby on Railsについてお話しφ(..) とても楽しそうに離されているのが印象的でした!!!

Ruby on Railsとは

RailsRubyをメジャー言語に押し上げた原動力、RubyRailsは切っても切れない関係 * 特徴 * 現場のリアルな問題を解決する * DHHが作ったBaseCampのプロダクトをOSS化(実践的) * 常に変化し続ける * 5000人のコントリビューター * 常に最新のWebフレームワークであり続けている。 * ずっと止まらずに走り続けている = Railsという名前に込められた思い * REST,Bundler等あたらしい価値観の提供 * 楽しい * 10年以上やってるけど楽しい * 気持ちよくWebアプリが作れる * 儲かる * 数多くのプロダクトを作ってきた実績 * Twittercookpad、MoneyForward * スピード感がある * rubyを決めてお金をもらえる時代が来た! is 最高

Rails on Rubyでは?→Rubyの良さを世界に伝えるインフラ

Railsはこの先どうなるのか?

  • 先週ぐらいからRails6の開発に着手
  • 常に最新を意識、Webが廃れるまでは絶対勝者なのでは?
  • あと25年ぐらいはいけるのでは?

RubyとInfrastructure as Code

Rubyとインフラについてのお話しφ(..)

Infrastructure as Code

サーバインフラの構成管理、初期化、クラスタリング等をコードで表現すること。

Rubyはどのように強みを出していく??

Rubyの強みとインフラ

  • DSLに強みがあり、柔軟にインフラ要件を記述出来る
  • RubyDSLを採用したプロダクト※configrationに強み
# こんな感じ・・・?
user do 
  id: hoge
  pass: hoge
end

インフラエンジニアの生産性を上げる → 「Enjoy Programing for Ops

最近のインフラ関連事情

Webサービス運用

  • マイクロサービス
    • 大きなサービスを機能単位に分ける
  • コンテナ化
    • VMよりも柔軟かつ精緻に制御出来るコンテナ技術
  • サーバーレス

mrubyのミドルウェア組み込み

  • mrubyでミドルウェアを書くメリット
    • 素早い検知からのフック処理
    • Configration as code

新しい形のオーケストレーションRubyとmrubyで実現する未来を作りましょう!

mrubyって今こんな風に使われています

軽量ruby=mrubyの現状についてのお話しφ(..)

mrubyの開発背景 RubyでIOTのような組込開発出来ると良いのでは?」

mrubyの特徴

  • 軽い
    • mruby : RAM 200Kで動く
  • 使いやすい
    • C:35行→mruby:9行
    • VM上で動作、大抵のOSに対応、mrbGemsによるライブラリ管理

だけど組込業界には、なかなか使って貰えなかった。。。 →IOTの注目により徐々に広まってきた!!

実際のプロダクト * IIJ:インターネットルーター(SA-W2) * データテクノロジー:IOTゲートウェイ * エフェクト:アルコール検知器 * ゲームやWebサービスでも使われている * ニーアオートマター * mruby-cli

mrubyの情報

  • mrubyのフォーラム

mrubyのこれから

  • ベースをruby2.0系に更新
  • カンファレンスの企画

Data Processing and Ruby in the World

Rubyとデータ解析(Data Proccessing)についてのお話しφ(..)

Data Proccessing?

  1. COLLECT→集める(fluentd,Logstash)
  2. SUMMARIZE→集計する(RedDataTools)
  3. ANALYZE→解析する(Ruby/Numo,SciRuby)
  4. VISUALIZE→可視化する

※Visualizeには、OSSが未成熟でありWebサービス(Rubyを使っているもの=Repro,TREASURE DATA,FlyData)に支配されている→チャンス!

COLLECT

  • fluendd:RubyMicrosoftのサービス、ログを集めるエージェント
  • logstash:JRuby

キーワード:kubernetes

Rubyは、データ収集に強みあり。

データ解析関連の注目プロジェクト

Rubyの未来を語る

Rubyの未来を語る対談のメモですφ(..)

rubyの開発体制について

  • プロダクトオーナーは、一人の優しい独裁者によって行われるのほうが良いと考えている。事故等への対策は、今から発言を蓄積し、AIがデザインするプログラミング言語も目指すのも面白い笑

    ruby3について

  • 別のブランチを立てるのではなく、メインラインで開発を行っていき、一定のタイミングでruby3とする方針を考えている
  • バージョンアップの複雑化によるコミュニティの分断を考慮している。原則として、非互換のものは入れない予定。
  • どうしても変えたい部分が無いと言えば嘘となるが、諦めなければ行けない部分もあると考えている。
  • MJITは高速化に寄与するが、立ち上げのパフォーマンスに懸念があるため、デフォルトでONとするかどうかは、継続検討していく方針。
  • FroozeStringLiteralのデフォルト適用は議論されている。

    Rubyの型について

  • 型はやはり書きたくない。型が無くても動くものに型を書くのはDRYじゃない気がしている。
  • 型推論、動的型付け、typescriptのように型情報を別ファイルに記載する等のIDEのコーディング支援を強化する等は検討していく。

    Ruby3以降の改修について

  • 現状のrequireでは、requireするファイルとローカルファイルで名前が競合すると辛みがあるので、名前空間については、PythonJava等を参考に再検討することも考えている。

    人間を助けるための技術について

  • Rubyの思想としては、人側の価値を寄せるべきと考えている。できるだけ、人側が何をしたいかを記述して動くようなプログラミング言語としていきたい。
  • 人工知能にコードを大量に与えて、アウトプットをコンピュータに任せることも出来ると思うが、写真が出来ても絵がなくならないように、人間がプログラムを書く文化も残っていくと感じている。

    RubyRailsについて

  • Webについては、まだPHPのほうが多いイメージだが、複雑性の高いものやシンプルなものに関してもRailsSinatra等があり競争力は高いと考えている。
  • RailsについてはRubyの保守的な判断と対象的に、挑戦的なアップデートを行っている。それは、それぞれの役割的な判断で行われていると思う。
  • そのような各人が自由な判断でRubyをカスタマイズしていっているのは、良いことだと感じている。そのような実例からRubyの機能に取り込んでいくこともしていける。
  • 自由にやれる反面、やりすぎるとRuby本体には入れられない等困ることもある笑、しかし禁止することは考えていない。
  • そのためRailsRspec等の周辺モジュールを覚える学習コストは仕方ない部分はある。コミュニケーションを取りながら学べる環境が良い。テディベアプログラミング笑

    教育現場について

  • 最近は、Pythonが癖のなさやAI等の隆盛から流行しているが、それはPythonのエンジニアチームがAI等に努力し続けていた結果であり、賞賛すべきと感じている。
  • PythonRubyは言語仕様が似ている部分があるので、言語の移行については、そこまで難しくないというイメージ。そもそもゲーム・チェンジの可能性は、いつでも起こりうるのでロックインするようみオープンなマインドでいた方が良いんじゃないかという感じ。

    今後25年について

  • 目標はとりあえず、SURVIVE。未来予想が難しい中、生き残っていくのはハードなチャレンジだと感じている。どうやって環境変化をキャッチアップしていくかは、重要だと感じている。あとは健康問題笑
  • Rubyはライフワーク、ずっとやっていきたい。サイドプロジェクトとして、色々なことにはチャレンジしていきたい。個人的には、DBといったミドルウェア等のアプリケーションの下位レイヤーに興味がある。最近だDeniss(?)といったDBシステムが気になっている。

おわりに

Ruby25周年という節目に立ち会えてすごく良かった!と思います。 登壇者及び参加者の皆様が、すごく楽しそうに参加していたのがすごく印象的でした!!! これもRubyのコンセプトである「楽しさ」が、プログラミング言語だけでなくコミュニティにも伝わっているのかなと思いました。

自分自身としても楽しさを忘れずにエンジニアとして活躍していきたいと思いました!!