📖 テーマ設定
🔊 音声設定
1.2
1.0
1.0
▶️ 再生コントロール
🎵 BGM設定
0.3
🔔 効果音設定
0.3

PostgreSQL環境構築(Docker+postgresql-sandbox)

概要

  • 日程: Day 1 / セッション 2
  • 時間: 9:30-10:15
  • 形式: 実習
  • ゴール: docker-composeでpostgresql-sandboxを起動し、psqlコマンドで接続して \dt でテーブル一覧を表示できる
  • 学習形式: ハンズオン実習(AIサポートあり)

導入(5分)

前のセッションでは「データベースは業務用の入れ物」という景色が見えてきました。今度はその入れ物を、自分のPC上に本当に立ち上げてみます。

ここで少し考えてみてください。本物のPostgreSQLを動かすには、普通ならインストール作業、設定ファイルの編集、サンプルデータの投入と、けっこうな手順が必要です。それを「全部おまかせの箱」にしてくれるのが Docker と、研修用に用意された postgresql-sandbox というリポジトリです。

このセッションのゴールはひとつ、「自分のPCの中でPostgreSQLが動いている」という小さな成功体験です。動いたら拍手してください。

本編(35分)

1. 前提:dockerとgitが入っているか確認する

まずは道具の確認です。料理を始める前に包丁とまな板を出すのと同じです。今回の実習に必要なのは2つだけです。

  • git: GitHubからソースコードを取ってくる道具
  • docker: PostgreSQLを「箱ごと」起動する道具

コード例・実例

ターミナルを開いて、次の2つを実行してください。

git --version
docker --version

どちらもバージョン番号が表示されればOKです。command not found と出た場合は、AIに「macOS(またはWindows)で git / docker をインストールする手順を教えて」と聞いてみましょう。

ここがポイント

  • バージョン番号が出れば、それだけで合格です。新しさは気にしなくて大丈夫
  • Dockerは「Docker Desktop」を起動しておく必要があります(クジラのアイコンが常駐していればOK)

2. postgresql-sandboxを取ってくる

道具がそろったら、研修用の箱を取りに行きます。これは、いわばレンタルキッチンの予約のようなものです。すでに必要な調理器具と食材が揃った部屋を借りるイメージです。

コード例・実例

任意の作業フォルダで、次のコマンドを順に実行します。

git clone https://github.com/shinoburc/postgresql-sandbox.git
cd postgresql-sandbox
ls

docker-compose.yml というファイルが見えていれば成功です。これがPostgreSQLを起動する設計図です。

ここがポイント

  • git clone は1回だけで済みます。2回目以降は cd postgresql-sandbox で入るだけ
  • 場所を忘れたら pwd で今いるフォルダを確認できます

3. PostgreSQLを起動する

設計図が手に入ったので、いよいよPostgreSQLを起動します。コマンドは1行だけです。

コード例・実例

docker compose up -d

-d はバックグラウンドで動かす指定です。donestarted といったメッセージが流れて、コマンドが終わればOKです。

念のため、起動状態を確認します。

docker compose ps

postgres-sandbox という名前のコンテナが running(または Up)になっていれば、PostgreSQLは今この瞬間、皆さんのPCの中で動いています。

ここがポイント

  • 初回は数十秒〜数分かかります。イメージのダウンロードのためです
  • 2回目以降は数秒で立ち上がります

コラム

Dockerのアイコンがクジラなのは、コンテナ船のメタファーから来ています。コンテナ(コンピュータの「箱」)を運ぶクジラ、というわけです。ちなみに過去のDockerのマスコットは「Moby Dock」という名前で、小説『白鯨』の主人公モビー・ディックのパロディでした。日々何気なく見ているあの可愛いクジラの中身は、実は19世紀の海洋文学だったのです。

4. psqlでPostgreSQLに接続する

PostgreSQLは動き始めましたが、まだ会話はしていません。会話の入口が psql というコマンドラインツールです。

コード例・実例

次のコマンドで接続します。

docker exec -it postgres-sandbox psql -U postgres -d sandbox

長く見えますが、意味を分解するとシンプルです:

  • docker exec -it postgres-sandbox:起動中のpostgres-sandboxコンテナの中で
  • psql:psqlを起動して
  • -U postgres:postgresユーザーで
  • -d sandbox:sandboxというデータベースに接続する

