9
2

More than 5 years have passed since last update.

表参道.rb #34 行ってきた

Last updated at Posted at 2018-05-10

お勉強会レポ。 メモだけど 少し整理して、スライドとかもまとめたので、公開。

ハッシュタグ #omotesandorb
参加者さんも多く、サプライズゲストもいたので盛り上がりました。

テーマ

いつもはデプロイとかテストとか、なんらかの緩めのテーマがあり、
それに沿ったLT会をやって、時間があまれば質疑応答、って流れです。

今回はテーマが「Rubyに関することならなんでもあり」でした

人数

25人くらい。最近盛況ですね。

場所

外苑前徒歩0分。すげー立地の会社でした。
オープンスペースで勉強会やってたんだけど
後ろが壁一面本棚でした! ビジネス系起業系だらけ。
下手な本屋さんより充実している可能性。

Matzがいた

びっくり。

会場提供の会社の顧問をやってるらしく、
今回サプライズゲストで参加されたのだとか。

ぼくが生でMatzのお話聞くのは初めてでした。
エンジニアらしい情熱と、ユーモアさがある親しみやすそうなお方でしたね。
あんまり話できなかったですが。

DSLホストのお話

発表者:Matz
スライド:(公開していらしたら誰か教えて下さい)

DSL=ドメイン特化言語

-外部DSL(ホストと違う言語、SQLとか正規表現)
-内部DSL(ホストの文法を濫用(らんよう)したもの)
JSON(JavaScript Object Notation) Rakefile Gemspec RSpec

アプリケーションを開発することは、DSLの開発をするのとほぼ同意

by 達人プログラマーの人

  • 文法
    • 括弧を省略できるとか
  • 語彙
    • メソッド
  • スコープ
    • describe "test" do ~ end
    • ネストできるのは結構偉大なこと。

なんでできるか?
中でinstance_execする
するとselfが変わる
インスタンス変数@varが変わる

濫(らん)用できる

抽象度を高くできるとうれしい。
Rubyはやりすぎ?

ちょうどいい点を探すのは難しい。
えいやでやってみないと分からない。

ソフトウェア開発において、たのしいは正義

(正義!)

RubyのAST(抽象構文木)入門

発表者:神速さん
スライド:https://qiita.com/sinsoku/items/d112d7eee4283a38f70e

Rubyがコードを解釈する順番みたいな?
Ripperで分解できるよ

実務で役立つASTとしては

Rubocopに新しいルールを拡張するのがオススメ!
(Rubocopが静的解析するときも、このASTを使ってるのか、なるほど、って当たり前か)

誤検知の話。
Rubocopはメソッド名しかみてないので継承関係みてない。

型推論の夢

(Java使いとしては面白いなーと思った。いちいち型書かなくてもいいのが
こういう言語のいいところじゃん!それをわざわざ逆いくのかー。
でもまあ、静的解析が誤検知するのはアレだし、型書いても書かなくてもいい、
って形が実現できるならありかも。一方Java10は逆にvar採用したりしてる。
「ガチガチの型言語」vs「スーパーフリーダム言語」ではなく、
中間のちょうどいい型推論の模索が今アツいのかな?)

仕様かバグかわからんRubyをなおす

発表者:うなすけさん(@yu_suke1994)
スライド:https://github.com/unasuke/omotesandorb-34

CASHを作ってる会社の人。

AST見たい

ruby hoge.rb --dump=parsetree だと見れるけど

ruby test.rb --dump=parsetree は見れない

なんでだろう。いろいろ調べてるとMatzによる贅沢なレビューが始まる(笑)

答え 「仕様」 by Matz

コマンドラインの問題で ruby test.rb --dump=parsetree
で--dump=parsetreeオプションはtest.rbに渡っちゃう。

正解

ruby --dump=parsetree test.rb

E2EのテストをRSpecとCapybaraでやっちゃうプロトタイプ

発表者:@mokuoさん
スライド:https://speakerdeck.com/mokuo/e2e-prototype-capybara

ColdFusion

  • 自動テスト一切なし
  • 毎回手動テスト
  • つらみ(わかる)

・リーダーも課題感あった(うちには課題感ないです)

ページをクラスに見立てる

(Seleniumも練習したいんだけどなー)

GraphQLを使ってみたお話

1ページ複数のリクエスト

1ページ1APIでやればいいのでは?
(きつくね?)

APIエンドポイントが増えてつらい(やっぱり)

そこでGraphQLです

Facebookががんばってるらしい。

フロント側でどういう表示をするかを定義できる。

APIに対してのクエリ言語の1つ
(要はネストでAPI叩けるってこと?)

グラフ理論

一筆書きが可能か?
最短経路とか?
(セールス巡回問題とか?)

Rubyでの書き方

field

edgesとnode

N+1問題が起きやすい?

まだ実用的でない?

(Facebookは1ページに何十とAPIリクなげたりしてそう。認証だけですごそう。
コレの恩恵がでかいのかも。
一方で、Rails使いはマイクロサービス指向なので、そんなにメリットないかも。わかんないけど。)

byebugにプルリク出した話

発表者:@tzm_freedomさん
スライド:https://www.slideshare.net/tzm_freedom/cbyebugpr

デバッグどうやってる?
byebug派か RubyMine派か?

Ruby2.5で Rails5.2から入ってるbootsnapを使うと
RubyVM::なんとかでTracePointのコールバックが効いてない説

名前空間区切ってるんだからバッティングしないはず。

byebug全部読んでみた(すごい)

後半ついていけずorz
結論から言うと、debaseが外部呼び出し可能extern宣言?してたから
byebugとかぶってしまったのが悪かった?

解決策はバッティングした名前を変更プルリクした。無事マージされた。

Matz「debaseの書き方の方がちょっとお行儀悪いかも」

オチ

byebugオーナー「あーdebaseからforkしたんだよね :)」

Rails on Docker

発表者:@bigplantさん
スライド:https://speakerdeck.com/bigplants/rails-on-docker

OpsDevとかの話

無限ステージングの夢

空気を吸うようにデプロイしたい
(お、おう?)

ビルドは1秒でも早い方がいい
(せやな)

ビルド高速化Tips

  • Gemfileなどに変更がない場合はスキップできるよう先にCOPYする技 キャッシュが効くように順番とか気をつける。

まず必要なものを全部入れる
そしていらないのを削除する

1.5Gから500MB! これはでかい。

  • docker history で どこが容量食ってるか分かる

(あんまりやりすぎると変なバグ出そう)

  • docker buildではenv渡せない
    (API_KEYを生で書いたりするからかな?)

  • ARGで書く

  • assestがネックになる?ならない?

(自分、ビルド以降の話ぜんぜん知らないんだなあと感じた)

懇親会

Matzのナッツ食べながらRubyの話とかしてました。
楽しくて終電逃しそうになったけど間に合いました。

会場提供してくださったビジネスバンクさんありがとう。

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2