Speee DEVELOPER BLOG

Speee開発陣による技術情報発信ブログです。 メディア開発・運用、スマートフォンアプリ開発、Webマーケティング、アドテクなどで培った技術ノウハウを発信していきます!

RubyWorld Conference 2017 速報!(1日目)

こんにちは。開発基盤の森岡です。 RubyWorld Conference 2017、1日目のレポートをさせていただきます!

オープニングセレモニーでまつもとゆきひろさん、島根県知事の溝口さん、松江市長の松浦さんの開会の挨拶からRubyWorld Conferenceが始まり、その後にまつもとゆきひろさんの基調講演になりました。

基調講演

f:id:selmertsx:20171102114512j:plain

基調講演では、まつもとゆきひろさんがRubyの開発を始めた1993年から25年目となる2018年の展望についてお話しがされていました。社会人2年目、最初は趣味として作ったRubyという言語が、2年後の1995年には200人の人々に使われました。そして2017年現在では、100万人のエンジニアに使われるようになり、大きなコミュニティを形成しました。

そこからまつもとゆきひろさんのRubyコミュニティ運営に話が変わります。コミュニティの運営と、Rubyの更新は強くつながっています。言語としての素晴らしさを優先し、後方互換性の無いバージョンアップをしてしまうと、付いてこれる人とそうでない人とでコミュニティが分断されてしまいます。しかしながら、コミュニティには人を引きつける何かが必要で、それが無ければ人が離れていってしまいます。故に、Rubyの開発においては、互換性を維持しながら変化をし続けることが必要であり、デザイン上の失敗があっても、それを抱えたまま前に進む選択をすることがあるとのことです。

「言語として後方互換性を保ったまま変化を進めていく」ということで、Rubyは速度の向上生産性の向上の2つの方向性で変化をさせていくというお話しがされました。速度の向上については、Ruby 3×3という指針を掲げて開発を進めています。これはRuby3.0はRuby2.0と比較して3倍の速度を目指すということです。MJITを使ってRubyの速度を上げるというものでして、これは既に特定のベンチマークにおいて2.8倍にまで到達しているとのことです。生産性の向上は、Duck InferenceとInteractive Typingの2つを導入することによって、ソフトウェア開発時における間違いをより早く検知し、より生産性の高いコーディングを実現しようとするものです。

最後に、「RubyWorld Conferenceには、学生、背広を着たエンジニア、ジーンズを履いたエンジニアと多種多様な人たちが来ており、そういった幅広いユーザーからこのような場で話を聞き、Rubyの開発をしていきたい。"Ruby is nice so we are nice"。我々がコミュニティに対してniceであることで、Rubyを使う人達の生産性を上げ、コミュニティをより強固にしていく。」というお話しで基調講演を締めくくりました。niceという言葉を聞いたとき、"Matz is Nice And So We Are Nice" というRubyコミュニティの標語を思い出したりしました。

質疑応答の場では、後方互換性を考慮して、これまでできなかった変更は何かあるのか?という質問に対して、Ruby3.0 ではキーワード引数直しちゃうかもというお話しが出てました。

High Performance GPU computing with Ruby

f:id:selmertsx:20171102114605j:plain

最初のセッションは、Ruby Science Foundationから、Prasun Anand(prasunanand)さんです。 GPUを利用して演算を高速に行うArrayFireのRuby Bindingを開発しているという発表がされていました。ArrayFireは既存の演算ライブラリと比較して非常に高速であり、ベンチマークにおいてはnmatrixの1000倍の速度で演算が出来ているというお話しでした。またCUDAをRubyで使えるようにするrbcudaの開発にも着手しており、こちらはArrayFireのRuby Bindingと比較しても、より早い演算ができるというお話しをされておりました。

発表資料と、ライブラリのGitHubのURLを掲載しておきます。

小型IoTデバイス向けの開発言語「mruby/c」

f:id:selmertsx:20171102114620j:plain

次のセッションは、九州工業大学の田中 和明准教授(kaz0505)と、しまねソフト研究開発センターの東 裕人さんのお二人の発表でした。最初は田中和明さんから、小型IoTデバイス向けの開発言語であるmruby/cを開発しているというお話しでした。

発表では、そもそもなぜmrubyをIoTデバイスで利用するのかというお話しから入りました。近年において、一般的なIoTデバイスの開発はソフトウェアの開発費が非常に高くなってしまっています。その理由は、IoTデバイスの開発はソフトとハードの両方の知識が求められるもので、言語にもCやC++が利用されており、非常に学習コストが高くなってしまっているとのことです。その学習コストが、開発費を高くする原因になっているとのことでした。

