お兄ちゃん!
また Linux で
ゲームサーバを動かすね!
もう普通の OS のように
Linux を使えるようになったね
最初はゲームを遊びたかっただけだけど
使っているうちに面白い OS だとわかったし
サーバやネットワークの仕組みを学ぶのにも
良い題材だということがわかったよ!
でも Linux って
これだけじゃないよね?
これまで紹介されていなかった
使い方とか分野があれば
教えてほしいなぁ
まずは GUI だね!
GUI はアイコンなどで
何をするプログラムかわかるし
マウス操作は詳しく知らなくても
直感的にすぐ操作できるよね!
ゲーム用途以外なら
Windows や macOS などの商用 OS と
ほぼ変わりないことができるんだ
最後の壁だったゲーム用途も
最近では Linux でも同様に遊べるよう
色々な企業や開発者が尽力しているよ
以下のような代表的な
ソフトウェアが利用可能なんだ!
分野 | ソフトウェア |
---|---|
ブラウザ | Chromium, |
メール | ThunderBird |
オフィススイート | OpenOffice.org, |
ドローイングソフト | GIMP, |
音楽・動画再生 | FFmpeg, |
GUI は多くのリソースを使うよ
サーバなどの用途によっては
CUI だけで使う場合も多いんだ
代表的なツールやコマンドを紹介したけど
紹介できていないものもたくさんあるんだ
以下にここで扱うには複雑過ぎたり
特定のディストリビューション専門の
ツールやコマンドを挙げるね
名称 | 役割 |
---|---|
nftables , iptables |
パケットフィルタリング |
ufw |
パケットフィルタリング(Debian 系) |
firewalld ,firewall-cmd |
パケットフィルタリング(Red Hat 系) |
tcpdump |
パケットキャプチャ |
dig |
ドメイン情報取得 |
nmap |
ネットワーク分析 |
wireshark |
ネットワーク分析 |
tripwire |
ファイル改ざん検知 |
grub |
ブートローダ |
mdadm |
ソフトウェアRAID |
lvm |
LVM(logical volume management) |
お兄ちゃんから
基本的な扱い方は
学んだんだもの!
学ぶ必要が出てきたら
時間は掛かるけど
調べながら習得するよ!
それはどういう
ものなの?
コンピュータは曖昧なものを
処理するのが苦手なんだ
人間の言葉には曖昧な表現が
多く含まれているよ
それが微妙な表現の違いを
表すのに便利なんだけど
コンピュータには
解釈が難しいんだ
一方、コンピュータの言葉は
0
か 1
の二進数なんだ
例えば 0001
が加算
0010
が減算のような感じだよ
数値が少しでも違うと
全く別の処理になるので
連想が働きづらく
人間はコンピュータの
言葉を扱いづらいんだ
そこで人間からも
コンピュータからも
まあまあ理解しやすい
共通の言葉として
作られたのが
「コンピュータ言語」なんだ
多くのコンピュータ言語は
人間が使う英単語を
曖昧な表現が無い構造で
表現しているよ
つまりコンピュータ言語を学べば
コンピュータにやってほしいことを
直接伝えられるようになるんだね!
広く知られている
コンピュータ言語には
以下のようなものがあるよ
言語 | 方式 | 特徴 |
---|---|---|
Python | インタプリタ | 標準的に導入されている場合が多い、 |
Java | コンパイラ | ほとんどの OS やアーキテクチャで実行ファイルを作り直さず実行できる |
Ruby | インタプリタ | 書きやすい |
PHP | インタプリタ | Webアプリケーションに強い |
Perl | インタプリタ | ほとんどの Linux に標準的に導入されている、 |
C, |
コンパイラ | この言語で作成されたパッケージが多くを占める |
コンピュータ言語で書かれた文章を
「ソースコード(source code)」と呼ぶよ
コンパイラ方式の方が
プログラム実行速度が速いけど
ソースコードを修正したら
実行ファイルを作り直す
手間があるんだ
新しい言語を覚えるって
大変な感じがするよ
シェルスクリプトで
やりたい処理は大体書けるので
それでいいんじゃないかな?
シェルスクリプトではスクリプト内で
コマンドが実行された数だけ
プロセスが立ち上がっては消えていくよ
プロセス生成は高コストな処理で
シェルスクリプトは実行速度が遅いんだ
シェルスクリプトの
規模が大きくなったり
実行速度が気になり始めたら
言語を学ぶ良い機会かも
しれないね
何かを編集しているときに
変更で動かなくなるのが怖くて
過去のバージョンを
コピーして残していないかな?
「バージョン管理システム
(version control system, VCS)」は
このような問題を解決するツールなんだ
代表的な各デーモンを軽く紹介したけど
どれも最も基本的な使い方ばかりなんだ
本格的に使うなら
ちゃんと勉強する必要があるよ
特にセキュリティ周りとかは
しっかりしておかないと
「生兵法は大怪我のもと」
になりそうだね
ここで紹介していない
デーモンもたくさんあるんだ
代表的なのは「RDBMS
(relational database management system)」
だよ
RDBMS は
データを保存するシステムで
コンピュータ言語と一緒に
使われることが多いんだ
データの保存って
ファイルに保存じゃ
ダメなのかな?
簡単な用途ならファイル保存で十分な場合もあるよ
RDBMS は同時にデータ操作された場合の対処や
何万何億件の中から必要なデータを素早く探すなど
データ管理に特化した機能を提供してくれるんだ
業務システムなどでは RDBMS などが使われるよ
へぇ…
そんなにすごい
仕組みがあったんだ……
しかもオープンソースのものは
無料で使えちゃうんだね!
代表的な RDBMS には
以下のようなものがあるよ
他にも紹介しきれていない
代表的なデーモンやシステム
サービスなどを挙げておくね
名称 | 役割 |
---|---|
MongoDB | ドキュメント指向データベースシステム |
Neo4j | グラフ指向データベースシステム |
Elasticsearch | 全文検索 |
Fluentd | ログ収集・解析 |
Grafana | ログ可視化 |
WordPress | サイト作成 |
Redmine | プロジェクト管理 |
MediaWiki | Wiki サーバ |
OpenLDAP | LDAP サーバ |
BIND | DNS サーバ |
ProFTPD | FTP サーバ |
vsftpd | FTP サーバ |
Exim | SMTP サーバ(MTA) |
Dovecot | IMAP/POP3 サーバ |
CUPS | プリンタサーバ |
Tomcat | アプリケーションサーバ(Java) |
rsync | ファイル同期 |
NFS | ネットワーク越しのマウント |
仮想化をすると
どうなるのかな?
コンピュータやリソースを
簡単に作成したり破棄できるんだ
「もっと性能が良いコンピュータを作り直そう」とか
「負荷が高いからもう一台コンピュータを追加」
といったことが
簡単にできるんだ
ハードウェアで同じことをやろうとすると
買い替えとかしないといけなくなるものね
そのような仮想化を行う仮想化ツールには
VirtualBox などがあるよ
仮想化だけで
すごい大きな
分野なんだね!
仮想化はリソース
特にメモリを
たくさん消費するよ
仮想化で色々したいなら
性能の良いマシンを用意しよう!
そうだよ
ほんの数分で使える状態になるし
通常はリソースを使った分だけの
利用料を支払えばいいんだ
コンピュータ以外にも
ネットワークやストレージなども
借りられるよ
それは便利だね!
有名なクラウドサービスに
以下があるよ
今回は今まで教えてもらったことの
さらに先には何があるかを
教えてもらったよ!
まだまだ色々なことが
たくさんあるんだ!
このあたりから
だんだん専門的になっていくよ
ちゃんとした書籍を買って
勉強するのをおすすめするよ!
それから…
お兄ちゃん!
色々教えてくれて
ありがとう!
いえいえ!
どういたしまして!