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に動画がアップされ始めているようです。
#rubykaigi すでに動画がUPされ始めてるやん、、、お疲れ様です。。。。。https://t.co/fRzqeiQDBk
— sw-2300-6037-2057 (@motty1009) 2017年9月21日
スライドのリンクは主にmiyohideさんのGistを参照しました。ありがとうございます。動画やスライドのリンクは今後も追加します。
初日#1キーノート: 「ゆるふわRuby生活」@n0kada
つっつきボイス: 「この人がpatch monsterことnobuさんですね」「開会早々にコアな話やライブコミットで客を沸かせまくってましたね: キーノートってこう、もうちょっと固い感じなのかなと思ってました」「そんなことはないと思いますよ: keynoteはその会議の主となるようなネタを提供したり、議論を活発にするための情報整理、これから今後はどうなっていくのかみたいな話をするのが普通なので。会議で最も人が集まるのもたいていkeynoteだし、偉い人や力のある人が話すので会議の方向性の中心になる」「なるほど」
「さすが、イイ話が盛りだくさん: RubyをビルドするのにRubyが要る話で#trace_var
なんてのがあるのを初めて知った」「グローバル変数を差し替えられる」
「↓この挙動はおおっとという感じですね」「大昔(1.1)からこうなっていたのでバグとして修正するには影響大きすぎるやつ: parser.yは一万行超えてるし」
p = 2
p (-1.3).abs #=> -1.3#rubykaigi— Watson (@watson1978) September 18, 2017
他にも「matzチーム」の一員としてのnobuさんの話題になったり、一同でBASERUBY/MINIRUBY周りを軽く追いかけてみたりしました。
初日#2: 「 Fiber in the 10th year」 ko1
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/rubex
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
- リポジトリ: noahgibbs/rails_ruby_bench
Slides for my RubyKaigi talk on benchmarking Ruby: https://t.co/aRPhctpdx1
— Noah Gibbs (@codefolio) 2017年9月19日
↑Googleスライドへのリンクになってます。
- 参考: noahgibbs/rails_ruby_bench -- スライドで使われたようです。
つっつきボイス: 「ベンチマークをきちんと取ってましたね: AWSのEC2 Dedicated Host使ったり」
「Noah Gibbsさんはこの間TechRachoの翻訳記事で大好評を博したあの人です↓」「(う、RubyKaigi中に何度も見かけていたのにそのこと思い出せなかった...)」
参考
初日#6: 「dRuby on Browser」youchan@
- リポジトリ: youchan/opal-drb
- スライド: https://youchan.github.io/RubyKaigi2017/(注: ご本人のブログに掲載されていたもので、本番と同じではない可能性があります)
つっつきボイス: 「OpalはRubyをJavaScriptにコンバートするトランスパイラ」「確か以前ウォッチでも触れましたね↓」「それをdRubyでブラウザ上で動くようにした: まだ作り中な印象」
週刊Railsウォッチ(20170227)Rails 4.2.8リリース、SHA-1コリジョンアタック、便利なハッシュ変換ツールほか
「自己言及的なコード(Quine)の話も面白かった: コードの実行結果が自分自身になる」「あ、ちょうどAirbnbで同室の人がこんなのこしらえていたのをその場で見せてもらいました↓: RubyコードをBase64でエンコードしてるそうです」
今日の台風で缶詰になってた成果https://t.co/z6hlYiI07L
どの瞬間とってもスクショがコードになってます 明日からるっびー会議! #rubykaigi pic.twitter.com/fZtKD06ufn— ぺんさん! (@tompng) 2017年9月17日
初日#6: 「Gemification for Ruby 2.5/3.0」@hsbt
GamificationはRubyのライブラリをgem化する作業です。標準添付ライブラリ以外のライブラリに対してdefault gemとbundled gemという区分が作られたのがポイントだと思います。
つっつきボイス: 「こうやってライブラリを整理するのは本当に大変な作業だと思いますね: 頭が下がる」「ご本人も『gemが結構カオスであることがわかってきたのが今年の成果』と言ってました」「Bundlerは今後どうなるのかな?」「3.0でRubygemsとの統合を目指しているそうです」「ライブラリのgem化にはコアコミッターの負荷を軽減する目的もあるみたいですが、その分gemメンテナの負荷が増える一面もあって、まだまだ大変そうです」
初日#7: 「Do Androids Dream of Electronic Dance Music?」@juliancheal、@ericqweinstein
- Togetterまとめ: https://togetter.com/li/1022689
つっつきボイス: 「機械学習で音楽を自動生成する試みですが、ダンス系だけあってループでした」「ループを変化させるのならそれほどかからずにできそうですね: 交響曲の楽章みたいな高度に構成されたものはまだ機械学習の手に余りそうな気がしますが」
小学校の頃某マイコン雑誌の投稿欄に「中島みゆきの曲をコンピュータに全部ぶちこんで中島みゆきっぽい曲を無限に生成したい」というのを見かけて夢を膨らませたものでした。
初日#8: 「Hanami - New Ruby Web Framework」@davydovanton
- 参考: Hanami - New Ruby Web Framework(今年夏にシンガポールで開催されたRedDotRubyConfでのスライドです)
ヨーロッパ方面で人気上昇中のWebフレームワーク「Hanami」の中の人です。モジュール化を押し進め、「モンキーパッチゼロ」を謳っています。
動画追加しました↓(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
- リポジトリ: goby-lang/goby
- プレイグラウンド: sample.goby-lang.org(100% Gobyで書かれています)
Go言語でスクラッチから書かれたRubyライクな言語Gobyの紹介と、開発中にわかったVMでの未使用変数の処理についてのスピーチです。マイクロサービスを素早く開発できる環境を目指していて、HTTPサーバーやPostgreSQL接続などのライブラリもひととおりあります。
動画追加しました↓(2017/09/25)
つっつきボイス: 「このGobyは実は私もメンテナになってて、今回もスライドの英語チェックを手伝いました」「すべてGo言語で書かれたコンパクトなコードがとても読みやすくて、私もREPL周りにPRを送ったりしました」「今回のRubyKaigiでは作者のStanさんも同室に泊ることができたので、会期中いろいろ話したりみんなでGobyのコードをつっついたりできたのがよかった」
#YassLabハウス のフレンズ、昨日はgobyにPRを、今日はRubyにpatchを送っていてたーのしー ✉️✨ #RubyKaigi pic.twitter.com/LnONGrLOVx
— Yohei Yasukawa (@yasulab) 2017年9月20日
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
- リポジトリ: yhara/dxopal
動画追加しました↓(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
- 関連ブログ記事: The Ruby Module Builder Pattern
モジュールとデザインパターンについてのスピーチでした。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 Ruby」valich@
マーティン先生の正規表現話も見たかったのですが、迷った末こちらにしました。
つっつきボイス: 「RubyMine使いまくりのスピーチでした」「確かJetBrainsがスポンサーだったんじゃないかな: このgem↓のリポジトリもJetBrainsだし」
「型が必要な理由、型推論、テストでの静的アナライズの話でした: テスト時に型に関する情報を集めるという力技」「型推論への道は遠そうです」
追記: マーティン先生のスピーチ動画が土曜日にアップされました
2日目#17: 「Type Checking Ruby Programs with Annotations」@soutaro
型関連のセッションが続きます。soutarouさん自身のを含むいくつかの論文も引用されていて、学術的な色が濃く出ていました。
スライドはまだ上がっていないようですが、ご本人のブログエントリでスピーチの概要をおさらいできます。
- soutarouブログ: Type Checking Ruby Programs with Anntations
つっつきボイス: 「型チェックに関するこれまでの試みを検討した結果『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
- リポジトリ: soutaro/steep
2日目18#: 「Ruby Language Server」@mtsmfm
- リポジトリ: mtsmfm/language_server-ruby
Atomなどのテキストエディタのコード補完やシンタックスハイライトにRuby Language Serverを使うという内容です。上のLanguage Serverはつい最近公式サイトに掲載されたそうです。クライアントとして以下のVscode拡張が公開されています。
つっつきボイス: 「このあたりから仕事の都合でセッション追えなくなってきた(´・ω・`)」「むかーしのかな漢字変換エンジンにこんな感じでクライアント/サーバー型のがありましたね」「wnnってあった、そういえば」
Ruby Language Serverはウォッチでもこの間取り上げていました↓。
2日目#19: 「Progress of Ruby/Numo: Numerical Computing for Ruby」@masa16
Ruby NumoのNArrayを長年メンテしている中の人によるデータサイエンス系のセッションです。
動画追加しました↓(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: 世界中の各種カンファレンスをチェックできる
GobyのStanくんから教えてもらいました。
おまけ: Airbnb宿での記念写真
隠れ家にRubyistたちが集まってます! #rubykaigi pic.twitter.com/GYSC4ubNbw
— むじん@webエンジニア🦏 (@mu2in) September 17, 2017
番外
3D Face Reconstruction from a Single Image.
Try your own face: https://t.co/rtNBIbctsh
Code: https://t.co/hQhJKnsej1 pic.twitter.com/p7M6PgFZ1j— Reza Zadeh (@Reza_Zadeh) September 17, 2017
セキュリティ関連の論文、自分が思ってもいなかったことが書いてあって楽しめると前から思ってるのだけど。
今度は、マルウェアに感染させたPCと、赤外線を使ってセキュリティカメラ経由で通信することに成功した、という研究結果が。https://t.co/NqXh6dDmY3 pic.twitter.com/Kjmpi3Mxjw
— physico (@physico_physio) September 20, 2017
今週は以上です。
バックナンバー(2017年度)
- 20170908 Rails 5.1.4と5.0.6リリース、コード書換え支援gem「synvert」、遅いテストを分析するTestProfほか
- 20170818 RailsとYarnでTypeScript、Rails新コミッタにkamipoさんも、CSVにSQLクエリをかけられるツールほか
- 20170804 Rails 5.1.3と5.0.5が正式リリース、GitHubでローカライズ基盤サービス、正規表現で迷路を解くほか
- 20170623 gemを見極める7つのコツ、mixinがよくない理由、重いページをrender_asyncで軽減ほか
- 20170616 railsdiff.orgはアップグレードに便利、RubyのDSLとかっこの省略、TerraformをRubyで制御ほか
- 20170609 ついにtherubyracerからmini_racerへ、注意しないとハマるgem、5.1でのVue.jsとTurbolinksの共存ほか
- 20170602 チームが喜ぶ19のgem、Bundler 1.15が高速化&機能追加、Deviseに挑戦する新認証gem「Rodauth」ほか
- 20170512 Rubyの不思議な挙動「シャドウイング」、コードレビュー作法を定めるDanger gemほか
- 20170428 Rails 6.xでの’#form_for’と
#form_tag
廃止決定のその後、deviseの5.1対応はこれから、ほか - 20170421 RailsConfが来週アリゾナで開催、コントローラを宣言的に書けるdecent_exposure gemほか
- 20170414 サーバーを危うくする1行のコード、PostgreSQL 10の新機能ほか
- 20170407 N+1問題解決のトレードオフ、Capybaraのテスト効率を上げる5つのコツほか
- 20170331 PostgreSQLの制約機能を使えるRein gemはビューも使えるほか
- 20170324 Ruby 2.4.1リリース、GAEがついにRubyに対応、このgemがないと生きていけない27選ほか
- 20170317 Railsパフォーマンスチューニング本、DBレコード存在チェックの最速メソッド、RubyのUnicode正規化ほか
- 20170310 クールなDocker監視ツールCtop、RailsがGoogle Summer of Code 2017に正式参加、Unicode 10.0.0ドラフト発表ほか
- 20170303 5.0.2正式リリース、メタプログラミングに懲りた話、bundler 1.12のバグ、すぐ試せるWebアノテーションほか
- 20170227 Rails 4.2.8リリース、SHA-1コリジョンアタック、便利なハッシュ変換ツールほか
- 20170217 Rails 4.2.8.rc2リリース、Ruby 2.4正規表現とActiveSupportのnormalizeほか
- 20170210 JRubyやRubiniusの配列への追加はスレッドセーフではないほか
- 20170203 AnyLogin gemで開発中に楽々再ログイン、イベント数ベース課金の監視サービスRollbarほか
- 20170127 わかりやすいAWSサービス名、Rails DBは便利、TruffleRubyの驚異的速度ほか
- 20170120 Ruby 2.5.0 devリリース、古いMySQLのサポート終了、uniqメソッドが削除ほか
- 20170116 Ruby 2.4の詳細、範囲指定したsumメソッドは速い、rescueの挙動を動的に変更ほか
- 20170110 ReactをRailsに置き換える、Ruby 2.4の新機能ほか
今週の主なニュースソース
ソースの表記されていない項目は独自ルート(TwitterやRSSなど)です。