Linuxアプリケーション

Linuxデスクトップアプリケーション入門

テキストエディタ

LinuxEmacsやviなどの「超有名テキストエディタ」がネイティブに動く環境として有名ですが、最近はAtomのような新しいエディタもあります。

オフィススイート

LinuxのオフィススイートはLibreOfficeが使われることが多いですが、本当はMicrosoft Officeとの互換性が高いというだけで、GnumericやKWordのような「軽量で使いやすいオフィススイート」もたくさんあります。
特にGnumericは軽くて使いやすい表計算ソフトウェアとして著名。

Webブラウザ

LinuxWebブラウザは、盟友であるMozilla.orgFirefoxをはじめとして、Google ChromeWebKit使用ブラウザも最近は良く使われます。KDEではKHTMLという独自のHTMLレンダリングエンジンがあり、Konquerorが標準。このKHTMLをベースにAppleなどがWebKitを作りました。Opera系のVivaldiというブラウザもあります。
軽いWebブラウザが欲しいと言う方はXfce-GoodiesによるMidoriがおすすめ。WebKitを採用している。

メールクライアント

Linuxのメールクライアントはさまざまなレベルのものがあり、GTK+ならば軽量で日本人によるSylpheedが日本では好まれるほか、多機能のグループウェア・スイートであるEvolutionも人気です。もちろんGmailのようなWebメールFirefoxから使うこともできます。GmailはGNOME3でオンラインアカウントを登録すると、EvolutionなどいろんなところでGmailに対応することができます。

デザインソフト

LinuxのデザインソフトはAdobeに負けていません。「Photoshopキラー」と言われるGIMPのほか、Illustratorと同等のベジェ曲線を自在に操作するInkscapeなどが有名です。

日本語入力

日本語入力は、AnthyやMozcなど、最近はLinuxの方がWindowsより賢い。ただ、入力フレームワークの種類が多かったり、どうしても英語圏の開発者から対応が遅れがちだったり、時にはTrinityのように最近の入力フレームワークに対応していないものもある。

統合デスクトップ環境とウィンドウマネージャ

Linuxでは、X11アーキテクチャに基づき、ウィンドウマネージャをカスタマイズして導入することができます。これは商用OSで言えばWindowsmacOSに変える感覚に近く、全く違ったデスクトップを試すことができます。
統合デスクトップ環境では、ウィンドウの管理を超えて、さまざまな「標準アプリケーション」と「ネイティブアプリケーション開発機構」を備えています。

ネットワークサーバー

Linuxは多くの場合サーバーマシンのために使われている現状があります。ApacheはWebサーバーで、ファイルサーバーの選択肢としてはNFS、FTPD、Sambaがあります。

正規表現

正規表現とは

正規表現は、文字とパターンをマッチングさせる手段。多くの場合、言語のライブラリやUNIXなどのOSのコマンドで利用できる。
主に、検索と置換のために使われる。「どんな文字に一致させるか」を考えながら、パターンマッチングを行う。また、特殊文字(改行やタブなど)はエスケープシーケンスと言って、バックスラッシュ(\)によってマッチングさせることができる。PerlRubyなどでは、マッチングした場合としなかった場合において条件分岐したり、マッチングした部分を取り出して変数に格納したりすることもできる。
正規表現は一見すると記号的で読みにくさを感じるかもしれないが、慣れるととても便利である。特に、テキストエディタgrep置換機能が付いている時は、正規表現を使うことで膨大なファイルを一瞬にして編集することができる。

正規表現の例

たとえば、以下のようにすることで、*から始まる全ての行にh3タグを付加できる。
検索:

^\*(.*)$

置換:

<h3>\1</h3>

さらに以下のようにすれば、<以外の文字から始まる全ての行にpタグを付加できる。
検索:

^([^<].*)$

置換:

<p>\1</p>

任意の文字列

.*

任意の文字列。

.*?

任意の文字列の、最小限のマッチ。

同じ文字の繰り返し

*

0回以上の繰り返し

+

1回以上の繰り返し

?

0回または1回(あるかないか分からない時に使う)
*?、+?、??のようにつけた場合は、最長一致ではなく最短一致を行う。

{n}

n回の繰り返し

{n,}

n回以上の繰り返し

{n,m}

n回以上m回以下の繰り返し

アンカー

^

行の先頭

$

行の最後

メタキャラク

.

任意の一文字。

