Tech Racho エンジニアの「?」を「!」に。
  • 開発

週刊Railsウォッチ(20170922)特集: RubyKaigi 2017セッションを振り返る(1)、Rails 4.2.10.rc1リリースほか

2017/09/25: YouTubeの動画を6件追加しました。

こんにちは、hachi8833です。

台風直撃後は一転して天候も回復し、RubyKaigi 2017@広島が無事終了しました。

主催者およびスタッフの皆さまおよびスポンサーの皆さま、そして参加者の皆さま、本当にお疲れさまでした&ありがとうございました。

今回私が参加したパーティおよびドリンクアップを支えてくださったスポンサーの皆さまは次のとおりでした(開催日時順)。改めてお礼を申し上げます。

  • 前夜祭スポンサーのSpeee
  • 公式パーティスポンサーのAkatsuki
  • 19日のTech MeetupスポンサーのPayPal
  • RubyKaraokeスポンサーのshopify
  • After Partyスポンサーのpixiv

それではウォッチ特別編いってみましょう。なお「Rails: 今週の改修」は本家に更新情報がありませんでした。

RubyKaigi 2017広島: セッションを振り返る: 1日目

膨大なセッションを今週号だけで追うのはかなり大変なので、1日目2日目(LT除く)の中から参加したセッションを駆け足で振り返ってみました。2日目のLTと3日目は来週追おうと思います。なおセッションに付けた番号は私たちでつっついた順を表しています。

早くもYouTubeに動画がアップされ始めているようです。

スライドのリンクは主にmiyohideさんのGistを参照しました。ありがとうございます。動画やスライドのリンクは今後も追加します。

初日#1キーノート: 「ゆるふわRuby生活@n0kada


つっつきボイス: 「この人がpatch monsterことnobuさんですね」「開会早々にコアな話やライブコミットで客を沸かせまくってましたね: キーノートってこう、もうちょっと固い感じなのかなと思ってました」「そんなことはないと思いますよ: keynoteはその会議の主となるようなネタを提供したり、議論を活発にするための情報整理、これから今後はどうなっていくのかみたいな話をするのが普通なので。会議で最も人が集まるのもたいていkeynoteだし、偉い人や力のある人が話すので会議の方向性の中心になる」「なるほど」

「さすが、イイ話が盛りだくさん: RubyをビルドするのにRubyが要る話で#trace_varなんてのがあるのを初めて知った」「グローバル変数を差し替えられる」

「↓この挙動はおおっとという感じですね」「大昔(1.1)からこうなっていたのでバグとして修正するには影響大きすぎるやつ: parser.yは一万行超えてるし」

他にも「matzチーム」の一員としてのnobuさんの話題になったり、一同でBASERUBY/MINIRUBY周りを軽く追いかけてみたりしました。

初日#2: 「 Fiber in the 10th yearko1

RubyのFiberの歴史と今後をko1さん自ら解説してくれました。Kaigiのあちこちで名前が出ていたnormalpersonさんによる「Auto Fiber schedule」も紹介されていました。


つっつきボイス: 「スレッドより細いからFiberという名前で、文字どおり軽量な並列処理ライブラリだそうです。」「Fiberって使ったことないけどどういうときに欲しいのかな」「処理をFiber間で自由に移動できるってことみたいです: Q&Aのメモを見ると、もともとgeneratorとして使うつもりで、誰もFiber使わないんじゃないかと思ってたら思ったより使われてるとko1さんが回答してました」

「基本的にシングルスレッド内で動かせるけど、明示的に処理をスイッチしないといけないのがFiberですね: 大昔のOSでアプリケーション同士が互いに処理を譲り合ってたみたいに」「そういえばMac OS 9以前がそんな感じで原始的にやってた気がします」

初日#3: 「API Development in 2017@onk


つっつきボイス: 「これはよいセッションでした: Web開発者なら知っておくべき内容」「Swagger(現在はOpen API)はスキーマを定義するとモックもAPIも自動で生成してくれるやつで、onkさんはこれを推してた」
「onkさんのこの記事↓も合わせて読むとさらによいと思います」

