Ubuntu の使い方
【要約】 このページでは、Ubuntuの基本的な使い方に関する情報をまとめています。インストールと初期設定から始まり、シェル(端末)の操作、環境変数とパスの設定、データファイル(CSV)の扱い方、基本的なLinuxコマンド、リモート接続、プログラミング環境(特にPythonとJava)、そしてシステムの運用保守に至るまでを解説します。Ubuntu上での作業効率を高めるための基礎知識を提供することを目的としています。
【目次】
- Ubuntu のインストールとセットアップ
- シェルの利用、管理者権限、基本機能
- 環境変数、パスを通す
- データファイル (CSV)
- 基本的なLinuxコマンドとリファレンス
- リモート接続とプロセス継続
- プログラミング言語Pythonとツール
- プログラミング用ツール類 (Git, CMake, GDB)
- プログラミング言語Java
- オペレーティングシステムの運用保守 (更新、パッケージ管理)
【関連する外部ページ】
Ubuntu の各種情報について
- Ubuntu の公式ページ(日本語版): https://jp.ubuntu.com/
- fosswire.com の Unix/Linux コマンドリファランス (古い情報ですが参考になります): https://files.fosswire.com/2007/08/fwunixref.pdf
- DistroWatch の Ubuntu のページ: https://distrowatch.com/table.php?distribution=ubuntu
【サイト内の関連ページ】
- 種々のまとめページ: [人工知能,データサイエンス,データベース,3次元], [Windows], [Ubuntu], [Python (Google Colaboratory を含む)], [C/C++言語プログラミング用語説明], [R システムの機能], [Octave]
Ubuntu 関連
- Ubuntu 24.04 LTS のインストール: 別ページ »で説明しています。
- Ubuntu 24.04 LTS のインストール直後の設定: 別ページ »で説明しています。
- Ubuntu 24.04 LTS 初期設定ガイド: 開発・研究環境構築: 別ページ »で説明しています。
- Ubuntu,WSL2 について: 別ページ »にまとめています。
- WSL2 のインストール,WSL2 上の Ubuntu のインストール: 別ページ »で説明しています。
- Ubuntu サーバー,リモート接続: 別ページ »にまとめています。
WSL2 関連
1. Ubuntu のインストールとセットアップ
Ubuntu のインストール
Ubuntuの最新LTS(長期サポート)リリースは、2024年4月にリリースされた 24.04 (Noble Numbat) です。22.04 LTSも引き続きサポートされています。Ubuntu公式サイトや日本語 Remix のページからISOイメージを入手し、インストーラを起動します。指示に従い、言語、キーボードレイアウト、インストールの種類(ディスク全体を使用するか、手動パーティション設定など)を選択し、タイムゾーン、ユーザー情報を設定してインストールを進めます。
注意:「ディスクを削除してUbuntuをインストール」を選択すると、ディスクの内容はすべて消去されます。Windowsとのデュアルブートなど、既存のOSを残したい場合は、手動でのパーティション設定など、別の手順が必要です。
【サイト内の関連ページ】
- Ubuntu 24.04 LTS のインストール詳細: 別ページ »で説明しています。
【関連する外部ページ】
- Ubuntu のダウンロード公式ページ(日本版): https://jp.ubuntu.com/download
- Ubuntu Desktop 日本語 Remix のダウンロードページ: https://www.ubuntulinux.jp/download/ja-remix
Ubuntu のインストール直後の設定
Ubuntuインストール直後に行うことが推奨される主な設定項目です。詳細は別ページで説明しています。
- パッケージのダウンロード元(ミラーサーバー)の変更(日本のサーバーへ)。
- システムの更新(最新の状態にする)。(セクション10参照)
- タイムゾーンとNTP(Network Time Protocol)による時刻同期の確認。
- 必要に応じてOpenSSHサーバーのインストール(リモート接続用)。
- 日本語環境(入力メソッド Mozc など)の設定。
- 任意で、運用保守ツール (htop等) のインストールや不要なソフトウェアの削除。
【サイト内の関連ページ】
- Ubuntu 初期設定ガイド: インストール直後の主要設定項目: 別ページ »で説明しています。
Ubuntu のシステム更新について
ソフトウェアの脆弱性修正や機能改善のため、システムの更新は定期的に行うことが重要です。更新手順の詳細はセクション10を参照してください。
Ubuntu セットアップ全般
- Ubuntu 24.04 LTS 初期設定ガイド: 開発・研究環境構築: 別ページ »で説明しています。
2. シェルの利用、管理者権限、基本機能
端末
端末(ターミナル)は、コマンドを入力してコンピューターを操作するための基本的なインターフェースです。Ubuntu Desktopでは標準で「GNOME Terminal」が利用できます。端末を開くと、シェル(通常はbash)が起動し、コマンド入力待ちの状態(プロンプト)が表示されます。