\w

英単語を構成する文字。

\W

英単語を構成する文字以外。

\d

数字。

\D

数字以外。

[a-z]

aからzまで。

(pattern)

(~)内は一文字であるかのように扱われる(グループ化)。置換後の文字列を取り出すためにも使う(キャプチャ)。

(pattern1|pattern2)

指定したパターンのどれか。

~

最後に使った正規表現のパターンにマッチする。

キャプチャ

( ~ )でくくったパターンは、\1や\2として、置換後のテキストに含めることが出来る(キャプチャ)。
たとえば、
置換前

(.*)\t(.*)\n

置換後

<h2>\1</h2>\n<p>\2\n

などと置換出来る。
エディタによっては( ~ )ではなく\( ~ \)のように\が要る場合もあるので注意が必要。xyzzyでは\が必要だが、サクラエディタでは\は必要ない。サクラエディタの場合、複数行の置換には対応していないので注意が必要。
キャプチャせずにグループ化だけをしたい場合は(?:pattern)という記法を行う。
viでも\が必要。viではexコマンドを使って以下のように置換できる。

:%s/\(Foo\) or \(bar\)/\2 or \1/

Foo or barをbar or Fooに置換できる。
\(と\)にかこまれたパターンは、ホールドバッファと呼ばれる特殊な領域に保管され、1行中に存在する9つのパターンまで、\1や\2などの形で保存・利用できる。

置換文字列に使うメタキャラク

キャプチャ以外にも、viの正規表現では以下のようなメタキャラクタを置換後のテキストに利用出来る。

&

置換文字列で、パターンにマッチした部分全体を表す。
viでは
:%s/Hello/&, World/
などとできる。

\uまたは\l

次の文字を大文字あるいは小文字に変える。

\Uまたは\L、および\eまたは\E

置換文字列の最後までか、あるいは\eか\Eに達するまでを、文字を大文字あるいは小文字に変える。
たとえば、viなら

:%s/Cobol/\U&/

で、CobolCOBOLに変えることができる。

エスケープシーケンス

\n

改行。

\r\n

改行。Windowsの場合は\r\nを使う。

\s

スペース。

\t

タブ。
テキストエディタによってはWindowsの場合でも\nで改行にマッチすることが多い。

ブラケット式

[~]

いずれかの文字。

[^~]

それ以外の文字。
[]の中では正規表現を使うことはできない。
POSIXでは、文字クラスと呼ばれるもう少し拡張されたキーワードを使うことができる。

エスケープ

上のような特殊文字をそのまま文字としてマッチさせたい時は、\.のように\をつけてエスケープする。

修飾子

以下はPerlの主な修飾子。

/g

繰り返してパターンマッチを行う。

/e

置換後の文字列をPerlの式として評価する。

/i

大文字小文字の違いを無視する。

/o

変数を含む正規表現を使う場合、変数の中身が変更されないなら、前回の処理内容を再利用する。

/s

文字列を1行として扱う。

/m

文字列を複数行として扱う。

/x

空白やコメントを無視する。
修飾子は/pattern/mのようにパターンの最後に付加して使う。viでマッチする全ての文字について置換を行う場合は:%s/old/new/gなどとする。
Perl言語プログラミングレッスン 入門編を参考に執筆・引用しました。)

Emacs

Emacsとは

Emacsは、GNUプロジェクト創始者のリチャード・M・ストールマンによるテキストエディタ
テキストエディタとは言われているものの、実際はEmacs Lispの実装を内蔵していることから、「Lispによって拡張可能なエディタ兼環境」として知られている。
エディタ兼環境と呼ばれる理由は、そのELispによるたくさんのアプリケーションがあることから言われている。たとえば、メールクライアントになったり、コマンドラインシェルになったり、時には2ちゃんねるブラウザになったりもする。
.emacsと呼ばれるファイルによって、Lispで高度な設定をすることで、Emacsの内部を途方もないほどにカスタマイズできる。そしてそこにELispを投入すれば、まさに「何でもできる」。ビル・ジョイによるUNIX標準のテキストエディタviとともに、「どちらが最強か」を議論することが多く、良く「宗教戦争」と呼ばれている。viはexエディタを前身としながら、ありえないキーバインドをしていることで、「最高のテキストエディタはどちらか」という永遠の命題がUNIXでは定番である。

公式のチュートリアル