初日#4: 「C how to supercharge Ruby with Rubex@v0dro

SciRubyにも参加しているRubyライクな言語Rubexの解説です。

RubexはC言語のライブラリをできるだけRubyライクに扱えるようにすることができ、型がある以外はRubyとよく似ています。structにオブジェクトとしてアクセスしたり、例外処理をRubyのrescueで楽に書けたりするそうです。リポジトリのexampleを見るのが早いと思います。

動画追加しました↓(2017/09/25)


つっつきボイス: 「喫煙コーナーで名刺交換したら東工大の修士課程の学生さんでした」

初日#5: 「How Close is Ruby 3x3 For Production Web Apps?@noahgibbs

↑Googleスライドへのリンクになってます。


つっつきボイス: 「ベンチマークをきちんと取ってましたね: AWSのEC2 Dedicated Host使ったり」
「Noah Gibbsさんはこの間TechRachoの翻訳記事で大好評を博したあの人です↓」「(う、RubyKaigi中に何度も見かけていたのにそのこと思い出せなかった...)」

米国から見た日本のRuby事情(翻訳)

参考

ベンチマークの詳しい理解と修正のコツ(翻訳)

初日#6: 「dRuby on Browseryouchan@


つっつきボイス:OpalはRubyをJavaScriptにコンバートするトランスパイラ」「確か以前ウォッチでも触れましたね↓」「それをdRubyでブラウザ上で動くようにした: まだ作り中な印象」

週刊Railsウォッチ(20170227)Rails 4.2.8リリース、SHA-1コリジョンアタック、便利なハッシュ変換ツールほか

「自己言及的なコード(Quine)の話も面白かった: コードの実行結果が自分自身になる」「あ、ちょうどAirbnbで同室の人がこんなのこしらえていたのをその場で見せてもらいました↓: RubyコードをBase64でエンコードしてるそうです」

初日#6: 「Gemification for Ruby 2.5/3.0@hsbt

GamificationはRubyのライブラリをgem化する作業です。標準添付ライブラリ以外のライブラリに対してdefault gembundled gemという区分が作られたのがポイントだと思います。


つっつきボイス: 「こうやってライブラリを整理するのは本当に大変な作業だと思いますね: 頭が下がる」「ご本人も『gemが結構カオスであることがわかってきたのが今年の成果』と言ってました」「Bundlerは今後どうなるのかな?」「3.0でRubygemsとの統合を目指しているそうです」「ライブラリのgem化にはコアコミッターの負荷を軽減する目的もあるみたいですが、その分gemメンテナの負荷が増える一面もあって、まだまだ大変そうです」

初日#7: 「Do Androids Dream of Electronic Dance Music?@juliancheal@ericqweinstein


つっつきボイス: 「機械学習で音楽を自動生成する試みですが、ダンス系だけあってループでした」「ループを変化させるのならそれほどかからずにできそうですね: 交響曲の楽章みたいな高度に構成されたものはまだ機械学習の手に余りそうな気がしますが」


小学校の頃某マイコン雑誌の投稿欄に「中島みゆきの曲をコンピュータに全部ぶちこんで中島みゆきっぽい曲を無限に生成したい」というのを見かけて夢を膨らませたものでした。

初日#8: 「Hanami - New Ruby Web Framework@davydovanton

ヨーロッパ方面で人気上昇中のWebフレームワーク「Hanami」の中の人です。モジュール化を押し進め、「モンキーパッチゼロ」を謳っています。


hanamirb.orgより

動画追加しました↓(2017/09/25)


つっつきボイス: 「Hanami、とりあえずテストが書きやすそうな印象でした」

初日#9: 「Development of Data Science Ecosystem for Ruby@mrkn

昨年から2連続出場のmrknさんによるRubyとデータサイエンス、機械学習に関するスピーチです。


つっつきボイス: 「これも面白かった: PyCallの進捗がなかなかよいらしい」「自分はPyCall推し: ライブラリを再発明するより、試練を経た実績のあるライブラリを使いたいので」

