紙一重の積み重ね

アラフォーのエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

【レポート】Ruby World Conference 2020にはじめて参加してきました

f:id:yokoyantech:20201230221233p:plain

はじめに

2020年12月17日に開催された、Ruby World Conference 2020にはじめて参加しました。今回は、新型コロナウイルスの影響により、オンライン開催でした。 2020年のうちにセミナーレポートを投稿します。

視聴URL

www.youtube.com

開会

実行委員長のMatzさんより。参加者のみなさんは全員、フェイスシールド着用でした。

f:id:yokoyantech:20201230221447p:plain

島根県知事から、産学官連携でRubyビジネス拡大をしているというお話もありました。地方自治体が県をあげてIT誘致しているのはとてもいいですね。

f:id:yokoyantech:20201230221517p:plain

松江市長からもお話がありました。15年で40社を超えるIT企業が松江市に事務所を開設し、エンジニアが移住したりしたそうです。松江市を支えるRuby、素敵です。今後、小学校からRubyを学ぶ取り組みを始めているとのこと。

f:id:yokoyantech:20201230221551p:plain

基調講演 Ruby3 and Beyond(Matzさん)

MatzさんからRuby3.0のお話がありました。

f:id:yokoyantech:20201230221619p:plain

  • Ruby3.0は予定通り12月25日にリリースされる予定
  • 十分な互換性を維持
    • 殆どのプログラムは動くことを期待
  • 高速化
    • Ruby 1.9のときに、1.8とコミュニティが分断してしまった
    • 1.8を使い続けた人は移行に5年くらいかかった
    • Python3でも類似した問題があった
      • Python2と3のギャップを埋めるのに15年くらいかかった
    • Ruby1.8よりかなり高速化したのが1.9
    • いまでもRubyは十分に早い
      • Github
      • Shopify
  • 毎年恒例の「Rubyは死んだ」www
    • 死んだという人もGithubを使ってる
    • 死んだという人もShopityで買い物してる f:id:yokoyantech:20201230221648p:plain
  • Microベンチマークでプログラミング言語を測る事がある
    • その結果、Rubyが死んだと言われたりする
      • OKOK
        • JITを入れた
        • Ruby2.6からMJIT
  • Ruby2.0と比較して3倍早いのがRuby3.0
    • Optcarrotで計測
      • ファミコンのエミュレータwwwwwwww
  • CPUのコンカレンシーについて
    • Ruby開発当時は1つだった
    • 今はマルチコア時代
      • デュアルコア
      • オクタコア
      • 16コア
        • 割と普通になってきた
        • 複数あるコアをうまく使わないといけない
  • Asynf Fiber
    • Ruby3はFiberを使って非同期
    • マルチコアは使わないけど性能改善
  • Ractor
    • Ruby actorの略
    • 分離されたオブジェクト空間
    • 状態を共有しない
      • 制限を持って共有している
  • 静的型付け言語
    • 流行ってる?
      • Go
      • Rust
      • Swift
    • 既存の言語
      • PHP
      • Python
      • TypeScript
        • みんな静的型の機能を導入していく
    • Rubyはどうする?
      • No!!
      • 正確なチェックがしたいのが目的
      • 型宣言は冗長。書きたくない。
      • 早くエラーを見つけたいから!と言って、エラーを見つけるためにコンパイル様に人間が多くの情報を与えるのは負けた気がする
        • Ruby Signature(RBS)
          • 型宣言をする別の言語みたいなもの f:id:yokoyantech:20201230221718p:plain
        • RBS generation
  • 新しい文法
    • パターンマッチング f:id:yokoyantech:20201230221743p:plain
  • Ruby3.0が出ると何が起きるか?
    • まだバグがあるかもしれないが改善する
    • サポートツールの充実が必要
      • Solargraph
      • Sorbet
      • Rubocopなど
    • もっとツールが必要
      • 型チェッカー
      • フォーマッター
      • パフォーマンスチューニング
    • 性能改善
      • JIT
        • マルチレイヤーJITに挑戦
  • One More Thing
    • Static Ruby
      • Static Barrier
        • まだ構想段階
  • Rubyは死なない!Rubyは進歩し続ける!!

Session8 ファーエンドテクノロジー坂本さん

