Ubuntuの使い方

【概要】本ページでは、Ubuntuの基本的な使い方について解説する。インストールと初期設定、シェル操作、環境変数の設定、データファイルの扱い、基本的なLinuxコマンド、リモート接続、Python開発環境、プログラミングツール、Java環境、システムの運用保守まで、Ubuntu上での作業に必要な基礎知識を体系的に提供する。

【目次】

  1. Ubuntuのインストールとセットアップ
  2. シェルの利用、管理者権限、基本機能
  3. 環境変数、パスを通す
  4. データファイル (CSV)
  5. 基本的なLinuxコマンドとリファレンス
  6. リモート接続とプロセス継続
  7. プログラミング言語Pythonとツール
  8. プログラミング用ツール類 (Git、CMake、GDB)
  9. プログラミング言語Java
  10. オペレーティングシステムの運用保守 (更新、パッケージ管理)

【関連する外部ページ】

Ubuntuの各種情報について

【サイト内の関連ページ】

Ubuntu関連

WSL2関連

1. Ubuntuのインストールとセットアップ

Ubuntuのインストール

Ubuntuの最新LTS(長期サポート)リリースは、2024年4月にリリースされた24.04 (Noble Numbat)である。22.04 LTSも引き続きサポートされている。Ubuntu公式サイトや日本語RemixのページからISOイメージを入手し、インストーラを起動する。指示に従い、言語、キーボードレイアウト、インストールの種類(ディスク全体を使用するか、手動パーティション設定など)を選択し、タイムゾーン、ユーザー情報を設定してインストールを進める。

注意: 「ディスクを削除してUbuntuをインストール」を選択すると、ディスクの内容はすべて消去される。Windowsとのデュアルブートなど、既存のOSを残したい場合は、手動でのパーティション設定など、別の手順が必要である。

【サイト内の関連ページ】

【関連する外部ページ】

Ubuntuのインストール直後の設定

Ubuntuインストール直後に行うことが推奨される主な設定項目を以下に示す。詳細は別ページで説明している。

【サイト内の関連ページ】

Ubuntuのシステム更新について

ソフトウェアの脆弱性修正や機能改善のため、システムの更新は定期的に行うことが重要である。更新手順の詳細はセクション10を参照されたい。

Ubuntuセットアップ全般

2. シェルの利用、管理者権限、基本機能

端末

端末(ターミナル)は、コマンドを入力してコンピューターを操作するための基本的なインターフェースである。Ubuntu Desktopでは標準で「GNOME Terminal」が利用できる。端末を開くと、シェル(通常はbash)が起動し、コマンド入力待ちの状態(プロンプト)が表示される。

GNOME Terminalのスクリーンショット

bashシェル

bash (Bourne Again SHell)は、Linuxで標準的に使われているシェルである。コマンド履歴の呼び出し、Tabキーによる入力補完、リダイレクトやパイプによる入出力制御、シェルスクリプトによる定型作業の自動化など、多くの機能を提供する。

管理者権限での実行 (su、sudo)

システムの安全性を保つため、日常的な作業は一般ユーザー権限で行うことが推奨される。システム設定の変更やソフトウェアのインストールなど、管理者(root)権限が必要な操作を行うには、sudoコマンドを使用する。

管理者権限が必要な場合は、可能な限りsudoコマンドを利用することを推奨する。

シェルの基本機能 (リダイレクト、パイプ)

シェルには、コマンドの標準入力、標準出力、標準エラー出力を柔軟に制御する機能がある。

ls -l /usr/bin > bin_list.txt
date >> system_log.txt
sort < names.txt
grep 'ERROR' system.log | wc -l

これらの機能の詳細は、「Linux基本コマンドとその活用法 - シェルの強力な機能」セクションを参照されたい。

rootユーザー(スーパーユーザー)のパスワード設定について

Ubuntuでは、セキュリティ上の理由からデフォルトではrootアカウントは無効化されており、パスワードも設定されていない。管理者権限が必要な操作はsudoコマンドを使用することが推奨される。通常、rootアカウントのパスワードを設定する必要はない。

もし特別な理由でrootアカウントを有効化しパスワードを設定する必要が生じた場合は、sudo passwd rootコマンドを使用するが、その必要性とリスクを十分に理解した上で慎重に行う必要がある。日常的な管理作業のほとんどはsudoコマンドで実行可能であり、rootアカウントを直接利用する場面は限定的である。

