WIP: ast でメソッドコールを探すやつを作り始めました + designing data-intensive application を読んでいます

本日は2本立てでお送りします(特にネタがないので小ネタというか終わってないネタを2つ合わせて記事にしとくか……という記事です。

ast でメソッドコールを探すやつを作り始めました

ほしくない?と思って作っています

github.com

使い方は何かと言うとある特定のメソッドの呼び出しを一覧にしたいぞ、というのがもとの欲求です。grep でもいいんですが、せっかく AST parser あるんだから使えばいいじゃん、ということでやってます。まだ NODE でとれるだけです。

grep よりもいい点としてレシーバや引数の情報ももとに検索できることでしょうか。そういう要望があるのかすげーあやしいのですが。あ、でも第二引数がはいってるかどうかをみることでオプション引数がない状態で呼ばれてないか、という確認はできますね。

インターフェースとして今は ruby コード書いてるけどそうじゃなくてなんかいい感じのクエリかけたらいいなーと思いつつ、特にアテがない状況。

テスト環境としては mtsmfm さんの docker image を採用。毎日 trunk でビルドしてくれるのでまだ安定版の存在しない RubyVM::AST のテストにはいいイメージですね。

https://hub.docker.com/r/mtsmfm/ruby-trunk/

designing data-intensive application を読んでいます

読み始めていますがまだ chapter 2 とかです。平易な英語でとても読みやすいのですが単純に英語であるだけで読むのがつらいらしくて全然進みません。すみません。

chapter 1 では、reliable, scalable, maintainable なアプリケーションについて話しています。アプリケーションの良さの指標として前述の3つを挙げて、それぞれについて解説していました。chapter2 では、まあ雑にいうと relational model vs document model という話をしていて、結構面白いです。mysqlJSON 型すら全く使ったことがないのでなんか使うとよさそうなところで使ってみたいですね。

relational model におけるテーブル設計と制約などは少しはノウハウがあるのでなんとなーくわかるのですが、document model においてデータの健全性をどう保てばいいのかよくわかりません。その健全性についても read 時のチェックと write 時のチェックだ、と対比されていましたが正直業務データとか突っ込むには不安が……。個人でやっててもあんまり痛い目みなさそうだし、ダメージが少なそうなところに突っ込むしかないのかなあ……とどう導入しようかいろいろ検討中です。

僕が途中で挫折しないように、感想とかを言える仲間を募集していますので twitter とかでお気軽にどうぞ。