

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 詳細: このウォークスルーで使用されているアプリケーションの学習
<a name="gettingstarted-linux-explore-app-source"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

このトピックでは、このウォークスルーのために OpsWorks スタックがインスタンスにデプロイするアプリケーションについて説明します。

アプリケーションのソースコードを表示するには、[opsworks-windows-demo-nodejs](https://github.com/awslabs/opsworks-windows-demo-nodejs) GitHub リポジトリの内容を、ローカルワークステーション上の空のディレクトリに展開します。クックブックをデプロイしたインスタンスにログインし、`/srv/mylinuxdemoapp` ディレクトリの内容を確認することもできます。

`index.js` ファイルには、アプリケーションで最も重要なコードが含まれています。

```
var express = require('express');
var app = express();
var path = require('path');
var os = require('os');
var bodyParser = require('body-parser');
var fs = require('fs');

var add_comment = function(comment) {
  var comments = get_comments();
  comments.push({"date": new Date(), "text": comment});
  fs.writeFileSync('./comments.json', JSON.stringify(comments));
};

var get_comments = function() {
  var comments;
  if (fs.existsSync('./comments.json')) {
    comments = fs.readFileSync('./comments.json');
    comments = JSON.parse(comments);
  } else {
    comments = [];
  }
  return comments;
};

app.use(function log (req, res, next) {
  console.log([req.method, req.url].join(' '));
  next();
});
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }))

app.set('view engine', 'jade');
app.get('/', function(req, res) {
  var comments = get_comments();
  res.render("index",
    { agent: req.headers['user-agent'],
      hostname: os.hostname(),
      nodeversion: process.version,
      time: new Date(),
      admin: (process.env.APP_ADMIN_EMAIL || "admin@unconfigured-value.com" ),
      comments: get_comments()
    });
});

app.post('/', function(req, res) {
  var comment = req.body.comment;
  if (comment) {
    add_comment(comment);
    console.log("Got comment: " + comment);
  }
  res.redirect("/#form-section");
});

var server = app.listen(process.env.PORT || 3000, function() {
  console.log('Listening on %s', process.env.PORT);
});
```

ファイルで実行される操作は次のとおりです。
+ `require` は、このウェブアプリケーションを予期どおりに実行するために必要な一部の依存コードを含むモジュールをロードします。
+ `add_comment` 関数と `get_comments` 関数は、`comments.json` ファイルに対して情報の書き込みと読み取りを行います。
+ `app.get`、`app.listen`、`app.post`、`app.set`、および `app.use` の詳細については、「[Express API Reference](http://expressjs.com/4x/api.html)」を参照してください。

 デプロイ用のアプリケーションの作成とパッケージ化の方法については、「[Application Source](workingapps-creating.md#workingapps-creating-source)」を参照してください。