Emacsには標準で「チュートリアル」が含まれており、'C-h t'(Ctrlキーを押しながらhキーを押し、次にCtrlキーを離してtキーを押す」で表示できる。
言語を変えるには、'help-with-tutorial-spec-language'コマンドを使う(Alt+xの後にこれを記述して実行)。日本語(ja)にも対応してある。
公式のチュートリアルを読めばきっと人並みに使えるようになるはずである。

vi

viとは

viは、UNIXの標準的テキストエディタ。特に、サーバーなどの最小限のシステムで使われることが多い。(Emacsは、サーバーでは入っていない場合がある。)
モードを切り替えることによって効率的な入力が可能。キーボードによるコマンド操作が豊富。
そのありえないキーバインドから、UNIX界では「もっとも操作方法を覚えるのが難しいエディタ」として知られている。また、ラインエディタexをベースにしており、exのコマンドを使うことができる。これによって、さまざまなモードを切り替えながら、色んなことを簡単にできて入力や操作もしやすい最強のエディタとして知られている。
Emacsとviはテキストエディタ界の二大勢力として宗教戦争をしている。僕は昔はvi派だったが、今はEmacs派。昔はviに拘っていたが、今はWindowsxyzzyEmacsライクなWindowsエディタ)を使うようになった。
viの操作方法がどうしても覚えられないと言う人は、コマンドラインで使える小さなnanoと言うエディタがある。初心者が設定ファイルの編集をするには、nanoがおすすめ。

Vim公式のヘルプ

Vimを使うのであれば、公式のメインヘルプファイルを読みましょう。以下に日本語に訳されたページがあります。

viの基本

入門vi 第6版を参考に執筆しました。

c, d, y: 編集

c, d, yで文字を編集・削除・コピーできる。cwは1語変更、2cW(またはc2W)は2語変更で、dw, 2dW(d2W), yw, 2yW(y2W)として削除やコピーができる。
3cbまたはc3b, 3db, 3ybで3語前まで編集。cc, dd, yyで一行。c$, d$, y$で行末まで。c0, d0, y0で行頭まで。
1文字の変更はr、1文字の削除はx(またはX)、1文字のコピーはy1またはyh。5文字の場合は5s, 5x, 5y1。

iとa: 挿入モード
コマンド 説明
i 挿入モード(入力モード)に移動し、現在位置から挿入。
I 行頭から挿入。
a 追記(現在位置の右から挿入)。
A 行末から挿入。
o 現在行の次に行を挿入。
O 現在行の前に行を挿入。
S 行を削除して置換。
R 現在の文字を新しいテキストで上書き。
J 現在行と次の行を連結。

挿入モードからはESCキーでコマンドモードに戻る。

hjkl: 移動
コマンド 説明
h 左に移動。
j 下に移動。
k 上に移動。
l 右に移動。
eまたはE 単語の末尾に移動。
wまたはW 単語単位で順方向に移動。
bまたはB 単語単位で逆方向に移動。

コマンドの前に数を指定することで、数だけ移動したり、繰り返しコマンドを実行したりできる。

0と$: 行の先頭・末尾にジャンプ
コマンド 説明
0 行の先頭にジャンプ。
$ 行の末尾にジャンプ。
+ 次の行の一文字目にジャンプ。
- 前の行の一文字目にジャンプ。
.で最後の動作を繰り返し
コマンド 説明
. 最後の動作を繰り返す。
u 最後の動作を取り消し。
U 行を最初の状態に復元する。
コピー・ペースト
コマンド 説明
yy 1行コピー。
dd 1行カット。
p ペースト。
:r xxx ファイルxxxの内容を次の行に挿入。

UNIXではコピーはYank(ヤンク)、ペーストはPut(プット)、カットはDelete(デリート)などと呼ばれていたため、コピーのキーは「y」である。

保存と終了
コマンド 説明
:w 保存。
:q 終了。
:q! 変更を破棄して終了。
:wq 保存して終了。
ZZ 保存して終了。

:で始まるコマンドはexコマンドと呼ばれます。viはラインエディタexを前身としています。

