🌱 初心者向けIT基礎シリーズ|第5章

サーバー・Linux入門【2026】ターミナルとコマンドでAIエージェントが動く“場所”を知る

第4章では、AIエージェントがAPIを通じて外の世界とやり取りする「手足」の仕組みを学びました。では、そのプログラム自体はどこで動いているのでしょうか? 答えはサーバーです。そしてサーバーを操作する道具がターミナル(黒い画面)とコマンド。Claude CodeやCodex CLIのようなコーディングエージェントは、まさにこのターミナルでコマンドを実行するAIです。この章を読むと、AIが「このコマンドを実行してもいいですか?」と聞いてきたとき、自信を持って承認・拒否できるようになります。

🔬
調査・編集:AIエージェント研究所 編集部
運営=広告運用・生成AIエージェント導入支援の現役コンサル。このサイト自体も、AIエージェントと一緒に作り・公開・運用しています。

現場で実際に使っている構成を例に、未経験の方にも分かる言葉で解説します。→ 運営者・編集方針について

公開:2026年9月26日/最終更新:2026年9月26日
この記事の結論(要点まとめ)
  • サーバーは「24時間動き続け、頼まれたら応えるコンピューター」。物理サーバー・VPS・クラウド・コンテナは「どう借りるか・どう区切るか」の違い
  • サーバーの多くはLinuxで動き、画面ではなくターミナルとコマンドで操作する。基本コマンドは10個ほど覚えれば十分
  • Claude Code等のコーディングエージェントは「ターミナルでコマンドを実行するAI」。rm -rf・sudo・curl ... | sh などの意味が分かれば、AIの操作を安全に承認・拒否できる

サーバーとは?「24時間動き続けるコンピューター」

サーバー(server)は、英語の「serve(仕える・提供する)」から来た言葉で、頼まれたら応える役のコンピューターのことです。特別な機械というより「役割」の名前で、実は中身は私たちのパソコンとほぼ同じ部品(CPU・メモリ・ストレージ)でできています。

パソコンとの一番の違いは使われ方です。

  • 24時間365日、電源が入りっぱなし(夜中にWebサイトを見る人もいるため)
  • 画面の前に人がいない(データセンターに置かれ、遠隔で操作する)
  • インターネットから届く「お願い(リクエスト)」を待ち続け、答え(レスポンス)を返す

第1章で学んだ「ブラウザ → サーバー → 表示」の流れの、あの「サーバー」です。レストランにたとえると、パソコン(ブラウザ)はお客さん、サーバーはいつ注文が来てもいいように24時間待機している厨房です。

あなたのPCクライアント(客)インターネットDNS・HTTPサーバーLinux+プログラム24時間待ち受け(厨房のような役)リクエストリクエストレスポンスレスポンスAIモデルデータベース必要に応じて問い合わせ第1章:ブラウザ → サーバー → 表示第3・4章:APIとデータベース
あなたのPCやスマホ(クライアント)が送ったリクエストは、インターネットを通ってサーバーに届きます。サーバーはLinuxの上でプログラムを24時間動かして待ち受け、必要ならAIモデル(外部API)やデータベースに問い合わせてから、答え(レスポンス)を返します。

AIエージェントも同じです。社内チャットボットなら、その司令塔プログラム(第3章のバックエンド)はどこかのサーバーの上で24時間動いていて、質問が来るたびにClaudeなどのAPIを呼び出しています。

助手アイ
助手アイサーバーって、もっと特殊な巨大マシンだと思っていました。「役割」の名前なんですね。じゃあ私のノートPCでもサーバーになれるんですか?
エージェント博士
エージェント博士なれるぞ。実際、開発中はみんな自分のPCを「小さなサーバー」として使っておる。後で出てくる localhost:3000 がそれじゃ。ただしPCを閉じたら止まるし、外からは見えん。だから本番は「24時間動くサーバー」を借りるんじゃよ

物理サーバー・VPS・クラウド・コンテナの違い

「サーバーを用意する」と一口に言っても、方法はいくつかあります。違いは「1台まるごとか、区切って使うか」「誰が管理するか」「どう借りるか」です。住まいにたとえると分かりやすくなります。

