- 1日目
- 3日目
[JA] Coming soon...
http://rubykaigi.org/2014/presentation/S-YukihiroMatzMatsumoto
内容未定のまま更新忘れか?と思ってたら本当にComming soon...だった。
Ruby 3.0
思いつき発言の約7割はその後現実になっている。
主軸?
- Concurency
- JIT
- Static Typing
Static Typing
- 最近の言語はスクリプトっぽい使われ方をするものでもみんなもっててくやしい。
- でも静的型付けって
- ダックタイピングと相性悪い
- 宣言と実装をそれぞれ書くとかDRYじゃない
Soft Typing
DackTyping的に型推論
- メソッド集合
- 名前
- 引数
ベストエフォード「お行儀の良いコードを書けばいけるのでは」
ただし
- 変数による動的な
require
define_method
method_missing
を利用した場合型推論は不可能になる・・・おそらく何らかの制限がかかる
言語機能のSubset化
従っていれば高速になるけど、外れてもいままでのRubyとして動くしくみ ・・・ fail over
詳しくは日経Linuxに原稿書いたから立ち読みでもしてね!
日経Linux(リナックス) 2014年 10月号 [雑誌]
日経 Linux (リナックス) 2014年 11月号 [雑誌]
[JA] Open the door of embedded systems to IoT! mruby on LEGO Mindstorms EV3 ®
http://rubykaigi.org/2014/presentation/S-TakehikoYOSHIDA
RubyでMindstormsをPCから動かすのではなく、Mindstormsにmrubyを組み込んで動かしてみた話。
スライド等
Open the door of embedded systems to IoT!
Mindstorms EV3
Linuxの上で、MindstormsのVMが動作し、その上でユーザが作成したプログラムが動くという仕組み。
ev3dev
カスタムファームウェアが公式に公開されていて、実はこれで普通にRuby(mrubyではない)が動く。
SDカードブートもできるので、標準ファームウェアを壊さず遊べるのがよい(面白そう
あえてmruby
「mrubyなんてリアルタイム制約があるから使えない」って本当?
Mindstorms RCX (1st gen)
- センサーデバイス、回路上の不足をソフトウェアで補う設計
- ナノ秒単位のリアルタイム制約
- mrubyでは間に合わない
EV3
- センサーデバイスにマイコンを内蔵して中央では指示を送るだけ
- mrubyでもいける
まとめ
mrubyが使えないケース
- Reaching a hardware limit under software control.
- Be willing to work in the background of mechanics and electronics, and struggle with C/C++, assembly language.
mrubyが使えるケース
- High-functional / Multi-functional electric devices
- Newly-developed Cloud servicesCreating new value with mashup technology
最近のデバイスの高機能化もあって、「mruby=使えない」とは言えなさそう。
[JA] Scalable deployments - How we deploy Rails app to 100+ hosts in a minute
http://rubykaigi.org/2014/presentation/S-ShotaFukumori
Capistranoでデプロイしてたら、SSHコネクションが増えすぎて死んだので、ゴシッププロトコルを利用したデプロイツールを自作して、デプロイ時間を超短縮した話。
スライド
mamiya
https://github.com/sorah/mamiya
ライブデモでトラブったもののその場で対応する様子に、頭の回転はやいなぁと思いました。(小並感
[JA] Resource Control Architecture scripting with mruby for a Web Server Separating Computer Resources Virtually at Each HTTP Request
http://rubykaigi.org/2014/presentation/S-MATSUMOTORyosuke
Webサーバのリソースコントロールにmrubyを使えるようにした話。
スライド
https://speakerdeck.com/matsumoto_r/rubykaigi-2014-mod-mruby-ngx-mruby
動機
従来のリソースコントロール
- 閾値を超えると拒否
- 印象が悪い。
- 品質を保つためなのに品質低下
ほしい
- プログラマブルな制御ルール
- リクエスト単位でリソース割り当て
mod_mruby
/ ngx_mruby
をつくった
1. プログラマブルな制御ルール
リクエスト毎に読む場合、サーバの再起動なしに制御ルールを変更することもできる。
2. リクエスト単位でリソース割り当て
mod_mruby
からcgroupsを制御することで、たとえば「cgi10.cgiはCPU10%まで動かす」といった設定を、RubyDSLという記述しやすい方法で可能にした。
リソース制御導入によるオーバーヘッドは数%以内
実際に使われてる
- ホスティング大手数社での採用実績あり
登壇者のまともとさんの就職が決まりました。
RubyKaigi2014でmod_mruby
やngx_mruby
とその応用について発表して、就職も決まりました - 人間とウェブの未来
[JA] ServerEngine: a framework for multiprocess servers in Ruby
http://rubykaigi.org/2014/presentation/S-MasahiroNakagawa
長く走るrubyプログラムのためのライブラリ、ServerEngine gemの話。
https://rubygems.org/gems/serverengine
スライド
サーバを作るときの難しいことの面倒をみてくれる
fluentdなどで得た知見(?だったかな)
- シグナル処理
- 分散スケジューリング
構成
オプションで有効にしたり、サブクラスを作ったりして使う。
- Supervisor
- デフォルトでは無効。他のスーパーバイザを使わずに単体でデーモン化するとき使う。
- Server
- 実行前後フックとかを組み込めるほか、スレッド/プロセスの指定など。
- Worker
- 実処理はここ
監視モデル
Supervisor -- (監視) --> Server -- (監視) --> Worker
のようにそれぞれ死活監視は勝手にやってくれて安心。
便利な機能
Signal Handler
Live restart
unicorn的なアレができる。
sigdump gem
ServerEngineでも使用している便利なgem。
https://rubygems.org/gems/sigdump
[JA] Kids, Ruby, Fun!: Introduction of the Smalruby and the Ruby Programming Shounendan
http://rubykaigi.org/2014/presentation/S-KoujiTakao-NobuyukiHonda
Smalruby
Google Blocklyを利用したビジュアルプログラミングでRubyを使おう、全国にスポ少的な団体、大会を作りたいという、大変野心的なプロジェクト。
- ブロックをつなげてRubyコードを生成できる
- Rubyコードからのブロックへの逆変換もがんばって実装
- 生成したコードをローカル上のバックエンド(Rails)に送って、ビルド&実行
- Windowsのネイティブアプリを生成
- DXRuby
- Arduino対応で、デバイスを制御するプログラムも作れる(!)
- Windows / OSX対応
Windows
3日目につづく。