「あとApache Arrowというプロジェクトが紹介されていたのも面白かった: メモリー内のデータ配置を言語間で統一する」「メモリ配置レベルでの統一の試みってあまり聞いたことなかった」「機械学習のビッグデータは構造が単純なことがほとんどなので困難ではないはずだし、統一できたらメリットはとても大きい」

  • 参考: ↓昨年のRubyKaigi 2016@Kyotoでのmrknさんのスピーチ

Apache Arrowは少し前のRailsウォッチでも取り上げたことがありました↓。

週刊Railsウォッチ(20170602)チームが喜ぶ19のgem、Bundler 1.15が高速化&機能追加、Deviseに挑戦する新認証gem「Rodauth」ほか

初日#10: 「I quit my job to write my own language: Goby@st0012

Go言語でスクラッチから書かれたRubyライクな言語Gobyの紹介と、開発中にわかったVMでの未使用変数の処理についてのスピーチです。マイクロサービスを素早く開発できる環境を目指していて、HTTPサーバーやPostgreSQL接続などのライブラリもひととおりあります。


sample.goby-lang.orgより

動画追加しました↓(2017/09/25)


つっつきボイス: 「このGobyは実は私もメンテナになってて、今回もスライドの英語チェックを手伝いました」「すべてGo言語で書かれたコンパクトなコードがとても読みやすくて、私もREPL周りにPRを送ったりしました」「今回のRubyKaigiでは作者のStanさんも同室に泊ることができたので、会期中いろいろ話したりみんなでGobyのコードをつっついたりできたのがよかった」

Gobyについては別途記事にしたいと思います。

初日#11: 「Ruby Committers vs the World


つっつきボイス: 「文字どおりRubyコミッタが一同に会してわいわいがやがやする企画: 「Rubyの型をどうするよ?」とか「好きな言語は?」みたいなアツい話題をじかに聴けるいい機会でした」「新コミッタの紹介も」

RubyKaigi 2017広島: セッションを振り返る: 2日目

2日目#12: キーノート「The Many Faces of Module@matz

Matzのキーノートは2日目初日でした。


つっつきボイス: 「安定のMatzトークでしたね」「モジュールの歴史と由来は私にはすごくわかりやすかった: もともとMixinのための機能だったのが次第にいろんなことに使われるようになってきたとか」

2日目#13: 「Ruby, Opal and WebAssembly@yhara

動画追加しました↓(2017/09/25)


つっつきボイス: 「DXRubyはWindows向けのゲームライブラリ」「NaClって塩化ナトリウム?」「Matzが昔いたからいる会社」
「WebAssemblyってAaron Patterson↓も注目してましたがどうでした?」「どうやらWeb Assemblyは速度よりバイナリサイズの縮小がメインなようす」「OpalのトランスパイルはRubyのコードをかなり単純にJavaScriptに置き換えているらしいので、最適化からは程遠い」「原始的なコンパイラみたいですね」

[インタビュー] Aaron Patterson(後編): Rack 2、HTTP/2、セキュリティ、WebAssembly、後進へのアドバイス(翻訳)

おまけ: Aaron Pattersonとツーショット(2日目にて)

2日目#14: 「The Ruby Module Builder Pattern@shioyama

モジュールとデザインパターンについてのスピーチでした。RailsのActiveRecordやActiveModelにも言及していて役に立ちそうです。


つっつきボイス: 「上の関連記事はスピーチと同等の内容で、Q&Aのときにご本人から直接翻訳許可をいただきました」

2日目#15: 「Improve extension API: C++ as better language for extension@kou

RubyとC++拡張の話題でした。


つっつきボイス: 「お昼のラーメンに付いてた半チャーハンがなかなか出てこなくて、『C++拡張の便利機能6つ』のうち最初の4つを見逃してしまった」「ちなみに見られたのは『5. テンプレートと特殊化』『6. 初期化リスト』」「よく聞く話ですが、やっぱりC++はちょっと油断すると可読性が落ちるそうです」

2日目#16: 「Automated Type Contracts Generation for Rubyvalich@

マーティン先生の正規表現話も見たかったのですが、迷った末こちらにしました。