成功すると、プロンプトが sandbox=# のような表示に変わります。これは「sandboxデータベースとの会話の窓口が開いた」状態です。

5. テーブル一覧を見てみる

会話の窓口が開いたので、最初の一言を投げてみましょう。\dt (バックスラッシュ + dt)を打ってEnterです。

コード例・実例

sandbox=# \dt

departments、employees、customers、categories、products、orders、order_items の7つのテーブルが表示されれば、本セッションのゴール達成です。これが研修2日間の遊び場になります。

抜けるときは \q で安全に終了できます。

ここがポイント

  • \dt\ はバックスラッシュ(または円マーク)。SQLではなく、psql独自のメタコマンド
  • メタコマンドは末尾にセミコロンが要らない。SQLは必要(次のセッションで詳しく扱います)

💬 AIに聞いてみよう

うまく動かないとき、AIは強力な味方です。たとえば:

  • docker compose up -d を実行したら、port is already allocated というエラーが出た。原因と対処法は?」(エラーメッセージはそのままコピペで貼ると伝わりやすい)
  • docker exec-it ってどういう意味?」
  • 「psqlを終了したいけど \q が効かない。他の終了方法は?」

実習・演習

課題

  1. git と docker のバージョンを表示する
  2. postgresql-sandbox を git clone する
  3. docker compose up -d で起動する
  4. docker exec -it postgres-sandbox psql -U postgres -d sandbox で接続する
  5. \dt で7つのテーブルが見えることを確認する
  6. \q で抜ける

成果物

  • \dt の実行結果をスクリーンショットまたはテキストで保存
  • 「動いた!」を自分の中で1回つぶやく

ヒント

  • どこかで詰まったら、「今やったコマンド」と「出てきたエラーメッセージ」をそのままAIに貼って質問する
  • Docker Desktop が起動していないと Cannot connect to the Docker daemon のようなエラーが出る
  • ポートがすでに使われている場合、別のPostgreSQLが動いていないか確認する

まとめ(5分)

今回学んだことを一言でまとめると「Docker と postgresql-sandbox のおかげで、PostgreSQLは数コマンドで自分のPC上に住む」ということです。

接続コマンド docker exec -it postgres-sandbox psql -U postgres -d sandbox は、今後何度も使います。手が覚えるくらい繰り返してOKです。

次のセッションでは、いったん画面を離れて座学に戻ります。テーブルとは何か、レコードとは何か、主キーと外部キーは何のためにあるのか——今動かしたサンドボックスの中身を、概念として整理します。

🔄 振り返りチェック

  • docker compose up -d-d は何のためのオプションでしょうか?
  • psqlの中で「テーブル一覧を見たい」「終了したい」とき、それぞれ何を打ちますか?
  • 接続コマンドの -U postgres-d sandbox は、それぞれ何を指定していますか?

補足資料

学習ガイド

想定される質問と回答例

質問 ヒント
Dockerって何のために使うんですか? 「設定済みの環境を箱ごと配る仕組み」。同じ箱なら誰のPCでも同じように動くので、研修や本番運用で重宝する
docker composedocker-compose の違いは? 新しい形式(V2)が docker compose、古い形式(V1)が docker-compose。どちらでもOKなことが多いが、新しい方を推奨
\dt\ は半角バックスラッシュ?円マーク? OS/フォントにより見え方が違うが、内部的には同じ文字。日本語キーボードの円マークキーで入力できる
psqlで Enter したのに何も起きない SQLの場合は末尾にセミコロン ; が必要。打ち忘れていないか確認

つまずきやすいポイント

つまずきポイント ヒント
Docker Desktop を起動し忘れている クジラのアイコンが常駐していることを確認。再起動後は手動で立ち上げが必要なことが多い
git clone でネットワークエラーが出る 社内プロキシ環境ではプロキシ設定が必要なことがある。AIに「会社のプロキシ環境でgit cloneする方法」を聞く
\dt の結果がスカスカ データベース名を間違えている可能性。\l で全DB一覧、\c sandbox でsandboxに切替できる
psqlを抜けたあとも PostgreSQL は動き続けている これは正常。完全に止めるには docker compose down を実行
読み上げを開始します...

AIに質問する