種類住まいのたとえ中身向いている場面
物理サーバー(オンプレミス/専用サーバー)一戸建てを建てる・買う実物のコンピューター1台を自社で持つ、または丸ごと借りる大規模・特殊な要件、社内規定でデータを外に出せない場合
VPS(仮想専用サーバー)マンションの一室を借りる1台の物理マシンを「仮想化」で区切り、1区画を自分専用として月額で借りる個人開発・小規模サービス。Linuxの練習にも
クラウド(AWS・Google Cloud・Azure等)必要な分だけ部屋・設備を借り、使った分だけ払うサービス付き住宅仮想サーバーに加え、DB・ストレージ・AIなどの部品を必要な時に必要な量だけ借りる成長するサービス、アクセスの増減が大きいサービス(第6章で詳しく)
コンテナ(Docker等)家具付きの「ユニット」ごと持ち運べる部屋アプリと動作に必要な環境をひとまとめにした箱。どのサーバーに置いても同じように動く「自分のPCでは動いたのに本番で動かない」を防ぎたいとき

ここで出てきた仮想化(かそうか)とは、「1台の実物のコンピューターを、ソフトウェアの力で何台ものコンピューターに見せかける技術」です。マンションが1つの建物を壁で区切って多くの世帯が住めるようにしているのと同じ発想です。VPSもクラウドの仮想サーバーも、この仮想化の上に成り立っています。

ポイント:コンテナは「借り方」ではなく「包み方」 物理・VPS・クラウドは「サーバーをどう用意するか」の話ですが、コンテナは「アプリをどう包んで運ぶか」の話で、軸が少し違います。実際には「クラウドの上でコンテナを動かす」のように組み合わせて使います。

OSの話:なぜサーバーはLinuxが多いのか

OS(オーエス/Operating System)は、コンピューターの土台となる基本ソフトです。パソコンならWindowsやmacOS、スマホならiOSやAndroidがOSです。

そして、Webサーバーの世界で広く使われているOSがLinux(リナックス)です。Ubuntu(ウブントゥ)、Debian(デビアン)、Amazon Linux、Red Hat Enterprise Linux などは、どれもLinuxの「種類(ディストリビューション)」です。Linuxが選ばれる主な理由は次のとおりです。

  • 無料で使える(オープンソース):何百台並べてもOSのライセンス料がかからないディストリビューションが多い
  • 軽い:画面(GUI)なしで動かせるので、そのぶんCPUやメモリを本来の仕事に回せる
  • コマンドで全部操作できる:手順を文字で書けるので、自動化・複製がしやすい
  • 情報とツールが豊富:サーバー用ソフトやクラウドサービスの多くがLinuxを前提に作られている

ちなみに、macOSのターミナルはLinuxと同じUnix系の流れをくむため、基本コマンドはほぼ同じように使えます。Windowsの場合は、Windowsの中でLinuxを動かせる公式機能WSL(Windows Subsystem for Linux)を使えば、同じ練習ができます。

エージェント博士
エージェント博士「コマンドで全部できる」という性質が、AIエージェント時代にはとくに大事なんじゃ。マウス操作はAIには難しいが、文字のコマンドならAIは得意中の得意。だからコーディングエージェントはターミナルを主戦場にしておるんじゃぞ

ターミナルと基本コマンド

ターミナルは、文字(コマンド)を打ち込んでコンピューターに命令するための画面です。「黒い画面」「コンソール」「シェル」「CLI(コマンドラインインターフェース)」などとも呼ばれます(厳密には少しずつ意味が違いますが、最初は同じものと思ってOKです)。

ターミナルを開くと、次のような1行が表示されて入力を待っています。これをプロンプトと呼びます(AIへの指示文の「プロンプト」とは別物です)。

ターミナルbash
user@my-pc:~/projects$ 

「userというユーザーが、my-pcというコンピューターの、~/projectsという場所にいて、命令を待っています」という意味です。~(チルダ)は自分のホームフォルダを表す記号、$ は「ここから入力してね」の合図です。

まず覚える基本コマンド一覧

