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

cuelangについて / Learn CUE

riita10069
August 13, 2021

cuelangについて / Learn CUE

株式会社Exciteさんと弊エンジニアコミュニティVolareの共同開催のLTイベントにてお話させていただいた内容です。
https://volare.connpass.com/event/218767/

非常に多くの参加者にお越しいただき、誠にありがとうございました。

CUE言語では、jsonやyamlのようなスキーマセットでありながら、プログラミング言語としてバリデーションや拡張が行える。
特にKubernetesなどの大規模なyamlを扱う際に非常に便利である。
また、Kubernetesの設定ファイルのテンプレートには、HelmとKustomizeがよく使われているが、それらとは一線を画す画期的な仕組みを採用しているのがCUE言語である。
これまでのjsonなどで取られていた値に型をつけるというアプローチとは全く異なる型と値はlatticeを成すというような考え方だ。
latticeとは何かはスライドの方を見て欲しい。
また、latticeがただ一つの値に収束することをCUEでは、resolveと読んでいる。
この設計は極めて秀逸である。
最も秀逸であると感じる点が、宣言的なアプローチが取れること。
これまでの黒魔術や継承といった考え方では、手続き的な処理が必要だったので、処理なくして値は一つに定まらなかったということだ。

Keyword: Cue, Cuelang, Kubernetes, yaml, json

reference

https://zenn.dev/riita10069/articles/plactice_cuelang

https://qiita.com/riita10069/items/1c9077657fcd62843aaf

riita10069

August 13, 2021
Tweet

More Decks by riita10069

Other Decks in Technology

Transcript

  1. 設定記述言語CUEについて
    東京工業大学 工学院情報通信系


    山田 遼太

    View Slide

  2. 山田 遼太


    東工大 情報通信系


    Berrar Labs.


    機械学習モデルの評価指標について


    株式会社メルカリ


    Microservice Platform CI/CD


    merpay Architect

    View Slide

  3. ਓ͕هड़͢ΔઃఆϑΝΠϧͰ͋Δ

    View Slide

  4. ͨͩͷσʔλߏ଄Ͱ͸ͳ͍
    ܧঝͱΦʔόʔϨΠΛೝΊ͍ͯͳ͍఺͕ඇৗʹ༏Ε͍ͯΔʂʂ
    https://cuelang.org/docs/concepts/logic/

    View Slide

  5. ͲͷΑ͏ͳ৔໘Ͱ࢖͏ͷ͔ʁ

    View Slide

  6. ௨ৗͷϓϩάϥϛϯάݴޠͱͷҧ͍
    • ܕΛ஋ͱಉ༷ʹѻ͏ɻ


    • ͢΂ͯͷ஋͸ɺlatticeʹॱং෇͚ΒΕΔɻ

    View Slide

  7. latticeͱ͸ͳʹ͔
    • Latticeͱ͸ɺ൒ॱংू߹Ͱ͋Γɺ̎ͭͷཁૉΛબΜͩͱ͖
    ʹɺ࠷খ্ݶͱ࠷େԼݶ͕Ұҙʹଘࡏ͢Δɻ

    View Slide

  8. boolʹ͓͚Δlattice
    • ࣍͸ɺbool ʹ͍ͭͯΈͯΈ·͠ΐ͏ɻ


    • trueͱfalseͷ྆ํ͕boolͷΠϯελϯε


    • ྫ͑͹ɺ͋Δ஋͕trueͰ͋ΓɺboolͰ

    ͋Δͱߟ͑ͨ৔߹࠷େԼݶ͸trueʹͳΔ


    • Bool΋஋Ͱ͋ΔͷͰɺtrue | false ͷ݁Ռ

    ͸ɺCUEͰ͸ɺ͔ͨ͠ʹboolʹͳΔ

    View Slide

  9. numberʹ͓͚Δlattice
    • NumberͷΠϯελϯε͸ɺintͱ
    fl
    oat


    • ཁૉ਺͸ແݶͳͷͰӈਤ͸Ұ෦෼


    • ͋Δ஋ʹɺnumber, <10, 20.0Ͱ͋Ε͹

    ࠷େԼݶ͸ɺ20.0͕ͩɺ͜͜ʹint͕

    ՃΘΕ͹ɺbottomͰ͋Δɻ


    • CUE͕࣮ࡍʹ͜ͷΑ͏ʹ࣮૷͍ͯ͠Δ͜ͱ

    Λআ͚͹౰વͷ͜ͱͰ͋Δɻ

    View Slide

  10. ͦͷଞͷܕʹ͓͚Δlattice

    View Slide

  11. ੜ໋ɺӉ஦ɺͦͯ͠ສ෺ʹ͍ͭͯͷ


    ڀۃͷٙ໰ͷ౴͑

    View Slide

  12. Ͱ͖Δ͜ͱ
    • Data Validation


    • Schema De
    fi
    nition


    • Code Generation and Extraction


    • Querying


    • Scripting


    • Integration

    View Slide

  13. Data Validation

    View Slide

  14. Schema De
    f
    inition

    View Slide

  15. Default Value

    View Slide

  16. Default Value

    View Slide

  17. Integration
    • Json


    • YAML


    • Go


    • Protobuf


    • OpenAPI


    • CRDs


    • Kubernetes

    View Slide