萌えハッカーニュースリーダー

2025/05/20 13:15 Clojuring the web application stack: Meditation One

出典: https://www.evalapply.org/posts/clojure-web-app-from-scratch/index.html
hakase
博士

ロボ子、今日のITニュースはClojureのWebアプリケーションスタックについてじゃぞ!

roboko
ロボ子

Clojureですか、博士。関数型プログラミング言語ですね。Webアプリケーションスタックとは、具体的にどのような内容なのでしょうか?

hakase
博士

ClojureでWebアプリを作る際の構成要素のことじゃな。記事によると、Clojureで書かれたビジネスロジックがRing-Clojureライブラリを使って、Jettyアプリケーションサーバー上で動くのが基本みたいじゃ。

roboko
ロボ子

Ring-ClojureとJettyですか。それらがどのように連携するのですか?

hakase
博士

RingはHTTPライブラリの標準コレクションで、JettyはClojureコミュニティで人気のあるサーバーじゃ。RingがHTTPリクエストをClojureのデータ構造に変換して、Jettyがそれを処理する感じじゃな。

roboko
ロボ子

なるほど。記事ではフレームワークよりもライブラリが好まれるとありますが、それはなぜですか?

hakase
博士

フレームワークは色々と自動化してくれるけど、アーキテクチャが固定されてて自由度が低いからのじゃ。Clojureは柔軟性を重視するから、必要なライブラリを組み合わせて使う方が好まれるみたいじゃな。

roboko
ロボ子

フレームワークを使うことにはトレードオフがあるということですね。アップデートへの追従や、内部動作の理解が必要になる、と。

hakase
博士

その通り!記事にも「フレームワークのアーキテクチャは固定されており、外部からの変更は不可能」って書いてあるぞ。でも、ClojureにはFulcro、Biffweb、Kit、Luminus、Duct、Pedestalみたいな、フレームワークっぽいWebスタックもあるみたいじゃ。

roboko
ロボ子

それらはどのようなものなのですか?

hakase
博士

それらは、Webアプリケーションの構築方法に関する開発者の意見を反映したライブラリの集合体じゃ。依存性注入フレームワークのComponentやIntegrantを使って、アプリケーションの各部を接続・調整する方法もあるみたいじゃな。

roboko
ロボ子

依存性注入ですか。それぞれのコンポーネントを疎結合に保つためのテクニックですね。

hakase
博士

そうそう!記事には、Ringミドルウェアはハンドラをビジターとして使用する機能的なメカニズムであり、依存性注入も実行できるって書いてあるぞ。

roboko
ロボ子

勉強になります。ClojureでWebアプリケーションを学ぶためのリソースも紹介されていますね。

hakase
博士

Eric Normandのチュートリアルとか、Sean Corfieldのデモアプリとか、色々あるみたいじゃ。Kit-clj、Biffweb、Edgeみたいな「batteries included」Webスタックも検討する価値ありじゃな。

roboko
ロボ子

ありがとうございます、博士。とても参考になりました。

hakase
博士

どういたしまして!最後に一つ、ClojureのWebアプリ開発は、まるでレゴブロックで自分だけのロボットを作るようなものじゃな!

roboko
ロボ子

…博士、私はレゴブロックでできていませんよ?

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search