ClojureでWebアプリケーション開発がしたい初心者の方へ
長い前書き
まあ、とにもかくにも日本語の情報が少ないので、初心者の皆さんは色々と検索したり、本を読んだりして頑張られているという状況でしょうか。 で…、やはりというか案の定というか、僕が2年ほど前に書いて放置してしまっているドキュメントにたどり着く方が一定数いらっしゃるようです(そうなってしまうようなモノを書いてしまった自覚はある)。 書いた本人が言うのもなんですが、このドキュメントはまあまあ良いドキュメントです。何故なら、ClojureでWebアプリケーションを開発するための基本的な知識を体系的に(本当?)得ることができる(本当?)ためです(何より無料!)。 とは言っても、分かりやすさを重視したので、便利だけど色々と覚えないといけないライブラリは紹介しなかったり、ライフサイクル系のライブラリに触れていなかったり、マクロは極力使わないようにしたりしたのもあって、物足りなかったり、現実のアプリケーションだとこうは作らない、という部分もあったりします。 というわけで、前置きが長くなりましたが今回は簡単に、このドキュメントを読んだあと何処に向かえばいいのかを書いてみようと思います。 何処に向かうといいのか
だいたいこれを読んだ後に向かうとしたら、Luminusあたりが目についてしまうのでLuminusに思わず手をのばしがちですが、個人的にはオススメしません。オススメしない理由は色々あるんですが、とりあえず一旦置いておきましょう。 まずWebアプリケーション開発をしたい方であれば、Webアプリケーションフレームワークを探したいところでしょう。落ち着いて聞いてほしいのですが、最初に断っておくとRailsのようなフレームワークはClojureにはありません(過去にそういう試みは幾つかあったようですが、無事に全て廃れてしまいました)。Clojureコミュニティにおいては、フレームワークよりも組み合わせ可能なライブラリを組み合わせて使う、というのが好まれています(なので2017年以前に書かれたWeb上の記事を鵜呑みにしてフレームワークがある、とは思わない方がいいです)。 とは言ったものの、流行らなかったのはRailsのようなフレームワークであり、そうではないフレームワークが最近注目を集めつつあります(Railsのような、という形容がどういう意味かは読者の方の想像にお任せします)。Clojureコミュニティで近年注目を集めているのはArachneとDuctというフレームワークです。どちらのフレームワークもモジュラーなフレームワークであることを売りにしています。Arachneに関してはまだ開発中なので特に触れません。Ductに関してはライフサイクルの部分をIntegrantを利用するように変更した後で、落ち着いてきたのかなという感じがするのでもし興味があるのであれば触ってみるといいと思います。 フレームワークの話をしましたが、ClojureでWebアプリケーションを開発する場合、本質的には上述したようなフレームワークは必要ありません。実際、僕が書いたドキュメントを読んだ方なら分かると思いますが、基本的にはRingというライブラリを中心にRingミドルウェアを組み合わせたりするだけで、簡単にWebアプリケーションを構築することができるようになっています(実を言うとRing以外にも選択肢があったりするんですが、話がややこしくなるので黙っておきます)。 また、ほとんどのライブラリは特定のフレームワークなどに依存しないように作られているため、どのようなライブラリでも自由に組み合わせることができるようになっています。Ductなどを利用した場合でも、基本的にはRingを使うことになりますし、欲しい機能があれば適宜ライブラリを組み合わせていくことに変わりはありません。なので、初心を忘れず、困ったら振り返ってみましょう。 結局、何処に向かうといいのか、という話ですがとりあえずDuctあたりに行くと良いと思います。またライブラリに関しては無数にあるため、いちいち説明していてはキリがないので説明しませんが、幾つかのポイントを押えておくと選ぶさいに困らないと思うので、以下に書いておきます。 気力と暇があればそのうちDuctについて書く気がします。 最後に
Web上の情報はどんどん古くなっていきます。ですが、Clojureの場合、数年程度では全く使えない情報になることは少ないです。それはClojure自身が後方互換性を重要視しているのもありますが、ライブラリも人気のあるものは息が長く、APIが激しく変わることが少ないからです(ものによっては跡形もなくなるものがたまにありますが…)。 おまけ
日本語での簡単な紹介は以下