ヒアドキュメント(here document)

シェルスクリプト内で、複数行にわたる文字列をコマンドの標準入力として直接埋め込むための機能である(<< 区切り文字)。設定ファイルの動的な生成や、複数行のメッセージを表示する際などに便利である。

#!/bin/bash
cat > /tmp/message.txt << END_OF_MESSAGE
これは1行目である。
これは2行目である。
特殊文字$や`もそのまま扱われる(区切り文字をクォートしない場合)。
END_OF_MESSAGE

Linuxのシェルでのリソース制限 (ulimit)

ulimitコマンドは、現在のシェルおよびそこから起動されるプロセスが使用できるシステムリソース(開けるファイル数、プロセス数、使用メモリサイズなど)の上限を確認・設定するために使用する。

ulimit -a

3. 環境変数とパスを通す

環境変数

環境変数は、OSやシェルが動作中のプロセスに提供する、設定情報や動作環境を定義する名前付きの変数である(例: HOMEはユーザーのホームディレクトリ、LANGは言語設定、PATHはコマンド検索パス)。export 変数名=値という形式で設定すると、そのシェルから起動される子プロセスにもその変数が引き継がれる。printenvコマンドで全ての環境変数を、echo $変数名で特定の環境変数の値を表示できる。

echo $HOME
export MY_SETTING="my_value"
printenv | grep MY

パスを通す

PATH環境変数は、ユーザーがコマンド名のみを入力した際に、シェルがその実行ファイルを探しに行くディレクトリのリストをコロン(:)区切りで指定する。自分でインストールしたプログラムやスクリプトを、どのディレクトリからでもコマンド名だけで実行できるようにしたい場合、そのプログラムが置かれているディレクトリをPATH環境変数に追加する。これを一般的に「パスを通す」と言う。通常、この設定はシェルの設定ファイル(bashの場合は~/.bashrc~/.profileなど)に以下のように追記して行う。

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)の操作で日常的によく使われる基本的なコマンドを紹介する。各コマンドには多くのオプションがあり、これらを組み合わせることで様々な操作が可能である。

これらのコマンドの詳細な使い方やオプションについては、コマンド名の後に--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'

SSHの公開鍵認証

パスワード認証の代わりに、事前に生成・登録しておいた一対の鍵(秘密鍵と公開鍵)を用いてSSH認証を行う方法である。パスワード入力が不要になるため、スクリプトによる自動化にも適している。

  1. 接続元(クライアント)のマシンでssh-keygenコマンドを実行し、鍵ペア(秘密鍵~/.ssh/id_rsaと公開鍵~/.ssh/id_rsa.pubなど)を作成する
  2. 作成した公開鍵(~/.ssh/id_rsa.pubファイルの中身)を、接続先(サーバー)のマシンの~/.ssh/authorized_keysファイルに追記する。この作業はssh-copy-id user@hostコマンドを使うと簡単に行える
  3. 接続元から秘密鍵を使って接続する(ssh user@hostssh -i ~/.ssh/id_rsa user@hostなど)

重要: 秘密鍵ファイル(~/.ssh/id_rsaなど)は、所有者以外には読み書きできないように、パーミッションを厳格に設定する必要がある(chmod 600 ~/.ssh/id_rsa)。秘密鍵が漏洩すると、不正アクセスの原因となる。

Ubuntuでの具体的な設定手順は、別ページ »で説明している。

SFTP / SCP

SSHプロトコルを利用して、安全にファイルを転送するためのコマンドである。

sftp user@host

scp myfile.txt user@host:/home/user/documents/
scp user@host:/var/log/syslog .

これらのコマンドの詳細は、「Linux基本コマンドとその活用法 - ネットワーク操作」セクションも参照されたい。

リモート接続が切れてもプロセスを実行し続ける (nohup、disown)

SSHでリモートサーバーに接続し、時間のかかる処理(バッチ処理や計算など)を開始した後、SSH接続を切断してもその処理を継続させたい場合がある。そのような場合に以下の方法が利用できる。

nohup ./my_heavy_process.sh input.data > process.log 2>&1 &

指定時刻にコマンドを実行 (atコマンド)

atコマンドを使用すると、指定した時刻に一度だけコマンドやスクリプトを実行するように予約できる。使用するにはatパッケージのインストールと、atdサービスの起動が必要である。

sudo apt update && sudo apt install at
sudo systemctl enable --now atd

at now + 5 minutes

atq
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バージョンの管理 (pyenv)

プロジェクトによっては、システムにインストールされているPythonとは異なるバージョンを使用したい場合がある。pyenvというツールを使うと、複数のPythonバージョンを簡単にインストールし、プロジェクトごとやユーザーごとに使用するPythonバージョンを切り替えることができる。pyenvはシステムPythonには影響を与えずに独立してバージョンを管理する。

Ubuntuでpyenvを使ってPythonをインストール・管理する方法については、別ページで説明している。

venv (Python仮想環境)

venvは、Python 3.3以降に標準で組み込まれている、プロジェクトごとに独立したPython実行環境(仮想環境)を作成・管理するためのモジュールである。仮想環境を利用することで、プロジェクトごとに必要なライブラリとそのバージョンを、システムのPython環境や他のプロジェクトから完全に隔離して管理できる。これにより、ライブラリの依存関係の衝突を防ぎ、環境の再現性を高めることができる。

基本的な使い方は以下の通りである。

python3 -m venv myenv

source myenv/bin/activate

pip install requests numpy pandas

python my_script.py

deactivate

venvの詳細な使い方については、別ページ »で説明している。

pip (Pythonパッケージインストーラ)

PyPI (Python Package Index)という公的なリポジトリから、サードパーティ製のPythonライブラリやツールをインストールするための標準的なコマンドラインツールである。通常は、アクティベートされた仮想環境内で使用する。使い方については別ページ »で説明している。

pip install <package_name>
pip install -r requirements.txt
pip list
pip freeze > requirements.txt

Jupyter Notebook / JupyterLab

Webブラウザ上で、コードの記述・実行、テキストによる説明、数式、グラフや画像の表示などを組み合わせて「ノートブック」と呼ばれるドキュメントを作成・共有できる、インタラクティブな開発・分析環境である。データ分析、機械学習、教育、プロトタイピングなど、幅広い分野で利用されている。JupyterLabはJupyter Notebookの次世代インターフェースで、より多機能で柔軟なレイアウトを提供する。

pip install notebook
pip install jupyterlab

jupyter notebook
jupyter lab

詳細はJupyter Notebook / JupyterLabのページで説明している。

Python IDE (統合開発環境)

Pythonプログラミングを効率的に行うために、コードエディタ、実行・デバッグ機能、プロジェクト管理、バージョン管理システム連携など、多くの機能を統合したソフトウェアである。

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

基本的な使い方

既存のリポジトリ(プロジェクト)をローカルにコピー(クローン)することから始めることが多い。

git clone https://github.com/username/repository.git
cd repository

Gitの基本的なワークフローや主要なコマンドの詳細については、「Linux基本コマンドとその活用法 - バージョン管理システムGit」セクションを参照されたい。

【サイト内の関連ページ】WindowsでのGitのインストール: 別ページ »

【関連する外部ページ】Gitの公式ページ: https://git-scm.com/

ビルドツールCMake

CMakeは、C言語やC++などのコンパイルが必要なソフトウェアプロジェクトにおいて、ビルドプロセス(ソースコードから実行可能ファイルやライブラリを生成する手順)を管理・自動化するためのクロスプラットフォーム対応ツールである。CMakeLists.txtという設定ファイルに、プロジェクトの構成、依存ライブラリ、コンパイルオプションなどを記述すると、CMakeがそれを解釈し、使用している環境(Linux、Windows、macOSなど)やビルドシステム(Make、Ninja、Visual Studioなど)に応じたビルドファイルを自動生成する。

UbuntuでのCMakeのインストール

sudo apt update
sudo apt install cmake cmake-curses-gui cmake-gui

基本的な使い方

ソースコードが置かれているディレクトリとは別に、ビルド専用のディレクトリを作成して作業するのが一般的である(アウトオブソースビルド)。

cd my_project_source
mkdir build && cd build
cmake ..
make

Ninjaビルドシステム

Ninjaは、特に大規模なプロジェクトにおいて、ビルド速度を高速化することを目指して設計されたビルドシステムである。Makeよりも依存関係のチェックなどが高速であるとされている。CMakeなどのビルドジェネレータと組み合わせて使用されることが多く、CMakeで-G Ninjaオプションを指定することでNinja用のビルドファイルが生成される。

sudo apt update
sudo apt install ninja-build

デバッガgdb (GNU Debugger)

GDBは、C言語、C++、Ada、Go、Fortranなどのプログラムの実行を制御し、バグ(不具合)の原因を発見・修正する(デバッグ)ための強力なコマンドラインツールである。プログラムの特定の箇所(ブレークポイント)で実行を一時停止させたり、一行ずつ実行(ステップ実行)したり、変数の現在の値を確認したり、メモリの内容を調べたりすることができる。

gcc -g my_program.c -o my_program
gdb ./my_program

デバッグの基本操作

デバッガを用いたデバッグの基本的な流れは、まず問題が発生しそうな箇所や確認したい処理の開始点にブレークポイントを設定する。次にプログラムを実行し、ブレークポイントで停止したら、ステップ実行(nextやstep)でコードの動きを一行ずつ追いながら、printコマンドなどで変数の値が期待通りに変化しているかを確認する。これを繰り返すことで、プログラムのどこで意図しない動作が発生しているのか(バグの原因)を特定していく。

9. プログラミング言語Java

OpenJDK (Java Development Kit)のインストールとJavaプログラムの実行

Javaプログラムを開発(コンパイル)および実行するためには、JDK (Java Development Kit)が必要である。OpenJDKは、Java SE (Standard Edition)プラットフォームのオープンソース実装であり、Ubuntuではaptコマンドを使って簡単にインストールできる。

sudo apt update
sudo apt install openjdk-17-jdk

java -version
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プログラムをコンパイルし、実行するには、端末で以下のコマンドを入力する。

javac HelloWorld.java
java HelloWorld

OpenJDKのインストールに関する詳細は別のページ »で説明している。

【サイト内のJava関連の資料】

10. オペレーティングシステムの運用保守 (更新、パッケージ管理)

Ubuntuのリリースバージョンとコードネームの確認

現在使用しているUbuntuのバージョン情報を確認するには、以下のコマンドを使用する。バージョン番号(例: 24.04、22.04)やコードネーム(例: noble、jammy、focal)は、ソフトウェアの互換性を確認したり、リポジトリ設定を行ったりする際に参照することがある。

lsb_release -a
lsb_release -sc

Ubuntuのシステム更新

セキュリティの脆弱性修正やソフトウェアのバグ修正、機能改善のため、インストールされているパッケージを定期的に最新の状態に保つことは重要である。システム更新は以下の手順で行うのが一般的である。

sudo apt update

sudo apt full-upgrade

sudo apt autoremove

sudo apt autoclean

sudo reboot

通常は、定期的にsudo apt updatesudo apt full-upgradeを実行し、時々sudo apt autoremovesudo apt autocleanを実行してシステムをクリーンに保つのが良い。apt upgradeは既存パッケージの更新のみを行い、依存関係の変更が必要な更新(新しいパッケージのインストールや既存パッケージの削除)は保留する。一方、apt full-upgrade(またはapt dist-upgrade)は、システムの整合性を保つために必要であればパッケージのインストールや削除も伴う更新を行うため、システム全体を最新の状態に維持するにはfull-upgradeの使用が推奨される。

Ubuntuのパッケージ管理 (apt、dpkg)

Ubuntuでは、ソフトウェア(パッケージ)のインストール、更新、削除といった管理作業は、主にapt (Advanced Package Tool)というコマンドラインツールを使用して行う。dpkgは、個別の.debパッケージファイルを扱うための、より低水準なツールである。通常、ユーザーはaptコマンドを利用する。

主なaptコマンド:

パッケージ管理の詳細については、「Linux基本コマンドとその活用法 - パッケージ管理」セクションも参照されたい。

UbuntuでのNVIDIAドライバのインストール

NVIDIA製のグラフィックカード(GPU)を使用している場合、オープンソースのドライバ(Nouveau)の代わりに、NVIDIAが提供するプロプライエタリなドライバをインストールすることで、グラフィック性能が向上したり、CUDAなどのGPUコンピューティング機能が利用可能になったりすることがある。Ubuntuでは、システムが検出したハードウェアに適した推奨ドライバを簡単にインストールするためのコマンドが用意されている。

sudo ubuntu-drivers autoinstall
sudo reboot

nvidia-smi

この方法で問題が発生する場合や、特定のバージョンのドライバを手動でインストールしたい場合は、別途手順が必要になる。