昨日まで Ring
を用いてTodoアプリを作ってきました。
今日からはClojureのフレームワークである、Duct
を用いてRSSリーダーを作っていきます
前提
- Javaがインストールされていること
- leiningenがインストールされていること
プロジェクトセットアップ
シンプルなDuctのセットアップは簡単にできます
$ lein new duct <your project name>
ただ、追加の機能を指定してセットアップすることもできます
-
+api
- APIを作成するのに便利なミドルウェアとハンドラーを追加
-
+ataraxy
- Ataraxyルーターを追加
-
+cljs
- ClojureScriptのコンパイル環境とホットリロード機能を追加
- フロントエンド用のClojureScriptをビルドするためのツール(例: shadow-cljs)をセットアップ。
-
+example
- サンプルハンドラーを追加
-
+heroku
- Herokuへのデプロイに必要な設定を追加
-
+postgres
- PostgreSQLを使用するための依存関係とデータベースコンポーネントを追加
-
+site
- Webサイト向けのミドルウェア、favicon、WebJars、その他便利なツールを追加
-
+sqlite
- SQLiteを使用するための依存関係とデータベースコンポーネントを追加
今回は api
と ataraxy
を指定してセットアップします
$ lein new duct clojure-rss-reader +api +ataraxy
試しに起動してみます
$ lein run
Retrieving duct/database.sql.hikaricp/0.4.0/database.sql.hikaricp-0.4.0.pom from clojars
Retrieving duct/database.sql/0.1.0/database.sql-0.1.0.pom from clojars
...
(省略)
...
24-12-17 00:14:47 oookamasashinoMacBook-Air.local REPORT [duct.server.http.jetty:13] - :duct.server.http.jetty/starting-server {:port 3000}
どうやら 3000
portで起動できたようです
まだルーティングを設定していませんが、リクエストを送ってみます
$ curl localhost:3000
{"error":"not-found"}
404
ですがレスポンスが帰ってきました
これでプロジェクトがセットアップできました。
構成
プロジェクトをセットアップすると、以下のようになっていると思います
clojure-rss-reader/
├── README.md
├── dev
│ ├── resources
│ │ └── dev.edn
│ └── src
│ ├── dev.clj
│ └── user.clj
├── project.clj
├── resources
│ └── clojure_rss_reader
│ ├── config.edn
│ └── public
├── src
│ ├── clojure_rss_reader
│ │ ├── handler
│ │ └── main.clj
│ └── duct_hierarchy.edn
└── test
└── clojure_rss_reader
└── handler
少しこれを解説します
/dev
これは開発環境用の設定やコードを配置するディレクトリ
例えば、REPLの初期化用コードを置いたり、開発用の設定(データベース設定)などを置いたりする場所です
/resources
構成ファイルや、静的リソースを格納するディレクトリ
例えば、データベース情報、ログ設定、環境変数などアプリケーションに必要な設定値を置けます
/src
アプリケーションの本体の実装を置くディレクトリ
/test
アプリケーションのテストコードを置くディレクトリ
まとめ
ディレクトリ | 役割 |
---|---|
/dev |
開発環境専用の設定 |
/resources |
アプリケーションの設定、静的リソース |
/src |
アプリケーションのコード |
/test |
テストコード置き場 |
これらのディレクトリ構成を適切に活用し、効率よく開発を進めることができます