この記事の最終更新日: 2026年6月17日

サーバーの設定作業を毎回手作業でやっていると、だんだんつらくなってきます。
たとえば、次のような作業です。
Nginxをインストールする
設定ファイルを配置する
サービスを再起動する
ユーザーを作成する
パッケージを更新する
複数台のサーバーに同じ設定を入れる
1台だけなら手作業でもなんとかなります。
しかし、サーバーが3台、5台、10台と増えてくると、手作業ではミスが増えます。
「このサーバーだけ設定を忘れていた」
「本番と検証環境で設定が微妙に違う」
「前に何を実行したか覚えていない」
こうした問題を減らすために使われるのが Ansible です。
この記事では、Ansibleとは何か、何が便利なのか、初心者はどこから学べばよいのかを、2026年時点の情報を踏まえてわかりやすく解説します。
- Ansibleとは?
- Ansibleでできること
- Ansibleが便利な理由
- Ansibleの基本構成
- Ansibleはエージェントレス
- Ansibleのインストール方法
- ansible と ansible-core の違い
- Inventoryとは?
- Playbookとは?
- Taskとは?
- Moduleとは?
- 冪等性とは?
- Ad-hocコマンドとは?
- Roleとは?
- Collectionとは?
- Ansibleの基本的な流れ
- 最初に作るサンプル構成
- Ansibleで初心者がハマりやすいポイント
- 1. SSH接続できない
- 2. Inventoryの書き方を間違える
- 3. become: true を忘れる
- 4. YAMLのインデントミス
- 5. shellに頼りすぎる
- 6. 本番にいきなり流す
- Ansibleを学ぶ順番
- 変数を使う
- Templateを使う
- Handlerを使う
- Ansible Vaultとは?
- AnsibleとTerraformの違い
- Ansibleを2026年に学ぶ意味はある?
- 初心者がまず作るべきPlaybook
- Ansible入門で覚えるべきコマンド
- Ansible入門のチェックリスト
- Ansibleでやってはいけないこと
- まとめ
Ansibleとは?
Ansible は、サーバー構築や設定変更を自動化するためのツールです。
公式ドキュメントでは、Ansibleはリモートシステムの管理を自動化し、その望ましい状態を制御するものとして説明されています。Ansibleの基本構成には、Ansibleを実行する Control node、管理対象をまとめる Inventory、操作対象となる Managed node があります。(Ansible Documentation)
簡単に言うと、Ansibleは次のようなツールです。
「このサーバーにはNginxを入れて」
「この設定ファイルを配置して」
「サービスを起動して」
「このユーザーを作って」
という作業を、コードで定義して自動実行するツール
Ansibleを使うと、サーバーに対して手作業でコマンドを打つ代わりに、YAMLで書いた設定ファイルをもとに作業を実行できます。
Ansibleでできること
Ansibleでは、さまざまなIT作業を自動化できます。
代表的には次のようなものです。
- サーバーの初期設定
- パッケージのインストール
- 設定ファイルの配置
- サービスの起動・再起動
- ユーザー作成
- ディレクトリ作成
- アプリケーションのデプロイ
- ミドルウェア設定
- 複数サーバーへの一括作業
- ネットワーク機器の設定
- クラウド環境の操作
Red Hatの解説でも、Ansibleはプロビジョニング、構成管理、アプリケーションのデプロイ、オーケストレーションなどのITプロセスを自動化するツールとして説明されています。(Red Hat)
つまりAnsibleは、単なる「サーバー設定ツール」ではありません。
サーバー運用、インフラ構築、アプリ配布、定型作業の自動化まで幅広く使える自動化ツールです。
Ansibleが便利な理由
Ansibleが便利な理由は、主に次の3つです。
手作業を減らせる
同じ作業を何度も再現できる
設定内容をコードとして残せる
特に大きいのは、作業手順をコードとして管理できることです。
たとえば、手順書にこう書いてあるとします。
1. apt updateを実行する
2. nginxをインストールする
3. 設定ファイルを配置する
4. nginxを再起動する
この手順書を見ながら毎回作業するのは大変です。
Ansibleでは、この作業をPlaybookとして書けます。
- name: Setup web server
hosts: web
become: true
tasks:
- name: Install nginx
ansible.builtin.apt:
name: nginx
state: present
- name: Start nginx
ansible.builtin.service:
name: nginx
state: started
enabled: true
このように書いておけば、同じ作業を何度でも実行できます。
手順書ではなく、実際に動くコードとして残せるのがAnsibleの強みです。
Ansibleの基本構成
Ansibleを理解するには、まず次の用語を押さえる必要があります。
| 用語 | 意味 |
|---|---|
| Control node | Ansibleを実行するマシン |
| Managed node | Ansibleで操作されるサーバー |
| Inventory | 操作対象のサーバー一覧 |
| Playbook | 実行したい作業をYAMLで書いたファイル |
| Task | 実行する1つ1つの作業 |
| Module | 実際の操作を行う部品 |
| Role | Playbookを再利用しやすく整理する仕組み |
| Collection | ModuleやRoleなどをまとめて配布する単位 |
公式ドキュメントでも、Control nodeは ansible や ansible-playbook などのCLIを実行するマシン、Managed nodeはAnsibleで管理される対象ホスト、Inventoryは管理対象ノードを論理的にまとめたリストとして説明されています。(Ansible Documentation)
初心者は、まず次の3つだけ覚えれば十分です。
Control node:Ansibleを実行する側
Managed node:操作される側のサーバー
Inventory:操作対象サーバーの一覧
Ansibleはエージェントレス
Ansibleの特徴の1つは、基本的に 管理対象サーバーに専用エージェントを入れなくてよい ことです。
公式ドキュメントでは、Managed nodeには通常Ansibleをインストールしないと説明されています。AnsibleはControl nodeから実行され、管理対象ホストに対して操作します。(Ansible Documentation)
これは初心者にとって大きなメリットです。
たとえば、複数台のLinuxサーバーを管理するときに、それぞれのサーバーへAnsible専用の常駐エージェントを入れる必要がありません。
多くの場合、SSHで接続できる状態を用意すれば、Ansibleから操作できます。
自分のPC・管理サーバー
↓ SSH
対象サーバー1
対象サーバー2
対象サーバー3
このシンプルさが、Ansibleの使いやすさにつながっています。
Ansibleのインストール方法
2026年時点の公式ドキュメントでは、Ansibleのインストール方法として pipx や pip を使う方法が案内されています。pipx ではフルパッケージの ansible を入れる方法と、最小構成の ansible-core を入れる方法が示されています。(Ansible Documentation)
たとえば、pipx を使う場合は次のようにインストールできます。
pipx install --include-deps ansible
最小構成の ansible-core を入れる場合は次です。
pipx install ansible-core
pip を使う場合は、次のような形です。
python3 -m pip install --user ansible
インストール後は、バージョンを確認します。
ansible --version
初心者は、まずローカル環境や検証用VMで試すのがおすすめです。
いきなり本番サーバーに対して実行するのは避けましょう。
ansible と ansible-core の違い
Ansibleを調べていると、ansible と ansible-core という名前が出てきます。
初心者にとっては少しわかりにくいですが、ざっくり言うと次のような違いです。
| 名前 | 内容 |
|---|---|
| ansible-core | Ansibleの中核機能 |
| ansible | ansible-coreに加えて、多くのCollectionを含むパッケージ |
公式インストールガイドでも、フルパッケージの ansible と、最小パッケージの ansible-core は別々にインストール例が示されています。(Ansible Documentation)
初心者が学習目的で使うなら、まずは ansible パッケージを使う方がわかりやすいです。
ただし、実務ではプロジェクトごとに必要なCollectionを明示的に管理することもあります。
Inventoryとは?
Inventory は、Ansibleで操作する対象サーバーの一覧です。
公式ドキュメントでは、InventoryはManaged nodeを整理するための中央ファイルであり、Ansibleにシステム情報やネットワーク上の位置を伝えるものとして説明されています。Inventoryを使うことで、Ansibleは多数のホストを1つのコマンドで管理できます。(Ansible Documentation)
たとえば、次のような inventory.ini を作ります。
[web]
web01 ansible_host=192.168.10.11
web02 ansible_host=192.168.10.12
[db]
db01 ansible_host=192.168.10.21
この例では、web グループに2台、db グループに1台のサーバーがあります。
Ansibleでは、このグループ名を指定して処理を実行できます。
ansible web -i inventory.ini -m ping
これは、web グループのサーバーに対して接続確認を行う例です。
Playbookとは?
Playbook は、Ansibleで実行したい作業をYAML形式で書いたファイルです。
公式ドキュメントでは、PlaybookはManaged nodeをデプロイ・構成するために使うYAML形式の自動化設計図として説明されています。また、Playbookは複数のPlayを持ち、PlayはInventory内のManaged nodeに対して順序付きのTaskを実行します。(Ansible Documentation)
たとえば、NginxをインストールするPlaybookは次のように書けます。
- name: Install nginx
hosts: web
become: true
tasks:
- name: Install nginx package
ansible.builtin.apt:
name: nginx
state: present
- name: Ensure nginx is running
ansible.builtin.service:
name: nginx
state: started
enabled: true
実行するには、次のコマンドを使います。
ansible-playbook -i inventory.ini nginx.yml
このように、Ansibleでは「何をどうしたいか」をPlaybookに書き、それを ansible-playbook コマンドで実行します。
Taskとは?
Task は、Playbook内で実行される1つ1つの作業です。
たとえば、次の2つはそれぞれTaskです。
- name: Install nginx package
ansible.builtin.apt:
name: nginx
state: present
- name: Ensure nginx is running
ansible.builtin.service:
name: nginx
state: started
enabled: true
1つ目のTaskでは、Nginxパッケージをインストールしています。
2つ目のTaskでは、Nginxサービスを起動し、自動起動も有効にしています。
初心者は、Playbookを「作業手順書」、Taskを「手順書の1項目」と考えると理解しやすいです。
Moduleとは?
Module は、Ansibleが実際に処理を行うための部品です。
たとえば、次のようなModuleがあります。
| Module | 用途 |
|---|---|
ansible.builtin.apt | Debian/Ubuntu系でパッケージ管理 |
ansible.builtin.yum | RHEL/CentOS系でパッケージ管理 |
ansible.builtin.copy | ファイルをコピー |
ansible.builtin.template | テンプレートから設定ファイル生成 |
ansible.builtin.service | サービス管理 |
ansible.builtin.user | ユーザー管理 |
ansible.builtin.file | ファイル・ディレクトリ管理 |
Ansibleでは、シェルコマンドを直接書くこともできますが、基本的にはModuleを使う方がよいです。
悪い例です。
- name: Install nginx using shell
ansible.builtin.shell: apt install -y nginx
良い例です。
- name: Install nginx using apt module
ansible.builtin.apt:
name: nginx
state: present
Moduleを使うと、冪等性を保ちやすくなります。
冪等性とは?
Ansibleを学ぶうえで重要なのが 冪等性 です。
冪等性とは、簡単に言うと、同じ処理を何度実行しても結果が変わらない性質です。
たとえば、Nginxをインストールする処理を考えます。
1回目に実行すると、Nginxがインストールされます。
2回目に実行したとき、すでにNginxが入っていれば、Ansibleは「変更不要」と判断できます。
1回目:Nginxが入っていない → インストールする
2回目:Nginxはすでに入っている → 何もしない
これが冪等性です。
Ansibleでは、Moduleを適切に使うことで、同じPlaybookを何度実行しても安全な構成にしやすくなります。
これは手作業のシェルスクリプトと比べたときの大きなメリットです。
Ad-hocコマンドとは?
Ansibleには、Playbookを書かずに単発コマンドを実行する方法もあります。
これを Ad-hocコマンド と呼びます。
たとえば、接続確認です。
ansible all -i inventory.ini -m ping
すべての対象サーバーでディスク容量を確認する例です。
ansible all -i inventory.ini -a "df -h"
特定グループに対してuptimeを確認する例です。
ansible web -i inventory.ini -a "uptime"
Ad-hocコマンドは、一時的な確認や簡単な作業には便利です。
ただし、繰り返し使う作業はPlaybookにした方がよいです。
一度だけ確認したい → Ad-hocコマンド
何度も使う作業 → Playbook
このように使い分けるとよいです。
Roleとは?
Ansibleを使い始めたばかりのころは、1つのPlaybookにすべてのTaskを書いても問題ありません。
しかし、作業が増えてくると、Playbookが長くなりすぎます。
そこで使うのが Role です。
Roleを使うと、Nginx設定、MySQL設定、アプリデプロイなどを部品化できます。
たとえば、次のような構成になります。
roles/
nginx/
tasks/
main.yml
templates/
nginx.conf.j2
handlers/
main.yml
Roleを使うと、Playbook側はシンプルになります。
- name: Setup web servers
hosts: web
become: true
roles:
- nginx
Roleは、Ansibleを実務で使ううえで重要な整理方法です。
ただし、初心者はいきなりRoleから始めるより、まずは普通のPlaybookを書けるようになってから学ぶ方が理解しやすいです。
Collectionとは?
Collection は、AnsibleのModule、Role、Pluginなどをまとめて配布する単位です。
公式ドキュメントでは、Collectionは ansible-galaxy collection install コマンドでインストールでき、デフォルトではGalaxyサーバーからCollectionを取得すると説明されています。(Ansible Documentation)
たとえば、Collectionをインストールするには次のようにします。
ansible-galaxy collection install community.general
Collectionを使うと、標準のAnsibleだけでは足りない機能を追加できます。
ただし、実務ではCollectionのバージョン管理も重要です。
チーム開発では、requirements.yml に必要なCollectionを書くことがあります。
collections:
- name: community.general
version: ">=9.0.0"
そして、次のようにインストールします。
ansible-galaxy collection install -r requirements.yml
初心者のうちは「Ansibleの拡張パッケージのようなもの」と理解しておけば十分です。
Ansibleの基本的な流れ
Ansibleを使った作業の基本的な流れは、次の通りです。
1. 対象サーバーを用意する
2. SSH接続できるようにする
3. Inventoryを書く
4. Playbookを書く
5. ansible-playbookで実行する
6. 結果を確認する
7. 必要に応じて修正する
最初は、いきなり複雑な構成を作る必要はありません。
まずは1台の検証サーバーに対して、簡単なPlaybookを実行するのがおすすめです。
最初に作るサンプル構成
初心者向けの最小構成は、次のようなものです。
ansible-sample/
inventory.ini
nginx.yml
inventory.ini です。
[web]
web01 ansible_host=192.168.10.11 ansible_user=ubuntu
nginx.yml です。
- name: Setup nginx
hosts: web
become: true
tasks:
- name: Install nginx
ansible.builtin.apt:
name: nginx
state: present
update_cache: true
- name: Start and enable nginx
ansible.builtin.service:
name: nginx
state: started
enabled: true
実行します。
ansible-playbook -i inventory.ini nginx.yml
これで、対象サーバーにNginxをインストールし、サービスを起動できます。
Ansibleで初心者がハマりやすいポイント
1. SSH接続できない
Ansibleは対象サーバーに接続できなければ何もできません。
まずはAnsibleを実行する端末から、普通にSSH接続できるか確認しましょう。
ssh ubuntu@192.168.10.11
SSHできない場合は、Ansible以前の問題です。
IPアドレスが間違っている
ユーザー名が違う
秘密鍵が違う
セキュリティグループやファイアウォールで閉じている
authorized_keysに公開鍵が登録されていない
このあたりを確認しましょう。
2. Inventoryの書き方を間違える
Inventoryのホスト名、IP、ユーザー名を間違えると接続できません。
たとえば、次のように書けます。
[web]
web01 ansible_host=192.168.10.11 ansible_user=ubuntu
秘密鍵を指定する場合は、次のように書くこともあります。
[web]
web01 ansible_host=192.168.10.11 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa
ただし、秘密鍵のパスや権限にも注意が必要です。
3. become: true を忘れる
パッケージインストールやサービス操作には管理者権限が必要です。
そのため、Playbookに become: true が必要になることがあります。
- name: Setup server
hosts: web
become: true
これを忘れると、権限不足で失敗します。
Permission denied
You must be root
Operation not permitted
のようなエラーが出たら、権限まわりを確認しましょう。
4. YAMLのインデントミス
AnsibleのPlaybookはYAMLで書きます。
YAMLはインデントが重要です。
悪い例です。
- name: Setup nginx
hosts: web
tasks:
- name: Install nginx
ansible.builtin.apt:
name: nginx
state: present
正しい例です。
- name: Setup nginx
hosts: web
tasks:
- name: Install nginx
ansible.builtin.apt:
name: nginx
state: present
YAMLのインデントが崩れると、Ansible以前に構文エラーになります。
初心者は、エディタのYAML補完やフォーマット機能を使うとよいです。
5. shellに頼りすぎる
Ansibleでは shell や command Moduleも使えます。
しかし、何でもshellで書くのはおすすめしません。
悪い例です。
- name: Install nginx
ansible.builtin.shell: apt install -y nginx
良い例です。
- name: Install nginx
ansible.builtin.apt:
name: nginx
state: present
Moduleを使う方が、冪等性を保ちやすく、状態もわかりやすくなります。
6. 本番にいきなり流す
Ansibleは強力です。
そのため、間違ったPlaybookを本番環境に流すと危険です。
最初は必ず検証環境で試しましょう。
また、次のようなコマンドも活用できます。
ansible-playbook -i inventory.ini nginx.yml --check
--check は、実際には変更せずに、変更される可能性がある内容を確認するためのモードです。
ただし、すべてのModuleが完全にcheck modeに対応しているわけではないため、過信は禁物です。
Ansibleを学ぶ順番
初心者は、次の順番で学ぶのがおすすめです。
1. Ansibleの全体像を理解する
2. Inventoryを書く
3. Ad-hocコマンドを試す
4. 簡単なPlaybookを書く
5. Moduleを使い分ける
6. 変数を使う
7. templateを使う
8. handlerを使う
9. Roleで整理する
10. CollectionやVaultを学ぶ
いきなりRole、Vault、CI/CD連携、AWX、Automation Platformまで学ぼうとすると挫折しやすいです。
まずは、1台のサーバーに対してNginxをインストールできるところから始めましょう。
変数を使う
Ansibleでは、変数を使ってPlaybookを柔軟にできます。
たとえば、インストールするパッケージ名を変数にします。
- name: Setup package
hosts: web
become: true
vars:
package_name: nginx
tasks:
- name: Install package
ansible.builtin.apt:
name: "{{ package_name }}"
state: present
変数を使うと、環境ごとの差分を管理しやすくなります。
開発環境
検証環境
本番環境
で設定値を変えるような場合に便利です。
Templateを使う
設定ファイルを配置するときは、copy より template が便利なことがあります。
たとえば、Nginxの設定ファイルに環境ごとの値を埋め込みたい場合です。
templates/nginx.conf.j2 を作ります。
server {
listen 80;
server_name {{ server_name }};
location / {
proxy_pass http://127.0.0.1:{{ app_port }};
}
}
Playbookでは次のように使います。
- name: Deploy nginx config
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/conf.d/app.conf
変数を使って設定ファイルを生成できるため、環境ごとの差分を管理しやすくなります。
Handlerを使う
設定ファイルを変更したときだけサービスを再起動したい場合は、Handlerを使います。
- name: Deploy nginx config
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/conf.d/app.conf
notify: Restart nginx
handlers:
- name: Restart nginx
ansible.builtin.service:
name: nginx
state: restarted
この例では、設定ファイルに変更があったときだけ Restart nginx が実行されます。
毎回サービスを再起動するより安全です。
Ansible Vaultとは?
Ansibleでは、パスワードやAPIキーなどの秘密情報を扱うことがあります。
しかし、秘密情報をそのままGitにコミットするのは危険です。
そのような場合に使うのが Ansible Vault です。
Ansible Vaultを使うと、変数ファイルなどを暗号化できます。
ansible-vault create secrets.yml
実行時は次のようにします。
ansible-playbook -i inventory.ini site.yml --ask-vault-pass
初心者のうちは後回しでもよいですが、実務でAnsibleを使うならVaultは重要です。
AnsibleとTerraformの違い
初心者が混乱しやすいのが、AnsibleとTerraformの違いです。
ざっくり言うと、次のような違いがあります。
| ツール | 得意なこと |
|---|---|
| Terraform | クラウドリソースの作成・変更 |
| Ansible | サーバー内部の設定・ミドルウェア構築 |
たとえば、AWSでEC2やRDSを作るならTerraformが向いています。
作成されたEC2の中にNginxやアプリを入れるならAnsibleが向いています。
Terraform:インフラの箱を作る
Ansible:箱の中身を設定する
もちろん、使い方によっては重なる部分もあります。
しかし初心者は、このように役割を分けて理解するとわかりやすいです。
Ansibleを2026年に学ぶ意味はある?
結論として、あります。
Ansibleは古いツールというより、今でも運用自動化の基本として使われる場面が多いです。
特に次のような現場では役に立ちます。
Linuxサーバーを運用している
オンプレ環境がある
複数台のサーバーを管理している
手作業の手順書が多い
アプリのデプロイを自動化したい
ミドルウェア設定をコード化したい
Terraform後のサーバー設定を自動化したい
Kubernetesやコンテナの時代でも、すべてがコンテナだけで完結するわけではありません。
サーバー、ネットワーク機器、VM、OS設定、ミドルウェア設定などを扱う場面では、Ansibleの知識はまだ有用です。
初心者がまず作るべきPlaybook
初心者が最初に作るなら、次のようなPlaybookがおすすめです。
パッケージ更新
Nginxインストール
設定ファイル配置
サービス起動
ユーザー作成
ディレクトリ作成
たとえば、次のようなPlaybookです。
- name: Basic server setup
hosts: web
become: true
tasks:
- name: Update apt cache
ansible.builtin.apt:
update_cache: true
- name: Install required packages
ansible.builtin.apt:
name:
- nginx
- git
- curl
state: present
- name: Create app directory
ansible.builtin.file:
path: /var/www/app
state: directory
owner: www-data
group: www-data
mode: "0755"
- name: Ensure nginx is running
ansible.builtin.service:
name: nginx
state: started
enabled: true
このくらいのPlaybookを書けるようになると、Ansibleの基本はかなり見えてきます。
Ansible入門で覚えるべきコマンド
初心者が最初に覚えるべきコマンドは次の通りです。
ansible --version
Ansibleのバージョン確認。
ansible all -i inventory.ini -m ping
接続確認。
ansible all -i inventory.ini -a "uptime"
対象サーバーでコマンド実行。
ansible-playbook -i inventory.ini site.yml
Playbook実行。
ansible-playbook -i inventory.ini site.yml --check
変更予定の確認。
ansible-galaxy collection install community.general
Collectionのインストール。
まずはこのあたりを使えれば十分です。
Ansible入門のチェックリスト
Ansible初心者は、次のチェックリストを順番に潰していくとよいです。
Ansibleをインストールした
ansible --versionで確認した
対象サーバーにSSH接続できる
Inventoryを書いた
ansible -m pingが通った
簡単なPlaybookを書いた
ansible-playbookで実行した
become: trueの意味を理解した
Moduleを使ってパッケージを入れた
設定ファイルを配置した
サービスを起動した
Handlerを使った
変数を使った
Roleの考え方を理解した
このあたりまでできれば、Ansible入門としてはかなり十分です。
Ansibleでやってはいけないこと
初心者がやりがちな危険な使い方もあります。
本番環境でいきなり実行する
shellだけで全部書く
秘密情報を平文でGitに入れる
Inventoryを雑に管理する
エラーを読まずに何度も再実行する
冪等性を意識しない
Playbookを巨大な1ファイルにし続ける
Ansibleは便利ですが、強力なツールです。
間違ったPlaybookを流すと、本番環境を壊すこともあります。
最初は検証環境で試し、少しずつ本番に近づけるのが安全です。
まとめ
Ansibleは、サーバー構築や設定変更を自動化するためのツールです。
手作業で行っていた作業をPlaybookとしてコード化することで、同じ作業を何度でも再現しやすくなります。
初心者がまず理解すべきなのは、次の基本用語です。
Control node
Managed node
Inventory
Playbook
Task
Module
Role
Collection
Ansibleを使う流れはシンプルです。
対象サーバーを用意する
SSH接続できるようにする
Inventoryを書く
Playbookを書く
ansible-playbookで実行する
最初は難しく感じるかもしれませんが、1台の検証サーバーにNginxを入れるところから始めれば、かなり理解しやすくなります。
2026年にAnsibleを学ぶなら、まずは次の3つを目標にするとよいです。
Inventoryを書ける
Playbookを書ける
Moduleを使って冪等な構成管理ができる
Ansibleを使えるようになると、サーバー作業を「手順書を見ながら手作業するもの」から、「コードで管理して再現できるもの」に変えられます。

大阪のエンジニアが書いているブログ。



コメント