RubyKaigi2015 二日目レポート

一日目とはうってかわって、二日目は晴天!

2日目のスケジュールはこちら。
Schedule - RubyKaigi 2015

今日もノベルティは盛りだくさん

初日と若干ラインナップの変わっているノベルティコーナー。
SとXSのTシャツは品切れ。

GitHubステッカーは補充されて30分足らずでなくなってしまう大人気っぷりだったんですが、弊社エンジニアはちゃっかりゲットしていました。

Linux loves Ruby. Ruby Loves Linux - How to debug your linux box

Kosaki Morihito氏によるlinuxのデバックツールの紹介でした。
Ftrace, Perf tools, System Tapの使い所を説明いただきました。

その中でもFtraceについてさっそく触ってみました。

コンテキストスイッチの切り替えが走るタイミングでログを出力します。

$ sudo mount -t debugfs none /sys/kernel/debug
$ sudo echo 1 > /sys/kernel/debug/events/sched/sched_switch/enable
$ sudo echo 1 > /sys/kernel/debug/tracing/tracing_on
$ cat /sys/kernel/debug/trace

中身は下記のような内容で、切り替え時のログが出力されています。

# tracer: nop
#
#           TASK-PID    CPU#    TIMESTAMP  FUNCTION
#              | |       |          |         |
          <idle>-0     [000] 7184920.739899: sched_switch: prev_comm=swapper prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=mysqld next_pid=1179 next_prio=120
          mysqld-1179  [000] 7184920.741425: sched_switch: prev_comm=mysqld prev_pid=1179 prev_prio=120 prev_state=S ==> next_comm=swapper next_pid=0 next_prio=120

また、traceの量ですが、

$ cat /sys/kernel/debug/trace | wc -l
1023
$ cat /sys/kernel/debug/trace | wc -l
1054
$ cat /sys/kernel/debug/trace | wc -l
1083

と増え続けましたが、Kosakiさんのおっしゃるとおり、ある一定以上は記録されないようになっていました。(とはいえずっと出力されるので閉じ忘れにご注意を!)

$ cat /sys/kernel/debug/trace | wc -l
37424
$ cat /sys/kernel/debug/trace | wc -l
37439
$ cat /sys/kernel/debug/trace | wc -l
37408

キャッチできるイベントも1500以上あり、取りたいイベントはほとんどとれるそうです。

Charming Robots

juliancheal (Julian Cheal)による
Artoo - Ruby framework for robotics, physical computing, and the Internet of Thingsを使った制御まわりの話はデモが多くて楽しめました。

  • ルパン3世のテーマに合わせてLEDが光…らない(音小さすぎた)→会場の手拍子で成功
  • ドローンが最前列に突っ込む、壁に激突
  • DDRのマットでドローンを制御。音楽に合わせて踊るJulianに合わせて踊るドローン

等々、ハプニングも少々ありましたが、Rubyのリアルワールドへの進出を期待させるセッションでした。。

The history of testing framework in Ruby

さあ、次は歴史の授業です。

Kohei SutouによるRubyのテストの歴史の発表でした。
rubyの進化と共にテストも進化してきたことがよくわかるセッションでした。

お昼

土曜の築地で食事処を探してはいけない
師走ですね…

お昼頃から人が増え、つめてつめて状態に

運営の楽しんでる感が伝わってきます。

テトリスみたいにつめていってね!

The worst Ruby codes I've seen in my life

「俺が見てきたRubyのクソコードたちを晒す」

何度見てもひどい

[code lang="ruby"] def check_new check_existing end [/code]

The future of Ruby is in motion!

RubyiOSAndroidのアプリが書ける!

  • WatchOSやtvOSにも対応
  • ライブコーディングによって変わる寿司の挙動を眺める不思議なセッション。
  • 最後は通販番組のようなノリに…

気になったらとりあえずダウンロード!ということらしいです。 http://www.rubymotion.com/jp/download/

Rhebok

High performance Rack Handler
@kazeburo

Unicorn 1.5-2.0倍早いRackの説明でした
ホットデプロイの仕組みやUnicornとのアーキテクチャ、技術的な差分の説明でしたが
参考になったのがLinuxにおけるTCP周りの仕組みでした。

TCP_NODELAY

TCP送信はOS側でNagleアルゴリズムによって小さな送信パケットをまとめ一度にすべてのパケットを送信している
それにしたがってレイテンシに影響がでる。
TCP_NODELAYオプションをつけることによってバッファリングせずに送信するためレイテンシ少なくすることができるが
送信パケットが多くなりすぎるため、独自にRhebokで送信するデータをまとめて送る仕組みが導入されていた

この仕組みってKVSなどのレイテンシが少なくパケットのやりとりが多いがアプリケーションやミドルウェアを作る仕組みとしては基礎的なことなんだと勉強になりました!


以上、二日目レポートでした。
残るは日曜日!