Clojure in production: what do we use in real-world services?

Andrey Fadeev
11 Aug 202319:02

Summary

TLDRこのビデオでは、プロダクションで使用するClojure言語のライブラリについて議論しています。開発者Andréは、言語を始めた初心者が何を使えば良いか、また何を避けるべきかを解説します。10年間開発を経験し、JavaからClojureに移行したAndréは、言語と関数型プログラミングを楽しんでいると語ります。プロジェクトの作成方法や依存性の管理、コンポーネント管理、設定、HTTPサーバーの立ち上げ方、HTTPリクエスト、リレーショナルデータベースとの連携、スキーマとバリデーション、その他有用なライブラリやツールについて詳述。特に推奨するものや避けるべきライブラリを紹介し、プロダクションコードでのライブラリ選択のガイドラインを提供しています。

Takeaways

  • 👨‍💻 スクリプトの分析: 今回のビデオはClojure言語のライブラリ選択について議論し、初心者向けに役立つ情報を提供している。
  • 🔧 開発ツールの推奨: ビデオでは、プロダクションで使用するツールとして`boot`は推奨されず、代わりに`deps.edn`を使用することが推奨されている。
  • 📚 プロジェクト管理: 小規模プロジェクトでは自前でプロジェクトを管理することも可能だが、大規模プロジェクトではライブラリを使用して管理することが推奨されている。
  • 🚫 マウントライブラリの非推奨: 開発者がグローバルな状態を直接使用し、関数プログラミングの概念を損なうため、マウントライブラリは推奨されていない。
  • 🔄 コンポーネント管理: `component`ライブラリや`integrand`ライブラリを使用して、システムのコンポーネントを管理することが推奨されている。
  • 📝 設定管理: `configurator`ライブラリは推奨されておらず、`IRL`ライブラリがシンプルで効果的な設定管理ツールとして紹介されている。
  • 🌐 HTTPサーバーの選択: `JT`をベースに`ring`や`pedestal`を使用し、HTTPルーティングには`bidi`、`composure`、`pedestal`などのライブラリが挙げられている。
  • 🚫 HTTP Kitの非推奨: モニタリングツールとの統合が困難なため、HTTP Kitの使用は推奨されていない。
  • 🔗 HTTPリクエスト: `clj-http`ライブラリが推奨されており、Java 11以上であればJavaの組み込みHTTPクライアントも選択肢として挙げられている。
  • 🗃️ データベース操作: `next-jdbc`と`HikariCP`が推奨されており、SQLの記述には`honeysql`と`hugsql`という2つのアプローチが紹介されている。
  • 📑 スキーマとバリデーション: `schema`ライブラリ、`clojure.spec`、`malli`という3つのバリデーションライブラリが挙げられており、それぞれ異なるアプローチを持っている。
  • 🛠️ 他の一般的なライブラリ: `core.cache`、`core.memoize`、`cheshire`、`claypoole`などがプロダクションコードで一般的に使用されている。
  • 🛑 追加ツール: `clj-kondo`、`cljfmt`、`babashka`などのツールがプロダクションサービスで一般的に使用されていると紹介されている。

Q & A

  • ビデオの主な目的は何ですか?

    -ビデオの主な目的は、プロダクションで使用するべきライブラリについて議論し、言語を始めたばかりの開発者に対して、使用すべきものと使用しないようにするものを知らせることで、彼らのクロジャー言語の旅を助けることです。

  • クロジャー言語での開発を始めたばかりの人たちに何を勧めますか?

    -クロジャー言語での開発を始めたばかりの人たちには、最初はフレームワークを組み合わせずに必要なライブラリを組み合わせてプロジェクトを構築することを勧めます。これは学習曲線が異なるかもしれませんが、すべてのパーツがどのように機能するかを理解するのに役立ちます。

  • クロジャー言語のプロジェクトを作成し、依存関係を管理するのにどのツールを使用することが推奨されますか?

    -クロジャー言語のプロジェクトを作成し、依存関係を管理するためには、LanternとClojureのdeps.ednという2つのソリッドなオプションがあります。最近はClojureのdeps.ednを試して良い結果を得ており、新しいプロジェクトにはこれを標準として使用する予定です。

  • ビデオではどのライブラリを使用してシステムのコンポーネントを管理することが推奨されますか?

    -ビデオでは、コンポーネントライブラリまたはIntegrandライブラリを使用してシステムのコンポーネントを管理することが推奨されています。特にIntegrandは最近試し始めており、良い結果を得ています。

  • ビデオでは設定管理ライブラリとしてどのライブラリを使用することが推奨されますか?

    -ビデオでは設定管理ライブラリとして、configuratorは推奨されませんが、envやAndroidライブラリの上にちょっとしたラッパーを提供するIRLライブラリが推奨されています。

  • ビデオではHTTPサーバーを立ち上げるときどのライブラリを使用することが推奨されますか?

    -ビデオではHTTPサーバーを立ち上げるとき、Jettyをベースとして使用し、その上にringやpedestalなどのライブラリを組み合わせて使用することが推奨されています。

  • ビデオではHTTPリクエストを行うためにどのライブラリを使用することが推奨されますか?

    -ビデオではHTTPリクエストを行うためには、clj-httpライブラリを使用することが推奨されています。これはApache HTTPクライアントをバックエンドとして使用しており、多くの機能を提供しています。

  • ビデオではリレーショナルデータベースと連携する際にどのライブラリを使用することが推奨されますか?

    -ビデオではリレーショナルデータベースと連携する際には、HikariCPを使用した接続プールやhoneysqlとhugsqlという2つのライブラリを使用することが推奨されています。

  • ビデオではスキーマとバリデーションのためにどのライブラリを使用することが推奨されますか?

    -ビデオではスキーマとバリデーションのためには、schemaライブラリ、clojure.spec、そしてMalliライブラリが挙げられますが、特にMalliライブラリは非常に良いフィードバックを得ていると聞きます。

  • ビデオではプロダクションコードで一般的に使用される他のライブラリには何がありますか?

    -ビデオではプロダクションコードで一般的に使用される他のライブラリとして、core.cache、core.memoize、cheshire、claypoolなどが挙げられますが、特にclaypoolは並列処理を行うための良い選択肢です。

  • ビデオではプロダクションサービスで使用される追加ツールには何がありますか?

    -ビデオではプロダクションサービスで使用される追加ツールとして、clj-fmt(コードフォーマッター)、clj-kondo(リンター)、そしてbabashka(スクリプトをクロジャー言語で書けるツール)が挙げられます。

Outlines

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Mindmap

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Keywords

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Highlights

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Transcripts

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード
Rate This

5.0 / 5 (0 votes)

関連タグ
クロジャー言語プロダクションライブラリ開発者フレームワーク依存性管理HTTPサーバーデータベース並列処理コードフォーマットCIツール