inFablic | Fablic, inc. Developer's Blog.

フリマアプリ フリル (FRIL) を運営する Fablic の公式開発者ブログです。Fablic のデザイナー・エンジニア・ディレクターが情報発信していきます。

RubyKaigi 2017のLTに登壇しました

rubykaigi.org

How to develop CRuby easily with Vimという題で、RubyKaigi 2017のライトニングトークにて発表してきました。

発表とスライド

全くもって、生きた心地もしない発表でした。

有志が録画した、の発表分の動画です。RubyKaigi公式動画が公開され次第、そちらに差し替えます。

スライドはGoogle SlidesとVimのshowtime.vimを使いつつ、どちらかというとGentoo Linux上でのGVimによるデモをメインとしました。

Lightning talkの5分枠に収まらない前提で、最後に各種ツールへのリンクがあります。

また、この発表のときのtwitter #rubykaigi ハッシュタグ発言をtogetterにまとめておきました。 https://togetter.com/li/1153334

内容の補足

  • 最初にプレイしたゲーム2つ
    • rbtnnさんが自作のgame_engine.vimを用いて作ったmario.vim
      • コースはランダムに生成されます。いつまでも楽しめるのでお得!
      • あとよくpuyo.vimも楽しんでいます。
    • vim-game-code-break
      • 編集中バッファを対象に、ブロック崩しを行うもの
      • (発表時は緊張してうまくコマンド名入力できてなかった。しかも例が悪くて編集中バッファの行が見えなかった・・・反省)
  • https://github.com/mrkn/vim-cruby はCRuby開発のための便利設定です。
    • 使用時は、filetype=cではなく専用のfiletype=crubyを設けている点に注意。
    • readme通りcrubyセットするようにしよう
    • syntax keywords設定しているので(例: RUBY_DATA_FUNC, NUM2SSIZET, StringValuePtr) これらをシンタックス補完することが可能
    • なおこれらのキーワードはmrknさんが手動で更新している。将来自動化したい
  • RubyからCRubyの実装へのジャンプ
    • 色々やり方はあるけどきれいにはできない
    • ctagsの特別なやつみたいな感じで正規表現でやるのがよさそうではある
    • スライド中のujihisa/cruby-defs.vimは実際僕がほしいので作ります
  • RubyVM::ISeq を一発で見るquicklearn.vim
    • これはカナダのバンクーバーからアメリカのワシントン州のシアトル方面にいく長距離列車の中で書いた記憶がある
    • 2012年元旦のこの記事で紹介しました http://vim-jp.org/vim-users-jp/2012/01/01/a-happy-new-year.html
    • 当時としてはYARVのISeq出力はむしろおまけで、メインはCから各種アセンブリ系への変換でした
      • 具体的にはgcc32, gcc32 with optimization, gcc64, gcc64 with optimization, llvm ir, llvm ir with optimizationみたいな
    • 次の日であるRubyKaigi 3日目最後の基調講演のvladさんによる発表で、内部表現レベルでの最適化について言及していたけれど、まさにそれまわりの学習のときにquicklearn.vimが有効活用できます。

発表できなかった内容

後半の自己紹介の部分を急いだものの、そのあとの株式会社Fablicの宣伝をする時間がなかったです。

RubyKaigiが広島国際会議場で開催されるということが発表されたのは、確か4ヶ月前である2017-05-04あたりでした。その日のうちに広島の宿をおさえました。 RubyKaigiのチケットが発売されたのは確か関西Ruby会議2017の最中でした。その瞬間にチケットを購入しました。 後出しで会社に相談し、宿・チケット・それと新幹線往復分(片道グリーン席)・タクシーなどを支払ってもらうことになりました。 当然カンファレンス参加は通常通り勤務しているものとして扱われます。

https://fablic.co.jp/recruit/server-engineer おっと手が滑った

裏事情

  • 今回作った内容はすべてRubyKaigi 2017用に構築したものです
  • これまでRuby系のカンファレンスで面白系に特化した内容しか喋ってこなかったので、今回は実用性重視でいこうと、準備してました。
    • 具体的には、「CRubyのCの実装部分に興味があるけど、普段は基本的にRubyばっかり書いていて、Cあんまり馴染めてない」人を対象とし、体系的に実用情報を講義するという内容でした
  • しかしどうしても充分な情報量を5分枠に収めることができませんでした
    • そもそも最初の挨拶、軽い自己紹介、対象聴衆の定義化だけで3分突破
    • このままだとだめだと判断しつつ、よい代替案がなかなか出ず、ずっと苦悩してました。
  • 最終的に、前日夜に、Q&A方式でいくことに決定しました
    • これだと、話がとびとびになっても、聞いている人は話の流れから取り残されることがありません
    • さらに、自然な流れで末尾自己紹介へともっていけます
      • 私は自己紹介は最後にしたい派で、かつ、LTは時間ギリギリアウトで銅鑼に仕事をしてもらってなんぼと思っています。こうなると、話のテンポを自在に調整できる構成が必須です
      • Q&A方式なら当日フレキシブルに対応できると判断
  • 決定が遅かったのと宿のwifiが不安定でスライド作成がかなり直前までかかってしまいました
    • 正直間に合わないと思っていたけどギリギリ間に合ってよかった
    • ちなみに、mario.vimを最初に入れるという決断をして、そうなるようスライドを変更したのは、ちょうど一つ前の発表のバルス砲あたりの話をしているときでした。ギリギリでした… (間に合い力)
  • スライドをgoogle slidesとvimに分けたのは、最悪僕のパソコンが壊れたりプロジェクタに繋がらなくても、pdf exportされたgoogle slidesがあれば別のマシンで発表できるからでした。
    • showtime.vimにスライド出力機能があればこれは解決しています。しかしながら、そのgithub issueはいまだ進捗がなく不便です。

個人的な話

RubyKaigiには過去に2回、RubyConfに1回登壇しました。RubyConfの当日枠LTで雑な話はしましたが、RubyKaigiのガチなLTに登壇するのは実は今回が初めてでした。 緊張しました・・・。

f:id:infablic:20170922120932j:plain photo taken by hsbt

今回のRubyKaigi 2017は素晴らしい発表が多く、うかつにも感極まりまくってしまいました。一日平均20回は感が極まってしまったように思います。発表に限らず、オフ会としても非常に強力で、約十年来の知人と会いまくることができました。新たな出会いも発生しました。

改めまして、RubyKaigi 2017を運営してくださった松田さんたち、スタッフ・スポンサーの皆様、発表者のみなさま、本当にありがとうございました。 今年のRubyKaigi 2017は間違いなく大成功であったと確信しています。もう感謝しかなく、私はもう関係者のいらっしゃるどの方向にも足を向けて眠ることができません。

今後

2ヶ月後の11月にはアメリカのニューオリンズで開催されるRubyConf 2017が待ち構えています。直前にVimConf 2017があるのでちょっと忙しいですが、これは行くほかないでしょう。

VimConf 2017 はこれまた2ヶ月後の11月に開催されるVimの国際カンファレンスです。株式会社FablicはVimConfのスポンサーをしています。また著者ujihisaはVimConfのスタッフの一員です。 RubyKaigi開催中はそこかしらVimConfの話題も耳にしていました (口にもしていました)。VimConfも待ち遠しいですね。