サーバー操作もAIエージェントの操作も、ほとんどはこの表のコマンドの組み合わせです。危険度の列は、AIが実行しようとしたときの注意の目安です。

コマンド意味(由来)できること危険度
pwdprint working directory今いる場所(フォルダ)を表示安全
lslist今いる場所のファイル一覧を表示(ls -la で隠しファイルや詳細も)安全
cdchange directory別のフォルダへ移動(cd .. で1つ上へ)安全
mkdirmake directory新しいフォルダを作るほぼ安全
catconcatenateファイルの中身を表示安全(ただし秘密ファイルの表示は注意)
cpcopyファイルをコピー注意(同名ファイルを上書きすることがある)
mvmoveファイルの移動・名前の変更注意(同名ファイルを上書きすることがある)
rmremoveファイルを削除危険(多くの環境でゴミ箱を通らず消える)
grepglobal regular expression printファイルの中から文字列を検索安全
curlclient URLURLにアクセスしてデータを取得・送信(APIを叩く)内容次第(送信先・送る中身を確認)
sshsecure shell遠くのサーバーに安全にログインして操作注意(本番サーバーに入る操作)

実際に打ってみる:1行ずつの意味

次は「作業用フォルダを作って、メモを書いて、中身を確認する」までの一連の流れです。(# から後ろはコメント=説明書きで、実行されません)

ターミナルbash
pwd                         # ① 今どこにいるか確認
/home/user
mkdir my-agent              # ② my-agent というフォルダを作る
cd my-agent                 # ③ その中に移動
echo "hello agent" > memo.txt # ④ memo.txt を作って文字を書き込む(> は「ファイルへ書き出す」)
ls                          # ⑤ ファイル一覧を見る
memo.txt
cat memo.txt                # ⑥ 中身を表示
hello agent
cp memo.txt memo-backup.txt # ⑦ バックアップをコピーで作る
mv memo-backup.txt old.txt  # ⑧ 名前を old.txt に変える
grep "agent" memo.txt       # ⑨ memo.txt から "agent" を含む行を探す
hello agent

青い文字の行は、コマンドを実行した結果(出力)です。注目してほしいのは④の > です。> は「ファイルに書き出す(すでにあれば中身を上書き)」、>> は「末尾に追記」という意味です。AIが提案したコマンドに > が入っていたら、「どのファイルが上書きされるか」を見るクセをつけましょう。

rm(削除)はなぜ危険なのか

rm は削除コマンドです。WindowsやMacでファイルを消すとまずゴミ箱に入りますが、ターミナルの rm は多くの環境でゴミ箱を通らずに消えます。さらに、よく一緒に使われるオプション(コマンドの後ろに付ける追加指示)が危険度を上げます。

  • -r(recursive):フォルダの中身ごとすべて削除
  • -f(force):確認なしで強制的に削除

つまり rm -rf フォルダ名 は「このフォルダを中身ごと、確認なしで消す」という最強の削除命令です。パスを1文字間違えたり、変数が空になったりすると、意図しない広い範囲が消えることがあります。

絶対に「よく分からないまま」実行しない
  • rm -rf / や rm -rf ~ のように、ルート(システム全体)やホームフォルダを対象にしたものは論外
  • rm -rf * の * は「今いる場所のすべて」。今どこにいるか(pwd)次第で被害が変わる
  • AIが削除を提案したら、対象のパスを読み上げて確認し、心配なら先に ls で中身を見る・Gitにコミットしておく(第7章)

curl と ssh:外の世界とつながるコマンド

curl は、ブラウザを使わずにURLへアクセスするコマンドです。第4章で学んだAPIを試すときによく使います。

ターミナルbash
# Webページ(またはAPI)の中身を取ってきて表示する
curl https://example.com

# -I を付けると、中身ではなく「ヘッダー」(ステータスコードなど)だけ見られる
curl -I https://example.com
HTTP/2 200

ssh は、遠くにあるサーバーに暗号化された通信でログインするコマンドです。VPSやクラウドの仮想サーバーを操作するときの基本です。

ターミナルbash
# ubuntu というユーザーで、203.0.113.10 のサーバーにログイン(IPは説明用の例)
ssh ubuntu@203.0.113.10
# ログインに成功すると、プロンプトがサーバー側のものに変わる
ubuntu@my-server:~$

ログインには、パスワードではなくSSH鍵(秘密鍵と公開鍵のペア)を使うのが一般的です。秘密鍵は家の鍵そのものなので、人に渡したり、GitHubに上げたり、AIとのチャットに貼り付けたりしてはいけません。

パーミッション(権限)とsudo

Linuxでは、ファイルごとに「誰が・読める/書ける/実行できるか」が決まっています。これをパーミッション(権限)と呼びます。ls -l で表示される -rw-r--r-- のような記号がそれで、r=読む(read)、w=書く(write)、x=実行(execute)です。最初は「ファイルには鍵のかかり方が設定されている」と理解すれば十分です。

そして、鍵を無視してなんでもできる管理者(root)の権限で1回だけコマンドを実行するのが sudo(スードゥー)です。

ターミナルbash
# 管理者権限でパッケージ一覧を更新する(Ubuntuの例)
sudo apt update

sudo は「マスターキーを借りる」操作です。システム全体の設定やソフトのインストールに必要な一方、間違えたときの被害もシステム全体に及びます。「Permission denied(権限がありません)」と出たときに、理由を考えずに sudo を付けて押し通すのは悪いクセです。

プロセスとポート:localhost:3000とは?

サーバーの中では、たくさんのプログラムが同時に動いています。実行中のプログラム1つ1つをプロセスと呼びます。Webサーバー、データベース、AIエージェントの司令塔プログラム……それぞれが1つ以上のプロセスです。

外からリクエストが届いたとき、どのプロセスに渡せばいいかを区別する番号がポートです。住所(IPアドレス)が「建物」なら、ポートは「部屋番号」です。

ポート番号よくある用途
80HTTP(暗号化なしのWeb)
443HTTPS(暗号化ありのWeb。普段見ているサイトはほぼこれ)
22SSH(サーバーへのログイン)
3000・5173・8000・8080 など開発中のアプリでよく使われる番号(ツールごとの慣習)

AIエージェントにWebアプリを作ってもらうと、最後に「http://localhost:3000 を開いて確認してください」と言われることがよくあります。これは次の意味です。

  • localhost:「このコンピューター自身」を指す特別な名前(IPアドレスでは 127.0.0.1)
  • :3000:そのコンピューターの3000番の部屋(ポート)で待っているプログラム

つまり「あなたのPCの中で起動した開発用サーバーに、あなたのブラウザからアクセスしてね」という意味です。自分のPCの中の話なので、他の人が同じURLを開いても見えません。他の人に見せるには、サーバーやクラウドにデプロイ(公開)する必要があります(第6・7章)。

ターミナルbash
npm run dev                 # 開発用サーバーを起動(Node.jsのプロジェクトでよくある)
Local: http://localhost:3000
# 止めるときは Ctrl + C(ターミナルで実行中のプロセスを中断する合図)
助手アイ
助手アイ前に「Port 3000 is already in use」って出て困ったことがあります! あれは「3000番の部屋にもう誰か住んでる」ってことですか?
エージェント博士
エージェント博士その通りじゃ。前に起動したサーバーを止め忘れていることが多い。そのターミナルで Ctrl + C を押すか、別の番号で起動すれば解決じゃ。AIに「ポート3000が使用中と出ました」と伝えれば、原因のプロセスを調べるコマンドも提案してくれるぞ

環境変数と.env:APIキーの置き場所

環境変数とは、そのターミナル(やサーバー)の中で使える「名前付きのメモ」です。プログラムは実行時にこのメモを読みにいけます。AIエージェント開発で一番よく使うのが、APIキーを環境変数に入れておく使い方です。

ターミナルbash
# ANTHROPIC_API_KEY という名前でAPIキーをメモする(値はダミー)
export ANTHROPIC_API_KEY="sk-ant-xxxxxxxx"

# メモされたか確認(中身を画面に出すので、人前や録画中はやらない)
echo $ANTHROPIC_API_KEY

Claudeの公式SDK(Python・TypeScript)は、何も指定しなければこの ANTHROPIC_API_KEY という環境変数を自動で読みにいきます。つまり、コードの中にキーを書かなくて済むのです。

ただし export はそのターミナルを閉じると消えてしまいます。そこで、プロジェクトごとに .env(ドットenv)というファイルに書いておき、プログラム起動時に読み込む方法がよく使われます。

.envtext
# 1行に「名前=値」。このファイルは絶対にGitに入れない
ANTHROPIC_API_KEY=sk-ant-xxxxxxxx
.gitignoretext
# Gitで管理しない(GitHubに上げない)ファイルを列挙する
.env
.env.*
.env は「金庫」ではなく「コードと分けておく引き出し」 .env 自体は普通のテキストファイルで、暗号化されていません。.gitignore に入れてGitにコミットしない・チャットに貼らない・漏れたらすぐキーを無効化して作り直す、の3点セットで守ります。本サイトでも .gitignore に .env・*.key・credentials.json などを登録し、秘密情報をコミットしない運用にしています。

パッケージ管理:npmとpip

プログラムを作るとき、すべてを自分で書く必要はありません。世界中の開発者が作った便利な部品(パッケージ/ライブラリ)をダウンロードして使えます。その出し入れを担当するのがパッケージマネージャーで、アプリストアのプログラム版のようなものです。

言語パッケージマネージャーClaude SDKを入れるコマンド
JavaScript / TypeScript(Node.js)npmnpm install @anthropic-ai/sdk
Pythonpippip install anthropic

npmの場合、インストールした部品の一覧は package.json に記録され、実物は node_modules フォルダに入ります。node_modules は巨大になるのでGitには入れず、他の人は npm install で同じ部品を再現します。Pythonでは、プロジェクトごとに部品を分ける仮想環境(venv)を使うのが定番です。

名前のよく似た偽パッケージに注意 パッケージは誰でも公開できるため、有名なものと1文字違いの名前で悪意あるコードを配る手口が知られています。AIが見慣れないパッケージ名を提案したら、公式ドキュメントに載っている名前と一致するか確認しましょう。

ログの見方:エラーは「最後の数行」を読む

ログとは、プログラムが「いつ・何をしたか・何に失敗したか」を書き残す記録です。サーバーには画面がないので、何が起きたかを知る手段はほぼログだけです。

エラーが出ると、ターミナルに長い英文が流れて焦りますが、読むコツは1つ。一番下の数行(とくに Error を含む行)から読むことです。上のほうは「どこを通ってきたか」の経路で、原因は最後に書かれていることが多いのです。

ターミナル(エラーの例)text
Traceback (most recent call last):
  File "agent.py", line 3, in <module>
    import anthropic
ModuleNotFoundError: No module named 'anthropic'   # ← ここが本題

最後の行は「anthropic という部品(モジュール)が見つかりません」という意味。つまり pip install anthropic を忘れているか、別の仮想環境で実行している、と当たりがつけられます。

サーバーのログファイルを見るときによく使うコマンドも覚えておきましょう。

ターミナルbash
tail -n 50 app.log          # ログファイルの最後の50行を表示
tail -f app.log             # 新しく書き込まれる行をリアルタイムで表示し続ける(止めるのは Ctrl + C)
grep "ERROR" app.log       # ERROR を含む行だけを抜き出す
エージェント博士
エージェント博士AIに相談するときも、「動きません」だけでは名医も診断できん。エラーの最後の10行ほどをそのまま貼るのが一番の近道じゃ。ただし、ログにAPIキーや個人情報が混ざっていないかは確認してから貼るんじゃぞ

Docker(コンテナ)の考え方

開発でよくある悲劇が「自分のPCでは動いたのに、サーバーでは動かない」です。原因の多くは、OSの違い、言語のバージョン違い、入っている部品の違いといった環境の差です。

これを解決するのがDocker(ドッカー)に代表されるコンテナ技術です。アプリと、それが動くのに必要なもの(OSの一部・言語・パッケージ・設定)を丸ごと1つの箱に詰めて、どこでも同じように動かします。名前の由来である輸送用コンテナのたとえがぴったりで、中身が何であれ、規格が同じ箱ならトラックでも船でも運べます。

用語意味たとえ
Dockerfile箱の作り方を書いた設計書(テキスト)レシピ
イメージ設計書から作った「箱のひな形」冷凍した料理
コンテナイメージを実際に起動して動いているもの温めて食卓に出した料理
Dockerfile(最小の例)Docker
FROM python:3.12-slim          # Pythonが入った軽量Linuxを土台にする
WORKDIR /app                   # 箱の中の作業フォルダ
COPY requirements.txt .        # 必要な部品リストをコピー
RUN pip install -r requirements.txt  # 部品をインストール
COPY . .                       # アプリのコードをコピー
CMD ["python", "agent.py"]     # 起動時に実行するコマンド

コンテナは、AIエージェントにとって「安全な作業部屋(サンドボックス)」としても重要です。AIにコードを実行させるとき、あなたのPC本体ではなくコンテナの中でやらせれば、万一おかしなコマンドが実行されても被害を箱の中に閉じ込めやすくなります。コーディングエージェントやAIのコード実行機能の多くが、こうした隔離された環境を使う考え方を取り入れています。

AIエージェントとの関係:コマンドが分かると「承認」できる

ここまでの知識が一番生きるのがこのセクションです。Claude Code(Anthropic)やCodex CLI(OpenAI)などのコーディングエージェントは、ひと言でいえば「ターミナルでコマンドを実行するAI」です。ファイルを読み(cat 相当)、検索し(grep 相当)、編集し、テストを実行し(npm test など)、エラーを見て直す——人間がターミナルでやっていることを、AIが自分で進めます。

① 指示「直して」と頼む② 計画AIが読んで考える③ 承認ここで人間が判断④ 実行と確認ターミナルで実行依頼許可を求めるはい結果(ログ)を読む次の手へ
コーディングエージェントは、あなたの指示を受けて計画を立て、コマンドを実行する前に「実行してもいいですか?」と許可を求めます(③)。「はい」で実行し、結果のログを読んで次の手を考える、をくり返します。③で判断するのは人間です。

多くのコーディングエージェントは、ファイルの変更やコマンドの実行の前に許可を求める設定を用意しています(どこまで自動で許可するかは設定で変えられます)。この③で「はい」を押すかどうかを決めるのは、あなたです。コマンドの意味が分からないと、全部「はい」を押すか、全部怖くて止めるかの二択になってしまいます。

AIが提案したら立ち止まるべきコマンド

コマンドの形何が起きるか確認すること
rm -rf ○○フォルダを中身ごと確認なしで削除対象パスは正しいか/Gitにコミット済みか
sudo ○○管理者権限で実行(システム全体に影響)本当に管理者権限が必要な作業か
curl ○○ | sh(| bash)ネットから取ってきたスクリプトを中身を見ずに即実行公式ドキュメントに載っている配布元か。心配ならまず中身を表示して読む
chmod -R 777 ○○誰でも読み書き実行できる状態にする権限を広げすぎていないか(エラー回避の雑な対処になっていないか)
git push --forceリモートの履歴を上書き(第7章)他の人の変更を消さないか
cat .env/env秘密情報を画面(=AIの入力)に表示APIキーをAIや記録に出す必要があるか
知らないホストへの curl・ssh外部へデータを送る・外部に接続する送信先はどこか、何を送っているか

|(パイプ)は、左のコマンドの出力を右のコマンドに渡す記号です。curl URL | sh は「URLから取ってきた文字列を、そのままプログラムとして実行する」という意味になります。有名ツールの公式インストール手順でも使われる書き方ですが、配布元を信用できるかどうかがすべてです。

Claude Codeなら「許可リスト」で線を引ける

毎回すべてを確認するのは大変なので、コーディングエージェントには「このコマンドは確認なしでOK」「これは禁止」をあらかじめ決めておく設定があります。たとえばClaude Codeでは、プロジェクトの .claude/settings.json の permissions に、allow(許可)・ask(毎回確認)・deny(禁止)を書けます。

.claude/settings.json(例)JSON
{
  "permissions": {
    "allow": ["Bash(npm run test:*)", "Bash(node build.js)"],
    "ask":   ["Bash(git push:*)"],
    "deny":  ["Read(./.env)", "Bash(curl:*)"]
  }
}

1行ずつ読むと、「テストの実行と node build.js は確認なしで実行してよい」「git push は毎回確認する」「.env を読むことと curl での通信は禁止」という意味です。コマンドの意味が分かって初めて、この線引きが自分でできるようになります。書き方の細部は変わることがあるので、実際に設定するときは公式ドキュメントで確認してください。

「AIが言ったから」は理由にならない AIエージェントは、読み込んだWebページやファイルに紛れ込んだ悪意ある指示(プロンプトインジェクション)に影響される可能性があります。いつもと違う送信先、いつもと違う削除、急な権限の変更を見たら、手を止めて理由をAIに説明させましょう。
助手アイ
助手アイじゃあ、ls や cat みたいに「見るだけ」のコマンドは自動で許可して、rm や sudo は毎回確認、みたいに分けるといいんですね。
エージェント博士
エージェント博士まさにそれが現場の考え方じゃ。「読むだけは任せる、書く・消す・送るは確認する」。そして大事な作業の前にGitでコミットしておけば、万一のときも元に戻せる。第7章で詳しくやるぞ

自社事例:公開前にターミナルで2つのチェックを走らせる

自社事例

AIエージェント研究所の「公開前チェック」

本サイトはHTMLとCSSだけの静的サイトですが、公開前には必ずターミナルで2つのNode.jsスクリプトを実行する運用にしています。どちらも数十行〜百数十行程度の小さなプログラムです。

ターミナルbash
node build.js          # ① 全ページに共通フッターを流し込む
node keihyo-check.js   # ② 景表法まわりの機械チェック
  • ① build.js:partials/footer.html を正本として、全HTMLの <!-- FOOTER:START --> と <!-- FOOTER:END --> の間に流し込みます。フッター(アフィリエイト表記)を入れられないページが1つでもあると、エラーで止まる(終了コード1)ように作ってあり、表記漏れのまま公開されるのを防ぎます
  • ② keihyo-check.js:PR表示の有無と位置、★評価の根拠注記、評価操作を促す表現、target="_blank" のリンクに noopener があるか、断定的な口コミ表現などを機械的にチェック。要修正(HARD)があれば止まり、要確認(WARN)は表示だけにしています

ポイントは「終了コード」です。ターミナルのコマンドは終わるときに「成功(0)/失敗(0以外)」の番号を返します。失敗で止まるように作っておけば、AIエージェントに作業を任せたときも、AI自身がエラーを読んで直し、もう一度実行することができます。実際、本サイトの更新作業の多くはClaude Codeとの共同作業で、AIがこの2つを実行してから人間が確認する流れです。

また、build.js などのスクリプトやフッターの下書きは配信対象から外し、APIキー等の秘密情報は .gitignore でコミットしない設定にしています。仕組みの全体は【自社事例】AIエージェントでメディアサイトを運用する仕組みで解説しています。

🤖 AIエージェントとやってみよう

ChatGPTやClaudeに、そのまま貼り付けて使えるプロンプト例です。実行前に「何をするコマンドか」を説明させるのが上達のコツです。

① 自分専用の「コマンド練習メニュー」を作ってもらう

プロンプト例text
私はターミナル初心者です。OSは【Mac/Windows(WSL)】です。
pwd, ls, cd, mkdir, cat, cp, mv, grep を安全に練習できる手順を作ってください。

条件:
- 練習用フォルダ(~/practice)の中だけで完結すること
- 1ステップごとに「打つコマンド」「そのコマンドの意味」「期待される表示」を書くこと
- rm は最後に1回だけ、練習用ファイル1つを消す形で使い、危険な点も説明すること

② AIが提案したコマンドを「翻訳」してもらう

プロンプト例text
コーディングエージェントが次のコマンドを実行してよいか聞いてきました。
初心者向けに、1語ずつ意味を分解して説明し、
危険度(安全/注意/危険)と、実行前に確認すべきことを教えてください。

コマンド:
【ここに貼る。例:find . -name "*.log" -mtime +7 -delete】

③ エラーログを読んで原因を絞り込んでもらう

プロンプト例text
次のエラーが出ました。APIキーなどの秘密情報は伏せてあります。
1. どの行が本当の原因を示しているか
2. 考えられる原因を可能性の高い順に3つ
3. それぞれを確かめるためのコマンド(見るだけの安全なものから)
を教えてください。

実行したコマンド:【例:python agent.py】
エラーの最後の15行:
【ここに貼る】

よくあるつまずき

症状・メッセージよくある原因まず試すこと
command not foundツールが未インストール/スペルミス綴りを確認。node -v などでインストール済みか確認
No such file or directory今いる場所が違う/ファイル名の打ち間違いpwd と ls で現在地と中身を確認
Permission denied権限が足りないすぐ sudo を付けず、なぜ権限が必要かをAIに聞く
Port 3000 is already in use前に起動したサーバーが残っている元のターミナルで Ctrl + C。別ポートで起動
APIキーが読めない(401など)環境変数が設定されていない/別のターミナルで設定したexport したターミナルと同じ場所で実行しているか、.env の読み込み設定を確認
ターミナルが止まって戻らないサーバーなど「動き続ける」プロセスを起動した正常な動作のことが多い。止めるなら Ctrl + C、作業は別のターミナルで

ファイル名や場所にスペースが入っていると、コマンドが「2つの別の言葉」と誤解することがあります。フォルダ名は半角英数字とハイフンにしておくのが無難です。

よくある質問

Windowsしか持っていなくてもLinuxのコマンドを練習できる?

できます。Windowsには、Windowsの中でLinuxを動かせるWSL(Windows Subsystem for Linux)という公式の仕組みがあります。またMacのターミナルはLinuxと同じ系統(Unix系)なので、この記事のコマンドの多くはそのまま使えます。

コマンドを覚えていなくても、AIに聞けば大丈夫では?

「コマンドを書く」のはAIに任せて構いません。ただし、AIエージェントが実行しようとするコマンドを承認するかどうかを決めるのは人間です。pwd・ls・cd・rm・sudoなど代表的なコマンドの意味と危険度だけは、自分で分かるようにしておくのがおすすめです。

rm -rf はなぜそんなに危険なの?

rm はファイルを削除するコマンドで、-r はフォルダの中身ごと、-f は確認なしで強制的に、という意味です。多くの環境でゴミ箱を経由せずに消えるため、場所の指定を1文字間違えるだけで大事なファイルが復元困難になります。AIエージェントがこのコマンドを提案したら、対象のパスを必ず確認してください。

APIキーは .env に書けば安全?

.env はAPIキーをコードに直接書かないための仕組みで、それ自体が暗号化されているわけではありません。.gitignore に .env を追加してGitにコミットしないこと、他人に共有しないこと、漏れたらすぐにキーを無効化して作り直すことをセットで守るのが基本です。

まとめ|コマンドが読めれば、AIに安心して任せられる

サーバーは「24時間動き続けるコンピューター」で、その多くはLinuxの上で、ターミナルとコマンドで操作されています。環境変数・ポート・ログ・コンテナといった言葉も、AIエージェントを作る・動かすうえで毎日のように出てきます。

そして2026年のいま、ターミナルでコマンドを打つのは人間だけではありません。コーディングエージェントが実行するコマンドを読み、「読むだけは任せる、書く・消す・送るは確認する」と判断できることが、AIに安全に仕事を任せるための基礎体力です。次の第6章「クラウド入門」では、このサーバーをどこから・どう借りるかを、AWS・Google Cloud・Azureとサーバーレスを例に学びます。

IT基礎シリーズ(全7章)

基礎を身につけたら、次は「仕事」につなげる

独学で進めるのも十分可能ですが、「最短で実務レベルにしたい」「転職・副業につなげたい」なら、次の記事も参考にしてください。

AIスキル・プログラミングが学べるオンラインスクール比較8選【2026】独学で詰まる前に。給付金の対象コースで費用を抑える方法も
記事を読む

次の一歩

姉妹サイトの記事で、次に気になりやすいことを調べられます。