Ruby Business Users Conference 2017に行ってきた

はじめに

2017年2月23日(木)に渋谷で開催されたRuby Business Users Conference 2017に行ってきました。会場は、数年前渋谷Ruby会議が開催されたシダックスカルチャーワークスでした。

f:id:miyohide:20170223235900j:plain

技術系の話がメインではなく、Rubyを使ってどのように仕事をしているかを紹介するカンファレンス。毎年11月に島根で行われるRubyWorld Conferenceの東京版と言った感じです。

プログラム

プログラムは

  • Matzによる主催者講演『Rubyサバイバルガイド』
  • 安川 要平氏による『子どものためのプログラミング道場「CoderDojo」を支えるRails CMSの活用事例』
  • 森 雅智氏による『TechRacho: 技術情報発信から広げるエンジニア発のコミュニケーション文化作り』

www.slideshare.net

  • 伊藤 浩一氏によるLT『Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから』

www.slideshare.net

  • 堀井氏によるLT『Rubyとスタートアップ』

speakerdeck.com

  • 村田 賢太氏による『Rubyにおける機械学習のための環境整備の取り組み』

speakerdeck.com

  • 川崎 禎紀氏による『Rubyを大規模に使い続けるのは難しい? - Wantendly5年間のアーキテクチャの変遷と改善の歴史 -』
  • 木村 圭宏氏による『プログラミングスクール卒業生による受託開発サービス立ち上げとその課題』
  • Rubyアソシエーションによる『Rubyアソシエーション活動紹介』

という構成でした。

休憩時間が頻繁に取られコーヒーの無料サービスもあったことから終始リラックスして話を聞くことができました。

各プログラムのメモ

以下はそれぞれのプログラムについてメモを書き下ろします。

Matzによる主催者講演『Rubyサバイバルガイド』

  • Rubyをどうやってサバイバルしていくかという話。
  • ソフトウェアなのでハードウェアのような摩耗による故障はないが、老化はある。
    • OSが提供するAPIの変化に対応できないなど、周りの環境の変化についていけないことが老化の一つ。
  • RubyはWebアプリフレームワークRailsの登場を契機に主要な言語の一つとなった。
  • Webアプルは年々巨大化
    • 巨大化とは「コードの量」、「アクセス数」、「データ量」それぞれのことを指す。
    • それらに対応するためにスケーラビリティーが求められている
    • また、フロントエンドが複雑化している
  • 他にもRailsがカバーしないモバイルアプリやデータサイエンス、IoTなど色々とソフトウェアが求められる場所が多くある。
  • スケーラビリティーに対してRubyはコンカレンシー、パフォーマンス(最適化)、開発支援などでサバイバルしていく
    • コンカレンシーはマルチコアを活かせるように。例えば、ギルドの導入とか。
    • パフォーマンス(最適化)はJITを。
    • 開発支援はコンパイル時のチェックや静的チェックなど。
  • フロントエンドの複雑化については、Ruby->JavaScriptOpalやOpalを採用しているVolt Frameworkを紹介
  • データサイエンスはSciRubyプロジェクト
  • IoTはmruby
    • スクエニの新作ゲームにも組み込まれているらしい。
  • 質疑応答にて、「Ruby3の互換性は極力維持する方向で考えている」とのこと。

安川 要平氏による『子どものためのプログラミング道場「CoderDojo」を支えるRails CMSの活用事例』

  • 子どものためのプログラミング道場「CoderDojo」のサイトについてどのような作りになっているかを紹介
  • 当初はGitHubでWebページを作成していったが、デザインの改善や様々な要望に答えるためにAngularやParseなどを使ったサイトに移行。
  • Parseの終了やページのContributorが自分以外に居ないことからRailsscrivitoを使ったCMSを構築。
  • 結果、Contributorは12名まで増え、「CoderDojo」の成長を支援している。

森 雅智氏による『TechRacho: 技術情報発信から広げるエンジニア発のコミュニケーション文化作り』

  • 技術ブログ「TechRacho」をどのような思いで続けているかの紹介。
  • 技術情報発信は2016年8月から事業化して平日毎日更新していること。
  • 事業化する前は、(最近の会社の成長で発生した)次のような問題に対する対処のため。
    • 社内の雰囲気や文化の継承が難しく、コミュニケーションが円滑に行えなくなる
    • 新しく入社する人が増えると一時的に開発の出力が低下してしまう
    • 熟練者のスキルアップが難しい
  • 事業化してからは、
    • 記事の社内レビューを実施し、社内エンジニアの技術力向上が図れている
    • 記事化することで流れてしまうチャットの情報を再利用することができている
    • 続けるのは大変
    • 計測可能な指標が取れていない(はてブの数とかはそんなに変わっていない)

