* Clojureのライブラリエコシステム [#v07b7c2a]
* 目次 [#e7a8f3cf]
#contents
** 概要 [#oee7e957]
common lispは歴史長いからライブラリおおいけど、clojureはあたらしいほうだから、ライブラリどうせすくないんでしょ? とおもっていたら、それは大きな間違いでした。
ClojarsというClojure専用のパッケージリポジトリがあり、2024年時点で約3万以上のライブラリが公開されています
Clojureは比較的新しい言語でありながら、予想以上に豊富なライブラリエコシステムを持っています。これは主に以下の要因によるものです:
JVMベース言語としてのメリット
独自のパッケージリポジトリの存在
JavaScript生態系へのアクセス(ClojureScript)
** 具体的な強み [#u5a0c3e7]
*** JVMエコシステムの活用 [#za204bfc]
Javaの膨大なライブラリ資産をシームレスに利用可能。これにより:
エンタープライズでの実用に耐える堅牢性
既存Javaシステムとの連携が容易
実績のあるJavaライブラリの再利用
*** Clojars:専用パッケージリポジトリ [#ud9dd533]
https://clojars.org/
2024年時点で30,000以上のライブラリが公開されており、活発なコミュニティによって維持されています。
*** 主要な開発分野のカバレッジ [#p1be7f86]
現代的な開発に必要な主要分野を網羅:
**** Web開発 [#h572880e]
Ring:HTTPサーバ抽象化
Compojure:ルーティング
Luminus:フルスタックフレームワーク
**** データベース [#y18b8ffb]
next.jdbc:JDBCラッパー
Honey SQL:SQLジェネレータ
**** 機械学習 [#h8c27e82]
tech.ml:機械学習ライブラリ
**** フロントエンド [#d2888241]
reagent:ReactラッパーでSPAを構築
re-frame:SPAのための状態管理
**** 開発ツール [#vd7c7f7e]
Leiningen:プロジェクト管理
deps.edn:依存関係管理
clojure.test:テストフレームワーク
*** JavaScriptエコシステムへのアクセス [#kde4ce79]
ClojureScriptを通じて:
npmパッケージの利用が可能
モダンなフロントエンド開発のツールチェーンにアクセス
Reactなどのメジャーなフレームワークとの連携
** まとめ [#p6af8366]
Common Lispの長い歴史に基づくライブラリ群とは異なる形で、Clojureは現代のソフトウェア開発に必要な充実したライブラリエコシステムを確立しています。JVMプラットフォームとJavaScriptエコシステムの両方にアクセスできる特徴は、特に実務での採用において大きな利点となっています。
* ファイルWebサーバを作ってみる [#ka317104]
fileserverという名前で作ってみる
lein.bat new app fileserver
** core.cljの修正 [#z88e95bb]
(defproject fileserver "0.1.0-SNAPSHOT"
:description "Simple file server"
:dependencies [[org.clojure/clojure "1.11.1"]
[ring/ring-core "1.10.0"]
[ring/ring-jetty-adapter "1.10.0"]
[org.clojure/tools.cli "1.0.219"]]
:main fileserver.core)
** 30分ぐらいでできたので、githubにpushしておきます。 [#g95d859e]
** 30分ぐらいでファイルサーバがでできたので、githubにpushしておきます。 [#g95d859e]
カスタマイズとかしやすそうな感じで何よりです。
https://github.com/server-free-k-hayashi/fileserver