はじめに
Windowsで開発環境を整える際、「WSL2 (Windows Subsystem for Linux)」が標準になりつつあります。しかし、オープンソースのツールを調べていると、ダウンロードページで**「MSYS2」**という文字を見かけることはありませんか?
「WSLがあるのに、なぜMSYS2が必要なの?」
「Git Bashと何が違うの?」
今回は、そんな疑問を持つ方向けに、MSYS2の概要、導入方法、そして現代的な使いどころについて解説します。
MSYS2 とは?
MSYS2(エムシスツー)は、Windows上で動く**「UNIXライクな開発環境」を提供するソフトウェアディストリビューションです。
簡単に言うと、「Windowsの中で、Linuxと同じようなコマンド(bash, ls, grepなど)やパッケージ管理システムを使えるようにするツール群」**です。
最大の特徴:Pacman
Arch Linuxで採用されているパッケージマネージャー pacman が使えます。これにより、コマンド一発でコンパイラ(gcc)やツール(ffmpeg, vim, gitなど)をインストール・管理できます。
WSL (Windows Subsystem for Linux) との違い
ここが最も重要です。
| 特徴 | MSYS2 | WSL2 |
|---|---|---|
| 仕組み | Windowsネイティブなバイナリとして動作 | 軽量VM上でLinuxカーネルそのものを動かす |
| ファイルシステム | Windowsのファイルを直接操作するのが得意 | Linux内のファイル操作は爆速だが、Windows側へのアクセスは少し遅い |
| 主な用途 | Windows用のアプリをビルドする、UNIXツールをWindowsの一部として使う | Linuxサーバー環境の再現、Dockerコンテナの実行 |
結論:
- Linux環境そのものが欲しい(サーバーサイド開発など) → WSL2
- Windows上で動くツールを作りたい、WindowsのファイルをUNIXコマンドで処理したい → MSYS2
インストール手順
1. インストーラーのダウンロード
公式サイト(msys2.org)にアクセスし、トップページのインストーラー(.exe)をダウンロードして実行します。
基本的には「次へ」を押していくだけでデフォルトの場所(C:\msys64)にインストールされます。
2. パッケージの更新
インストールが完了するとターミナルが開きます。まずはパッケージデータベースを最新にします。以下のコマンドを実行してください。
pacman -Syu
※ 更新中に「ターミナルを閉じてください」と言われたら、一度閉じてスタートメニューから再度「MSYS2 MSYS」を開き、もう一度 pacman -Syu を実行して完了させます。
使用例:何ができるのか?
ケース1:パッケージのインストール (pacman)
例えば、高機能なダウンロードツール wget や、バージョン管理の git を入れたい場合。
# インストール (-S)
pacman -S wget git
# 検索 (-Ss)
pacman -Ss python
これだけでパスが通った状態で使えるようになります。ChocolateyやScoopに近い感覚ですが、よりLinux寄りなツールが豊富です。
ケース2:gccでC言語のコンパイル(Windowsネイティブアプリ作成)
ここがMSYS2の真骨頂です。WSLのgccでコンパイルすると「Linuxの実行ファイル(ELF)」ができますが、MSYS2のgccでコンパイルすると「Windowsの実行ファイル(.exe)」が作れます。
まず、コンパイラを入れます(UCRT64環境推奨)。
pacman -S mingw-w64-ucrt-x86_64-gcc
hello.c を作成してコンパイル:
gcc hello.c -o hello.exe
./hello.exe
# -> Hello World!
この hello.exe は、MSYS2が入っていない他のWindows PCに持っていっても(依存DLLさえあれば)そのまま動きます。
ケース3:Windows Terminal への統合
MSYS2標準のターミナル(Mintty)も良いですが、普段使い慣れた Windows Terminal のタブの一つとしてMSYS2を追加すると非常に便利です。
Windows Terminalの「設定」→「JSONファイルを開く」で、profiles の list に以下を追加します。
{
"guid": "{12345678-1234-1234-1234-1234567890ab}",
"hidden": false,
"name": "MSYS2 / UCRT64",
"commandline": "C:\\msys64\\msys2_shell.cmd -defterm -here -no-start -ucrt64",
"icon": "C:\\msys64\\ucrt64.ico",
"startingDirectory": "%USERPROFILE%"
}
※ guid は適当なユニークな値を生成して入れてください。
これで、Windows TerminalからサッとMSYS2環境を呼び出せるようになります。
まとめ:開発者の道具箱に入れておこう
最近はWeb開発=WSL2という流れが強いですが、**「Windowsネイティブなバイナリが必要な時」や「FFmpegなどのツールを自分でビルドして使いたい時」**に、MSYS2は最強の選択肢になります。
特に mpv のような動画プレイヤーや、画像処理ライブラリなどを「最新のソースコードからWindows用にビルドしたい」というマニアックな要望に応えられるのは、現状MSYS2一択と言っても過言ではありません。
Scoop等で物足りなくなった方は、ぜひ一度触ってみてください。