検索と置換
コマンド 説明
/pattern パターンpatternを検索。
?pattern パターンpatternを逆方向に検索。
:s/old/new/ カレント行で最初に出現するoldをnewに変える。
:s/old/new/g カレント行の全てのoldをnewに変える。
:50,100s/old/new/g 50~100行目の中の全てのoldをnewに変える。
:1,$s/old/new/g ファイル全体で全てのoldをnewに変える。
:%s/old/new/g ファイル全体で全てのoldをnewに変える。(1,$の代わりに%を使える)
:g/pattern/s/old/new/g 文脈依存置換。
n 前回と同じ方向で検索を繰り返す
N 前回と反対の方向で検索を繰り返す
/ 順方向で検索を繰り返す
? 逆方向で検索を繰り返す
UNIXコマンド
コマンド 説明
:!command UNIXコマンドの実行。
:sh UNIXシェルの実行。Ctrl+Dで終了する。
:r !date コマンドの処理結果を挿入。
この例ではdateコマンドで日時情報をファイルのテキスト内に挿入する。
:r !sort phone この例では、phoneというファイルの内容(電話番号が記載されている)を
アルファベット順にソートして読み込む。
:96,99!sort 96~99行目をソート(並び替え)する。
このように、テキストブロックをUNIXのフィルタ処理にかけることもできる。

.vimrc

vimの設定は~/.vimrcにおいて行う。
特に、行番号を多用するvimerとして、行番号の表示設定は必須。

set number

プラグイン

UNIXの場合~/.vim/plugin/がプラグインディレクトリになる。

シンタックスハイライト

基本的に、.vimrcに

syntax enable

と書いておけばよし。

vi作者のビル・ジョイはカリスマハッカー

viは、BSDcshの開発者の一人でSunでNFSJavaの開発にも関わったとされる、ビル・ジョイが開発した。彼はUNIX界ではカリスマのように崇拝されている一人である。
特にcshについては、今でも*BSD系のOSで標準的に使われている(cshを改良したtcshが使われていることが多い)。LinuxではBashを用いることが多いが、viも標準的に搭載されている。
UNIXのエンジニアなどでは、cshなどのCシェルの使い方に慣れている方が多く、LinuxMacなどでbashが使われていると嫌な顔をされることがある。cshはCライクな構文で知られ、Cライクな文法でシェルスクリプトを書くことができる。

TeX

マークアップで文書を整形する

MS-Wordなどのソフトウェアが画面上に表示されるのと同じ形で文書を整形することができるのに対し、TeXではマークアップ的に文書を整形する。
要するに、色やサイズや太さを変えるために、ボタンで画面に表示しながら整形することは、LinuxTeXでは出来ない。その代り、たとえばHTMLのように、文書のテキストファイルの中に「マークアップ記法」という独自の記法を入れ込むことで、文書の整形を行う。
これはHTMLが簡単にCSSでデザインを変えられるのと同じで、「自動的に文書の見た目を生成する」際に適している。全ての見出しや文書フォーマットのスタイルを一括で変えられるからである。
TeXは、数式の表示に使われることの多いソフトウェアだ。それは、数式を表示させる際、TeXマークアップを使えばとても綺麗に整形できるからである。また、数式だけではなく、書物の編集に良く使われる。Adobe IllustratorなどでDTPを行って、PDFに変換して扱うことも多い「書籍のデザイン」だが、TeXマークアップを使いこなすことで、負けないぐらいシンプルで強力な「書籍の作成」を行うことができる。
注記:TeXを使ったことのなかった自分が書いていたため、見当はずれな部分があるかもしれません。特に、CSSのように簡単にデザインを変えるというよりも、「書籍並みの綺麗な組版を行う」という意味で使われることが多いです。ワードなどに比べてとても綺麗な「出版レベルのデザイン」ができます。

サンプル

LaTeX2eのサンプル:

\documentclass[a4paper,12pt]{jarticle}
\begin{document}

本文

\end{document}

TeXの解説

TeXファイルは拡張子.texで保存し、platexコマンドでDVIファイルにコンパイルする。

platex sample0.tex

これをDVI viewer(たとえばdvioutコマンド)で見ることもできるが、PDFに変換(たとえばdvipdfmxコマンド)して見ることもできる。
TeXファイルは必ず

\documentclass[options]{classname}

で始まり、classnameで原稿のフォーマット(クラスファイル)を指定する。日本語の論文であればjarticleを指定する。その、article, report, book, amsart などのクラスファイルがある。
本文は

\begin{document}

で始まり

\end{document}

で終わる。TeXのコマンドはすべて \ で始まる。

文字サイズ・用紙サイズの変更

文字サイズや用紙サイズを変える時は、