f:id:yokoyantech:20201230221813p:plain

  • VADDYと組み合わせてテストしている
  • SeleniumのコードはRubyで書いている
    • ruby selenium_ruby.rbで実行
    • シナリオを自動実行してくれる f:id:yokoyantech:20201230221904p:plain
  • webdriverの内容は、Rubyで記述している f:id:yokoyantech:20201230221931p:plain
  • 今回実行したシナリオの操作 f:id:yokoyantech:20201230221951p:plain
  • 要素の取得
    • xpathなどで要素の取得もできる f:id:yokoyantech:20201230222032p:plain
  • 待機処理
    • Sleepは、指定した秒数だけ止まる。必要以上にSleepしてしまう
    • Wait.until は、毎回呼び出しが必要。コード量が多くなってしまう
    • implicit_wait は、指定した要素が見つかるまでの待ち時間を設定できる
      • 1度の設定で良い
      • 待ち時間は一律に指定できる f:id:yokoyantech:20201230222105p:plain

Session9 Yasslab安川さん

f:id:yokoyantech:20201230222125p:plain

  • 受託開発を停止して、自社プロダクトに専念するようになった!
  • RailsチュートリアルとRailsガイドを開発
  • 月間アクティブユーザーは1.6万~2.2万
  • 2013年にリリース
    • 当時はWEB版が無料
    • 電子書籍版は有料
      • この方式では続かない、という学びを得た
  • 2015年~
    • 解説セミナー
      • 8時間×5日間×12回
      • 初回~数回目までは好評!
        • だが、難易度や頻度でばらつく、という学びを得た
        • 価値の提供を、より安定的に。
          • 常に自分が喋らないといけないのは辛い
          • ストック型にできないか?
    • 解説動画を収録(38時間)
      • セミナーより動画が便利!
      • ゆっくり再生したり、同じところを再生したり
        • 新しい価値
        • 売れた!が、まだ脱受託には届かず
          • 試して、考えて、また試す
          • 現場に出て、課題を探る
          • 誰が、何を望んでいるのか?
          • お金を払ってでも解決したい価値は?
  • 2つの学びを得た
    • 技術の進化と、学びの階段
      • いきなりクリーンアーキテクチャでSPAでしょ!?
        • この階段をショートカットすると、崖ができる
        • 挫折を生み出してしまうのでは?
          • まずは簡単なものから試してみる f:id:yokoyantech:20201230222200p:plain
    • 技術の進化と、学びの媒体
      • 動画編集・配信
        • 学習支援サービスに提供
        • 高度な技術をともに学びやすく
          • Railsチュートリアル協業プランへ
          • 連携して、学びの質を高めていく
          • Yasslab1社だけでやるのはなかなか難しい
            • 価格を変えずに価値を高める!
  • 前提知識シリーズなどの提供
  • ついに受託を減らして自社増へ!
    • 継続化に向けた、試行錯誤
      • 7年かかった
    • 高度な技術を、学びやすく!

基調講演2 DHHさんへインタビュー

f:id:yokoyantech:20201230222228p:plain

オンラインでMatzさんと対談でした。動いているDHHさんをはじめて見ました。感動です。

