はじめに
Windowsユーザーだけど、Linuxにちょっと興味がある。
そんな方に向けて、本記事では「WSL(Windows Subsystem for Linux)」を使って、オープンソースの第一歩を踏み出す方法をやさしく解説します。
インストールや基本操作に加えて、Linuxの設計思想やbashの特徴、Windowsシェルとの違いにも触れながら、ただの使い方ではなく“しくみの理解”を大切にした内容です。
なぜLinuxは大量データ処理に強いのか? bashはなぜ選ばれ続けているのか?
といった疑問にも答えながら、表面的な操作ではなく“理解して使える力”を育てることを目指しています。
操作だけで終わらせたくない人のための、やわらかいけど少し深い入門ガイドです。
1. Linuxとは何か?
-
Linux は、Unix互換のオープンソースオペレーティングシステム
-
世界中のサーバー、スマートフォン(Android)、クラウドサービス、組込み機器などに広く使われている
-
特徴:軽量、高速、安全、カスタマイズ性に優れる
補足:Linuxディストリビューションについて
-
Linuxはカーネル(OSの核)であり、実際に私たちが使っている“Linux OS”のように見えるものは、Linuxカーネルに必要なツール・パッケージ管理・設定などを組み合わせた「ディストリビューション(Distribution)」です。
-
代表的なディストリビューションには:
-
Ubuntu(教育・一般ユーザー向け、使いやすい)
-
Debian(安定性重視)
-
Red Hat系(CentOS, Fedora, RHEL)(企業・商用向け)
-
Arch Linux(シンプルで上級者向け)
などがあります。
-
-
Linuxの歴史(簡単に)
-
1969年 Unix 誕生 → 商用UNIXへ発展
-
1991年 Linus Torvalds氏により Linux カーネルが登場
-
フリーソフト(自由という意味での “Free”)の精神のもと急速に発展し、世界中のエンジニアが参加
UnixとLinuxの違い
ライセンスの違いが大きなポイント
-
Unix(UNIX V6 など) は1970年代にAT&Tベル研究所で開発された商用OS。
-
その後 BSD(Berkeley Software Distribution)、Solaris、AIX、HP-UX など多くの派生OSが登場。
-
多くはクローズドソースで高価であったため、主に企業・研究機関で使用。
-
この頃にソースコードを配布する文化は廃れ、コピーや再配布を厳しく制限することが一般的になった。
-
-
Linux は1991年にLinus Torvaldsによって、Unixの思想を踏襲しながら独自にゼロから開発されたオープンソースOS。
-
商用UNIXと互換性を保ちつつ、ソースコードが公開され、自由に使える(GPLライセンス)。
-
世界中の開発者が協力して改良を続けている。
-
つまり、Linuxは「Unix系の設計だけどUnixではない」、オープンでフリー(自由)な精神から生まれた新しい道筋のOS
| 比較 | Unix V6 系統 | Linux |
|---|---|---|
| 初出年 | 1969 | 1991 |
| 所有・配布元 | AT&T/商用ベンダー | Linus Torvalds/OSSコミュニティ |
| ソース公開 | 教育用に限定的 | 公開(GPL) |
| ライセンス | 再配布不可 | 自由に再配布可能 |
| 現在の利用 | 商用用途中心(衰退) | サーバー・クラウド・組込み etc… |
なぜWindowsユーザーがLinuxを学ぶのか?
-
WSL (Windows Subsystem for Linux) の登場で 簡単にLinuxを体験できる環境が整った
-
ITエンジニア、研究者、データ分析者の必須スキル
2. WSLとは?
-
WSL(Windows Subsystem for Linux)は、Windows上でLinux環境を動作させる仕組み
-
Windows上で高速にLinuxを起動・操作可能
-
ファイル共有も簡単、WindowsとLinuxの“いいとこ取り”が可能
WSLのバージョンについて
-
WSL1:WindowsカーネルでLinuxコマンドをエミュレート(仮想マシンなし)
-
WSL2:軽量仮想マシン(Hyper-v)で起動するため、完全な本物のLinux環境が使える。しかし、セキュリティソフトとの相性で仮想マシンからのネットワーク接続を制限される場合がある。(セキュリティソフトで管理された企業環境では注意)
3. インストール手順:WSL + Ubuntu
① WSLを有効化する
Windowsの機能の有効化または無効化を開き、Hyper-vとWindows用Linuxサブシステムにチェックを入れて適用し、再起動を行う。
② PowerShell(管理者)で wsl のアップデートを行う:
wsl --update
③ Microsoft Storeから Ubuntu を検索・インストール
- Ubuntu-24.04 LTS 等、最新のLTS版推奨
⑤ 初回起動時:
- ユーザー名・パスワードを設定(Windowsのものとは別)
- 初回起動時は WSL2となっている。
⑥(WSL1 使用時)起動する WSLのバージョンを設定する :
wsl --set-default-version 1
#または
wsl --set-version Ubuntu-24.04 1
⑦(WSL1 使用時)Xサーバを設定する:
-
Windows に
xvcxsrvなどのXサーバをインストールして起動する。 -
wsl側でディスプレイの環境設定を変更する
export DISPLAY=:0
xeyes #動作確認、マウスを追う目が表示されたら成功
4. Linux基本構造と用語
| Windows | Linux |
|---|---|
| C:\Users\user | /home/user |
| ファイル拡張子 | 任意(動作に不要) |
| CMD / PowerShell | bash |
| 改行コード CRLF | 改行コード LF |
ファイル構成の基本:
-
/(ルートディレクトリ) -
/home/ユーザー名/:ユーザーの作業領域 -
/mnt/c/Users/...:Windows側ファイルアクセス(WSL1特有)
演習1:Linuxらしいファイル構造を見てみる
目標:ディレクトの中を確認できるようになる
pwd
ls
ls /
ls /home
5. bashとは?なぜ人気?
-
Bash (Bourne Again SHell) は Linux の標準シェル
-
特徴:
-
コマンドの組み合わせ(パイプ、リダイレクト)で強力な処理が可能
-
シェルスクリプトで自動化・定型処理が簡単に書ける
-
大容量ファイルの処理に非常に強い(メモリを使わずストリームで処理)
-
6. bashの基本コマンド
| コマンド | 説明 |
|---|---|
pwd |
現在のディレクトリを表示 |
ls |
ファイル一覧 |
cd |
ディレクトリ移動 |
touch |
空ファイルを作成 |
mkdir |
ディレクトリ作成 |
rm |
ファイル削除 |
cat |
ファイル内容を表示 |
nano |
簡易エディタで編集 |
man |
コマンドのヘルプを見る |
cp |
ファイルをコピーする |
演習2:基本コマンドを使ってみる
目標:Linux上でディレクトリ作成・ファイル操作・コマンドヘルプ確認ができるようになろう。
・ホームディレクトリに practice ディレクトリを作成してみる
cd
mkdir practice
・コマンドの使い方を調べながら、ファイルを操作してみる
man touch #touchの使い方を調べる
touch test1.txt test2.txt #touchコマンドを使ってファイル操作
ls -l
man rm #rmの使い方を調べる
rm test2.txt #rmコマンドを使ってファイル操作
6. 入出力とパイプ・リダイレクトの概念
標準入力・標準出力とは?
-
標準入力(stdin):通常キーボードからの入力、sedoutを直接流すこともできる
-
標準出力(stdout):画面への出力、stdinへ直接流すこともできる。
-
標準エラー出力(stderr):エラー専用の出力先
リダイレクト
-
>:標準出力をファイルに書き出す -
>>:既存ファイルに追記 -
2>:エラー出力をファイルに保存
echo "hello" > output.txtcat
notfound.txt 2> error.log
パイプ
|を使うことで、前のコマンドの出力を次のコマンドの入力に渡す
cat file.txt | grep "keyword" | sort | uniq
bash と Windows shell のストリーム処理の違い
bash の処理設計(バイトストリーム)
-
「ファイル・ディレクトリ・ソケット・端末・デバイス等、コンピュータ上の全てはファイルとして捉え、バイト列の流れ(バイトストリーム)として扱えるべきである」という、抽象化された哲学的な設計思想の元開発されている。
-
そのため、バイトストリームを利用した逐次型の処理で、大量データでも低メモリ・高速に処理可能
-
「読み込み→加工1→加工2→…….→出力」の一連の流れをパイプで自然に繋げられるため、柔軟で高速なログ処理やテキスト変換が得意。巨大ファイルも安定して処理可能。
Windows の処理設計(テキストストリーム・オブジェクトストリーム)
-
Windowsのcmdは、簡易的なストリーム設計(テキストストリーム)を持つが、あくまで「便利な操作手段」を設計思想としており、bashのような抽象化された哲学的設計は少ない。
-
WindowsのPowerShellは、「強力で一貫性のある自動化・構成管理」を実現するオブジェクト指向シェルとして設計された。
-
データをバイト列としてではなく、オブジェクト(意味のあるデータ)として扱う。
-
非常に高機能で一貫性があるが、オブジェクトの取り扱いが前提のため、bashのような即興的・柔軟なストリーム加工には不向きな場面もある。
-
ファイル一括読込の処理が多く、大容量ファイルでは処理に時間がかかる場合がある。
ストリーム処理と「水の運び方」を用いた例え
| ストリーム種別 | たとえ | 特徴と設計思想 |
|---|---|---|
| バイトストリーム(bash) | 水道管:あらゆる水を流せる | 最も基本的な流れ。フィルター・分岐・合流が自由で、低メモリで高速。 |
| テキストストリーム(cmd) | 紙コップで1杯ずつ運ぶ | 行単位で丁寧に渡すが、自由度とスピードに限界あり。非構造データ限定。 |
| オブジェクトストリーム(PowerShell) | 蓋つきバケツで運ぶ | 構造がしっかりしたオブジェクト。ルールに沿って渡せるが柔軟性は劣る。 |
演習3:パイプとリダイレクトを使ってみる
目標:ファイルに出力を保存したり、パイプでコマンドをつなげて加工できるようになろう。
echo,cat,>や|を使って、ファイルの内容を書き出したり加工する
cd ~/practice #演習2 で作成したディレクトリ
echo "pen
pineapple
apple
pen" > ppap.txt
cat ppap.txt | sort | uniq -c > result.txt
cat result.txt
7. sudoとルート権限
-
Linuxではすべての操作に対して「誰が何をするか」が重要
-
sudoを使うことで、一時的に管理者(root)権限でコマンドを実行できる -
例:
sudo apt update
sudo rm -rf /important_dir
- 注意:
sudoを使うと強力な操作が可能になるため、コマンドの内容をよく確認してから実行する
8. シェルスクリプト入門
-
シェルスクリプトを活用すると複数コマンドをまとめて自動実行できる
-
拡張子は
.sh、chmod +xで実行可能に
スクリプト例:hello.sh
#!/bin/bashecho "Hello, $USER"mkdir -p test_dir
cd test_dir
touch file1.txt file2.txtls -l
実行手順
chmod +x hello.sh
./hello.sh
演習4:シェルスクリプトを作って実行してみる
目標:簡単なスクリプトを書いて、bashで実行できるようになろう。
- nanoエディタを使って、ファイル
greeting.shを作成し、実行してみる nanoはターミナル上で使える簡易テキストエディタ
起動方法:
nano greeting.sh
よく使う操作:
-
Ctrl + O:保存(”Output”) -
Enter:保存の確認 -
Ctrl + X:終了 -
Ctrl + K:行をカット -
Ctrl + U:貼り付け -
Ctrl + W:検索
“greeting.sh” の内容
#!/bin/bash
echo "今日の日付は $(date) です。"
chmod +x` で実行可能にしてから実行する。
chmod +x greeting.sh
./greeting.sh
9. よく使うテキスト処理ツール
| コマンド | 用途 |
|---|---|
grep |
パターン検索 |
awk |
テキスト処理(列の抽出) |
sed |
テキストの置換や削除 |
head/tail |
最初・最後の行を表示 |
wc |
行・単語・バイト数を数える |
実用例:ログのエラーカウント
grep "ERROR" server.log | wc -l
演習5:grep で特定の文字列を含む行を抽出してみる
目標:grepをつかって、文字列検索ができるようになろう。
cd ~/practice #演習2 で作成したディレクトリ
grep "apple" ppap.txt #演習3 で作成したファイルppap.txtないを検索
cat ppap.txt | grep "apple" #パイプを使って同じ操作をしてみる
10. WSLとWindowsのファイル連携
-
Windowsのドライブは
/mnt/c/や/mnt/d/にマウントされている -
例:
cd /mnt/c/Users/yourname/Desktop
- エクスプローラからWSL側にもアクセス可能(
explorer.exe .:カレントディレクトリをエクスプローラーで開く)
11. aptによるパッケージ管理
Linuxでは、apt(Advanced Package Tool)を使って、ソフトウェアのインストール、更新、削除を管理することができます。UbuntuやDebianベースのディストリビューションでは、これを使って簡単にパッケージを管理できます。
aptコマンドの基本操作
-
パッケージのインストール:
例えば、
treeコマンドをインストールするには、次のコマンドを実行します。sudo apt update # パッケージリストを更新 sudo apt install tree # treeパッケージをインストール -
インストールされているパッケージの一覧を表示:
apt list --installed -
パッケージの削除:
sudo apt remove tree
aptによるパッケージ管理の注意点
sudoコマンドを使う理由:
aptを使ってパッケージを管理する際には、システムに変更を加える必要があるため、管理者権限(sudo)が求められます。コマンドの前にsudoを付けて実行することで、管理者権限で操作を行います。
演習6: treeコマンドを使ってディレクトリ構造を表示しよう
目標:treeコマンドをインストールして、ディレクトリ構造を表示できるようになる。
sudo apt update #パッケージリストを更新
sudo apt install tree #treeパッケージをインストール
man tree #treeコマンドの使い方を確認
tree #ディレクトリ構造を表示
12. 応用と展望
-
GCC(Gnu C Compiler)プログラミングで自作コマンドを作成
-
Python/Node.js などの開発環境構築
-
Dockerによる仮想化技術利用
-
Linux基礎が分かれば、IoT、AI、クラウドでも応用可能
このドキュメントはGNU General Public Licence v3の下でライセンスされています。
※本記事は、筆者が社内研修向けに自主的に作成した資料をもとにしており、社外共有用にライセンスを明記した上で配布済みです。オープンソースの理念を大切にし、GNUプロジェクトへの敬意を込めて、GPLv3でライセンスしております。