はじめに
2019日12月13日に開催された Ruby Business Users Conference2019に参加してきました。
初めて外部イベントで登壇しましたが、とても楽しかったです。はじめての登壇で得た気付きや学びは、別記事で書きます。
以下、講演のメモです。走り書きの部分があるため内容に不備がある場合はご了承ください。
【基調講演1】Rubyロードマップ(まつもとゆきひろさん)
Ruby2.7
- 19年12月に出るよ
- みんなリア充じゃないから12月にリリースwww
- 後2週間で出るよ!
Ruby3.0
- 2020年12月に出るよ!
- とんでもなくまずいことが起きなければw
- 2.7との互換性はある予定
Ruby2.7新機能
パターンマッチング
- 正規表現じゃない
- 関数型プログラミングによく見る形
- jsonをパースしてマッチング
- これまではJSONの中身を取り出してif文判定していた
- やりたいことがよりストレートに簡潔になる
- jsonをパースしてマッチング
- 使おうとすると警告が出るwww
- まだまだ実験的な機能
- パフォーマンスより仕様
- みんなに使ってもらって改善していきたい
キーワード引数
- 現状はまりよくない
- Ruby1.9ハッシュで代用
- Ruby2.0文法化
- 後付で混乱しがち
- オプション引数よりもキーワード引数が強い
- 落とし穴がいっぱいある
- 引数の数の間違い
- オプション引数・Rest引数との組み合わせ
- Rubyのいいところは期待したとおりに動くこと
- 未来の痛みを減らす
- Ruby2.7
- 動作互換/警告
ruby2_keywords
- Ruby3.0
- 真のキーワード引数
- Ruby2.6&2.7互換コードは書ける
- Ruby2.7&3.0互換Oコードは書ける
- Ruby2.6&3.0互換コードは書けない
- 段階的な移行が必要
引数フォワード
- 必ず括弧が必要
def foo(...)
bar(...)
Begin end なしRange
1..
GC.compact
- メモリー圧縮
- Railsのボトルネックの大半はDBかネットワーク
- DBはRubyから何もできない
- ネットワークも同様
- RubyはインタプリタなのでCPUがボトルネックになると思われがち
- 実はメモリ
- GithubはRuby製
- Githubでもメモリが問題になっていた
- GithubはRuby製
- 実はメモリ
- メモリー消費量圧縮
- 不要になったメモリをOSに返せる
- マニュアル圧縮
GC.compact
- バギーです
- たまに落ちる
- 2.7時点ではバグ0にならないかも
- マニュアルだから問題なし!?
Unicord12.1
- 絵文字増えた
ベターIRB
- 複数行編集できる
- クラス定義
- メソッド定義
- まだバギーwww
- ドキュメント呼び出し
- tab2回でマニュアルが出せる
Fiber高速化
- Samuelさん
JIT高速化
- kokubunさん
- Ruby3*3に近づいた!!
- Railsアプリケーションに適用すると、遅くなる
- Ruby2.7では、Railsに適用すると遅くならない
便利メソッド
tally
など追加
入らないもの
パイプライン演算子
- Elixierのパイプライン演算子が欲しい人が多かった
- 常識に訴えるだけの熱意はなかった
メソッド取り出し
obj.:foo
- 醜い
- クラスからのメソッド取り出しは推奨しない
Ruby3.0について
- 性能改善
- JITの改善
- GC改善
- I/Oボトルネック改善
- マルチコア非対応
- Node.jsも非対応
- CPUボトルネックの改善!
- マルチコア対応
- WebWorkers in JavaScript
- コンカレンシー
静的型解析
- Rubyに型はある!!
- コンパイル時に型がわかると、早めにわかるよね
- 生産性が高まるのは事実
- Go/Rust
- だいたい静的型解析持ってる
- PHP/Python
- 型宣言ができるようになってきた
- 型解析は振り子
- 動的がいい!静的がいい!を行ったり来たり
- もう一回、揺り戻しが来るのでは、と思う
- 動的がいい!静的がいい!を行ったり来たり
- Ruby3.0でやること
- 型シグネチャ
- 型プロファイラ
- 型チェッカ
- Ruby3.0以降
- いろいろ考えてる
- でも言わないwwww
- 今後に乞うご期待!
【一般講演1】研究開発におけるRubyの役割〜契約書レビュー支援システム「LegalForce」の開発事例より〜(LegalForce舟木さん)
契約書の内容をAIで自動チェックする Web サービス「LegalForce」を開発運営されているお話でした。
企業法務に携わる人たちは、現在も契約書を印刷して、紙とペンで赤字を入れているという状況です。実際、私も会社で NDAや基本契約書作成に携わることがありますが、すべて手動でワードファイルの変更履歴を入れて法務担当とやり取りをしていました。 契約書レビューが AI で済ませられるのは非常に画期的だと感じました。
実は、私も勤務先の新事業アイディアコンテストで、契約書の自動レビューサービスを提案して優勝したことがあります。リーガルテックは今後も伸びていく有望な分野だと思っています。
プロトタイプ開発にRubyを活用していらっしゃるようで、人は物を見ないとイメージがわかないというお話は非常に説得力がありました。 高速でプロトタイピングを行う際にはRailsは非常に強力なフレームワークだというお話をされていました。
契約書の一般的な構造を AI に理解させるために、 PEG による解析表現文法を作成して、 契約書の定義を行っているそうです。弁護士の方にも使える Ruby dsl を開発して弁護士が直接コードを書くスタイルを取られていると言うことで非常にユニークな企業だと感じました。
【一般講演2】SIer企業が Ruby で成長する自社 Web サービスをリリースするまでの失敗と成功の道のり(私の発表)
Railsチュートリアルを学んで人生が変わったという話や、SIer企業がRubyを採用して、自社サービスを開発するまでの実体験をお話させていただきました。
私の資料はこちらです。
【一般講演3】開発者探しからローンチまで3ヶ月!Rubyだから実現できた「爆速逆転トライ」(クラッソーネ川口さん)
川口さんはなんと私と同い年でした。同い年なのにベンチャーキャピタルから出資を受け、会社を立ち上げて経営に携わっているお話を伺って、大変刺激を受けました。現在は鹿児島県の屋久島にお住まいだそうです。
ベンチャーキャピタルから出資受けた!けどサービスがない!!しかも開発者にも当てがない!!という状況から、わずか3ヶ月で Rails を使ってサービスをローンチしたお話を伺いました。工事現場の解体見積もりを一括で取得することができるサービス「くらそうね解体」というそうです。
自分たちの会社のプロダクトを持つということは、とても良い事だと感じました。また、エンジニアを自分の会社に迎え入れるにあたって、エンジニアの文化を理解しようとされている姿勢は素晴らしいと感じました。
川口さんがRuby最高!!とおっしゃっていた通り、Rubyへの感謝と愛情があふれる非常に良いプレゼンテーションでした。
【RubyBiz記念講演】RubyとAIで日本中の家の査定に挑んだ結末(コラビット浅海さん)
個人的に今回のカンファレンスで一番好きなお話でした。登壇者の浅海さんは、元々SIerのジャステックでSEをされていたそうです。その後、一人起業を経て、 ITスタートアップのCTOを務めていたところ、なんとヤフーに買収されてしまったそうです。
スタートアップ企業を買収する場合は、契約書で会社を辞めないと言うことを誓うそうです 。(これをロックアップというそうです)さらに、戸建ての家を買ってしまったために、家もロックアップされてしまった結果、横浜から六本木まで通勤2時間することになり、家庭内不和が発生し、仮面夫婦状態になってしまったそうです。(この時点で会場は、笑いと凄まじい熱気に包まれていました)
この自分の問題を解決するために、HowMaを開発されたという話を伺い、ものすごく説得力があるプレゼンテーションでした。自分が経験した問題や課題をシンプルにして、笑いも含みつつ、人に伝えるということは、非常にインパクトがあり、引き込まれるのだなと実感しました。今後の自分のプレゼンテーションの参考にせていただきたいと思います。
日本全国に広がる空き家問題や、失われた500兆円問題という社会的な問題解決にも挑戦するというお話を伺い、Ruby bizで賞を取るのも納得でした。HowMaは金融機関をはじめ、不動産業界でも様々なところでエンジンとして使われているそうです。個人は無料で使えるということなので、私も今後、家を購入する際に参考にさせていただきたいと思います。
【基調講演2】仕事とOSS開発の調和(Speee 大場さん)
大場さんは、奥さんと娘さんと一緒に来ていて、非常にほっこりしました。将来、大場さんのような父親になりたいと思いました。
VPoEとは
- エンジニア組織づくり
- 採用
- 育成
- 評価
- 組織の課題がボトルネックになるのはもったいない
- そこを解決
人とチームと会社とOSS
SpeeeのOSSの取り組み
- フルタイムOSSコミッターがいる
- 社員のOSS活動を支援する
- Rubyのデータサイエンス領域への対応を支援している
- クラウド代支給
- SpeeeLibrary
- 社内図書館
- 1人10000円
- 貸し出し期限はSlackで管理
- 本の感想もSlack
- 最初は社長がPHPで作った
- あとでRailsで作り直されたw
OSSプロダクト
- Marp
- jsx-slack などなど
提供するOSS活動
- OSS Days
- Speee × Asakusa.rb Ruby2.7リリースパーティ
なぜやるのか
- OSSコミュニティへ恩送り
- OSSのエコシステムの中に入る
- 自分たちが開発したソフトウェアもOSSも同じように扱う
- 会社
- 業務にまつわるOSSを作った子が他社に引き抜かれても、OSSは他社でメンテされ続けるw
- OSSにコミットするような技術力が高いエンジニアを採用
- 個人
- 目の前のプロダクトに閉じない技術研鑽
- 必要なときにすぐプロダクトに投入できる!
- 目の前のプロダクトに閉じない技術研鑽
OSSを取り巻く環境の歴史
1980年代:フリーソフトウェア
- ソースは秘匿、バイナリだけ配布がStandard
- 自由ではないソフトウェアへの抵抗
- フリーソフトウェア運動
- GPLライセンス
90年代:LinuxとOSS
- GPLからも解放
- MozillaのOSS化
- Firefox
- 当時のエポックメイキング
- 自由か不自由かよりも公開しているか
00年代:WEBとクラウドの普及
- SNS
- WEBがサービス化
- コードやバイナリ配布しなくてもサービス提供できる
- 配信する手段としてのWEB技術
- コードを公開する意味の質が変化
- 業界のデファクト獲得へ
10年代:デジタルトランスフォーメーション
- リアル産業にもデジタル参入
- WEBサービスを構成するミドルウェアやインフラ技術がOSSとして普及
- 標準化が進んだ世界
- ここだけやっていればよい、というわけでもない
- 全体的な抽象化された技術スタックも意識する
- より複雑度が増している
OSS開発主体
- 現在はコミュニティが作っている
- 標準化=OSS
- OSSは強みを持った企業・個人が垣根を超えて共同開発する
WorkとOSSのバランス
- OSS開発
- OSS開発推奨
- 会社や事業への貢献感が得られない!?
- OSS開発ばかりで仕事していないと言われる!?
- すでにデファクトがあるOSSに似たものを作ってOSSにしてプロジェクトに投入してしまう
- バランスが難しい
- User価値への貢献
- 上手くOSSと付き合う企業が増えると、より自社開発に集中できる!
参加した感想
非常にモチベーションが上がりました!Matzさんのお話を伺って、Rubyをもっともっと勉強したくなりました。一般講演のみなさんのプレゼンも非常にレベルが高く、今後の自分のプレゼンの参考にさせていただきたい内容ばかりでした。
基調講演2のSpeeeの大場さんのお話もとても良かったです。今のプロダクトに縛られない技術を学ぶという姿勢は、自分に足りないところだなと実感しました。
素晴らしいイベントを開催してくださったRubyアソシエーションのみなさま、ありがとうございました!