diff --git a/src/pages/js/011-what-program-do.mdx b/src/pages/js/011-what-program-do.mdx
index a4ad73d..76e996f 100644
--- a/src/pages/js/011-what-program-do.mdx
+++ b/src/pages/js/011-what-program-do.mdx
@@ -152,3 +152,145 @@
// エラー: constで宣言された変数は値の変更ができない
pi = 3.14159;
```
+
+## 変数の値
+
+変数に入れられる値には、いくつか種類があります。
+値がどんな種類なのかということを、**データ型**と呼びます。
+
+このデータ型によって、どのようなプログラムを書くことができるのかが決まります。
+
+### 数字 (Number型)
+
+数字を扱うデータ型です。
+
+```js
+let age = 18; // 整数
+let tax_rate = 0.1; // 小数
+let golf_score = -5; // 負の数
+```
+
+### 文字列 (String型)
+
+文字の並びを扱うデータ型です。
+
+シングルクォート(`'`)や、ダブルクォート(`"`)などで囲むことで表現します。
+
+```js
+let name = "もつに"; // ダブルクォートで囲む
+let greeting = 'こんにちは'; // シングルクォートで囲む
+```
+
+
+
+余談ですが、`も`、`つ`、`に`と、それぞれの文字を`もつに`と1つにまとめるような書き方を採用しています。
+これは文字を1列に並べていることから、**文字列**と呼ばれています。
+
+### 構造 (Object型)
+
+なにかを管理しようとしたときに、人の目にはある程度まとまりがあったほうが便利です。
+これをプログラミング的に表現したものが、**オブジェクト**です。
+
+これは、`{` と `}`で囲まれた中に、`キー: 値`の組み合わせを並べて表現します。
+
+```js
+let 変数名 = {
+ [キー名1]: 値,
+ [キー名2]: 値,
+ [キー名3]: 値,
+ ...
+}
+```
+
+```js
+let person = {
+ // 文字列
+ name: "もつに",
+
+ // 数字
+ age: 18,
+
+ // 関数を値として持つこともできる
+ greeting: function() {
+ console.log("こんにちは!");
+ }
+};
+```
+
+値を取り出すときは、以下のように書きます。
+
+```js
+// 変数名.キー名
+
+person.name; // "もつに"
+person.age; // 18
+
+// 関数なので、末尾に()をつけて実行することもできる
+person.greeting(); // => こんにちは!
+```
+
+
+
+他の変数と同様、別の値を代入して変更することもできます。
+
+```js
+// nameの値を"たろう"に変更
+person.name = "たろう";
+
+// ageの値を20に変更する
+person.age = 20;
+
+// addressという新しいキーを追加して値を設定
+person.address = "東京都";
+```
+
+### 配列
+
+数字の連番や、例えばクラスの生徒リストなど、同じ種類のものをまとめて扱いたいことがあります。
+このようなときに使うのが、**配列**です。
+
+配列は、`[` と `]`で囲まれた中に、値をカンマ(`,`)で区切って並べて表現します。
+
+```js
+let 変数名 = [値1, 値2, 値3, ...];
+```
+
+
+
+```js
+let numbers = [10, 20, 30, 40, 50];
+
+let names = ["もつに", "たかし", "なおき"];
+
+let students = [
+ { name: "もつに", age: 18 },
+ { name: "たかし", age: 20 },
+ { name: "なおき", age: 19 },
+];
+```
+
+
+
+この配列には、先頭から順に`0`、`1`、`2`、...という番号(=**インデックス**)が自動的に振られます。
+値を取り出す方法の1つとして、このインデックスを使う方法があります。
+
+```js
+let names = [
+ "もつに", // 0番
+ "たかし", // 1番
+ "なおき", // 2番
+];
+
+names[0]; // "もつに"
+names[1]; // "たかし"
+names[2]; // "なおき"
+
+
+let students = [
+ { name: "もつに", age: 18 }, // 0番
+ { name: "たかし", age: 20 }, // 1番
+ { name: "なおき", age: 19 }, // 2番
+];
+
+students[0].name; // "もつに"
+students[0].age; // 18