\documentclass[b5paper,12pt]{jarticle}

のように[]内にオプションを記述する。

縦書き

縦書きは、

\documentclass{tarticle}

のように、ドキュメントクラスにtarticleと指定する。

目次の自動作成

セクションやサブセクションに分けた内容は、目次を自動的に作成できる。
セクションは、

\section{セクション}
  ・・・
\subsection{サブセクション}
  ・・・
\subsubsection{サブサブセクション}
  ・・・

とし、目次は

\tableofcontents

とする。

gnuplot

gnuplotでグラフを描こう

gnuplotは二次元から三次元まであらゆるグラフを描けるソフトウェア。
手描きでは絶対に描けないような高度で美しいグラフを描ける。

基本

基本的に、gnuplotシェルが起動したら、setコマンドとplotコマンドで数式や表示する範囲などを入力し、replotで再描画できる。
基本的に、グラフを描画するためには、

gnuplot> plot xに関する関数式

とする。
たとえば、

gnuplot> plot cos(x)

また、resetで表示を初期状態に戻し、splotで三次元のグラフを描画できる。

簡単な説明

基本・インターネット

  • GUIアプリケーション
    • 基本・インターネット
    • メーラ

テキストエディタ

文書作成

マルチメディア

フォント

  • フォント(TrueType, OpenType)

正規表現

Vim

移動はhjklで行う
挿入モードに移動するにはiあるいはaなど。押した瞬間から文字入力が始まる。ESCでコマンドモードに戻る。
検索は/hogeなど。
正規表現による置換は:%s/foo/bar/gなど
「:」で始まるコマンドはexコマンドという(viはラインエディタexのヴィジュアルモードとして開発された)
文脈依存置換という面白い機能もある。その文脈における検索・置換ができる(たとえばhogeが含まれている行の中のfooをbarに置換する)。オライリーの「入門vi」に書いてあるので参考にしてほしい
UNIXコマンドはviで使うと真価を発揮する。たとえば特定ブロックにsortをかけるなど
外部sortコマンドは:1,20!sortなどで実行できる(1~20行目のブロックにsortコマンドをかける)が、内部sortコマンド:sortを使うこともできる
vimを使う際は行番号だけは表示するように設定しよう。行番号が表示されないviは使えないから(ほとんどのアドレス指定が行番号)である。また、シンタックスハイライトもあると便利
使い方はVim公式のヘルプを見よう

Emacs

Lispで拡張できるエディタ
テキストエディタというよりも環境であり、Emacs向けのLispアプリケーションを動かすことのできる一種のOSである
C/C++などはメジャーモードと言い、メジャーモードとさまざまなマイナーモードを組み合わせて使う
C-xはCtrl-x、M-xはAlt-x(あるいはESC-x)を表す。M-xでコマンド入力モードになり、Tabでコマンド候補の一覧も表示されるので、使い方や機能が分からなかったらM-xとTab補完を積極的に使うといいかも
使い方は公式のチュートリアルを見よう

TeX, LaTeX

出版レベルの組版が可能
大学のレポートなどはLaTeXで書く人間が多い
¥を使ってマークアップで文書を編集する
ワードやHTMLと比べても、そんなに難しくない

gnuplot

簡単なコマンド入力で関数のグラフが描ける
人間が鉛筆で描くのでは絶対に描けないような綺麗なグラフが出力できる

マルチメディア

CDから音楽ファイルをリッピングしてVLCで聴くならLinuxでも十分
DVDの再生は法律上できない
YouTubeLinuxでもきちんと見れるのでYouTubeを見よう
WinampがほしいならXMMSがある
音楽制作がしたいならLMMS
動画編集がしたいならPiTiViやKdenlive
多形式に対応したコーデックはFFmpeg
オープンコーデック形式としてOgg Vorbis, FLAC, Theoraなど

フォント

TrueTypeは古い規格、OpenTypeは新しい規格
Linuxには搭載フォントが少ない
インターネット上に多数のフリーフォントがある
LibreOfficeなどを使うのであればフリーフォントを入れよう

正規表現

Perlなどのプログラミング言語だけではなく、UNIXのコマンドやサクラエディタなどからも検索・置換のために使う
大量のファイルを編集する際には正規表現は必須である
使うツールによって正規表現に若干の差異があったり、サクラエディタでは複数行の検索・置換ができないなど制限もあったりするので、使うツールをよく選ぶこと