f:id:yokoyantech:20201230222302p:plain

  • どうやって(今の)DHHになったんですか?
    • プログラムに触れたのは遅かった
    • 最初はコンピューターは理解できなかった
    • 20歳台になってはじめて、プログラマだと感じるようになった
    • PHPを書いたりしていたが、Rubyに出会うまでプログラマだと感じることはできなかった
    • Rubyに出会って、プログラミング自体が好きだと感じるようになった
      • Rubyは単なるツールだとは思えなかった
      • 単なる言語ではない
      • 自己表現させてくれる言語だと感じた
        • 自分でも気づいていなかった心の目を広げさせてくれた
        • Rubyに恋をした
        • Rubyのおかげで自分のアイデンティティになった
        • 当時、Rubyのツールがなかったので自分で作った
        • 必要なものがなければ自分で作ればいい
        • そうして作ったものがRailsになった
          • 2003年に作ったRailsは最初は1000行くらいのコードだった
          • 現在は、5万~10万ある
          • OSS全体に感謝した
          • OSSによって自分を表現できるようになった
            • 会社経営しているし、ミーティングが多いと思われるが、今もプログラムが一番好き
  • 自分でRailsをどう評価しているか?
    • 最初は傲慢だったかもしれないが、特に気にしてなかった
    • 自分のプロダクトの最初の顧客は自分
    • まずは自分のためにやりたい
    • それから周りの人たちが喜んでもらえたら嬉しい
      • いつもそうだとは限らない
    • 自分の評価基準は直感的で内面的
      • 自分にとってどうなのか
    • 自分が作るものがいつもいいとは限らない
    • 自分で作って自分がいいと思わないことがある
      • 周りが良いと言ってくれても、ハッピーではない
  • Railsで好きじゃないところはあるか?作り直すなら?
    • 簡単に言うとNO
    • Railsは自分が作ることができたベストバージョンだと思う
    • そうでなければ、作り変えていただろう
    • Rubyは方言を作ることを許してくれる
    • コアクラスもいじらせてくれる
      • 内部をいじることで自分の言語だと感じることができる
      • Rubyはプログラマを同等に見てくれる言語だと思う
      • Rubyに足りなければ足せばいい、と思える
      • 気に入らないことがあれば、開けて、変えればいい
      • それがRuby、Railsの素晴らしいところだと思う
        • 他の言語だとバリアが多い
        • Rubyだと敷居が低い
          • 大理石で美しい彫刻を作っているわけではない
          • 粘土で作っている
            • 2003年のアイディアを引きずっているわけではない
            • RailsやRubyはほぼ毎日何かを変えるチャンスが有る
              • そしてそれができる
              • いいアイデアがあれば、すぐフレームワークに入れられる
              • それを18年やってきた
              • ツールとの動的な関係はとてもワクワクする
  • なぜRubyがそんなに好きなのか?
    • 信頼感
    • 親が子供の成長を見守るように
    • プログラミング言語とプログラマの間で信頼関係があるのは珍しい
      • Javaは人を信頼しない言語www
  • Railsにどんな変化があると思うか?
    • いろんなアイデアがある
    • ブレイクスルー的なアイデアを求めるべきではない
      • フロントエンドで統合されるということ
        • SPAを採用している人が多い
        • J2Eの暗い時代を思い出す
          • セットアップもメンテもとても複雑
          • UXmodelがもっとよかったらいいのに・・・
            • Heyを開発している
            • 拡大アプローチ
              • それをRailsに乗せてシンプルに
              • 今はWebpackなどもあるがもっとスムーズにしたい
              • 多くのアプリが高度なJSを必要としている
                • 昔はJSが大嫌いだったww
                • 今のJSはかなり言語として良い言語になっている
                • 好きだとは言わないが、昔ほど嫌いではない
                • 概念を圧縮したい
                • より良い抽出化がフロントエンドでできればよい
                  • Railsにはそれが求められていると思う
                  • 今は統合の仕組みにみんな感心があると思う
                  • JS、フロントエンド、バックエンドそれをまとめていいものができる
                    • それが今のインスピレーション
  • セルフメイドのキーボードに興味があるか?
    • Appleキーボードのクリエイティビティが好き
    • 自分のPCを作った時代があった
    • 今はきれいなものを買えるが、楽しくない
    • プログラマは楽しさと新しい関係性を持っている
      • プロも楽しまないといけない!
  • Matzについて好きなところはどこ?
    • プログラマを信頼する言語を作ってくれたこと
    • これまでそんな言語はなかった
      • それが可能だと思わなかった
      • 知らない人を信じてくれる言語はユニークな絆
      • プログラミング言語は誰のため?
        • プログラマのためのもの
        • プログラマの友達
          • 仕事をしやすくするということが大切
          • プログラムをこういう風に考えたことがなかった
          • Rubyに情熱を持っているのはここ
          • 魅せられた
    • プログラマは楽しくやりたい、信頼してもらいたい
    • Rubyは出てから長いが、他の言語が(Rubyのいいところを)吸い取ったかというとそうではない
      • 吸い取ると大変
      • 議論が沸いてしまう
        • Rubyは人。ある意味人間的。
        • この言語が生まれたからこそ、DHHのキャリアが成立した
        • 好きなことができるのはRubyのおかげ!!!

参加した感想

今回初めて Ruby World Conference に参加しました。例年は島根の松江市で開催されているとのことでしたが、今年は新型コロナウイルスの影響もあり、オンラインで参加することができました。私は現在、3歳の子供を育てているため、例年通りだったら参加はできませんでした。オンライン開催は非常にありがたかったです。職場で仕事しながら、各セッションを聴くことができるのはオンラインカンファレンスならではだな、と感じました。

参加したセッションを通して感じたことは、みんな楽しそうに喋っているなということでした。特に最後の DHHさんに関しては18年間Rubyに恋しているという、とても熱い話を聞くことができました。DHHさんの話を聞きながらMatzさんのとても嬉しそうなお顔が印象的でした。対談は非常に素晴らしい内容でした。この二人がいなかったら、自分はRailsでプロダクトを作ることもなかったのだな、と思うと、お二人には感謝しかありません。

来年もまた本カンファレンスに参加したいと思います!