教育用計算機システム使用の手引き

2022 年度版

筑波大学 情報学群 情報科学類

序この手引きは情報科学類に導入された計算機システムの利用法を中心に，計算機の基本的な利用方法を説明するものです．

注意事項
健康のために計算機のディスプレイを長時間見つめていると，目の疲労，肩こりなどの症状がでることがあります．長時間（目安としては 1 時間）連続してディスプレイを見つめながら作業を続けないように注意し，万一症状が現れた場合には，直ちに作業を中止して休憩をとるようにしま
しょう．
計算機と計算機室の運用
計算機ならびに計算機室の利用にあたっては，次ページ以降の「情報科学類（情報学類）教育用計算機システム利用規定」を遵守することが求められます．利用規定をよく読み，理解したうえで利用してください．
質問や問い合わせ
教育用計算機システムは，情報科学類計算機運用委員会が方針を決め，運用・管理しています．また，有志の学生らによる学生管理者（coins-admin）も保守・運用に貢献しています．運用・管理上の方針などについて質問があるときは，計算機運用委員会の教員に問い合わせてく
ださい．また，細部に関する質問や指摘については，技術職員や学生管理者に直接問い合わせ
るか，ニュースやメールなどで問い合わせをしてください．連絡先は，本書 10 章に記載されています．システムの変更・停止などの情報は，次の計算機システムページに随時掲載されますので参照してください．https://www.coins.tsukuba.ac.jp/ce/
本書の配布方法
本書は，電子ファイルのみで配布されています．PDF 形式のファイルを以下の URL からダウンロードできます．https://www.coins.tsukuba.ac.jp/tebiki/2022/tebiki2022.pdf
PDF 形式のファイルを用いることで，調べたい語句の検索などをより容易に行うことができます．有効に活用しましょう．
Dropbox の利用について
たくさんのファイルを保存している心当たりがないのにもかかわらずホームディレクトリの容量の上限を越えてしまう人が多くいます．近年のそうした現象の主な要因として，Dropbox というサービスの同期機能を有効にしているということが挙げられます．
Dropbox は，ファイルをクラウドに保存するサービスですが，Dropbox 公式クライアント
はそのファイルをローカルのディスクに保存します．その結果として， 多くのファイルがCOINS のディスクに保存されてしまい，ディスク容量を圧迫してしまいます．Dropbox との同期をする際にはこれらのリスクに配慮してください．

c情報科学類教育用計算機システム利用規定
令和 3 年 9 月
情報科学類計算機運用委員会

趣旨

1.1

情報科学類 (以降では単に「学類」と記す) が運用する教育用計算機システム (以降では単に「システム」と記す) は，学類の学生，ならびに学類の授業を履修する学生が情報科学に関する知識・スキルを習得することを支援するためのものである． その目的に反しない範囲で，利用者はシス
テムを自由に利用してよい． ただし，システムが安全かつ公平に利用されるように，すべての利用者が遵守すべき事項を本規定で定める．

1.2

利用資格と申請

1.2.1

利用資格と期間

次のいずれかに該当する者は，学類計算機運用委員長の許可を得て，定められた期間計算機室への入室とシステムの利用ができる．
1. 学類に所属する学生（在学期間中）
2. 学類に関係が深い大学院の学生，および，学類の授業を補助する大学院の学生（在学期間中）
3. 学類の授業を受講する学生，および，学類に関係が深い大学院の授業を受講する大学院の学生（在学期間中）4. 学類の活動に関わる学生（申請から年度末まで）
5. 学類，および，学類に関係が深い大学院の授業を担当する教員（利用可能期間は個別に定める）
6. その他，学類計算機運用委員長から承認された者（利用可能期間は，利用目的に応じて個別に
定める）

1.2.2

利用の申請

システムを利用しようとするものは，本規定の内容を理解した上で，所定の申請書を計算機運用
委員長に提出し，許可を得なければならない．

I1.2.3

利用の停止

学類計算機運用委員長は，システムの利用者が本規定に反する行為を行ったと確認した場合，当該利用者のアカウント (もしくは一部の機能) を一定期間停止することができる．

1.3

施設，設備の利用

計算機室内では，飲食，喫煙は厳禁である（発覚した場合，全計算機室が閉鎖される場合がある）．紛らわしい行為（机の上にペットボトルを置くなど）も避けるべきである．また，濡れた傘の持込や，泥の付いた靴で入室してはならない．計算機を破壊しかねない行為（衝撃，高温，埃，
水分を与えるなど）もしてはならない．授業で計算機室を利用しているときでも，空いている端末
は履修者以外が利用してもよいが，その場合は授業担当教員の許可を得る．

1.4

アカウント，パスワード，IC カードの管理

利用者は，アカウントを他者に利用させたり，他者のアカウントを利用してはならない．パス
ワードは容易に類推可能でないものとし，厳重に管理しなければならない（ポストイットやノートなどにパスワードのメモを取っておくなどしてはならない）．計算機室の入室は，利用者が自身のIC カード（学生は学生証，教員は職員証）を用いなければならない（ノックしてあけてもらう，ノックされたので開けてあげる，IC カードを他人と貸借する，などしてはならない）．

1.5

システムの利用システムを利用するにあたっては，次のことを守ること．
1. システムの AUP(Acceptable Use Policy) を守る． システムの AUP とは， 1.1 で述べた利用目的の範囲内でシステムを利用することである．
2. 大規模な計算を行いたい場合は，別に定める「大規模計算に関する規定」に従って利用する．
3. システムのセキュリティを損なわないように務め，システムのセキュリティ上の問題を見つけたときには速やかに管理者 (技術職員，学生管理者など) に連絡する． 特別な理由によって学
類計算機運用委員長の許可を得た場合を除き，悪意のあるプログラム (ウイルス，ワーム，トロイの木馬，攻撃プログラム等) の作成・持ち込み (メール，USB メモリ等) やそれらの意図的な実行，他人のプライバシーや機密を暴くことやそのためのパスワード・暗号化されたファイ
ルの解読，などは特に厳禁である． また，自宅のパソコンを大学のネットワークに接続する
場合，そのパソコンの安全確保を確実に行う．
4. ネットワークを通じてアクセス可能な他のシステムを不正に使用したり，運用を妨害するなどII

の行為はしない． 計算機のネットワークケーブルを抜く，自分のパソコンを情報科学類教育用計算機システムのネットワークに有線で接続するなどの行為も行ってはならない．
5. システムの動作に問題があることに気付いた場合は，速やかに管理者 (技術職員，学生管理者など) に連絡する．
6. 計算機の利用を終えた後には，必ずログアウトをする． 計算機によっては，電源をオフもし
くはスリープ状態にする (管理者などからの指示に従う)． スクリーン・ロックを行う時には，
次の利用者の利用を妨げてはならない． 前の利用者がログアウトしていない場合， 代わりにログアウトして利用しても良い． この時， ファイル等を保存しなくても良い．
7. プリンタに出力するにあたっては，プリンタのスイッチ類は触らない． 資源保護の観点から，無駄な印刷は可能な限り避けなければならない． ただし，プリンタが故障しないようにする
ために，プリンタに入れるのは未使用の用紙のみとする．

情報発信

1.6

システムを利用したインターネットへの情報発信に際しては，次のことを守らなければならない．
1. インターネットに公開する情報には，原則として発信者の氏名を明記し，発信者が責任を負う．
2. 法律や学内規則を遵守し，以下に掲げる情報は発信しない．
• 他人の名誉を傷つけることを目的としたもの• わいせつなもの• 著作権法に違反したもの• 他人のプライバシー・肖像権を侵害したもの• 営利を目的としたもの• 特定の政党または宗教団体に係わる活動を目的としたもの• その他法律，学内規則，公序良俗に反するもの
3. 自らインターネットへの情報を発信するツールを作成・導入・利用するときはシステム管理者の助言を受ける． なお，本規定でいう「情報発信」とは，次のことをいう．
• Web ページを開設する• ネットワーク・ニュースに投稿する• メーリングリストにメールを送る• 遠隔会議システムにメッセージを送る• 掲示板等に書き込む• その他，上記に類似の行為を行う

III

参考
システムの利用に当たっては，「筑波大学における情報システム利用のガイドライン」も適宜参照して下さい．なお，次により閲覧可能です．http://www.u.tsukuba.ac.jp/document/ja/
UnivGuideline.pdf

IV計算機室の利用について
情報科学類生が使える計算機室は，3C113，3C205，3C206 の 3 部屋があります．各部屋の入り
口は，オートロック式になっています．入室の際には，ロックを解除するために入り口のカード
リーダに学生証をかざす必要があります．非接触式の Felica 規格の IC カードなので，財布などに入れたままかざすことができますが，Suica，Pasmo などの他の Felica 規格のカードが一緒に入っていると，干渉して認識されないことがあります．その際は，学生証だけ取り出してかざしてくだ
さい．学生証を計算機室内に置いたまま外に出ると計算機室に入れなくなるので，十分に注意しま
しょう．
各部屋の設備は以下の通りです．
表 1: 各部屋の設備
場所

3C113

3C205

3C206

OS

macOS

macOS

Windows/Linux

マシン名

aloe1 〜 aloe96

crocus1 〜 crocus40

dahlia1 〜 dahlia30

プリンタ名aloe-pr1，aloe-pr2

crocus-pr1

dahlia-pr1

aloe-pr3，aloe-pr4

crocus-pr2

color-c113(カラー)
また，サーバ・コンピュータや無線 LAN 等の設備は表 2 の通りです．
表 2: サーバ・コンピュータ，無線 LAN 等の設備
サーバ・コンピュータ VPN サーバ（viola13.coins.tsukuba.ac.jp）
WWW サーバ（www.coins.tsukuba.ac.jp）
メール受信（IMAP, POP）サーバ（viola6.coins.tsukuba.ac.jp）
メール送信（SMTP）サーバ（viola6.coins.tsukuba.ac.jp）
無線 LAN SSID 名

AP-C113BGN，AP-C113AN，AP-C206BGN など

iMac の使い方については，1 章を，Windows および Linux の使い方については 5 章を，印刷方法については 1.8 節を参照してください．

V情報科学類教育用計算機を利用した大規模計算に関する規定
情報科学類の教育用計算機システムを利用した大規模計算に関する利用規定を以下のように定める．
1. 本学類が保有する教育用計算機について，大規模計算を行ってもよい時間帯を表 3 のように定める．
この時間帯以外には計算機運用委員会の特別な許可がない限り，教育用計算機を使った大規模計算を行なうことはできない．なお，ここでいう大規模計算とは，使用 CPU 時間 1 時間以
上，または，使用仮想記憶 1GBytes 以上のプロセスを，非対話的に実行することをいう．
表 3: 学類計算機での大規模計算可能期間
計算機

大規模計算可能期間

www サーバ
viola グループの各サーバ

常時大規模計算禁止

その他管理用コンピュータ
aloe，crocus グループ

休業中（春季，夏季，秋季，冬季）

dahlia グループ

土曜日，日曜日，祝日および大学が定める休講日
平日の 18:00〜8:00 の間

2. ユーザ間の便宜を図るために，大規模計算を行なう場合は，大規模計算作業のお知らせページに大規模計算の計算機資源の利用内容（利用計算機室，利用台数，開始時刻，終了時刻等）を投稿することが望ましい1）．
3. (1) で定める時間外に，何らかの理由で大規模計算を行なうことを希望する場合は，情報科学類計算機運用委員会に申請して許可を求めること．申請は，以下の内容を含む情報を
coins-admin@coins.tsukuba.ac.jp 宛てに電子メールで送付すること．
• 担当者に関する情報（氏名，学籍番号，指導教員，電子メールアドレス，電話番号，所属研究室）• 申請理由• 計算の内容• 希望開始時刻，予想終了時刻，予想 CPU 使用時間，予想仮想記憶使用量以上の規定を守らない利用に関しては，当該プロセスを計算機運用委員，または，計算機運用委
員の委託を受けた者が，強制的に終了させることができる．
本件に関する質問は情報科学類計算機運用委員会（c-comp@cs.tsukuba.ac.jp）まで．
最終更新日時：2019 年 3 月 30 日
1） 投稿には Shibboleth で認証が必要です．

VI

推奨事項
iMac または Linux コンピュータに高い負荷を掛ける事が明らかな作業を行う場合には， nice コ
マンドを使って作業の優先度を下げてください． nice コマンドの n オプションは 19 を指定してく
ださい．
$ nice -n 19 コ マ ン ド

n オプションは-20(最優先) から 19 まで指定でき，デフォルトは 10 です．

VII全学計算機システムのメール利用について
本書で説明する「情報科学類教育用計算機システム」は，主に情報科学類生を対象とした計算機システムですが，これとは別に，筑波大学では学群・学類問わず全ての学生・教員が利用できる「全学計算機システム」が存在します．ここでは，この全学計算機システムの Web
メールについて説明します．なお，全学計算機システムに関する詳しい説明は，説明ページ(https://www.u.tsukuba.ac.jp/) を参照してください．
2017 年度以降に入学した人
Office 365（https://cloudmail.u.tsukuba.ac.jp/）にアクセスして@s.tsukuba.ac.jp ドメイ
ンの全てのメールを確認できます．
2016 年度以前に入学した人
Office 365 の@s.tsukuba.ac.jp ドメインとは別に Active!mail（https://wmail.u.tsukuba.ac.
jp/）の@u.tsukuba.ac.jp ドメインのメールアカウントを持っています．
利 用 に 関 し て 入 学 年 度 別 の 注 意 事 項 等 は「全 学 計 算 機 シ ス テ ム の メ ー ル に つ い て」（https://www.u.tsukuba.ac.jp/email/）からご確認ください．
学内外を問わず，インターネットに接続されたパソコンであれば，全学計算機システム Web
メール（Office 365）を利用して配信メールを確認できます．Office 365 にログインするためには，全学計算機システムと同じユーザ ID とパスワードを使用してください．例えば学籍番号が209912345 の場合，ログイン ID は「s9912345」となります．

IX

目次
情報科学類教育用計算機システム利用規定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

I

1.1

趣旨・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

I

1.2

利用資格と申請 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

I

1.2.1

利用資格と期間 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

I

1.2.2

利用の申請 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

I

1.2.3

利用の停止 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

II

1.3

施設，設備の利用 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

II

1.4

アカウント，パスワード，IC カードの管理・・・・・・・・・・・・・・・・・・・・・・・・

II

1.5

システムの利用 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

II

1.6

情報発信 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ III

第1章

iMac の基本的な使い方・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

1

1.1

iMac の構成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

1

1.2

ログイン・ログアウトと OS の切り替え ・・・・・・・・・・・・・・・・・・・・・・・・・・

3

1.2.1

ログイン ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

3

1.2.2

ログアウト ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

5

1.2.3

OS の切り替え・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

6

パスワードと統一認証システム ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

7

1.3.1

統一認証システム・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

7

1.3.2

パスワードに関する注意・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

8

1.3.3

Shibboleth ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 10

1.3

1.4

ログイン後の画面 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 11

1.4.1

デスクトップ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 11

1.4.2

Dock（ドック）・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 12

1.4.3

Finder（ファインダー）・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 13

1.4.4

ゴミ箱・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 13

1.4.5

システム環境設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 14

1.5

言語環境 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 14

1.5.1

漢字の変換 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 14

1.5.2

ショートカット ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 15

1.5.3

日本語入力の高速化 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 16

1.5.4

Google 日本語入力による日本語と英語の入力・・・・・・・・・・・・・・・・・・・・ 16

1.5.5

バックスラッシュを入力する・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 17iウィンドウシステム ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 19

1.6

マウス操作の基本・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 19

1.6.1
1.6.1.1

マウスポインタ（mouse pointer） ・・・・・・・・・・・・・・・・・・・・・・・・・ 19

1.6.1.2

クリック（click） ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 20

1.6.1.3

ダブルクリック（double click）・・・・・・・・・・・・・・・・・・・・・・・・・・・ 20

1.6.1.4

ドラッグ（drag） ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 20

1.6.1.5

ホイールアップ／ホイールダウン（wheel up / wheel down） ・・・・・・・・・ 20
ウィンドウに対する操作・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 20

1.6.2
1.6.2.1

ウィンドウ・メニュー・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 21

1.6.2.2

ウィンドウを閉じる（閉じるボタン） ・・・・・・・・・・・・・・・・・・・・・・・ 21

1.6.2.3

アイコン化（最小化ボタン） ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 21

1.6.2.4

ズームボタン ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 22

1.6.2.5

ウインドウの大きさを任意に変更する ・・・・・・・・・・・・・・・・・・・・・・・ 22

1.6.3
1.7

キーボードのショートカット・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 22
アプリケーションの紹介 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 23

1.7.1

Microsoft Office ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 23

1.7.2

Preview.app ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 24

1.7.3

LibreOffice ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 24

1.8

印刷・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 24

1.8.1

印刷 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 24

1.8.2

プリント枚数の上限 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 26

1.8.3

プリント枚数の確認 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 26

第2章

コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 29

2.1

iTerm ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 29

2.2

イントロダクション ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 30

2.2.1

Hello, world ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 30

2.2.2

コマンドと引数 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 31

2.2.3

コマンドの基本 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 31

2.3

ディレクトリ構造 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 31

2.4

ファイルをコマンドラインで操作する ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 33

2.4.1

ls - 一番有名なコマンドを使ってみる・・・・・・・・・・・・・・・・・・・・・・・・・ 33

2.4.2

最初の手習い - ディレクトリの作成・・・・・・・・・・・・・・・・・・・・・・・・・・ 34

2.4.3

今いる場所を知る・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 34

2.4.4

ディレクトリの移動 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 35

2.4.5

ファイルを作る ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 35

2.5
2.5.1

用語の整理・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 35
ホームディレクトリ (home directory) について ・・・・・・・・・・・・・・・・・・・ 37
ii

ファイルのパーミッション (permission) ・・・・・・・・・・・・・・・・・・・・・・・ 37

2.5.2

ファイルに関するコマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 37

2.6
2.6.1

ls コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 37

2.6.2

mkdir コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 39

2.6.3

rmdir コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 39

2.6.4

cp コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 40

2.6.5

mv コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 40

2.6.6

rm コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 41

2.6.7

cd コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 41

2.6.8

pwd コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 42
ファイルの中身に関するコマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 42

2.7
2.7.1

cat コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 42

2.7.2

lv コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 42

2.7.3

head コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 43

2.7.4

tail コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 43

2.7.5

grep コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 44

2.7.6

sort コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 44

2.7.7

chmod コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 44

2.7.8

open コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 46
システムに関するコマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 46

2.8
2.8.1

quota コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 46

2.8.2

du コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 47
画像に関するコマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 47

2.9

convert コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 47

2.9.1

プロセスを扱うコマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 47

2.10
2.10.1

ps コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 47

2.10.2kill コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 48
コマンドを知るためのコマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 48

2.11
2.11.1man コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 48

2.11.2

info コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 49
ワイルドカード ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 49

2.12
2.13

tab キーによる補完 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・




50

リモートログイン (remote login)・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 51

2.14

ssh コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 51

2.14.1

コマンドをさらに使いこなす・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 52

2.15
2.15.1

2.15.1.1

標準入力，標準出力 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 52
リダイレクト ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 52iii

2.15.1.2

パイプ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 52

2.15.2

メタキャラクタのエスケープ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 53

2.15.3

シェル変数と環境変数 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 53

2.15.3.1

シェル変数の代入と参照 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 53

2.15.3.2

環境変数の代入と参照・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 54

2.15.3.3

変数の削除 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 54

2.15.3.4設定されている変数の確認・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 54
ディレクトリスタック ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 54

2.15.4

その他有用なコマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 56

2.16
2.16.1

alias コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 56

2.16.2

nkf コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 57

2.16.3xclock，xcalc コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 58

2.17

コマンドリスト ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 58

第3章

Emacs ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 61

3.1

Emacs 基礎知識・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 61
入力表記 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 61

3.1.1
3.1.1.1

Meta キー ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 61

3.1.2

コマンドの中断 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 62

3.1.3

ヘルプ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 62

3.1.4

チュートリアル ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 63
実行と終了・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 64

3.2

実行 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 64

3.2.1
3.2.1.1

画面の構成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 64
終了 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 64

3.2.2

編集・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 65

3.3
3.3.1

文字の入力 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 65

3.3.2

ファイル操作 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 65

3.3.2.1

自動セーブ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 66

3.3.3

カーソルの移動 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 67

3.3.4

文字・行の削除 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 67

3.3.5

コピー，カット，ペースト ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 69

3.3.6

編集の取り消し ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 70

3.3.7

検索・置換 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 70

3.3.7.1

検索・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 70

3.3.7.2

置換・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 71

3.3.8
3.4

編集のまとめ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 71
Mew・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 72iv

3.4.1

起動してみましょう ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 72

3.4.2

メールを読む ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 72

3.4.3

メールを書く ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 72

3.4.3.1

メールの返事を書く ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 73

3.4.4

メールを削除する・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 74

3.4.5

フォルダ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 74

3.4.5.1

メールを整頓する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 74

3.4.5.2

条件を指定してメッセージを選択しマークをつける・・・・・・・・・・・・・・・ 75
ファイルの添付（マルチパート） ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 75

3.4.6
3.4.6.1

マルチパートを読む ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 76
ニュースを読む ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 76

3.4.7
3.4.7.1

記事の保存 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 77

3.4.7.2

記事を投稿する・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 77

3.4.7.3

ニュース記事にフォローする ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 78

3.4.7.4

ニュース記事にメールで返事を送る ・・・・・・・・・・・・・・・・・・・・・・・・ 78
Mew のマニュアル ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 78

3.4.8

Tips ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 78

3.5

info の操作 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 78

3.5.1
3.5.1.1

texinfo と info ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 78

3.5.1.2

Emacs での操作・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 78

3.5.2

画面の分割 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 79

3.5.3

Emacs からのシェル操作 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 79

3.5.4

モード・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 80

3.5.5

package.el・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 80
自宅で Emacs を使うには ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 81

3.6
3.6.1

Windows ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 81

3.6.2

macOS ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 85

3.6.3

Linux ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 85

第4章

ブラウザとメーラの使い方・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 89

4.1

Firefox による Web ブラウジング ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 89

4.1.1

起動する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 89

4.1.2

ブラウジングの基本的な操作・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 90

4.1.2.1

URL を直接指定する方法・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 90

4.1.2.2

リンクをクリックして移動する ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 91

4.1.3

Firefox の基本的な機能・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 91

4.1.3.1

戻る/進む ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 91

4.1.3.2

再読み込み ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 91v

4.1.3.3

ホーム ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 91

4.1.3.4

ブックマーク登録 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 92

4.1.4

ブラウザのショートカット ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 93

4.1.5

タブ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 93

4.1.6

各種設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 94

4.1.7

ホームページの設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 94

4.1.8

ダウンロードファイルの保存先の設定 ・・・・・・・・・・・・・・・・・・・・・・・・ 94

4.1.9

プライバシーの設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 95

4.1.10

セキュリティの設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 96

4.1.11

文字コードの設定・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 97
Thunderbird による電子メールの利用方法・・・・・・・・・・・・・・・・・・・・・・・・・ 98

4.2
4.2.1

メールを送受信する仕組み ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 98

4.2.2

COINS のメールを利用するための設定・・・・・・・・・・・・・・・・・・・・・・・・ 99

4.2.3

メールの受信 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 104

4.2.4

メールの作成と送信 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 104

4.2.4.1

メールの振り分け ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 105
ニュースの使い方・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 107

4.2.5
4.2.5.1

ニュースの設定・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 107

4.2.5.2

ニュースの読み方 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 108

4.3

RainLoop・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 110

4.4

Android 端末でのメールの送受信 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 112

4.5

iOS 端末でのメールの送受信・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 120

第5章

Windows と Linux の使い方 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 125

5.1

サインインとサインアウト ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 125
ユーザ名とパスワードについて ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 125

5.1.1
5.1.1.1

Windows 環境を初めて利用する際の注意点・・・・・・・・・・・・・・・・・・・・ 125
サインイン後の画面 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 125

5.1.2
5.1.2.1

タスクバー ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 126

5.1.2.2

スタートメニュー ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 127

5.1.3
5.2

サインアウトとシャットダウン ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 127
ウィンドウの基本操作・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 129

5.2.1

デスクトップ画面とウィンドウ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 129

5.2.2

タイトルバー・リボン・ステータスバー ・・・・・・・・・・・・・・・・・・・・・・・ 130

5.3

ファイルの操作 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 131

5.3.1

デスクトップ UI でのファイル操作 ・・・・・・・・・・・・・・・・・・・・・・・・・・ 131

5.3.2

フォルダ構造 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 132

5.3.3

ファイルの移動， コピー ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 133vi

5.3.4

ショートカットの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 133

5.3.5

ファイルの新規作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 134

5.3.6

フォルダ名/ファイル名の変更 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 135
プロセス管理 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 135

5.4
5.4.1

タスクマネージャー

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 135

5.4.2

プロセスに関する注意事項 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 139
ホームディレクトリの利用 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 139

5.5
5.5.1

ホームディレクトリへのアクセス方法 ・・・・・・・・・・・・・・・・・・・・・・・・ 140

5.5.2

同時サインインに関する注意・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 140

5.6

Windows からの印刷・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 140

5.7

Windows での日本語入力 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 141

5.8

Windows コマンドの利用 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 142
コマンドプロンプト ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 143

5.8.1
5.8.1.1

dir コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 144

5.8.1.2

cd コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 144

5.8.1.3

copy コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 144

5.8.1.4

move コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 145

5.8.1.5

ren コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 145

5.8.1.6del コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 145

5.8.1.7

rmdir コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 145

5.8.1.8

cls コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 146
PowerShell ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 146

5.8.2
5.8.2.1

ディレクトリの中身を確認する ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 146

5.8.2.2

カレントディレクトリを移動する・・・・・・・・・・・・・・・・・・・・・・・・・・ 146

5.8.2.3

カレントディレクトリを確認する・・・・・・・・・・・・・・・・・・・・・・・・・・ 147

5.8.2.4

ディレクトリを作成する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 147

5.8.2.5

ディレクトリやファイルを削除する ・・・・・・・・・・・・・・・・・・・・・・・・ 147

5.8.2.6

ファイルやディレクトリを移動・名前の変更する ・・・・・・・・・・・・・・・・ 148

5.8.2.7

ファイルやディレクトリをコピーする ・・・・・・・・・・・・・・・・・・・・・・・ 150

5.8.2.8

ファイルの中身を見る・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 150

5.8.2.9

コマンドの使い方を調べる・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 150

5.8.2.10

エイリアスについて ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 150

5.9

メール設定・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 151

5.10

Linux の利用・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 151

第6章

LATEX・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 153

6.1

LATEX の概要・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 153

6.1.1

TEX と LATEX・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 153
vii

TEX とは・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 154
LATEX とは・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 154

6.1.1.1
6.1.1.2

ε - pTEX と dvipdfmx・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 155

6.1.2
6.1.2.1

ε - pTEX ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 155

6.1.2.2

dvipdfmx・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 156

6.2

LATEX を使ううえでの注意 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 156

6.3

LATEX による文書生成の流れ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 156

6.4

LATEX に関連するファイルの形式 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 157

6.5

Hello LATEX! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 157
コンパイルに失敗したとき ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 159

6.5.1

LAT X のコマンドと環境・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 159

6.6

E

コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 159

6.6.1
6.6.1.1

特殊文字 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 160

6.6.1.2

記号・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 160

6.6.1.3

引数・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 161
環境 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 161

6.6.2

クラスファイルの指定・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 162

6.7
6.7.1

ドキュメントクラス ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 162

6.7.2

jsarticle のオプション・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 162

6.7.2.1

用紙サイズ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 162

6.7.2.2

文字サイズ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 162

6.7.2.3

段組・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 163

6.7.2.4

ページの体裁 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 163

6.7.2.5

組版の確認 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 163

6.8

本文・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 163

6.9

表題と著者・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 163

6.10

見出し ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 164

6.11

書体・文字サイズ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 168
書体の変更 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 168

6.11.1
6.11.1.1

和文書体 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 168

6.11.1.2

欧文書体 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 168

6.11.2
6.12

文字サイズ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 169
改行・改ページ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 169

6.12.1

改行 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 170

6.12.2

改ページ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 170

6.13
6.13.1

箇条書き ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 170
順序なし箇条書き・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 170
viii

6.13.2

順序あり箇条書き・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 171

6.13.3

定義リスト ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 171
図 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 171

6.14
6.14.1graphicx パッケージ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 172

6.14.2

画像の表示 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 172

6.14.2.1

float パッケージ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 173

6.14.2.2

figure 環境 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 173

6.14.2.3\centering コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 173

6.14.2.4\includegraphics コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 173

6.14.2.5\caption コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 173

6.14.2.6\label コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 174

表 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 174

6.15

tabular 環境・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 175

6.15.1
6.15.1.1

セル内の文字位置 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 175

6.15.1.2

縦線・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 175

6.15.1.3

セルと横線 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 175

6.15.1.4

複数の列をまたぐセル，複数の行ををまたぐセル ・・・・・・・・・・・・・・・・ 175

脚注・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 176

6.16

6.16.0.1\footnote コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 177

6.16.0.2\footnotemark，footnotetext コマンド ・・・・・・・・・・・・・・・・・・・・・ 177

参照・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 177

6.17
6.17.1

見出しの参照 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 178

6.17.2

脚注の参照 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 178
数式・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 178

6.18
6.18.1

amsmath パッケージを利用して数式を書く ・・・・・・・・・・・・・・・・・・・・・ 179

6.18.2

ディスプレイ数式・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 180

6.18.2.1

align 環境・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 180

6.18.2.2

align*環境 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 182

6.18.2.3\[コマンドと\] コマンド・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 182
インライン数式 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 183

6.18.3

ソースコード ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 183

6.19
6.19.1

listings パッケージの読み込み・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 183

6.19.2

設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 183

6.19.2.1

スタイルの定義・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 184

6.19.2.2

全てのソースコードに関する設定・・・・・・・・・・・・・・・・・・・・・・・・・・ 184

6.19.36.19.3.1

listings パッケージの使い方 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 186
lstlisting 環境 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 186ix

6.19.3.2\lstinputlisting コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 186

6.19.3.3\lstinline コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 186

書いたとおりに出力する ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 187

6.20
6.20.1

出力したいテキストが複数行の場合・・・・・・・・・・・・・・・・・・・・・・・・・・ 187

6.20.2

出力したいテキストが 1 行の場合 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 187

BibTEX を用いた参考文献 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 188
6.21.1
BibTEX を用いない・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 188

6.21

6.21.1.1

thebibliography 環境 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 189

6.21.1.2\cite コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 190

6.21.3

BibTEX を用いる ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 190
書誌情報の入手 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 190

6.21.4LATEX ファイル側の書式 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 191

6.21.2

6.21.4.1\bibliographystyle コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 191

6.21.4.2\cite コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 191

6.21.4.3\bibliography コマンド ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 192

6.22

BibTEX を用いた LATEX ファイルのコンパイル ・・・・・・・・・・・・・・・・・・・ 192
文書の余白・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 192

6.23

目次の生成・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 193

6.24

LuaLATEX を使ってみよう・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 193

6.21.5

6.24.1

前提：文字コードについて ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 194

6.24.2

LuaLATEX で使える文書クラス ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 194

6.24.2.1

ltjs 系クラス・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 194

6.24.2.2

jlreq・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 194

6.24.2.3

bxjs 系クラス・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 194

6.24.3

オプションについて ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 194

6.24.4

LuaLATEX 用のパッケージを読み込む ・・・・・・・・・・・・・・・・・・・・・・・・・ 195

6.24.5

LuaLATEX で組版してみよう・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 195
発展的な TEX の話題・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 195

6.25
6.25.1LATEX をインストールする ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 195

6.25.2ε - pTEX 以外の TEX 処理系・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 196

6.25.2.1
6.25.2.2

ε-upTEX ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 196
pdfTEX ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 197

6.25.3

XETEX ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 197
ConTEXt ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 197

6.25.4

その他の組版処理系 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 198

6.25.2.3

6.25.4.1

SATYSFI ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 198

6.25.4.2

Twight ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 198
x6.25.4.3

CSS 組版処理系・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 198

6.25.5

TikZ による図 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 199

6.25.6

古いが有益な情報・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 201

6.25.6.1

バウンディングボックス ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 201

第7章

言語処理系 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 203

7.1

言語処理系とは ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 203

7.2

Python ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 203

7.2.1

Python プログラムの実行 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 203

7.2.2

Python プログラムの作成と実行・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 203

7.2.3

JupyterNotebook の使い方 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 204

7.2.3.1

起動して Hello を表示してみる・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 204

7.2.3.2

グラフを表示してみる・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 208

7.2.3.3

Markdown を書いてみる ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 209

7.2.3.4

ファイル名の修正・保存・終了 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 211
JupyterLab ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 213

7.2.4
7.2.4.1

起動方法 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 214

7.2.4.2

新しいノートの作り方・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 214

7.2.4.3

プログラムの作成と実行 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 215

7.2.4.4

複数のタブを開く ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 216

7.2.4.5

ファイル名の変更・保存・終了 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 217

7.3

Java コンパイラ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 218

7.3.1

Java プログラムのコンパイルと実行 ・・・・・・・・・・・・・・・・・・・・・・・・・ 218

7.3.2

Java アプレットのコンパイルと実行 ・・・・・・・・・・・・・・・・・・・・・・・・・ 219

7.4

C ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 220

7.4.1

C コンパイラ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 220

7.4.2

ヘッダファイル，ライブラリ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 222

7.4.3

参考になる資料 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 224

7.4.4

デバッグ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 224

7.4.5

printf を使った簡単なデバッグ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 224

7.4.6

デバッガの利用 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 225

7.4.7

分割コンパイル ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 227

7.4.8

make を使ったコンパイル ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 228

7.4.9

最適化・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 229

7.4.10ライブラリ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 229

7.5

C++コンパイラ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 230

7.5.1

C++プログラムのコンパイルと実行 ・・・・・・・・・・・・・・・・・・・・・・・・・ 230

7.5.2

参考になる資料 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 230
xi

FORTRAN コンパイラ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 231

7.6
7.6.1

FORTRAN95 プログラムのコンパイルと実行・・・・・・・・・・・・・・・・・・・・ 231

7.6.2

参考になる資料 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 231
MATLAB ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 231

7.7
7.7.1

起動 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 232

7.7.2

計算の実行 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 232

7.7.3

関数の実装 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 234

7.7.4

その他のコマンドと関連リンク ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 235

第8章

VMware Fusion・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 237

8.1

仮想計算機の概要 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 237

8.2

仮想計算機に OS をインストールする手順 ・・・・・・・・・・・・・・・・・・・・・・・・ 238

8.2.1

インストールする OS のディスクイメージを用意する・・・・・・・・・・・・・・・ 238

8.2.2

ゲストマシンを作る ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 238

8.2.2.1

OS をインストールする・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 243

ゲスト OS を利用する方法 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 244

8.3
8.3.1

ゲストマシンの起動と終了 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 244

8.3.2

フルスクリーンモード ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 245

8.3.3

スナップショット・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 245
VMware Fusion のより高度な機能・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 246

8.4
8.4.1

共有フォルダを用いてファイルをやりとりする・・・・・・・・・・・・・・・・・・・ 246

8.4.2

ゲスト OS からホストマシンの CD/DVD ドライブを利用する・・・・・・・・・・ 247

8.4.3

VMware を利用したゲスト OS のデバッグ・・・・・・・・・・・・・・・・・・・・・・ 247

8.4.3.1

vmlinux の準備 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 247

8.4.3.2

VMware の設定・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 247

8.4.3.3

デバッガでの接続 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 247

困ったときは ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 248

8.5
8.5.1

フルスクリーンから戻れない・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 248

8.5.2

ゲスト OS に Ctrl-Alt-Del の入力を求められた ・・・・・・・・・・・・・・・・・・・ 248

第9章

ネットワーク ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 249

9.1

学類計算機資源の利用・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 249

9.1.1

利用可能な計算機・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 249

9.1.2

学外からのリモートログインに関しての注意 ・・・・・・・・・・・・・・・・・・・・ 249

9.1.3

学類計算機へのリモートログイン ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 250

9.1.3.1

Windows からの SSH 接続 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 250

9.1.3.2

Tera Term の起動・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 251

9.1.3.3

Windows 10/macOS/Linux からの SSH 接続 ・・・・・・・・・・・・・・・・・・・ 254

9.1.4

大規模計算について ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 254
xii

無線 LAN サービス・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 254

9.2
9.2.1

無線 LAN の利用可能な場所 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 254

9.2.2

必要な機器 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 255

9.2.3

無線 LAN 利用上の注意 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 255

9.2.4

無線 LAN の利用 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 255

9.2.5macOS 環境からの無線 LAN の利用方法 ・・・・・・・・・・・・・・・・・・・・・・・ 255
VPN サービスの利用・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 258

9.3

Windows 環境における VPN 接続のための設定・・・・・・・・・・・・・・・・・・・ 258

9.3.1
9.3.1.1

VPN 接続 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 259

9.3.1.2

VPN 接続のデフォルトゲートウェイ化とその解除 ・・・・・・・・・・・・・・・ 259
macOS における VPN 接続 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 263

9.3.2
9.3.2.1

接続方法 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 263

9.3.2.2

うまく接続できない場合 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 264

第 10 章困ったとき ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 265

10.1

バックスラッシュを入力する・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 265

10.2

プロセスの強制終了 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 265

10.3macOS 環境が固まらないようにするために・・・・・・・・・・・・・・・・・・・・・・・・ 267

10.4

プリントアウトができない場合 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 268

10.5

Web ページ公開について ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 268

10.6

COINS のシステムがダウンしている場合 ・・・・・・・・・・・・・・・・・・・・・・・・・ 268

10.7

Firefox・Thunderbird が起動できなくなった場合 ・・・・・・・・・・・・・・・・・・・・ 268

10.8

COINS 宛のメールを他のメールアドレスに転送したい場合 ・・・・・・・・・・・・・・ 269

10.9

ディスククォータに関する警告メールが来てしまった ・・・・・・・・・・・・・・・・・ 270
必要のないファイルを調査，削除する ・・・・・・・・・・・・・・・・・・・・・・・・ 271

10.9.1
10.10

ブラウザのキャッシュを削除する・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 272

10.10.0.1

Firefox のキャッシュを削除する・・・・・・・・・・・・・・・・・・・・・・・・・・・ 272

10.10.0.2

Google Chrome のキャッシュを削除する ・・・・・・・・・・・・・・・・・・・・・ 273

10.10.0.3

Safari のキャッシュを削除する ・・・・・・・・・・・・・・・・・・・・・・・・・・・ 274

10.11

quota の上限を大きくしたい ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 275

10.12

間違えてファイルを消してしまった ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 275

10.13

各種問い合わせ先 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 276

xiii

第1章

iMac の基本的な使い方

本章では，情報科学類（COINS1））の計算機である iMac（macOS Mojave） を利用するうえで覚えておく必要がある操作方法について，簡単に説明します．

1.1

iMac の構成

iMac（図 1.1）は本体とマウス（図 1.2）とキーボード（図 1.3）から構成されています．

図 1.1: iMac の本体
図 1.2 はマウスです．ボタンが無いように見えますが，それに相当する場所（ホイールの左右）をクリックすると反応します．初期状態では，マウスの左側をクリックしても右側をクリックしても，同じクリックとして扱われます．macOS で右クリックをする場合には， control を押しながら

クリックをします．また 1.4.5 節ではマウスの右クリックを有効にする方法を紹介しているので，使いづらい方は設定を変更しましょう．
1） College Of INformation Science

1

ホイールは真ん中にある小さな丸い部分で，画面をスクロールするためのものです．スクロール可能な画面でここを上下に動かすことで，画面が上下にスクロールします．

図 1.2: マウス

図 1.3: キーボード
図 1.3 はキーボードです．レポートを作成するときやコマンドを打つときなど，キーボードを通して操作することが多いです．普段からキーボードに慣れておくと，打つ速度（タイピング速度）が速くなり効率も良くなります．是非覚えてみてください．
また，よく使うキーの場所を図 1.4 に，その説明を表 1.1 に記します．今後の説明で使っていくのでよく覚えておくようにしましょう．

2

図 1.4: キーボードの配置
表 1.1: キーボード
表記

キーの位置

名称

esc

1

エスケープ

2

スペース

3

タブ

4

リターン

5

デリート

6

オプション

7

コマンド

8

コントロール

9

シフト









tab


return

delete

alt , option










control




shift





1.2

ログイン・ログアウトと OS の切り替え

1.2.1

ログイン

iMac を利用するためには，まずログイン（login） する必要があります．ここで利用する計算機は，多くの人々の間で共有するものです．一台の計算機を同時に複数の利用者で使うこともあります．そのため，計算機に対して，自分が誰であるのかを知らせる必要があります．これによって，誰が計算機を利用しているか確認できます．また，ファイルなどに対しては所有権を設定すること
でプライバシなどを保護できます．ログインとは，自分が計算機を利用する旨を計算機に告知し，計算機を利用する一連の動作をいいます．
まず，マウスを動かしたり shift を押してみたりしてください．電源が入ったままの状態で，

ディスプレイの保護と省エネルギーのため画面が消灯していたりスクリーンセーバーが表示されて3

いたりする場合は，図 1.6 の画面が表示されるはずです．表示されない場合は電源ボタンを押して
iMac を起動させてください．図 1.5 のような画面が表示されます．
困ったときは，教員，TA2）または技術職員3）に連絡してください．
図 1.5 は，ブートメニューといい，使用するオペレーティングシステムを選択する画面です．ア
イコンは，左が macOS Mojave，中央が Windows 10，右が Ubuntu を表しています．クリックすると該当するオペレーティングシステムが起動します．この章では macOS について説明しますので，まず左側をクリックしてみましょう．
次に図 1.6 の名前と書かれているところに，自分のログイン名を入力します．ログイン名は計算機の中での自分の名前にあたるもので，ここでは「s+学籍番号の下 7 桁」になります．例えば，学籍番号が 209912345 であれば，ログイン名は「s9912345」になります．自分のログイン名を入力できたら，リターンキー（ return と書かれたキー）を押します．なお，以後，文字を入力する，もし

くは，文字を入れるといった場合には，文字列をタイプし return を押すまでの動作を言うことにします．

図 1.5: ブートメニュー2） Teaching Assistant=授業のサポートをしてくれる先輩
3） 対応する技術職員は 3E108 にいます．

4

図 1.6: ログイン・認証画面
ログイン名を入力して， tab を押すとカーソル4）は，パスワードの横に移動します．今度は，自

分は正当な利用者であることを証明するためにパスワードを入力します．計算機は，相手が誰なのかを目で見たり声を聞いたりできませんから，パスワードを入力してもらうことによって，それを確認します．パスワードについては，1.3 節で述べます．
パスワードを入力するときには，入力した文字は一切画面に表示されません．これは，他人に盗み見をされないようにするためです．ログイン名とパスワードの双方を間違っていなければ，これでログインできます．できない場合は，ログイン名，あるいはパスワードのどちらかが間違っています．ログイン名を今一度確認し，さらに別のパスワードを使っていたり，大文字や小文字等が間違っていたりしないかチェックしてください．Caps Lock がオンになっていると全て大文字で入力されますので，とくにご注意ください．ログイン名あるいはパスワードの入力を何度やっても駄目な場合は，実際のパスワードと入力しているパスワードが異なっている場合がありますので，技術職員に相談してください．

1.2.2

ログアウト

計算機は，皆で共有するものです．使い終わったら，きちんとログアウト（logout） しましょう．ログアウトとは，ユーザが計算機の使用を終了する操作です．
ログアウトによって終了するプロセス5）としないプロセスがあります．エンドユーザが用いるほとんどのプログラムは前者ですが，後者のようなデーモンプロセスと呼ばれる種類のものもありま

4） カーソル（Cursor） 次に入れるべき文字の位置を指示するしるし．一般的には I 字型で示される．
5） コンピュータが実行している作業やプログラムのこと．

5

す．ログアウト操作によって，ほとんどのデスクトップアプリケーションは終了しますが，計算機本体の電源は切れません．
ログアウトするには，デスクトップ画面左上のアップルメニューをクリックし，そこからログアウト をクリックします．ショートカットキーは shift








+




+ Q です．この操作を行うと，


図 1.7 のような，確認のダイアログが出てきます．ログアウトするのであれば「ログアウト」ボタ
ンを，違う場合は「キャンセル」ボタンをクリックします．

図 1.7: ログアウトダイアログ
ログアウトをすると，図 1.6 の画面に戻ってきます．この画面に戻ったことを確認してから席を離れてください．また，計算機の電源は切らないでください．急に電源を切ると，リモートログイ
ンをしている人が作業できなくなったり，作業中のファイルが破損したりします．特に，電源ケーブルを抜いての強制シャットダウンは故障の原因になりますので，絶対に行わないでください．

1.2.3

OS の切り替え

iMac は，普段は macOS が起動していることが多いですが，Windows や Linux (Ubuntu) も起動できます．このときは，図 1.5 のブートメニュー画面を表示させる必要があります．このためには，計算機を再起動させればよいですが，不用意に電源を切るとリモートログインをしている人の作業に影響が出ます．そのため，必ず次の手順によりブートメニューを表示させるようにしてくだ
さい．
まず，who コマンド6）を使って，他にログインしている人がいるかを確認します．
$ whos9912345 ttys000$

Mar 29 11:32(1a:2b:3c:4d:5e:6f:7g:8h)

who コマンドを実行すると，上のように表示されます．上のように，自分のアカウント名しか表示されない場合は，そのまま計算機を再起動させて構いません．自分のアカウント以外のアカウン
トも表示されている場合は，次のようにしてください．
6） 説明は，表 2.9 を参照してください．

61. まず，他に空いている iMac があるかどうかを確認します．
2. 他に空いている iMac があれば，そこに移動して，同じことを繰り返してください．
3. 他に空いている iMac がなければ，リモートログインしている人に「すみません」と一言言ってから7），再起動して構いません．
なお，どの端末がどの OS で起動しているかを一覧表示する「COINS Status」というサービスもあります8）．このサービスを使って，あらかじめ目的の OS が起動している端末を調べておくことをおすすめします．

1.3

パスワードと統一認証システム

1.3.1

統一認証システム9）
筑波大学内では「筑波大学統一認証システム（以下，統一認証システム）」が採用されています．統一認証システム内のシステムであれば，同一のログイン名とパスワードが使用できます．例
えば，履修登録などに用いる TWINS というシステムへログインする際は，この統一認証システムのパスワードを用います．COINS も，この統一認証システム内のシステムです．つまり，学類の計算機（COINS）と，統一認証システム内のシステムには，同一のパスワードでログインできます．図 1.8 にこの関係図を示します．

図 1.8: 統一認証システムの関連
また，各システムのログイン名は表 1.2 に示す 3 種類が存在します．例えば学籍番号が 209912345の場合，「s+学籍番号下 7 桁」は「s9912345」となります．「学生証に記載された 13 桁の番号」とは，学生証裏側のバーコード下部に記載された番号の事です．

7） もちろんリモートログインしている人には聞こえないですが，すみませんという気持ちを持つことは重要です．
8） https://www.open.coins.tsukuba.ac.jp/coins-status/
9） 統一認証システムに含まれるシステムは https://account.tsukuba.ac.jp/list.html で確認できます．

7

表 1.2: ログイン名
ログイン名

システム

s+学籍番号下 7 桁

COINS のログイン，
全学計算機システム（Office-365 を含む）など

学生証に記載された 13 桁の番号

学生宿舎ネットワーク，電子図書館システム，
学内アクセスポイント（無線 LAN，utwlan）など

学籍番号

1.3.2

TWINS など

パスワードに関する注意

統一認証システムのパスワードが他人に漏れると，統一認証システムを利用している様々なシス
テムを不正に利用される恐れがあります．パスワードが漏洩して問題が起きた場合には，パスワー
ドを盗まれた本人が責任を負うことになっています．盗まれにくいパスワードにするため，パスワードは，一般的に次の事項を満たしていることが求められています．
• パスワードの長さが 8 文字以上．
• 大文字，小文字，さらに記号や数字を混ぜる．
以下に弱いパスワードの例を挙げておきます．
• 英語，日本語，その他外国語の辞書にある単語．
• 固有名詞（人名，地名など）．
• 単純な文字列（aaaaaaaa，12345678 等）．
• 7 文字以下の短い文字列．
• キーボードの配列を使った文字列（qwert，asdfg 等）．
• 上記の単語の綴を逆順にした文字列．
• 上記の単語に記号や数字を付けた文字列．
パスワードを忘れないようにするために，自分の好きな文句の頭文字の途中に数字や記号を挟み込んだものをパスワードとして使っている人もいます10）．COINS のログインに使用する統一認証のパスワードは，8 文字以上 16 文字以下で設定する必要があります．これを満たさない場合はパスワードの変更は受け付けられず，基準を満たす別のパスワードを使用するように指導されます．パ
スワードの変更は自由にできるので，キーボード操作になれた時期に必ず変更してください．また，大事なことですが，自分のパスワードをメモしないようにしてください．パスワードのメモを盗まれたり見られたりすると，そのパスワードが有効なアカウントが脅威にさらされます．銀行などのキャッシュカードの暗証番号と同じです．キャッシュカードの暗証番号との違いは，カードがなくても，計算機に触れることができれば，他人になりますことができるという点です．自分のパ
10） 場合によっては，大文字小文字の変更も行う．

8

スワードは，きちんと管理するようにしてください．また，ほとんどの現代的な Web ブラウザは
パスワードを記憶できます．複雑で膨大な数のパスワードをブラウザで一元管理できるたいへん便利な機能ですが，使用する際は必ずマスターパスワードを設定し，パスワードデータベースの安全を確保しましょう．
そ れ ぞ れ の パ ス ワ ー ド の 変 更 は そ れ ぞ れ の Web ペ ー ジ 上 で 行 い ま す．統 一 認 証
シ ス テ ム と COINS の パ ス ワ ー ド 変 更 は 筑 波 大 学 統 一 認 証 シ ス テ ム の ホ ー ム ペ ー ジ（https://account.tsukuba.ac.jp/ 図 1.10）内の「パスワード変更」をクリックした画面（図1.11）で，行うことができます 11）．繰り返しにはなりますが，何かあってからでは遅いのでパスワードは厳重に管理しましょう．
パスワード変更後の iMac ログイン時エラー
macOS ではキーチェーンというパスワード管理システムが搭載されています．このキーチェーンではアカウントのログインパスワードがデフォルトキーチェーン (ログインキーチェーン) のパスワードという設定になっているため，統一認証でログインパスワードが変更されても，キーチェーンのパスワードが変更されてはいないので，エラーが出るようになってしまいます．

図 1.9: ログイン時のエラー
図 1.9 の表示が出た際には，[キーチェーンパスワードをアップデート] を選択した後，旧パスワードを入力してパスワードを変更してください．

11） UNIX では通常 passwd コマンドを使ってパスワードを変更できるが，COINS では統一認証システムとの兼ね合いから使用できません．

9

図 1.10: 統一認証ホームページ

図 1.11: パスワードの変更画面

1.3.3

Shibboleth

Shibboleth と は，認 証 の 必 要 な Web ペ ー ジ に ア ク セ ス す る と き に 認 証 を 行 う シ ス テ
ム の ひ と つ で す．COINS の 一 部 の Web ペ ー ジ で は，こ の Shibboleth に よ る 認 証 を 行 って い ま す．例 え ば，情 報 科 学 類 コ ン ピ ュ ー テ ィ ン グ 環 境（内 部 情 報）の Web ペ ー ジ(https://www.coins.tsukuba.ac.jp/ce/) へ ア ク セ ス す る と，Shibboleth に よ る 認 証 ペ ー ジ(https://idp.account.tsukuba.ac.jp/idp/Authn/UserPassword) へ 転 送 さ れ ま す．こ こ で，

10

ユーザ名とパスワードを入力してから「login」ボタンを押すと，認証が正しければ，元の情報科学
類コンピューティング環境（内部情報）の Web ページへ戻ってきます．この際，ユーザ名とパス
ワードは統一認証システムと同じものを入力してください．
一度 Shibboleth での認証を済ませば，別の Shibboleth による認証を行っている Web ページにアクセスしても，その都度認証を行う必要は無く，認証を省略することができます．これを「シングルサインオン」と言います．
Shibboleth に関する詳しい説明は，説明ページ (https://idp-test.account.tsukuba.ac.jp/
Shibboleth/) を参照してください．

1.4

ログイン後の画面

図 1.12 は macOS にログインした後に表示される画面を表しています．まずは各部分の名称を覚えましょう．名称を憶えておくことで，トラブルを相談する際に状況を正しく伝えることができます．例えば，「画面の下のボタン」でなく「ウィンドウの下にあるメニュー」と言うことで，どこを指しているのかが具体的に伝わり，相手側が状況を再現するときに役立ちます．

図 1.12: ログイン後の画面

1.4.1

デスクトップ

デスクトップとは，机の上の「作業場所」のようなものです．図 1.12 に示すように，ファイルな
どがアイコンと呼ばれる画像で表示されます．より詳しくは， 2.5.1 項において説明するホーム
ディレクトリ内の Desktop ディレクトリにおかれたものがデスクトップに現れますが，まずはこのまま読み進めてください．

11

1.4.2Dock（ドック）

Dock とは，画面の下部に表示されている，アプリケーションなどのアイコンが並んだ領域の名称です．アイコンは，境界線を境にして，登録済みや実行中のアプリケーションが表示されている部分と，ゴミ箱などの項目が表示されている部分に分かれています．実行しているアプリケーショ
ンは図 1.13 のとおりアイコンの下に黒い点が表示されています．1.4.3 項で説明する Finder は常に実行中になっていますが，それ以外の実行しているアプリケーションは右クリックから「終了」を選択すると終了できます．

図 1.13: Dock の構成
Dock 内に入れたいアイコンは，図 1.14 のように Dock 上にアイコンをドラッグする，もしくは実行中にアイコンを右クリックし，「オプション」内の「Dock に追加」を選択することで Dock に入れることができます．逆に Dock 内から削除したいアイコンは，図 1.15 のように Dock 外にアイ
コンをドラッグすることで削除できます．

図 1.14: Dock にアイコンを追加する

図 1.15: Dock からアイコンを削除する

12

1.4.3Finder（ファインダー）

Finder（ファインダー）とは，ファイルやディレクトリを探したり整理したりできるアプリケー
ションです．図 1.16 は Finder が開かれた状態です．（Dock のをクリックしても Finder を開くことができます）．
境界線の右側にディレクトリ，ファイル，アプリケーションなどがアイコン形式で並んでいます．これらのアイコンをクリックすることにより，ディレクトリの移動やアプリケーションの利用などができます．左側にはホームディレクトリやデスクトップなどへのショートカットや，過去に利用したファイルの履歴などの機能がついています．

図 1.16: Finder

1.4.4

ゴミ箱

ゴミ箱

は不要になったファイルやディレクトリを一時的に保管しておく特殊な場所（ディレクトリ）です．Dock の右端に表示されているゴミ箱アイコンを右クリックして「ゴミ箱を空にする」を選択すると，ゴミ箱に入っていたファイルやディレクトリはシステムから削除され，それらが使用していたストレージ領域が解放されます．いわば，ゴミを捨てる操作です．
また，ゴミ箱には，メモリカードなどのリムーバブルディスク12）を取り外す（アンマウントする）ための機能も用意されています．ファイルやディレクトリを捨てるときと同じ要領でリムーバ
ブルディスクのアイコンをゴミ箱へドラッグすると，ゴミ箱のアイコンが図 1.17 のとおり取り出し操作を示すアイコンに変わるので，そこで手を離すとアンマウントが実行されます．
12） 現行の iMac には光学ドライブはありません．

13

図 1.17: ゴミ箱によるストレージのアンマウント・取り出しシステム環境設定

1.4.5「システム環境設定」はマウスやキーボードの設定，文字入力の設定，画面や音量の設定など，
macOS に関する様々な設定ができるアプリケーションです．アップルメニューから「システム環境設定」を選ぶことで，システム環境設定を開くことができます．
マウスで右クリックを使用するための設定右クリックを有効にするには，まず「システム環境設定」を開きます．次にこの中のマウスをクリックするとマウスの使用例の映像が出てくるので，右クリックに位置する部分を 副ボタン に変更します．


1.5

言語環境

1.5.1

漢字の変換

図 1.12 のステータスアイコン内にある

やと書かれているボタンをクリックすることで言語を変更できます．また，キーボードにある 英数 や かな ボタンを押すことでも同様の操作は可能








です． 英数 を押せば英字入力に， かな を押せばかな入力になります．かな入力ではローマ字を打








ち込むとかなに変換してくれます．ではここで，かな入力を具体的にやってみましょう．ステータ
スアイコンが「あ」になっている状態で，jouhoukagakurui とタイプします．
じょうほうかがくるい
これを（他のキーより少し大きく何も書いてないキー）で漢字に変換します．


情報 科 が 狂いと変換されるかもしれません．変換結果が正しくないので修正しましょう．文節ごとにアンダーバーが区切れていますので，対象の文節ごとに左右キー（部分は正しいので，


を押して次の文節に移ります．

14



，




）で移動できます．「情報」の情報 科 が 狂い
「かがくるい」の文節がおかしいので，文節を直します．文節を縮める場合は shift を押しながら，反対に伸ばす場合は shift を押しながら














を押します．「かがく」と「るい」にしましょう．

情報 化学 類「化学」の変換がちがうので，別の変換になおします．「化学」の部分で

を押すと，変換候

補が表示されるので，「科学」を選択します．
情報科学 類になりましたね．この状態で return を押して確定します．このように，目的の漢字が表示されない場合は，文節を短くするか，単語や単漢字ごとに変換します．

1.5.2

ショートカット

macOS に標準でインストールされているかな漢字変換ソフトウェアには，ショートカット（表1.3）が用意されています．
表 1.3: かな漢字変換ソフトのキーボード操作


+












control +


H




K




L




:


control +control +control +
















shift +


全角英数に変換
半角英数に変換
下の変換候補へ
前の文節へ
次の文節へ





カタカナに変換

上の変換候補へ

shift +


変換の開始．変換中は上の変換候補へ
ひらがなに変換





変換の開始．変換中は下の変換候補へshift +


ひらがな「あ」と英字「A」の切り替え








文節を縮める

文節をのばす15

1.5.3

日本語入力の高速化

入力補助の機能である推測候補表示は便利な一方でその処理は重く，快適な入力の妨げになってしまいます．必要がなければ無効化してしまいましょう．設定方法は図 1.18 と図 1.19 を参照してください．

図 1.19: 推測候補表示の設定

図 1.18: 言語環境の設定

1.5.4

Google 日本語入力による日本語と英語の入力

Google 日本語入力は優秀な変換機能を持つメジャーな IME13）です．計算機室の iMac には，標準ソフトウェア以外の IME として Google 日本語入力がインストールされています．デフォルトで設定されている IME を無効にして，Google 日本語入力を有効にするためには，以下の図 1.20 から
図 1.23 に示すように，日本語入力と英語入力を設定してください．デフォルトの IME を用いた英語入力で不都合や問題が出た場合は，この設定を試してください．

13） Input Method Editor または Engine．キー入力をもとに変換処理などを施すモジュールを指す．

16

図 1.21: Google 日本語入力（ひらがな）を

図 1.20: 入力ソースの追加

追加

図 1.23: 入力ソースの削除

図 1.22: Google 日本語入力（英数）を追加

1.5.5

バックスラッシュを入力する

バックスラッシュ（ \ ）は，情報科学類の macOS の標準設定では円マーク（ Y ）として入力さ








れてしまいます．入力の設定を変更することで， Y を押すと \ が入力できるようになります．








メニューバーの右上の「A」または「あ」をクリックしメニューを表示し，“日本語” 環境設定を開く...
を選びます．出てきたウィンドウの 入力ソース“Y” キーで入力する文字 から， \（バックスラッシュ）を選びます（図 1.24）．

17図 1.24:\

を入力するための設定（デフォルト IME）

また， option + Y で \ を入力しても同じことができます．








Google 日本語入力を使う場合にも，同様に設定します．
Google 日本語入力を選択している状態で，メニューバーの右上の「A」または「あ」をクリッ
クしてメニューを表示します．その中の 環境設定... を選び，表示されたウィンドウの中の， 一般
Yキーで入力する文字 から， バックスラッシュ（\）を選択します（図 1.25）．

18

図 1.25:

1.6



\


を入力するための設定（Google 日本語入力）

ウィンドウシステム

各アプリケーションはそれぞれひとつ以上のウィンドウを持ち，ユーザである皆さんはウィン
ドウに対してマウスやキーボードで操作できます．これらのウィンドウを管理するシステムが，Aqua（アクア）と呼ばれるウィンドウシステム（window system）です．ユーザはウィンドウを切り替えることで，複数のアプリケーションを並行して利用できます．
一方，ウィンドウの大きさや配置などの外観は，ウィンドウマネージャと呼ばれるアプリケー
ションが管理します．macOS ではウィンドウ枠の機能が統一されており，例えばウィンドウを閉じたり一時的に縮小表示したりといった利用頻度の高い操作のために，ウィンドウ枠の左上には３種類のボタン（閉じる，最小化，ズーム）が配置されています．またタイトルバーをダブルクリックすると Dock に収容されます．ウィンドウの最小化を行うと，Dock に収容されるというこ
とです．

1.6.1

マウス操作の基本

計算機に対して指示をする場合の多くは，マウスを使って行います．マウスの操作に関していく
つか覚えておきたい用語がありますので解説します．
1.6.1.1

マウスポインタ（mouse pointer）

マウスの動きにあわせて画面上で移動する記号のことです．一般的に矢印の事が多いですが，別の形になることもあります．マウスポインタは位置を指示するだけでなく，その時点でのウィンド
19

ウ・マネージャの状態も表現しています．I 字型のポインタの場合，その場所には文字があるか文字が入力できることを意味し，時計や歯車の形であれば，現在処理を行っていて入力を受け付けていないことを意味しています．
1.6.1.2

クリック（click）

マウスのボタンを一度だけ押す操作のことです．一般にクリックとだけ言う場合は一番左のボ
タンを押す動作を指します．ウィンドウ・マネージャ上での大抵の作業はクリックで行えます．
macOS における副ボタンのクリック（コンテキストメニューの表示，右クリック）は， control を

押しながらクリックすることで行えます．
iMac に接続されているマウスは左側と右側でボタンが分かれているため，設定を変更することで （1.1 節参照）右クリックを右側のボタンに割り当てることもできます．真ん中にある小さな球
体はホイールアップ／ホイールダウンで使用するホイールです14）．
計算機が処理に時間を取られている状態では，クリックしてもすぐに反応しない場合があります．このような場合であっても，連続して何度もクリックせずに反応があるまで待ってから次の操作に移ってください．
1.6.1.3

ダブルクリック（double click）

クリックを連続してすばやく 2 回行う操作のことです．
1.6.1.4

ドラッグ（drag）

ドラッグという手で物をつかむのに相当する動作と，ドロップといい手から物を離すのに相当す
る操作をまとめてドラッグ・アンド・ドロップと呼びます．ドラッグは，マウスのボタンを押したままマウスを動かすことで行います．マウスのボタンを離す動作がドロップに相当します．ウィン
ドウの大きさを変更するときなどに利用します．
1.6.1.5

ホイールアップ／ホイールダウン（wheel up / wheel down）

ブラウザ等を使っていると，ウィンドウに入りきらない高さの画面が表示されることがあります．その時には横にスクロールバーが表示されますが，そのバーをドラッグしなくてもホイール
アップ／ホイールダウンだけで画面の上下ができます．たいていのウィンドウに使えます．

1.6.2

ウィンドウに対する操作

ターミナルなど，アプリケーションを実行すると画面にウィンドウが開きます．図 1.26 はター
ミナルのウィンドウの例です．ターミナルは端末エミュレータと呼ばれるものです．この端末エミュレータ上で動作するシェルと呼ばれるコマンドを介して他の様々なコマンドを実行します．

14） 3 ボタンマウスが接続されている場合もあります．

20

図 1.26: 端末エミュレータ（iTerm）

1.6.2.1

ウィンドウ・メニュー

ウィンドウをクリックすると，そのウィンドウがアクティブ状態15）になり，デスクトップ画面のメニューバーが，アクティブ・ウィンドウのウィンドウ・メニューに切り替わります．このメニューから，アクティブ・ウィンドウに対する様々な操作を行うことができます．
1.6.2.2

ウィンドウを閉じる（閉じるボタン）

タイトルバーの左上に赤・黄・緑の３つのボタンがあります．左側のボタン（赤）を押すと，ウィンドウを閉じることができます．ただし，そのウィンドウで表示されていたアプリケーションは終了していないことに注意してください．終了するには，アプリケーションのメニューバーかDock のコンテキストメニューから終了を選択します．ショートカットキーは
1.6.2.3+ Q です．


アイコン化（最小化ボタン）

真ん中にあるボタン（黄）をクリックすると，そのウィンドウはアイコン化され Dock に収納されます16）．収納されたアイコンをクリックすると，もとのウィンドウの状態に戻すことができます．

15） ウィンドウがユーザのインタラクションを受け付ける状態になること．
16） [F11] キーを押すと表示中の全ウィンドウがアイコン化されます．

21

1.6.2.4

ズームボタン

右のボタン（緑）をクリックすると，ウィンドウの大きさを自動的に適切な大きさに変更します．その部分を再度クリックすると，元の大きさに戻すことができます．
1.6.2.5

ウインドウの大きさを任意に変更する

大きさを変更させたいウィンドウの四隅にマウスポインタを移動させると，境界線のところでポインタの形が変化します．この状態でドラッグすることによってウィンドウの大きさを変更することが可能になります．

キーボードのショートカット

1.6.3

キーボードは文字や数値を打ち込むだけでなく，色々な機能があります．特にマウスの右クリッ
クをしたときや，メニューバーから辿っていくとできる機能が多いのですが，それらをまとめて表
1.4 に記載しておきます．


+ c と記載されている場合は「








キーを押しながら c キーを押す」ことを意味します．
表 1.4: ショートカットキーのまとめ
動作

キー

コピーする




























貼り付け



切り取り
元に戻す
全て選択
ウィンドウを閉じる
上書き保存
検索

+ c





+ v





+ x





+ z





+ a





+ q





+ s





+ f






今回は表 1.4 のとおり記載しましたが，これ以外にも便利な機能があるので調べてみるのもよいでしょう．また，この他にもスクリーンキャプチャ機能というものがあります．これは，macOS
特有の機能でスクリーンショット撮影してくれる（ウィンドウの画面を撮影して保存してくれる）
機能です．








と shift と 4 を同時に押した後に，キャプチャしたい画面にマウスを合わせて，








を押します．すると，カメラのアイコンが出てくるので，キャプチャしたい画像をクリック

すると，スクリーンショットがデスクトップに保存されます．また，その際に「スクリーンショッ
ト○○」（○○には数字が入ります）というファイル名で保存されます．

22

1.7

アプリケーションの紹介

ここでは，よく使う macOS 用のアプリケーションの紹介などをします．アプリケーション
は/Applications/内にあります．また，前述の図 1.16 のように，Finder の左側のサイドバーからア
プリケーションを選択することでも，アプリケーションのあるディレクトリが見られます．

1.7.1

Microsoft Office

図 1.27: Microsoft Excel の画面
Microsoft Office は，表計算ソフトウェアやワープロソフトなどを取り揃えた，総合オフィスソフ
トウェアです．主に，以下のようなソフトウェアがあります．
• Microsoft Word（ワードプロセッサ）• Microsoft Excel（表計算）• Microsoft PowerPoint（プレゼンテーション）

23

Microsoft Office のソフトウェアは，Excel で作成した表を Word で作った文章に貼付けるなど，
データのやりとりがスムーズに行えます．また，Word と Excel の詳しい使い方については，共通
科目「情報 (実習)」の手引きに書かれています．全学生に配布されるほか，全学計算機システムのWeb ページ（https://www.u.tsukuba.ac.jp/）からもダウンロードできるので，そちらを参照してください．

1.7.2

Preview.app

Preview.app は，画像や PDF 文書などを表示するアプリケーションです．また，Word や Excelなどの印刷プレビューも表示されます．このアプリケーションを指す言葉として，「プレビュー」と呼ぶこともあります．

1.7.3

LibreOffice

LibreOffice とは，オープンソースの総合オフィスソフトウェアです．Microsoft Office とよく似た機能を持ち，ある程度の互換性があります17）．

1.8

印刷

ここでは，macOS からの印刷について説明します．Windows からの印刷は，5.6 節を参照してく
ださい．

1.8.1

印刷

各アプリケーションのメニューバーの ファイル

プリント を選ぶことによって，現在見ているページを印刷できます．プリント設定の画面は，使用しているアプリケーションによって若干変わりますが，ここでは Preview.app からの印刷について説明します．Preview.app のプリント設定の画面
は 2 種類あり，図 1.28 はより単純なほうを示しています．また，図 1.29 は，図 1.28 の「詳細を表示」をクリックして得られる，より高度な設定を行う画面です．各部の説明については，以下の通りです．

17） 図やフォントなどは互換性を失いやすいので注意が必要です．

24

図 1.28: プリント設定

図 1.29: プリント設定（高度）プリンタ印刷するプリンタを指定します．
プリセット印刷の設定を選びます．
部数印刷する部数です．
両面両面印刷の指定です．
用紙サイズ用紙サイズを指定します．COINS の計算機室では，A4 のみ対応しています．

25

印刷する前には，必ずプレビュー画面を確認して，印刷の内容や設定が間違っていないことを確認してから印刷するようにしましょう．
各計算機室のプリンタの台数およびプリンタの名前は表 1 を参照してください．3C113, 3C205,
3C206 で利用可能なプリンタを指定できますので，自分の位置や用途に合わせて適切なプリンタを選択してください18）．

1.8.2

プリント枚数の上限

個人が印刷できる枚数の限界は，1 月で 200 枚です．それを超えると印刷できなくなります．もし，正当な理由があってそれを超えてしまう場合は技術職員室（3E108）に相談してください．ただし，単純に枚数によって制限がかかるのではなく，カラー印刷だと 1 枚でも，5 枚分として換算されます．また，両面印刷は 1 枚分として換算されるので，カラー印刷を避け，両面印刷にすれば印刷制限に引っ掛かりにくくなります．たとえ印刷制限に余裕があっても，「両面白黒印刷」にご協力ください．

1.8.3

プリント枚数の確認

印刷枚数については，以下の方法で確認できます．
• ホーム画面のカウンタを見る．
• https://viola4.coins.tsukuba.ac.jp:9192/user にアクセスする．（http ではなく https であることに注意！）
1. 自分のユーザ ID とパスワードを聞かれた場合には入力する．
2. 現在の印刷枚数の状況が表示される．
いざというときに上限に引っかからないよう，定期的に確認しましょう．

18） 3C113 で 3C205 や 3C206 のプリンタに出力させることも可能です．

26

図 1.30: ホーム画面にある印刷可能枚数のカウンタ

27

第2章

コマンド

ここでは，UNIX をコマンドで操作する方法を，UNIX の 1 つである macOS を使用して学び
ます．

2.1

iTerm

iTerm は豊富な機能を持ったターミナルエミュレータです (図 1.26)．デスクトップの下の方にある Dock から，iTerm を立ち上げてみましょう．メニューバーの iTerm

Preferences... から Profiles タブ(図 2.1) でプロファイル の作成や，プロファイルの文字コードやフォント設定などができます．
1）

以下に Profiles タブ内で主に設定しておくべき設定と設定方法を載せます．

図 2.1: Profile タブ
プロファイルの追加プロファイルを追加したい場合はウィンドウ左下の + を選択すると追加されます．
1） ターミナルを開くときの設定を名前付きでまとめておくものです．

29

文字コード Terminal タブ内の Character Encoding と書かれている箇所のドロップダウンリストから
utf-8 や euc-jp などが設定できます．
端末 ($TERM) の設定 Terminal タブ内の Report Terminal Type と書かれている箇所のドロップダウンリストから xterm-256color などが設定できます．
フォントと大きさ Text タブ内の Regular Font と Non-ASCII Font セクションにある Change Font ボ

タンからそれぞれ変更できます．フォントや ASCII について理解していない場合は両方を同じ日本語対応のフォントに変更すると良いでしょう．
端末のカラースキーム Colors タブから表示色を細かく設定できます．ですが細かく設定するのは手間がかかるため， Colors タブ内の Color Presets... ドロップダウンリストから好みの既存の設定を

インポートして使うと良いでしょう．
このような設定以外にもたくさんの細かな設定が行えるので iTerm をよく使う方は調べてみると良いでしょう．また，iTerm は講義でもよく使うので自分のプロファイルを作ってデフォルトに設定しておくと良いでしょう．

2.2

イントロダクション

2.2.1

Hello, world

こんな感じの，味気ない表示がウィンドウの上の方にでていますか？2）
abelia36 :~ s1611xxx $ここで， e と打つと，ちゃんと e と表示されます ．


とにかく最初はなにがなんだかわからないかもしれないですが，習うより慣れろですから，とにかく echo Hello, world と打ってみましょう ．こんな見ためになればとりあえず OK です ．
$ echo Hello , world$はもとから出力されていますから，e から入力すればよいです．
さて，ここで

を叩いてみましょう．下のようになれば成功です．

$ echo Hello , world
Hello , world$

さて，今，何をしたのでしょうか．

2） これ以降，$の前は本筋とは関係ないので省略します．これと$はあわせてプロンプトと呼ばれます．プロンプトはコマンドを受け付けることを示すために，コンピュータが出力します．このメッセージを改造して，時間や，これから説明するカレントディレクトリ，実行しているマシンの名前やユーザ名などを表示させたり，コマンドの実行が成功したか失敗したかによって，対応する顔文字を表示させたりする人もいます. かわいいプロンプトを使っている人を見かけたら，どういう風にしているか声をかけて聞いてみましょう30

2.2.2

コマンドと引数

実は，今，コマンドというものを実行しました．$ から最初の空白までがコマンド名です．
この場合， echo がコマンド名です．
そして，最初の空白以降は引数です．引数というのは何でしょうか．例えば， echo というのは様々な文章を出力できる汎用的なコマンドです．ですから，Hello のほかにも bye や Stand up
Workers など様々なことを出力できます．そこで，コマンドを実行するときには具体的に何をすればいいのか教える必要があります．その教える内容というのが引数で，コマンドに続けて書くこと
で，コマンドに指示できます．

2.2.3

コマンドの基本

さて，コマンドは様々なことができると言いました．それでは，具体的にどのように，何ができるのでしょうか．なぜ，わざわざ iTerm からコマンドを利用するのでしょうか．
コマンドは，今やってみたとおり，文字をベースにコンピュータに下す命令です．コンピュータ
は，プロンプトから


の入力までの文字列をコマンドとコマンドへの引数であると解釈して命令を実行します．文字で命令を書くことで，手順書のようにコンピュータに何をすればいいのかあら
かじめ教えておくことができます．そうすることで，時間のかかる操作や何度も繰り返す単調な操作を，人間の手間をかけることなく行うことができます．
コマンドを使いこなすことで，たとえば，1000 枚の写真と 200 個の文書が含まれている 100 個のZIP ファイルを全部インターネットからダウンロードして開き，写真だけをすべて 50%縮小して 1
つの ZIP にいれ，文書は特定の語を含むファイルだけ抜きだし 1 つのテキストファイルにまとめて友達のコンピュータに送信するといった，マウスを使って操作していると気の遠くなるようなことが簡単にできるようになります．
それには，この章で説明する内容を越えた知識が必要となりますが，本書では最初のステップを踏み出す手引きをします．echo コマンドではファイルを必要としませんでしたが，上の例のようなファイル操作をするためには，まずファイルについて知る必要があります．

2.3

ディレクトリ構造

ここでは操作の対象となるファイルとディレクトリについて説明します．まず身近にあるファイルについて考えてみましょう ．1 つファイルを想像してみてください ．たとえば，この手引きのPDF ファイルでもいいでしょう．それを念頭にちょっと話を進めていきます．
UNIX では， ファイルに英文字・数字・いくつかの記号からなる名前 (ファイル名) をつけて管理します．そして，ファイルをまとめるものとしてディレクトリ (directory) というものがあり，このディレクトリの中に，ファイルとディレクトリを格納できます．
ちょうど，入学式でもらったファイルをまとめておくと，あとあと困らないので，バインダーに31

閉じたり3），ひとところに纏めて置いたりしたと思いますが，それと同じようなことが，人間が使いやすいようにするためにコンピュータでもできるようになっているわけです ．
そしてこういったお約束ごとがあるので，ひとつのコンピュータに複数のファイルを分類して入れることができるというわけです．
なお，1 つのディレクトリ内に同じファイル名のファイルを 2 つ以上格納することはできません．ただし，図 2.2 のように，別のディレクトリにあるファイル同士はファイル名が同じでも共存可能です．
America
Sierra Nevada
Ohio
Cambridge

EuropeSpringfield

Sierra Nevada
Greenville

EnglandMassachusetts

Cambridge

Cambridge
Springfield

Springfield

GreenvilleGreenville

図 2.2: ファイル名が同じでも，ディレクトリが違えば共存できる
こういった構造や，それを支えるシステムをディレクトリ構造，と呼び習わすことになっていま
す ．そういうわけで，UNIX のディレクトリ構造は，図 2.3 のように，ディレクトリにファイルを入れることができます．
ディレクトリ構造とは，こういったファイルやディレクトリを扱うシステムと構造の事です．
ディレクトリをさらにディレクトリに入れることができるので，図 2.3 のような入れ子構造を作ることができます．
図 2.3 の例では，まず「/」で表される「木の根4）」にあたるルートディレクトリというものがあります．
これから皆さんが触れていく UNIX では，1 つのコンピュータはただひとつのディレクトリツ
リーをもち，接続されたドライブやネットワーク上のディレクトリ構造もすべてこのディレクトリ
ツリーに参加することになっています．

3） ただし，コンピュータの中ではバインダーの中にバインダーを閉じるといったことは容易に行えます
4） ディレクトリ構造は樹形図で表されることが多いため，しばしば木という表現が用いられ，親ディレクトリのない
ディレクトリを根 (あるいは root/ルート) と呼びます．macOS のターミナルや Windows のコマンドプロンプトでは，その名の通り tree というコマンドがあり，カレントディレクトリ (後述) をルートとしたディレクトリ構造が見られます．

32

図 2.3: ディレクトリ構造の例
つまり，ルートディレクトリとは，コンピュータからみえるすべてのファイルとディレクトリの根っこにあたるものです．これより上のディレクトリはありませんし，ここからたどれないディレ
クトリ構造はありません．UNIX のディレクトリ構造は「/」というディレクトリからなる唯一のディレクトリツリーを持ち5），すべてのディレクトリの “根” になっています．
さて，図 2.3 のルートディレクトリには，その中に “bin”“usr”“User” という 3 つのディレクトリ
がありますね．ディレクトリ “bin” の中にはさらに，“ls”“rm” というファイルがあります．これら
は実はファイルであるだけでなく，プログラムでもあります．プログラムはファイルなのです．

2.4

ファイルをコマンドラインで操作する

2.4.1

ls - 一番有名なコマンドを使ってみる

とにかく，ls /と打ってみましょう．最初の$はもう画面にでているはずなので打たないこと，
最後に




を押すことを忘れずに．

$ ls /
Applications
Library
Network$

Pictures
System
Users

Volumes
bin
dev

etc
home
mach_kernel

net
opt
privatesbin
tmp
traces .log

usr
var

5） みなさんにとって馴染み深いかもしれない Windows では，ハードディスクは C:\，USB メモリは Z:\，といったようにディレクトリツリーが別れており，いわば森のような構造になっています．このようにな構造をとっている理由としては，ハードディスクが高価だった頃の名残で，S 起動用のフロッピー，アプリケーション起動用のフロッピーや保存用のハードディスクなど，媒体を分けていたためです．

33

このコマンドは，引数にわたされた文字列をディレクトリ名と解釈して，そのディレクトリの内容を表示する命令です．では，“/” とはどんなディレクトリかといいますと，2.3 節で述べたルー
トディレクトリのことです．いちいちルートディレクトリと打つとかったるいですし，打ち間違えはバグの元ですから，短く “/” という名前になっているのです．そのコマンドの結果が，上のリス
ト 2 行め以降の内容になります．
次に，単にlsと打つとどうなるでしょう．
$ ls

なにか出てきたかもしれませんし，何も表示されなかったかもしれません．あなたがもう何か
ファイルを作っていた場合にはそれが表示されるのです．よく分からないと思うので，ちょっと手習い用のディレクトリを作成して，そこですこし実験してみましょう．

2.4.2

最初の手習い - ディレクトリの作成

まず， mkdir erste と打ってみましょう．これは，ディレクトリを作成するコマンドです6）. すでに同名のディレクトリがあった場合は，別の引数を渡しましょう7）．
Listing 2.1: ディレクトリが正しく作成された場合$ mkdir erste$

Listing 2.2: ディレクトリがすでに存在したので重複して作成できなかった場合$ mkdir erstemkdir: erste: File exists$

もういちどlsしてみると，前にlsしたときと比べて，今作成したディレクトリが新しく登場していると思います．
mkdir コマンドは，ディレクトリを作成するコマンドだといいました．しかし，このコマンドは
ディレクトリを作成するだけで，その中に移動するということまでは自動ではやってくれません．
．

8）

そこで，次に自分でそのディレクトリに移動することによって，作業をするディレクトリを変える必要があります．

2.4.3

今いる場所を知る

ところで，「作業をするディレクトリ」とはどういう意味でしょう．実はこうしてコマンドを打つとき，あなたもファイルと同様ルートディレクトリから辿れるある場所に立って，そこからコマ
6） MaKe DIRectory の略です
7） mkdir zweite などと打ってください
8） これは，一度にたくさんディレクトリを作るときなどに便利です．このように，一つのコマンドがあれやこれやお節介を焼くべきではない，言われたことだけちょうど行うにとどめるべきだ，というプログラムに関する哲学に基づいて，一つのコマンドごとにだいたいざっくりと一つの機能だけに絞り込んで UNIX のコマンドは作られています34

ンドを打っているのです．その場所を知るために，pwd というコマンドを使って調べてみます．
$ pwd/home/ugrad/s2211xxx というようなあるディレクトリが表示されるかもしれませんし，もしかしたら別のところにいるのかもしれませんが，どこにいるのかに関わらず，ある場所が存在して，そこでディレクトリを作成したところです．作業をするときは，必ずシステムの中のどこかにいてそこから作業をしているということを忘れないでください．

2.4.4

ディレクトリの移動ということで，現在は，自分の居場所について知り，そして，そこにディレクトリを作成したところでした．今度は，そのディレクトリに入ってみようとおもいます．
Listing 2.3: 先ほど作成したディレクトリが erste だった場合$ cd erste$cd9）は，自分の作業をするディレクトリを変えるコマンドです．もう一度 pwd すると，作成したディレクトリに移動していることがわかります．

2.4.5

ファイルを作る

さて，ここでlsしてみてください．おそらくまだ何もないと思います．そこで，新たにファイルを作ってみようと思います．
$ touch test$

もう一度，単にlsと打ってみましょう．
test というファイルが追加されているはずです．
さらにいろんなコマンドを下で解説していますが，まだよく理解していない機能を試すときは，重要なファイルを誤って消さないように，こうしてテスト用のディレクトリを作って行うとよいで
しょう．

2.5

用語の整理

ここで，ディレクトリ構造の話をするときによく出てくる用語を紹介します．
コマンド (command)
コマンドは，コンピュータに対する命令です．UNIX システムには，たくさんのコマンドが搭載されていて，自分で増やすこともできます．コマンドを発行するときは，端末，端末エミュレータなどと呼ばれるソフトウェア (本章では iTerm に限定して解説してあります) を用いて文字を使ってコマンドを発行します．
9） Change the working Directory の略です35

引数 (argument)
コマンドに，動作の詳細を教えるものです．コマンドに続けて書きます．引数の数はいくらでもいいのですが，認識できる限界や順序，書式はコマンドごとに限界があります．
ディレクトリデリミタ (directory delimiter)
ディレクトリの名前と名前をわけるものです ．/の下にある bin に入っている ls というファイルを指すには/bin/ls と表記します ．ルートディレクトリ (2.3 節参照) をさす"/"とデリミタの"/"は同じ文字ですが，意味が違うことに注意しましょう ．同じ文字である必然性はないので，システムによっては違う文字になっていますが，UNIX ではどちらも"/"という文字を使うという約束になっています . 同じ文字なら同じ意味だと思い込んでいると，理解の妨げになるので注意しましょう ．
カレントディレクトリ (current directory)「自分が今作業をしているディレクトリ」のことです．たとえば，図 2.3 の中の「bin」というディレクトリで作業をしている場合，「カレントディレクトリは/bin である」といいます．
パス名 (path name)
ここでは，あるディレクトリやファイルの場所を表す文字列を意味します ．たとえばディレクト
リデリミタの例に出てきた"/bin/ls"はパス名の例です ．
相対と絶対パス名
力学には相対座標と絶対座標という言葉がありますが，UNIX においてもあるディレクトリやファイルまでの経路を表す方法に絶対パス名を記述する方法と相対パス名を記述する方法があります．
絶対パス名はルートディレクトリから中継するすべてのディレクトリを記述したものです．bin
ディレクトリ以下の ls を指定するには下記のように指定します．
$ /bin/ls

これに対して相対パス名とは，カレントディレクトリを基準とした経路を表すものです．図 2.3において bin のディレクトリにて作業をしているとします．ここで bin ディレクトリ以下の ls を指定するには以下のように指定します．
$ ./ls

ここで「.」はカレントディレクトリを表します．
ファイルの指定を「/」記号から始めると，それは「絶対パス名」であるとみなされます10）．「/」
以外の文字始めると，それは「相対パス名」であるとみなされます．
(ファイル名の) 拡張子 (extension)
ファイル名は (文字種の制限を守る限り) 自由に付けることができますが，ファイル名の最後に，ファイルの種類を表わす文字列を「.」で区切って書くことがあります．これを拡張子といいます．
たとえば，Java 言語のプログラムが書かれたファイルには「.java」，音楽は「.mp3」や「.ogg」といったものです．

10） 電話番号が 0 から始まると市外局番になるようなものです．ファイルに至る経路をすべて記述することから，「フルパス」とも呼ばれます．

36

2.5.1

ホームディレクトリ (home directory) について

ユーザには，各自が自由に使える「ホームディレクトリ」が割当てられています．みなさんの実際の作業は，各自のホームディレクトリの下で行います．ホームディレクトリは，「˜」(チルダ) 記
号で表わされます．たとえば「自分のホームディレクトリにある『Desktop』というディレクトリ
の…」というようなときに「~/Desktop/…」のような使いかたをします．また，他のユーザのホー
ムディレクトリも「˜ユーザ名」とすると表せます．以下に例を示すので，自分のホームディレク
トリと他人のホームディレクトリの表し方を確認してみましょう．
$ cd ~/ Desktop← ホ ー ム デ ィ レ ク ト リ に あ る Desktop と い う デ ィ レ ク ト リ に 移 動 す る$ pwd/home/ugrad/xx/ sxxxxxxx / Desktop$ cd ~ syyyyyyy← syyyyyyy と い う ユ ー ザ の ホ ー ム デ ィ レ ク ト リ に 移 動 す る$ pwd/home/ugrad/yy/ syyyyyyy
$

2.5.2

ファイルのパーミッション (permission)

各ファイル・ディレクトリは，ファイルのアクセス権を設定するための「パーミッション(permission)」という属性を持っています．パーミッションについては，「ls コマンド 2.6.1」「chmodコマンド 2.7.7」の所でもう少し詳しく述べます．ファイルのパーミッションの設定には気をつけてください．設定を間違えると，自分のメールを他人に読まれたり，大事なファイルが他人に消されたりということが起こり得ます．ファイルシステムについてのより詳しい説明については，UNIX についての本がたくさん出ていますので，それらを参照するのが良いでしょう．

2.6

ファイルに関するコマンド

2.6.1

ls コマンド

自分が現在作業をしているディレクトリ (カレントディレクトリといいます) にあるファイルの名前を表示します．
$ ls
dir1 file1 file2$ ls /bin
dev homeboot etc home.bak
$

lhome
lib

lib64
local3

media
mnt

opt
proc

root
run

sbin
srv

sys
tmp

usr
var

この例では，まず引数を与えずに ls コマンドを実行し，3 個のファイルおよびサブディレクトリ
の名前が表示されました．次に，引数としてディレクトリを与えることで，そのディレクトリにあるファイルやサブディレクトリの名前を表示しました．このように ls コマンドの引数としてディ37

レクトリを与えることで，そのディレクトリの中身を表示できます．
ls コマンドに，「-l」(小文字の L) というオプションを付けることにより，それぞれのファイル・
ディレクトリについての詳しい情報を見ることができます．
$ ls -ltotal 245
drwxr -xr -x 2 johotaro ugrad-rw -r--r-- 1 johotaro ugrad-rw ------- 1 johotaro ugrad
$

48
7377
239914

1 25 00:45 dir1
1 25 00:44 file1
1 25 00:44 file2

ここで，ファイルのパーミッションの表示について説明します．左から，「ファイルのパーミッ
ション情報」「リンク数」「ファイル所有者」「ファイル所有グループ」「ファイルサイズ」「ファイルの最終更新日時」「ファイル名」を示しています．例として，上の file1 に関して見てみます．
-rw -r--r-- 1 johotaro ugrad 7377

1 25 00:44 file1

いちばん左に-rw-r--r-- と表示されていますが，これがそのファイルのパーミッションの表示です．この 10 桁の文字列のうち，一番左の 1 文字は，そのファイルの種類を示しています．これが「-」なら通常のファイル，「d」ならディレクトリ，「l」なら，シンボリックリンクです11）．残りの 9 桁が，実際のアクセス許可情報を持っています．この 9 桁の表わす情報は，表 2.1 のようになっています．
表 2.1: 9 桁の文字列の意味
左側 3 桁 ファイルのオーナーの持つ権利
中央 3 桁 グループの持つ権利
右側 3 桁 その他の人の持つ権利
それぞれの 3 桁が，
「読み」
「書き」
「実行」についての許可を表わしています (表 2.2) 12）．
表 2.2: 文字の意味
左の桁が r

読むことが許可されている．

中央の桁が w

書き込みが許可されている．

右の桁が x

実行 (ディレクトリに対しての場合は，探索) が許可されている．

-の表示

許可されていない．

これらの表から，先程の例のファイルは，「オーナーは読み・書きができ，グループの人とその他の人は読むことのみできる」ということがわかります．

11） Windows のショートカットのようなものです．他にもありますが，それらは man で調べてみてください．
12） Windows などでは.COM や.EXE という拡張子が実行ファイルになりますが，UNIX ではそのファイルが実行ファイルかどうかはこの実行パーミッションによって識別されます．

38

今までの例では，「ドットファイル13）」を見ることができません．ドットファイルを見るときには，「-a」という省略可能引数14）を付けます．また，「-F」オプションをつけると，ディレクトリ名の末尾に/が付いて判別しやすくなります．日本語のファイル名が正しく表示されないときは「-v」をつけると正しく表示されるかもしれません15）．これらの他，ls コマンドには多数のオプションがありますが，それらの詳細は「man ls」として，ls コマンドのマニュアルを参照してください．

2.6.2

mkdir コマンド

mkdir コマンドは，新しくディレクトリを作成するコマンドです．mkdir ディレクトリ名 のようにして使います．
$ ls -ltotal 10drwxr -xr -x 2
-rw -r--r-- 1-rw -r--r-- 1$ mkdir dir2
$ ls -ltotal 18
drwxr -xr -x 2
drwxr -xr -x 2
-rw -r--r-- 1-rw -r--r-- 1
$

2.6.3

johotaro
johotaro
johotaro

ugrad
ugrad
ugrad

4096
12
12

2 15 00:10 dir1
2 15 00:10 file1
2 15 00:10 file2

johotaro
johotaro
johotaro
johotaro

ugrad
ugrad
ugrad
ugrad

4096
4096
12
12

2 15
2 15
2 15
2 15

00:10
10:44
00:10
00:10

dir1
dir2
file1
file2

rmdir コマンド

rmdir コマンドは，空のディレクトリを削除するコマンドです．rmdir ディレクトリ名 のように



して使います．
$ ls -ltotal 18
drwxr -xr -x
drwxr -xr -x-rw -r--r--rw -r--r--

2
2
1
1

johotaro
johotaro
johotaro
johotaro

ugrad
ugrad
ugrad
ugrad

4096
4096
12
12

2 15
2 15
2 15
2 15

00:10
10:44
00:10
00:10

dir1
dir2
file1
file2

$ rmdir dir2
$ ls -ltotal 245
drwxr -xr -x 2 johotaro-rw -r--r-- 1 johotaro

ugrad
ugrad

4096
12

2 15 00:10 dir1
2 15 00:10 file1

13） 「.」記号ではじまるファイル・ディレクトリのことです．設定ファイルなどによく使われます．
14） この場合，通常の引数と違って動作の詳細を変更する引数です. オプションともいいます15） それでも正しく表示されないときはターミナルの設定 ( iTerm Preferences Terminal 内の Character Encoding ) で文字セットエンコーディングを変更してみてください．

39

-rw -r--r-$

2.6.4

1 johotaro

ugrad

12

2 15 00:10 file2

cp コマンド

cp コマンドは，ファイルをコピーするためのコマンドです．あるファイルを，別のファイル名にコピーしたい場合，cp コピー元ファイル名 コピー先ファイル名 のようにします．








$ ls -lfile1$ cp file1 file2$ ls
file1 file2$ cp file2 file3$ ls
file1 file2 file3$

コピー先ファイル名にディレクトリ名を指定すると，そのディレクトリの中にファイルのコピーが作られます．またこの場合には，コピー元ファイル名を複数指定できます．
$ mkdir dir1
$ ls dir1$ ls -F
dir1/ file1 file2$ cp file1 file2 dir1
$ ls dir1
file1 file2$ mkdir dir2
$ cd dir2$ cp ../ file1 .
←コ ピー 先 ディ レ ク ト リ に ドッ ト を 指 定 す る と カ レ ン ト ディ レ ク ト リ に コ ピー で き る
$ ls
file1
$

2.6.5

mv コマンド

mv コマンドは，cp コマンドとは異なり，「ファイルの移動」「ファイル名の変更」を行なうコマ
ンドです．mv 移動元ファイル名 (複数可) 移動先ディレクトリ名 あるいは mv 旧ファイル名 新ファイル名 の








ような書式で使います．
$ ls -F
dir1/ file1← ファ イ ル1つ に， ディ レ ク ト リ1つ．
$ ls dir1← dir1 の 中 に フ ァ イ ル は な い ．
$ mv file1 file2
40









$ ls -F
dir1/ file2$ mv file2 dir1
$ ls -F
dir1/$ ls dir1
file2
$

2.6.6

← ファ イ ル 名 が 変 わっ た．

← ファ イ ル が 移 動 し た．

rm コマンドrm コマンドは，ファイルの削除をするためのコマンドです．rm ファイル名 (複数可) のようにし

て使います．また，rm -r [ディレクトリ名] のようにすると，指定したディレクトリの中のファイル

すべて，および，そのディレクトリ本体をすべて削除します．「-i」オプションをつけて実行すると，削除するファイルについて，それぞれ本当に削除するかどうか聞いてきます．この質問には，y (yes) か n(no) で答えてください．
$ ls -F
dir1/ file1← ファ イ ル1つ に， ディ レ ク ト リ1つ．
$ ls dir1
file2← ディ レ ク ト リ 内 に， ファ イ ル1つ．
$ rm -r dir1
$ ls
file1
← ディ レ ク ト リ が 削 除 さ れ た．
$ rm -i file1
remove file1?
← y と答えると$ ls← ファ イ ル が 削 除 さ れ た．
$

rm コマンドを使用する際は，誤って必要なファイル・ディレクトリを削除しないように注意しましょう．特に， rm -r * のようなコマンドは要注意です．このコマンドはカレントディレクト
リ，およびそれより下にあるすべてのファイルおよびディレクトリを消去するコマンドです．つまり，ディレクトリ単位でざっくり消してしまえるので便利といえば便利ですが，消してしまった後に必要となると，復元できなくなってしまうこともあります．削除する前に本当に削除してしまっても大丈夫なのかチェックしてから削除しましょう．

2.6.7

cd コマンド

カレントディレクトリを移動するコマンドです．cd ディレクトリ名 のようにして使います．ディ

レクトリ名を省略した場合は，「自分のホームディレクトリへの移動」となります．また，「cd -」とすると移動する前のディレクトリに戻ります．

41

2.6.8pwd コマンド今いるディレクトリの絶対パス名を確認できるコマンドです．cd コマンドであっちこっちに行っているとシンボリックリンクなどに惑わされて，今自分がどこにいるか判らなくなることがよくあります．そのようなときに pwd コマンドを使うと，自分のいるディレクトリがわかります．
$ pwd/home/ugrad /99/ s99xxxxx$

2.7

ファイルの中身に関するコマンド

2.7.1

cat コマンドファイルの内容を画面に表示するコマンドです．cat ファイル名 のようにして使います．その

ファイルがテキストファイル (通常の文字からなるファイル) ならば，その内容を読むことができます．ファイル名を複数指定すると，指定した順番にファイルを続けて表示します．これを利用して，複数のファイルを連結する際にも使うことができます．
$ cat file1
This is test 1.
$ cat file2
This is test 2.
$ cat file1 file2 > file3$ cat file3
This is test 1.
← file1 ， file2 の 内 容 が file3 に 入 っ て い る ．
This is test 2.
$

2.7.2

lv コマンド

cat コマンドでは，1 画面を越える長さのファイルを読もうとすると，ファイルの最初の方がスクロールして画面から消えてしまい，内容が読めません．長いファイルを読むときに，1 画面ずつ読むためのコマンドが lv16）です．ここでは，lv のキー操作を簡単に表 2.3 にまとめておきます．
lv は，「文書・文章の入ったファイルを表示し，その内容を (人間が) 読む」ことを目的としたコ
マンドですが，cat については，ファイルを表示するためだけでなく，ファイルの内容を連結するためにも使われます．

16） こういうコマンドを「ページャ」ともいいます．

42

表 2.3: lv コマンドのまとめキーq

lv を終了します．

j

1 行読み進みます (ファイルの後方に向ってスクロールします)．

k1 行戻ります (j の逆です)．

f,(space)

2.7.3

機能

1 画面読み進みます．

b

1 画面戻ります (f の逆です)．

g,>

先頭に移動します．

G,>末尾に移動します．

/ パターン

パターンで示された文字列の検索を，ファイル後方に向って行ないます．

? パターン

パターンで示された文字列の検索を，ファイル前方に向って行ないます．

n

直前の検索を後方に向かって繰り返します．

N

直前の検索を前方に向かって繰り返します．

head コマンド

head コマンドは，指定したファイルや標準入力の最初の 10 行を表示するコマンドです． -n 数字


オプションを付けることにより，先頭から任意の行数を表示できます．
$ cat file1
line 1.
line 2.
line 3.
line 4.
line 5.
line 6.
$ head -n 3 file1
line 1.
line 2.
line 3.
$

2.7.4

tail コマンド

tail コマンドは，指定したファイルや標準入力の最後の 10 行を表示するコマンドです．head コ
マンドと同様に，-n オプションを付けることにより，最後から任意の行数を表示できます．
$ tail -n 4 file1
line 3.
line 4.
line 5.
line 6.
$43

2.7.5

grep コマンド

grep コマンドは，ファイルや標準入力に対して指定した文字列を検索し，その文字列が含まれる行を表示するコマンドです．
$cat file2
tsukubakenkyugakuen
bampakukinenkoen
midorino
miraidaira
moriya$ grep ba file2
tsukubabampakukinenkoen
$

2.7.6

sort コマンド

sort コマンドは，ファイルや標準入力に対して，行単位でのソートを行うコマンドです．
$ sort file2
bampakukinenkoen
kenkyugakuen
midorino
miraidaira
moriyatsukuba$

2.7.7

chmod コマンド

chmod17）コマンドは，ファイルのパーミッション 2.5.2 を変更するためのコマンドです．chmod
パーミッション変更シンボル






ファイル名


という書式で使います．パーミッション変更シンボルは，「パーミッションをどのように設定するか」を表わす文字列で，「誰に対してのパーミッションを変更するのか (u,g,o あるいは a の記号を用います)」「許可を与えるのか，許可を取り消すのか (+,あるいは= の記号を用います)」「書きこみ，読みこみ，実行許可のうちのどれに対してか (r,w あ
るいは x の記号を用います)」を指定する 3 つの部分からなります．表 2.4 に，例を挙げます．

17） CHange MODe の略です．

44

表 2.4: 管理者権限の変更
chmod u+w file1

file1 に対して「オーナーによる書き込み許可」を出す．

chmod g+r file2

file2 に対して「グループによる読み込み許可」を出す．

chmod o-x file3

file3 に対して「他の人による実行許可」を取り消す．

chmod a+rx file4

file4 に対して「すべての人に対する読み込み・実行許可」を出す．

chmod u=rw file5

file5 に対するオーナーの権利は「読み・書きは許可，実行は不許可」とする．

自分に対するアクセス許可がないファイルをアクセスしようとしてもできません．以下の例のよ
うに，エラーになります．
$ ls -ltotal 245
drwxr -xr -x 2 johotaro ugrad-rw -r--r-- 1 johotaro ugrad-rw ------- 1 johotaro ugrad$ chmod u-r file1$ ls -ltotal 245
drwxr -xr -x 2 johotaro ugrad--w-r--r-- 1 johotaro ugrad-rw ------- 1 johotaro ugrad$ touch file1
file1: Permission denied
$

48
7377
239914

1 25 00:45 dir1
1 25 00:44 file1
1 25 00:44 file2

48
7377
239914

1 25 00:45 dir1
1 25 00:44 file1
1 25 00:44 file2

フ ァ イ ル の パ ー ミ ッ シ ョ ン を，記 号 で な く 数 値 で 直 接 設 定 す る や り 方 も あ り ま す．こ れ は
r = 4, w = 2, x = 1 として，オーナー，グループ，他の人の順にその和を並べるやりかたです 2.5．
慣れると一度にすべてのパーミッションの設定ができて便利です．
$ ls -ltotal 245
drwxr -xr -x 2 johotaro-rw -r--r-- 1 johotaro-rw ------- 1 johotaro$ chmod 666 file1$ ls -ltotal 245
drwxr -xr -x 2 johotaro-rw -rw -rw - 1 johotaro-rw ------- 1 johotaro
$

ugrad
ugrad
ugrad

48
7377
239914

1 25 00:45 dir1
1 25 00:44 file1
1 25 00:44 file2

ugrad
ugrad
ugrad

48
7377
239914

1 25 00:45 dir1
1 25 00:44 file1
1 25 00:44 file2

file1 に注目すれば，わかりやすいと思います．ここで途中（6 行目）で出てきた「666」という数値
について説明を加えておきます．左の数値は所有者の権限を，真ん中の数値はグループの権限を，
45

右の数値はその他（所有者でもグループでもない）の人の権限を表します．数値は 4 が読み出し許可，2 が書き込み許可，1 が実行許可を表し，例えば 6 なら 4+2 で「読み出し許可+書き込み許可」という意味になります．つまり，今回出てきた 666 であれば「所有者にもグループにもその他に
も，読み出しと書き込みを許可する」ということになります．数値の詳細に関しては表 2.5 を参照
してください．
表 2.5: 管理者権限を表す数値の詳細

2.7.8

数値

内容

4

読み出し許可2

書き込み許可1

実行許可

7 (4+2+1)

読み出し許可＋書き込み許可＋実行許可

6 (4+2)

読み出し許可＋書き込み許可

5 (4+1)

読み出し許可＋実行許可

3 (2+1)

書き込み許可＋実行許可

open コマンド

open コマンドとは，ファイル・ディレクトリ・URL などを開くコマンドです．Finder などのGUI 環境における，ファイルのダブルクリックに相当します．
$ open file1↑ こ れ で file1 と い う フ ァ イ ル が 開 か れ た ．
$ open .
↑ こ れ で カ レ ン ト デ ィ レ ク ト リ が Finder で 開 か れ た

2.8

システムに関するコマンド

2.8.1

quota コマンド

自分がどれくらいディスクを使用しているかを調べるコマンドです．
$ quota -v
Disk quotas for user s1311350 (uid 5621):
Filesystem 1K blocks
quota
limit
/home
2456883 3072000 3584000
$

grace

files
84863

quota
0

limit
0

grace

この例だと，使用量 (blocks) が 2456883 キロバイト，制限 (quota) が 3072000 キロバイトとなっ
ています．

46

du コマンド2.8.2

ディスクの使用量を表示するコマンドです．指定したファイルと，それをルートとする階層中にある全ディレクトリのディスク使用量を表示します．ここでは，カレントディレクトリ下の各ファ
イル，または，ディレクトリごとのディスク使用量の一覧を表示しています．「-h」によってディ
スク使用量を人間の読みやすい単位に変換し，「-s」によって各ディレクトリのディスク使用量の総計のみを表示しています．
$ du -h -s *
12K
dir1
44M
dir2
200M
dir3
$

← ‘*’ は 後 述 す る ワ イ ル ド カ ー ド

2.9

画像に関するコマンド

2.9.1

convert コマンド

convert コマンドは，画像のサイズや形式を変換するコマンドです．非常に多くの機能を持っていて，ここですべては網羅できないので，ぜひ各自で調べてみてください．
$ convert piture1 .png picture2 .eps
← PNG 形 式 を EPS 形 式 に 変 換$ convert -resize 50% piture1 .png picture3 .png
← サ イ ズ を 縦 横 と も に 50% に 縮 小$ convert -resize 512 x512 piture1 .png picture4 .png
↑ 縦 横 比 を 保 っ た ま ま ， 512 x512 の サ イ ズ に 収 め る$ convert -resize 512 x512 piture1 .png picture5 .png
↑ 縦 横 比 を 保 た ず に ， 512x512 の サ イ ズ に 変 換$

2.10プロセスを扱うコマンド

Unix でプログラムを作ったり作業をしたりしていると，「プログラムが止まらなくなった」「他のウィンドウからプログラムを停止させたい」という状態になることがよくあります．そのようなときに用いるコマンドを説明します．

2.10.1

ps コマンド

ユーザが今どのようなプロセス (プログラム) を動かしているのか調べるためのコマンドです．
$ ps
PID TTY
5978 pts /829522 pts /8

TIME CMD
00:00:00 bash
00:00:00 ps
47

$

ps -U






ユーザ名


のようにすると，そのユーザが動かしているプロセスの一覧が表示されます．

一番右に表示される文字列が実行されているコマンドの名前で，一番左の数字がそれぞれのプロセスに与えられているプロセス ID といわれる番号です．UNIX で同時に動いている多くのプログラ
ムは，このプロセス ID という番号で識別されます．ps aとした場合，全ユーザが動かしているプ
ロセスの一覧を表示できます．
他にも，ps lとすると，プロセスについてのより詳しい情報が得られます．ps uとすると，プロセスの実行開始時間を同時に得ることができます．そして，ps xとすると，端末の直接の制御下にないプロセスも表示できます．

kill コマンド

2.10.2

主に，プロセスを強制終了させるために使われるコマンドです．kill プロセス ID と実行すると，

そのプロセスを強制終了します．これで終了できないプロセスには， kill -KILL プロセス ID が








有効かもしれません．
$ ps
PID TTY
5978 pts /1
29621 pts /1
29522 pts /1$ kill 29621$ ps
PID TTY
5978 pts /829522 pts /8$

TIME
00:00:00
00:00:00
00:00:00

CMD
bash
sleep
ps

TIME CMD
00:00:00 bash
00:00:00 ps

2.11

コマンドを知るためのコマンド

2.11.1man コマンド

本手引きに書かれている説明はごく簡単かつ基本的なもので，細かいコマンドまでは書かれていません．疑問点などがあったり，使用法を忘れてしまった場合や，そのコマンドの詳しい使い方や仕様を知りたいときのために，man というコマンドが用意されています．これは，$ man lsのように用います．これを実行すると，そのコマンドのマニュアルが画面に表示されます．このマニュアルは，表 2.6 のように章が分けてあります． 同じ名前の別のマニュアルが，2 つ以上の章に入っていることがあります．その場合は，man 章番号 コマンド名 のように，章を指定して，自分の




48



表 2.6: 章建て
1章

コマンド

2章

システムコール

3章

ライブラリ関数4章

デバイスファイル

5章

ファイルフォーマット

6章

ゲーム

7章

その他

8章

システム管理コマンド

9章

カーネルルーチン

10 章

その他 (2)

見たいマニュアルを見てください18）．
また，man -k






キーワード


のようにすると，キーワードに関係のあるマニュアル (manual) の項

目名が表示されます．man コマンドのより詳しい使用法は，$ man manのように入力すれば，見ることができます．UNIX を使いこなすためには，man を見る習慣をつけることが大切です19）．

2.11.2

info コマンド

info コマンドでもコマンドについての説明を見ることができます．一部のコマンドの man コマ
ンドの説明では，info コマンドも参照することを指示される場合があるのでそういった場合に info
コマンドを使うと良いでしょう．なお，後述する Emacs の info コマンドとは別物です．
$ info lsのように用います．

2.12

ワイルドカード

ワイルドカード20）は様々なパターンにマッチし，適宜置換されます．似たような名前のファイルや特定の規則に基づいた名前のファイルを扱うときに便利です．
$ ls18） マニュアル内でよくある，「ls(1)」などのようなコマンド名のあとに括弧内に数字が書かれた表記は，括弧内の数字
が章を表わしています (この場合は「1 章の ls」コマンド)．
19） 英語で画面が埋め尽されてうんざりすることがあると思いますが，そう難しい英語ではないので頑張って読みましょう．
20） 正式には “ファイル名の置き換え”，あるいは “パス名の展開” ですが，一般に “ワイルドカード” という名称が浸透しています．

49

a.c
b.c
c.c
d.c
a.java$ ls ?.c
a.c
b.c
c.c
d.c
$ ls a.*a.ca.java$ ls [ab].ca.cb.c$ ls [^ab]. javac.javad.java$ ls [^ab ].*c.cd.cc.javad.java$ ls [c-z]*.[d-z]*
d.javareport .tex$

b.javac.javad.javareport .tex•*
0 文字以上の任意の文字列にマッチします．
•?
任意の一文字にマッチします．
• [pat]pat の中のいずれかの 1 文字にマッチします．‘ˆ ’ を pat の先頭につけることでその補集合にマッチします．
pat には他にも特殊な表現を用いることができます．
表 2.7: pat の例

2.13


abc

a，b，c のいずれか

a-c

上記と同じ

a-z

小文字のアルファベット 1 文字

A-Z

大文字のアルファベット 1 文字

0-9

数字 1 文字a-zA-Z

大小を問わずアルファベット 1 文字

0-9a-zA-Z

すべての半角英数字

ˆ 0-9a-zA-Z

すべての半角英数字以外

tab キーによる補完

入力の途中などに tab キーを押すことで，コマンド名やファイル名などを自動で補完してくれ




ます．

50

例えば gatherheaderdoc というコマンドを実行しようと “gather” まで入力したが，それ以降を覚えていなかった場合， tab キーを押してみます．


$ gather tab$ gatherheaderdoc

残りの部分が補完されました．
また，ファイル名の補完もできます．ls b まで入力して tab キーを押すと，b から始まるファイ

ル名が候補として出力されます．
$ ls b tab
bin/
$




bitbucket / bookmarks /b.xx

候補が一意に定まらない場合，候補を出力するだけにとどまります．

2.14

リモートログイン (remote login)

ネットワークに接続された他の計算機の資源を利用できます．

2.14.1

ssh コマンドネットワークに接続された他の計算機の資源を利用できます．これをリモートログインといいます．詳しい説明や COINS 計算機に学外から接続する場合の注意点は，9.1.3 を参照してください．
ここでは，リモートログインに関するコマンドの使い方についてのみ説明します．
ssh は他の計算機にログインするためのコマンドです．書式は，ssh ログインしたい計算機名 です．


初回接続時には Are you sure you want to continue connecting (yes/no)? というメッセージが表示されます．


https://www.coins.tsukuba.ac.jp/ce/pukiwiki.php 以下にある coins システムの主なホストの
公開鍵のハッシュ値一覧からログイン先のハッシュ値（SHA256 値）があるかどうか確認し，問題がなければ yes と入力します．


ssh 以後のコマンド実行などは，ssh した先の計算機で行われます．ログアウトすれば，元の計算機での作業に戻ります．
$ ssh aloe62 .coins. tsukuba .ac.jp
The authenticity of host ’aloe62.coins. tsukuba .ac.jp (130.158.230.62) ’ can ’t beestablished .
ECDSA key fingerprint is SHA256 :IgUk4WBFxAqR8KmGf1AMw6OfjfSTj+gOq4pNvmVo/z4.
<-SHA256 値
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[ fingerprint ])? yes
Warning : Permanently added ’aloe62 .coins. tsukuba .ac.jp ’ (ECDSA) to the list of
known hosts.
aloe62.coins. tsukuba .ac.jp ’s password : パ ス ワ ー ド を 入 力 す る ． こ れ は 表 示 さ れ な い
aloe62 ~$aloe62 ~$ logout

51

Connection to aloe62 .coins. tsukuba .ac.jp closed .
↑ 接 続 を 切っ た と い う シ ス テ ム か ら の メッ セー ジ．
$ ← 元 の 計 算 機 に 戻っ た．

ssh コマンドに-l ログイン名 というオプションを付けるか，計算機のアドレスの前にユーザ名と@をつけると，指定したログイン名のユーザとしてログインできます ．たとえば，学内の Wi-Fi 等
からログインする場合はこのようになります．
$ ssh s99xxxxx@aloe62 .coins. tsukuba .ac.jp

2.15

コマンドをさらに使いこなす

2.15.1

標準入力，標準出力

通常，シェル上で実行するコマンドの入力はキーボードから行い，ディスプレイに出力されます．これをそれぞれ標準入力，標準出力といいます．
2.15.1.1

リダイレクトリダイレクトとは，標準入力先または標準出力先を変更する機能です．記号 > で，標準出力を指定したファイルに切り替えて，指定したプログラムを実行します．記号 < で，標準入力を指定したファイルに切り替えて，指定したプログラムを実行します．
$ ls -l > file1$ cat file1
total 9drwxr -xr -x 2 johotaro ugrad-rw -r--r-- 1 johotaro ugrad-rw -r--r-- 1 johotaro ugrad
$

4096
0
12

2 15 00:10 dir1
2 17 01:13 file1
2 15 00:10 file2

この例では，ls -lの実行結果を，画面ではなく file1 に出力しています．
2.15.1.2

パイプ

パイプとは，複数のプログラムを同時に実行したり，プログラムの標準出力を，次に実行するプログラムの標準入力につないだりする機能です．記号 | で複数のコマンドをつないで使います．
左側に記述したコマンドが先に実行されます．
$ ls -l | head -n 3
total 9drwxr -xr -x 2 johotaro ugrad-rw -r--r-- 1 johotaro ugrad
$

4096
0

2 15 00:10 dir1
2 17 01:13 file152

ls -lはファイル・ディレクトリの情報を出力するコマンドで， head -n 3は入力されたデータのうち，先頭 3 行を表示するコマンドです．ls -lの出力先を head -n 3 の入力先につなぐことにより，ファイル・ディレクトリの情報のうち，先頭 3 行を表示しています．

メタキャラクタのエスケープ

2.15.2

シェルには# < > | $ { } ( ) [ ] & ; ^ " * ? ~ ’ ‘ \ 空白

タブ #等のシェルが解釈し，コマンドとして渡されないメタキャラクタという文字が存在します．それらをシェルに解釈させるのではなくコマンドの文字として渡したい場合はエスケープをする必要があります．表 2.8 にエスケープの使い方を示します．
表 2.8: エスケープの使い方
形式

エスケープ対象

エスケープできないメタキャラクタ\x「\」の直後の一文字

なし’str’ 「’」でくくられた文字列 「’」"str" 「"」でくくられた文字列 「$」, 「‘」(バッククォート),「"」(ダブルクォート), 「\」,「!」$ echo i\’m\ happy← ’ と （空 白） を エ ス ケー プ す る 例
i’m happy$ echo "<><>"← < と > を エ ス ケー プ す る 例<><>$ echo ’<><>’← ’ で も エ ス ケー プ で き る<><>$ echo \\← バッ ク ス ラッ シュ 自 身 を エ ス ケー プ す る 場 合 は2つ 重 ね る\$

2.15.3

シェル変数と環境変数

シェルではシェル変数と環境変数の 2 種類の変数を使用できます．環境変数は子プロセスに変数が引き継がれますが，シェル変数は引き継がれません．
2.15.3.1

シェル変数の代入と参照

シェル変数の定義は 変数 名＝ 値 で行います．
$ X=100$ echo $X
100$← X と い う 名 前 の シ ェ ル 変 数 に 100 を 代 入 す る← 値 を 参 照 し た い 場 合 は ＄変 数 名 の よ う に す る．

53

2.15.3.2

環境変数の代入と参照

環 境 変 数 の 定 義 は export 変数 名＝ 値 で 行 い ま す．あ ら か じ め 定 義 し た シ ェ ル 変 数 を
export シェ ル変数 で環境変数に変えることもできます．
$ export Y=200← X と い う 名 前 の 変 数 に 200 を 代 入 す る$ echo $Y← 値 を 参 照 し た い 場 合 は ＄変 数 名 の よ う に す る200$ Z=300$ bash← 子 プ ロ セ ス と し て bash を 起 動 す る$ echo $Z← シェ ル 変 数 で あ る Z
は子プロセスに引き継がれないため何も表示されない$ exit← 子 プ ロ セ ス と し て 起 動 し た bash を 終 了 す る$ export Z← シェ ル 変 数 を 作っ て か ら 環 境 変 数 に 変 え る こ と も 可 能$ bash← 子 プ ロ セ ス と し て bash を 起 動 す る$ echo $Z← Z を環境変数にしたので子プロセスに引き継がれた300$

2.15.3.3

変数の削除

変数の削除は環境変数，シェル変数共に unset 変数名 で行います．
$ X=100$ echo $X
100$ unset X$ echo $X← X と い う 名 前 の シェ ル 変 数 を 削 除← X という変数は削除されたため何も表示されない$ export Y=200$ echo $Y200$ unset Y← Y という名前の環境変数を削除$ echo $Y← Y という変数は削除されたため何も表示されない$

2.15.3.4設定されている変数の確認

シェル変数を確認したい場合は set コマンドを，環境変数を確認したい場合は export コマンドをそれぞれ引数なしで入力します．シェル変数や環境変数にはあらかじめ設定されているものがあり，現在の環境の状態や設定を保持しています．

2.15.4

ディレクトリスタック

ディレクトリを移動する方法には cd コマンドのようにパスを直接指定する方法の他に，ディレクトリスタックを用いる方法があります．ディレクトリスタックはディレクトリのパスを後入れ先
54

出しの形式で記憶してくれます．これにより，遠いディレクトリ間の移動が楽に行えます．
ディレクトリスタックの一番先頭にはカレントディレクトリのパスが入っています．後入れ先出しで記録するため，ディレクトリを取り出すときは最後に入れたディレクトリパスが最初に取り出されます．
ディレクトリスタックを操作するコマンドには pushd と popd があります．pushd コマンドは引数に渡したディレクトリパスをスタックに入れて，そのディレクトリに移動するコマンドです．
popd コマンドはディレクトリスタックの先頭のディレクトリパスを取り出して，次のディレクト
リに移動する命令です．dirs コマンドを用いるとディレクトリスタックの現在の状態を確認できます．
以下にディレクトリスタックの使い方の例を示します．
$ dirs← 現 在 の ディ レ ク ト リ ス タッ ク の 状 態 を 確 認 す る~$ pushd /proc← /proc を デ ィ レ ク ト リ ス タ ッ ク に 入 れ て /proc に 移 動/proc ~$ pushd /var/log← /var/log を デ ィ レ ク ト リ ス タ ッ ク に 入 れ て /var/log に 移 動/var/log /proc ~$ pushd /usr/bin← /usr/bin を デ ィ レ ク ト リ ス タ ッ ク に 入 れ て /usr/bin に 移 動/usr/bin /var/log /proc ~$ popd← ディ レ ク ト リ ス タッ ク の 一 番 先 頭 の ディ レ ク ト リ パ ス を 取 り 出 し て 移 動/var/log /proc ~$ pwd← デ ィ レ ク ト リ ス タ ッ ク の 一 番 先 頭 が /var/logに なっ た の で カ レ ン ト ディ レ ク ト リ/var/log
も /var/log に 変 わ っ た$ popd← ディ レ ク ト リ ス タッ ク の 一 番 先 頭 の ディ レ ク ト リ パ ス を 取 り 出 し て 移 動/proc ~$ pwd
← デ ィ レ ク ト リ ス タ ッ ク の 一 番 先 頭 が /procに な っ た の で カ レ ン ト デ ィ レ ク ト リ も /proc に 変 わ っ た/proc$

また， 〜数字 とするとディレクトリスタック内のディレクトリパスを表すことができます．
$ pushd /var/log/var/log /proc ~$ pushd /usr/bin/usr/bin /var/log /proc ~$ dirs -p -v← dirs コ マ ン ド に -p -vと オ プ ショ ン を 渡 す と 見 や す い 形 式 で 出 力 さ れ る
0 /usr/bin
1 /var/log
2 /proc
3 ~$ cd ~2← ディ レ ク ト リ ス タッ ク の （０ か ら 数 え て） ２ 番 め に 移 動
$ pwd
/proc

55

$ dirs← cd
コ マ ン ド で 移 動 し た た め カ レ ン ト ディ レ ク ト リ の パ ス を 示 す 先 頭 以 外 は 変 わ ら な い
0 /proc
1 /var/log
2 /proc
3 ~
$

2.16

その他有用なコマンド

2.16.1

alias コマンド

このコマンドを用いると，良く使うコマンドやオプションに別な名前を付けることが出来ます．
alias 自分で付けたい名前 = ’ コマンド列 ’ で定義します．






$ ls
dir1 file1 file2$ alias lls=’ls -l -F’$ lls
total 245
drwxr -xr -x 2 johotaro ugrad-rw -rw -rw - 1 johotaro ugrad-rw ------- 1 johotaro ugrad
$



48
7377
239914

1 25 00:45 dir1
1 25 00:44 file1
1 25 00:44 file2

決まったオプションでしか使わないコマンドや名前の長いコマンドなどを alias で別名にすることで，使いやすくなります．ただし，iTerm 上で設定したエイリアスは，1 度 iTerm を閉じると消えてしまいます．
より高度な技術を身につけたい人は，シェルとは何か，また，.bashrc や.zshrc とはどのようなファイルかを学ぶと，ターミナルを開くたびにこのエイリアスをロードするようにできるでしょう．このように，いくつかのヒントを元に，自分の環境をカスタマイズしていくと，少しずつ上達
していきます．たとえば，ホームディレクトリにある.bashrc というファイルにコマンドを書き加えておくと，そのコマンドは iTerm でウィンドウを開くたびに実行されます，といったことから，
自分で環境をカスタマイズするヒントを得られるようになるでしょう．
以下に，便利な alias の例を示します．
alias ll=’ls -l’alias lla=’ls -al ’alias lat=’ls -tal ’alias lt=’ls -tl ’alias la=’ls -A’alias l=’ls -CF ’alias u=’cd ..’alias uu=’cd ../../ ’56

alias uuu=’cd ../../../ ’2.16.2

nkf コマンド

文字コードと改行コードを変換するコマンドです．Windows などと相互にファイルのやりとりをすると，時々 UNIX から持っていったテキストファイルが読めないことがあります．または自分で作った Web ページが文字化けしてしまって正しく表示されなかったりすることがあります．
そういうときにテキストファイルの文字コード・改行コードを変換してくれるのが nkf コマンドです．
書式は nkf オプション 変換前ファイル名 > 出力先ファイル名 21）となります．オプションは，出力し












たい文字コードによって-e（日本語 EUC），-j（JIS コード），-s （シフト JIS コード），-w（UTF-8）のどれかから選び，改行コードも-Lu (UNIX)，-Lw (Windows)，-Lm (Mac OS 9 以前の Macintosh)の中から選びます．以下は，Windows で作成したテキストファイルを UTF-8 に変換する例です．
22）

$ ls
file1
$ locale
LANG =" ja_JP.UTF -8"
LC_COLLATE =" ja_JP.UTF -8"
LC_CTYPE =" ja_JP.UTF -8"
LC_MESSAGES =" ja_JP.UTF -8"
LC_MONETARY =" ja_JP.UTF -8"
LC_NUMERIC =" ja_JP.UTF -8"
LC_TIME =" ja_JP.UTF -8"
LC_ALL=$ cat file1
śńォ çÁľŕ¡eťğÁyľçhãć � òð] � Buă � Aă � v@ewşţłçãðUèÁAÿÁãê � éðàľţłÁ¡BAăă¿ćłçuă¡Á¡çAéN 悤 éñůàAćŕ � źñív@ś¿tv¿ � èużêţàĺOxćśÁ¡çv@ğðćÅ$ nkf -w file1 > file2$ ls
file1 file2$ cat file2
こ の と き 後 か ら 追っ か け て 来 た 父 親 は 草 原 の 中 に 立っ て 遥 か に 堤 防 の 上 を 白 い 塊 が 飛 ぶ の を 望 ん だ。
「あ れ だ、 あ れ だ」
父 親 は 指 さ し な が ら 後 を 振 り 返っ て、 ずっ と 後 れ て 駈 け て 来 る 妻 を も ど か し がっ た。 妻 は、 は あ は あ 言 い21） この２つのファイル名を同じにしてしまうとそのファイルが消えてしまうので注意してください．
22） 岡本かの子著：岡本かの子全集 5 ちくま文庫 筑摩書房 1993 年「快走」 http://www.aozora.gr.jp/cards/000076/
card50618.html

57

ながら
「あ な たっ た ら、 ま る で 青 年 の よ う に 走 る ん で す も の、 追 い つ け や し ま せ ん わ」
妻のこの言葉に夫は得意になり「そ れ に し て も お 前 の 遅 い こ とっ た ら」
妻は息をついで「こ れ で も 一 生 懸 命 だ も ん で、 家 か ら こ こ ま で 一 度 も 休 ま ず に 駈 け て 来 た ん で す か ら ね」
「俺 達 は 案 外 ま だ 若 い ん だ ね」
「お ほ ほ ほ ほ ほ ほ ほ ほ ほ ほ」「あ は は は は は は は は は は」
二 人 は 月 光 の 下 を 寒 風 を 切っ て 走っ た こ と が 近 来 に な い 喜 び だっ た。
二 人 は 娘 の こ と も 忘 れ て、 声 を 立 て て 笑 い 合っ た。
$

基本的に UNIX では自動的に文字コードは判別してくれるので，普段あまり用は無いかもしれませんが，他のシステムとファイルのやりとりをする場合は注意が必要です．

2.16.3xclock，xcalc コマンドそれぞれ時計23），電卓です．

2.17

コマンドリスト

今紹介したものを含め，UNIX にはたくさんのコマンドがあります．それらを表 2.9 にまとめました．各コマンドの詳細は，man コマンドを用いるなどして調べてください．
表 2.9: コマンドリスト
コマンドの機能

コマンド名(ファイルシステム関連)
ディレクトリを移動します．

cd

ディレクトリスタックを操作します．

pushd, popd

ファイルのパーミッションを変更します．

chmod

ファイルのコピーをします．

cp

ディスク使用量を表示します．

du

ファイルのリンクをします．

ln

ディレクトリにあるファイル名を表示します．

ls

ディレクトリを作成します．

mkdir

ディレクトリを削除します．

rmdir

ファイルの移動，ファイル名の変更をします．

mv

ファイルを削除します．

rm

カレントディレクトリを表示します．

pwd23） 時々狂っている時があるかもしれませんがその時は管理者まで連絡をお願いします．

58

表 2.9: コマンドリスト
コマンドの機能

コマンド名

ディレクトリスタックの現在の状態を表示します．

dirs

ファイルの圧縮・展開をしますtar(一般的な作業コマンド)
テキストファイルの内容を表示します．

cat，more，lv

日付・時刻を表示します．

date

カレンダーを表示します．

cal

他の計算機でコマンドを実行します．

ssh

ネットワーク上のホスト間でファイルをコピーします．

scp

プログラムの実行時間を計測します．

time

ウィンドウに表示されている画像をファイルに保存します．

xwd

グラフを書きます．

gnuplot

図を書きます．

tgif

絵を書きます．

xpaint，gimp

画像形式の変換や，拡大縮小などの編集をします．

convert, sips(「フィルタ」として使われるもの)
ファイル内の，指定した文字列を含む行を抜き出します．

grep，egrep

ファイルの内容を，先頭から指定した行数だけ表示します．

head

ファイルの内容を，末尾から指定した行数だけ表示します．

tail

ファイルの内容を，行単位でソートして表示します．

sort(プロセスに関するもの)
プロセスにシグナルを送ります．

kill

計算機で動いているプロセスの情報を表示します．

ps，top，pstree(プリント関連のコマンド)
印刷をします．

lp

プリンタへの印刷の要求を取り消します．

cancelプリンタへ登録されているジョブの確認をします．

lpstat(その他のコマンド)
コマンドの説明を表示します．

man, info

その計算機にログインしている人を表示します．

who，finger

自分のユーザ名を表示します．

whoami

指定したユーザのユーザ ID やグループ ID などを表示します． id
指定したユーザのグループ ID を表示します．

groups

その計算機で誰が何をしているかを調べます．

w，lastファイルやディレクトリの所属グループを変更します．

chgrp

59

表 2.9: コマンドリスト
コマンドの機能

コマンド名

システムのアーキテクチャを表示します．

arch

60

第3章

Emacs

本章では UNIX や Linux における多機能エディタ Emacs (Editor MACroS の略称) の説明をします．マニュアルは公式の物は GNU Emacs Manuals Online1）があります．エディタ (editor) とはファイルを編集するツールです．画面上にファイル内容を表示し，その内容を編集できます．プロ
グラムのソースコードやテキスト文書等を書く場合にはエディタもしくはエディタに似た機能を持ったソフトウェアが必要となります．
Emacs は そ の マ ニ ュ ア ル (The GNU Emacs Manual) 内 で Emacs 自 身 を “the extensible,
customizable, self-documenting, real-time display editor” （拡張，カスタマイズ可能で，自己説明的でリアルタイム表示を行うエディタ）と説明しています．この説明どおりに Emacs はプログラムの記述をサポートするように拡張できる，など拡張性に非常に富んでいます2）．
ここでは，Emacs の基礎知識と基本的な操作を解説しています．

3.1

Emacs 基礎知識

本節では Emacs について知っておくべき，また Emacs についてわからないことがあった時のヘ
ルプの使い方などについて記述します．Emacs を使用する際や，本章を読み進める際にもしもわからないことがあった場合，この節を読みに戻ってきてください．

3.1.1

入力表記

Emacs は歴史的経緯により入力するキーの表記が独特な表記となっています．初心者の方にはわかりにくいでしょうが，Emacs のドキュメントや資料は初心者向けを除いたものの大半が以下のような表記になっているためこの章はこの表記で統一されています．
Meta キー

3.1.1.1

Meta キーについて少し解説が必要でしょう．Meta キーというのは Emacs が作られて間もない頃に使われていた MIT のシンボリック製 LISP マシン用キーボード3）にあった特別な修飾キーです．昔にあったコンピューターやキーボードの名残と思ってください．今では Meta キーの代わりとして， Alt や ESC などのキーが使われています．例えば M-x は ESC x で置き換えられるなど，
















ESC は Meta キーの代わりになることを覚えておくとよいでしょう．
1） http://www．
gnu．
org/software/emacs/manual/
2） 事実，この章はカスタマイズされた Emacs で書かれています
3） スペースデカットキーボードとも知られています61

表 3.1: Emacs のキー表記
表記

キー操作



C-c


M-x


ESC


ESC x


SPC


TAB


RET


DEL



ctrl を押しながら





c




を押す

Meta キー，代替キーとして










Esc (Escape キー) を押す． C-[ でも同じ









Esc を押した後





Space







x




を押す（押しながらではありません）

(Tab キー) を押す． C-i でも同じ



















(Return キー) を押す． C-m でも同じ

(option キー) を押しながら x を押す(Delete キー) を押す．







の上にある




のことです

コマンドの中断

3.1.2

始める前に，何かがあったときのためにコマンドの中断方法を覚えておきましょう．間違ったコ
マンドを選択してしまったりすると，Emacs が自分の思い通りに動いてくれなくなることがあります．なんか変だぞと思ったら，まずは C-g を押してみましょう．これはコマンドの実行を中断

する操作で，大抵の場合はこれでなんとかなります．1 回押してもまだだめなときは，何回か押してみてください．

困ったときは C-g ．


ヘルプ

3.1.3




C-h ?


とタイプしてみましょう．Emacs が持っているヘルプ関連のコマンドの全てが，ヘルプ

バッファ4）が出てきて表示されます．（ C-g で抜けます）．数多くのヘルプがありますが，一部を除

いてほとんどが英語で出力されます．そのうちで，ヘルプコマンドのヘルプはすでに説明しました．これ以外に特に役立つものを説明します．
モード C-h m ．このコマンドは現在の主モードの簡単な解説とそのバッファで設定されているキー

バインドの解説がヘルプバッファに表示されます．
キー割り付け C-h b ．キーに割り当てられているコマンドの一覧がヘルプバッファに表示されます．


コマンドを見つける C-h a ．ここで，文字列を入力すれば，その文字列を含むコマンド全ての内容


がヘルプバッファに表示されます．
キーに割り当てられているコマンドの表示 C-h c ．ここで知りたいキーを入力すると，それに割り

当てられているコマンドが表示されます．

4） ヘルプ情報を表示するバッファ

62

3.1.4

チュートリアルEmacs を初めて使う人は，Emacs の独特なキーバインドなどがとても難しいものに見えるでしょう．Emacs には，初心者が実際に Emacs を操作しながら学習するためのチュートリアルが用意されています．Emacs を使おうと思っている人ならばこの章の解説に留まらず，行ってほしいのがこのチュートリアルです．
Emacs を起動して「 M-x help-with-tutorial」とタイプしてください．Emacs 入門ガイドが表示され，チュートリアルが始まります．画面の指示に従って，自分でキーボードを操作してください．
チュートリアルが終わる頃には，Emacs のキー操作の基礎が身についていることでしょう．しかしひと通り行うには時間がかかりますので，時間があるときに余裕を持って行うと良いでしょう．
C-SPC で Spotlight 検索が起動してしまう場合


現在，Spotlight 検索はデフォルトで ⌘-SPC に割り当てられていますが，古い環境設定が引

き継がれている場合に C-SPC で Spotlight 検索が起動してしまうことがあります．これを無効にするためには以下のように操作します．
1. Dock から「システム環境設定」をクリックする．
2. 出てきたウィンドウで，「キーボード」を選ぶ．
3. 出てきたウィンドウの「ショートカット」タブを選ぶ．
4. 左側のボックスで「Spotlight」を選ぶ．
5. 右側のボックスの「Spotlight 検索を表示」のチェックを外す．

63

3.2

実行と終了

3.2.1

実行

下記のようにターミナルに入力してみましょう．
emacs file.txt

入力すると図 3.1 のようになり，file.txt というファイルが編集できるようになります．

図 3.1: Emacs CUI 画面

3.2.1.1

画面の構成

画面の説明を図 3.1 を用いて行います．まず一番上ですが，これはタイトルバー (title bar) と呼ばれており，ウィンドウの名前（ここでは*Emacs* ）が表示されています．ウィンドウの右端にある縦長の長方形の部分は，スクロールバー (scroll bar) といいます．マウス操作でスクロールさせたいときに使います．下から 2 行目の色が反転している行をモードライン (mode line) といい，編集中の状態（ファイル名など）が表示されています．最下行はエコーエリア (echo area) といい，Emacs がメッセージを表示したりします．

3.2.2

終了

ファイルを編集したらファイルを保存して Emacs を終了させましょう．ファイルを保存するた
めにはキーボードで
C-x C-sと操作します．
次に，Emacs を終了させるためにキーボードで64

C-x C-cと操作します．3.1.1 項のおさらいになりますがこれは， ctrl を押しながら

ctrl を押しながら






c






x


を押し，その後を押すという意味です．

さて，Emacs のウィンドウが消えましたか．もし消えない場合は，エコーエリアを見てください．編集中で保存していないファイルがあるときには，保存するかどうか確認のメッセージが表示されています．保存する場合には「y」キーを押してください．

編集

3.3

本節では Emacs における文書の編集方法を紹介します．ここでは，基本的なことを紹介します．

3.3.1

文字の入力

Emacs ではキーボードから打った文字はそのまま入力されます．「hello emacs」とタイプすると Emacs には次のように表示されます．
hello emacs

通常は挿入するようになっており5）カーソル位置にすでに文字がある場合には上書きされずに挿入
されます．
at

a と t の間にカーソルを合わせて bou と押す
about

3.3.2

ファイル操作

作成した文書は，ファイルに保存しないと終了時に消えてしまいます6）．ここでは読み書き等のファイル操作について説明します．
ファイルを読み込むには C-x C-f を使います． C-x C-f と押すとエコーエリアに












Find File :~/のように表示され，入力待ちの状態になります．ここでは，通常の編集コマンドのほとんど（カーソル移動，文字の挿入・削除等）が使えます．既に，Emacs を起動したディレクトリが入力された状態で表示されますが，消して自分で指定できます．ファイルの指定には，ホームディレクトリを示す~の他に，カレントディレクトリを示す.や 1 つ上のディレクトリを示す..なども使用できます．もし存在しないファイル名を入力した場合にもエラーにはならず，新規にファイルを作成する
ものとみなされます．
5） M-x ，overwrite-mode で上書きモードを適用でき，上書きモードのときはモードラインに Ovwrt と表示されます．
もう一度 M-x overwrite-mode と入力すると上書きモードを解除できます．
6） 逆に言えばファイルに保存さえしなければ，何を書いても終了時に消えてくれます．








65

読み込んだファイルを編集後，現在の編集内容を保存するには， C-x C-s を押します．


これまでに示したファイル編集の流れをまとめると，次のようになります．
1. Emacs を起動する
2. C-x C-f でファイルを指定する




3. 編集する
4. C-x C-s でファイルを保存する

5. C-x C-c で Emacs を終了する

「emacs foo.txt」のように編集したいファイル名を付けて Emacs を起動すれば，起動した後に「 C-x C-f foo.txt」でファイルを読み込んだのと同じになります．


*scratch* バッファ7）のようにファイルと結び付いていないバッファの内容をファイルに保存するときや，編集中のファイルとは違う名前のファイルに保存したいときは， C-x C-w を使用します．


また，カーソル位置に指定したファイルの内容を挿入するコマンド C-x i もあります．


これらのコマンド等でファイル名を入力する際には，補完機能 (completion) を使うことができます．これはファイル名の最初の一部分を入力した時点で TAB を押すと，残りの入力を Emacs

が補完して確定してくれる機能です．このとき，ファイル名の候補が複数ある場合は一致している部分だけを補完し，候補のリストを表示します．
Emacs ではファイル名の入力以外にも， M-x による関数名の入力など，さまざまな局面で補完

機能を提供しています8）．とても便利な機能なのでぜひ利用してください9）．というよりも，タイ
プするキーの数も入力ミスも減って楽になるので，作業効率のためにも積極的に使ってみてくだ
さい．
3.3.2.1

自動セーブ

Emacs では，編集中に計算機がダウンした場合などに備え，定期的にファイル名の前後に#を付加したバックアップファイルにファイルを保存（自動セーブ）する機能を備えています．実際に編集中のファイル (test．txt) があるディレクトリをみると，次のようになっています．
$ ls -a.
.# test.txt$..

test.txt

このファイルはファイルの保存が正常に行われた時点で削除されます．Emacs でファイルを読み込むときに自動セーブしたファイルが残っていれば，次のような警告がエコーエリアに表示されます．
Auto save file is newer; consider M-x recover -file7） 試し書きや EmacsLisp の確認などに使うバッファ8） プログラムのソースファイルを書いているときに，長い変数名の先頭何文字かをタイプしたところで M-/ を押してみたりしてください
9） UNIX のコマンドラインでも，入力時に補完機能の使えるシェルがあります．みなさんが標準で使っている bash の場合，補完するには Emacs と同様に TAB を使います．


66



この場合，「 M-x recover-file」を入力して C-x C-f の場合と同様にファイルを指定すれば，バック










アップファイルからファイルを復元します．直接「 C-x C-f 」でバックアップファイルを指定して

読み込むと，Emacs の内部コードで保存されているために読めないことがあります．必ず「 M-x

recover-file」を使いましょう．

カーソルの移動3.3.3

本節では Emacs 上でのカーソルの動かし方を説明します．カーソルの動かし方，と聞いて矢印
キーでいいじゃないか，と思った人はホームポジションの位置から矢印キーに指を動かしてみてください．右手全体を動かさないと届きませんよね．右手を動かさずに移動できたらいいと思いませんか．また，文の最後に行くために文字数の分だけキーを叩いていませんか．キーを 2 つ押すだけで文頭や文末に移動できたらいいと思いませんか．Emacs ではこれらが実現できます．カーソルの操作方法は表 3.2 の通りになります．
表 3.2: 移動コマンド
キー

等価なキー

C-n








C-p








C-f







C-b







C-a


C-e


C-v


M-v


M-<


M->

カーソルを次行に移動 (next-line)









C-l

カーソルを左に移動 (backword-char)
カーソルを行頭に移動



end


pagedown


pageupC-home





C-end


M-g g









カーソルを右に移動 (forward-char)home

M-x goto-line

カーソルを前行に移動 (previous-line)





機能



カーソルを行末に移動

カーソルを次ページに移動
カーソルを前ページに移動

カーソルをファイルの先頭に移動
カーソルをファイルの最後に移動

カーソルを行番号で指定した行に移動
カーソルのある行が画面中央にくるよう画面を書き直す

文字・行の削除

3.3.4

入力した文字の消去には，ふたつのコマンドがあります．カーソル位置の右側の文字を消す C-d

と，カーソル位置の左側の文字を消す DEL です．
• C-d による文字の消去




about

下の o の位置で C-d を押す


abut

67





• DEL による文字の消去




about

下の b の位置で DEL を押す




aout

Emacs では「改行」も文字として扱われるので，行末で C-d を押すか行頭で DEL を押せば行を








連結できます．
1 行消去するには C-k を使います．


goto fail;goto fail;goto fail;二行めの最初の g にカーソルを置き C-k を押すgoto fail;goto fail;

このようにカーソルがある場所から行末までが削除されました．なお， C-k で消去された行は記

憶されています．これを C-y でペースト (paste) する（貼り付ける）ことができます10）．


では今度はペーストしてみます．
goto fail;goto fail;

最後の行の末尾で改行し C-y を押すgoto fail;goto fail;goto fail;本節のコマンドをまとめると表 3.3 のようになります．
表 3.3: 削除関連コマンド
コマンド 機能


C-d


DEL


C-k


C-y

カーソル位置の文字を削除








カーソルの左側の文字を削除
カーソル位置から行末までを削除し，削除リングに記憶削除リングの内容をカーソル位置に挿入10） ちなみにですが，この削除とペーストという言い方は Emacs の文化としては一般的ではありません．本当はキル(Kill)．とヤンク (Yank) と呼びます．

68コピー，カット，ペースト

3.3.5

文書の一部を消して他の場所に移動させることをカット&ペースト (cut & paste) といいます．
C-k と C-y を組み合わせるとカット&ペーストができることはすでに示しました．次に任意の文字








列に対するカット&ペーストを説明しましょう．
Emacs では， C-SPC または C-@ を使ってバッファの好きな場所に印 (マーク (mark) ) を付ける
ことができます．マークは C-SPC を押したところのカーソルにつきます．マークは目には見え

11）





ませんが，Emacs はその場所を覚えています．次にカーソルを適当な位置に移動します．マークとカーソルの間をリージョン (region) といいます．例えば次の図で文字 L の上で C-SPC を押した

後（下線で印をつけています），文字 A の所にカーソルを移動したとします．
LispAlien
この場合，Lisp がリージョンとなります．A は含まれません．リージョンは C-w でカットでき

ます．カットした文字列は削除リング (kill ring) と呼ばれる領域に記憶されており， C-y で任意の



場所にペーストできます．
これに対して，文書の一部を消さずに他の場所へ写すことをコピー&ペースト (copy & paste) といいます． M-w はリージョンを消さずに削除リングに記憶するコマンドです．これも C-y でペー

ストできます．
1. C-SPC または C-@ でリージョンの最初または最後をマーク








2. リージョンの最後または最初にカーソルを移動
3. 移動の場合は C-w ，コピーの場合は M-w を使って，リージョンを削除リングに記憶








4. 移動またはコピー先にカーソルを移動して， C-y でペースト

本節で使用したコマンドをまとめると表 3.4 のようになります．
表 3.4: コピーアンドペーストコマンド
コマンド

機能

C-SPC または C-@

マークをセット
リージョンをカットし，削除リングに記憶



C-w


M-w


C-x C-xリージョンを削除リングに記憶

カーソル位置とマークを交換

11） もしも SPC の意味がわからないなどの場合は 3.1.1 節を読み直してください．

69

編集の取り消し

3.3.6

Emacs には，誤って文字を削除した場合などに備えて，編集を取り消す機能（表 3.5）がありま
す．これは C-x u または C-_ を使います．何度も押せば，押した回数分だけさかのぼって編集を取








り消すことができます．アンドゥ (Undo) や「元に戻す」といえばピンとくる人もいるでしょう．
表 3.5: 困った時のコマンド
機能

C-g

コマンドの中断



コマンド



3.3.7

検索・置換

3.3.7.1

検索

C-x u または C-_

最後の（直前の）変更を取り消す

検索 (search) とは，探したい文字列にカーソルを移動することです．Emacs では一般的にインクリメンタルサーチ (incremental search) という方法で文字列を検索します．インクリメンタル
サーチでは，検索対象の文字をタイプするたびに，その次点で入力された文字列と一致する文字列のある場所へカーソルが移動します．つまり，入力するたびに一文字ずつ検索していき結果を絞り込んでいくわけです．一般的な検索と違い，検索したい文字列を全部打ち込んでから検索するわけ
ではありません．
下のほうへ検索するには C-s ，上のほうへ戻りながら検索するには C-r を使います． C-s を押す












と，エコーエリアに
I-search:と表示されます．ここで検索したい文字列をタイプすると，一致する文字列のある場所へカーソルを移動させることができます．検索中 C-s を繰り返し押すと，次々に一致する文字列のある場所へ

カーソルが移動します



．

12）

検索文字列の入力を誤った場合は DEL を押すと最後の入力を取り消し，カーソルは直前の位置


へ戻ります．
検索を終了するには RET を押します13）．また， C-g を押して検索を中止した場合には，カーソ








ルは検索を開始する直前にあった位置に戻ります．
文字列を一度に指定して検索したい場合は， C-s ( C-r ) を押した直後に RET を押します．これに












よってエコーエリアの表示が12） 標準では文字列の検索と置換は大文字と小文字を区別しません．これを区別したい場合は， C-s ( C-r ) とした後でM-c とすると大文字と小文字を区別するようになります（このときエコーエリアに case sensitive と表示されます）．
もう一度 M-c とすると区別しなくなります．
13） RET がわからない場合 3.1.1 節をみてください．










70







I-search:から
Search:に変わり，検索したい文字列を一括して入力してから検索を始めるモードになります．文字列をタイプして RET を押すと文字列が検索できるようになり，この場合もさらに C-s ( C-r ) を押すことに












よって次の候補に移動できます．
3.3.7.2

置換

置換 (replace) とは，ある文字列を他の文字列に置き換えることです． M-% を押すと，エコーエ

リアで置換前の文字列と置換後の文字列を尋ねてきます．それぞれ入力するとカーソル位置から検索を始め，検索文字列が見つかった場合そこにカーソルが移動し，入力待ちの状態になります．文
字列を置き換える場合は SPC または y を，置き換えずに次の候補に移動する場合は n または

DEL を押します．置換を終了するには










q ，中止するには C-g を押します．全て








y




の場合は !
を押すと良いでしょう．
本節で使用したコマンドをまとめると表 3.6 のようになります．
表 3.6: 検索・置換コマンド
機能



C-s

ファイルの終わりに向かってインクリメンタルサーチ



C-r


C-s RET

C-r RET


M-%


コマンド

3.3.8



ファイルの始めに向かってインクリメンタルサーチ








M-x replace-string

ファイルの終わりに向かって一括入力型検索
ファイルの始めに向かって一括入力型検索
対話的に置換
一括型置換

編集のまとめ

本節では Emacs で用いる編集の基本的なコマンド等を紹介してきました．具体的には以下を紹介しました．
• 文字の入力，日本語の入力• カーソルの移動• 文字・行の削除，コピー，カット，ペースト• 編集の取り消し• 検索・置換71これらを用いることで不自由なく文書作成はできるはずです．やりたいことが文書を書くことやごく簡単なプログラムを書くだけならばここまでをしっかり覚えれば十分ですが，最近のプログラ
ミング言語や後に出てくる LATEX (第 6 章参照) のような構造化文書を書くときにはエディタのサポートがほぼ必須とも言えるため，さらに特殊な機能を覚えると良いでしょう．このようなちょっと特殊な機能については第 3.5 節にて紹介していますので参考にしてください．

3.4

Mew

ここでは，Mew を使ってインターネットメールやネットニュースを読み書きする方法について説明します．

起動してみましょう

3.4.1

Emacs で，
「 M-x mew」とするか，


emacs -f mewのようにコマンドラインで入力すると，Mew が起動します．
初回起動時には，次のように入力を求められます．
Type ’C-uZ ’ to collect IMAP folders !

指示にしたがって C-u Z と入力しましょう．


また，以下のようにメールを受信するためのパスワードを訊かれる場合があります．
IMAP password ( s9912345@viola6 .coins. tsukuba .ac.jp):のようにエコーエリアに表示された場合，ログインパスワードを入れてください．
Mew を終了するには， q を押します．


メールを読む3.4.2

Mew を起動したときに，あなた宛てに届いていたメールは自動的に取り込まれます．その後届いたメールは，Summary モードで i を押すと取り込むことができます．


SPC






を押していくだけで，メッセージを順に読んでいくことができます．また， DEL で上にス

クロールさせることができますし， RET や










で一行ずつスクロールさせることもできます．この他，表 3.7 に示すようなコマンドを使ってページを操作できます．

3.4.3

メールを書く

メールを書くにはいろいろ方法がありますが，簡単な方法は，Summary モードで w を押すことです．Write の w と覚えましょう．すると，以下のようなバッファが表示されるはずです．
To:
Subject :From: s9912345@coins . tsukuba .ac.jp Fcc: %backup
72

X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 ( HANACHIRUSATO )----これを Draft モードといいます．Draft モードにおいて，“—-” より上をヘッダ，下を本文と呼びます．ここで，ヘッダの To: に続けて，送る相手のメールアドレスを正確に入れましょう．少しでも間違えると，絶対に届きません（もしくは，まったく違う人に届くかも知れません）．ここで，今までに書いたことのあるアドレスであれば TAB を使って補完できます．次に，Subject: に続けてメールの題名を入れます．できるだけ「名が体を表した」題名をつけるようにしましょう．そうすれば，受け取った方は題名を見るだけで中身を容易に想像できますし，あとで「あの用事のメー
ルはどれだっけ？」と探すときにも便利です．
さて，ここまで入力し終わったら，カーソルを “—-” より下の本文のところへ移動し，本文を書きましょう．メールの本文は，全角で 35 字くらいで改行するようにしましょう．こうすることで相手も自分も読みやすいですし，メールの文を引用して返信する際に便利です（返信については後述します）．手動で改行するのが面倒な場合は， M-q を使いましょう．自動的に改行してくれます．


また，題名 (Subject:) を日本語で書くと，受け取る人の環境によっては読めない場合があります．受け取る人の環境で読めるかどうかわからない場合は，題名を英数字で書けば問題ありません．メッセージを書き上げたら， M-> で文末に移動します．ここで，文末の無駄な改行があったら， DEL を押してそれを消してください．


ホームディレクトリの下に ．signature というファイルを作っておくと， C-c TAB でそのファイ

ルを挿入できます．signature は署名という意味で，このファイルには名前とメールアドレスなどを書いておき，文章の最後につけるとよいでしょう．ただし，4 行ほどまでにしましょう．あまりに長い署名だと，迷惑がられます．
いよいよあとは送信するだけになったら， C-c C-c を押しましょう．すると，








Really send this message ? (y or n)と出るので， y を押すと，メールが送信されます．


うまくいきましたか？
なお，書いていたメールを送信せずに破棄するには， C-c C-q を使います．


3.4.3.1



メールの返事を書く届いたメールに返事を書くには，そのメールにカーソルを合わせて
a

または A を入力しま

す．Answer の a と覚えると良いでしょう． a だとメールの内容は何も引用されませんが， A だ

と各行の頭に > がついて







引用されます．おそらく A を利用することの方が多いでしょう．題

14）





名には，元のメールの Subject の頭に Re: がついたものが自動的につけられます．なお，re は「レス」や “response” の略などではありません．「〜について」というれっきとした英単語（もとはラテン語）です．

14） この印は，ホームディレクトリの .mew.el というファイルを編集することで違うものにかえられます．

73

を入力して返事を書いているときに引用したり，複数のメールを引用するには， C-c C-y を

a










使います． C-c C-y を押すと，そのときの Message モードのテキストの一部（Emacs のマークがあ

れば，そのマークとカーソルの間，なければ全体）が引用されます．
引用した文のうち要らない部分は，きちんと削除しましょう．そうしないとメールの量も増えますし，読み手にとっても煩わしく感じるだけです．行ごとの削除は C-k ですから，これを使うと良いでしょう．
あとは，普通にメールを送信する際と何も変わりません．

メールを削除する

3.4.4

要らなくなったメールは，そこにカーソルを合わせて d を入力して D マークをつけてから x








を押すことで削除されます．一気に複数のメールを削除する場合は，削除したいメール全てに D
マークをつけてから x を入力します．




フォルダ

3.4.5

Summary モードで g を入力してみましょう．


Folder name (% inbox ): %と表示されます．ここでフォルダ名を入力すると，そのフォルダの内容が表示されます． TAB を

押してみましょう．*Mew completions* バッファが表示され，フォルダ名の候補が並んでいるはずです．「backup」と入力し RET を押してみましょう．今までに送ったメールが表示されるはずで

す．メールを送るとき，ヘッダに Fcc: %backup というフィールドがありましたが，Fcc は Folder
carbon copy の略で，%backup フォルダにそのメールのコピーを残すという意味だったのです．
g



を入力し，そのまま何も入力せずに RET を押すと，Mew を起動したときに表示される
%inbox フォルダに移動できます．
3.4.5.1

メールを整頓する

Mew では，フォルダを使ってメールを整頓できます．%inbox フォルダで，整頓したいメールにカーソルを合わせて o を入力してみましょう．


Folder name (% from. s9912345 ):%のように表示されます．Mew は整頓先を推測し，デフォルト値として括弧の中に表示してくれます．ここで整頓先を入力します．もし，このデフォルト値（ここでは %from.s9912345）が希望通
りであれば，そのまま RET を押すだけです．このとき，そのフォルダがない場合は\% from. s9912345 does not exist. Create it? (y or n)のように聞かれますので， y を入力するとフォルダが作られます．


こうして整頓先が決定したメッセージには，番号のとなりに o マークがつきます． x を入力す

ると，実際に整頓が実行されます．複数のメッセージをまとめて整頓できます．

74フォルダ名から推測するだけでは思うようなフォルダを推測してくれないことがあります．
Mew の整頓先の推測規則は，ホームディレクトリの.mew.el というファイルを編集することで変更できます．以下に例を示します（Mew の Info より引用）．
(setq mew-refile-guess-alist’(("To:"("staff@mew．org" ． "+net/mew/staff")("staff@iijlab．net" ． "+net/iijlab/staff"))))
3.4.5.2

条件を指定してメッセージを選択しマークをつける

指定した条件に合うメッセージにマークをつける機能があります． ?


を入力し，条件を入力す

ると，条件にあうメッセージに * マークがつきます． * マークは， m d や m o などを使って，ま








とめて D マークや o マークなどに変更できます．条件の例を以下に示します．
From: に user が含まれるメッセージ:from=user
To: または Cc: に user が含まれるメッセージ:to=user | cc=user
To: または Cc: に user が含まれていて，かつ From: に user が含まれるメッセージ:(to=user |cc=user) & from=user
例えば， ? を入力して，条件に「from=spam」と入力して * マークをつけ， m d を入力すると，








From: に spam が含まれるメッセージに D マークがつきます．その後 x を入力すれば，それらの

メッセージが削除されます．
特定のフィールドではなくヘッダ全体に含まれる文字列を指定したい場合は，head=文字列のように指定してください．
指定した文字列を含むメッセージにマークをつけたい場合は， C-u ? と入力してください．


3.4.6



ファイルの添付（マルチパート）

メッセージにファイルを添付したいときは，Draft モードで C-c C-a を入力します．すると，一






番下に
------------------------------ attachments -----------------------------Multipart/Mixed
3/
1 Text/Plain(guess)*Cover.txt
2.
--------0-1-2-3-4-5-6-7-8-9----------------------------------------------のような行が挿入されます．このとき，本文は attachments より上の部分で，その下は添付領域と呼ばれます．添付領域で c を入力して，ファイルをコピーできます．例えば，.emacs を添付する
と次のようになります．
------------------------------ attachments -----------------------------Multipart/Mixed
3/
1 Text/Plain(guess)*Cover.txt
2 Text/Plain(guess).emacs75

3.
--------0-1-2-3-4-5-6-7-8-9----------------------------------------------

削除するときは，カーソルを合わせて d と入力すると，Delete .emacs? (y or n)と出るので， yを入力し削除します．マルチパートの作成途中でシングルパートに戻したくなったら， C-b






d




と入力するとDelete entire attachments ? (y or n)と出てくるので， ynと入力すると戻すことができます．少し説明をすると，マルチパートはディレクトリ構造を一時的に作成しており，今行なったのはマルチパートのために一時的に作成された，一番上のディレクトリ（この場合は 3/）に戻ってから d を押して削除したわけです．


3.4.6.1



マルチパートを読む

マルチパートのメッセージ，つまり添付ファイルがあるメッセージも，今まで通り SPC を押していけば読むことができます．マルチパートのメッセージには日付の左側に M マークが付いていて，マークにカーソルを合わせて SPC を押すと，マルチパートの構造が簡素に表示されます．本

文や添付ファイルを保存したいときは，カーソルを合わせて y を入力してください．


3.4.7






ニュースを読むで始まる名前のフォルダを使ってニュースの読み書きができます．Summary モードで
g
を入力して， - を入力すると，

Folder name (% inbox ): -と表示されます．ここで， TAB を押してみましょう．*Mew completions* バッファに，ニュース

グループ名が表示されます．この，fj.mail.reader.mew などがニュースグループです．ここで読みたいニュースグループの名前を打ち込み RET を押してください．


Range (update ):と表示されたら，そのまま RET を押すと，記事が取得されます．表示されなかったときや，最新

の情報に更新したいときは， s RET と入力すると新しい記事を取得できます． SPC を押すと，個々








の記事が読めます．操作はメールの場合と同じです．もし TAB を押して No matching newsgroupと出た場合はニュースグループ名の取得が必要なので， C-g で一度キャンセルしてから 2 Z と入力


してください．
NNTP case value ( default ):と表示されたら RET を押してください．
Collecting newsgroup list ... done

76







と 表 示 さ れ れ ば ニ ュ ー ス グ ル ー プ の 取 得 は 完 了 で す． /Mail/.nntp/@orchid-news ％ nntp に.mew-folder-alist2 が作成され，その中にニュースグループが格納されているのを確認してください．その後ニュースを読む操作をもう一度最初から行ってください．
記事の保存

3.4.7.1

ネットニュースの記事は一定期間で削除されてしまうので，興味深い記事があったら保存しておきましょう．Summary モードで， y を入力することで保存できます．


記事を投稿する

3.4.7.2

ネットニュースの記事を投稿するには，ニュースグループの記事の一覧を表示しているときに， w を入力します．すると，メールを書くときと同じようにバッファが用意され，ヘッダにNewsgroups: フィールドが用意されているはずです．このフィールドに，投稿したいニュースグ
ループ名を入力したら，あとは，メールの場合と同じように，Subject: を入れ，本文を書きます．
メールの場合と同様に，• 本文は全角 35 文字程度で改行する• 行末に不要な改行は入れない• 長すぎる署名をつけないことに気をつけましょう．ネットニュースの記事はたいへん多くの人が読むものです．記事に住所や電話番号などの個人情報を入れること，特定の人に宛てた内容を書くことはやめましょう．クロ
スポスト（複数のニュースグループに向けて記事を書く）の場合は，Newsgroups: fj.comp.mobile,fj.net.phones.phsというように，それぞれのニュースグループをカンマで区切って（スペースは入れません）記述します．同一内容の記事を，クロスポストではなく，個別に投稿することは，マルチポストと呼ばれ，一般には歓迎されません．しかし，カテゴリの異なるニュースグループ（例えば，campus とtsukuba など）に同じ内容の記事を書く場合は，クロスポストでなく，マルチポストにしたほうが良いでしょう．全てのニュースサーバでその両方のカテゴリが読めるとは限りません．
質問の記事を投稿し，その答えが得られたとしても，「御礼だけの記事」は投稿しないようにしましょう．全世界の人たちは，あなたの御礼記事を読みたくてネットニュースを購読しているのではありません．どうしても御礼がしたくてたまらない場合は，せめてメールにしましょう．
また，複数の人から回答があった場合などは，「サマリ (summary) 」といって，問題に対する答えをまとめた記事を投稿すると，情報が集約されていて，あとから読む人たちにも有用で，喜ばれます．
C-c C-c を入力することで投稿できます．


なお，ちゃんと投稿できるかなどをテストするテスト投稿は，ローカル（皆さんの場合はcoins.test）で行い，他の所では行わないようにしましょう．また，自分の投稿したニュースの記事が読めるようになるまでには，少し時間がかかる場合があります．
77

3.4.7.3

ニュース記事にフォローする

ニュースの記事に返事の記事を書くことを，「フォローする」などと言います．記事を引用せずにフォロー記事を書くときには a ，引用して書くときには A を入力しましょう．








メールの場合以上に，他の記事の全文引用は避け，不要な部分は削りましょう．ネットニュースの記事は全世界にコピーされていくのですから．
3.4.7.4

ニュース記事にメールで返事を送る

ニュースの記事を書いた人に対して，メールを出すこともできます．メールの場合と同様に，カーソルを合わせて C-u a もしくは C-u A を入力すればメールを送ることができます．


3.4.8







Mew のマニュアル

Mew のマニュアルは Info( C-h i ) で読むことができます．日本語マニュアル Mew-J もありま

す．英語マニュアルを読むときは Info 画面で Mew の項目を，日本語マニュアルを読むときは
Mew-J を選択してください．もし，日本語マニュアルが文字化けする場合は C-h i の前に「 M-x








set-language-environment RET Japanese RET」と入力してください．

3.5

Tips

前章まででは編集などについて解説してきましたが，本章では Emacs のより深い機能や便利なコマンドについて解説します．

3.5.1

info の操作

Emacs の使い方で分からないことがあれば，Emacs の info を活用しましょう．info は texinfo 形式のファイルを参照するためのシステムです．Emacs の使い方は 2 章で紹介した info コマンドを使い，‘info emacs‘で見ることもできますが， C-h i で Emacs 上で見ることができ，便利です．


3.5.1.1



texinfo と info

ソフトウェアのマニュアルを書き記す際によく使われる形式が texinfo です．texinfo 形式では中に書かれた情報をノードという単位で保持します．さらに，ノード同士を仮想的なリンクで繋ぎ，互いに参照することで，階層的な構造を持たせることが可能です．階層的な構造の例としては，マニュアルの章や節が挙げられます．
3.5.1.2

Emacs での操作

Emacs で info を利用すると，ノードのリンクを辿ったり，別のノードを参照したりできます．
これはマニュアルなどを参照する際の，章や節の移動に相当します．表 3.8 ではその方法について例とともに説明します．

78

3.5.2

画面の分割

Emacs ではウィンドウをいくつかに分割できます．分割した領域に別々のバッファを読み込むと別のファイルを参照しながらファイルを編集できます．画面を分割すれば作業効率を上げられるので，覚えると良いでしょう．例として図 3.2 を見てください，このようなことができます．分割のためのコマンドは表 3.9 のようになります．

図 3.2: Emacs 分割例
バッファを切り替えるときは， C-x C-b で現在のバッファリストを表示し， C-x b と入力した後，












作業したいバッファの名前を入力して，バッファを切り替えましょう．メニューバーの Buffers からも選ぶことができます．

3.5.3

Emacs からのシェル操作

プログラムなどを書いている際にプログラムファイルを保存して，ほかの shell の画面に行きプ
ログラムをコンパイル，実行する，ということをすると思いますが，この時の画面遷移が面倒です．もしこれを 1 つの shell 画面上で実現できたら便利です．これを Emacs では以下のようなコマンドを用いることで実現できます．
M-x shell

79

モード

3.5.4

プログラムを書くときなどに便利な機能としてモードというものがあります．モードとは，編集するテキストに応じて Emacs の振舞いを適応させるものです．これは例えば Java というプロ
グラミング言語のコードを書く際に，java-mode を使うと Java 言語の構文の強調をしてくれるな
ど，書くための手助けをしてくれます．モードにはメジャーモード (major-mode) とマイナーモー
ド (minor-mode) の 2 つがあります15）．大まかな認識としてはテキストに対しメジャーモードでEmacs をその種類のテキストに特化させ，マイナーモードでユーザにあわせた細かい適応をさせます．詳しい話をすれば，メジャーモードは排他的であり，ユーザが意図してどれを使うかを選択す
ることはほとんどありません16），マイナーモードはメジャーモードと反対に，強調的であり，原則的には他のマイナーモードに左右されずマイナーモードを使うことができます．そしてユーザがオン/オフを管理します．
表 3.10 に使用できるモードの一例を示します．
表 3.10 以外にもモードが存在します．自分で調べてインストールしてみるのもいいでしょう．
続いてこのモードをどのように使うかを示します．以下のように入力することでモードをオンにします．
M-x [mode -name]

副モードの場合だとエコーエリアに「[モード名称] mode enabled(もしくは disabled)」と出ます．
これで指定されたモードがオンになります．ですが，Emacs がファイルの拡張子に応じて主モードを選択してくれるのがほとんどなので，手動でモードを有効にすることは副モードを選択するときぐらいでしょう．

3.5.5

package.elEmacs24.3 からは Package.el という Linux でのパッケージ管理ツールに類するものが存在します．これを使用すると，コマンドを打つだけで世界中の Emacs ユーザたちが作った拡張機能を使用できるようになります．
「 M-x package-install」を実行した後に，自分の入れたい拡張機能の名前

を打ちましょう．もしくは入れられる拡張機能のリストを見て入れたいかもしれません．その場合は「 M-x package-list-packages」を使ってくださいこのようなコマンドを使い，auto-complete 17）や

undo-tree 18）といった Emacs を便利にする拡張機能を入れられます．

15） ちなみに編集の節で書いた，上書きモードはマイナーモードに属する物です16） ファイルに拡張子がついていないか間違った物がついていたという場合などを除き
17） Emacs のための高度な自動補完機能を提供する拡張
18） テキスト編集の取り消し，やり直しを使いやすくする拡張

80

3.6

自宅で Emacs を使うにはここでは情報科学類の計算機以外，例えば自宅でも Emacs を使うために主要な OS で Emacs を
インストールする方法を説明します．

3.6.1

Windows

Windows 版の Emacs のダウンロードページ http://ftp.jaist.ac.jp/pub/GNU/emacs/windows/
より最新の Emacs インストーラをダウンロードします．
上記 URL を開くと図 3.3 のような画面になります．emacs-xx のような形式の名前のディレクト
リのうち一番新しいものをクリックしてください．

図 3.3: Emacs のダウンロード
図 3.4 のような画面になるので，emacs-xx.x-x86_64-installer.exe のような形式のファイル名になっているファイルのうち，一番新しいものをクリックしてダウンロードしてください．

81

図 3.4: Emacs のダウンロード
ダウンロードが終了したら，インストーラを起動してインストールを進めてください．インス
トール先などを変更する必要はありません．
次に，コマンドを使用できるようにするために環境変数に登録します．
windows キーと R キーを押して，「ファイル名を指定して実行」を開きます． 図 3.5 のように，「名前」のテキストボックスに「sysdm.cpl」と入力して「OK」をクリックします．

図 3.5: Emacs の環境変数の設定「システムのプロパティ」ウィンドウが表示されるので，図 3.6 のように，「詳細設定」タブをクリックして，「環境変数」をクリックします．

82

図 3.6: Emacs の環境変数の設定
図 3.7 のような「環境変数」ウィンドウが表示されるので，下側の「システム環境変数」の「Path」をダブルクリックします．

83

図 3.7: Emacs の環境変数の設定「環境変数名の編集」ウィンドウが表示されるので，「新規」ボタンをクリックして図 3.8 の青地に白文字で表示されている項目を追加してください．

84

図 3.8: Emacs の環境変数の設定
環境変数の設定が完了したので，開いているウィンドウを「OK」ボタンをクリックして閉じてください．
インストール後はコマンドプロンプトや PowerShell などのコマンドラインに「emacs -nw」と入19）
力して起動するか，スタートメニューから「emacs」と検索して起動してください．

3.6.2

macOS

macOS には標準で Emacs が入っていますが大変古いバージョンの物しか入っていません．最新の安定版を使いたい場合，Emacs for OS X(https://emacsformacosx．com/) から最新のパッケー
ジをダウンロードし，開いた中にある Emacs．app を Application フォルダに入れてください．

3.6.3

Linux

Linux では基本的にディストリビューション標準のパッケージマネージャで導入すると良いでしょう．大まかには以下のようなコマンドでインストールできるでしょう．パッケージ名が名前そのままでは無いときもあるので，各ディストリビューションごとに確認をしてください．

19） インストール直後，コマンドが認識されない場合はコマンドプロンプトや PowerShell を開き直してみてください．

85apt 系ディストリビューション
$ apt-get intstall emacs
yum 系ディストリビューション
$ yum intstall emacs
パッケージマネージャで導入した後はコマンドラインから起動するか，使用しているデスクトッ
プ環境のランチャー等から起動してください．

86

表 3.7: Summary モードでのキー操作
キー

動作



SPC

メッセージを読み進める．

C-u SPC


DEL


RET







メッセージを先頭から再表示．


現在のメッセージを上にスクロールさせる．


現在のメッセージを一行下にスクロールさせる．


M-RET またはC-p ， C-n






p ， n










-

現在のメッセージを一行上にスクロールさせる．


上，下の行へ移動．


上，下方向に移動し表示．
C-u p ， C-u n

上，下方向に移動し表示．


指定された行のメッセージへ移動．



j




i




g




y




w




a




A




d




D




o




o




x




D




?


新着メッセージを取り込む．
他のフォルダへ移動（フォルダについては後述）．
本文または添付ファイルの保存．
メールを書く．
メールの返事を書く（引用なし）．
メールの返事を書く（引用あり）．

指定されたフォルダの内容を削除する．
条件に一致するメッセージに * マークをつける．

C-u ?


md


mo
Q

マークをつける（整頓）．

削除や整頓の実行．



マークをつける（削除）．

指定した文字列を含むメッセージに * マークをつける．
* マークを全て D マークに変更する（削除）．
* マークを全て o マークに変更する（整頓）．
Mew の終了．


表 3.8: info の操作
目的

例

キー

ノードの選択1.1 節を参照する

同じ階層の次のノードへ移動

1.1 節から 1.2 節へ移動する

n

同じ階層の前のノードへ移動

1.2 節から 1.1 節へ移動する

p

上の階層のノードへ移動

1.2 節から 1 節の先頭へ移動する u

info を終了

Enter


q

87



表 3.9: 画面分割に関するコマンド
コマンド 機能
C-x 0




C-x 1




C-x 2




C-x 3




C-x o




C-x b

カーソルのあるウィンドウを閉じる



カーソルのあるウィンドウ以外を閉じる
ウィンドウを水平方向に分割
ウィンドウを垂直方向に分割
カーソルの次のウィンドウに移動
ウィンドウに割り当てるバッファを切り換える．
どのバッファを表示するかは Emacs が尋ねてくる
C-x C-b

現在作業できるバッファのリストを表示する．必要なところにカーソルを移動して f を押すと，そのバッファがウィンドウに表示される




C-x k




ウィンドウに表示されているバッファを削除

表 3.10: モードの一例
モード名

説明

c-modeC 言語を扱うメジャーモード

perl-mode または cperl-mode

Perl のためのメジャーモード

java-modeJava のためのメジャーモード

html-helper-mode

HTML ファイルを作成する際に用いるメジャーモード

whitespace-mode

TAB や Space を可視化するマイナーモード

tex-mode

TEX(第 6 章参照) のためのメジャーモード

88

第4章

ブラウザとメーラの使い方

本章では，Web ブラウザを使ってインターネット上のページを閲覧する方法と，メーラを使って電子メールをやりとりする方法を説明します．Web ブラウザとして Firefox，メーラとしてThunderbird というソフトウェアの使い方を例にあげて具体的に説明します．これらは Mozilla
Foundation が開発や保守を行っているオープンソースのソフトウェアで，Windows や macOS，Linux 系の OS で使用できます．

4.1

Firefox による Web ブラウジング

本節では Firefox を使った Web ブラウジングの基礎について説明します．多数のコンピュータが接続されたネットワークであるインターネットを介して文書を公開・閲覧する仕組みとして，World Wide Web （WWW ）があります．この WWW で公開されている文書（Web ページ）を閲覧するためのソフトウェアが，Firefox をはじめとする Web ブラウザです．

4.1.1

起動する

Dock から，図 4.1 に示す Firefox のアイコンをクリックすることで起動できます．図 4.2 は起動時の例です．

図 4.1: Dock 内の Firefox のアイコン

89図 4.2: Firefox のウィンドウ

4.1.2

ブラウジングの基本的な操作

本小節では基本的なブラウジングの操作を解説します．
WWW 上の Web ページの場所は URL と呼ばれる，いわば地番の役割を持つ文字列で一意に定められます．例えば筑波大学の Web サイトの URL は https://www.tsukuba.ac.jp となります．
URL がわかれば Web ブラウザを使ってその場所のコンテンツを得ることができます．また，あるWeb ページに記述された別の Web ページの URL をたどることで，新しい Web ページへ移動できます．本節では，これらの 2 つの方法で Web ページを閲覧する方法を，順を追って解説します．
4.1.2.1

URL を直接指定する方法

自分が見たいページに移動するには，URL を指定する必要があります．Firefox のウィンドウ上部にあるテキストボックス1）（図 4.2 の上部にある横長の枠）に次の手順で URL を入力すること
で，目的のページを閲覧できます．

1） 文字が入力できる場所のこと．

90

1. テキストボックスへマウスカーソルを移動してクリックし，（Delete）キーなどで現在の

URL を消去する
2. 新しい URL をキーボードから入力する
3. 最後に return を押す


4.1.2.2



リンクをクリックして移動する

Web ページ内に書かれている URL をクリックすると，他の Web ページへ移動します．これを繰り返すことで，Web ページのネットワークを次々にアクセスできます．
次の Web ページへのリンクとなっている部分へマウスカーソルを移動すると，カーソルの形が矢印から指差しの形に変形します．ここでクリックすると，次の情報へと移動できます．

4.1.3

Firefox の基本的な機能

ブラウジングを行う際はウィンドウ上部にある図 4.3 に示すツールバーを操作することで，Webページを行き来したり，特定のページをブックマークに登録するといった操作が行えます．ここではそのような基本的な操作を説明します．

図 4.3: Firefox のウィンドウ上部にあるツールバー

4.1.3.1

戻る/進む

ツールバー（図 4.3）の左側にあるとから訪れたページを順番に行き来できます．

のふたつのボタンを使うことで，Firefox を起動してをクリックすることで，ひとつ前にアクセスしたページに戻ることができます．また，繰り返し押すことでそれより前にアクセスしたページヘ戻る
こともできます．一方前のページに戻ったあとにをクリックすることで，新しいページヘ進むことができます．
4.1.3.2

再読み込み

URL が含まれているテキストボックス（図 4.3）のアドレスバーの右にあるを押すことで，現在見ているページのデータを再表示します．また， shift を押しながらこのボタンをクリックすると，強制的にデータを再取得して，再表示します．
4.1.3.3

ホーム

ツールバー（図 4.3）の右側にあるを押すことで，設定されているホームページへ移動できます（4.1.6 節参照）
．ここで言う「ホームページ」とは，Firefox 起動時に表示されるページのことを91

意味します2）．
4.1.3.4

ブックマーク登録

図 4.3 のを押すことで，図 4.4 のように現在開いているページをブックマークに登録できます．ブックマークとは，本にしおりを狭むように，よく訪れるページを記録しておく機能です．ち
なみに，すでに登録してあるブックマークは，一番上に並んでいるメニューの ブックマーク からア
クセスできます．また，ブックマークされたページのを押すとブックマークを削除するなどといったことができます．

図 4.4: ブックマークの編集

2） 「Web ページ」の意味で「ホームページ」という言葉が使われる場合がありますが，ここでは異なります．

92ブラウザのショートカット

4.1.4

1.6.3 節ではキーボードのショートカットを説明しましたが，ブラウザでもショートカットが使えます．表 4.1 にはそのショートカット一覧を載せておきます．

+



「


（コマンド）キーを押しながら








と記載されている場合はを押す」ことを意味します．

表 4.1: ブラウザのショートカットキーのまとめ
動作

キー

戻る/次へ

+


+

f




+

r




+ p




+ n




+ shift + w


+ q




+ d




+ b


ページ内の文字列検索
再読み込み
印刷
新しく Firefox のウィンドウを開く
開いている Firefox のウィンドウを閉じる
Firefox を終了
ブックマークに登録する
ブックマークを表示する
読み込み中止

Esc


新規タブ







または F5




t

+


+ w


+ Alt +


+ Alt +


次のタブに進む

タブを閉じる
前のタブに進む

/







タブ

4.1.5

Firefox では，図 4.5 に示すように，タブと呼ばれるページの表示領域を１つのウィンドウの中で切り替えて使うことができます．新たなタブを作るにはメニューバーの ファイル

新規タブ を選択す

るか，図 4.5 内の ＋ をクリックします．この状態で，URL を入力して他のページにジャンプすると，新しく作ったタブにページが表示されます．また，リンクをクリックしたときに，リンク先のページを別のタブに表示させたいときは，マウスカーソルがリンクの上にある状態で右クリック
し，「リンクを新規タブで開く」をクリックします．タブを閉じたいときは，閉じたいタブの上部にあるでっぱりの上で，右クリックし タブを閉じる をクリックします．また，タブの右端についている × をクリックしてもタブを閉じることができます．




93

図 4.5: Firefox のタブ

4.1.6

各種設定

ここでは，メニューバーの Firefox

4.1.7

環境設定 で行える設定について簡単に解説します．

ホームページの設定

一番初めに表示されるページはユーザの好みに応じて別のページに変更できます．ホームページを設定するには， ホーム をクリックすることによって行えます．


表示されるページを変更するには「ホームページ」の項目にある，「ホームページと新規ウィン
ドウ」の項目に「カスタム URL. . . 」を指定し，下のテキストボックスに URL を入力します．あるいは 現在のタブグループを使用 をクリックすることで，その時ウィンドウで開いている全てのタブのWeb ページを，ホームページとして設定できます．

図 4.6: ホームページの設定

4.1.8

ダウンロードファイルの保存先の設定

Web ページからファイルをダウンロードする際の保存先を設定できます． 一般 から「ファイルとプログラム」の項目にある「ダウンロード」より設定の確認，変更が行えます．

94

図 4.7: ダウンロードの保存先の設定

4.1.9

プライバシーの設定

プライバシーの設定（図 4.8）を編集すれば，Firefox に入力した履歴の記憶に関する設定を変更できます．また， 履歴を消去. . . をクリックして現れる図 4.9 のような画面から，現状で記憶されている履歴を消すことも可能です．
消去する履歴を選択することで Cookie を個別に消去できます．Cookie（クッキー）とは，訪れた Web サイトによって作成され，Web ブラウザを通じて訪問者のコンピュータに個人のデータを保存する仕組みです．これによってアカウント情報を要求するサイトを利用するときなどに，わずらわしい入力をその都度せずに済みますが，Cookie はユーザがどのような Web サイトを利用しているのかを収集する目的で利用されることがあります．それを避ける目的で Cookie を削除するという選択もあります．

95

図 4.8: プライバシーの設定

図 4.9: 履歴の消去

4.1.10

セキュリティの設定

セキュリティの設定は図 4.10 のようになっています．初期設定では• 危険な詐欺コンテンツをブロックする• 危険なファイルのダウンロードをブロックする• 不要な危険ソフトウェアを警告する
96

の合計 3 つにチェックが入っているはずです．ただ，このチェックに関しては Firefox の初期状態なので，Firefox が更新される度に変更される可能性があります．このチェックは自分のプライバ
シーを守るという観点からも，慣れないうちはあまりいじらないほうが良いでしょう．

図 4.10: セキュリティの設定

4.1.11

文字コードの設定

Web ページは日本語や英語に限らずさまざまな言語で書かれており，さらにさまざまな方法で文字を数字の列へ対応付けて表現されています．この，文字と数値の対応付けを文字コードと呼びます．Web ページのコンテンツを Firefox が誤った文字コードとして解釈してしまうと，読めない
文字の羅列が表示されてしまいます．これを文字化けといいます．
Firefox は文字コードを自動的に判別しますが，場合によってはこの判別に失敗します．このような場合，そのページを正しく表示させるためには，図 4.11 のようにその Web ページの文字コードの設定を手動で行う必要があります．

97

図 4.11: 文字コードの手動設定
手 動 で 文 字 コ ー ド を 設 定 す る た め に は， ブ ラ ウ ザ 右 上 の メ ニ ュ ー か ら その他
テキストエンコーディング を ク リ ッ ク し ま す．通 常 は こ の 一 覧 の 中 の「日 本 語」を 選 ん で お くことで自動判別されます．

4.2

Thunderbird による電子メールの利用方法

インターネットを介して誰かとコミュニケーションをとる方法のひとつとして電子メール（メール）を使ったテキストコミュニケーションがあります．メールを送受信するためには，Thunderbird や Microsoft Windows Mail といったメーラと呼ばれるソフトウェアを使います．本節ではメールを送受信する仕組みを簡単に述べ，Thunderbird を用いてメールを送受信する方法を説
明します．

4.2.1

メールを送受信する仕組み

メーラはメールサーバと通信をしてメールを送受信します．メールサーバとは自分宛のメールを一時的に預かったり，他の人宛のメールの配送をする特殊なコンピュータです．メーラはこのメー
ルサーバに自分宛のメールがないか問い合わせて，預かってもらっている場合は今使っているコン
ピュータに持ってきたり，逆に指定した宛先に送ってもらうということを行います．ちなみに多く98

の場合はひとつのコンピュータがメールを受信するため機能と送信するための機能をまとめて担っています．
そこでメールを扱うためには，メーラに対して• 自分宛のメールを預かるメールサーバの情報• メールを送信するためのメールサーバの情報• メールアドレスやパスワードなど，認証に必要な情報を適切に設定する必要があります．

4.2.2

COINS のメールを利用するための設定

本小節ではメーラに設定する必要がある情報を列挙し，iMac にインストールされているThunderbird の設定方法を解説します．
COINS の メ ー ル を 利 用 す る に あ た っ て 表 4.2 に あ る 情 報 が 必 要 に な り ま す．本 節 で はThunderbird の設定方法を説明しますが，携帯電話や個人のパソコンのメーラで設定する場合も，この情報を設定することで送受信できるようになります．
表 4.2: COINS のメール送受信のための設定
メールアドレス

あなたのアカウント名@coins.tsukuba.ac.jp

受信サーバの種類

IMAP または POP（IMAP 推奨）

受信サーバのアドレス viola6.coins.tsukuba.ac.jp
送信サーバのアドレス viola6.coins.tsukuba.ac.jp
ユーザ名

あなたのアカウント名

パスワード

あなたのパスワード

まず Thunderbird を起動します．Dock から図 4.12 にあるような Thunderbird のアイコンをクリックしてください．

図 4.12: Dock にある Thunderbird のアイコン
初回の起動では必ず図 4.13 のようなメールアカウント設定のウィンドウが出てきます3）．
3） 2 回目以降で設定する場合には，メニューバーの ファイル
行います．

99

新規作成

新規のメールアカウントを取得 を選択することで

図 4.13: 初回起動時の設定ウィンドウ
ここで メールアカウントを設定する をクリックし，図 4.14 に示すようにメールアドレスやパスワー


ドを入力します．入力が終わったら 続ける を押します．


あなたの名前
メールに差出人として記載されるあなたの名前を入力してください．メールは世界中に送信される可能性があるため，名前は漢字ではなくローマ字で書くことが好まれます．
メールアドレス
あ な た の COINS の ア カ ウ ン ト + “@coins.tsukuba.ac.jp” を 入 力 し て く だ さ い （例:s9912345@coins.tsukuba.ac.jp）
パスワード
あなたの COINS のパスワードを入力してください．「パスワードを記憶する」のチェックを外してください．

100

図 4.14: メールアドレスとパスワードの入力
次に図 4.15 のようなウィンドウで受信サーバと送信サーバについて設定する必要があります．
表 4.2 にあるように，「受信サーバ」には “viola6.coins.tsukuba.ac.jp” を，「送信サーバ」には“viola6.coins.tsukuba.ac.jp” を入力します．なお表にもあるように受信サーバの種類としてPOP か IMAP が選択できますが，“IMAP” を選ぶと良いでしょう．ここでは，受信サーバの設定に IMAP を使い，接続の保護に SSL/TLS を，受信サーバの接続の保護4）に SSL/TLS を設定して設定を再テストした例をのせています．入力が終わったら 再テスト をクリックしましょう． 再テスト








をクリックして問題が起こらなかった場合は，アカウントが正しく設定されたため 完了 をクリッ

クして，アカウントの設定を完了します（正しく設定できていない場合は，次へ進むことができません．設定を見なおしてください）．

4） 相手が本物であることを確認します．また，通信経路を暗号化します．

101

図 4.15: メールサーバの設定以上でアカウントの設定が完了し，COINS のメールを利用できるようになりました．次の小節
以降では Thunderbird を使ってメールの送受信を行います．

102Thunderbird がフリーズする場合
Thunderbird は macOS のアプリケーション「連絡先.app」内のデータにアクセスする際，フリーズすることがあります．その場合は次に示す手順で設定してください．
1.「システム環境設定」を開き，「セキュリティとプライバシー」メニューを選択します．
2.「プライバシー」タブ中の「連絡先」を選択します．
3.

図 4.16 のように，Thunderbird に連絡先へのアクセスを許可するチェックマークを外してください．

これで Thunderbird が連絡先にアクセスできなくなり，フリーズを回避できます．

図 4.16: 連絡先へのアクセスを無効にする

103

4.2.3

メールの受信Thunderbird ではデフォルトで「起動時に新着メッセージがないか」，「10 分毎に新着メッセージがないか」をメールサーバに確認するため，基本的には自動的にメールを受信してくれます．もし，手動で受信したい場合，Thunderbird のウィンドウの左上にある 受信 ，あるいはメニューバー
の ファイル

新着メッセージを受信 を選択してください．その場ですぐメールサーバにアクセスし，新しいメールの有無を確認できます．

4.2.4

メールの作成と送信

Thunderbird ではメールを HTML 形式で作成するか，プレーンテキスト形式で作成するかを選択できます．デフォルトでは HTML 形式が選択されており， ツール アカウント設定 編集とアドレス入力とたどっていき， HTML 形式でメッセージを編集する のチェックボックスを外すことでプレーンテキス


ト形式でメールを作成できるようになります．

図 4.17: HTML・プレーンテキスト形式の選択
メールを作成するにはウィンドウ上部の 作成 またはメニューバーの ファイル

ます．これらを選択すると図 4.18 にあるようなウィンドウが表示されます．

104

新規作成 から行い

図 4.18: 新しいメールの作成
メールには宛先・件名・内容が必要ですから，宛先の枠に相手のメールアドレス，件名の枠にメールの題目5），そして大きな枠に本文を入力します．
また，一緒にファイルを送る場合は図 4.18 の上部にある 添付 をクリックし，添付ファイルを選択するウィンドウから添付したいファイルを選び， OK を押してください．この操作により，元の

メールのウィンドウの右上に「添付」という項目が増え，一緒に送られる添付ファイルの一覧を確認できます．
最後にウィンドウ上部の 送信 を押すことでメールが送信されます．一方，すぐ送らず，一時的に保存しておきたい場合は 保存 を押すことで，Thunderbird の「下書き」のフォルダに保存され，

あとから編集や送信ができるようになります．
4.2.4.1

メールの振り分け

Thunderbird では受信したメールを複数のフォルダに分別して管理できます．そしてこれを自動的に行い管理を支援するためにフォルダへの自動振り分け機能が備わっています．これをメッセー
ジフィルタと呼びます．メッセージフィルタはユーザが決めたルールに従ってメールをフォルダに振り分けます．たとえば，COINS から来たメールなら COINS フォルダに，件名に「課題」という文字が含まれていたら task フォルダにといったような記述が可能です．新しくフォルダを作るには，左側のメニューの「ローカルフォルダ」を右クリックして新規フォルダを選択し，図 4.19 のように名称を設定します．
5） 件名は本文を端的に表す一言にしましょう．例えば「こんにちは．XX 学類 N 年の XX です」といった件名は悪い例
です．

105

図 4.19: 新しいフォルダを作成するウィンドウ
では実際にルールを書いてメッセージのフィルタリングを行ってみましょう．メニューバーのツール

メッセージフィルタ を選択，クリックしてください．すると図 4.20 のような画面が表示されます．ここで 新規 をクリックすることで新しいルール，振り分け規則を追加できます．


図 4.20: メッセージフィルタの新規作成
ルールの設定は図 4.21 のウィンドウで行います．ルールは「適用のタイミング」と「条件」，「動作」からなります．それぞれさまざまな設定が可能で，柔軟な振り分けを行うことができます．この例では「差出人のメールアドレスに tulips.tsukuba.ac.jp という文字列が含まれていたら “大学図書館” というフォルダへ移動させる」というルールを設定しています6）．

6） 大学図書館からのメールは，ほとんどが???@tulips.tsukuba.ac.jp というメールアドレスから送信されます106

図 4.21: フィルタの条件の設定

4.2.5

ニュースの使い方メーラとしての利用方法以外にも Thunderbird はネットニュース購読の為のツールとしても可能です．ここではネットニュース利用のための設定について解説します．
4.2.5.1

ニュースの設定

ニュースグループに参加するためにまずアカウントを追加しましょう．メニューバーの [ファイル] メニュー内の [新規作成] の中から [他のサービスのアカウント] を選択してください．すると図4.22 にあるようなウィンドウが表示されます．この項目では「ニュースグループアカウント」を選択します．以降の画面ではそれぞれ表 4.3 のような画面が表示情報の入力を求められます．

107

図 4.22: ニュースグループの設定
表 4.3: ニュースグループ参加の設定

4.2.5.2

項目内容

あなたの名前差出人として記載される名前

メールアドレス

あなたのメールアドレス

ニュース (NNTP) サーバ

news.coins.tsukuba.ac.jp

アカウント名ニュースサーバを識別するための名前 (COINS など)

メール送信サーバのアドレス

viola6.coins.tsukuba.ac.jp

ユーザ名

COINS のアカウント名

ニュースの読み方

以上により設定したニュースグループ内のニュースを読むにはまず，メインウィンドウにある「購読するニュースグループを管理する」から購読したいニュースグループを選択する必要があり

108

ます．これをクリックすると図 4.23 の画面が現れるので購読したいニュースグループをクリック
してチェックを入れてから「OK」ボタンを押します．

図 4.23: 購読するニュースグループの選択
これにより図 4.24 にあるように購読しているニュースグループに投稿されたニュースの一覧が表示されるので，この中から読みたいニュースをクリックして選択して読みます．

109

図 4.24: ニュースの購読

4.3

RainLoop

COINS メールを利用する方法として，RainLoop（https://www.coins.tsukuba.ac.jp/webmail）
を利用する方法があります．RainLoop を用いることで，ブラウザ上で COINS メールを利用できます．ログインの際に必要なログイン名とパスワードは，COINS の計算機にログインする際に用いるものと同じです．

110

図 4.25: RainLoop ログイン画面
RainLoop では，メールの確認や送受信を行える他，RainLoop の表示設定，メールに記載する署名の設定などを行うこともできます．署名の設定をしておくと初対面の相手にメールを送る場合な
どに役に立つため，行っておくと良いでしょう．署名を設定するには，次のようにします．
1. https://www.coins.tsukuba.ac.jp/webmail/ にログインする
2. 右上のプルダウンメニューから「設定」設定を選択
3.「全般」タブより「表示名」を選択
4.「表示名」と署名を入力する
5. 更新 ボタンを押す

図 4.26 に，一般的な署名の例を示します．これを参考に，自分の署名を設定してください．

111

図 4.26: 一般的な署名の設定例

4.4

Android 端末でのメールの送受信

Gmail アプリ (version 2020.12.27.355085521.Release) を例に COINS メールを設定します．
1. Android 搭載のスマートフォンやタブレットで Gmail アプリ を開きます．
2. 右上のプロフィールアイコンをタップします．
3. [別のアカウントを追加] をタップします．
4. [その他] をタップします．

112

5. [メールアドレスを入力] の欄に自分の COINS メールアドレスを入力して [次へ] をタップし
ます．

113

6. [個人用（IMAP）] をタップします．

114

7. [パスワード] の欄に自分の COINS アカウントのパスワードを入力して [次へ] をタップし
ます．

115

8.[ユーザー名] の欄に自分の COINS アカウントのユーザー名を，[パスワード] の欄に自分のCOINS アカウントのパスワードを，[サーバー] の欄に viola6.coins.tsukuba.ac.jp と入力して [次へ]をタップします．

116

9.[ロ グ イ ン が 必 要] を 有 効 に し て [ユ ー ザ ー 名] の 欄 に 自 分 の COINS ア カ ウ ン ト の ユ ー
ザー名を，[パスワード] の欄に自分の COINS アカウントのパスワードを，[サーバー] の欄にviola6.coins.tsukuba.ac.jp と入力して [次へ] をタップします．

117

10. 同期頻度，着信，同期などの項目をお好みで変更して次へをタップします．

118

11. アカウント名と名前をお好みで設定して次へをタップします．名前は相手に表示されるため本名を設定しておきましょう．

119

12. 設定が完了し，COINS メールの受信メールが表示されます．

4.5

iOS 端末でのメールの送受信

iOS 標準のメールアプリを例に COINS メールを設定します．
1.「設定」アプリを起動します．
2.「設定」メニューから「メール」をタップします（端末によって表示が若干異なります．画像
は iPad の例です）．
3.「メール」メニューから「アカウント」→「アカウントの追加」をタップします．
4.「アカウントを追加」メニューから「その他」をタップします．

120

5.「新規アカウント」ウィンドウにおける「メール」の欄に自分の COINS メールアドレス，「パスワード」の欄に自分の COINS アカウントのパスワードを入力します．
6.「名前」と「説明」の欄はお好みで設定します．名前は相手に表示されるため本名を設定しておきましょう．
7.「次へ」をタップします．

121

8. 左上のタブが「IMAP」になっていることを確認，またはなっていない場合はタップします．
9. 「受信メールサーバ」の「ホスト名」の欄に viola6.coins.tsukuba.ac.jp を，「ユーザ名」の欄に自分の COINS アカウントのユーザ名を，「パスワード」の欄に自分の COINS アカウントのパスワードを入力します．
10. 「送信メールサーバ」の「ホスト名」の欄に viola6.coins.tsukuba.ac.jp を，「ユーザ名」の欄に自分の COINS アカウントのユーザ名を，「パスワード」の欄に自分の COINS アカウントのパス
ワードを入力します．
11. 「次へ」をタップします．

122

12.「保存」をタップすると設定が完了し，メールアプリで COINS メールを送受信できるように
なります．

123

124

第5章

Windows と Linux の使い方

これまでの章では macOS を主な対象として説明がなされてきましたが，COINS にはほかにもWindows 及び Linux が用意されています．この章ではこれらの OS について，その使い方を解説します．
まず，Windows の利用について解説していきます．

5.1

サインインとサインアウト

iMac と同様に DELL 機で Windows を利用する際にも，最初に自分のログイン名とパスワードを入力する必要があります．このことを Windows では一般的にログインではなく「サインイン」と言います．またログイン名は Windows では「ユーザ名」と呼ばれています．Windows 起動後にユーザ名とパスワードを入力する欄が見当たらない場合，一度画面をクリックすると入力欄のある画面に移動します．

5.1.1

ユーザ名とパスワードについて

Windows にサインインする際に使用されるユーザ名は，あなたの COINS のアカウントのユーザ
名（iMac を使用する際のもの）と同一です（例: s9912345）．また，macOS と Windows でパスワー
ドは同期されますのでどちらか一方を変更すれば，双方のログインパスワードが変更されることに注意してください．
5.1.1.1

Windows 環境を初めて利用する際の注意点

3C113 室，3C205 室，3C206 室の Windows 環境に COINS アカウントを作成後初めてサインイン
する場合（新入学の情報科学類生や情報科学類の科目を履修する他学類生等）には，必ず筑波大学
統一認証システムのパスワード変更のページでパスワードを変更してからサインインしてくださ
い．パスワードを変更しないと Windows 環境へサインインできません．

5.1.2

サインイン後の画面

Windows にサインインすると，「デスクトップ画面（図 5.1）」が表示されます．この画面はWindows でファイルに関する操作をはじめとする各種操作の拠点となるもので，多くのアプリ
ケーションはこの画面で操作することになります．

125

図 5.1: サインイン後の画面

5.1.2.1

タスクバー

デスクトップ画面では，初期状態で画面の一番下に横長の棒状の領域があります．これを「タスクバー」と呼びます．タスクバーには，現在画面上に表示されているウィンドウに対応する，アイ
コン付きのボタンが表示されます．このボタンをクリックすると，そのウィンドウをすぐにアクティブ化できます（図 5.2）．

図 5.2: タスクバーによるウィンドウの切り替え
また，表示中のウィンドウのタイトルバーに存在する最小化ボタンをクリックすると，そのウィンドウは「最小化」されてタスクバー内に格納されます．タスクバーのボタンをクリックすると元に戻ります．
タスクバーの左端には Windows マークが入った「スタートボタン」があり，クリックすると後述するスタートメニューが開きます．このスタートボタンを右クリックすることでアプリケーショ
ンを起動したり，シャットダウンを行えるコンテキストメニューを表示できます．

126

5.1.2.2

スタートメニュースタートメニュースタートメニューでは様々な機能が四角形の「タイル（図 5.3）」で配置され，メールやカレンダーといったアプリケーションを起動したり，天気やニュースといった情報を得た
りできます．また，これらのタイルはユーザの好きなように配置でき，タイルをクリックした状態
でドラッグすることで配置を変更できます．スタート画面に不要なタイルを表示させたくない場合
は，表示させたくないタイルを右クリックし，コンテキストメニューの「スタートからピン留めを外す」をクリックします．

図 5.3: タイル
スタートメニューの左側にはインストールされている全てのアプリケーションの一覧がアルファ
ベット順に表示されます．ここで表示されているアプリケーションは，対応したアイコンをクリッ
クすることで起動できます．

5.1.3

サインアウトとシャットダウン

Windows を利用中に席を外す際には「サインアウト 」またはシャットダウンを行ってください．
この操作をしなかった場合，他の利用者に自分のシステムを操作される可能性がありますので危険です．
サインアウトはスタートボタンを押してスタートメニューを表示させ，アカウントのアイコンをクリックしてサインアウトを選ぶことで行えます（図 5.4）．

127

図 5.4: サインアウト
シャットダウンはスタートボタンを押してスタートメニューを表示させ，電源マークをクリック
してシャットダウンを選ぶことで行なえます（図 5.5）.

図 5.5: シャットダウン

128

5.2

ウィンドウの基本操作

Windows でソフトウェアを利用する際は，ディスプレイに表示されるグラフィカルユーザイン
ターフェース（GUI）で操作することが多くなります．

5.2.1

デスクトップ画面とウィンドウ

デスクトップ画面ではメニューやボタン，アイコンなどをマウスでクリックする等してファイルの作成をはじめとする様々な操作ができます．また，ほとんどの操作はキーボードでも行うことができます1）．ボタンやメニューなどのインターフェースは「ウィンドウ」という領域の上に貼り付けられる形で表示されます（図 5.6）．

図 5.6: ウィンドウの例「ウィンドウ」とは，Windows のインターフェースのもっとも基本的な構成要素となるもので
1） 様々なショートカットキーが用意されているので調べてみてください．作業時間の短縮につながります．

129

す．複数のソフトウェアを同時に起動した場合，それらのソフトウェアはそれぞれいくつかのウィンドウとして表示されます2）．
例えば，大きな作業机がありその上に書類をたくさん置いた場合，まず今から使う書類をもっとも上に配置するでしょう．Windows の画面では，複数のソフトウェアを起動してウィンドウがい
くつか表示されている場合，ユーザは，複数表示されているウィンドウのうち，現在操作したいものをもっとも手前に表示できます．
Windows では，もっとも手前に表示されているウィンドウを「アクティブウィンドウ」と呼びます．ユーザは好きなウィンドウをいつでもアクティブウィンドウにでき，これをアクティブ化と呼びます．ウィンドウをアクティブ化するには，そのウィンドウ内の適当な部分 （余白など） をクリックします．

5.2.2

タイトルバー・リボン・ステータスバー

デスクトップ UI 用のソフトウェアの画面構成には色々なものがありますが，ファイル操作をするアプリケーションであるエクスプローラのアプリケーションには「タイトルバー」，「リボン」，「ステータスバー」などが付いています （図 5.7）．

図 5.7: ウィンドウの構成要素
タイトルバー
ウィンドウの上部に貼り付いている領域で，この部分をマウスでドラッグするとウィンド

2） 1 つのアプリケーションが複数のウィンドウを開く場合もあります．

130

ウを移動し，画面上の好きな位置に配置できます．また，タイトルバーにはそのウィンドウの性質や役割を示す文字列 （アプリケーション名など） が表示されています．
またこの部分の右端にはウィンドウを変形したり終了させたりするためのボタンが用意されています．たとえば「Œ」ボタンでウィンドウを閉じることができます．これは Alt + F4 を

同時に押したり， タスクバーのボタンを右クリックして「閉じる」を選択することでも行うことができます．
このタイトルバーにはそのウィンドウで特定の項目が選択されているとき，ツールタイトル
がタイトルバーに出現し，これをクリックすることでその項目に対して利用できる操作が後述する「リボン」に表示される「コンテキストタブ」という機能があります．エクスプローラを例にとって説明すると，検索ボックス内をクリックすれば「検索ツール」というツールタイト
ルと「検索」というコンテキストタブが表示され，検索場所の変更や絞込み設定を行えます．
また，ファイルの操作を元に戻したり，削除したりといったよく使う操作をすばやく実行できる「クイックアクセスツールバー」という機能があります．これは常にタイトルバーの左側にアイコン表示され，それぞれクリックすることで対応した操作を即座に行うことができます．アイコン右側の下向き三角のボタンをクリックすることで新しく操作を登録したり，リボン下に表示させたりできます．
リボン
タイトルバーのすぐ下に表示されているコマンド一覧の領域です．上側に表示されている，
例えばエクスプローラならば「ファイル」や「ホーム」といったタブをクリックすることで，そのタブの内容に関した機能を下側の領域に表示させることができます．「ファイル」タブをクリックすれば新しくエクスプローラのウィンドウを開いたり，「ホーム」タブをクリックすればファイルのコピーや貼り付けを行えるボタンが用途ごとにグループ化されて表示されます．
ステータスバーアプリケーションの現在の状態を表示するための領域です．例えばエクスプローラならばそのディレクトリに存在するファイル及びフォルダの総数を表す項目数や，選択中の項目数などが表示されます．

5.3

ファイルの操作

5.3.1

デスクトップ UI でのファイル操作

Windows のデスクトップ画面では基本的なファイル操作を，macOS における Finder 同様にマウス操作によるドラッグアンドドロップで視覚的に行えます．Windows でファイル操作をするための便利なアプリケーションとして， エクスプローラ（図 5.8）があります．

131

図 5.8: Windows エクスプローラの画面
エクスプローラを起動するにはスタートボタンを右クリックして「エクスプローラ」を選択する
か，タスクバーにある検索ボックスに explorer と入力すると表示される，「エクスプローラ」をク
リックします．エクスプローラでは，左側の領域 （ペインと呼びます） に現在開いているフォルダを中心とした木構造が，右側にそのフォルダ内のファイル一覧が表示されます．

5.3.2

フォルダ構造Windows も macOS のファイルシステムと同様にファイルを木構造 で管理します．macOS におけるディレクトリのことを，Windows では一般的に「フォルダ」と呼びます．つまり，Windowsのファイルシステムはフォルダを中心とした木構造となっており，各フォルダにファイルを配置して利用します．
パス記述
Windows において，絶対パス名は以下のように記述します．この例では H ドライブ下の test132

というフォルダの絶対パス名です．
H:Ytest

最初のドライブ文字の後には「：」が続きます．また，Windows におけるフォルダ構造の区
切り文字には円記号「ě」を用います3）．Windows は基本的にマウス操作が中心なのでパス記
述について意識することはありませんが，コマンド入力によりファイルを操作する場合などに使うことになります．
拡張子
ファイルの種類を示す拡張子によって，ファイルを開くためにデフォルトで使用するアプリ
ケーションが決定されます．たとえば拡張子が．docx であれば Microsoft Word が起動する，といった対応が管理されています4）．
実行ファイルWindows では拡張子が．exe となっているファイルを実行可能ファイル（プログラムファイ
ル）と呼びます．新しいアプリケーションのインストーラや，アプリケーションの実行で利用5）することが多いファイルの拡張子です．
．

ファイルの移動， コピー

5.3.3

ファイルをコピーするには，いくつかの方法があります．まず，コピーしたいファイルを右クリックして「コピー」をクリックし，コピー先のフォルダ上を右クリックして「貼り付け」を押すと，そのファイルがコピーされます．同様にフォルダをコピーして貼り付けすると，フォルダ内のファイル全体がコピーされます．
この方法は少し手間がかかるので，もっと簡単な方法を紹介します．コピーしたいフォルダやファイルをドラッグし， Ctrl を押しながらコピー先にドロップするだけでコピーが可能です．同様

に Shift を押しながらドロップすると，コピーではなく移動となります．


ファイルやフォルダを左ボタンではなく右ボタンでドラッグアンドドロップすると，ドロップした地点にメニューが表示されます．ここでコピー，移動，ショートカットの作成を選択できます．

5.3.4

ショートカットの作成

Windows では，フォルダの深い位置にあるファイルなどを簡単に呼び出すことができる機能としてショートカットというものがあります（図 5.9）．ショートカットをダブルクリックすると，そのショートカットのリンク先のファイル （ターゲットファイル） をダブルクリックした場合と同等の効果が起こります．

3） 正確には「H:」のあとに「ě」が続く表記であり，これにより H ドライブをルートとしたときの絶対パス名を表します．
4） デフォルトで使用するものとは異なるアプリケーションで開きたい場合は， そのアプリケーションのアイコンにファイルをドロップするなど， 明示的に開くアプリケーションを指定する必要があります．
5） ほかにも.COM，.BAT，.CMD ファイルなども実行可能ファイルなのでダブルクリックすると起動します．

133

図 5.9: ショートカットのプロパティ画面の例
macOS でも同等のものとしてシンボリックリンクがありますが，Windows のショートカットの場合は実体が".LNK"という拡張子のファイルになっています （拡張子は通常表示されません）．
Windows でも，ショートカットのターゲットとしてファイルだけではなくフォルダも指定でき
ます6）．

5.3.5

ファイルの新規作成

一般的に，ファイル名はアプリケーションで編集した内容を最初に保存する際に決定し初めて保存することが多いですが，先に空のファイルを作成しておいて，それをダブルクリックしてからアプリケーションで編集し上書き保存する，という操作方法のほうが便利な場合もあります．
Windows では新しいファイルを作成したい場所を右クリックして，メニューの中の「新規作成」
から新しく作成したいファイルの種類を選択すると，その種類のファイルが自動的に作成されます．

6） ショートカットのリンク先としてはフォルダ以外にも，コントロールパネルなどの特殊なオブジェクトが指定でき
ます．

134

5.3.6

フォルダ名/ファイル名の変更

すでに存在するファイルやフォルダの名前を変更するには，変更したいアイコンをクリックしてF2




を押すか，右クリックメニューの中から「名前の変更」をクリックします （図 5.10）．

図 5.10: 名前の変更

5.4

プロセス管理5.4.1

タスクマネージャー

macOS では起動中のプロセス一覧を表示するために ps コマンドを，プロセスを強制終了するた
めに kill コマンドを使用しますが，Windows ではこれらの操作を「タスクマネージャー」で行うことができます「タスクマネージャー」も 1 つのアプリケーションです．起動するには，タスクバーを右クリッ
クして「タスクマネージャー」を選択するか， Ctrl + Alt + Delete キーを同時に押し，「タスクマネージャー」をクリックします．Windows10 のタスクマネージャーはデフォルトでは簡易表示されています（図 5.11）．

135

図 5.11: タスクマネージャー（簡易）
ここでは，タスクマネージャーウィンドウの右下に存在する，「詳細」ボタンを押すと表示される詳細画面について解説していきますが，プロセスを終了させるだけならば簡易画面でも行えます．表示されているプロセスの一覧から終了したいプロセスを選択し，ウィンドウ内右下の「タスクの終了」ボタンを押せば選択されたプロセスを終了できます．
詳細画面について解説していきます．
「プロセス」タブでは Windows 上で起動している全てのプ
ロセスが表示されます（図 5.12）．

136

図 5.12: タスクマネージャーのプロセスタブ
また，それぞれのプロセスについて「CPU 使用率」，「メモリ使用率」，「ディスク書き込み量」，「ネットワーク使用量」といった「リソース使用量」が表示されます．この時，プロセスはこれまでウィンドウで扱ってきた「アプリケーション」と画面上に表示されていない「バックグランドプ
ロセス」に分けられ，それぞれ「状態」タブでプロセスの応答状態が表示されるため，応答していないなどの理由で終了させる際に対象を見つけやすくなっています．表示されているプロセスに対して右クリックを押すことで，直接プロセスの終了や，プロセスの実行状態を詳細に記録した「ダンプファイル」を生成できます．ここでは詳細を書きませんが，ダンプファイルは解析することで異常終了した原因を発見する際に役立ちます．
詳細画面にはこの他にもタブが存在します．

137

「パフォーマンス」タブ
総 CPU 使用率等，総合使用状況を表示する．
「アプリの履歴」タブ
利用中のユーザアカウントのリソース使用量の履歴を表示する．
「ユーザー」タブ
サインイン中のユーザのリソース使用量を表示する．
「詳細」タブPID 等を含むプロセスのより詳細な実行状況を表示する．
「サービス」タブ
各種アプリケーションのアップデートなどユーザとのやり取りを必要としないプロセスの一覧を表示する．
計算機室の利用において全ての機能を使いこなす必要はないため，計算機室の利用方法の観点から役立つ「ユーザ」タブを取り上げて説明します．「ユーザ」タブでは他ユーザのリソース使用量も表示され，他ユーザの利用によって自分の利用が妨げられるといった場合にはその利用を切断させることができます（図 5.13）．これは 1 つの計算機を複数人で利用する場合において，非常に有用な機能の 1 つです．

138

図 5.13: ユーザータブ

5.4.2

プロセスに関する注意事項

Windows でも，macOS のプロセスと同様にプロセス間には親子関係があります．ただしその結合関係はあまり密接ではなく，親プロセスが終了しても子プロセスは終了しません．
Windows で，あるプロセス（親プロセス）が起動した子プロセスや孫プロセスをすべて終了した
い場合は，タスクマネージャでプロセスを右クリックして「プロセスツリーの終了」をクリックしてください．

5.5

ホームディレクトリの利用

139

5.5.1

ホームディレクトリへのアクセス方法

COINS では macOS で使用する自分のディレクトリ（ホームディレクトリ）に，Windows からアクセスできます．これにあたって COINS の Windows マシンでは，5.7.2 項で説明したドライブの 1 つである H ドライブに，このディレクトリを仮想的なドライブ（ネットワークドライブ）としてマウントすることでこれを行っています．ログオンしたら「スタートメニュー」内の「コンピュータ」からエクスプローラを開いて，H ドライブにアクセスしてみてください．するとあなたが macOS で使っているホームディレクトリの内容が表示されるはずです．H ドライブには実際はCOINS のシステムにおけるファイルサーバ上の自分のディレクトリがマウントされており，あたかもハードディスクにアクセスしているかのように，使用できます．
Windows マシンを使っているときに，ファイルを保存する場合は H ドライブ上のホームディレ
クトリを使用してください．なお，このとき注意すべき点として macOS と Windows 間での文字コードの違いが挙げられます．それぞれ日本語文字コードが異なっていると，日本語の名前を持ったファイル/ディレクトリは相互にアクセスできない可能性があります．

5.5.2

同時サインインに関する注意

iMac 同様，Windows マシンにおいてもどのマシンを使っても自分用の環境を利用できるように，「ユーザプロファイル」という機能が有効になっています．このプロファイルは，マシンのサ
インイン時にファイルサーバから読み込まれ，サインアウト時にファイルサーバに変更を書き込みます．この仕組みのため，同時に複数台のマシンを起動したときにプロファイルを変更すると，書き込みと読み込みの時刻関係によって問題が生じる場合があります．基本的には複数同時にサインインしないよう気をつけてください．
これらのプロファイルは，COINS の環境ではユーザのホームディレクトリ以下の"WinFiles"というディレクトリの下に保存されます．Windows のデスクトップやピクチャ，ダウンロードに保存したファイルなど，ユーザそれぞれのデータについてはログオフ時にこちらのディレクトリに自動的に保存され，次回 Windows マシンにログオンしたときに再度利用可能になります．

5.6

Windows からの印刷

Windows 上で作成した Word や Excel ドキュメントを印刷したい場合，直接プリンタを選択して印刷できます．大抵のアプリケーションでは，印刷する際にプリンタを選択するダイアログボック
スが表示されます．
印刷画面においてプリンタを選択すると，そのプリンタのオンライン状態や設置されている場所が表示されます．この時，自分の利用している計算機室ではない場所のプリンタを使って印刷すると，その場所まで印刷物を回収に行かねばならず，大変面倒です．印刷する場合は利用するプリン
タの場所に注意してください．

140

表 5.1: 利用可能なプリンタ一覧
部屋番号 プリンタ名

種別

3C113

aloe-pr1

モノクロ

3C113

aloe-pr2

モノクロ

3C113

aloe-pr3

モノクロ

3C113

aloe-pr4

モノクロ

3C113

color-c113

カラー

3C205

crocus-pr1

モノクロ

3C205

crocus-pr2

モノクロ

3C206

dahlia-pr1

モノクロ

プリンタの選択ダイアログボックスで「プロパティ」をクリックすると，いくつかのオプションを設定できます．割り付け印刷など行いたい場合はここから設定してください．この設定内容は，ユーザごとに保存されます．

5.7

Windows での日本語入力

COINS の Windows で日本語を入力するには，Microsoft IME（Input Method Editor）を使用します．多くのアプリケーションでは初期状態は直接入力モードになっています．キーボードの半角／全角

キーを押すと，MS-IME が有効になり日本語入力ができるようになります7）．MS-IME

での日本語入力は非常に簡単です．基本的にはローマ字入力でひらがなを入力し，変換したい場所
で Space を押すと漢字変換が行われます．複数の変換候補がある場合は Space を何度か押すと次々








に変化していきます（図 5.14）．カーソルやマウスを使うことで素早く選択できます．変換候補を定めたら Enter を押して確定します．変換候補の探索中にカーソルキーと Shift を組み合わせて








カーソルを移動することで，変換する語の区切りを変えることもできます．再度 半角／全角 キーを

押すと元の直接入力に戻ります．

7） iMac を利用している場合のキーボードには 半角/全角 キーはありませんが，スペースキーの隣に ひらがな キーと
英数 キーがあります．








141





図 5.14: 日本語入力と漢字変換
MS-IME の設定を変更したい場合は，画面右下に「あ」や「 A」と表示されているアイコン（図5.15）を右クリックして「プロパティ」を選択してください．ローマ字入力からかな入力に切り替えるなどの変更が可能です．

図 5.15: MS-IME

5.8

Windows コマンドの利用

macOS/Linux ではほとんどのファイル操作をコマンドラインから行いますが，Windows では基
本的にマウス操作が中心となるためコマンドラインを使う局面があまり多くありません．しかしながら，macOS などと同様の操作をコマンドプロンプト（図 5.16）や PowerShell から行うことが可能であり，慣れてくるとコマンドを使ったほうが速く効率良く作業できる場合もあります．

142

図 5.16: コマンドプロンプトの画面
ここではコマンドプロンプト・PowerShell の使用方法と，Windows における主要なコマンドについて解説します．どちら環境も使用できることが望ましいですが，はじめはどちらか好きなほうを習得しましょう．macOS/Linux のコマンドと Windows のコマンドは違うものが多いですが，こ
こでは主要なコマンドについて macOS でのコマンドとの対応付けを行いながら解説します．

5.8.1

コマンドプロンプト

コマンドプロンプトは Windows に古くからあるコマンド実行環境です．起動する際はスタート
ボタンを右クリックして「コマンドプロンプト」をクリックするか，スタート画面のアプリケー
ション一覧から選択してください．起動する際はタスクバーにある検索ボックスに「cmd」と入力
し表示される，「コマンドプロンプト」を選択してください．
コマンドプロンプトを起動すると以下のような内容のプロンプトウィンドウが表示されます．
Microsoft Windows [ Version 6.3.9600]（ c ） 2013 Microsoft Corporation． All rights reserved．
H:Y>

143

ここにコマンドを入力します．デフォルトでは，プロンプト文字列にはカレントディレクトリ（自分が現在いるディレクトリ）の絶対パス名が表示されます．上の例では「H:ě」がこれに当たります．
5.8.1.1

dir コマンド指定されたディレクトリ内のファイルやサブディレクトリの一覧を取得します．macOS における ls コマンドと同じような働きをします．引数に何も指定されていない場合は，カレントディレ
クトリの内容が表示されます．
H:Ytest > dir
H:Ytest の デ ィ レ ク ト リ
2014/03/08
2014/03/08
2014/03/08
2014/03/08

13:59
13:59
13:59
13:58

<DIR ><DIR ><DIR >.
.
0 data.txt
helloコマンドプロンプトにてオプションは- もしくは/ を使って行えます．例えば dir のオプション
一覧を確認する場合には，dir /?と入力してヘルプを表示してください．これ以降に説明するほとんどの Windows コマンドでも，引数として"/?"をつけて実行すると簡単なヘルプが表示されます．
5.8.1.2

cd コマンド

現在の作業フォルダ（カレントディレクトリ）を変更します．絶対パス名または相対パス名を指定できます．相対パス名で指定する場合には macOS と同様に，“.” は現在のフォルダ，“..” はフォルダ構造上で 1 つ上の階層のフォルダを示します．ディレクトリ名を指定せずに cd と入力した場合には下記の実行例のように現在のフォルダの絶対パス名を表示します．これについては macOSにおける pwd と同様の働きをします．
H:Ytest >cd hello
H:YtestYhello >cd
H:YtestYhello
H:YtestYhello >cd .
H:Ytest >5.8.1.3

copy コマンド

指定したファイルをコピーします．UNIX の cp コマンドと同等です．この例では「hoge.txt」というファイルをフォルダ構造上で同じ階層のフォルダにコピーします．
H:Ytest > copy hoge.txt .
1 個 の ファ イ ル を コ ピー し ま し た．

144

複数ファイルについてもワイルドカードにより扱うことができます．ワイルドカードは検索等の際に利用する特殊文字のことで，具体的には「*」や「?」があたります．「*」は長さ 0 文字以上の任意の文字列に一致し，「?」は任意の 1 文字に一致します．copy の対象にワイルドカードを用いることで，例えばテキストファイルのみを同じ階層のフォルダに一括してコピーすることが可能になります．
H:Ytest > copy *. txt .
2 個 の ファ イ ル を コ ピー し ま し た．

この例の．txt 部分を．jpg にすれば，フォルダ内の全ての．jpg ファイルのコピーとなります．
5.8.1.4

move コマンド

ファイルのコピーではなく移動をします．移動先にはディレクトリ名またはファイル名を指定します．同じディレクトリ内でのファイル名を指定した場合は，ファイル名の変更と同じです．このコマンドは macOS における mv コマンドほぼ同等です．copy コマンドと同じくワイルドカードを用いた複数ファイルの指定が可能です．
H:Ytest > move atad.txt helloYdatadata .txt
1 個 の ファ イ ル を 移 動 し ま し た．

5.8.1.5

ren コマンド

ファイル名やディレクトリ名を変更します．コマンド名は"rename"の省略です．
H:Ytest > ren data.txt dat.txt

5.8.1.6del コマンドファイルを削除します．/S オプションをつけるとサブディレクトリも再帰的に削除します．また/F オプションをつけると読み取り専用ファイルについても強制的に削除します．macOS における rm コマンドとほぼ同等の機能を持ちます．/Q オプションをつけることで再帰的に削除する場
合に表示されるダイアログを消すことができます．
H:Ytest > del hello /S /Q
削 除 し た フ ァ イ ル - H:YtestYhelloYdatadata .txt

5.8.1.7

rmdir コマンド

ディレクトリを削除します．del コマンドと同じく/S オプションをつけるとディレクトリ内のファイルとサブディレクトリをすべて再帰的に削除してしまうので注意してください．

145

5.8.1.8

cls コマンドコマンドプロンプトウィンドウ内に表示されている文字を消去します．コマンドプロンプトの作
業フォルダなどの状態は維持されます．

5.8.2

PowerShell

PowerShell はコマンドプロンプトよりも後に登場した Windows の新しいシェル環境です．コマ
ンドを受けてテキストを返す多くのシェルとは異なり，コマンドを受け取るとオブジェクトを返す
8）
ことが特徴です．
起動するにはスタートメニューで powershell と検索してください．

5.8.2.1

ディレクトリの中身を確認する

ディレクトリの中身を確認するには ls と入力します．
例１：カレントディレクトリの中身を表示する
パラメータをつけずに実行するとカレントディレクトリの中身を表示できます．
PS > ls
Directory : C:YTest
Mode---d-----a----a----a----ar ---LastWriteTime------------2/15/2019
08:29
2/13/201908:55
2/12/201915:40
2/1/2019
08:43
2/12/2019
14:31

Length Name------ ---Logs
26 anotherfile .txt
118014 Command .txt
183 CreateTestFile .ps1
27 ReadOnlyFile .txt

例２：特定のディレクトリの中身を表示する
パラメータとしてディレクトリを渡すとそのディレクトリの中身を表示できます．
PS > ls C:YTest
Directory : C:YTest
Mode---d-----a----a----a----ar ---5.8.2.2

LastWriteTime------------2/15/2019
08:29
2/13/201908:55
2/12/201915:40
2/1/2019
08:43
2/12/2019
14:31

Length Name------ ---Logs
26 anotherfile .txt
118014 Command .txt
183 CreateTestFile .ps1
27 ReadOnlyFile .txt

カレントディレクトリを移動する

カレントディレクトリを移動するには cd と入力します．
8） つまり, コマンドを入力した結果, 画面に出力される内容はオブジェクトを文字列に変換した内容に過ぎません.

146

例：カレントディレクトリを移動する
パラメータにディレクトリを渡すとそのディレクトリに移動できます．
PS C:Y> cd C:YUsersYtarou
PS C:YUsersYtarou >5.8.2.3

カレントディレクトリを確認する

カレントディレクトリを確認するには pwd と入力します．
例：カレントディレクトリを表示する
パラメータをつけずに実行するとカレントディレクトリを表示できます．
PS C:YWindows > pwd
Path---C:YWindows

5.8.2.4

ディレクトリを作成する

ディレクトリを作成するには mkdir と入力します．
例：カレントディレクトリにディレクトリを作成する
パラメータとして作成したいディレクトリ名を渡すとその名前でディレクトリを作成できます．
PS C:YWindows > mkdir newd
デ ィ レ ク ト リ : C:Y

Mode---d-----

5.8.2.5

LastWriteTime------------2019/11/04
0:08

Length Name------ ---newd

ディレクトリやファイルを削除する

ディレクトリやファイルを削除するには rm と入力します
例：ディレクトリ / ファイルを削除する
パラメータとして削除したいディレクトリやファイルを渡すとその名前のディレクトリやファイルを削除できます．
PS C:YUsers > ls

デ ィ レ ク ト リ : C:YUsers

Mode
----

LastWriteTime-------------

Length Name------ ---147

d-----

2018/03/18

22:08

abc

PS C:YUsers > rm abc
PS C:YUsers > ls
（な に も な く なっ た の で 何 も 表 示 さ れ な い）

5.8.2.6

ファイルやディレクトリを移動・名前の変更するファイルやディレクトリを移動したり名前を変更したりするには mv と入力します．
例１：ディレクトリ / ファイルの名前を変更するパラメータに名前を変更したいディレクトリ
やファイルと変更後の名前を渡すと名前を変更できます．
PS C:YUsers > ls

デ ィ レ ク ト リ : C:YUsers

Mode---d-----

LastWriteTime------------2018/03/18
0:35

Length Name------ ---abc

PS C:YUsers > mv abc xyz
PS C:YUsers > ls

デ ィ レ ク ト リ : C:YUsers

Mode---d-----

LastWriteTime------------2018/03/18
0:35

Length Name------ ---xyz

例２：ディレクトリ / ファイルを移動する
パラメータに移動したいディレクトリやファイルと移動先を渡すとディレクトリやファイルを移動できます．
PS C:YUsers > ls

デ ィ レ ク ト リ : C:YUsers

Mode---d-----

LastWriteTime------------2018/03/18
22:38

Length Name------ ---abc
148

d-----

2018/03/18

0:35

xyz

LastWriteTime------------2018/03/18
22:38

Length Name------ ---xyz

PS C:YUsers > mv abc xyz
PS C:YUsers > ls

デ ィ レ ク ト リ : C:YUsers

Mode---d-----PS C:YUsers > ls xyz

デ ィ レ ク ト リ : C:YUsersYxyz

Mode---d-----

LastWriteTime------------2018/03/18
22:38

Length Name------ ---abc

例３：ディレクトリ / ファイルを移動して名前を変更する
パラメータに移動したいディレクトリやファイルと移動後のパスを渡すとディレクトリやファイルを移動して名前を変えることができます．
PS CYUsers > ls

デ ィ レ ク ト リ : C:YUsers

Mode---d----d-----

LastWriteTime------------2021/03/28
22:38
2021/03/28
22:42

Length Name------ ---abc
xyz

PS C:YUsers > mv abc xyzYdef
PS C:YUsers > ls xyz

デ ィ レ ク ト リ : C:YUsersYxyz

149

Mode
---d-----

LastWriteTime------------2021/03/28
22:38

5.8.2.7

ファイルやディレクトリをコピーする

Length Name------ ---def

ファイルやディレクトリをコピーするには cp と入力します． mv コマンドと同様のパラメータの渡し方でコピーできます．
5.8.2.8

ファイルの中身を見る

ファイルの中身を見るには cat と入力します．
例：ファイルの中身を表示する
パラメータに中身を見たいファイルを渡すとその中身が表示されます．
デ ィ レ ク ト リ : C:YUsers

Mode----a----

LastWriteTime------------2021/02/04
1:27

Length Name------ ---16 text.txt

PS C:YUsers > cat text.txt
hello powershell

5.8.2.9

コマンドの使い方を調べる

コマンドの使い方を調べるコマンドとして Get-Help コマンドが用意されています．調べたいコ
マンドをパラメータとして渡すと使用方法が出力されます．エイリアスのコマンドをパラメータに渡すと名前の欄には本来の名前が表示されることに注意が必要です．
5.8.2.10

エイリアスについてPowerShell のコマンドの中にはエイリアス（別名）を持っているものがあります．本来のコマンドを使用してもエイリアスのコマンドを使用しても動作は変わらないため，複数の名前が示されて9）いる場合は各自の手に馴染む名前を使用するのが良いでしょう．
エイリアスの例を表 5.2 に示します．また，設定されているエイリアスを確認するためのコマンドとして Get-Alias コマンドが用意されています．

9） ただし,UNIX コマンドと同名のエイリアスが提供されていたとしても必ずしも UNIX コマンドと同様の使用法, 挙動とは限りません.

150

表 5.2: PowerShell にデフォルトで設定されているエイリアス
本来の名前

エイリアス

Get-ChildItem ls,dir,gci

5.9

Set-Location

cd,chdir,sl

Get-Location

pwd,glRemove-Item

rm,rmdir,rd,del,erase,riMove-Item

mv,move,mi

Copy-Item

cp,copy,cpi

Get-Content

cat,type,gc

メール設定

Windows10 上でメールの送受信を行う際には，Thunderbird を利用できます．macOS を利用する場合と同じ方法で設定ができますので，第 4.2 節を参照してください．

5.10

Linux の利用

COINS の PC では起動時に Linux を選択すると Linux のディストリビューションの 1 つである Ubuntu を利用できます（図 5.17）．これを用いることで，macOS ではできない Linux 独自の作業などを行うことができます．Linux についても macOS や Windows 同様にユーザ情報として
COINS のユーザ名とパスワードを用いてログイン等を行うことができます．

151

図 5.17: Ubuntu のデスクトップ
Linux においても基本的なコマンドは macOS と同じです．第 2 章で解説したコマンドをターミナルに入力すると同じ動作をします．ただし open コマンドは Linux マシンにはありませんが，同等の機能があるコマンドとして xdg-open コマンドが使用できます．
ターミナルを起動するには，デスクトップ左上の「アクティビティ」をクリックして，検索ボッ
クスに「terminal」と入力すると表示される「端末」アプリケーションを起動してください．

152

第6章

LATEX

本章では，組版処理ソフトウェアである LATEX について紹介します．この章の目的は簡単なレポートから卒業論文まで書けるような LATEX の記法を身につけることです．

LATEX の概要

6.1

LATEX1）は本やレポート，論文を作成するためのツールです．Microsoft の Word や Just Systemの一太郎などと同じような用途のソフトウェアです．最初は通常のワープロソフトに比べ，覚える
ことも多く面倒に感じるかもしれませんが，慣れてしまえば非常に有用なツールです．
LATEX の特徴としては例えば次のようなものが挙げられます．
マークアップ言語である
LATEX はマークアップ言語2）の一つです．この方式によって文書の体裁を論理的に記述できます．
数式や図を綺麗に出力できる
MS Word にも数式エディタが存在しますが，それよりも格段に綺麗な，かつ表現力の高い数式を出力できます．
無償で利用できる
LATEX およびその関連ツールは無償で使うことができます．
複数の OS で動作する
Windows や macOS，Linux 系など様々な OS の上で動作します．
例えばこの手引きも LATEX によって作成されています．

6.1.1

TEX と LATEXLATEX を学習するにあたって，同時に TEX3）という言葉についても学習する必要があります．この 2 つの意味を正しくおさえておくことは，今後 TEX や LATEX について学習したり Web などで情報を集めたりする際に役に立つでしょう．なお，LATEX を利用して pdf ファイルを作成する具体的な方法は 6.2 節から説明します．まずは実際に LATEX を使ってみたい，という方はここから取り組
んでみてください．
1） 「らてふ」や「らてっく」と発音します．どちらで発音しても構いません．その他にも「れいてっく」などと発音することもあります．
2） タイトルや見出しといった文書の構造と，フォントなどといった見た目の情報を文書の中に埋め込むという，文書を記述する方法の一つです．
3） 「てふ」もしくは「てっく」と発音します．

153

6.1.1.1

TEX とはTEX とは Donald Knuth という人が，1978 年に作成したプログラム言語です．プログラム言語ですから，Java や C 言語と同様に処理系と呼ばれるプログラムがあり，ソースコードから処理系を用いて何らかの成果物を得ます．先ほどの図 6.2 にあるように，TEX ファイル（ソースコード）
は，ε - pTEX などの TEX の処理系を用いて DVI ファイルへと変換します．これは Java のソースコードを javac といった処理系を用いて，実行ファイルを得る関係と似ています．
TEX の処理系は Knuth が作ったもの以外にもたくさんあり，日本では主に ε - pTEX や ε-upTEXという処理系が使われています4）．
つまり TEX とは厳密に言うならば，Knuth が作ったプログラム言語かあるいはその処理系を指すということになります．
6.1.1.2

LATEX とは

TEX が Knuth が作ったプログラム言語やその処理系を指すことに対して，LATEX とはもともとプログラム言語 TEX で書かれたプログラムのことです．1980 年に Leslie Lamport という人によって作られました．
LATEX は TEX をより便利に使えるようにするプログラムで，TEX の世界ではこれらをマクロパッケージ5）と呼びます．Java など汎用言語の世界ではこのようなプログラムのことをライブラリと呼ぶことがありますが，その関係と似ています．
この TEX と LATEX の関係を図 6.1 にまとめました6）．
LATEX

ソース
ファイル

TEX 処理系

DVI ファイル

図 6.1: TEX 処理系とマクロパッケージ LATEX の関係
まず皆さんは Emacs などのテキストエディタを用いて文書を LATEX ファイル（ソースファイル）
へ内容を書き込み，それを ε - pTEX など TEX の処理系に渡します．ε - pTEX など TEX の処理系
はコンピュータの中から自動的に LATEX を探し出し，これを読み込んで最終的な文書を生成します7）．
現在 LATEX は世界中で使われるようになり，少なくとも日本語圏においては多くの文書が LATEXを前提として作成されるようになったので，いつしか “LATEX” が “LATEX パッケージを前提とした
4） 有名な処理系については図 6.9 にまとめてあります．
5） あるいは “マクロ” や “パッケージ” と省略することもあります．
6） 正確に言えば，私たちが通常 LATEX を用いる際は LATEX パッケージを TEX 処理系によって一度コンパイルして得られたフォーマットファイルを用います．
7） 脚注 6）にあるように，正確には LATEX パッケージをコンパイルして得られるフォーマットファイルを読み込むことになります．また LATEX を読み込まずに TEX 処理系を使うこともできますが，この章では解説しません．

154

TEX” という意味合いで用いられるようになりました．ですが厳密に言えば LATEX は TEX で実装されたプログラムです．
また，これに伴って，“TEX” という言葉が “LATEX を使っていない純粋な TEX” という意味に解釈されることがあります8）．ただ，皆さんがマクロパッケージとしての LATEX を話題にすることは少ないでしょうから，この章では LATEX という言葉を，“LATEX パッケージを前提とした TEX” という意味で用います．
LaTeX2.09 と LaTeX2e LATEX が TEX で実装されたマクロパッケージ（プログラム）であるということを前節では述べました．プログラムは “Windows 10” や “macOS 10.14 Mojave” といった
OS のようにバージョンを持ちます．LATEX も同様にバージョンがあり，現在は LATEX 2ε というバージョンの LATEX が使われています．
LATEX 2ε が登場したのは 1993 年で多くの時間が経過しているので，現在 LATEX といった場合は
LATEX 2ε のことを指します．この LATEX 2ε より前の LATEX のことを “LATEX2.09” と区別します．

6.1.2

ε - pTEX と dvipdfmx

TEX ファイルから最終的な PDF ファイルを得るためには，図 6.2 で示したように次の 2 つのプ
ログラムを用いる必要があります．
ε - pTEXLATEX ファイルを DVI ファイルへコンパイルするプログラム
dvipdfmxDVI ファイルを PDF ファイルへコンパイルするプログラム

6.1.2.1

ε - pTEX

Knuth が作った TEX を改造して，日本語や縦書きができるようにした pTEX と，さらに NTS
team によって拡張された ε-TEX をマージした処理系が ε - pTEX となります．Unicode に対応していない9）という欠点はありますが，Web の資料や LATEX に関する日本語書籍の多くが ε - pTEX を前提としていることが多いので，本章では ε - pTEX を採用します．
情報科学類の計算機環境にて ε - pTEX を用いる場合は，macOS のターミナルにて platex というコマンドを実行します10）．すると次のような表示が得られるはずです．
$ platexThis is e-pTeX , Version 3.1415926 - p3 .4 -110825 -2.6 (utf8.euc) (TeX Live 2013)
restricted \ write18 enabled .
**このコマンドによって，ε - pTEX（e-pTeX）が起動します．起動が確認できたら， ctrl + c でひ8） この問題を解決するために，LATEX などを用いていない純粋な TEX のことを “plain TEX” と呼び，処理系の話題と区別します．
9） 文字コードが UTF-8 のファイルを扱うことはできますが，これは内部で nkf などを用いて一旦 EUC などの文字
コードへ変換しているだけです．
10） 情報科学類の計算機にインストールされた他の OS や，大規模計算機には TEX Live がインストールされていませんので，情報科学類の計算機を用いる場合には macOS を使うのがよいでしょう．

155

とまず ε - pTEX を終了します．
もし pTeX という表示が出た場合，それは ε - pTEX ではなく pTEX という別の処理系です．恐らく使用しているコンピュータにインストールされた LATEX の環境が古いのだと思われます．6.25.1
節を参考するなどして最新の LATEX 環境へアップデートしましょう．
6.1.2.2

dvipdfmx

dvipdfmx は DVI ファイルを PDF ファイルへコンパイルするプログラムです．かつては dvipdfmというプログラムが使われていましたが，それを改造して現在は dvipdfmx が TEX Live に収録されています．
現在はパッケージの相性という観点から dvipdfm の使用は非推奨ですし，TEX Live にも同梱されていません11）．

LATEX を使ううえでの注意

6.2

LATEX の命令に使うバックスラッシュ（ \ ）は，情報科学類の iMac の標準設定では円マーク
（ Y ）として入力されてしまいます．バックスラッシュ（\）を入力するには， Option と ě を同












時に押します．また，入力の設定を変更することで， Y を押すと \ が入力できるようになりま








す．この手引きの 1.5.5 を参照してください．

6.3

LATEX による文書生成の流れ

LATEX は後述する LATEX ファイルというテキストベースのファイルから，DVI ファイルという形
式のファイルを経て，PDF ファイルなどの最終的な文書へ変換されます．これは次の図 6.2 のようになります．
PS ファイル
dvips
LAT X

E
ファイル

ε - pTEX

DVI ファイル

ps2pdf
PDF ファ

dvipdfmx

イル

図 6.2: LATEX ファイルから最終的な文書生成の流れ
従って，LATEX ファイルの内容編集は Emacs（第 3 章参照）などといったテキストエディタで行
い，それを ε - pTEX12）などのプログラムを用いて，後述する DVI ファイルへ変換し，さらにそれ

11） dvipdfm コマンドを実行すると dvipdfmx が互換モードで起動します．
12） これは「いーぴーてっく」もしくは「いーぴーてふ」と発音します．

156

を dvipdfmx といったプログラムにて PDF へと変換することで，最終的な PDF ファイルの文書が得られます．
この変換のことをコンパイルと呼びます．つまり LATEX のソースファイルをコンパイルすることで DVI ファイルが得られ，さらに DVI ファイルをコンパイルすることで PDF ファイルなどが得られます．
まずは各種ファイル形式について説明します．

6.4

LATEX に関連するファイルの形式

前節では “LATEX ファイル” や “DVI ファイル” といった聞き慣れないファイル形式を経て最終的な文書になるという説明をしました．この節では LATEX に関連するファイル形式を列挙して解説します．
LATEX ファイル
文書の元となるテキストファイルです．これに文書や LATEX の命令を書き込みます．詳しい
文法などは後述します．
DVI ファイル
DVI ファイルの DVI とは “Device-Independent” のことで，文書のレイアウトが表示デバイスに全く依存しない形のバイナリデータです．LATEX ファイルをコンパイルすることで生成されます．この DVI ファイルを直接閲覧・編集するということはあまりなく，別のファイルへ変換するための中間ファイルという役割が一般的です．

6.5

Hello LATEX!

ソースコード 6.1 と同じ内容のテキストファイルを test.tex の名前で作成してください．詳細については後述しますので，今はとりあえず無視して転写してください．
Listing 6.1: Hello LATEX!
1\ documentclass [a4j, dvipdfmx ]{ jsarticle }2
3\begin{ document }

4
5
6
7
8

% こ の 行 は コ メ ン ト で す．
% 表 示 に 影 響 を 与 え ま せ ん．
\ section {Hello \LaTeX !}\LaTeX の 文 書 は 次 の プ ロ グ ラ ム で コ ン パ イ ル し ま す ．

9
10
11
12

\begin{ itemize }\item platex\item dvipdfmx

157

13

\end{ itemize }

14
15
16

\ subsection { コ ン パ イ ル }以 下 の よ う に ター ミ ナ ル で コ ン パ イ ル し ま す．

17
18
19
20
21

\begin{ verbatim }platex -kanji=utf8 test.tex
dvipdfmx test.dvi\end{ verbatim }2223\end{ document }この test.tex に対して以下のようにコンパイルを行います13）．
$ platex -kanji=utf8 test.tex$ dvipdfmx test$

このコマンドにより，LATEX ファイル 6.1 を ε - pTEX と dvipdfmx でコンパイルした結果，様々なファイルと共に test.pdf という PDF ファイルが生成され，それは図 6.3 のようになります．

1 Hello LATEX!
LATEX の文書は次のプログラムでコンパイルします．
• platex• dvipdfmx

1.1 コンパイル
以下のようにターミナルでコンパイルします．
platex -kanji=utf8 test.tex
dvipdfmx test.dvi
図 6.3: test.pdf
LATEX で文書を作る最初の一歩を踏み出しました．もしコンパイルが上手くいかない場合は次の節を参考にしてください．

13） このオプション-kanji=utf8 は LATEX ファイルの文字コードを指定しています．ファイルの文字コードが EUC-JPの場合は euc，Shift-JIS の場合は sjis と指定します．

158

6.5.1

コンパイルに失敗したときJava の処理系（javac）へ文法的に誤ったプログラムを渡したときのように，エラーが発生してコンパイルに失敗することがあります．例えば，次のような状態で TEX が止ってしまうことがあります．
! Undefined control sequence .
l.362 \LATEX?

このような状態になった場合は，ひとまず x と入力してから（return）キーで TEX を終了




します．
! Undefined control sequence .
l.362 \LATEX? x

TEX のエラーは!から始まります．ですのでこの場合は! Undefined control sequence.がエラーということになります．また次の行にあるl.362 \LATEX とは，“362 行目の\LATEX の付近でエラーが発生した” ということを示しています．
LATEX のエラーコードはたくさんあります．もし皆さんがエラーと遭遇してしまった場合は TEX
Wiki14）にエラーメッセージの意味が多くまとめられていますので，こちらを参考に間違いを修正するとよいでしょう．

LATEX のコマンドと環境

6.6

前節ではサンプルを基に LATEX ファイルを実際にコンパイルして PDF ファイルを作成しました．本節では実際に LATEX ファイルを記述するための記法を紹介します．

6.6.1

コマンド

ソースコード 6.1 には\ （バックスラッシュ）から始まる，例えば\ documentclass や\sectionといったものがあります．これらのことを LATEX では次のように言います．
• コマンド• マクロ• コントロールシークエンス（Control Sequence, CS）
せいぎょつづり• 制御 綴このうちどれを使っても間違いではありません．この章では \ から始まるものを，コマンドと14） https://texwiki.texjp.org

159

いう用語で統一します．
このコマンドとは TEX 処理系へ組版に関する指示を与える命令のことです．コマンドの意味を理解することにより，LATEX で綺麗な文書を作ることができるようになります．
6.6.1.1

特殊文字

LATEX では一部の ASCII 文字を特殊文字として扱います．それらの文字を下に示します．
特殊文字の一覧# $ % & _ { } \^~これらの特殊文字は，そのまま書いても表示されず，命令として解釈されます．ただし，これらと同じ形をしている全角の文字は，特殊文字としては扱われません．特殊文字を文章に入れたい場
合は，表 6.1 に示す方法でエスケープする必要があります．
表 6.1: 特殊文字のエスケープ

6.6.1.2

文字

コマンド

文字

コマンド

文字

コマンド

#

\#

$

\$

%

\%

&

\&

_

\_

{

\{

}

\}

\

\textbackslash^\textasciicircum~\textasciitilde

記号

TEX や LATEX には，記号を出力するコマンドがいくつかあらかじめ用意されています．一部を
表 6.2 に示します．

160

表 6.2: 記号の一例
コマンド

出力結果

コマンド

出力結果

コマンド

出力結果

\dag

†

\ddag

‡

\copyright©

\pounds

£

\oe

œ

\OE

Œ

\ae

æ

\AE

Æ

\aa

å

\AA

Å

\o

ø

\O

Ø

?‘

¿

!‘

¡

$\sim$

∼

‘‘

“

’’

”

--

–

\LaTeX

LATEX

\TeX

TEX

---

—

\textasciicircum^\textbar|\textless<\textgreater>\textregistered®

\texttrademark™

\textvisiblespace␣\textbackslash\\textasciitilde

~

\S

§

\P

¶

6.6.1.3

引数

LATEX のコマンドには引数といって，そのコマンドに何か情報を渡す必要がある場合があります．このコマンドに渡される情報を引数と呼び，[]や{}で囲んでコマンドの後に記述します．このうち，[]を使う引数を特にオプションと言い，こちらは書いても書かなくてもよいです．
例えば\ documentclass コマンドは a4j, dvipdfm と jsarticle という 3 つの引数を受け取っていて，そのうちオプション a4j, dvipdfmx は省略可能です．

6.6.2

環境

LATEX の “環境” について解説します15）．
環境とは命令の作用する範囲のことであり，\begin と\endという 2 つのコマンドで囲むことにより指定します．例えばソースコード 6.1 の 3 行目と 23 行目を見ると，次のようになっています．
\begin{ document }....
\end{ document }{}で囲われた部分は，その環境の名前を表わしています．そして\begin は始まりを，\end は終わりを表わします．
例 え ば\begin{document}と な っ て い た ら，“document 環 境 の 始 ま り” と い う 意 味 に な り，\end{document}は同様に “document 環境の終わり” を意味します．

15） 環境という概念は純粋な TEX にはなく，LATEX によって提供されているものです．

161

6.7

クラスファイルの指定

LATEX ではまず，どのような種類の文書であるのかを明示する必要があります．それを行うのが\ documentclass コマンドです．

ソースコード 6.1 で提示したサンプルを見ると，最初の行が次のようになっています．
\ documentclass [a4j, dvipdfmx ]{ jsarticle }このコマンドにおいて，オプションに紙のサイズや文字の大きさなどを，引数に具体的なドキュ
メントクラスを指定します．

6.7.1

ドキュメントクラス

日本語の文書では奥村晴彦氏が開発した jsarticle や jsbook が主に使われています．この 2 つの使い分けを説明します．
表 6.3: クラスファイルの一覧
クラスファイル意味jsarticle

一般的な文書，レポート

jsbook書籍

授業のレポートなど多くの場合は jsarticle を用いれば大丈夫です．

6.7.2

jsarticle のオプション

オプションを指定することで，ドキュメントクラスに対して文書の形式等を指定できます．ソースコード 6.1 ではa4jというオプションが指定してありました．a4jは “A4 用紙の大きさで文書を作成する” という意味です．
また，ソースコード 6.1 で指定してあったオプション dvipdfmx は，「DVI ファイルから PDF を得るために，dvipdfmx を用いる」ことを表すオプションです．このように，利用する DVI 処理系
をオプションとして文章冒頭で渡しておいたほうが，エラー16）を未然に回避できます．
以下に jsarticle のオプションを記してありますので参考にしてください．
6.7.2.1

用紙サイズ

6.7.2.2

a4paper余白の広い A4 サイズ

文字サイズ

オプションで文字サイズの指定がなければ，

b5paper余白の広い B5 サイズ

10pt が本文に適用されます．

a4j余白の狭い A4 サイズ• 10ptb5j余白の狭い B5 サイズ• 11pt16） 具体的には，各種パッケージのデフォルトの DVI 処理系と，実際に利用される DVI 処理系が異なることによるエ
ラー．

162

めることができます．

• 12ptoneside全て同じ体裁
6.7.2.3

段組

twosideページの体裁は偶数とページと奇数

新聞のような文書の段組を指定できます．

ページとで異なる

onecolumn段組なし
twocolumn2 段組

6.7.2.5

組版の確認

draft行の右端がはみでたときに印を付ける
6.7.2.4

final最終版．何も印はつかない

ページの体裁両面印刷を前提としたとき，奇数ページと偶数ページでページの体裁を変えるかどうかを決
この他のオプションについて知りたい方は jsarticle などが収録されている jsclasses パッ
ケージ17）のドキュメントを参照してください．

6.8

本文

文 書 の 記 述 を 始 め る に あ た り，ド キ ュ メ ン ト ク ラ ス を 記 述 し ま し た．次 に 記 述 す る の は
document 環境です．document 環境は，どこが文書の本文なのかを明示します．つまり，文書に出力されるのは document 環境内のみで，\begin{document}の前や\end{document}以降に文章を記述しても無視されます．

6.9

表題と著者

論文やレポートを書くうえで表紙は大事です．これらの文書では自分の名前や学籍番号などを記述することが求められます．表紙ではタイトル，名前等を書きますので，本節ではそれらの書き方を紹介します．
表題\title{タイトル}のようにして，文書の表題を記述します．
著者\author{山田 太郎}のように文書の著者を記述します．複数著者がいる場合は，\andコマンド
で区切ります．
日付\date {2011/3/11} のように，文書にかかわる日付（作成日，提出日など）を記述します．
\date{}とすると日付は入力されず空となり，\date\today とすると作成日の日付が自動的に入力されます．
ここまでで表題や著者の書き方を紹介しました．しかしこれらだけでは表題ページは生成されま17） http://www.ctan.org/pkg/jsclasses

163

せん．そこで使用するのが\ maketitle コマンドです．これを使用することで，タイトル等が整形された形で生成されます．
例えばまとめると以下のソースコード 6.2 のようになります．
Listing 6.2: 表題ページの例
1\ documentclass [a4j, dvipdfmx ]{ jsarticle }

2
3
4
5

\title{ 日 本 語 入 力 SKK に つ い て }\author {\ text{ 情 報 雅 彦 } \and Yukiyoshi KAGAKU }\date\today

6
7\begin{ document }8
9\ maketitle

1011

日 本 語 入 力 SKK と は……

12
13\end{ document }これをコンパイルすると次の図 6.4 となります．

日本語入力 SKK について
情報 雅彦

Yukiyoshi KAGAKU
2014 年 3 月 16 日

日本語入力 SKK とは……

図 6.4: 表題ページを出力する

6.10

見出し

よい文章を書くためには文章の中の章立てを作ることが重要です．新聞などを見ると，まず大きな文字で書かれた見出しを用いてその後の本文が一体何について論じているのかを一言で述べ，本文では端的にこのことについて論じたいという目標を明らかにします．見出しという文章の目標があることで，何について意識して読めばよいのかが明瞭になり，読者にとって文章がより理解しや
すくなります．

164

LATEX における見出しの書き方を紹介します．見出しの中でもっとも大きいのは\part （部）になりますが，大きいものから始めなければいけないということはありません18）．レポートなどの場合は\section （節）から始めればいいでしょう．表 6.4 は見出しの表です．
表 6.4: 見出しの種類
見出し

意味

\part

部

\chapter 19）章\section節\ subsection

小節\ subsubsection

小々節\ paragraph

段落\ subparagraph

小段落

以下のソースコード 6.3 は見出しの例です．

18） ただし，例えば\chapter の後に\ subsection を使うなど，途中の見出しを飛ばすのはよくありません．
19） \chapter コマンドは jsarticle クラスには含まれていません．jsbook に含まれています．

165

Listing 6.3: 見出しの例
1\ documentclass [a4j, dvipdfmx ]{ jsbook }

2
3
4
5

\begin{ document }\part{ 地 球 }
地 球 は 太 陽 系 の 惑 星 の 一 つ で 太 陽 か ら 三 番 目 に 近 く， 生 物 が 生 存 し て い る 星 で あ る．

678

\ chapter { ア ジ ア }ア ジ ア は ヨー ロッ パ を 除 い た ユー ラ シ ア 大 陸 全 般 を 指 す．

9
10
11

\ section { 日 本 }日 本 は 日 本 列 島 を 主 な 領 土 と す る 東 ア ジ ア の 国 家 で あ る．

12
13
14

\ subsection { 茨 城 }
日 本 の 県 の 一 つ で 関 東 地 方 の 北 東 に 位 置 し， 東 は 太 平 洋 に 面 す る．

15
16
17

\ subsubsection { つ く ば }茨 城 県 南 部 に 位 置 し， 筑 波 研 究 学 園 都 市 は つ く ば 市 全 域 を 区 域 と す る．

18
19
20

\ paragraph { 天 王 台 }つ く ば 市 の 東 部 に 位 置 し， 地 域 内 の ほ ぼ す べ て が 筑 波 大 学 や 研 究 施 設 で あ る．

21
22
23
24

\ subparagraph {1 -1 -1}
筑 波 大 学 天 王 台 キャ ン パ ス が あ る．
\end{ document }これは次の図 6.5 のようになります．

166

図 6.5: 見出しのコンパイル結果
この例では説明のため各見出しが一度しか用いられていませんが，本来このような文章の構造は避けるべきです．

167

6.11

書体・文字サイズ

見出し（6.10 節）のコマンドを用いて文書を章立し文章の構造を作ることが重要であるように，一部だけ書体を変更するなどして，文章の中で特に注目して欲しい部分を明示的にするというのも文章を良くするうえで重要です．

6.11.1

書体の変更

6.11.1.1

和文書体

和文（ひらがな・カタカナ・漢字）に関する書体を変更する場合には次のコマンドを用います．
\textgt 引数の文字列をゴシック体にします．
\textmc 引数の文字列を明朝体にします．
\textbf 引数の文字列を太字にします．

和文ではゴシック体にすることで文章の中で強調を表わすことが多いです．ただ，強調をする場
合は\emph コマンドを用いるほうが意味も分かりやすく欧文にも使えるので便利です．
\textbf コマンドでボールドにしたり，あるいは\ underline コマンドで下線を引いたりといった方法による強調は，ページにおける黒色の割合が増えて密度が高く見えてしまうなどの理由から，安易な多用はお勧めしません．
6.11.1.2

欧文書体

主に欧文の書体を変更します．
\textbf

引数の文字列をボールド（Bold）にします．基本的には見出しや表題の文字列に使います．
\textit

引数の文字列をイタリック（Italic）にします．強調するときに使います20）．
\texttt

引数の文字列をタイプライタ（Typewriter）にします．ユーザの入力部分などに用います．
\textsc

引数の文字列をスモールキャピタル（Small Capital）にします．
前にも述べましたが\textbf の多用は，ページに文字が詰っている印象を与えるので使用はほどほどにしましょう．

20） 強調する際には\texttt コマンドよりも，\emph コマンドの方が直感的でかつ和文にも使えます．

1686.11.2

文字サイズ

文字サイズを変更する際は次のコマンドを使います．
表 6.5: 文字サイズを変更するコマンド
コマンド

結果

\tiny

tiny

\ scriptsize

scriptsize\ footnotesize

footnotesize\smallsmall\ normalsize

normalsize\largelarge\LargeLarge\LARGE

LARGE

\huge

huge

注意するべきは，これらのコマンドは引数を取ってその文字列の大きさを変更するというわけではないことです．例えば，\large{large text}とするのは誤りです．これらのコマンドはグループという，{と}で囲んだ部分や環境の中全体に作用します．つまり，{\large large text}などとするのが正しい使い方です．
ただ，これらのコマンドを用いて安易に文字の大きさを変更するべきではありません．多くの場
合は見出し（6.10 節）のコマンドなどによって適切な文字サイズになります．本文の文字サイズを無闇に変更すると，本文の高さが各行で異なってしまって見た目の印象がよくありません．文字サ
イズの変更は例えば表（6.15 節）の中など，本文ではない部分について行うのがよいでしょう．

6.12

改行・改ページ

LATEX においてはただ改行しただけでは改行されません．これは改行や改ページといったことは
TEX の処理系などが適切と判断した場所で行われるため，LATEX のソースコードを編集する私たちが気にすることではないという考えによります．
次の例を見てください．
1
2

ソー ス コー ド で は， こ の 直 後 に 改 行 す る も の の，
改 行 さ れ ま せ ん．

結果は次のようになります．
ソースコードでは，この直後に改行するものの，改行されません．

169

一見直感とは異なり不自由に思うかもしれないですが，これにより，1 つの段落が非常に長くなってしまったとしても，ソースコードでは複数の行に分けて記述できます．従って，テキストエ
ディタを横にスクロールする必要がなくなりより快適な編集ができます．
ただ TEX の処理系による改行や改ページの判断が必ずしも適切とは限りません．止むを得ず，
編集者が改行や改ページを行わなければならない局面があるので，ここでは改行や改ページの方法を説明します．

6.12.1

改行

改行するためにはどうしたらいいかと言うと\\を使います．
1
2

こ の 直 後 に 改 行 す る ． \\改 行 さ れ ま す．

結果は次のようになります．
この直後に改行する．
改行されます．
このように改行されますが，この方法は先にも説明したとおり止むを得えない場合にのみ使うべきです．普段の改行については TEX の処理系に任せるべきです．

6.12.2

改ページ

次に改ページの方法を紹介します．改ページは\newpage コマンドや\ clearpage コマンドで行うことができます．この 2 つのコマンドは二段組など段組の中で用いられた場合の挙動が異なります．
\newpage 次の段がある場合は次の段へ行き，ない場合は改ページを行います\ clearpage 段組に関わらず改ページを行います

ここでは実行例を示しませんので各自でやってみてください．

6.13

箇条書き

箇条書きの方法を紹介します．LATEX の箇条書きは 3 つの種類があります．

6.13.1

順序なし箇条書き

itemize 環境は順序なしの箇条書きを作ります．
1
2
3
4\begin{ itemize }\item 鍋\item フ ラ イ パ ン\end{ itemize }170

結果は次のようになります．
•鍋• フライパン6.13.2

順序あり箇条書き

enumerate 環境は順序ありの箇条書きとなります．
1
2
3
4\begin{ enumerate }\item フ ラ イ パ ン に 油 を 敷 く\item 卵 を 入 れ る\end{ enumerate }結果は次のようになります．
1. フライパンに油を敷く
2. 卵を入れる

6.13.3

定義リスト

定義リストとは単語とその意味を列挙する際に用います．LATEX では description 環境を用いて次のように書きます．
1
2
3\begin{ description }\item[ つ く ば ]筑 波 大 学 が あ り ま す．

4
5
6
7

\item[ 土 浦 ]つ く ば 国 際 大 学 が あ り ま す．
\end{ description }このようになります．
つくば筑波大学があります．
土浦つくば国際大学があります．

6.14

図

これまでは文字列を扱う記述について紹介してきましたが，本節ではレポートでは必須の画像の取り扱い方法を紹介します．

1716.14.1

graphicx パッケージ

画 像 を 挿 入 す る に あ た り， \ documentclass コ マ ン ド と\begin{document}の 間21）に\ usepackage [dvipdfmx ]{ graphicx}と 記 述 し，graphicx パ ッ ケ ー ジ22）を 読 み 込 ん で い ま す．

graphicx パッケージは画像を LATEX で使うために必要なパッケージです．このパッケージは画像の他にも，図形などに関する様々な機能を提供しますが本章では解説しません．詳細を知りたい方は脚注 22）の URL を参照してください．
この graphicx パッケージによって，画像を表示するための\ includegraphics コマンドが使えるようになります．

6.14.2

画像の表示\ includegraphics コマンドを用いた例を以下のソースコード 6.4 に示します．

Listing 6.4: 画像の挿入
1
2
3\ documentclass [a4j, dvipdfmx ]{ jsarticle }\ usepackage [ dvipdfmx ]{ graphicx }\ usepackage {float}

4
5\begin{ document }

6
7
8
9
10
11
12

\begin{figure }[H]
\ centering\ includegraphics [width =5cm]{ example -image -a.png}\ caption { 画 像 の 挿 入 }\label{fig: testpicture }\end{figure }13
14\end{ document }実行結果は図 6.6 のようになります．

図 6.6: 画像の挿入

21） このことをプリアンブルといいます．
22） http://ctan.org/pkg/graphicx

172

6.14.2.1

float パッケージ

まず 3 行目にて，float パッケージを読み込んでいます．このパッケージは画像を配置を直感的にするものですので，導入をお勧めします．
6.14.2.2

figure 環境

figure 環境は環境内にあるものが図であるということを示す環境です．\begin{figure}[H]の[H]の部分は表示位置に関する設定を表わしています．H は float パッケージによって提供されるものですが，LATEX の標準では次のような指定ができます．
表 6.6: figure 環境などで使える位置指定子
位置指定子

意味

h

環境が使用された位置に出力しますt

環境が現れるページの上端に出力しますb

環境が現れるページの下端に出力しますp

表や図からなるページを作成しそこに出力します

これらは[htbp]といった具合に併記でき，そうした場合は書かれた順に優先度を持ちます．例えば[htbp]の場合はまず，“h” に従い環境が使用された位置に出力しようとします．しかしそれが何らかの理由によってできない場合，TEX 処理系は次に “t” に従い，ページの上端に表示しようとします．というように，最終的に可能なものを用います．
ただ，多くの場合は float パッケージを用いて H のみを指定すればよいので，これらを覚える必要はあまりないでしょう．
6.14.2.3\centering コマンド

これはその名の通り，\ centering コマンド以降の文章や画像などを中央寄せにします．このコマンドは現在の環境，あるいはグループの中で終了します．
6.14.2.4\includegraphics コマンド

ま た 9 行 目 で は[width=5cm]に て，画 像 の 大 き さ を 5cm と 指 定 し て い ま す．そ し て，
example-image-a.png という画像を読み込んでいます23）．実際に使うときは，LATEX ファイルからの相対パス名で画像を指定します．
6.14.2.5\caption コマンド

そのあとに来る\caption コマンドは画像に対する簡単な説明（キャプション）を書きます．一般
的に図のキャプションは図の下に記述します．このコマンドは省略できます．
23） あらかじめ画像 example-image-a.png を用意する必要があります．

173

6.14.2.6\label コマンド

\label コマンドは，画像に本文などから参照するためのラベルを付加します．このコマンドは省

略できます．このラベルの使用目的，方法は後述の参照（6.17 節）にて紹介します．

6.15

表

LATEX においては tabular 環境を用いて表を作成し，その表の配置やキャプションを table 環境
やその中で指定します．表は図とは異なり，プリアンブルには何も追記する必要はありません24）．
実際に利用する際には以下のソースコード 6.5 のように記述します．
Listing 6.5: 表の例
123\begin{table }[H]
\ caption {25 マ ス 計 算 （ 掛 け 算 ） }\label{table: tableexample }

4
5
6
7
8
9
10
11
12
13
14
15

\ centering\begin{ tabular }{|r||c|c|c|c|c|}\hline
掛 け 算 & 2 & 3 & 5 & 7 & 1 \\ \hline \hline
1& 2 & 3 & 5 & 7 & 1 \\ \hline
4& 8 & 12 & 20 & 28 & 4 \\ \hline
9& 18 & 27 & 45 & 63 & 9 \\ \hline
3& 6 & 9 & 15 & 21 & 3 \\ \hline
8& 16 & 24 & 40 & 56 & 8 \\ \hline\end{ tabular }\end{table}

結果は次の表 6.7 のようになります．
表 6.7: 25 マス計算（掛け算）
掛け算

2

3

5

7

1

1

2

3

5

7

1

4

8

12

20 28 4918 27

45 63 936

915 21 3816 24

40 56 8図と同様に\begin{table}の直後に[H]があります．figure 環境と同様に表 6.6 にある表示位置を指定できます．ですが，特に理由がない限り[H]を用いれば問題ありません．

24） ただし figure 環境のように表示位置として H を用いる場合は float パッケージが必要となります．

174

table 環境の中には figure 環境と同様にキャプション（\caption コマンド），ラベル（\label コ
マンド）を書くこともできます．
表は図とは異なり，一般的にキャプションを表の上に記述します．図のソースコード 6.4 と表のソースコード 6.5 を見比べてもらえばわかりますが，それぞれのキャプションの位置はソース上のその位置と同じです．つまり，これらを逆にすることも可能ということですが，一般的にはこの順番を用います．

6.15.1tabular 環境

tabular 環境は表に特有な，まるで数学の行列式のような構造を作る環境です．この tabular 環
境は LATEX の内部でとても複雑な処理をしています．そのお陰で，私たち一般の LATEX 利用者は容易に表を作ることができます．
6.15.1.1

セル内の文字位置\begin{tabular}の直後に，|r||c|c|c|c|c|という記述がありますが，これは表の線と内容の配置を示しています．各アルファベット（r や c）は各列の文字の配置を示し，一列につき 1 つしか指定できません．それぞれの意味は以下のようになります．
表 6.8: セル内の位置指定子
位置指定子

6.15.1.2

意味l

文字列を左寄せにしますc

文字列を中央寄せにしますr

文字列を右寄せにします

縦線

また，各々の間に書かれている | は表の列間の線を表しており，これは書いた本数分だけ線が

引かれます．ここでの例では，一列目と二列目の間には二本の線が引かれていますが，それ以外の場所は一本です．
6.15.1.3

セルと横線

続いて tabular 環境の中身を見てみます．各列は & によって分けられます．また，各列は\\


によって行の終わりを表現します．そして\hline コマンドは水平線を引くためのものです．例のように 2 つを連続で記述することにより二重線を記述できます．
6.15.1.4

複数の列をまたぐセル，複数の行ををまたぐセル

また，表を利用する際には 2 つ以上のセルにまたがる表を作成したい，ということがあります．
このような書き方は以下のソースコード 6.6 のようにすることで可能になります．
175

Listing 6.6: 複数セルにまたがる表
12
3\begin{table }[H]
\ caption { 複 数 セ ル に ま た が る 表 }\label{table: multicolumn }

4
5
6
7
8
9
10
11
12
13
14
15

\ centering\begin{ tabular }{|l|c|r|r|}\hline\ multicolumn {4}{|c|}{ メ ン バ } \\ \hline \hline
主 戦 力 & A さ ん & B さ ん & C さ ん \\ \cline {2 -3}& D さ ん & E さ ん & F さ ん \\ \hline
副 戦 力 & G さ ん & F さ ん & G さ ん \\ \cline {3 -4}& H さ ん & I さ ん & J さ ん \\ \hline
補 欠 & \ multicolumn {3}{|c|}{ 新 人 }\\ \hline\end{ tabular }\end{table}

実行結果は表 6.9 のようになります．
表 6.9: 複数セルにまたがる表
メンバ
主戦力
副戦力

A さん

B さん

C さん

D さん

E さん

F さん

G さん

F さん

G さん

H さん

I さん

J さん

補欠

新人

ここで用いているのは\ multicolumn コマンドです．これは直後の引数で記述した数の列をまとめて 1 つの列とし，その次の引数で当該セル内の配置を指定し，最後の引数にセル内に入るコンテンツを記述します．
ここまでは複数の列にまたがるセルが対象でしたが，次に見るのは複数の行にまたがるセルです．これは\cline コマンドを用いることで表現できます．表の 2 行目，3 行目を見てみると 2 列目と 3 列目に上下を分けるような線が入っています．これは\cline の直後の{}によって範囲を指定できます．2，3 行目と同様に 4，5 行目も以下のように記述することで，3 列目と 4 列目に上下を分けるような線が引かれています．これを用いることで，上下を分けるような線の引かれていない場
所を結合セルとして扱うことができます．

6.16

脚注

脚注とは本文に書くほどのことではない補足を書くために用いるものです．

176

6.16.0.1\footnote コマンド

LATEX では\footnote コマンドを用いて，次のように行うことができます．
\TeX\ footnote {Knuth が 作 っ た プ ロ グ ラ ム 言 語 ． } は 優 れ た 組 版 能 力 が あ り……

実行すると次の図 6.7 のようになります25）．
TEXa は優れた組版能力があり……
a

Knuth が作ったプログラム言語．

図 6.7: 脚注の例

6.16.0.2\footnotemark，footnotetext コマンド\ footnotemark コマンドと\ footnotetext コマンドを用いることで，脚注番号と脚注本文を別々に書くことができます．次のようにします．
1\TeX\ footnotemark は 優 れ た 組 版 能 力 が あ り……

2
3\ footnotetext {Knuth が 作 っ た プ ロ グ ラ ム 言 語 ． }\ footnotemark が脚注番号を出力し，\ footnotetext が脚注本文を構築します．上記の例の結果は

図 6.7 と同じです．これは脚注本文がとても長くなってしまって，\footnote で書くとソースコー
ドが読み難くなってしまうのを防ぐ効果があります．

6.17

参照

論文やレポートにおいて画像や表を挿入した場合，参照を付けなければならないことがあります．ここでは LATEX の便利な点である図表の参照方法について述べます．図表の番号を自分で付け，それへの参照を自分でつけた番号をもとに行うといった作業が LATEX では必要ありません．
LATEX は参照に必要な番号を自動で割り振ってくれるのです．
参照の仕方ですが，\refコマンドと figure 環境（6.14 節）などで紹介された\label コマンドを用いることで実現できます．6.14 節で用いた図と，6.15 節で用いた表を例としますと以下のように書くことができます．
図 \ref{fig: testpicture } と 表 \ref{table: tableexample }次のようになります26）．
25） 実行結果では脚注番号が “a” になっています．これはサンプルの都合によるもので，通常は算用数字が振られます．
26） この例では参照に PDF のリンクが貼られています．これは hyperref パッケージの機能を使って行なっているので，これを読み込んでいない場合は参照の番号が表示されるだけでリンクは貼られません．hyperref パッケージを用いたリンクの貼り方は https://texwiki.texjp.org/?hyperref をご覧ください．

177

図 6.6 と表 6.7
このように\refコマンドの中に，\label コマンドでラベルとして記述した文字列を入力することで参照できます．注意していただきたいのは，別の図表に同じラベルを付けると後に出てきたラベ
ルの方が優先されてしまいます．ラベルは重複させてはいけません．そこで，重複を防ぐためにも図のラベルは fig: から，表のラベルは table: から始めるなどという慣習があります．

6.17.1

見出しの参照\label コマンドは図や表以外にも，\section コマンドといった見出しや脚注にも付けることができます．例えばこの節には次のようにラベルが付けられています．
1
2\ section { 参 照 }\label{sec: reference }次のように参照します．
1

第 \ref{sec: reference } 節

どのようになるのかは，本章にたくさんある参照を見ると分かります．

6.17.2

脚注の参照\footnote コマンド内で\label コマンドを用いれば，脚注を参照できます．次のようにします．
1
2
3\LaTeX\ footnote {\ label{fn:latex} Lamport が 作 っ た マ ク ロ で す ． } ...... \\..... \\
\LaTeX に つ い て は 脚 注 \ref{fn:latex} を 参 照 し て く だ さ い ．

次のようになります．
LATEXa ......
.....
LATEX については脚注 a を参照してください．
a6.18

Lamport が作ったマクロです

数式

さて，ここまでのところで画像や表を用いたレポートや論文は書けるようになりました．しかし，コンピュータサイエンスの分野にいる以上は数式とは切っても切れない縁があります．そこ
で，文書内の数式をきれいに書く技術が必要になってきます．MS Word などにも数式エディタが存在するように，もちろん LATEX にも数式を書くための方法が用意されています．例えば，以下のような式を記述できます．
178

Z

1
1
x−1
dx = log+Cx2 − 12
x+1

通常の数式エディタでは指数をうまく表示できなかったり，複雑になると全体の形が崩れたりしてしまうことが多々ありますが，LATEX は世の中のほとんどの数式に対応しています．なぜなら世の中の数学者が論文を書く際には多くの場合 LATEX を使い，もし既存の LATEX にはない新しい数学的表現を導入したならば，それは LATEX の機能で実装されます．従って，LATEX は世の中にある多くの数学的な表現に対応していると言えるのです．
また，この節では LATEX による数式の表現力を示すために，やや専門的な数式が例として書かれています．この節はあくまで LATEX の数式能力に関する解説なので，例にある数式の意味が分からなくとも問題はありません．

6.18.1

amsmath パッケージを利用して数式を書く

LATEX には数式を扱うためのさまざまなコマンドや環境が提供されていますが，現在数式を扱う
論文はほとんどが amsmath パッケージ27） を用いていると言われています．つまり業界のデファク
トスタンダードということで，本節でも amsmath を前提とした数式の書き方を説明します．
amsmath パッケージは graphicx パッケージ（6.14 節）と同じく，\ usepackage コマンドによって，\ usepackage {amsmath}という記述で読み込むことができます．
実際に amsmath パッケージを用いて数式を書いてみましょう．次のソースコード 6.7 をコンパイルしてみてください．
Listing 6.7: Hello amsmath!
1
2\ documentclass [a4j, dvipdfmx ]{ jsarticle }\ usepackage { amsmath }3
4\begin{ document }

5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

\begin{align}\left(\begin{array }{cc}
2 & -1\\-3 & 4 \\\end{array}\right)\left(\begin{array }{c}
1 \\
2 \\
\end{array}\right) = \left(\begin{array }{c}27） http://www.ctan.org/pkg/amsmath

179

20
21
22
23
24

0 \\
5 \\
\end{array}\right)\end{align}25
26\end{ document }次の式（6.1）のようなります．



2
−3

−1
4




1
2





=

0
5




(6.1)

amsmath パッケージをより詳しく知りたい方へ
ここで利用した amsmath パッケージは AMS-LATEX の一部です．AMS-LATEX とは American
Mathematical Societya によって開発された，LATEX 数式機能を強化するマクロパッケージ
amsmath と，American Mathematical Society の組版に合わせた amscls というクラスファイ
ル，さらに数式に用いる記号類のフォントをまとめたものをいいます．このクラスファイ
ルとは，jsarticle（6.7 節）などと同じく文書のレイアウトを定義するものです．これはAmerican Mathematical Society へ論文などを投稿するときに利用されています．
a

http://www.ams.org/home/page

さて，肝心な書き方ですが数式を記述する方法が大きく分けてディスプレイ数式とインライン数
式の 2 つが存在します．

6.18.2

ディスプレイ数式

ディスプレイ数式とは，数式を本文とは別の行にして表示する方法です．ディスプレイ数式のために，次のようなコマンドや環境が提供されています28）．
• align 環境• align*環境• \[コマンドと\]コマンド
これらの違いを順に説明します．
6.18.2.1

align 環境

ソースコード 6.7 に用いられていた環境です．この align 環境は番号付きディスプレイ数式を提供します．気付いた方もいるでしょうが，ソースコード 6.7 を実行すると “（6.1）” のような番号
28） equation 環境や equarray 環境，$$など，この他にも LATEX が提供する数式用の環境がありますが，AMS-LATEXで提供される align 環境などを使う方が良いとされています．

180

が式の右端に自動で付与されます．これが番号付きということの意味です．
また，この番号は複数の行にわたる数式を記述した場合も，自動で各行に振られます．次のソースコードを見てください．
Listing 6.8: 複数行にわたる数式
1
2

3
4

\begin{align}\ overrightarrow {dd} &= \ overrightarrow {rd} + \left (\ vec{d} \cdot\vec{n}\ right )\ vec{n} \label{eq: vectordd 1} \\&= \vec{d} - \left (\ vec{d} \cdot \vec{n}\ right )\ vec{n} \label{eq: vectordd 2}\end{align}

次のようになります29）．


−
→ −
→ 
dd = rd + d~ · ~n ~n= d~ − d~ · ~n ~n

(6.2)
(6.3)

数式内で改行をしたい場合は，\\で改行場所を指示する必要があります．これは数式の改行位置
を TEX の処理系が判断できないからです．
また，式（6.2）と式（6.3）は=の位置で整列しています．これは揃えたい場所に&を置くことで実現できます．
ソースコード 6.8 を見て気付いた方もいるかもしれませんが，数式に対してもラベルを用いることができます．つまり，他の場所からの参照（6.17 節）が可能ということです．書き方は通常の参照と同様に\refコマンドを用います．
一部の数式にだけ番号を振る

最初の例では両方の数式に数式番号が振られています．しかし 1

つの数式が複数の行にわたっており，数式番号をその全てには付けたくないということが考えられます．そのような場合は\nonumber コマンドを用いて，番号の付与を抑制できます．次のようにし
ます．
1
2
3
4
5

\begin{align}\left (\ lambda r.r\right )\ left (\ lambda x.\ lambda y.x~y\right) & \ rightarrow _{\ eta}
\left (\ lambda r.r\right )\ left (\ lambda x.x\right )\ nonumber \\& \ rightarrow _{\ beta} \lambda x.x\end{align}

結果はこのようになります．

(λr.r) (λx.λy.x y) →η (λr.r) (λx.x)→β λx.x29） この例では番号が（6.2）から始まっていますが，これは先ほどの式（6.1）の番号を 1 としているためです．

181

(6.4)

このようにある行には番号を付けず，ある行には付けるということが可能です．
6.18.2.2

align*環境

こちらは align 環境とは異なり，番号なしディスプレイ数式を提供します．align 環境では原則
全ての行に番号が振られていましたが，align*環境は数式に番号を振りません．従って，番号がな
いので\label では参照できません．番号が振られない以外に align 環境と違いはありません．次の例を見てください．
1
2
3
4\begin{align *}\tau &::= \alpha\, |\, int\, |\, bool\, |\, \tau _1 \ rightarrow \tau _2 \\\sigma &::= \tau\, |\, \ forall \alpha. \sigma\end{align *}実行すると次のようになります．

τ ::= α | int | bool | τ1 → τ2
σ ::= τ | ∀α.σ

このように，行に番号が振られていません．
6.18.2.3\[コマンドと\] コマンド\[コマンドと\]コマンドで囲まれた部分は一行のみのディスプレイ数式となります．align 環境や align*環境のように\\を用いて複数行の数式を書くことはできません．次のようになります．
1\[
Fun\left(x, \ protect \ underbrace {Let%\left(f, \ protect \ overbrace {Fun\left(y, x\right )}^{\ forall\alpha _2.\ alpha _2\ rightarrow \alpha _1}, f\right )}_%{\ forall\alpha _2.\ alpha _2 \ rightarrow \alpha _1}\ right): \forall\alpha _2.\ alpha _1 \ rightarrow \left (\ alpha _2 \ rightarrow\alpha _1\ right)

2
3

4
5

6

\]

実行すると次のようになります．







∀α2 .α2 →α1 z }| { 
 : ∀α2 .α1 → (α2 → α1 )F un 
x,
Let
f,
F
un
(y,
x),
f








|
{z
}
∀α2 .α2 →α1

さて，これまでの例で LATEX はとても複雑な数式を表現できるということが分かったのではないでしょうか．
182

6.18.3

インライン数式

先に述べたディスプレイ数式（6.18.2 節）は数式と本文を完全に分離していました．ですが，レポートなどでは文章の中に数式を挿入したいということがあります．そのようなときには$を用いて本文に数式を埋め込むことができます．次に例を示します．
離 散 フ ー リ エ 変 換 $X_k\left(k = 0, 1, \dots , N - 1\ right )$ は 級 数$X_k = \sum ^{N -1}_{n=0}x_n\ mathrm{e}^{-i\frac {2\ pi kn}{N}}$ と な り ，
こ の 計 算 量 は $\ mathcal {O}\ left(N^2\ right )$ に な る ．

次のようになります．
離散フーリエ変換 Xk (k = 0, 1, . . . , N − 1) は級数 Xk =

量は O N 2 になる．

−i 2πknNとなり，この計算
n=0 xn e

PN −1

このように$で囲まれた部分が数式として解釈されます．

6.19

ソースコード

情報科学類の皆さんは課題のレポートや論文などでソースコードを出力したいということがあるでしょう．LATEX では listings パッケージ30）という伝統的なマクロパッケージによって，この本で用いられているようなソースコードの出力を簡単に行えます．

6.19.1

listings パッケージの読み込み

graphicx パ ッ ケ ー ジ（6.14 節）と 同 様 に，\ usepackage コ マ ン ド を 用 い て プ リ ア ン ブ ル に\ usepackage {listings}と記述します．

6.19.2

設定

listings パッケージは大変高性能なパッケージなのですが，初期設定ではあまり美しい出力が得られません．設定は次の 2 つのコマンドで設定できます．
\ lstdefinestyle

新しいスタイルを定義する命令です．
\lstset

全てのソースコードに対して設定を適用します．

30） http://www.ctan.org/pkg/listings183

6.19.2.1

スタイルの定義

例えば 1 つのレポートに Java のソースコードと C 言語のソースコードが混在する，という局面を考えるとします．そして，Java のソースコードの設定と C 言語のソースコードの設定は別々にしたいという時に，“スタイル” という設定を編集者が定義し，ソースコードに応じて柔軟に見た目を切り替えることができます．
\ lstdefinestyle は次のように使います．
12
3
4\ lstdefinestyle {java }{language =java ,morekeywords ={ lambda }
}

5
6
7
8
9

\ lstdefinestyle {c}{language =c,numbers =left}

このようにして，新しいスタイル java と c を作ることができます．
6.19.2.2

全てのソースコードに関する設定

統一したい設定については\lstset コマンドにて設定します．例えばこの手引きでは次のような設定をしています31）．
Listing 6.9: 手引きの listings パッケージの設定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

\ definecolor { solarized@base 03}{ HTML }{002B36}\ definecolor { solarized@base 02}{ HTML }{073642}\ definecolor { solarized@base 01}{ HTML }{586e75}\ definecolor { solarized@base 00}{ HTML }{657b83}\ definecolor { solarized@base 0}{ HTML }{839496}\ definecolor { solarized@base 1}{ HTML }{93a1a1}\ definecolor { solarized@base 2}{ HTML }{ EEE8D5}\ definecolor { solarized@base 3}{ HTML }{ FDF6E3}\ definecolor { solarized@yellow }{ HTML }{B 58900}\ definecolor { solarized@orange }{ HTML }{CB4B16}\ definecolor { solarized@red }{ HTML }{DC 322F}\ definecolor { solarized@magenta }{ HTML }{D 33682}\ definecolor { solarized@violet }{ HTML }{6C71C4}\ definecolor { solarized@blue }{ HTML }{268 BD2}
\ definecolor { solarized@cyan }{ HTML }{2 AA 198}
\ definecolor { solarized@green }{ HTML }{859900}

17
18
19
20

\lstset{basicstyle =\ small\ ttfamily \color{ solarized@base 00},
rulesepcolor =\ color{ solarized@base 03},31） 手引きでは color パッケージを用いて文字や背景の色を設定しています．http://www.ctan.org/pkg/color

184

numberstyle =\ scriptsize \color{ solarized@base 01},
keywordstyle =\ color{ solarized@blue },stringstyle =\ color{ solarized@cyan }\ ttfamily ,commentstyle =\ color{ solarized@base 01},
emphstyle =\ color{ solarized@red },backgroundcolor =\ color{ solarized@base 3},
sensitive =true ,breaklines =true ,breakatwhitespace =true ,framerule =0pt ,frame=lshowstringspaces =false ,tabsize =2,
basewidth ={0.57 em , 0.52 em},

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

}

設定できる項目は\ lstdefinestyle コマンドと\lstset コマンドの間に違いはありません．設定は膨大にあるので，詳細は脚注 30）にあるドキュメントを読んでいただくしかないのですが，その中でも特に重要なものを書き出しておきます．
ものを取ります．

language
ソース中に書いてあるものが，何言語なの• noneかを記述します32）．

• leftstyle• right\ lstdefinestyle にて定義した設定を指定

firstnumber

します．

行番号の初期値です．これに数値を設定す
るとその番号から始まるのですが， auto まbasicstyle
ソース内の普通の文字のスタイルを決めたは何も指定しないと，前回の番号の次のます．

値から始まります．

keywordstyle

frame

キーワードの文字スタイルを決めます．

枠に関する設定です．引数はいろいろあるのですが，とりあえず tbrl を入れておけbreaklines
breaklines =true とすると，自動改行が有ば，四角で囲われます．

効 に な り ま す．見 た 目 上 の 行 と 実 際 のtabsize

行 は 区 別 さ れ ま す．自 動 改 行 が な い とタブの幅がスペース何個分かを数値で与えlistings の枠からはみ出る可能性がある

ます．

ので，有効にするほうがいいでしょう．

xleftmargin, xrightmargin
左右のマージンを決めます．

numbers
行番号の位置に関する設定です．値は次の32） 記述の仕方が独特なので注意が必要です．詳しくは listings パッケージのドキュメント（脚注 30））を参照してください．

185

6.19.3

listings パッケージの使い方

ようやく listings パッケージを使うための準備が整いました．使い方は次の 3 種類があります．
• LATEX ソース中に直接埋め込む（lstlisting 環境）• ファイルから読み込む（\ lstinputlisting コマンド）• 本文中に挿入する（\ lstinline コマンド）順に解説します．
6.19.3.1

lstlisting 環境

ソースコードを LATEX ファイルに直接埋め込む際は lstlisting 環境を用います．次のようにし
ます．
1
2
3
4
5
6
7

\begin{ lstlisting }[ language =java , numbers =left]
public class HelloWorld {public static void main ( String [] args) {System.out. println (" Hello World !!");}}\end{ lstlisting }設定 6.9 を用いて実行すると次のようになります．
1
2
3
4
5

public class HelloWorld {public static void main ( String [] args) {System.out. println ("Hello World !!");}}

このように行番号が自動で振られ，文字列や予約語の色が自動で変更されています．
6.19.3.2\lstinputlisting コマンド\ lstinputlisting コマンドはファイルを指定してそのファイルをソースコードとして読み込み，整形して表示します．
次のようにします．
\ lstinputlisting [style=java ]{ src/ example .java}

まず，[style=java]にて，\ lstdefinestyle コマンド（6.19.2.1 節）にて定義した設定を呼び出し，それに基いて src/example.java を読み込み表示します．
6.19.3.3\lstinline コマンド

これは本文の中にプログラムを埋め込む際に利用します．次のようになります．
186

1
2

こ の 時 ， 変 数 \ lstinline [ language =java ]|x| の 型 は\ lstinline [ language =java ]| int| と な る ．

次のようになります．
この時，変数xの型はintとなる．
情報科学類の学生は綺麗なソースコードを出力するために，秘伝のタレとなった listings の設定を持っているほうが少なくありません．他の人の書いたレポートなどのソースコードがとても美しく出力されていたら，その人に声をかけて設定を教えてもらうのもよいでしょう．

6.20

書いたとおりに出力する\verb コマンドや verbatim 環境を利用するとテキストを書いた通りに出力ことができます．これらを利用した場合，特殊文字をエスケープせずに使用することができます．特殊文字については
6.6.1.1 の特殊文字の項を参照してください．

6.20.1

出力したいテキストが複数行の場合

複数行にわたるテキストを書いた通りに出力したい場合，verbatim 環境を利用します．
1
2
3
4\begin{ verbatim }verbatim 環 境 を 使 う と ，
書 い た 通 り に 出 力 す る こ と が で き ま す !#^^#\end{ verbatim }結果は次のようになります．
verbatim 環境を使うと，書いた通りに出力することができます!#^^#

6.20.2

出力したいテキストが 1 行の場合

1 行のテキストを書いたとおりに出力したい場合，\verb コマンドを利用します．以下の例のよ
うに，書いた通りに出力したい文字列を*以外の 1 文字で挟みます．
1\verb" 書 い た 通 り に 出 力 し た い 文 字 列 を * 以 外 の 1 文 字 で 挟 む "結果は次のようになります．
書いた通りに出力したい文字列を*以外の 1 文字で挟む

187

6.21

BibTEX を用いた参考文献

ここまででほとんどのレポートは問題なく書けるようになりました．しかしまだ論文（主に卒論）は書けません．ほとんどの卒論は他の文献を読まずには成り立ちません．つまり，何らかの参考文献が存在します．そのような論文はほぼ必ず参考文献を掲載します．ここでは参考文献を載せるための方法を紹介します．

6.21.1

BibTEX を用いない

まず BibTEX33）を用いる前に，BibTEX が自動生成しているプログラムについて説明します．
ソースコード 6.10 を例に見ていきましょう．
今回は LATEX の第一人者である奥村晴彦氏の著書，“[改訂第 6 版] LATEX 2ε 美文書作成入門” を例にします．
Listing 6.10: nobib.tex
1
2
3
4
5
6

7
8

\ documentclass [a4j, dvipdfmx ]{ jsarticle }\begin{ document }奥 村 先 生 の 本 \cite{ 奥 村 _ 黒 木 201310} を 参 考 と し た ．
\begin{ thebibliography }{10}\ bibitem {奥村_黒木 201310}%
奥 村 晴 彦 , 黒 木 裕 介 . [ 改 訂 第 6 版 ] LATEX 2ε 美 文 書 作 成 入 門 . 技 術 評 論 社 ,改 訂 第 6,10 2013.
\end{ thebibliography }\end{ document }まずこれをコンパイルしてみます．
$ platex -kanji=utf -8 nobib.tex$ platex -kanji=utf -8 nobib.tex$ dvipdfmx nobib$

2 回 platex コマンドを実行しているのは，1 度目に後述の\cite による参照情報の更新を行い，2度目に最終的な出力ファイルを生成しているからです．
以下のような PDF ファイルが得られると思います．

33） 「びぶてふ」もしくは「びぶてっく」と読みます．http://ctan.org/pkg/bibtex

188図 6.8: nobib.pdf
奥村先生の本 [1] を参考とした．

参考文献
奥村晴彦, 黒木裕介. [改訂第 6 版] LATEX 2ε 美文書作成入門. 技術評論社, 改訂第 6,10 2013.

[1]

6.21.1.1

thebibliography 環境

ソースコード 6.10 の 4 行目から 6 行目は thebibliography 環境となっており，ここで文献情報を書いていきます．\begin{ thebibliography }{LONGEST − LABEL}∼\end{ thebibliography }の間に\bibitem[LABEL]{KEY} ENTRYを並べていきます．

LABEL
参考文献のラベル（ソースコード 6.10 の赤文字部分）を指定します．このオプションは省略可能で，省略した場合には [1]，[2]，[3]，. . . . . . のように 1 から連番となります．
もちろん数字以外にも英数字や空白，日本語などが指定できます．
KEY
文献を参照するための目印（ソースコード 6.10 の緑文字部分）を記述します．これを後述の\cite コマンドにより参照します．他の目印と重複しないようにしてください．
ENTRY
文献の内容（ソースコード 6.10 の青文字部分）を記述します．ここには任意の LATEX コー
ドが記述できます．
LONGEST-LABELLABEL の中で一番長い文字と同じ数だけ数字を入力します（ソースコード 6.10 の黄文字部分）．
たとえば LABEL を一切変更せず参考文献の数が 2 桁だった場合，22 とか 00，72 など適当
な 2 桁の数字を入力しておきます．2 桁の数字ならなんでも構いません．
ま

た

LABEL

を

変

更

し，

≺ changed label 

と

い

う

ラ

ベ

ル

（\bibitem[≺ changed label ]{なんとか}. . . . . .） が 最 長 だ っ た 場 合， 文 字 数 は 15 （記 号
が 2 文字，ローマ字が 12 文字，空白が 1 文字）なので 123456789012345 など任意の 15 桁の数字を入力します．

189

6.21.1.2\cite コマンド

\cite コマンドは文献の参照に用います．ソースコード 6.10 では “奥村_黒木 201310” という指定をしています．
\label コマンドと\ref コマンドによる参照方法（6.17 節）とは少し違うということがお分かりい

ただけたでしょう．参照する際の命令が違うとはいえ，基本的にはその性質は変わりません．いち
いち参照するたびに数字を書き換える必要もありません．

6.21.2

BibTEX を用いる

参考文献を掲載するには thebibliography 環境を用いる方法もありますが，LATEX にまかせている処理はラベルに番号を振っている程度です．そこで文献内容などのレイアウトを一括して自動でおこなってくれるのが BibTEX です．
BibTEX は参考文献に関する書誌情報と呼ばれる，その参考文献の著者やタイトルなどという情報を決められたフォーマットで記述されたファイルを読み込みます．そして BibTEX はその書誌情報を処理して LATEX で扱える形にし埋め込んでくれるソフトウェア（処理系）です．これにより，参考文献のデータベースを単一の LATEX ファイルのみならず，他のファイルとも共有できます．

6.21.3

書誌情報の入手参考にした論文や資料の書誌情報は多くの場合 Web で入手できるので，皆さんが自力で作成する必要はありません．BibTEX の書誌情報を提供している Web サイトは，TEX Wiki の BibTEX 関
連ツール34）にて紹介されています．また，CiNii35）など論文検索サービスや学会の Web サイトでは論文の BibTEX 書誌情報を公開している場合が多いです．
先程と同様，“[改訂第 6 版] LATEX 2ε 美文書作成入門” の BibTEX 書誌情報36）を例にします．
BibTEX の書誌情報は次のようなテキストファイルとなっています．
Listing 6.11: bibunsho.bib
1
2
3
4
5
6
7
8
9
10
11
12

@BOOK{ 奥 村 _ 黒 木 201310 ’,title ={[ 改 訂 第 6 版 ] LaTeX2 ε 美 文 書 作 成 入 門 },author ={ 奥 村 晴 彦 and 黒 木 裕 介 },publisher ={ 技 術 評 論 社 },year ={2013} ,month ={10} ,edition ={ 改 訂 第 6},
isbn ={9784774160450} ,url ={ http :// amazon.co.jp/o/ASIN /4774160458/} ,price ={ ￥ 3 ,360} ,totalpages ={432} ,timestamp ={2014.03.13} ,34） https://texwiki.texjp.org
35） 日本の論文検索サービス．http://ci.nii.ac.jp/36） この書誌情報は Lead2Amazon（http://lead.to/amazon/jp/）という 書誌情報検索サービスから取得したものを一部改変したものです．

190

13

}

このファイルを “bibunsho.bib” という名前で保存します．

6.21.4LATEX ファイル側の書式

BibTEX の書誌情報を利用する LATEX ファイルを用意する必要があります．次のソースコード
6.12 のようにします．
Listing 6.12: bibunsho.tex
1\ documentclass [a4j, dvipdfmx ]{ jsarticle }2
3\ bibliographystyle {junsrt }45\begin{ document }6
7

奥 村 先 生 の 本 \cite{ 奥 村 _ 黒 木 201310 ’} を 参 考 と し た ．

8910\ bibliography { bibunsho }\end{ document }このソースコード 6.12 には，\ bibliographystyle コマンドと\cite コマンド，さらに\ bibliography
コマンドの 3 つが利用されています．これらについて解説します．
6.21.4.1\bibliographystyle コマンド

これは参考文献の表示方法を設定するコマンドです．指定できるスタイル37）とその意味を表
6.10 にまとめました．
表 6.10: 使用できるスタイルの例
スタイル 意味

6.21.4.2

jplainもっとも標準的なスタイル

jalpha

文献の番号が著者名と出版年をあわせたものになる

jabbrv

できるだけ短かくするjunsrt

本文で引用した順に並べる\cite コマンド

ソースコード 6.12 では “奥村_黒木 201310’” という指定をしています．これは BibTEX 書誌情
報 bibunsho.bib（6.11）の 1 行目で指定している文献名です．
37） BibTEX の ス タ イ ル フ ァ イ ル は プ ロ グ ラ ム 言 語 TEX で は な く，特 殊 な プ ロ グ ラ ム 言 語 に て 記 述 して あ り ま す． 普 通 は ス タ イ ル フ ァ イ ル の 実 装 に つ い て 知 る 必 要 は あ り ま せ ん が， 興 味 の あ る 方 は
http://tug.ctan.org/info/bibtex/tamethebeast/ttb_en.pdf をご覧ください．

191

6.21.4.3\bibliography コマンド

最後に\ bibliography コマンドを用いて参考文献の一覧を出力します．ソースコード 6.12 にて，\ bibliography コマンドに bibunsho という文字列を渡しています．これは読み込む BibTEX 書誌

情報ファイルを示しています．ただし，書誌情報ファイルの拡張子は除きます．今回の例ではbibunsho.bib というファイル名ですので，拡張子を取り除き bibunsho という文字列を与えます．

6.21.5

BibTEX を用いた LATEX ファイルのコンパイル

コンパイルするときの手順が増えます．BibTEX を用いたコンパイルのやり方は以下のように行います．以下の例では先に述べた bibunsho.tex をコンパイルしています．
$ platex -kanji=utf8 bibunsho .tex
$ pbibtex -kanji=utf8 bibunsho$ platex -kanji=utf8 bibunsho .tex
$ dvipdfmx bibunsho$

pbibtex という，BibTEX の処理系を日本語へ対応させたプログラムを用います．
thebibliography 環境を用いた場合と同じように，参照情報の更新と出力ファイル生成のために platex を 2 回実行します．
コンパイルが無事に終わると次のようになるはずです．
奥村先生の本 [1] を参考とした．
また巻末には次のような参考文献の一覧が出力されています．

参考文献
[1]

奥村晴彦，黒木裕介． [改訂第 6 版] LATEX 2ε 美文書作成入門． 技術評論社， 改訂第6,10 2013.

6.22

文書の余白

文書の余白とは文書の上下左右の隙間のことです．ここでは文書の余白を調整する方法を紹介します．
さまざまな方法がありますが，geometry パッケージ38）を用いる方法がもっとも簡単でかつ安全です．これは以下のように使用します．
1\ usepackage { geometry }38） http://www.ctan.org/pkg/geometry

192

2

\ geometry {left =25mm , right =25mm , top =30mm , bottom =30 mm}

左右の余白を 25mm にし，上下の余白を 30mm に設定しています．
この他にも geometry パッケージは特定のページだけ余白を設定するなど便利な機能が多数ある
ので，脚注 38）の URL にあるドキュメントを読むとよいでしょう．

6.23

目次の生成

目次は見出しをまとめたもののことで主に各章節への参照として用いられます．本文を書く際にはほとんど気にすることなく，目次に必要な情報は，\section などの見出し（6.10 節）から自動で取得されるので，皆さんは目次を表示するコマンドを記述するだけです．
目次を表示したいところに，\ tableofcontents コマンドを使用すれば目次が表示されます．

6.24

LuaLATEX を使ってみよう

以上で，LATEX の使い方はひととおり説明してきました．以上での説明で前提としていたのは，pLATEX です．しかし，最近では日本でも LuaLATEX が用いられるようになってきました．
LuaLATEX は，今まで説明してきた pLATEX に匹敵する組版能力を持ちます39）．そのうえ，pLATEXにはない，次のようなメリットを持ちます．
1. DVI ファイルを経由することなく，直接 PDF が得られる．
2. 組版時に Lua 言語を実行できる．
3. フォント周辺の扱いが大幅に簡単になっている．
4. LuaLATEX 専用のパッケージが利用できる．
その反面，組版速度は pLATEX に軍配が上がります40）．また，2022 年 3 月現在では，学会のクラス
ファイルはまだ pLATEX が中心のようです41）．そのため，LuaLATEX を活用できる機会は，日常で作成する文書（レポートなど）に限られてしまいます．
とはいえ，今まで説明してきたことは無駄にはなりません．pLATEX で組版できる文書から
LuaLATEX で組版できる文書を作成するためには，次のような点を変更するだけで良いのです．逆
に言えば，数式の組み方や図表の取り入れ方などは，LuaLATEX でも変わりません．
1. 文書クラスを変更する．
2. オプションの dvipdfmx を削除する．
3. LuaLATEX 用のパッケージを読み込む．
39） このような高度な組版能力は，LuaTEX-ja（http://sourceforge.jp/projects/luatex-ja/）というプロジェクトによる開発の成果です
40） かつてよりかは高速に組版ができるようですが，それでも pLATEX のほうが高速です．
41） 情報科学類の卒業研究論文のスタイルファイルの様式も，pLATEX が前提になっているようです．

193それぞれ，以下で順番に説明していきます．

6.24.1

前提：文字コードについて

LuaLATEX では，デフォルトの文字コードは UTF-8 です．そのため，最初から UTF-8 でファイルを記述しておくことを推奨します．

6.24.2

LuaLATEX で使える文書クラス

LuaLATEX では，次のような文書クラスを利用できます．なお，ここでは日本語文書が組版できるクラスファイルのみ紹介します．
6.24.2.1

ltjs 系クラス

6.7 節で説明したような，LuaLATEX で使えるデフォルトのクラスファイルが存在します．それが，ltjs 系のクラスファイルです（pLATEX でのクラスファイル名の頭に “lt” をつけること
で，LuaLATEX 用のクラスファイル名になるため，ここではこのように呼びます）．lsjsarticle,
ltjsreport, ltjsbook の 3 つが用意されています．
6.24.2.2

jlreq

LuaLATEX では，jlreq というクラスファイルが用いられることも多いです．これは，「日本語組版処理の要件」を満たすような組版を実現できるように設計されたクラスファイルです．jlreq
は，LuaLATEX だけでなく pLATEX などでも利用できます．
6.24.2.3

bxjs 系クラス

bxjs 系クラスファイルも，ltjs 系クラスファイルと同じように使える汎用クラスファイルです．
通常の pLATEX でのクラスファイル名の頭に “bx” をつけた，bxjsarticle, bxjsreport, bxjsbookの 3 つが用意されています．jsarticle, jsreport, jsbook などのクラスファイルに改良が加えられたクラスファイルです．

6.24.3

オプションについて

今まで説明してきたオプションの中で，DVI 処理系を指定するオプション（dvipdfmx など）は，忘れずに削除しておきましょう．LuaLATEX では DVI 処理系を経由せずに PDF を出力するため，
完全に意味のないオプションです．それだけでなく，誤作動を起こす可能性もあります．
同様にして，各パッケージに渡してあるオプションで dvipdfmx があれば，これも削除しておき
ましょう．

194

6.24.4

LuaLATEX 用のパッケージを読み込む

LuaLATEX 用のパッケージとして忘れずに読み込んでおきたいのは，luatexja パッケージ42）です．このパッケージでは，LuaLATEX における基本的な和文組版機能を提供します．ただし，ltjs
系クラスを使う場合は，自動でパッケージが読み込まれます（追加で読み込んでも副作用はありません）．
ま た，LuaLATEX 向 け に 再 設 計 さ れ た パ ッ ケ ー ジ も あ り ま す．例 え ば，otf パ ッ ケ ー ジ はLuaLATEX では利用できず，代わりに luatexja-otf を利用する必要があります．さらに，当たり前ですが pLATEX 専用のパッケージは LuaLATEX では利用できません．このようなパッケージを利用している場合は，適宜置き換え・削除が必要ですので，注意してください．
なお，pLATEX 専用の記述を使っている場合も，ここで置換が必要です．例えば，スペースを空けるなどの目的で pLATEX で zw と書いていたところは，LuaLATEX では \zw とする必要があります．


6.24.5

LuaLATEX で組版してみよう

LuaLATEX で組版するためには，$ lualatex ファイル名のコマンドを実行します．すると，DVI 処理系を走らせることなく PDF ファイルが得られるはず
です．

6.25

発展的な TEX の話題

この節では他の節に比べてやや発展的な TEX の話題について述べます．

6.25.1LATEX をインストールする

皆さんが自身のコンピュータで LATEX の編集をしたいことがあるでしょうから，この節ではmacOS，Windows，Linux 系 OS について LATEX のインストール方法を紹介します．いずれも TEX
Live と呼ばれる，ありとあらゆる LATEX の周辺ツールを同梱したものをインストールするだけです．
Windows の場合
http://www.tug.org/texlive/acquire-netinstall.html か ら install-tl.exe を ダ ウ ン
ロードし，EXE ファイルを実行します．
macOS の場合macOS の 場 合 は，一 番 よ い の は TEX Live を フ ル イ ン ス ト ー ル す る こ と で す．https://tug.org/texlive/acquire-netinstall.html から，tar.gz 形式の圧縮ファイルをダウンロードし，ここに含まれている実行ファイル install-tl によりインストールします．また42） https://www.ctan.org/pkg/luatexja195

は，macTeX と呼ばれる，macOS 環境に最適化された TEX Live をインストールしても構いません．この場合は，必ず Homebrew 経由で，かつ --cask オプションを伴ってインストール

してください．アンインストールが困難になってしまうため，macTeX をインストーラ経由
でインストールすることは推奨しません．
Linux の場合パッケージマネージャーで texlive と検索し，ヒットしたものを調べてインストールします．
例えば Ubuntu では sudo apt-get install texlive-full とします．
TEX Live は後の節（例えば 6.14 節など）にて解説される graphicx パッケージといった各種のマ
クロパッケージ（後述）を全て含みます．この章はいくつかのマクロパッケージを紹介しますが，紹介するものは全て TEX Live に収録されているものです．従って，TEX Live のインストール後に皆さんが何かパッケージをインストールする必要はありません．

6.25.2ε - pTEX 以外の TEX 処理系

TEX 処理系を図 6.9 にまとめました．図中の矢印は派生を示して，例えば ε - pTEX は pTEX とε-TEX の派生であるという意味です．興味のある方はこれらについて Web などで調べてみると良いでしょう．

TEX

pTEX

upTEX

ε - pTEX

ε-upTEX

ε-TEX

XETEX

pdfTEXLuaTEX図 6.9: TEX 処理系の一部

6.25.2.1

ε-upTEXε - pTEX の派生として日本でよく利用されている ε-upTEX43）という処理系があります．これは内部の文字コードを Unicode へ対応させ「髙（はしごたか）」といった特殊な文字や韓国語などを扱えるようにしてあります．

43） 「いーゆーぴーてっく」もしくは「いーゆーぴーてふ」と発音します．http://sourceforge.jp/projects/eptex/

1966.25.2.2

pdfTEXTEX の派生で特に有名な pdfTEX44）は，DVI ファイルを介さず直接 PDF を生成します．DVI
ファイルを通らないので dvipdfmx を必要とせず，PDF の強力な表現力を利用できることから欧文圏では高い人気があります．ただ pdfTEX は日本語に関する組版処理が ε - pTEX と比べて劣るな
どの理由から，日本ではあまり用いられていません．
注意するべきは，海外のフォーラムなどで LATEX について論じられている場合，この pdfTEX を前提としている可能性が極めて高いということです．するとソースコードをコピーしたにも関わらず，ε - pTEX では正しく動作しないということがありえます．
6.25.2.3

XETEX

XETEX はコンピュータにインストールされたフォントを直接使うことで，面倒な設定をすることなく，フォントの高度な情報を利用できます．日本語のフォントを想像するとよく分からないかもしれませんが，例えばアラビア語といった複雑な文字を美しく表現したい場合，TEX の処理系を改造するなどして対応するのは大変なことです．そこで XETEX はフォント情報を読み込むことで，処理系を改造することなく複雑な文字をも容易に扱えます．

6.25.3

ConTEXtLATEX 以外にも純粋な TEX を強化するためのマクロパッケージはいくつか存在します．最近では海外を中心に，ConTEXt45）という LATEX 以外のマクロパッケージを用いた文書も増えつつあり
ます．LATEX とは違い，次のような文法となっています．
Listing 6.13: ConTEXt による文書の例46）12
34\ setuphead [title ][ style ={\ ss\bfd},
before ={\ begingroup },after ={ John Doe , the author \ smallskip %\ currentdate \ bigskip \ endgroup }]5
6\ starttext

78\title {\ CONTEXT }

9
10
11
12
13
14
15
16
17

\ section {Text}\ CONTEXT \ is a document preparation system for the\TEX\ typesetting program . It offers programmabledesktop publishing features and extensive
facilities for automating most aspects oftypesetting and desktop publishing , including
numbering and cross - referencing (for example toequation \in[eqn:famous -emc]), tables and figures ,44） http://ctan.org/pkg/pdftex45） 「こんてくすと」と発音します．http://wiki.contextgarden.net/

197

18

page layout , bibliographies , and much more.

19
20
21
22

It was originally written around 1990 by Hans
Hagen. It could be an alternative or complement
to \LATEX.

23
24
25
26

\ section {Maths}
With \ CONTEXT \ we could write maths. Equations
can be automatically numbered .

27
28
29
30
31
32
33
34
35
36

\ placeformula [eqn:famous -emc]\ startformulaE = mc^2\ stopformulawith\ placeformula [eqn:def -m]\ startformulam = \frac{m_0}{\ sqrt {1-\ frac{v^2}{c^2}}}\ stopformula

37
38\ stoptext

6.25.4

その他の組版処理系

ここでは，LATEX 以外の組版処理系のうち，無償で使えるもの（ないし使えると予想されるもの）を紹介します．
6.25.4.1
SATYSFI

SATYSFIとは，諏訪敬之により開発された組版処理システムです48）．OCaml というプログラ

47）

ミング言語をベースに開発され，静的な型がついていることが特徴です．
6.25.4.2

TwightTwight とは，和田優斗により発表された組版処理システムです．強力なグラフィック機能を備える組版処理系です．2022 年 3 月現在では，まだ一般公開されていない処理系ですが，オープン
ソースで公開する計画はあるようです49）．
6.25.4.3

CSS 組版処理系

Web 技術を利用した組版処理系もあります．Vivliostyle50）がその典型例です．
46） http://en.wikipedia.org/wiki/ConTeXt#Example_of_code47） 英単語の satysfi と同じ読みをします．
48） https://github.com/gfngfn/SATySFi49） https://note.com/ipsj/n/n6f6961254850
50） https://vivliostyle.org/ja/

198

6.25.5

TikZ による図TikZ51）とは PGF と呼ばれる TEX 用の図形描画を目的としたマクロパッケージのフロントエン
ドです．TikZ を用いることで，さまざまな図をテキスト形式で記述できます．本章の図 6.2 や図
6.1 も TikZ により生成されています．
例えば図 6.2 は次のようなソースコードで作られます．
1
2

3\begin{ tikzpicture }[ scale =1.5 ,block /. style = {rectangle , draw=black , thick , text width =6em , align=center ,rounded corners , minimum height =2em},
textblock /. style = {rectangle , text width =6em , align=center , minimum
height =2em}]

4
5
6\draw (-1, -1) node[block] (A) { ソ ー ス フ ァ イ ル };\draw (2, -1) node[block] (B) {DVI フ ァ イ ル };789\draw[->, very thick , blue] (A) -- (B);\draw (0.5 , -1.2) node (Bd) {\ epTeX };

10
11
12

\draw (5, -1) node[block] (C) {PDF フ ァ イ ル };\draw (5, 0.2) node[block] (D) {PS フ ァ イ ル };

13
14
15

\draw[->, very thick , blue] (B) -- (C);\draw (3.5 , -1.2) node (Cd) {\ dvipdfmx };

16
17
18

\draw[->, very thick , blue] (B) -- (D);\draw (3.25 , -0.3) node (Dd) {\ texttt{dvips }};

19
20
21
22

\draw[->, very thick , blue] (D) -- (C);\draw (5.45 , -0.4) node (Dd) {\ texttt{ ps2pdf }};\end{ tikzpicture }TikZ を説明するのはとても大変で紙面の都合もあるので，この節では TikZ によって作られた美しい図（次頁に掲載します）を TEXample.net52）よりいくつか拝借してきました．興味のある方はぜひ脚注 52）
へアクセスして，素晴しい図のソースコードを眺めてみましょう．

51） 「てぃっくず」と発音します．http://www.ctan.org/pkg/pgf52） http://www.texample.net/tikz/examples/

199

B~θ
Sm
B~r

Nm
B~θ
B~r

Schematic Earth dipolar magnetic field. The field lines placed in the page plane aredrawn as thick lines, those back with dashed lines and the field lines in front of thepage with thin lines.

図

6.10:

図

http://www.texample.net/tikz/

6.12:

http://www.texample.net/tikz/

examples/membrane-surface/examples/dipolar-magnetic-field/

F2

2

2
P
P2

s

2

図

6.11:

F1

replacement of
the capacity
by two places

s≤3

P1

s̄

2

図

http://www.texample.net/tikz/

examples/nodetutorial/

6.13:

http://www.texample.net/tikz/

examples/dandelin-spheres/

TikZ はこのような高度な図を Illustrator といった高価なソフトウェアを用いずに，あくまでテ
キストベースで作ることができます．
また TEX - LATEX Stack Exchange53）という Web サイトにて，天下一科学系図コンテスト54）というスレッドが立ち，TikZ に限らずさまざまなソフトウェアを用いて作られた，素晴らしい科学系の図が投票により順位付けされています．上記の図や TEXpample.net を見て感動した方はこちらを見るのもよいでしょう．

53） http://tex.stackexchange.com/
54） 原 題 は “Nice scientific pictures show off” で す． http://tex.stackexchange.com/questions/158668/
nice-scientific-pictures-show-off

200

6.25.6

古いが有益な情報

ここには，現在ではすでに古くなっているが，いまだに有益と認められる情報を置きます．過去の資料などを探す際に参考にしてください．ここで説明する事柄は，すでに古くなっている事柄ですので，ここでの説明の通りに操作することは，現在では推奨しません．注意してください．
6.25.6.1

バウンディングボックス

LATEX で画像を用いる前に，バウンディングボックスという用語について理解する必要がありま
す．LATEX におけるバウンディングボックスとは画像の大きさを示すものです．画像の大きさとは
縦と横の長さ（距離）になります．これがなければ，LATEX は画像の大きさが分からず画像を文書に埋め込めません．
残念なことに TEX は PNG や JPEG，PDF といったバイナリファイルから画像のバウンディン
グボックスを取得できません55）．そこで PNG や JPEG，PDF といったバイナリファイルの画像を文書で用いる場合，次の 2 つの方法のうちいずれかを用いてバウンディングボックスを TEX へ渡す必要があります．
• \ includegraphics コマンドの bb オプションを用いる• extractbb というプログラムで生成する
bb オプションは非推奨 LATEX について Web の資料などを調べたことがある方は，bb オプションを用いて\ includegraphics コマンドへ直接バウンディングボックスを指定する方法を知っているかもしれません．
ですが，この方法は画像の “物理的な長さ” を手動で計測する必要があります．例えば皆さんが画像の情報としてよく用いるピクセルという単位は，実は物理的な長さではなく，画素が何個という数を表す単位です．
ある物理的な長さに，どれだけの画素が詰め込まれているかという密度を表す量を解像度とよび，解像度を表す単位としては DPI （dots per inch: 1 インチあたりの画素数）などが存在します．
bb オプションを用いる場合，ピクセルといった数の情報と，解像度という画像の密度を表す情報を用いて物理的な長さを計算する必要があり，この作業は大変な労力でかつ人間の計算ミスもありえます．従って，次に説明する extractbb というプログラムによって算出するほうが，手作業によるミスもなく簡単でよいとされています．
extractbb によるバウンディングボックスの生成 PNG，JPEG の画像や PDF を貼る場合は，extractbb コマンドを用いて次のようにすることでバウンディングボックス情報ファイルが生成されます．例えば example.png のバウンディングボックスを生成する際は，ターミナルで次のようにします．
$ extractbb example .png
55） 反対に，テキストファイルで記述されている EPS であれば，ファイルの先頭に書かれているバウンディングボック
スの情報を読み込んで使うことができます．

201

$

すると，画像と同じディレクトリに example.xbb というファイルが生成されます．このファイ
ルにバウンディングボックスが記述されています．\ includegraphics コマンドを用いると，画像の名前と同じ xbb ファイルを検索して，xbb ファイルがあれば利用するので，PNG，JPEG の画像やPDF を用いる際はあらかじめ extractbb コマンドを使ってバウンディングボックスを生成しておきましょう．
現在はどうなっているか

現在では，バウンディングボックスを指定したり，xbb ファイルを作成したりすることは，誤動作のもとになるため非推奨になっています．最新の TEX 処理系では，
バウンディングボックスを指定しなくても図版を取り込められます．すでに xbb ファイルが存在する場合は，削除しておくことをおすすめします．

202

第7章

言語処理系

この章では COINS の計算機環境上での Python，Java，C，C++，FORTRAN，MATLAB によるプログラムの開発方法や，実行方法を説明します．

7.1

言語処理系とはコンピュータが動作するためには，CPU が解釈できる機械語の形式でのプログラムが必要になります．しかし機械語は人間には解釈しづらいため，一般的には C など人間が読みやすいプログ
ラミング言語を使ってプログラムを書きます．
この言語を解釈して直接 CPU などの処理系が解釈できる言語に変換するためのプログラムがあります．機械語，あるいはそれに準ずる形式の実行ファイルを出力するタイプの処理系をコンパイ
ラ（Compiler） といい，ソースファイルを読み出したり人間の入力を解釈してその都度命令を実行するタイプのものをインタプリタ（Interpreter）といいます．コンパイラは，ソースファイル（Source File）を入力して実行ファイル（Execution File）を生成します．このとき，ソースファイ
ル中のプログラムのことをソースコード（Source Code） ，コンパイラを使って変換することをコンパイル（Compile）と言います．インタプリタもソースコードを機械語に変換して実行しますが，
普通は機械語のファイルを出力しないところがコンパイラと異なります．

7.2

Python情報科学類では，プログラミング入門で学習する言語が，2019 年度より Java から Python になりました．そこで，この章では一番最初に Python について説明します．また JupyterNotebook とJupyterLab の使い方についても解説します．

7.2.1

Python プログラムの実行

Python は，オブジェクト指向言語 (Object Oriented Language) です．オブジェクト指向言語とは，プログラムをオブジェクトという機能の単位で構成しようとするプログラミングスタイルのための言語です．

7.2.2

Python プログラムの作成と実行

Python プログラムのソースファイルは末尾に “.py” をつけるのが慣習です．
試しに標準出力に “Hello, world!!” と表示する Python プログラムを作成してみましょう．

203

Listing 7.1: hello.py
1

print("Hello , world !!")

このプログラムを実行するためには， python3 コマンドを用いて以下のようにコマンドを入力
します．
$ python3 hello.py

これで標準出力に “Hello, world!!” と表示されます．
また対話的にも Python コマンドを実行できます．引数に何も渡さずに python3 コマンドを実行すると，対話環境が起動します．
$ python3
Python 3.9.1 (default , Dec 13 2020 , 11:55:53)[GCC 10.2.0] on linux
Type "help", " copyright ", " credits " or " license " for more information .
>>>この状態で Python の式を評価できます．
>>> 1 + 2
3>>> print (" Hello ")Helloquit() と打ち込むか， Ctrl-D で終了できます．
>>> quit ()
$

7.2.3

JupyterNotebook の使い方

JupyterNotebook は Python の実行環境を含んだドキュメント作成を目的とするアプリケーショ
ンです．JupyterNotebook を用いることによって，手軽に Python コードを実行し，出力を確認できます．
COINS 計算機システムにも実行環境が用意されています．ここでは使い方を解説します．
7.2.3.1

起動して Hello を表示してみる

macOS 環境で JupyterNotebook を実行する方法を記します．端末で次のように入力します．
Listing 7.2: notebook-start
1
2
3$ mkdir $HOME/prog$ cd $HOME/prog$ jupyter - notebook

すると JupyterNotebook が起動します．

204

図 7.1: JupyterNotebook のホーム画面
それではノートブックを作成してみましょう．右上のNewボタンから Python 3を選択しましょう．
新しいノートブックが作成されます．

205

図 7.2: 新規ノートブックの作成

図 7.3: 新規ノートブックの画面

206それではノートブックで Python プログラムを実行してみましょう． Hello, jupyter!!と表示するプログラムを書きます．

図 7.4: ノートブックにコードを書く
コードを書いたら Ctrl + Enter で実行します．

207

図 7.5: ノートブックのコードを実行する
コードの下に Hello, jupyter!!と表示されました．
7.2.3.2

グラフを表示してみる

matplotlib などを用いてグラフなどを表示できます．

208

図 7.6: matplotlib のグラフを表示する

7.2.3.3

Markdown を書いてみる

Markdown とは手軽に文章構造を明示できる文章記法です．簡単で覚えやすいので幅広く用いられています．
JupyterNotebook はドキュメント作成のためのアプリケーションなので Markdown で文書作成ができます．
まずはセルのタイプを Markdown にしましょう．

209

図 7.7: セルのタイプを Markdown にする
コード 7.3 を入力し， Ctrl + Enter を押すと，図 7.8 が生成されます．
#で見出しを明示します．#の数が多いほど見出しの重要度が下がっていきます．
-で箇条書きを明示します． 数字.で番号付き箇条書きを明示します．

空行で改行を明示します．
‘‘‘ で文章を囲むとコードブロックを明示できます．‘で文章を囲むとインラインコードを明示できます．
*で文章を囲むとイタリック体を明示できます．**で文章を囲むと強調を明示できます．

Listing 7.3: Markdown を書いてみる
1
2
3# main topic## sub topic### subsub topic

4
5
6
7

- This- is- itemize

8
9
10
11

1. This
2. is
3. enumerate

12
13

Blank line is made by

210

14
15

new line.

16
17
18
19

‘‘‘
write code here
‘‘‘

20
21

write ‘inline ‘ code here

22
23

*Italic style*24
25** STRONG STYLE **

図 7.8: セルのタイプを Markdown にする

7.2.3.4

ファイル名の修正・保存・終了

ファイル名の修正・保存・終了方法を記します．まず左上の file のボタンをクリックします．

211

図 7.9: ファイルメニューを開く
ここで• Rename でファイル名を修正• Save and Checkpoint でファイルを保存• Close and Halt で終了ができます．
他にも Save as をクリックすることで名前を付けて保存ができます．

212

図 7.10: ファイル名を入力して保存
また JupyterNotebook を起動した端末で Ctrl-C を入力すると，Shutdown this notebook server(y/[n])? と出てくるので，y を入力して Enter を押すと JupyterNotebook サーバがシャットダウン
されます．
その後ブラウザのタブを閉じることでも終了できます．
Listing 7.4: 端末から終了する方法
1
2
3
4
5
6

^C
Shutdown this notebook server (y/[n])? y[C 20:41:40.854 NotebookApp ] Shutdown confirmed[I 20:41:40.855 NotebookApp ] Shutting down 0 kernels[I 20:41:40.855 NotebookApp ] Shutting down 0 terminals
$

7.2.4

JupyterLab

JupyterLab は Jupyter プロジェクトにおける次世代の web ベースユーザインターフェースです．
JupyterNotebook の機能を強化し，使い勝手を良くしたものです．

213

JupyterNotebook との違いとしては，複数のノートを同一画面で開ける，タブを自由に配置できるなどがあります．
ここでは JupyterLab の使い方を説明します．
7.2.4.1

起動方法

端末で次のコマンドを入力します．
Listing 7.5: notebook-start1
2$ cd ~/ prog
$ jupyter -lab

7.2.4.2

新しいノートの作り方

JupyterLab を起動すると，Launcher というタブが開きます．その中に次の項目があります．
• Notebook• Console• Other
Notebook をクリックすると，新しいノートが作られます．
また，上部のメニューバーの File -> New -> Notebook からも作成できます．

図 7.11: 新しいノートの作成

214

7.2.4.3

プログラムの作成と実行

使い方は JupyterNotebook と同じです．セル内にプログラムを書き， Ctrl+Enter で実行します．

図 7.12: プログラムの実行
タブ内のメニューバーで Markdown を選べば Markdown モードになります．

215

図 7.13: Markdown モード

7.2.4.4

複数のタブを開く

上部のメニューバーの File -> New -> Notebook から新しいタブを開くことができます．

216

図 7.14: タブを複数開く
またタブは自由に配置できます．
7.2.4.5

ファイル名の変更・保存・終了

現在のノートブックのファイル名の変更・保存・終了の方法を示します．上部のメニューバーのFile からメニューを開き，• Rename Notebook でファイル名の変更• Save Notebook でファイルの保存• Shut Down で終了ができます．

217

図 7.15: File メニューから操作を選択

7.3

Java コンパイラ

Java は，オブジェクト指向言語 (Object Oriented Language) です．
Java のプログラムは高いポータビリティを持っており，同じプログラムを Mac, Windows, Linux
いずれでも実行できます1）．特に，通常の Java のプログラム以外に，アプレットと呼ばれる Web
ページなどに埋め込み可能なプログラムを作ることができます．これについては，この節の後半で説明をしていきます．

7.3.1

Java プログラムのコンパイルと実行

Java のソースファイルのファイル名は，ファイル中で宣言されているクラスの名前に，“.java”の拡張子をつけたファイルにしなければなりません．例えば，MyTest というクラスの定義を含む
ソースファイルは，MyTest.java というファイル名でなくてはなりません．
まず，サンプルとして “Hello, Java World!” と表示するためのプログラムを紹介します．このプ
ログラムは，以下の通りとなります．
Listing 7.6: MyTest.java
1

public class MyTest {1） 近年では Android も Java が機能するプラットフォームとして有名です．

218

public static void main(String args []) {System.out. println ("Hello , Java world!");
}

2
3
4
5

}

このプログラムをコンパイルするためには，javac コマンドを用いて以下のようにコマンドを入力します．
$ javac MyTest .java

これにより，MyTest.class という名前のクラスファイル (Class File) が生成されます．クラスファ
イルとは，ソースファイルをコンパイルした結果のバイトコードが書かれています．バイトコー
ドは，Java の実行環境が解釈して実行します．この実行環境のことを Java Runtime Environment（JRE）と言います．
Java の実行環境を使ってプログラムを実行させるためには，java コマンドを使用します．引数には，main 関数の入っているクラスのクラス名を指定します．引数に指定するのは，あくまでもクラス名のみで，クラスファイルの名前ではないことに注意します．
MyTest クラスを実行させる場合には次のようにします．
$ java MyTest
Hello , Java world!
$

7.3.2

Java アプレットのコンパイルと実行

アプレットを使用したプログラムでは，通常の Java プログラムと比べてプログラムの作り方が変わってきます．また，Web ページ上に埋め込むので，HTML ファイルも必要になってきます．
ここでは，サンプルとして，アプレットのウィンドウを開いて “Hello, Java World” と表示する
プログラムを説明します．サンプルの Java のコードは以下の通りです．
Listing 7.7: MyTestApl.java
1
2

import java. applet . Applet ;import java.awt. Graphics ;

3
4
5
6
7
8
9
10
11

public class MyTestApl extends Applet {public void init () {resize (150 ,30);}
public void paint( Graphics g) {g. drawString ("Hello , Java world!" ,50 ,25);}}

これをコンパイルするには，先ほどと同じようにして javac コマンドを使用します．
$ javac MyTestApl .java219

コンパイルしたアプレットのプログラムを呼び出すための HTML ファイルを用意します．今回
は，以下のファイルを使用します．
Listing 7.8: MyTestApl.html
1
2
3
4
5
6
7
8
9
10
11
12

<html >
<head >
<title >MyTestApl Applet </title ></head ><body >
MyTestApl Applet<hr><applet code=" MyTestApl .class" width =150 height =30 ></applet ><hr><a href=" MyTestApl .java">Source </a></body ></html >これを実行するには，appletviewer コマンドを使用します．また，このプログラムを実行すると
図 7.16 のようになります．
$ appletviewer MyApplet .html

図 7.16: Java アプレットの実行画面

7.4

C

C によるプログラミングの方法を説明します．デバッグ方法を解説します．ここでは，C プログ
ラムのより高度なコンパイル方法を紹介します．

7.4.1

C コンパイラC コンパイラ（C Compiler）は C で書かれたソースコードをもとにして実行ファイルを出力します．以下，C コンパイラを用いてソースファイルをコンパイルし，実行する手順を説明します．
220

C のソースファイルには，“.c” という拡張子をつけます．例えば，sample.c というファイル名とします．ソースファイルは，Emacs や vi などのテキストエディタで作成してください．
まず，ターミナルに “Hello, C world!” という文字列を出力する簡単なソースコードを示します．
ソースファイルのファイル名は，test.c としてください．左側に書かれている数字は行数を示していますが，説明のために便宜上つけてあるだけで，実際のソースコードには入力する必要はありま
せん．
Listing 7.9: test.c1#include <stdio.h>

2
3
4
5
6
7

int main (){printf("Hello , C world !\n");return 0;}

利用しているターミナルによっては，ソースコードにあらわれるバックスラッシュ（\）が円記号になる場合もありますが，これは同じ ASCII コード（0x5C）が割り当てられていることによっ
2）て起こります．
強制的にバックスラッシュを入力するには，


+ ě


を同時に押します．

このソースファイルをコンパイルするためには，gcc というコマンドを使ってコンパイルを行います．gcc とは，GNU Compiler Collection（gcc）を実行するためのコマンドです．3）gcc はFree Software Foundation という組織がオープンソースで提供しているコンパイラで，様々なコン
ピュータ上で動作します．gcc を使ってコンパイルをするために，以下のように test.c が入っているディレクトリでコマンドを実行してください．
$ gcc test.c

コンパイルを実行すると，a.out という名前の実行ファイルが生成されます．生成された実行ファイルを実行するには，以下のようにします．
$ ./a.out
Hello , C world!
$

実行すると，“Hello, C world!” という文字列がターミナルに表示されます．
gcc コマンドでオプションを指定せずにコンパイルを行うと，前述のように a.out という名前の実行ファイルが出力されます．これを任意の名前に変えるためには，gcc の “-o” オプションを使用します．例えば，hello という実行ファイルを出力したい場合，以下のようにします．
$ gcc -o hello test.c2） Shift JIS, EUC-JP などがこの問題を抱えています．UTF-*では円記号とバックスラッシュは別のコードになっています．
3） macOS 環境下では実際には GNU Compiler Collection ではなく，LLVM が起動する

221

7.4.2

ヘッダファイル，ライブラリ

先ほどのプログラムでは，プログラム内で文字列を出力するために printf 関数が使われています．この関数を用いるために，printf 関数が宣言されている stdio.h という名前のファイルをインクルードしています．このようなファイルをヘッダファイル (Header File) と言います．
また，関数の宣言に対応する関数の実体は，ライブラリファイル (Library File) と呼ばれるファ
イルの中に存在します．ライブラリファイルは，コンパイル時に結合する必要があり，このことを
リンク (Link) すると言います．標準的なライブラリファイルは自動的にコンパイル時にリンクされますが，そうではないライブラリは明示的に指定する必要があります．これについては，7.4.10
節で詳しく説明をします．
どの関数がどのインクルードファイルに宣言されているかを調べるためには，man コマンドを使ってマニュアルで調べます．調べるときには，シェルから “man (関数名)” と実行します．また，
このマニュアルの中では，関数の使い方や関数の引数，オプション，注意などが載っていますの
で，関数を使うときにはこのマニュアルを見るようにしましょう．
例えば，sqrt 関数の man を開くと，マニュアルに以下のように載っています．書式の部分では，関数の戻り値，引数などが書いてあります．説明の部分では，この関数の使い方などが書いてあります．バグの部分では，関数を使う際の注意が書いてあるので，注意が必要です．

222

sqrt 関数の man
SQRT(3)

BSD Library Functions Manual

SQRT(3)NAME
sqrt -- square root function

SYNOPSIS#include <math.h>doublesqrt(double x);

long double
sqrtl(long double x);

float
sqrtf(float x);

DESCRIPTION
The sqrt() function compute the non-negative square root of x.

SPECIAL VALUES
sqrt(-0) returns -0.

sqrt(x) returns a NaN and generates a domain error for x < 0.

SEE ALSO
math(3)

STANDARDS
The sqrt() function conforms to ISO/IEC 9899:1999(E).

BSD

December 11,

2006

223

BSD

7.4.3

参考になる資料• man gcc
• ハーバート・シルト著， 柏原 正三 監修「独習 C」（翔泳社）• B.W. カーニハン/D.M. リッチー著 石田晴久訳「プログラミング言語 C（第 2 版）ANSI 規格準拠」（共立出版）

7.4.4

デバッグ

7.4.5

printf を使った簡単なデバッグ

ここでは，C プログラムのデバッグについて説明します．デバッグ（Debug）とは，プログラムの不具合（バグ）を修正することです．簡単なデバッグの方法としては，ソースコード中にデバッ
グ情報の出力を埋め込む方法があります．
簡単にできるデバッグの方法として，printf を使ってプログラム中で使用している変数などの情報を出力する方法があります．これは単にプログラム中で printf 関数を使って変数の中身を表示するだけですが，簡単にできます．しかし，この方法だとデバッグ情報を出力する部分がプログラム
中に埋め込まれてしまい，デバッグが終わった後にデバッグ情報の出力部分をコメントアウトする
手間がかかります．
そこで，#ifdef 文を用いてデバッグのときとそうでないときで，プログラムのコードを切替えられるようにします．これにより，デバッグの時だけ，デバッグ情報を出力することが可能になります．
次のプログラムは，#ifdef 文を使ってプログラムを切替えられるようにしたものです．
Listing 7.10: test_debug.c
1#include <stdio.h>

2
3
4
5
6
7
8
9
10

int main (){printf("Hello , C world !\n");#ifdef DEBUG
printf("This is debug .\n");#endifreturn 0;}

test_debug.c は test.c の 6 行目〜8 行目に#ifdef 文を使ったプログラムを追加したものです．
“#ifdef (マクロ名) 〜 #endif” にはさまれた部分は，(マクロ名) が定義されているとコンパイルの対象になります．もし，マクロが定義されていない場合，この部分はコンパイル時に無視されます．つまり，コンパイル時にマクロを定義することで，デバッグ用のプログラムを生成できます．
マクロを定義する方法には，#define をソースファイル中に定義する方法とコンパイル時にコン224

パイラのオプションで指定する方法があります．このうち，コンパイル時にマクロを指定するには，コンパイルオプションに “-D(マクロ名)” と指定します．
$ gcc -o test_debug test_debug .c -DDEBUG$ ./ test_debug
Hello , C world!
This is debug.
$ gcc -o test_debug test_debug .c$ ./ test_debug
Hello , C world!

7.4.6

デバッガの利用

デバッガ (Debugger) というデバッグをサポートするためのプログラムを使うことで，効率的にデバッグを行うことができます．ここでは，上記 2 つの方法をそれぞれ説明します．
printf を使ったデバッグの方法について説明しましたが，この方法では，デバッグしたい箇所に全部のデバッグ情報を書かなければなりません．また，短いプログラムの場合，ソースコードを見ているだけでも簡単にバグを発見できますが，ソースプログラムが長く，複雑になると，バグを見つけることが難しくなってきます．
そこで，デバッガというデバッグをサポートするツールを使います．一般的なデバッガでは，プ
ログラムを途中で止めて変数の中身を見たり，1 行ごとにプログラムを実行したりできます．これ
により，非常に効率良くデバッグを行うことができます．例えば，課題のプログラムなどでバグがどこにあるかわからなくなったら，デバッガを使ってデバッグすることで，バグを見つけることができるかもしれません．
ここでは，次の簡単な剰余計算をするプログラムをデバッグするとします．デバッガには，gdb（GNU デバッガ）を使用します．
Listing 7.11: test_gdb.c
1# include <stdio.h>

2
3
4
5
6
7

int mymod(int i, int j) {while(i >= j)i -= j;return i;
}

8
9
10
11
12
13

int main () {int x = 20,y = 3;
printf("%d (mod %d) = %d\n",x,y,mymod(x,y));return 0;}

デバッガを利用するためには，コンパイル時にデバッグに必要な情報をプログラムに埋め込んでおく必要があります．そのためには，gcc に “-g” オプションをつけてソースコードをコンパイルし
225

ます．
$ gcc -o test_gdb test_gdb .c -g

このようにして実行ファイルを生成すると gdb を利用してデバッグを行うことができます．
次に，gdb コマンドを使って，gdb を起動させます4）．引数には，実行するファイルのファイル名を指定します．
$ gdb test_gdb

起動すると，以下のように表示されます．ここから，コマンドでデバッガを操作します．
$ gdb test_gdb
GNU gdb 6.3.50 -20050815 (Apple version gdb -1346) (Fri Sep 18 20:40:51
UTC 2009)
Copyright 2004 Free Software Foundation , Inc.
（省 略）
(gdb)

デバッガの使い方はいろいろとあるのですが，ここでは，プログラムを特定の場所で止めるブ
レークポイントの機能を使って，途中でプログラムを止めてデバッグする方法を例にして説明をしていきます．
ブレークポイントを設定するためには，break コマンドを使います．break コマンドの引数には，
関数名や行数を指定します．このとき，複数のファイルで構成されているプログラムにブレークポイントを設定するためには，ファイル名を指定する必要があります．ファイル名を指定するには，“break (ソースファイル名):(関数名 or 行数)” というように，引数にファイル名を含めて記述
します．
(gdb) break mymod
Breakpoint 1 at 0 x100000e96 : file test_gdb .c, line 4.

ブレークポイントを設定したら，run コマンドを使ってプログラムを実行します．このとき，デバッグするプログラムに実行するための引数を付けたい場合は，run コマンドの引数にその引数を入力します．
(gdb) runStarting program : /home/gikan/tebiki / tebiki01 / compiler / test_gdb
Breakpoint 1, mymod (i=20, j=3) at test_gdb .c:4
4while(i >= j)

実行したプログラムは，ブレークポイントを設定した場所に到達すると，その場所でプログラムが一時停止し，gdb でコマンドを入力できるようになります．
4） macOS では gdb の起動がうまくできないことがあり，適切に処理をさせる coins-gdb というスクリプトファイル
が COINS システム内に存在する

226

この状態で，変数の中身を見るためには，print コマンドを使用します．例えば，変数 i の中身を表示するためには，以下のようにします．
(gdb) print i$1 = 20

また，この状態で変数の中身を書き換えることもできます．その場合には，“(変数名) = (値)” と入力します．
一時停止している状態で 1 行処理を進ませたい場合には，next コマンドを使います．これにより，1 行ごとに処理を実行させていくことができます．また，next など，何度も同じコマンドを入力しなければならないとき，毎回同じコマンドを入力するのは非常に面倒です．そのため，gdb には前の操作をもう一度繰り返す機能がついています．これを行うためには，何も入力されていない
状態で




を押します．

一時停止している状態では，さらに他の場所にブレークポイントを設定できます．また，設定したブレークポイントを削除するためには，clear コマンドを使います．clear コマンドの引数には，
break コマンドと同じようにして，削除するブレークポイントの関数名や行数を指定します．
最後に，プログラムの実行を再開する場合には，continue コマンドを使用します．これにより，プログラムの実行を再開します．また，デバッガを終了するには，quit コマンドを使用します．
これ以外にも，条件付きのブレークポイントの設定やバックトレースの表示など，大変便利な機能があります．とくに，セグメンテーションフォルトをはじめとするランタイムエラーの追跡に，gdb はたいへん役に立つでしょう．詳細は，man コマンドや gdb 起動中の help コマンド，インターネット上の情報などを参考にしてください．

7.4.7

分割コンパイル

大きなプログラムは，いくつものソースファイルに分割して作成します．その場合，コンパイラ
を使ってソースファイルごとにオブジェクトファイルを作成し，最後にそれをリンクします．このことを分割コンパイルと言います．
まず，オブジェクトファイルを作成するために，gcc で “-c” オプションをつけてソースファイル
をコンパイルします．次に，このままでは実行できないため，リンカを使ってプログラムをリンクします．これには，gcc の引数にオブジェクトファイルを指定して実行します．
例えば，次のような 2 つのソースファイルがあるとします．
Listing 7.12: test_main.c
1
2
3
4
5

extern void myfunc ();int main () {myfunc("Hello , make world .\n");return 0;}

Listing 7.13: test_main.c

227

1
2

# include <stdio.h># include <string .h>

3
4
5
6

void myfunc(char *s) {printf("(%d) %s" ,(int)strlen (s),s);}

これらのファイルをコンパイルしてオブジェクトファイルを作成するには，以下のようにします．
$ gcc -c test_main .c$ gcc -c test_lib .c

次に，生成されたオブジェクトファイルをリンクします．リンクするためには，以下のようにします（-o オプションは，プログラムの実行ファイル名を決めるためのもので，リンク自体には関係ありません）．これにより，test というプログラムが作成され，普通のプログラムと同じようにして実行できます．
$ gcc -o test test_main .o test_lib .o$ ./ test(19) Hello , make world.

7.4.8

make を使ったコンパイル

大きなプログラムを分割コンパイルする場合，毎回すべてのソースコードをコンパイルしていたら非常に時間がかかってしまいます．そこで，make というプログラムを使って，前回コンパイル
したときから編集されたファイルのみを再コンパイルするようにします．
make コマンドでは，Makefile というソースコードをコンパイルする手順などを記した設定ファ
イルを作成します．例えば，先ほどの分割コンパイルの例のプログラムでは，以下のように
Makefile を記述します．
Makefile
CC = gcc
SRC = test_main.c test_lib.c
OBJ = test_main.o test_lib.o
TARGET = test$(TARGET): $(OBJ)$(CC) -o $(TARGET) $(OBJ)
make コマンドを使うためには，Makefile があるディレクトリで，make コマンドを実行します．
これにより，編集されたファイルのみを自動的に選んで，必要なアクションを実行します．
$ make228

gcc -o test test_main .o test_lib .o$ ./ test(19) Hello , make world.

7.4.9

最適化

最適化（Optimization）とは，コンパイラが効率のよい実行ファイルを生成する機能です．この機能を使うことで，プログラムの実行速度が速くなったり，実行ファイルのサイズが小さくなったりします．
最適化を行うためには，コンパイル時のオプションに “-O” に続けて数字のパラメータを与えます．“-O1”,“-O2”,“-O3” の順に最適化の度合いが強くなっていきます．“-O2” のオプションをつけてコンパイルするためには，以下のようにします．
$ gcc -O2 -o test test.c

7.4.10ライブラリ

ライブラリ (Library) とは，ある機能を提供するための関数群をまとめたものです．この関数群をファイルにまとめたものをライブラリファイルと言います．例えば，算術演算のライブラリであれば，libm.a というライブラリファイルを使用します．
ライブラリに入っている関数を使うためには，まず，その関数に必要なヘッダファイルをインク
ルードします．しかし，これだけだと関数の宣言のみで関数の中身がありません．そのため，コンパイル時にライブラリファイルを一緒にリンクします．
次のようなプログラムをコンパイルするとします．このプログラムは，math.h をインクルード
しており，プログラム中で算術演算のライブラリに入っている sqrt 関数を使用しています．
Listing 7.14: test_math.c
1
2
3
4
5
6
7
8

# include <stdio.h># include <math.h>int main () {double x = 2.0;
double y = sqrt(x);printf("%f\n",y);return 0;}

このプログラムをコンパイルするときには，“libm.a” のライブラリファイルを必要とします．コンパイル時にライブラリファイルを指定するためには，“-l” の後にライブラリファイルの “lib” と“.a” を取り除いた部分を記述します．例えば，“libm.a” というライブラリファイルであれば，“-lm”とします．以下に実際にコンパイルするときのコマンドを示します．
$ gcc test_math .c -lm

229

標準のライブラリは，/lib か/usr/lib にあるという設定になっているので，gcc はこの 2 カ所以外は探しません．これら以外にライブラリがある場合は，ライブラリの絶対パス名を書くか，-L オ
プションを用いて，ライブラリを検索するディレクトリを指定する必要があります．

7.5

C++コンパイラ

ここでは，C++コンパイラの使い方について説明をします．

7.5.1

C++プログラムのコンパイルと実行

C++のソースファイルの拡張子は，“.c++”，“.cc”，“.cpp”，“c” とします．ただし，C のソース
ファイルと紛らわしいので “.c” をつけるのは，やめたほうが良いでしょう．
C の場合は，コンパイラに gcc を使っていましたが，C++の場合には g++を使います．C とC++のコンパイル方法の違いは，gcc を使うか g++を使うかということだけで，オプションなどはほとんどかわりません．
例えば，次の test.cpp をコンパイルするとします．
Listing 7.15: test.cpp
1# include <iostream >

2
3
4
5
6

int main () {std :: cout << "Hello , C++ world" << std :: endl;
return 0;}

このソースファイルをコンパイルするには，以下のようにします．
$ g++ test.cpp$ ./a.out
Hello , C++ world

これにより，a.out という名前の実行ファイルが生成されます．
C コンパイラと同様にして，“-o” オプションをつけることで，生成される実行ファイル名を指定できます．また，C の部分で説明をした gdb でのデバッグも，C と同様にして行うことができ
ます．

7.5.2

参考になる資料• man g++• 高橋 航平著 επιστημη（エピステーメー）監修「独習 C++ 新版」（翔泳社）• B. ストラウストラップ著 長尾高弘訳「プログラミング言語 C++（第 3 版）」（アスキー・アジ
ソンウェスレイシリーズ）• M. A. エリス，B. ストラウストラップ著 足立剛徳，小山裕司訳「注解 C++リファレンスマ

230

ニュアル」（トッパン）

7.6

FORTRAN コンパイラ

ここでは，FORTRAN コンパイラの使い方について説明をします．

7.6.1

FORTRAN95 プログラムのコンパイルと実行

FORTRAN のコンパイラとして，GNU FORTRAN95 コンパイラ（gfortran）を利用します．
GNU FORTRAN コンパイラは，Free Software Foundation が無料で配布しています．ここでは，
このコンパイラを使って説明をしていきます．
FORTRAN 言語のソースファイルの拡張子は，“.f” あるいは “.F” とします．例えば，以下のtest.f をコンパイルするとします．
Listing 7.16: test.f
1
2
3
4
5
6

PROGRAM TESTREAL X,Y
X = 3.0
Y = SQRT(X)
WRITE (* ,*) Y
END

各行の先頭にはインデントを入れてください．このプログラムをコンパイルするには次のようにします．
$ gfortran test.f

これにより，a.out という名前の実行ファイルが生成されます．また，C コンパイラや C++コン
パイラと同様に “-o” オプションをつけることで，生成される実行ファイル名を指定できます．

7.6.2

参考になる資料• man gfortran• 中田育男著「基礎 FORTRAN」（岩波書店）

7.7

MATLAB

MATLAB とは MathWorks 社が開発している数値解析ソフトウェアです．C や C++，Java といったプログラミング言語では実装が困難な行列計算やベクトル演算，グラフ化等を簡単に行うことができ，数値計算やネットワーク5）から，制御工学や電気工学といった分野にも非常に有用な機能を多数備えています．また，MATLAB Engine というライブラリを導入して，C や C++から
5） ここでのネットワークとはグラフ理論におけるネットワークです．

231

MATLAB の機能を利用する，といったことも可能になります．MATLAB は Windows，macOS，Linux だけでなく iOS や Android でも利用できます．すべての OS での画面について操作を説明することは困難なため，ここでは Windows における画面を用いて解説します．

起動

7.7.1

インストールされたプログラムの一覧から MATLAB を選択することで，ウィンドウが「コマンドウィンドウ」，「ワークスペース」等に分割された GUI で MATLAB が起動します．

図 7.17: MATLAB
MATLAB はターミナルから利用できますが，GUI を用いて利用したほうが配列や変数の状態を確認できたり，「Simulink」といった MathWork 社が提供するソフトウェアと連携しやすくなりま
すので，ここでは GUI で操作しているものとして解説していきます．

計算の実行

7.7.2

MATLAB で変数や配列の初期化及び代入したり，それを用いた数値計算をしたりという場合は「コマンドウィンドウ」に記述します．変数の初期化を行う場合は，以下のように記述します．
a=10

このように記述し，

を押すことで入力した内容が実行されます．この場合の実行結果は以下の通りです．これはコマンドウィンドウに表示されます．
a =
10

232

MATLAB では基本的に「int」や「float」といった変数型を指定する必要はありません．上記のa に整数ではなく小数点以下を含む実数を代入してもエラーは起きません．配列の場合は列区切りに「,」を，行区切りに「;」を用います．例えば，サイズ 2Œ2 の行列の初期化は以下のように記述します．また，記述した数式の末尾に「;」を加えると，実行後に実行結果がコマンドウィンドウに表示されません．サイズが大きい行列の計算を行う場合等，コマンドウィンドウが流れてしまうことを考えて「;」を加えたほうが良い場合もあります．
A=[10 ,10;20 ,20];「;」を加えて実行結果を表示しなかった場合でも変数や配列の内容を確認する方法はあります．
例えば先ほど初期化を実行した「A」の内容を確認したい場合，次のように記述すれば確認できます．
A

この場合の実行結果は以下の通りです．
A =
10
20

10
20

また，すべての変数と配列の内容は「ワークスペース」でも確認できます．ワークスペース内には
これまでに利用した変数や配列名が表示され，確認したい対象の名前をダブルクリックするとコマ
ンドウィンドウが分割されて対象の内容が表示されます．

図 7.18: 変数内容の参照

233

節の始めでも説明したとおり，MATLAB は行列計算を簡単に行うことができます．たとえば行
列の積は以下のようにして計算できます．
A*[1;2]

この場合の実行結果は以下の通りです．
ans =
30
60

C や C++で行列の積を計算する実装を考えた場合，for 文を用いて各要素についてひとつずつ計算
する，といった方法がまず頭に浮かぶかもしれませんが，MATLAB では「*」を用いるだけで積を求めることができます．この実行結果で注意して欲しい点がひとつあります．この計算では計算結果を別の変数に代入していないため，実行結果のこれまで「a」や「A」にあたる部分には「ans」と表示されています．この「ans」は変数として残らず，ワークスペースにも残らないため，この後に ans の内容は確認できません．計算結果を後で確認したい場合には以下のように変数の代入式にする必要があります．
Answer=A *[1;2];

このほかにも逆行列や行列式の計算などが MATLAB では簡単に行うことができます．複雑な行
列計算が行われるグラフ理論を学ぶ場合等に MATLAB を用いれば，学習の手助けになるかもしれ
ません．

7.7.3

関数の実装

MATLAB ではよく利用する計算の一連の流れを関数として保存し，コマンドウィンドウから呼び出すことができます．関数を記述する場合には，まずコマンドウィンドウへ以下のように記述
し，MATLAB が扱うことのできる.m ファイルを作成します．
edit filename .m

これを実行すると新たにエディタ画面が起動します．関数を記述する際には先頭に関数名及び引数と返り値を示す記述と，末尾に関数の終わりを示す記述が必要となります．例えば引数の値を 2倍にして返す関数ならば以下のように記述します．
filename.mfunction [value ]= twice( Parameter )value =2* Parameter ;endfunction

1 行目の value が引数を表し，twice が関数名，Parameter が返り値を示しています．引数や返り値は複数指定でき，その場合は変数名を「,」で区切ります．3 行目は関数の記述の終わりを示して
います．

234

関数を記述し，ファイルを保存するとコマンドウィンドウで関数を呼び出すことができるようになります．例えば以下のように記述します．
x=twice(a)実行結果は以下の通りです．
x =20

また，これまで一行ずつ記述してきましたが，複数の記述を一度に実行する方法もあります．まず，関数の記述の際に作成したような.m ファイルを作成し，エディタに目的である複数の記述を行います．ここでは「filename2.m」というファイルに，以下のこれまでに行った行列の初期化と計算を記述します．
filename2.m
a=10;
A=[10 ,10;20 ,20];
A*[1;2]
Answer=A *[1;2];

1 行目の記述はコメントです．MATLAB ではコメント行は先頭に「%」を記述します．記述後にファイルを保存し，コマンドウィンドウでファイル名「filename2.m」を記述し，実行すると記述された内容が一行ずつ実行されます．

7.7.4

その他のコマンドと関連リンク

ここではもっとも初歩的な行列演算を取り上げて解説しましたが，MATLAB では行列演算だけでなくさまざまな計算に利用できる関数が備えられています．MATLAB のその他のコマンドについては MathWorks 社公式サイトのドキュメンテーションセンター内の MATLAB 項目（https://jp.mathworks.com/help/matlab/functionlist.html）から学ぶことができます．
また，冒頭で紹介した MATLAB engine についても同項目内にページが存在します（https://jp.
mathworks.com/help/matlab/calling-matlab-engine-from-cpp-programs.html）．個 人 の 計 算機環境で MATLAB を用いて数値計算を行いたい場合，MATLAB と互換性を持った数値解析ソフ
トウェアの「GNU Octave」(https://www.gnu.org/software/octave/) が役に立ちます．GUI のデザインは MATLAB とは異なりますが，こちらはフリーウェアであり，C の標準ライブラリに含まれる関数の多くが実装されているため，C に慣れた人はこちらのほうが使いやすいかもしれません．ただし，MATLAB で実装されている関数のすべてが Octave にも実装されているわけではな
いという点に注意してください．

235

第8章

VMware Fusion

本章では仮想計算機の概要と，仮想化ソフトウェアのひとつである VMware Fusion の使い方を説明します．使い方の具体的な例として，macOS 上に仮想計算機を作成し，Linux ディストリ
ビューションのひとつである CentOS をインストールします．

8.1

仮想計算機の概要

仮想計算機 （Virtual Machine） とは，普段私たちが利用している計算機の上で，あたかも複数の計算機が動作しているかのような環境を作ることができる仕組みです．仮想計算機を利用することで，例えば計算機室の iMac の上で，図 8.1 のようにあたかも macOS のアプリケーションのひとつであるかのように Windows や Linux といった他の OS を起動して，利用できるようになります．

図 8.1: 仮想計算機の使用例
このとき，実計算機のことをホストマシン（Host Machine），その上で動作している仮想計算機

237

のことをゲストマシン（Guest Machine） といいます．同様に，ホストマシンの上で動作している OS のことをホスト OS（Host OS），ゲストマシンの上で動作している OS のことをゲスト OS（Guest OS）といいます．
仮想計算機を用いることで，次のようなことができるようになります．
• macOS が動作している計算機の上で仮想計算機を作成し，そこに Windows や Linux 系 OS を
インストールして利用できます．
• 仮想計算機には，自由に OS をインストールして利用できます．Windows や Linux の他にも，FreeBSD や OpenSolaris，Plan 9 のような OS を，ライセンスの範囲内で自由に動作させることができます．
• ゲスト OS の管理者権限を持つことができます．ゲスト OS 上でなら，OS の設定を変更した
り，管理者でないと実行できない作業をしたり，カーネルのデバッグなどの特殊な操作ができ
ます．

8.2

仮想計算機に OS をインストールする手順

本節では VMware Fusion を用いて仮想計算機に OS をインストールする手順を説明します．例
として Linux のディストリビューションのひとつである CentOS をインストールします．仮想計算機を作る手順は次からなります．
1. インストールする OS のディスクイメージを用意する
2. ゲストマシンを作る
3. OS をインストールする
本節ではこれに従って説明します．

8.2.1

インストールする OS のディスクイメージを用意する

ゲストマシン上にインストールするための OS のインストールディスクか，そのディスクイメー
ジを用意する必要があります．情報科学類の学生ならば，学類から Windows のディスクイメージとライセンスキーを取得できます．あるいは，Linux などの自由に使える OS のディスクイメージをインターネット経由でダウンロードしてくることもできます．
ディスクイメージを手に入れたら，自分のホームディレクトリに保存しておきましょう．例えば
本節で説明に用いる CentOS のディスクイメージは，http://www.centos.org/download/ から入手できます．

8.2.2

ゲストマシンを作る

初めて仮想計算機を使うときは，まずゲストマシンを作成します．VMware Fusion を図 8.2 に示すアイコンをクリックして起動すると，図 8.3 のような画面が表示されます．
238

図 8.2: VMware Fusion のアイコン

図 8.3: VMware Fusion の初期画面
ゲストマシンを新しく作成するときは，図 8.3 から ディスクまたはイメージからインストール を選択し

ます．ディスクイメージを選択する画面（図 8.4）に移るので，インストールしたい OS のディス

239

クイメージを指定し， 続ける をクリックします．


図 8.4: CentOS のインストール画面
次に，図 8.5 のように，仮想マシンのブートで使用するファームウェア設定を尋ねられます．入力が終わったら 続ける をクリックします．




240

図 8.5: ゲスト OS のアカウントとパスワードの設定
最後に 8.6 へ移ります．ここで 終了 をクリックすることで，図 8.7 のように仮想マシンを保存す

る場所を指定して終了します．また 設定のカスタマイズ をクリックすることで，図 8.8 に示す画面へ移り，メモリのサイズやディスク容量などの設定ができます．

241

図 8.6: 仮想マシン作成の完了

図 8.7: 仮想マシンの保存先の指定

242

図 8.8: 仮想マシンの詳細な設定
基本的には，このアシスタントの指示通りに設定していけば，問題ありません．設定項目は OS
ごとに違いますので，ここでは特に気をつけるべき点を示します．慣れないうちは，これに従ってください．
• 基本的には，初期設定のままで問題ありません．
• CPU の個数は特別な理由が無ければ 1 とします．
• メモリの割り当ては 1024MB 程度を上限に，基本的にはアシスタントの提案に従いましょう．
• 仮想ハードディスクは，欲張らずに必要最低限の量を割り当てましょう．学生は，使用できる
実ディスク領域に制限が設けられています．これを越えて割り当てることはできません1）．
• ネットワークの種類は， インターネット共有 を選択します．


以上で仮想マシンの作成が完了します．この仮想マシンを起動すると，ゲスト OS のインストー
ルが開始されます．
8.2.2.1

OS をインストールする

作成した仮想マシンを起動すると OS のインストールが開始します．VMware Fusion を起動した直後に現れる図 8.9 の画面から，作成した仮想マシンをクリックすることで起動できます．なおOS のインストールは自動的に行われます．

1） この制限を quota といいます．特に必要な時は，担当の技術職員の方に申請すると制限を変更してもらうことがで
きます．

243

図 8.9: 仮想マシンの起動以上で仮想マシンが作成され，ゲスト OS がインストールされました．

8.3

ゲスト OS を利用する方法

本節ではインストールしたゲスト OS を利用する方法を説明します．起動と終了，フルスクリー
ンモード，スナップショットなど，VMware Fusion を使ううえで必要な機能を取り上げます．

8.3.1

ゲストマシンの起動と終了

作成したゲストマシンを利用するには，起動と終了の仕方を知る必要があります．仮想計算機はソフトウェア的に再現された計算機ですから，使い始める前には仮想的に電源を入れ，使い終わったら仮想的に電源を切る必要があります．
VMware Fusion を起動すると図 8.10（再掲）のような画面が表示されるので，左の一覧から起動
したい仮想マシンを選択すれば，ゲストマシンの電源が入って，ゲスト OS が起動します．

244

図 8.10: 仮想マシンの起動
一方ゲストマシンの電源を切る場合は，普段実計算機を利用しているときと同じように，Windows ならスタートメニューから終了を選べば，Linux なら shutdown -h now と打てば，ゲスト
OS が終了し，ゲストマシンの電源も自動的に切れます．もしゲスト OS がフリーズするなどして通常の手段で終了できなくなったときは，アプリケーションメニューから 仮想マシン シャットダウン
をクリックすれば，強制的にゲストマシンの電源を切ることができます2）．

8.3.2

フルスクリーンモード

画面表示をフルスクリーンモードにすることで，ゲスト OS に画面を占有させることができます．フルスクリーンモードにするには，メニューから 表示
リーンモードを解除するには， ctrl +


8.3.3



フルスクリーン を選択します．フルスクを同時に押します．

スナップショット

仮想計算機の便利な機能のひとつとして，ゲストマシンのある瞬間の状態を保存して，あとでその時の状態を復元できるという仕組みがあります．この時，保存した状態のことを スナップショット（Snapshot）と呼びます．
定期的にスナップショットをとっておけば，たとえば操作ミスや悪意のあるソフトウェアを実行するなどの原因でゲスト OS が起動しなくなってしまったような場合でも，前回スナップショットをとったときの状態まで簡単に巻き戻すことができます．
スナップショットをとるには，メニューから 仮想マシン

スナップショット

スナップショットをとる を選択します．その後表示されるウィンドウにスナップショットの名前と説明を記入して OK を押

すと，スナップショットの作成が始まります．この作業にはすこし時間がかかります．
2） シャットダウンボタンを押すと，実マシンで電源ボタンを押した時と同じ動作をします．仮想ハードディスク上のデータが破損する可能性があるため，なるべく各 OS の正規の終了手段をとるようにしましょう．

245

過去にとったスナップショットの状態へ仮想マシンを復元するには，メニューから 仮想マシン
スナップショットに復元 を選択すると，スナップショットの復元が始まります．復元

スナップショット

が完了すると，ゲストマシンはスナップショットをとったときと同じ状態に戻ります．このとき，スナップショットをとってからあとに加えた変更や，保存したファイルは消えてしまうので注意し
ましょう．

8.4

VMware Fusion のより高度な機能

本節では VMware Fusion を使って仮想マシンを扱ううえで便利な機能を紹介します．ホスト OSとゲスト OS の間でファイルをやりとりするための共有フォルダ機能やホスト OS の CD/DVD ド
ライブにアクセスする機能，ゲスト OS をデバッグする方法について取り上げます．

8.4.1

共有フォルダを用いてファイルをやりとりする

ホスト OS にあるファイルをゲストマシンにコピーしたり，あるいはその逆を行いたい場合，共有フォルダ を使います．
メニューから 仮想マシン

共有

共有 設定… をクリックし， 共有フォルダ の項目を開きます．図 8.11


の画面から， [ ,]+を押して，ホスト OS とゲスト OS の間で共有したいフォルダを選択する

ことで，設定が完了します．なお共有フォルダに設定したファイルは，ゲスト OS 内ではデスクトップに表示されます．共有フォルダの利用には VMware Tools が必要です． 仮想マシン
VMware Tools のインストール をクリックしてインストーラを仮想マシンに接続し，インストールを行ってください．

図 8.11: 共有フォルダの設定

246

8.4.2

ゲスト OS からホストマシンの CD/DVD ドライブを利用する

ゲストマシンからホストマシンに入った CD-ROM などメディアにアクセスできます．メニューから 仮想マシン

8.4.3

CD/DVD をクリックし，画面に従って設定すれば，利用できるようになります．

VMware を利用したゲスト OS のデバッグ

VMware を利用すると，ゲストとして動作している OS そのもの（カーネル）にデバッガを接続
してデバッグができるようになります．ここでは Linux マシン上でゲストの Linux カーネルをデバッグする場合を例に，その方法を簡単に紹介します．
8.4.3.1

vmlinux の準備

まず最初に，デバッグシンボルが含まれた Linux カーネルの実行ファイルを準備する必要があり
ます．ディストリビューションに付属のカーネルを利用している場合は，適宜用意しておいてくだ
さい．自分でカーネルをコンパイルする場合は，コンパイルオプションとして，Kernel hacking -> Compile the kernel with debug infoの項目を有効にします．コンパイルしたあと，カーネルのソースディレクトリ直下にある
vmlinux が目的のファイルです．vmlinux ができ上がったら，ホストマシン上の適当なディレクト
リにコピーしておきます．
8.4.3.2

VMware の設定

つぎに，VMware の設定を変更します．まずデバッグを行いたいゲストマシンが保存されたディレクトリを開きます．そして"ゲストマシン名.vmx"というファイルを開いて，次の一行を追記します．
debugStub.listen.guest32 = "TRUE"
これで，次にゲストマシンを起動したときから，デバッガからの接続を受け入れるようになります．起動後に netstat などで，8832 番のポートが開かれていることを確認します．
8.4.3.3

デバッガでの接続

それでは実際にゲストマシンへのアタッチを行います．

247

gdb でのアタッチ$ gdb(gdb) file /path/to/your/vmlinux(gdb) target remote localhost:8832
成功するとゲスト OS の実行が停止し，アタッチが完了します．適当にブレークポイントなどを仕掛けて continue してみましょう．デバッグの仕方は，通常のプログラムに対して行うのとほぼ
同じです．

8.5

困ったときは

8.5.1

フルスクリーンから戻れない

ctrl +


8.5.2



を同時に押します．

ゲスト OS に Ctrl-Alt-Del の入力を求められたメニューから 仮想マシン Ctrl-Alt-Del の送信 をクリックします．このほかにも，ホスト OS が横取りしてしまってゲスト上で入力できないようなキーの組み合わせをいくつか選択できます．

248

第9章

9.1

ネットワーク

学類計算機資源の利用

COINS では実習に使う iMac を，ネットワークを経由して自宅等の外部の計算機からアクセスできるように設定しています．本章では，この接続方法について説明します．

9.1.1

利用可能な計算機

COINS では学生がリモートからログインして利用可能なマシンとして以下のようなものが用意されています．
表 9.1: 利用可能な計算機一覧
マシン名

種類

場所

aloe1 〜 aloe96

iMac

3C113

crocus1 〜 crocus40

iMac

3C205

viola1 〜 viola14

ネットワークサーバ https サーバ (viola5)， メール送信サーバ (viola6) など

www

WWW サーバ

情報科学類公式 HP など

これらのマシンは COINS ネットワークの外部からでも，たとえば自宅からでも利用でき
ま す．外 部 か ら ア ク セ ス す る 際 に は，た と え ば aloe15 と い う マ シ ン 名 の iMac マ シ ン 名 は“aloe15.coins.tsukuba.ac.jp” というホスト名1）を用いる必要があります．

9.1.2

学外からのリモートログインに関しての注意

COINS システムは学外からは公開鍵認証でのみアクセス出来ます．そのため，接続を試みる
前に自身の公開鍵をホームディレクトリ下の.ssh ディレクトリ内 authorized_keys ファイルに登録しておく必要があります．登録の際は公開鍵を USB メモリに入れて持ち運ぶか，メールで自分宛てに送ると良いでしょう．初めて接続するホストの際には必ずホストのフィンガープリン
トを COINS システムの主な SSH サーバの公開鍵のハッシュ値 2） と同じであるかチェックして，そのホストが真正なものであるか確認してください．このような確認をしなかった場合，
Man-in-the-Middle 攻撃等を受けていることに気づかず接続してしまい攻撃者が自由にアカウント
1） 完全修飾ドメイン名（FQDN, Full Qualified Domain Name）とも言います．
2） https://www.coins.tsukuba.ac.jp/ce/pukiwiki.php?coins%A5%B7%A5%B9%A5%C6%A5%E0%A4%CE%BC%E7%A4%
CASSH%A5%B5%A1%BC%A5%D0%A4%CE%B8%F8%B3%AB%B8%B0%A4%CE%A5%CF%A5%C3%A5%B7%A5%E5%C3%CD

249

にアクセスできてしまう可能性があります．また，学外から公開鍵認証を使用せずにログインする
方法として，VPN を使用する方法もあります．
詳しい手順などの情報は COINS の Wiki を参照してください．https://www.coins.tsukuba.
ac.jp/ce/pukiwiki.php?SSH%A5%A2%A5%AF%A5%BB%A5%B99.1.3

学類計算機へのリモートログイン

iMac マシンを使う際にはログインするということが必要でした．このときは直接マシンの前に座って，そのマシンのキーボードからユーザ名やパスワードを入力しました．
一方で，目の前にないコンピュータにネットワーク経由でログインするということが可能です．
これをリモートログインといいます．
リモートログインにおいても通常のログイン方法と同様に，ユーザ名とパスワード等で自分がユーザで間違いないことを接続先のコンピュータに伝える必要があります．しかしこれらの機密情報が，ネットワーク上にそのままの形3）でながれてしまうと，盗聴されたときにパスワード等の認証情報が盗まれてしまう可能性があります．
そのためこれを防ぎ，リモートログインを行う際のセキュリティを確保するために SSH（Secure
SHell）というプロトコルが使用されています．これを用いることで暗号化された通信路が利用でき，その上で安全に機密情報をやりとりできます．
iMac はこの SSH を用いて COINS ネットワークの内部や外部からリモートログインして操作できます． ここではそれぞれ Windows, macOS/Linux から COINS のマシンにログインする手順を解説します．
9.1.3.1

Windows からの SSH 接続

Windows 8.1 以前の Windows には標準で SSH クライアントソフトウェアが入っていないので，Windows8.1 以前の Windows マシンから SSH 接続する場合はこれをインストールする必要があります．Windows 10 では ssh コマンドが標準で使えますが，別途 SSH クライアントをインストール
して使用できます．
ここでは COINS の Windows マシンに標準でインストールされている Tera Term 4） というソフ
トウェアを例にして Windows での SSH 接続の方法について説明します．このほかにもフリーウェ
アとして，PuTTY 5），Poderosa6）などの優れたソフトウェアがありますので，ぜひ試してみてください．

3） クリアテキストといいます．
4） http://sourceforge.jp/projects/ttssh2/
5） PuTTY: A Free Telnet/SSH Client, http://www.chiark.greenend.org.uk/~sgtatham/putty/6） http://ja.poderosa.org/

250

9.1.3.2

Tera Term の起動

Tera Term を起動するには，スタートメニューから「Tera Term」を検索して実行してください．
すると図 9.1 のようなウィンドウが表示されます．

図 9.1: Tera Term のウィンドウ
この「Tera Term: 新しい接続」ウィンドウで SSH 接続のための設定をします．これが表示されていない場合は， ファイル新しい接続（N）を選択してください．

COINS のマシンに接続するために，[ホスト] には接続先の計算機のホスト名または IP アドレスを入力します．また [サービス] として「SSH」, [TCP ポート] として「22」, [SSH バージョン] として「SSH2」をそれぞれ選択・入力してください（図 9.2）．

図 9.2: 新規接続ウィンドウ



OK


ボタンを押すと，初めて接続するホストであるなどの場合，図 9.3 のようなウィンドウが表示されます．ここでは「本当にこのホストに接続してよいのか」と「次からこの警告を表示しない
ように，このホストの情報を記録するか」をユーザに尋ねています．

251

図 9.3: セキュリティ警告
前者は，ここで接続しようとしている “viola5.coins.tsukuba.ac.jp"という名前のホストが本当に接続したい COINS のマシンかどうか，ウィンドウ中央の「サーバ側のホスト鍵指紋」を見て確認することが求められています．中間者攻撃7）を受けた場合，「接続したいホスト名」と「実際に接続しにいくホスト」が異なる場合があります．この時，誤ってこの偽のホストにパスワードなどを送信してしまうと，不正にアカウント情報を利用されるおそれがあります． これを防ぐためにホ
スト鍵指紋（フィンガープリント）を見て，本当にそのホストが指定したホストであるかを確認します．aloe グループなどの iMac のフィンガープリントは，そのホストに対して直接以下のコマンドを実行することで簡単に調べることができます8）．一度確認してみるとよいでしょう．
実行例
aloe67 :~ s9991399$ ssh - keygen -l -f /etc/ssh/ ssh_host_ecdsa_key .pub
256 SHA256 :5 XVlugJ+ bVGJ5FnTLG5h5fauMlZ2u8P62iH0 / nm91KU no comment (ECDSA)

後者は，このフィンガープリントを本物であるとして記録するかどうかを判断します．記録する
場合，このホスト名とフィンガープリントの対応が known_hosts リストに保存され，この組み合
わせについてユーザに問い合わせを今後行いません．これにより，次の接続の時からこの「セキュリティ警告」のウィンドウが表示されなくなります9）．逆に先ほどあげた「偽のホスト」についてこれを行ってしまうと，次から確認できなくなるため，間違いに気づきにくいという欠点もあります．[このホストを known_hosts リストに追加する] チェックボックスのチェックは慎重に行ってください．それぞれ確認/設定を終えたら， 続行 ボタンをクリックしてください．
7） 暗号通信を盗聴したり介入したりする手法の一つ
8） 2021 年 3 月時点での実行例につき，変更される可能性があります．
9） 例外として，すでに保存している組み合わせに反する場合は再度表示されます．これは，たとえばマシンが変わった
場合や中間者攻撃が行われた場合に起こります．

252

この次の画面（図 9.4）で，実際に接続に必要な認証情報を入力します．ここでは [ユーザ名] に
COINS のユーザ名，[パスフレーズ] にパスワードを入力します．パスワードによる認証ではなく，
公開鍵認証を利用している場合は [RSA/DSA/ECDSA/ED25519 鍵を使う] ラジオボタンをクリッ
クして [秘密鍵] を指定してください．入力し終えたら OK ボタンをクリックすることで，この情

報を用いて接続します．

図 9.4: 認証情報の入力
以上の手続きにより COINS のマシンにリモートログインできます．一度ログインすると，実際にそのマシンの前に座って端末を立ち上げて使用するのと同様に作業できます．また COINS では，ユーザのファイルや設定などの情報は全てのコンピュータで同期されているため，基本的にどの iMac にログインしても同様の作業ができます．
Tera Term でリモートログインできるようになったら，環境を好みに合わせて変更すると良いでしょう．端末の背景色や文字色などの変更から，文字コードや改行コードなど（図 9.5）の変更までさまざまにカスタマイズできます．

図 9.5: Tera Term の設定

253

9.1.3.3

Windows 10/macOS/Linux からの SSH 接続

Windows 10 と macOS と Linux には標準で SSH クライアントソフトウェアが入っています．これはターミナルからコマンドとして使うことができます．本小節ではこのコマンドを使ったログイ
ン方法について解説します．
それぞれ Windows 10 では PowerShell やコマンドプロンプト，macOS では iTerm や X11 など，Linux ではターミナルを開き，以下のように入力します．ここではユーザ名として"sxxxxxxx"を用いていますが，適宜自分のユーザ名に読み替えてください．詳細は 2.14.1 を参照してください．
実行例[coins - tarou@mypc ~]$ ssh aloe68.coins.tsukuba.ac.jp -l s9912345
The authenticity of host ’aloe68.coins. tsukuba .ac.jp (130.158.230.68) ’ can ’t beestablished .
ECDSA key fingerprint is SHA256 :9 EK8o9wAtF0YvIt63IplhghTDktQmM5BF7GgUhER5Hw .
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[ fingerprint ])? yes
Warning : Permanently added ’aloe68 .coins. tsukuba .ac.jp ’ (ECDSA) to the list of
known hosts.
s9912345@aloe68 .coins. tsukuba .ac.jp ’s password :パ ス ワー ド を こ こ に 入 力 し て く だ さ い[ s9912345@aloe68 ~]$ユーザ名とパスワードは COINS で使っているものを入力します．ここでは-l オプションをつけることでユーザ名を指定してログインしています．COINS 内部のマシンから同じく COINS 内部のマシンにリモートログインする場合は不要な場合があります．

9.1.4

大規模計算について

学類の計算機資源を用いて大規模計算を行う場合は，「情報科学類教育用計算機を利用した大規10）
模計算に関する規定」を確認したうえで規定に従った利用を心がけてください．

9.2

無線 LAN サービス

COINS では，計算機室内に無線 LAN アクセスポイントを設置しています．所定の設定をすることで，情報科学類の学生は持ち込んだノートパソコンを利用して，インターネットや COINS ネッ
トワークにアクセスできます．本節では利用方法を説明します．

9.2.1

無線 LAN の利用可能な場所

情報科学類の COINS ネットワークにアクセスするための無線 LAN は，主に第 3 エリア A, C 棟など情報科学類の計算機室の周辺で使用可能です．これを用いて第 3 エリア内において無線 LAN
経由でインターネットにアクセスしたり，COINS 内の計算機にログインしたりできます．
10） 情報科学類コンピューティング環境（http://www.coins.tsukuba.ac.jp/ce/）より確認できます．

254

9.2.2

必要な機器

無線 LAN を利用するためには，IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n といった通信方式に対応した一般的な無線 LAN アダプタと，それに対応したノートパソコン，オ
ペレーティングシステムが必要です．また，接続にあたって IEEE 802.1X を用いて利用者認証を行っているため，これをサポートしている OS を用いる必要があります．Windows（WindowsXP以降）や macOS は標準でこれに対応しています．

9.2.3

無線 LAN 利用上の注意

無線 LAN は電波を利用して通信しますので，電波の内容が傍受される可能性があります．そのため，無線 LAN 上の通信ではできるだけ機密情報を流さないように気をつけるとともに，暗号化することをおすすめします．たとえば SSH のポート転送を利用したり，VPN プロトコルを利用す
るなどといった方法が考えられます．

9.2.4

無線 LAN の利用

無線 LAN の具体的な利用・設定方法については COINS Web ページにある「情報科学類コンピューティング環境11）」内の「その他サービス」より，「無線 LAN 接続」の項目を参照してくだ
さい．

9.2.5

macOS 環境からの無線 LAN の利用方法

上記ホームページ上には Windows 環境での無線 LAN の設定方法しか載っていないため，本節では macOS 環境における無線 LAN の利用方法について説明します．
まず，環境設定の画面（図 9.6）から無線 LAN をセットアップします．環境設定の画面から「ネットワーク」を選択すると図 9.7 が表示されます．
準備ができたら設定をします．もし，この画面とは異なり左の欄に Wi-Fi 表示されていなければ，左の欄の下部にある+をクリックすると Wi-Fi を追加できます．
まず，左の欄の Wi-Fi を選択します．右下の 詳細 をクリックします．すると図 9.8 のような画

面が表示されます．上部のタブから Wi-Fi を選びます．次に使ったことのあるネットワークのすぐ下にある+をクリックし，新たにネットワークを追加する画面を表示します（図 9.9）．ここではAP-C113AN に繋げることとするため，この画面で「ネットワーク名」を"AP-C113AN"とし，「セキュリティ」で"WPA2 エンタープライズ"を設定します（図 9.9）次にモードを自動のままにし，
COINS の認証を使うため COINS のユーザ名とパスワードを入力します（図 9.10）

11） https://www.coins.tsukuba.ac.jp/ce/255図 9.7: ネットワークの設定画面

図 9.6: 環境設定の画面

256

図 9.9: セキュリティを WPA2 エンタープラ

図 9.8: ネットワークの追加

イズに設定

図 9.10: ユーザ名，パスワードの記入

257

9.3

VPN サービスの利用

COINS では，学外から COINS のネットワークに接続するために VPN サービスを提供しています．VPN とは Virtual Private Network（仮想私設網）の略で，インターネットなどの公衆網に暗号化されたトンネルセッションを張り，仮想的な専用線としてネットワークを利用する方式のこと
です．
COINS に VPN 接続すると，COINS の LAN 内にコンピュータを直接接続している状態とほとん
ど同じようにネットワークを利用でき，学内からしかアクセスできない Web ページにアクセスできるようになります．情報科学類の学生は，学類のアカウントを VPN サービスに利用できるので計算機の環境が整えばすぐにこのサービスを利用できます．
VPN プロトコル（通信の方式）には PPTP や L2TP/IPsec, SoftEther Protocol, SOCKS などがありますが，COINS では L2TP/IPsec による VPN サービスを提供しています．
COINS に VPN 接続すると，COINS のネットワーク内部に直接いるかのようにネットワークを利用できます．CiNii（https://ci.nii.ac.jp）で論文を読むなど，学内からアクセスするとより多くの事ができる Web サイトに自宅から VPN 経由でアクセスできるようになります．

9.3.1

Windows 環境における VPN 接続のための設定

ここでは Windows 環境での VPN アクセスの方法を Windows 10 を例に解説します．
表 9.2: VPN の設定項目
Windows（ビルトイン）
VPN プロバイダー
vpn.coins.tsukuba.ac.jp
サーバ名
任意の名称
接続名
ユーザー名とパスワード
サインイン情報の種類
COINS アカウントのユーザ名
ユーザ名
COINS アカウントのパスワード
パスワード
事前共有キーを使った
L2TP/IPsec
VPN の種類
事前共有キーhttps://www.coins.tsukuba.ac.jp/ce/ の「VPN 接続」を参照
Windows 10 で VPN 接続をするためにはまず接続先を作成する必要があります．スタートメ
ニューから「設定（歯車のアイコン）」をクリックし，出てきたメニューの中から「ネットワークとインターネット」をクリックします（図 9.11）．続いて出てきた一覧の中から「VPN」をクリックします（図 9.12）．
すると，VPN 接続に必要な情報の入力が求められます（図 9.13）．ここには表 9.2 に示した設定
情報を入力してください．また「接続名」にはわかりやすい名前（たとえば「COINS」など）を入力してください．全ての項目の入力が終わったら 作成 をクリックしてください．


258



図 9.11: ネットワークと共有センター
9.3.1.1

VPN 接続接続先の作成と同様の手順でスタートメニューの「設定（歯車アイコン）」「 ネットワークとイ
ンターネット」の順にクリックします．そこから先ほど作成した COINS（図 9.14）を選択し，「接続」をクリックすると COINS VPN に接続できます．うまく接続できない場合はサーバ名やパス
ワード，事前共有キーなどを見直してください．
どうしても接続できない場合は，coins-admin@coins.tsukuba.ac.jp へ問い合わせてください．
接続に成功した場合は，画面の右下に図 9.15 のような通知メッセージが表示されます．VPN に接続中であれば，あなたのコンピュータがまるで COINS のネットワークに直接接続されているのと同等の状態で作業できます．また COINS VPN サーバとの間での通信は 128bit で暗号化されていますので，COINS のネットワークと自宅の間のやりとりを安全に行うことができます．
9.3.1.2

VPN 接続のデフォルトゲートウェイ化とその解除

Windows の VPN 接続では，デフォルトの設定では VPN 接続が確立した場合その接続に使用されている仮想的な WAN アダプタのネットワークがデフォルトゲートウェイとなるようにルーティ
ングテーブルが自動的に書き換えられます．
このため COINS VPN に接続した状態でインターネットにアクセスすると，一度 COINS のサーバを経由して外につながることになります．インターネット上の Web ページにはクライアントの259

図 9.12: 接続またはネットワークのセットアップ
IP アドレスを調べることができるページがありますので，試してみるとよいでしょう（診断くん
http://taruo.net/e/ など）．
一方で VPN 側がデフォルトゲートウェイになっている状態で Web サイトなどを見ようとすると，全てのパケットが筑波大学内のサーバを経由することになってしまいます．このため通信速度が若干低下してしまいます．
必要なときは VPN 側にアクセスし，それ以外の場合は通常の接続を用いる，といったことをしたい場合はルーティングテーブルが書き換わらないように設定する必要があります．ここではその手順を説明します．
先ほどの VPN 接続のリストの下にある「アダプタのオプションを変更する」を選択してください．その中の COINS の VPN 接続の項目を右クリックしてメニューの中から「プロパティ」をクリックしてください．
「（接続先の名前）のプロパティ」というウィンドウが表示されたら，「ネットワーク」タブをクリックして，その中の「インターネットプロトコル バージョン 4（TCP/IPv4）」
をダブルクリックします．
新しく現れたウィンドウの 詳細設定 をクリックすると，図 9.16 のようなウィンドウが表示され

るので，その中の「リモートネットワークでデフォルトゲートウェイを使う」のチェックボックスをオフにしましょう． これにより次回接続時からデフォルトゲートウェイが書き換わらないようになります．

260

261

図 9.13: 接続先の設定

図 9.14: VPN 接続情報の入力

図 9.16: デフォルトゲートウェイの設定解除

図 9.15: VPN 接続時の表示

262

macOS における VPN 接続

9.3.2

本小節では VPN を macOS で利用する方法を紹介します．
接続方法

9.3.2.1

まず，ネットワークの設定画面を開きます（図 9.17）．ここに，VPN インターフェースを新しく作成・追加します．欄の下にある [ /]+を押すと図 9.18 が表示されます．この画面で「インターフェース」から「VPN」，「VPN タイプ」から「L2TP over IPsec」を選び，「サービス名」は任意の名前を付け， 作成 を押します．これで VPN のインターフェースが作成されました．


図 9.18: VPN インターフェースの作成

図 9.17: ネットワーク設定画面

次に VPN に新しい接続を設定します．先ほど作成したインターフェースを選択し，右の欄の構成のプルダウンメニューから「構成を追加」を選択します．これを選んだ段階で図 9.19 のポップアップが表示されます．ここに作成する構成の名前を任意につけ（例では coins-vpn としました）， 作成 を押します．これにより構成のメニューに作成した構成が出現します．この状


態で，接続するために必要な情報を入力します（図 9.20）．ここで入力するのはサーバアドレス（vpn.coins.tsukuba.ac.jp） とアカウント名，事前共有キーです．
VPN 接続は認証を必要としますので，認証の設定をします．アカウント名入力欄の下にある
認証設定




をクリックすると認証方法が問われます（図 9.21）．まず，パスワードにチェックを入れ

COINS アカウントのパスワードを入力します．続いて，「共有シークレット」を選択し，事前共有
キーを入力します．また，「詳細」ボタンを押し，「オプション」タブの「セッションオプション」で「すべてのトラフィックを VPN 経由で送信」にチェックを入れます．これで接続準備は完了です．
では，つないでみましょう．認証設定の下の 接続 を押して接続を開始してください．接続が完了すると図 9.22 のようになります．また，先ほどの場所にある 接続解除 をクリックすると接続を

切ることができます．

263

9.3.2.2

図 9.19: VPN の構成の作成

図 9.20: VPN 接続のための情報入力

図 9.21: パスワード入力

図 9.22: VPN 接続完了

うまく接続できない場合

前述の設定だけではうまく設定できない場合があります．データを分割する際の個々のサイズ（MTU; Maximum Transmission Unit）の 設定が大きすぎると，うまく接続できないことがあるので，その場合は以下のようなコマンドで MTU の値を小さくしましょう．
$ sudo ifconfig ppp0 mtu 1300

264

第 10 章困ったとき

本章では，情報科学類計算機システムを利用する際にありがちな，困ったときの対処方法を説明
します．

10.1

バックスラッシュを入力する

バックスラッシュ（\）を入力するには， Option と ě を同時に押します．








また，入力の設定を変更することで， Y を押すと \ が入力できるようになります．この手引








きの 1.5.5 を参照してください．

10.2

プロセスの強制終了

アプリケーションを使っていると途中で反応しなくなってしまうことがあります．そのまま待っていれば反応が戻ってくることもあるのですが，強制的にアプリケーションを終了しないとどうにもならないこともあります．その場合には，プロセスを強制終了します．
プロセスを強制終了するためには，3 つ方法があります．1 つ目は，


+ alt + esc を同時に押








して，強制終了するアプリケーションを選択する方法です．キーを押すと図 10.1 のダイアログが出てくるので，強制終了したいアプリケーションを選択します．

265

図 10.1: アプリケーションの強制終了画面
2 つ目は，図 10.2 のように macOS の Dock から強制終了したいアプリケーションを右クリック
して，メニューから強制終了をクリックします．

266

図 10.2: Dock からの強制終了
3 つ目は，シェルからプロセスを終了させる方法です．この方法では，まず，ps コマンドを使ってプロセス番号を調べます．次に，プロセスを終了させるための kill コマンドを使って，指定したプロセス番号を kill します．
Firefox を kill する$ ps aux | grep firefox
tebiki01
839
0.0 1.8
632144 75172?? S
5:36 PM
0:15.93/ Applications / Firefox .app/ Contents /MacOS/firefox -bin -psn_0_249917
tebiki01896
0.0 0.0 2425708
284 s002 R+
5:41 PM
0:00.00
grep firefox$ kill 839

10.3

macOS 環境が固まらないようにするためにmacOS 環境が固まる事例が増えています．原因としては以下が考えられます．
1. アプリケーションが作成するキャッシュが増えすぎている．
2. ディスク使用量の上限に達している．

267

1 については， ~/Library/Caches の下にあるファイルを削除してください．2 に関しては，ファイルを削除してディスク使用量を減らしてください．
なお，固まった場合はすぐには電源を切らずに，まずは技術職員に相談してください．

10.4

プリントアウトができない場合

プリントアウトしようとしてもできない場合があります．理由としては，以下のようなことが考えられます．
• プリンタの用紙がない• プリンタのトナーがない• プリンタの印刷上限に達している
プリンタの用紙やトナーがない場合には， coins-trouble@coins.tsukuba.ac.jp まで，プリンタ
名を明記して連絡をしてください．また，プリンタの印刷枚数は上限が決まっており，それを超えるとプリントアウトができなくなります．印刷の方法や印刷枚数の確認については，1.8 節を参照
してください．

10.5

Web ページ公開について

Web ペ ー ジ は ˜/public_html/htdocs に フ ァ イ ル を 置 く と HTTP で 公 開 で き，˜/public_html/secure_htdocs に フ ァ イ ル を 置 く と HTTPS で 公 開 で き ま す．デ ィ レ ク ト
リがない場合は作成してください．URL は， http://www.coins.tsukuba.ac.jp/~（ユーザ名）とhttps://www.coins.tsukuba.ac.jp/~（ユーザ名）です．詳しい情報は，情報科学類コンピュー
ティング環境（http://www.coins.tsukuba.ac.jp/ce/）を見てください．

10.6

COINS のシステムがダウンしている場合

COINS のシステムにログインしようとしても，どのマシンにもログインできない場合，COINSのシステムがダウンしている可能性があります．
COINS のシステムがダウンしている場合，平日の技術職員室（3E108）が空いている時間帯であればそちらへ直接問い合わせてください．ただし，夜間や休日など，技術職員室が空いていない時
間帯であれば，coins-trouble@cs.tsukuba.ac.jp までメールで問い合わせてください．

10.7

Firefox・Thunderbird が起動できなくなった場合

Firefox や Thunderbird は，アプリケーションを強制終了した場合，次に起動したときに以下のエラーが出て起動できないことがあります．
268

すでに別の Firefox を開いています。同時に複数の Firefox を開くことはできません。
この場合，ロックファイルが残ったままになっていて起動できないので，以下のようにしてロックファイルを削除します．
FireFox が起動できなくなった場合$ rm ~/ Library / Application * Support / Firefox / Profiles /*/. parentlock

Thunderbird が起動できなくなった場合$ rm ~/ Library / Thunderbird / Profiles /*/. parentlock

詳しくは，http://www.coins.tsukuba.ac.jp/ce/ の「よくある質問」を参照してください．

10.8

COINS 宛のメールを他のメールアドレスに転送したい場合

COINS のメールを普段使っていないと，大事なメールが来たときに見落としてしまう可能性があります．そこで，普段自分が使っている携帯電話やパソコンのメールアドレスに転送するようにしましょう．
転送の設定をするには，ホームディレクトリのすぐ下に.forward ファイルを作成して，その中に転送先のメールアドレスを書きます．
例えば，自分が使っているメールアドレスが「s9912345@coins.tsukuba.ac.jp」，転送先のメール
アドレスを「hoge@example.com」としたとき，転送先のメールアドレスに転送する場合は，コロンか改行で区切り，.forward
hoge@example.comと書きます．しかし，この方法だと来たメールが全て書かれたメールアドレスに送られるだけ
で，元の COINS のメールボックスにはメールが残りません．ですので，ローカルアカウントにも転送するようにしましょう．
.forward\s9912345, hoge@example.comと書くと元のメールボックスに保存したまま転送できます．
このように.forward ファイルはアドレスを記述するだけの単純なものなのですが，注意しないとメールが届かないことやメールがループしてサーバーに負担がかかるという事が発生します．このような転送の設定をするときは，記述されたアドレスが全て疎通可能なものか，メールがループす269

るような設定になってないか1）に注意を払ったうえ，必ずテストメールを送って正常に動いているかを必ず確認しましょう．

10.9

ディスククォータに関する警告メールが来てしまった

COINS システムではディスクをみんなで共有しているため，ある特定の人だけディスク容量を使ってしまわないようにディスククォータと呼ばれる使用量制限がかかっています．COINS シス
テムでは，一人あたり 5GByte に設定しています．
COINS システムを長く使っていると，ディスククォータの制限に引っかかってしまい以下のよ
うな警告メールが来てしまうことがあります．もし，このようなメールが来た場合には 10.9.1 節を参考にして必要のないファイルを削除してください．削除せずに放置しておくと，ログインできな
くなることもあるので注意してください．
また，主専攻実験などでディスク使用量が多くなってしまった場合には，担当の先生や技術職員に相談してください．

1） 例えばアドレス A とアドレス B はお互い相手に転送する設定になっていて無限にメールが転送されること．

270

ディスククォータの警告メール（2018 年度以前のもの）
タイトル：[coins-quota] 注意：ディスク容量の制限に達しようとしてますs9912345 さん
こんにちは．coins-admin スタッフです．
あなたのホームディレクトリのディスク容量が制限に達しそうになっています．
必要ないファイルを削除して空き容量を確保してください．
現在，あなたのホームディレクトリは 3338 MByte 使用しています．
ディスク容量の制限は 3072 MByte となっており 108 % にあたります．
制限に達して一定以上書きこむと，それ以上書き込みができなくなります．
最悪の場合，ログインできなくなるのでご注意ください．
空き容量の確保の仕方については，こちらのページをご確認ください．
http://www.coins.tsukuba.ac.jp/ce/quota.html
もし，どうすれば良いかわからない場合は coins-admin@coins.tsukuba.ac.jp までご連絡ください．
このメールは s9912345 宛に自動送信されています．
お心当たりの無い方は，上記 coins-admin のアドレスまでご連絡いただければ幸いです．

10.9.1

必要のないファイルを調査，削除する

最初にどのフォルダがどれだけの容量を使用しているか調べます．2.8.2 の du コマンドを使用して，各フォルダのディスク使用量を確認しましょう．
d はその後に階層数を指定して，何階層まで表示するかを指定しています2）．ここでは，1 を指定しており，1 階層分のみを表示しています．試しに表示をしてみましょう．コマンドはホーム
ディレクトリで実行します．
各フォルダの容量を調べる
cosmos02 :~ s0711460$ du -h -d 1 .
1.0G./ backupfiles20102） 一部の計算機は d オプションが使えません．代わりに--max-depth=オプションを使用します．

271

303M
639M
956K
10.0K
718M
4.0K
4.0K
4.0K
1.4G
248M
5.3M
197M
21M
8.5K
5.3M
81M
600K
26K
37K
45K
5.0K
4.6G

./ Library./ Maildir./. Spotlight -V100./. ssh./ WinFiles./ Desktop./. Trash./. Xcode./ Downloads./ development./ Documents./ public_html./. netbeans./. netbeans - registration./. eclipse./ temp./. matlab./ lib./ ssh_watch./. subversion./. w3m./

この場合だとホームディレクトリ全体で 4.6GByte 使用しています（一番最後の出力）．この中から必要なさそうなファイルを探しましょう．上記の場合だと Downloads ディレクトリが容量を使っているので，この中身を削除すればよさそうです．また，backupfiles2010 という昔のバック
アップファイルが残っており，これももう古くなってしまったため必要がなさそうです．これら必要ないファイルは rm コマンドで削除しましょう．

10.10

ブラウザのキャッシュを削除する

ブラウザのキャッシュを削除する方法を説明します．Firefox や Google Chrome などのブラウザのキャッシュが容量をとっている場合があります．その場合，Library フォルダのサイズが大きくなってしまいます．
10.10.0.1

Firefox のキャッシュを削除する

ま ず メ ニ ュ ー バ ー の Firefox
プライバシーとセキュリティ

環境設定 を ク リ ッ ク し， 環 境 設 定 を 開 き ま す． 次 にパ ネ ル を 選 択 し， Cookie とサイトデータ セ ク シ ョ ン の データを消去... を








クリックすると図 10.3 のようなメニューが表示されます．ここで ウェブコンテンツのキャッシュ が選

択されていることを確認して 消去 をクリックします．




272



図 10.3: Firefox のキャッシュの削除

10.10.0.2

Google Chrome のキャッシュを削除する

メニューバーから Chrome

閲覧履歴を消去 をクリックします．すると図 10.4 のようなメニューが出てくるので，キャッシュが選択されていることを確認し， 閲覧履歴の消去 をクリックします．な

お，消去するキャッシュの期間を “すべて” に設定しなければ，指定された期間に作られたキャッシュのみ削除されます．

273

図 10.4: Chrome のキャッシュの削除

10.10.0.3

Safari のキャッシュを削除する

まずキャッシュを削除する機能を有効にします．メニューバーから Safari

環境設定 を選択し，図10.5 のように “詳細” タブ下部の「メニューバーに “開発” メニューを表示」のチェックボックスにチェックします．するとメニューバーから 開発

キャッシュを空にする をクリックできるようになる

ので，これをクリックすることで，キャッシュを空にできます．

274

図 10.5: Safari のキャッシュの削除

10.11

quota の上限を大きくしたい

授業や実験などで大きなファイルを扱っている場合，10.9.1 節や 10.10 節などを試しても，ディスク使用量を quota の制限以下に抑えられなくなることがあります．このような場合は 10.13 節を参考に，技術職員に問い合わせてください．

10.12

間違えてファイルを消してしまった

COINS では snapshot 機能をもちいて，システム全体のデータのバックアップを自動的にとっています．このバックアップを用いることで，約 2 週間前までのファイルであれば，復元ができます．バックアップされたファイルは，/home/.snap/all/内のディレクトリ（ディレクトリ名はそのディレクトリにバックアップが作成された年月日）に保存されています．
あとは，cp コマンドなどをつかって目的のファイルを取り出しましょう．たとえば，ユーザ
s19xxxxx の 2019 年 3 月 10 日に取られたバックアップは，/home/.snaps/all/2019_03_10_0000/ugrad/19/s19xxxxx に保存されています．
$ ls -l /home /. snaps/all
合 計 112275

drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15
drwxr -xr -x 15

root
root
root
root
root
root
root
root
root
root
root
root
root
root

root
root
root
root
root
root
root
root
root
root
root
root
root
root

4096
4096
4096
4096
4096
4096
4096
4096
4096
4096
4096
4096
4096
4096

3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 2 13:56
3 月 21 11:32

2019 _03_09_0000
2019 _03_10_0000
2019 _03_11_0000
2019 _03_12_0000
2019 _03_13_0000
2019 _03_14_0000
2019 _03_15_0000
2019 _03_16_0000
2019 _03_17_0000
2019 _03_18_0000
2019 _03_19_0000
2019 _03_20_0000
2019 _03_21_0000
2019 _03_22_0000

以下は，ユーザ s19xxxxx のホームディレクトリのバックアップ（2019 年 3 月 10 日現在）を，ls
コマンドで参照した例です．
$ ls /home /. snaps/all /2019\ _03\_10\_0000/ugrad /19/ s19xxxxx
Maildir _OLD_HOME_2019_ . bashrc

10.13

各種問い合わせ先以上に記した方法で解決ができない場合，授業中であれば TA か教員に尋ねてみましょう．もしくは，coins-trouble@coins.tsukuba.ac.jp 宛に，以下のことを記載してメールを送ってくだ
さい．
• 利用者名（アカウント名）• 利用した計算機名• 症状が発生した時刻• 具体的なトラブルの内容
あるいは，技術職員室（3E108）まできて技術職員に直接問い合わせてください．また，COINSのシステムに関する一般的な質問につきましては，coins-admin@coins.tsukuba.ac.jp 宛にメールを送ってください．

276

2021 年度

情報科学類

計算機運用委員会

構成員

教員
新城 靖（委員長）
今倉 暁
早瀬 康裕
遠藤 結城
藤田 典久
技術職員
山崎 豊
小林 佳美
本手引きは 2021 年度手引を元に改版され，下記の方々の協力により作成されました．
氏名
田地章倫
曽山暉史
片岡一路
発行日2022.4
編集筑波大学情報学群情報科学類計算機運用委員会

Copyright©2022 筑波大学情報学群情報科学類計算機運用委員会．All Rights Reserved.