つっつきボイス: 「RubyMine使いまくりのスピーチでした」「確かJetBrainsがスポンサーだったんじゃないかな: このgem↓のリポジトリもJetBrainsだし」
「型が必要な理由、型推論、テストでの静的アナライズの話でした: テスト時に型に関する情報を集めるという力技」「型推論への道は遠そうです」

追記: マーティン先生のスピーチ動画が土曜日にアップされました

2日目#17: 「Type Checking Ruby Programs with Annotations@soutaro

型関連のセッションが続きます。soutarouさん自身のを含むいくつかの論文も引用されていて、学術的な色が濃く出ていました。

スライドはまだ上がっていないようですが、ご本人のブログエントリでスピーチの概要をおさらいできます。


つっつきボイス: 「型チェックに関するこれまでの試みを検討した結果『Rubyでは型推論を構築できない』となったそうです」「型推論を完璧にやろうとするから苦しくなるので、要件をもっと緩めてはどうかという提案でした」
「gradual typingを行うsteepというgem↓を紹介していて、コメントでのアノテーションで型を付けるようになってます」

# https://github.com/soutaro/steep より
# @import ActiveRecord.Try

class Foo
  # @class Foo<A> extends Object

  # @attribute results: (readonly) Array<A>
  attr_reader :results

  # @type initialize: () -> _
  def initialize()
    @results = []
  end

  # @type plus: (Addable<X, A>, X) -> A
  def plus(x, y)
    (x + y).try do |a|
      results << a
      a
    end
  end
end

2日目18#: 「Ruby Language Server@mtsmfm

Atomなどのテキストエディタのコード補完やシンタックスハイライトにRuby Language Serverを使うという内容です。上のLanguage Serverはつい最近公式サイトに掲載されたそうです。クライアントとして以下のVscode拡張が公開されています。


つっつきボイス: 「このあたりから仕事の都合でセッション追えなくなってきた(´・ω・`)」「むかーしのかな漢字変換エンジンにこんな感じでクライアント/サーバー型のがありましたね」「wnnってあった、そういえば」

Ruby Language Serverはウォッチでもこの間取り上げていました↓。

週刊Railsウォッチ(20170915)Ruby 2.4.2リリースで脆弱性修正、strong_migrations gemでマイグレーションチェック、書籍『Mastering PostgreSQL』ほか

2日目#19: 「Progress of Ruby/Numo: Numerical Computing for Ruby@masa16

Ruby NumoNArrayを長年メンテしている中の人によるデータサイエンス系のセッションです。

動画追加しました↓(2017/09/25)


つっつきボイス: 「PythonのNumPy的なライブラリをRubyで書いているそうです」「自分はやっぱりPyCallがいいかなー」

Rails 4.2.10rc1リリース

リリースノートにもあるように、現在のRails 4系はセキュリティ修正のみ行うモードです。4.2の場合、今のところActionPackとActiveRecordのみの更新です。

ActionPack

ActiveRecord

Ruby

string.split(pattern, 1)selfを返す(継続)

Gobyの項で引用したツイートの「Rubyに送ったPR」はこれですね。Ruby本陣に果敢にチャレンジ。

#13925より
msg = 'abababababa'
msg.split('b', 4).map(&:upcase!) # メッセージは上書きされない
puts msg # abababababa (期待どおり)
msg.split('b', 1).map(&:upcase!) # メッセージは上書きされる
puts msg # ABABABABABA (abababababaにならない)

その他

Websummit.com: 世界中の各種カンファレンスをチェックできる


websummit.com/より

GobyのStanくんから教えてもらいました。

おまけ: Airbnb宿での記念写真

番外


今週は以上です。

バックナンバー(2017年度)

週刊Railsウォッチ(20170915)Ruby 2.4.2リリースで脆弱性修正、strong_migrations gemでマイグレーションチェック、書籍『Mastering PostgreSQL』ほか

今週の主なニュースソース

ソースの表記されていない項目は独自ルート(TwitterやRSSなど)です。

RubyKaigi 2017@広島

Rails公式ニュース


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。