最近ちょっとESLintとか使っていて、ガッツリ話を聞いてみたかったので参加してみました。 OSSの参加方法の話等もあって、非常に面白かったです。
勉強会URL
講師
@p_ck_ ぽっけさん。色々やってる面白い方でした。
スライド
Ruby Kaigiのものとおんなじものみたいでした。
ブログを見たら発表のコンセプトも載ってました。
概要
Lintってなに?ってところから始まりました。静的解析用ツールで、いろんな不具合を事前に検知してくれることは知っていましたが、変数で置き換えてあると発見できないとか、そういうやれるんだけど実装が煩雑になるために実装していない機能があることも知りました。 とは言え、複雑な処理をしないことで高速に不具合を発見できるというのは大きいので、トレードオフでしょうか。
あとモンキーパッチとか変なものにも弱いようですが、まあそれはRubyという言語が柔軟すぎるが故の弱点かもしれませんね。
その日の話では、ルールを書いたり、Lintを追加出来るといいねーって目標もあり、Lintの内部動作とか仕組みとかについて聞くことができました。
多分、こういうのってコンピューターサイエンスとか真面目にかじってないとなかなか聞くことがないような内容で、 若干頭が痛くなりましたが 、大変勉強になりました。
今回取り上げていたものはとても初歩的なものだと思うのですが、複雑なものについても少しづつ紐解いていって理解できるようになりたいですね。どう実現されているのかを知ることで自分のロジック能力の向上にも務まると思うので、疑問に思ったら調査してみようと思います。それ以上にまずはLintをもっと使いこなすところからかなあ。
また最後の方では自分でLintツールみたいなものを作ってみる、というのもありました。それもチャレンジングで面白そうだなーと思いました。絶対大変ですけど、スキルは絶対向上しそうですね。でもいい案が浮かばな…(自作のDSLとかで試せるといいんですが)
そんな感じで、非常にハイレベルな話が展開されており、理解するのでやっとでした。でも1つ1つ理解していくことで知識が深まっていくのだと思います。ASTとか微妙にわかるような分からないような、ですしね。
最後にOSSの話をちらっと聞きましたが、コードでやり取りするのをいきなりやるのは難しいので、日本語の翻訳とかドキュメントの整備をやるだけでも結構プルリクはありがたいらしいとのことです。コード書くことだけが大事、みたいなところもありますが英語のドキュメントを読んで正しく理解して日本語としてアウトプットするのもまたエンジニアのスキルであるように思います。 RuboCopにExampleを追加する方法、というものも、ぽっけさんが書いていらっしゃったので、紹介しておきます。
色んな経験を通して楽しく生きていけるといいなー と思ったのでした。 あと今回Lintの話を聞いていて、もっと色んな人に使ってもらいたいなあと思ったので、まずは身近な人達にLTしてくる予定です。。。