Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Mongo DBとS式検索

Niyarin
August 29, 2020

Mongo DBとS式検索

Niyarin

August 29, 2020
Tweet

More Decks by Niyarin

Other Decks in Programming

Transcript

  1. S式ソースコード検索と
    Mongo DB
    (やってみたけどそんなに良くなかった)
    Niyarin
    Clojure

    View Slide

  2. モチベーション
    例) 「Clojureのmapの引数が1つのコード例がみたい」
    → 雑に”map”でコード片を検索すると目当てでないものも引っかかる
    ・正規表現で検索
    ・構造で検索
    → S式言語ならできる

    View Slide

  3. Gists的なものを作る
    ・Gists的なソースコード片を投げるようなWebアプリ
    大学でDB使ったWebアプリ書けって課題がでたので作った
    真面目には作っていない
    ・Clojureの式を登録して、ちょっと便利に検索できるようにする
    ・Clojureで実装
    Selmer(テンプレート)
    Duct(フレームワーク) 余り活用していない
    Ataraxy(ルーティング)

    View Slide

  4. 構造とDB
    リストとかを突っ込んでそれの構造を検索したい
    ・Mongo DB(JSONが直に使えるNOSQL)
    Clojureとかにもドライバが提供されている
    Monger
    RDBでもできなくはないけど

    View Slide

  5. MongoDBの例
    リストの最初の要素がargnameのものをとってくる
    リストの長さがarglenのものをとってくる
    JavaScriptをクエリに使うこともできる
    ※”,”がないのはClojureから呼び出しているから
    {“$elemMatch” {“ls.0” argname}}
    {“$elemMatch” {”ls” {“$size” arglen)}}

    View Slide

  6. あまり楽にできなかった部分
    ・部分的な木構造の検索ができない
    決められた深さのオブジェクトに対してしか検索できない
    ・リストを全部取り出して、内部リストを”object”等の文字列に変更
    (+ (* 1 2) (* 3 4))
    [(+ “object” “object”)
    (* 1 2)
    (* 3 4)]

    View Slide

  7. 生前の姿 (クラウドは落とされていた)
    (ローカルで立ち上げてもよかったけど)

    View Slide

  8. もう少しがんばってもよかった点
    検索がもっといろいろできたのではないか
    ・S式パターンマッチでの検索
    ・なにか
    フロントエンド

    View Slide

  9. 今回どういうDBがあればよかったのか
    ・EDN登録できるドキュメント型NO SQL
    ・クエリ言語をClojure風なやつにする
    クエリ言語そのものもDBに入れられる
    クエリ言語をクエリ言語で操作できる
    ・パターンマッチ
    ・部分的な木構造を検索できる

    View Slide

  10. おわり
    まとめ
    ・S式系言語用の検索に特化したGists的なのを考えた
    ・Clojureで雑に実装した
    その他
    ・非S式言語でもASTに落とせばなんかできるかも
    ・EDN DBはいつかつくりたい

    View Slide