沖縄Ruby会議02で、Syntax Highlighterについて話した #okrk02

Masataka Pocke Kuwabara
6 min readMar 11, 2018

--

何を話したか

最近IroというRubyのSyntax Highlighter用Gemを作っていて、それについて話した。既存のSyntax Highlighterはだいたい正規表現で書かれていて色々問題があるのだけど、Iroではそれを解決することができる、といった話をした。

IroはIro.vimというVimのSyntax Highlighterが元になっている。Vim以外のエディタでも使用できるように、Iro.vimからRubyのハイライトを行うコードを抜き出したものがIro gemである。現状対応しているのはVimとHTML出力だけだけど。 http://ruby-highlight.herokuapp.com/

Iroの話は去年の秋頃からずっとしていて、VimConf 2017 とRailsDM 2017でも話していた。

VimConfではVimプラグインとしてのIro.vimについて話した。VimのSyntax Highlighter特有の問題などにも触れている。その代わりRubyの話はそこまでしていない。

RailsDMでは飛び込みLTという形だったため、あまり詳しくは話せていない。RubyのコミュニティでもIroの紹介をしたくて話をした。

そして今回はよりRuby寄りの視点からIroについて解説をした。今まではVim寄りの解説だったが、今回はRipperを扱っているところやRubyのトークンをハイライトする上でどのように難しいか、といった話を多くした。その代わり既存のSyntax Highlighterの問題などは軽めに触れるに留めた。

5,6月あたりにより詳しい形でIroの発表をできたらよいなーと思っている。例えば仙台とか。現状はIroはまだ課題が沢山あるけど、その時にはもっと完成度を高めて多くの人に自信を持っておすすめできるようにしたい(現状でもおすすめするが、まだできないことはいくらかあるし、安定もあまりしていない)

他の人の発表

面白い発表は沢山あったが、ここでは特に印象的だった2つの発表について紹介したい。

文系から半年でRuby(Sinatra, Rails)を学んだら人生変わった

一つはまささんの発表で、「文系から半年でRuby(Sinatra Rails)を学んだら人生変わった」である。何が良いと思ったかは、次のツイートにまとめている。

スライド(Page 4)から引用すると、

  1. Webについて理解する
  2. HTML&CSSについて理解する
  3. Rubyの基本について理解する
  4. Sinatraを学んでアプリを作る
  5. Railsチュートリアルをやってアプリを作る

となっている。

この手順は何が良いのか。私は「本当にプログラミングをやったことがない人」がいきなりRailsチュートリアルなどでRailsを学んだとしても、あまり意味がないと思っている。チュートリアルの通りにやれば動くものは作れるだろうが、それでは恐らく「自分がやったことがなんなのか」を理解することはできないだろう。
この手順であればRailsを学ぶ上での前提知識を先に学ぶため、「自分が何をやっているか」がある程度理解できる状態で先に進めるのではないかと思っている。

ただ懸念として「飽きてしまわないのか」ということがあるとは思った。上の手順では1と3ではWebやRubyについて理解することを目標にしているが、それだとWebページのような動きのあるものを作りづらいため、そこで飽きて挫折しかねないだろう。そのため、これらの段階では何らかの補助があると良いのではないかと感じた(スライド中ではRubyの基本について理解する際にProgateをゲーム感覚で楽しんで飽きないようにする、といったこともあって、良さそうだなーと思った)

TracePoint Tips Talk

もう一つは _simanman さんのTracePoint Tips Talkである。

これはめちゃくちゃ面白くて、「Rubyをキメると気持ちいい」を体現しているなと感じた発表だった。

懇親会ではTracePointの有効活用例について話しあったりしていた。TracePointで「メソッドが定義される直前」をフックしたい(直後であればmethod_added的なやつでいける)とか。

TracePointはRubyの中でもかなり自由に何でもできる便利機能なので、知らなかった人はぜひ一度このスライドやリファレンスを読んでみてほしい。

沖縄Ruby会議はとてもよいイベントだった。面白い話を多く聞けたし、沖縄だから会える人々にも沢山出会うことができた。沖縄Ruby会議03が開催される時は、ぜひまた参加したい。

ちなみに、沖縄Ruby会議にCFPを出したのは、このツイートがきっかけである。

沖縄は花粉が全然なくて、花粉症の私にとっては本当に天国である。このツイートがなかったら恐らく沖縄には行っていなかっただろう。
そしてこのツイートをしたさぼさんは先に挙げた「文系から半年でRuby(Sinatra, Rails)を学んだら人生変わった」の師匠であるため、私にとってはさぼさんがこの沖縄Ruby会議のMVPである。

--

--