東京Ruby会議11の感想(途中)

Tokyo RubyKaigi 11 #tkrk11

HowTo禁止、楽しくハックする発表中心のカンファレンスというコンセプト最高です。質問時間も長めで大量の質問がなされていました。

スケジュール

スケジュール - Tokyo RubyKaigi 11 #tkrk11

Streem

スピーカー: まつもとさん

インタビュー matz/streem: prototype of stream based programming language

言語作成には言語デザインに関する話題と言語実装に関する話題があるが、言語デザインに関する話題が少ない気がする。(まつもとさんは言語デザインの方が好き)

  • デザイン
    • 汎用言語を目指さない
    • 可能であればRubyと変える(Mustな部分とNot Mustな部分がある)
    • 20年の経験の反映
    • 関数型(的)プログラミング
    • イミュータブルデー
    • コンカレンシー
    • ストリーミングプログラミング(ループがない, if文はある)

実例

stdin | stdout
["Hello World"] | stdout
# Simple echo server
tcp_server(8007) | each { |sock| sock | sock }

Streemを使って欲しい、というのもあるけどプログラミング言語を一からデザインすることの楽しさを伝えたかった。

プログラミング言語をデザインするのは楽しいよ。

mruby/c

九州工業大学 田中 和明さん

mrubyc/mrubyc インタビュー

mrubyよりももっと小さな環境で動かしたい。 OS不要、ドライバなしで動きます。

mrubyバイナリ。CPUに依存しない互換性あり。最初のRITEの4文字を見て、エンディアンやアライメントを理解しているらしい。

  • GC
    • No GC
    • プログラムが終了するたびにメモリ初期化する。
  • Concurrency
    • 複数のプログラムをVMが1命令ずつ交互に動かす
  • Boot
    • 通常のRuby
      • VMの起動
      • クラスの作成
      • 全てのメソッドをクラスに登録
    • mruby/c はこれらのメソッド登録を実行まで遅らせている

Rubyに型があると便利か

spice life 栗原 勇樹 さん

インタビュー

型システム入門 - プログラム言語と型の理論 という本がよい。(でも難しい。)

type_struct

ksss/type_structを作った。Keyword Arguemts が使える struct。

Point = TypeStruct.new{
  x: Integer,
  y: Integer,
}

これ単体だと以外と使えなかった。

TypeStructでJSONの型チェック

Ruby版の機能をTypeStructに機能追加しては。JSONのValidateをTypeStructでかける。安心感がある。

ArrayやHashはArrayOfみたいな便利クラスを作った。

class ArrayOf
  def initialize(type)
    @type = type
  end

  def ===
    self.all? { |e| e === @type }
  end
end

refinementsを使ったUnionの実装格好やInterfaceの実装もすごい。

Ruby3の型システム

Ruby3の型について

  • 静的チェック -> methodが呼べるかの事前check
  • No Annotation
  • Cでは頑張ってAnnotation書く

今後、静的解析に挑戦してみたい。型システム入門よりも簡単な本があったら教えてほしい。

matz : 型は書きたくないでござる(内部に型があるのはよい)

東京Ruby会議11でプログラミングの難しさと楽しさを再発見した

1日がっつりとテックトークが続いてかなりの疲労感。でもそれ以上の充実感でよかった。

相変わらず須藤さんにはお世話になりっぱなしでOSS Gateのブースの端っこにRubyPicoを置かせてもらったりした。その場でダウンロードしてくれる人もいて嬉しかった(キーボードからRun対応もしなければ)。ずっとお話してみたかったwatsonさんとも話すことができた。他の言語のインタプリタ積んだアプリってiOSでリリース出来るの?みたいな話をした(ネットワーク上のスクリプトを直接実行しなければよいと言う認識)。裸じゃない生mattnさんを遠目に見ることができてよかった。(お話できなかったのが残念。)

発表者の人達はみな自分がやりたいことを自分のスタイルで楽しくやっているから生き生きとしているなー、と感じた。聞いている方もそれが伝わって楽しくなってくる。そして結果として大勢の人に役立つものが作れているのはすごいと思う。卵と鶏の議論になってしまうけどどちらを先に考えているのだろう?

終わってみて本当にすごいなーという気持ちと一緒に、同世代や、少し上、下の人達が(こんな大きな会が開催されていることも含めて)すごいことやっててくやしいな、という気持ちも少しあったことに気がついた。もちろん努力の量が全然違うからなのだけど、もっと自分が超楽しいことなのか、それともRubyコミュニティの人達に役立ちたいのか割合はよく分からないけど、色々負けないように頑張ろうと思えた。いやー来てよかった。

昔「ペナントレース 山田太一の奇跡」って漫画がジャンプでやってて、主人公は野球の才能全然ない(そして兄弟は天才という設定)のだけどすごく努力をしてプロ野球選手になるという話。その中のセリフに「プロってのは上手い下手だけじゃなくてどれだけ自分が野球を好きかってのも1つの才能なんだ。だとすると太一(主役ね)はプロ中のプロなんじゃないか」みたいな感じのセリフ(うろ覚え)があるんだけど、子供ながらに「流石にこれは漫画だよなー」って思ってたのね。でも改めて大人になってみるとすごい人ってのはみんなそれがどれ位好きなのかで勝負しているようなところがあってやっぱり世の中は面白いです。ちょっと話が散らかったけどまあそんな感じです。

エモい話禁止のカンファレンスで恐ろしくエモい感想になってしまったのは電車の中で飲んだビールのせいでしょう。いい機会なので自分が作っているものの中から、自分が本当にやりたいこと、たくさんの人もしくは特定の誰かにとって役に立つ(自分でもよい)ことはあるのか、振り返ってみようと思います。

最後になりますが

技術的好奇心を改めて呼び起こし、
プログラミングの難しさ、
そして楽しさを再発見する場を目指します。

は、とてもよいスローガンでいいなぁと思いました(再発見できた気がします)。来年も楽しみにしています。