bash シェル
bash (Bourne Again SHell) は、Linuxで標準的に使われている高機能なシェルです。コマンド履歴の呼び出し、Tabキーによる入力補完、後述するリダイレクトやパイプによる入出力制御、シェルスクリプトによる定型作業の自動化など、多くの便利な機能を提供します。
管理者権限での実行 (su, sudo)
システムの安全性を保つため、日常的な作業は一般ユーザー権限で行うことが推奨されます。システム設定の変更やソフトウェアのインストールなど、管理者(root)権限が必要な操作を行うには、`sudo` コマンドを使用します。
sudo
コマンド:一般ユーザーが一時的に管理者権限でコマンドを実行するためのコマンドです。実行時にはユーザー自身のパスワードが要求されます。`sudo` を利用すると、どのユーザーがいつ、どのコマンドを管理者権限で実行したかのログが記録されるため、セキュリティ上、この方法が強く推奨されます。
sudo apt update # apt updateを管理者権限で実行 sudo vi /etc/fstab # 設定ファイルを管理者権限で編集 sudo -i # rootとして対話的シェルを開始 (注意して使用し、用が済んだらexit)
su
コマンド:他のユーザー(デフォルトではroot)に切り替わるためのコマンドです。切り替え先のユーザー(通常はroot)のパスワードが必要です。
su -
のようにハイフンを付けて実行すると、切り替え先ユーザーの環境設定(環境変数など)を読み込んでログインシェルを起動します。su - # rootに切り替える (rootのパスワードが必要) exit # 元のユーザーに戻る su otheruser # 他のユーザー 'otheruser' に切り替える (otheruserのパスワードが必要)
rootアカウントでの直接ログインについて:
システムに対する全ての権限を持つrootアカウントで直接ログインすることは、操作ミスがシステム全体に致命的な影響を与えるリスクが高いため、通常は避けるべきです。特にサーバー環境では、セキュリティ上の理由からrootによる直接ログインを無効にし、一般ユーザーでログインしてから必要に応じて `sudo` を使用するのが標準的な運用方法です。
結論として、管理者権限が必要な場合は、可能な限り `sudo` コマンドを利用することを強く推奨します。
シェルの基本機能 (リダイレクト、パイプ)
シェルには、コマンドの標準入力、標準出力、標準エラー出力を柔軟に制御する強力な機能があります。
- リダイレクト: コマンドの標準出力(`>`,`>>`)や標準入力(`<`)、標準エラー出力(`2>`)をファイルに切り替えたり、ファイルから読み込んだりします。例えば、標準出力と標準エラー出力の両方を同じファイルに保存するには `command > file 2>&1` のように記述します。
- パイプ (
|
): あるコマンドの標準出力を、次のコマンドの標準入力に直接接続します。これにより、複数のコマンドを連携させて複雑な処理を実現できます。
ls -l /usr/bin > bin_list.txt # /usr/binの内容一覧をファイルに上書き保存
date >> system_log.txt # 現在日時をファイルに追記
sort < names.txt # names.txtの内容をソートして表示
grep 'ERROR' system.log | wc -l # system.logから'ERROR'を含む行を抽出し、その行数をカウント
これらの機能の詳細は、「Linux基本コマンドとその活用法 - シェルの強力な機能」セクションを参照してください。
rootユーザー(スーパーユーザー)のパスワード設定について
Ubuntuでは、セキュリティ上の理由からデフォルトではrootアカウントは無効化されており、パスワードも設定されていません。管理者権限が必要な操作は`sudo`コマンドを使用することが強く推奨されます。通常、rootアカウントのパスワードを設定する必要はありません。
もし特別な理由でrootアカウントを有効化しパスワードを設定する必要が生じた場合は、`sudo passwd root` コマンドを使用しますが、その必要性とリスクを十分に理解した上で慎重に行う必要があります。日常的な管理作業のほとんどは`sudo`コマンドで実行可能であり、rootアカウントを直接利用する場面は非常に限定的です。
⚠️注意:rootアカウントはシステム全体に対する強力な権限を持つため、パスワードの設定・管理は非常に慎重に行う必要があります。設定したパスワードは絶対に忘れず、安全に管理してください。可能な限り `sudo` を利用することを強く推奨します。
ヒアドキュメント(here document)
シェルスクリプト内で、複数行にわたる文字列をコマンドの標準入力として直接埋め込むための機能です (`<< 区切り文字`)。設定ファイルの動的な生成や、複数行のメッセージを表示する際などに便利です。
#!/bin/bash
cat > /tmp/message.txt << END_OF_MESSAGE
これは1行目です。
これは2行目です。
特殊文字 $ や ` もそのまま扱われます(区切り文字をクォートしない場合)。
END_OF_MESSAGE
Linux のシェルでのリソース制限 (ulimit)
`ulimit` コマンドは、現在のシェルおよびそこから起動されるプロセスが使用できるシステムリソース(開けるファイル数、プロセス数、使用メモリサイズなど)の上限を確認・設定するために使用します。大規模な計算処理や多数のクライアントを処理するサーバーなどで、デフォルトの上限値が十分でない場合に調整することがありますが、システム全体の安定性に影響を与える可能性があるため注意が必要です。
ulimit -a # 現在設定されている全てのリソース制限値を表示
# ulimit -c unlimited # コアダンプファイルのサイズ制限を解除 (デバッグ時に使用)
# ulimit -n 4096 # 同時に開けるファイルディスクリプタ数の上限を引き上げ (サーバー等で必要になる場合)
3. 環境変数とパスを通す
環境変数
環境変数は、OSやシェルが動作中のプロセスに提供する、設定情報や動作環境を定義する名前付きの変数です(例: `HOME`はユーザーのホームディレクトリ、`LANG`は言語設定、`PATH`はコマンド検索パス)。`export 変数名=値` という形式で設定すると、そのシェルから起動される子プロセスにもその変数が引き継がれます。`printenv` コマンドで全ての環境変数を、`echo $変数名` で特定の環境変数の値を表示できます。
echo $HOME # ホームディレクトリのパスを表示
export MY_SETTING="my_value" # MY_SETTINGという環境変数を設定し、子プロセスへ引き継ぐ
printenv | grep MY # 設定した環境変数 MY_SETTING を確認
パスを通す
`PATH` 環境変数は、ユーザーがコマンド名のみを入力した際に、シェルがその実行ファイルを探しに行くディレクトリのリストをコロン(`:`)区切りで指定します。自分でインストールしたプログラムやスクリプトを、どのディレクトリからでもコマンド名だけで実行できるようにしたい場合、そのプログラムが置かれているディレクトリを `PATH` 環境変数に追加します。これを一般的に「パスを通す」と言います。通常、この設定はシェルの設定ファイル(bashの場合は `~/.bashrc` や `~/.profile` など)に以下のように追記して行います。
# ~/.bashrc などに追記する例 (ユーザー個人の設定)
# $HOME/myapps/bin ディレクトリを既存のPATHの先頭に追加
export PATH="$HOME/myapps/bin:$PATH"
設定ファイルを変更した後は、`source ~/.bashrc` コマンドを実行して変更を現在のシェルに反映させるか、新しい端末を開くと設定が有効になります。
4. データファイル (CSV)
CSV (Comma Separated Values)
CSVは、データをカンマ(`,`)で区切って列を表し、改行で区切って行を表すテキストファイル形式です。表形式のデータを保存したり、異なるアプリケーション間でデータを交換したりする際に広く利用されます。フィールド(データ項目)内にカンマ(`,`)や改行、ダブルクオート(`"`)が含まれる場合は、そのフィールド全体をダブルクオート(`"`)で囲むのが一般的です。ダブルクオート文字自体をフィールド内で表現したい場合は、ダブルクオート二つ (`""`) に置き換えます。
例:
ID,Name,"Address",PhoneNumber
1,"Yamada, Taro","Tokyo, Japan",090-1234-5678
2,"Sato, Hanako","Osaka ""Big"" City",
5. 基本的なLinuxコマンドとリファレンス
Ubuntu (Linux) の操作で日常的によく使われる基本的なコマンドを紹介します。各コマンドには多くのオプションがあり、これらを組み合わせることで様々な操作が可能です。
- ファイル・ディレクトリ操作:
ls, cd, pwd, cp, mv, rm, mkdir, rmdir, touch
(一覧表示, ディレクトリ移動, 現在地表示, コピー, 移動/名前変更, 削除, ディレクトリ作成, 空ディレクトリ削除, タイムスタンプ更新/空ファイル作成) - ファイル内容表示:
cat, less, head, tail
(連結/全表示, ページャ表示, 先頭表示, 末尾表示) - 検索:
find, grep, which
(ファイル検索, テキスト検索, コマンド位置検索) - プロセス管理:
ps, top, htop, kill, pkill, jobs, fg, bg
(プロセス一覧, リアルタイムプロセス表示, 高機能プロセス表示, プロセス終了, 名前でプロセス終了, ジョブ一覧, フォアグラウンド化, バックグラウンド化) - システム情報・管理:
df, du, free, uname, lsb_release, uptime, sudo, passwd, shutdown, reboot
(ディスク空き容量, ディスク使用量, メモリ状況, システム情報, ディストリビューション情報, 稼働時間, 管理者権限実行, パスワード変更, シャットダウン, 再起動) - パッケージ管理 (apt):
apt update, apt upgrade, apt full-upgrade, apt install, apt remove, apt purge, apt search, apt show, apt autoremove, apt clean, apt autoclean
apt update
: 利用可能なパッケージのリストを最新の情報に更新します。apt upgrade
: インストール済みのパッケージを新しいバージョンに更新します(依存関係の変更を伴うパッケージの新規インストールや削除は行いません)。apt full-upgrade
: インストール済みのパッケージを更新し、依存関係の解決に必要なパッケージの新規インストールや削除も行います。システム全体を最新の状態に保つために推奨されます。(apt dist-upgrade
も同様の動作をします)。apt install <パッケージ名>
: 指定したパッケージをインストールします。apt remove <パッケージ名>
: 指定したパッケージを削除します(ただし、設定ファイルは残ることがあります)。apt purge <パッケージ名>
: 指定したパッケージと、それに関連する設定ファイルも完全に削除します。apt autoremove
: 他のパッケージの依存関係として自動的にインストールされたものの、現在は不要になったパッケージを削除します。apt search <キーワード>
: パッケージ名や説明文にキーワードを含むパッケージを検索します。apt show <パッケージ名>
: 指定したパッケージの詳細情報(バージョン、依存関係など)を表示します。apt clean
: ダウンロードされたパッケージファイル(.debファイル)のキャッシュ (`/var/cache/apt/archives/`) を全て削除します。ディスク容量を節約できますが、再インストール時には再ダウンロードが必要になります。apt autoclean
: ダウンロードされたパッケージファイルのキャッシュのうち、古くてもうリポジトリに存在しないバージョンのものだけを削除します。`clean` よりも安全なキャッシュ削除方法です。
- ネットワーク (推奨):
ip addr, ip link, ip route, ip neigh, ss, ping, host, dig, curl, wget, ssh, sftp, scp
(IPアドレス/インターフェース表示, ネットワークデバイス表示, ルーティングテーブル表示, ARPキャッシュ表示, ソケット情報表示, 疎通確認, 名前解決, DNS情報取得, HTTP/FTP等通信, ファイルダウンロード, リモートログイン, 対話的ファイル転送, ファイルコピー) - アーカイブ・圧縮:
tar, gzip, gunzip, zip, unzip
(アーカイブ作成/展開, 圧縮, 伸長, zip圧縮, zip伸長)
これらのコマンドの詳細な使い方やオプションについては、コマンド名の後に `--help` を付けて実行するか、`man <コマンド名>` コマンドでマニュアル(manページ)を参照してください。
また、より包括的なLinuxコマンドのリファレンスや活用法については、以下のページも参照してください。
6. リモート接続とプロセス継続
SSH (Secure Shell)
SSHは、ネットワーク越しに他のコンピューターに安全にログインしたり、コマンドを実行したり、ファイルを転送したりするための暗号化された通信プロトコルおよび、それを利用するコマンド群の総称です。Linux環境でのリモート操作における標準的な手段となっています。
ssh username@hostname_or_ip # リモートホストに指定ユーザーで接続 (パスワード認証の場合)
ssh -i ~/.ssh/id_rsa user@host # 指定した秘密鍵ファイルを使って鍵認証で接続 (推奨)
ssh user@host 'uptime' # リモートホストで'uptime'コマンドを実行し、結果を表示
SSH の公開鍵認証
パスワード認証の代わりに、事前に生成・登録しておいた一対の鍵(秘密鍵と公開鍵)を用いてSSH認証を行う、より安全で便利な方法です。パスワード入力が不要になるため、スクリプトによる自動化にも適しています。
- 接続元(クライアント)のマシンで `ssh-keygen` コマンドを実行し、鍵ペア(秘密鍵 `~/.ssh/id_rsa` と公開鍵 `~/.ssh/id_rsa.pub` など)を作成します。
- 作成した公開鍵 (`~/.ssh/id_rsa.pub` ファイルの中身) を、接続先(サーバー)のマシンの `~/.ssh/authorized_keys` ファイルに追記します。この作業は `ssh-copy-id user@host` コマンドを使うと簡単に行えます。
- 接続元から秘密鍵を使って接続します (`ssh user@host` や `ssh -i ~/.ssh/id_rsa user@host` など)。
重要: 秘密鍵ファイル (`~/.ssh/id_rsa` など) は、所有者以外には読み書きできないように、パーミッションを厳格に設定する必要があります (`chmod 600 ~/.ssh/id_rsa`)。秘密鍵が漏洩すると、不正アクセスの原因となります。
Ubuntuでの具体的な設定手順は、別ページ »で説明しています。
SFTP / SCP
SSHプロトコルを利用して、安全にファイルを転送するためのコマンドです。
sftp
: SSH接続上で動作する、対話的なファイル転送クライアントです。接続後に `put` (アップロード), `get` (ダウンロード), `ls` (リモート一覧), `cd` (リモートディレクトリ移動) などのコマンドを使ってファイルを操作します。FTPに似た操作感です。scp
: SSH接続上で動作する、非対話的なファイルコピーコマンドです。ローカルの `cp` コマンドと似た書式で、ローカルとリモート間、またはリモートホスト間でファイルをコピーできます。
# SFTP接続
sftp user@host
# (sftpプロンプトが表示された後)
# sftp> put localfile.txt /remote/path/to/destination
# sftp> get /remote/path/remotefile.txt local_destination
# SCPでローカルファイルをリモートへコピー
scp myfile.txt user@host:/home/user/documents/
# SCPでリモートファイルをローカルへコピー (カレントディレクトリにコピー)
scp user@host:/var/log/syslog .
これらのコマンドの詳細は、「Linux基本コマンドとその活用法 - ネットワーク操作」セクションも参照してください。
リモート接続が切れてもプロセスを実行し続ける (nohup, disown)
SSHでリモートサーバーに接続し、時間のかかる処理(バッチ処理や計算など)を開始した後、SSH接続を切断してもその処理を継続させたい場合があります。そのような場合に以下の方法が利用できます。
nohup コマンド &
: コマンドをバックグラウンドで実行 (`&`) し、さらに `nohup` コマンドでラップすることで、SSHセッションが切断されたときに送られる SIGHUP (ハングアップ) シグナルを無視させます。標準出力と標準エラー出力は、デフォルトではカレントディレクトリの `nohup.out` というファイルにリダイレクトされます。Ctrl+Z
→bg %ジョブ番号
→disown %ジョブ番号
:- 実行中のプロセスを `Ctrl+Z` で一時停止させます。
- `jobs` コマンドでジョブ番号を確認し、`bg %ジョブ番号` でバックグラウンド実行を再開させます。
- `disown %ジョブ番号` で、そのジョブをシェルの管理下から切り離します。これにより、シェルを終了してもプロセスは実行され続けます。
# nohupを使ってスクリプトを実行し、出力を指定ファイルに保存
nohup ./my_heavy_process.sh input.data > process.log 2>&1 &
(より高度なセッション管理や複数ターミナル機能が必要な場合は、`screen` や `tmux` といったターミナルマルチプレクサの使用も検討すると良いでしょう)
指定時刻にコマンドを実行 (at コマンド)
`at` コマンドを使用すると、指定した時刻に一度だけコマンドやスクリプトを実行するように予約できます。例えば、深夜にバッチ処理を実行させたい場合などに利用します。使用するには `at` パッケージのインストールと、`atd` サービスの起動が必要です。
# atパッケージのインストールとatdサービスの有効化・起動
sudo apt update && sudo apt install at
sudo systemctl enable --now atd
# 実行予約の例 (現在時刻から5分後にスクリプトを実行)
at now + 5 minutes
# atプロンプトが表示されるので、実行したいコマンドを入力し、Ctrl+Dで入力を完了する
at> /home/user/myscript.sh
at>
# 予約されているジョブの一覧表示
atq
# 予約したジョブの削除 (例: ジョブ番号が 3 の場合)
atrm 3
7. プログラミング言語Pythonとツール
UbuntuはPythonを用いた開発に適した環境を提供しています。
Python の機能や各種ライブラリに関するより詳細な情報は、別ページ にまとめています。
Ubuntu のシステム Python
Ubuntuには、OS自身の機能やシステムツールが利用するためにプリインストールされているPythonがあります(例: Ubuntu 24.04 LTSではPython 3.12)。この「システムPython」の環境にユーザーが直接パッケージを追加したり変更したりすると、システムの動作に予期せぬ悪影響を与える可能性があります。そのため、アプリケーション開発やデータ分析などの目的でPythonを使用する場合は、後述する仮想環境(venv)を作成し、その中で作業することを推奨します。
システムPythonの詳細は 別ページ »で説明しています。
Python, pip, 開発環境
UbuntuでPython開発を始めるための基本的なツールです。
- Pythonインタプリタ: `python3` コマンドで対話的に実行したり、Pythonスクリプトファイルを実行したりします。
- pip: Pythonのパッケージインストーラーです。通常、`python3-pip` パッケージを `sudo apt install python3-pip` でインストールしてから利用します。ただし、システムPythonに対して直接`pip install`することは避け、仮想環境内で `python3 -m pip install
` のように使用するのが基本です。 - 基本的な開発環境: Pythonインタプリタとpipがあれば最低限の開発は可能ですが、効率的な開発のためには、仮想環境管理(venv)、バージョン管理システム(Git)、高機能なエディタやIDEを導入することが一般的です。
詳細は 別ページ »で説明しています。
複数の Python バージョンの管理 (pyenv)
プロジェクトによっては、システムにインストールされているPythonとは異なるバージョンを使用したい場合があります。`pyenv` というツールを使うと、複数のPythonバージョンを簡単にインストールし、プロジェクトごとやユーザーごとに使用するPythonバージョンを切り替えることができます。`pyenv` はシステムPythonには影響を与えずに独立してバージョンを管理します。
Ubuntu で `pyenv` を使って Python をインストール・管理する方法については,別ページ で説明しています。
venv (Python 仮想環境) - 推奨
`venv` は、Python 3.3以降に標準で組み込まれている、プロジェクトごとに独立したPython実行環境(仮想環境)を作成・管理するためのモジュールです。仮想環境を利用することで、プロジェクトごとに必要なライブラリとそのバージョンを、システムのPython環境や他のプロジェクトから完全に隔離して管理できます。これにより、ライブラリの依存関係の衝突を防ぎ、環境の再現性を高めることができます。Python開発においては、仮想環境を利用することを検討してください。
基本的な使い方は以下の通りです。
# 仮想環境の作成 (例: プロジェクトディレクトリ内に 'myenv' という名前で作成)
python3 -m venv myenv
# 仮想環境のアクティベート (有効化) - これ以降、pipやpythonコマンドはこの環境内のものを使う
source myenv/bin/activate
# (コマンドプロンプトの先頭に (myenv) のような表示が追加される)
# (仮想環境が有効な状態で) 必要なパッケージのインストール
pip install requests numpy pandas
# (仮想環境が有効な状態で) Pythonスクリプトの実行
python my_script.py
# 仮想環境のディアクティベート (無効化) - 元のシェル環境に戻る
deactivate
venv の詳細な使い方については,別ページ »で説明しています。
pyenv (Python バージョン管理ツール)
前述の通り、システムに複数のPythonバージョンを共存させ、簡単に切り替えるためのツールです。`pyenv` と `venv` を組み合わせて使うことで、「特定のPythonバージョン」を持ち、かつ「ライブラリ群が独立した」開発環境をプロジェクトごとに構築できます。詳細は 別ページ で説明しています。
pip (Python パッケージインストーラ)
PyPI (Python Package Index) という公的なリポジトリから、サードパーティ製のPythonライブラリやツールをインストールするための標準的なコマンドラインツールです。**通常は、アクティベートされた仮想環境内で使用します。** 使い方については 別ページ »で説明しています。
# (仮想環境をアクティベートした後)
# 特定のパッケージをインストール
pip install
# requirements.txtファイルに記載されたパッケージをまとめてインストール
pip install -r requirements.txt
# 現在の環境にインストールされているパッケージ一覧を表示
pip list
# 現在の環境のパッケージとそのバージョン一覧を requirements.txt 形式で出力
pip freeze > requirements.txt
Jupyter Notebook / JupyterLab
Webブラウザ上で、コードの記述・実行、テキストによる説明、数式、グラフや画像の表示などを組み合わせて「ノートブック」と呼ばれるドキュメントを作成・共有できる、インタラクティブな開発・分析環境です。データ分析、機械学習、教育、プロトタイピングなど、幅広い分野で利用されています。`JupyterLab` は Jupyter Notebook の次世代インターフェースで、より多機能で柔軟なレイアウトを提供します。
# (仮想環境内で) インストール
pip install notebook # Jupyter Notebook をインストールする場合
pip install jupyterlab # JupyterLab をインストールする場合
# 起動 (Webブラウザが自動的に開く)
jupyter notebook
jupyter lab
詳細は Jupyter Notebook / JupyterLab のページで説明しています。
Python IDE (統合開発環境)
Pythonプログラミングを効率的に行うために、コードエディタ、実行・デバッグ機能、プロジェクト管理、バージョン管理システム連携など、多くの機能を統合したソフトウェアです。
- Spyder: 主に科学技術計算やデータ分析向けに設計されたIDEです。変数エクスプローラーやIPythonコンソールなどが統合されています。Anacondaディストリビューションに同梱されていることで知られています。詳細は 別ページ »。
- PyCharm: JetBrains社が開発する高機能なPython IDEです。コード補完、デバッグ、テスト、リファクタリングなどの機能が強力です。無料のCommunity版と、Web開発機能などが追加された有料のProfessional版があります。詳細は 別ページ。
- Visual Studio Code (VS Code): Microsoftが開発する軽量ながら高機能なコードエディタです。豊富な拡張機能をインストールすることで、強力なPython開発環境を構築できます。デバッグ、Git連携、リモート開発などの機能も充実しています。詳細は 別ページ。
Anaconda Distribution
Python本体に加え、データサイエンスや機械学習でよく使われる多数のパッケージ(NumPy, Pandas, Matplotlib, Scikit-learnなど)や、独自の環境管理・パッケージ管理ツール `conda` を含んだディストリビューションです。環境構築の手間を省けるメリットがありますが、システム標準の `pip` や `venv` とは異なる `conda` という仕組みでパッケージや環境を管理するため、使い方を理解し、必要に応じて使い分ける必要があります。詳細は 別ページ で説明しています。
Google Colaboratory (Colab)
Googleが提供する、Webブラウザ上で利用できる無料のクラウドベースPython実行環境です。Jupyter Notebookと同様のインターフェースを持ち、Google Driveと連携してノートブックを保存・共有できます。GPUやTPUといったハードウェアアクセラレータも無料枠で利用できるため、特に機械学習の学習や実験に便利です。基盤OSはUbuntuですが、提供される環境は一時的なものであり、セッションが終了するとインストールしたライブラリや作成したファイルは基本的に消去されます(Google Driveに保存したものを除く)。詳細は別ページ 及び「Linux基本コマンドとその活用法 - Google ColaboratoryでのLinux活用」を参照してください。
8. プログラミング用ツール類 (Git, CMake, GDB)
バージョン管理システム Git
Gitは、ソースコードやドキュメントなどの変更履歴を記録・管理するための分散型バージョン管理システムです。ファイルの変更内容、変更日時、変更者を記録し、過去の状態に戻したり、変更点を比較したりすることが容易になります。特に複数人での共同開発においては、コードの統合や競合の解決を効率的に行うために不可欠なツールとなっています。
Ubuntu での Git のインストール
sudo apt update
sudo apt install git
基本的な使い方
既存のリポジトリ(プロジェクト)をローカルにコピー(クローン)することから始めることが多いです。
# GitHubなどにあるリモートリポジトリをローカルに複製する
git clone https://github.com/username/repository.git
# クローンすると 'repository' というディレクトリが作成されるので移動する
cd repository
# ファイルの状態確認、変更のステージング、コミット(履歴記録)、リモートとの同期などを行う
# git status, git add , git commit -m "変更内容の説明", git pull, git push など
Gitの基本的なワークフローや主要なコマンドの詳細については、「Linux基本コマンドとその活用法 - バージョン管理システム Git」セクションを参照してください。
【サイト内の関連ページ】 Windows での Git のインストール: 別ページ »
【関連する外部ページ】 Git の公式ページ: https://git-scm.com/
ビルドツール CMake
CMakeは、C言語やC++などのコンパイルが必要なソフトウェアプロジェクトにおいて、ビルドプロセス(ソースコードから実行可能ファイルやライブラリを生成する手順)を管理・自動化するためのクロスプラットフォーム対応ツールです。`CMakeLists.txt` という設定ファイルに、プロジェクトの構成、依存ライブラリ、コンパイルオプションなどを記述すると、CMakeがそれを解釈し、使用している環境(Linux, Windows, macOSなど)やビルドシステム(Make, Ninja, Visual Studioなど)に応じたビルドファイル(MakefileやNinjaファイル、Visual Studioのプロジェクトファイルなど)を自動生成します。
Ubuntu での CMake のインストール
sudo apt update
# 本体と、設定を対話的に行うためのGUI/CUIツールも一緒にインストールする
sudo apt install cmake cmake-curses-gui cmake-gui
基本的な使い方
ソースコードが置かれているディレクトリとは別に、ビルド専用のディレクトリを作成して作業するのが一般的です(アウトオブソースビルド)。
# ソースコードのあるディレクトリに移動
cd my_project_source
# ビルド用ディレクトリを作成して、そこに移動
mkdir build && cd build
# 親ディレクトリにある CMakeLists.txt を読み込んでビルド設定を生成 (デフォルトはMakefile)
cmake ..
# 生成されたMakefileを使ってビルドを実行
make
# または、Ninja をビルドシステムとして使いたい場合
# cmake -G Ninja .. # Ninja用のビルドファイルを生成
# ninja # Ninjaを使ってビルドを実行
Ninja ビルドシステム
Ninjaは、特に大規模なプロジェクトにおいて、ビルド速度を高速化することを目指して設計されたビルドシステムです。Makeよりも依存関係のチェックなどが高速であるとされています。CMakeなどのビルドジェネレータと組み合わせて使用されることが多く、CMakeで `-G Ninja` オプションを指定することでNinja用のビルドファイルが生成されます。
# Ninjaのインストール
sudo apt update
sudo apt install ninja-build
デバッガ gdb (GNU Debugger)
GDBは、C言語、C++、Ada、Go、Fortranなどのプログラムの実行を制御し、バグ(不具合)の原因を発見・修正する(デバッグ)ための強力なコマンドラインツールです。プログラムの特定の箇所(ブレークポイント)で実行を一時停止させたり、一行ずつ実行(ステップ実行)したり、変数の現在の値を確認したり、メモリの内容を調べたりすることができます。
# デバッグ情報を付加してプログラムをコンパイルする (-g オプション)
gcc -g my_program.c -o my_program
# GDBを起動し、実行ファイルを指定する
gdb ./my_program
# --- GDBのプロンプト ((gdb) ) での操作例 ---
# プログラムの実行を開始
(gdb) run
# main関数で実行を停止するようにブレークポイントを設定
(gdb) break main
# 次の行まで実行 (関数呼び出しは飛ばす - ステップオーバー)
(gdb) next
# 次の行まで実行 (関数呼び出しがあればその中に入る - ステップイン)
(gdb) step
# 変数 'var' の現在の値を表示
(gdb) print var
# 次のブレークポイントまで、またはプログラム終了まで実行を継続
(gdb) continue
# GDBを終了する
(gdb) quit
デバッグの基本操作
デバッガを用いたデバッグの基本的な流れは、まず問題が発生しそうな箇所や確認したい処理の開始点にブレークポイントを設定します。次にプログラムを実行し、ブレークポイントで停止したら、ステップ実行(`next`や`step`)でコードの動きを一行ずつ追いながら、`print` コマンドなどで変数の値が期待通りに変化しているかを確認します。これを繰り返すことで、プログラムのどこで意図しない動作が発生しているのか(バグの原因)を特定していきます。多くのIDE(統合開発環境)には、GDBなどのデバッガをグラフィカルなインターフェースで操作できる機能が組み込まれており、より直感的にデバッグ作業を行えます。
9. プログラミング言語Java
OpenJDK (Java Development Kit) のインストールと Java プログラムの実行
Javaプログラムを開発(コンパイル)および実行するためには、JDK (Java Development Kit) が必要です。OpenJDKは、Java SE (Standard Edition) プラットフォームのオープンソース実装であり、Ubuntuでは `apt` コマンドを使って簡単にインストールできます。
# 推奨されるLTS(長期サポート)バージョンの一つである OpenJDK 17 をインストールする場合
sudo apt update
sudo apt install openjdk-17-jdk
# インストールされたJavaのバージョンを確認
java -version
# Javaコンパイラのバージョンを確認
javac -version
Ubuntu 24.04 LTSでは、より新しいLTSバージョンである OpenJDK 21 (`openjdk-21-jdk`) も利用可能です。必要に応じてバージョンを選択してください。
【Javaプログラムのコンパイルと実行】
例として、`HelloWorld.java` という名前で以下の内容のファイルを作成したとします。
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Ubuntu!");
}
}
このJavaプログラムをコンパイルし、実行するには、端末で以下のコマンドを入力します。
# Javaソースファイルをコンパイルする (成功すると HelloWorld.class ファイルが生成される)
javac HelloWorld.java
# コンパイルされたクラスファイルを実行する (クラス名を指定、.classは不要)
java HelloWorld
OpenJDKのインストールに関する詳細は 別のページ »で説明しています。
10. オペレーティングシステムの運用保守 (更新、パッケージ管理)
Ubuntu のリリースバージョンとコードネームの確認
現在使用しているUbuntuのバージョン情報を確認するには、以下のコマンドを使用します。バージョン番号(例: 24.04, 22.04)やコードネーム(例: noble, jammy, focal)は、ソフトウェアの互換性を確認したり、リポジトリ設定を行ったりする際に参照することがあります。
# ディストリビューションの全情報を表示
lsb_release -a
# コードネームのみを表示
lsb_release -sc
Ubuntu のシステム更新
セキュリティの脆弱性修正やソフトウェアのバグ修正、機能改善のため、インストールされているパッケージを定期的に最新の状態に保つことは非常に重要です。システム更新は以下の手順で行うのが一般的です。
# 1. パッケージリストの更新 (必須: 最新のパッケージ情報を取得)
sudo apt update
# 2. システム全体の更新 (推奨: 依存関係の変更も含めて更新)
sudo apt full-upgrade # または sudo apt dist-upgrade
# 3. 不要になった依存パッケージの自動削除 (推奨: ディスク容量の節約)
sudo apt autoremove
# 4. 古いバージョンのパッケージキャッシュの削除 (任意: ディスク容量の節約)
sudo apt autoclean # 'apt clean' よりも安全な選択肢
# 5. 再起動 (推奨: カーネルや重要なシステムライブラリが更新された場合)
sudo reboot
通常は、定期的に `sudo apt update` と `sudo apt full-upgrade` を実行し、時々 `sudo apt autoremove` や `sudo apt autoclean` を実行してシステムをクリーンに保つのが良いでしょう。 `apt upgrade` は既存パッケージの更新のみを行い、依存関係の変更が必要な更新(新しいパッケージのインストールや既存パッケージの削除)は保留します。一方、`apt full-upgrade` (または `apt dist-upgrade`) は、システムの整合性を保つために必要であればパッケージのインストールや削除も伴う更新を行うため、システム全体を最新の状態に維持するには `full-upgrade` の使用が**推奨**されます。
Ubuntu のパッケージ管理 (apt, dpkg)
Ubuntuでは、ソフトウェア(パッケージ)のインストール、更新、削除といった管理作業は、主に `apt` (Advanced Package Tool) というコマンドラインツールを使用して行います。`dpkg` は、個別の `.deb` パッケージファイルを扱うための、より低水準なツールです。通常、ユーザーは `apt` コマンドを利用します。
主な `apt` コマンド:
sudo apt update
: リポジトリから利用可能なパッケージのリストを最新の情報に更新します。sudo apt upgrade
: インストール済みのパッケージを新しいバージョンに更新します(依存関係の変更を伴うパッケージの新規インストールや削除は行いません)。sudo apt full-upgrade
: インストール済みのパッケージを更新し、依存関係の解決に必要なパッケージの新規インストールや削除も行います(**推奨**)。sudo apt install <パッケージ名>
: 指定したパッケージ(およびその依存パッケージ)をインストールします。sudo apt remove <パッケージ名>
: 指定したパッケージを削除します(設定ファイルは残ることがあります)。sudo apt purge <パッケージ名>
: 指定したパッケージと、それに関連するシステム全体の設定ファイルも含めて完全に削除します。sudo apt autoremove
: 他のパッケージをインストールした際に依存関係で自動的にインストールされたものの、現在はどのパッケージからも必要とされなくなったパッケージを自動的に削除します。apt search <キーワード>
: パッケージ名や説明文に指定したキーワードを含むパッケージを検索します。apt show <パッケージ名>
: 指定したパッケージのバージョン、依存関係、説明などの詳細情報を表示します。apt list --installed
: 現在システムにインストールされている全てのパッケージの一覧を表示します。sudo apt clean
: パッケージのダウンロードキャッシュ(`/var/cache/apt/archives/` 内の `.deb` ファイル)を全て削除します。ディスク容量を大きく解放できますが、削除したパッケージを再インストールする際には再度ダウンロードが必要になります。sudo apt autoclean
: パッケージのダウンロードキャッシュのうち、古くてリポジトリから削除されたバージョンなど、不要になったものだけを削除します。`clean` よりも安全で、ディスク容量を節約するのに役立ちます。
パッケージ管理の詳細については、「Linux基本コマンドとその活用法 - パッケージ管理」セクションも参照してください。
Ubuntu での NVIDIA ドライバのインストール
NVIDIA製のグラフィックカード(GPU)を使用している場合、オープンソースのドライバ(Nouveau)の代わりに、NVIDIAが提供するプロプライエタリなドライバをインストールすることで、グラフィック性能が向上したり、CUDAなどのGPUコンピューティング機能が利用可能になったりすることがあります。Ubuntuでは、システムが検出したハードウェアに適した推奨ドライバを簡単にインストールするためのコマンドが用意されています。
# 推奨されるNVIDIAドライバを自動的に検索してインストールする
sudo ubuntu-drivers autoinstall
# (インストール完了後、変更を有効にするために再起動が必要です)
sudo reboot
# ドライバが正しく動作しているか確認する (GPUの情報が表示されればOK)
nvidia-smi
この方法で問題が発生する場合や、特定のバージョンのドライバを手動でインストールしたい場合は、別途手順が必要になります。