そこでmrubyに目をつけたとのことですが、ワンチップマイコンほどの小さいデバイスとなってくるとOSが入っていないこともあり、OSが無ければmrubyを動かすことも出来ません。そこで、mrubyの書き味を残したまま、OSが無くとも動かすことができる言語の開発に着手しました。そこで出来上がったものが mruby/cです。mruby/cはオブジェクト実装や例外処理の簡素化によって、mrubyよりもより省メモリで動作し、メモリ管理や複数管理を自身で行う機能も持っているため、OSが無くとも動くとのことでした。

次の発表はしまねソフト研究開発センターの東 裕人さんから、mruby/cを実際に利用したIoTデバイス開発のお話しでした。ここでは、CやC++が学習コストが高い理由をより詳細にお話しされていました。また、mruby/cを使ったセンシングデバイスは具体的にどのように開発されているのかというお話しもされていました。

RubyとIoTをもっと簡単にする

f:id:selmertsx:20171102114747j:plain

2つ目のセッションは、株式会社ファイブルビーさんより侯 大偉さんから、Rubyを使ったIoTのフレームワークであるTamashiiというOSS開発に関しての発表が行われました。今年のRubyKaigiに参加された方は聞いたことのあるOSSかもしれないですね!

TamashiiはWebSocketを使って、RailsのアプリケーションとIoTデバイスを接続させます。Railsアプリケーションを拡張した tamashii、IoTデバイス用のtamashii-clientなど、複数のライブラリによって構成されています。開発の裏話では、ActionCableと接続させるためにIoTデバイス上でヘッドレスfirefoxを起動していた(現在は修正済み)というお話しは、ヘッドレスブラウザにそんな使い方もあったのか!と、驚かされる内容でした。

参考資料

Rubyによるたのしいユーザー基盤再構築

f:id:selmertsx:20171102114914j:plain

3つめのセッションは、クックパッド株式会社さんより諸橋 恭介さんの発表でした。

サービス開発においては、コードを個人で書く楽しさから、チームでものを作る楽しさ、そして届ける楽しさにつなげることが大切であり、そこを繋げるためにCookpadさんで行っている取り組みについて、詳細にお話しされていました。

チーム全体で知識を経験とするためのプラクティスが沢山あって、非常にためになる発表でした!

参考資料

Rubyのテストカバレッジ測定機能の改良と展望

f:id:selmertsx:20171102114945j:plain

4つめのセッションは、クックパッド株式会社さんより遠藤 侑介さんの発表でした。

発表では、カバレッジとは何か、どのように付き合うものなのかについて、コードも交えながら分かりやすくお話しされていました。カバレッジとは「目標」ではなく、コードが適切かどうか考えるための切っ掛けであり、安易なテストでカバレッジを上げようとすると考えるためのきっかけも見失うというお話しが印象的な発表でした。

Ruby2.5からテストカバレッジ測定に関数・分岐カバレッジも導入できるようになるとのことです!

Rubyで機械学習が出来る未来を目指すRed Data Toolsの現状と今後について

5つめのセッションは、弊社Speeeより畑中悠作(hatappiの発表でした。 こちらについては、下記URLに詳細を記載しておりますので、そちらを御覧ください。

hatappi.hateblo.jp

組込みハードウェアモジュールへのmrubyアプリケーション適用試行

f:id:selmertsx:20171102115109j:plain

RubyWorld Conference最後のセッションは株式会社日立ソリューションズさんから三好秀徳(miyohide)さんの発表でした。 ESP-WROOM-32上でmrubyを使って、温度センサーやGPSを活用するというお話しをされていました。 IoTの分野においてはハードウェア毎に仕様が大きく異なるため、同じ動きでも端末毎にコーディングしなければならないようです。そこで重要となってくるのが、ハードウェアの差分を吸収してくれるフレームワークであるplatoであるとのことで、そのフレームワークのお話しもされていました。

参考資料

Ruby Prize 2017

f:id:selmertsx:20171102115157j:plain

Ruby Prize 2017 においては、kamipoさん、k0kubunさん、piotr solnicaさんの3人の方がノミネートされておりました。 そして、受賞はkamipoさんでした!!

kamipoさんは、Railsの特にActiveRecordにコミットしている方として有名な方なのですが、気になるところを直し続けて、気がついたらRailsで一番コミットしていたとのことです。受賞スピーチにおける「直し続けるということは、あるべき姿を探求し続けるということ」という言葉が印象的でした。

以上で、RubyWorld Conference 2017 の1日目のレポートを終わらせて頂きます!2日目のレポートも森岡から後日公開させて頂きます!