素晴らしい！さあ、このエキサイティングなプロジェクトを始めよう！

まず、package.jsonファイルを作成し、必要な依存関係をインストールすることで、プロジェクトをセットアップする必要があります。ターミナルを開き、プロジェクトフォルダを作成したいディレクトリに移動します。

1.npm init` を実行し、プロンプトに従って package.json ファイルを作成します。
2.npm install express ejs`を実行して依存関係をインストールする。

これでプロジェクトのセットアップが完了したので、メインファイル `app.js` を作成しよう。

1.以下のように必要なモジュールをインストールする：

```javascript
const express = require('express');
const ejs = require('ejs');
const path = require('path');
const fs = require('fs');
```

2.以下のように `express` モジュールのインスタンスを作成する：

```javascript
const app = express();
```

3.ejs`を使用するようにビューエンジンをセットアップする：

```javascript
app.set('view engine', 'ejs');
```

4.以下のように、パブリックフォルダから静的ファイルを提供するミドルウェア関数を作成します：

```javascript
app.use(express.static(path.join(__dirname, 'public')));
```

5.ホームページ用のルートを次のように作成します：

```javascript
app.get('/', (req, res) => {
  const directoryPath = path.join(__dirname, 'public');
  const root = {
    name: 'public',
    children: []
  };
  createTree(directoryPath, root);
  res.render('index', { root });
});
```

6.ディレクトリを再帰的にスキャンし、ネストされたファイルとフォルダ構造を作成する関数を以下のように作成します：

```javascript
function createTree(directoryPath, node) {
  const files = fs.readdirSync(directoryPath);

  for (const file of files) {
    const filePath = path.join(directoryPath, file);
    const stats = fs.statSync(filePath);

    if (stats.isDirectory()) {
      const directory = {
        name: file,
        children: []
      };
      node.children.push(directory);
      createTree(filePath, directory);
    } else {
      node.children.push({ name: file });
    }
  }
}
```

7.views`フォルダに`index.ejs`ファイルを作成し、ネストされたファイルとフォルダ構造を次のように順序なしリストとしてレンダリングする：

```html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>File Explorer</title>
</head>
<body>
  <h1>File Explorer</h1>
  <ul>
    <% for (const child of root.children) { %>
      <li>
        <%= child.name %>
        <% if (child.children) { %>
          <ul>
            <% for (const grandChild of child.children) { %>
              <li>
                <%= grandChild.name %>
                <% if (grandChild.children) { %>
                  <ul>
                    <% for (const greatGrandChild of grandChild.children) { %>
                      <li>
                        <%= greatGrandChild.name %>
                        <% if (greatGrandChild.children) { %>
                          <!-- add more nested ul elements as needed -->
                        <% } %>
                      </li>
                    <% } %>
                  </ul>
                <% } %>
              </li>
            <% } %>
          </ul>
        <% } %>
      </li>
    <% } %>
  </ul>
</body>
</html>
```

これで完成だ！これで、ExpressとEJSを使ったNode.jsのプログラムができ、ディレクトリを再帰的にスキャンして、入れ子になったファイルとフォルダのリストをWebページとして提供できるようになりました。

プログラムを実行するには、ターミナルで `node app.js` を実行し、ブラウザで `http://localhost:3000` に移動するだけだ。
Awesome! Let's get started on this exciting project!

First, we need to set up our project by creating a package.json file and installing the necessary dependencies. Open your terminal and navigate to the directory where you want to create your project folder.

1. Run `npm init` and follow the prompts to create your package.json file.
2. Install the dependencies by running `npm install express ejs`.

Now that we have our project set up, let's create our main file `app.js`. 

1. Require the necessary modules as follows:

```javascript
const express = require('express');
const ejs = require('ejs');
const path = require('path');
const fs = require('fs');
```

2. Create an instance of the `express` module as follows:

```javascript
const app = express();
```

3. Set up the view engine to use `ejs` as follows:

```javascript
app.set('view engine', 'ejs');
```

4. Create a middleware function to serve static files from the public folder as follows:

```javascript
app.use(express.static(path.join(__dirname, 'public')));
```

5. Create a route for the homepage as follows:

```javascript
app.get('/', (req, res) => {
  const directoryPath = path.join(__dirname, 'public');
  const root = {
    name: 'public',
    children: []
  };
  createTree(directoryPath, root);
  res.render('index', { root });
});
```

6. Create a function to recursively scan the directory and create the nested file and folder structure as follows:

```javascript
function createTree(directoryPath, node) {
  const files = fs.readdirSync(directoryPath);

  for (const file of files) {
    const filePath = path.join(directoryPath, file);
    const stats = fs.statSync(filePath);

    if (stats.isDirectory()) {
      const directory = {
        name: file,
        children: []
      };
      node.children.push(directory);
      createTree(filePath, directory);
    } else {
      node.children.push({ name: file });
    }
  }
}
```

7. Create an `index.ejs` file in the `views` folder and render the nested file and folder structure as an unordered list as follows:

```html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>File Explorer</title>
</head>
<body>
  <h1>File Explorer</h1>
  <ul>
    <% for (const child of root.children) { %>
      <li>
        <%= child.name %>
        <% if (child.children) { %>
          <ul>
            <% for (const grandChild of child.children) { %>
              <li>
                <%= grandChild.name %>
                <% if (grandChild.children) { %>
                  <ul>
                    <% for (const greatGrandChild of grandChild.children) { %>
                      <li>
                        <%= greatGrandChild.name %>
                        <% if (greatGrandChild.children) { %>
                          <!-- add more nested ul elements as needed -->
                        <% } %>
                      </li>
                    <% } %>
                  </ul>
                <% } %>
              </li>
            <% } %>
          </ul>
        <% } %>
      </li>
    <% } %>
  </ul>
</body>
</html>
```

That's it! You now have a program in Node.js with Express and EJS that recursively scans a directory and serves a nested list of files and folders as a webpage. 

To run the program, simply run `node app.js` in your terminal and navigate to `http://localhost:3000` in your browser.