村田 賢太氏による『Rubyにおける機械学習のための環境整備の取り組み』

  • 統計分析や機械学習の各種用語の説明から。
    • 人間が介在する統計分析と人間が介在しない機械学習
  • Rubyではデータサイエンスはできない。
  • その理由は以下の3点。
    • 道具がない
      • 正確には道具はあるが、実用的ではない。
        • 機能が足りない
        • 道具間の連携が困難
        • 品質が信頼できない
    • 使っている人が居ない
      • PythonやRを使っている人が多数
      • PythonやRを使ったデータサイエンスの求人が多い
    • 作ろうとする人が居ない
      • 作ることが目的の人が少ない
      • 使う人と作る人のそれぞれのスキルセットは別
  • この負のスパイラルから脱却するためにRubyのためのデータサイエンス環境作りを行っている
  • RubyからPythonやRの資産を使えるようにする
  • PyCallの紹介とデモ
  • itocに記事(『データサイエンスにおけるRubyの現在の位置づけと可能性』)も書いています。

www.s-itoc.jp

川崎 禎紀氏による『Rubyを大規模に使い続けるのは難しい? - Wantendly5年間のアーキテクチャの変遷と改善の歴史 -』

  • 5年間でIssue/Pull Requestは29K
  • 185K行のプログラム
  • モデル数は402
  • Railsでサービスを始めるのは簡単なイメージを持っていた。一方で使い続けるには難しいというイメージを持っていた。
  • 立ち上げ時はモノリシックなRailsアプリ構成
    • ビジネスが拡大しても同じデータを読み込んでモデルのロジックも共有したいという思いからモノリシックな構成に。
  • サービス拡大期(3年目ぐらいから)はサービスを多産多死
  • サービスを追加する際、インフラを構築する時間が長かった(1週間)ので、モノリシックな構成を続けていた
  • モノリシックな構成が限界を迎え始めた
    • 直接関係ない機能の障害によるダウンタイムの発生
    • Railsの起動時間が長い、メモリ消費量の増大など
  • インフラ初期構築は1回やればおしまいということから、モノリシックな構成からの脱却を行った。
  • 現在はMicroservice化
  • やりたいことがRubyでできないことが多い
    • 画像解析ではC++とか
    • 他にもgolangとかやりたいことに応じて技術の適材適所を行っている

木村 圭宏氏による『プログラミングスクール卒業生による受託開発サービス立ち上げとその課題』

  • プログラミングスクール(Dive into Code)卒業生による受託開発サービスを立ち上げて1年経った。そのときに発生した課題について
  • 発生した課題は
    • 案件がない
      • 請負ではなく完全時給型でやったので、実績がない我々に対しては中々案件が来ない
    • 実務経験者0
      • 見積り基準が欠如
    • 人が居なくなる
      • 中心人物に作業が集中してしまう
    • 状況が不透明
      • 基本はリモート作業
      • コミュニケーションが希薄になりがち
    • 教育コストが高い
      • 開発ツールの使用方法などの教育コストが案外高い
      • コードレビューでの指摘も自然と多くなる
  • 問題点を一言で言うと「開発=プログラミング」ではない。開発には設計やインフラ、各種調整など様々なものが含まれている。
  • 上記の課題を解決するために色々と取り組んでいる。幾つかを紹介。
    • 分報
      • 日報の更に細かいもの。Slack上に自分用のつぶやきチャンネルを作成して、色々と呟いてもらう
      • コミュニケーションのハードルが下がった
    • チーム開発演習
      • プログラミングスクール卒業後にチーム開発演習を取り入れる

感想

村田 賢太氏による『Rubyにおける機械学習のための環境整備の取り組み』が一番興味ひかれる話でした。丁寧に各種用語の説明があった後にデータサイエンスの領域における現在のRubyの立ち位置の解説とその解決について述べ、最後にデモも付いていたので、終始引き込まれました。

ビジネスという分野だとやはりRailsの話が中心になるのですが、そろそろ「Railsで早期にサービスをリリースすることができてHappy」という話からWantendlyさんのように長期間サービスを動かしてきたときの話が中心になるのかなと思っています。

そういうときに問題となることの一つがRuby技術力の維持と向上と考えています。そのため、伊藤 浩一氏によるLT『Railsアプリケーションプロジェクトでの読み書きそろばんの1周目、2周目とそれから』や森 雅智氏による『TechRacho: 技術情報発信から広げるエンジニア発のコミュニケーション文化作り』は勉強になりました。