1.2 レッスン 1
Certificate: |
Linux Essentials |
---|---|
Version: |
1.6 |
Topic: |
1 Linuxコミュニティとオープンソースのキャリア |
Objective: |
1.2 主要なオープンソースアプリケーション |
Lesson: |
1 of 1 |
はじめに
コンピュータ内部で自動的に処理を行うのではなく、ユーザーの操作に直接結びついているコンピュータプログラムをアプリケーションと呼びます。 Linuxディストリビューションには、オフィスアプリケーション、Webブラウザー、マルチメディアプレーヤー、エディターなど、さまざまな作業を実行するための多くのアプリケーションが含まれています。ある作業を実行するために利用できるアプリケーションやツールが、複数存在することがよくあります。自分のニーズに最適なアプリケーションを選択するのは、ユーザー自身です。
ソフトウェアパッケージ
ほとんどすべてのLinuxディストリビューションは、一連のアプリケーションをデフォルトでインストールします。それらのアプリケーションに加えて、ディストリビューションは、パッケージマネージャー を使用してインストールできるアプリケーションの膨大なコレクションを納めたパッケージリポジトリを備えています。さまざまなディストリビューションがほぼ同じアプリケーションを提供していますが、何種類かのパッケージ管理システムが存在していて、ディストリビューションによって使用できるものが異なります。たとえば、Debian、Ubuntu、およびLinux Mintは、 dpkg
、 apt-get
、 apt
などのツールを使用して、DEBパッケージ と呼ばれるソフトウェアパッケージをインストールします。 Red Hat、Fedora、CentOSなどのディストリビューションでは、代わりに rpm
、 yum
、 dnf
などのツールを使用して、RPMパッケージ をインストールします。アプリケーションのパッケージはディストリビューションごとに異なるため、そのディストリビューション用に設計された正しいリポジトリからパッケージをインストールすることが非常に重要です。ディストリビューションのパッケージマネージャーが、パッケージの選択、依存関係の解決、将来の更新などをコントロールするので、エンドユーザーは通常、これらの詳細について心配する必要はありません。あるプログラムが、実行に必要となる補助パッケージを必要とするときに、依存関係があると言います。たとえば、ライブラリが複数のプログラムで使用されるJPEG画像を処理するための関数を提供している場合、このライブラリは独立したパッケージにまとめられて、ライブラリを使用するすべてのアプリケーションがそのライブラリパッケージに依存することになります。
dpkg
コマンドや rpm
コマンドは、1つのパッケージファイルに対して作用します。実際のパッケージ管理作業では、DEBパッケージを使用するシステムでは apt-get
または apt
コマンドを、RPMパッケージを使用するシステムでは yum
または dnf
コマンドを使用します。これらのコマンドは、パッケージのカタログを利用することで、依存関係に応じて新しいパッケージをダウンロードしたり、インストールされているパッケージの新しいバージョンを確認します。
パッケージのインストール
端末にテキストを拡大して出力する figlet
というコマンドについて教えて貰ったので、それを試したいとします。しかし figlet
コマンドを実行すると、次のメッセージが表示されます。
$ figlet -bash: figlet: command not found
これはおそらく、パッケージがシステムにインストールされていないことを意味します。ディストリビューションがDEBパッケージで動作する場合、 apt-cache search パッケージ名
または apt search パッケージ名
を使用してリポジトリを検索できます。 apt-cache
はパッケージを検索し、利用可能なパッケージに関する情報を一覧表示するコマンドです。次のコマンドは、パッケージの名前と説明から figlet
という単語を探します。
$ apt-cache search figlet figlet - Make large character ASCII banners out of ordinary text (通常のテキストを大きなASCII文字バナーで表示する)
不足しているコマンドに一致する figlet というパッケージが、検索で見つかりました。パッケージのインストールと削除には、システム管理者( root
という名前のユーザー)のみが持つ特別な権限が必要です。デスクトップシステムでは、一般ユーザーは、インストール/削除コマンドの前に sudo
コマンドを指定することで、パッケージをインストールまたは削除できます。これには、自分のパスワードを入力する必要があります。DEBパッケージの場合、インストールには apt-get install パッケージ名
または apt install パッケージ名
コマンドを実行します。
$ sudo apt-get install figlet Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: figlet 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
このコマンドでパッケージがダウンロードされ、システムにインストールされます。パッケージの実行に必要となる(依存している)パッケージがあれば、それもダウンロードされ、インストールされます。
Need to get 184 kB of archives. After this operation, 741 kB of additional disk space will be used. Get:1 http://archive.raspbian.org/raspbian stretch/main armhf figlet armhf 2.2.5-2 [184 kB] Fetched 184 kB in 0s (213 kB/s) Selecting previously unselected package figlet. (Reading database ... 115701 files and directories currently installed.) Preparing to unpack .../figlet_2.2.5-2_armhf.deb ... Unpacking figlet (2.2.5-2) ... Setting up figlet (2.2.5-2) ... update-alternatives: using /usr/bin/figlet-figlet to provide /usr/bin/figlet (figlet) in auto mode Processing triggers for man-db (2.7.6.1-2) ...
ダウンロードが完了すると、すべてのファイルが適切な場所にコピーされ、適切な構成が行われて、コマンドが使用可能になります。
$ figlet Awesome! _ _ / \__ _____ ___ ___ _ __ ___ ___| | / _ \ \ /\ / / _ \/ __|/ _ \| '_ ` _ \ / _ \ | / ___ \ V V / __/\__ \ (_) | | | | | | __/_| /_/ \_\_/\_/ \___||___/\___/|_| |_| |_|\___(_)
RPMパッケージを使うディストリビューションでは、 yum search パッケージ名
または dnf search パッケージ名
を使用して検索を実行します。マンガの牛(cartoonish cow)がテキストを話しているように表示したいけれども、そのコマンドを含むパッケージ名が分からないとしましょう。DEBパッケージと同様に、RPMを検索するコマンドは、パッケージの説明に記載されている用語を検索します。
$ yum search speaking cow Last metadata expiration check: 1:30:49 ago on Tue 23 Apr 2019 11:02:33 PM -03. ==================== Name & Summary Matched: speaking, cow ==================== cowsay.noarch : Configurable speaking/thinking cow (設定可能な話す/考える牛)
リポジトリで適当なパッケージを見つけたら、yum install パッケージ名
または dnf install パッケージ名
でインストールできます:
$ sudo yum install cowsay Last metadata expiration check: 2:41:02 ago on Tue 23 Apr 2019 11:02:33 PM -03. Dependencies resolved. ============================================================================== Package Arch Version Repository Size ============================================================================== Installing: cowsay noarch 3.04-10.fc28 fedora 46 k Transaction Summary ============================================================================== Install 1 Package Total download size: 46 k Installed size: 76 k Is this ok [y/N]: y
この場合も、指定したパッケージと、依存しているパッケージがダウンロードされてインストールされます。
Downloading Packages: cowsay-3.04-10.fc28.noarch.rpm 490 kB/s | 46 kB 00:00 ============================================================================== Total 53 kB/s | 46 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : cowsay-3.04-10.fc28.noarch 1/1 Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1 Verifying : cowsay-3.04-10.fc28.noarch 1/1 Installed: cowsay.noarch 3.04-10.fc28 Complete!
cowsay
コマンドは、名前の通りものものです:
$ cowsay "Brought to you by yum" _______________________ < Brought to you by yum > ----------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
役に立たないように見えるかもしれませんが、コマンド figlet
と cowsay
は、関連情報にユーザーの注意を付きつけるために使えます。
パッケージの削除
パッケージのインストールに使用したのと同じコマンドを、パッケージを削除するためにも使用します。例示したコマンドに、 remove
キーワードを指定すると、パッケージをアンインストールします。DEBパッケージの場合は apt-get remove パッケージ名
または apt remove パッケージ名
ですし、RPMパッケージの場合は yum remove パッケージ名
または dnf remove パッケージ名
です。削除を実行するには、 sudo
コマンドも必要です。たとえば、DEBベースのディストリビューションから、インストールしたパッケージ figlet を削除するには、次のようにします:
$ sudo apt-get remove figlet Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: figlet 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 741 kB disk space will be freed. Do you want to continue? [Y/n] Y
操作に対する確認の後に、パッケージがシステムから削除されます:
(Reading database ... 115775 files and directories currently installed.) Removing figlet (2.2.5-2) ... Processing triggers for man-db (2.7.6.1-2) ...
RPMベースのシステムでも、手続きは同様です。例えば、先にインストールした cowsay パッケージを削除するには、次のようにします:
$ sudo yum remove cowsay Dependencies resolved. ================================================================================== Package Arch Version Repository Size ================================================================================== Removing: cowsay noarch 3.04-10.fc28 @fedora 76 k Transaction Summary ================================================================================== Remove 1 Package Freed space: 76 k Is this ok [y/N]: y
同様に、確認の後に、パッケージがシステムから削除されます:
Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Erasing : cowsay-3.04-10.fc28.noarch 1/1 Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1 Verifying : cowsay-3.04-10.fc28.noarch 1/1 Removed: cowsay.noarch 3.04-10.fc28 Complete!
削除したパッケージの設定ファイルはシステム上に残りますので、後にパッケージを再インストールした場合に、そのまま使用できます。
オフィスアプリケーション
オフィスアプリケーションは、文書、プレゼンテーション、表計算など、オフィス環境で一般的に使用されるさまざまな形式のファイルを編集するものです。これらのアプリケーションは通常、オフィススイート と呼ばれるコレクションとして提供されます。
長い間、Linuxでは OpenOffice.org と呼ばれるオフィススイートが使用されていました。 OpenOffice.orgは、Sun Microsystems がリリースした StarOfficeスイート のオープンソース版です。Sun Microsystemsが Oracle Corporation に買収された数年後に、OpenOffice.orgプロジェクトは Apache Foundation に移管され、Apache OpenOffice という名前に変更されました。その間に、 Document Foundation から、同じソースコードに基づく別のオフィススイートが、 LibreOffice という名前でリリースされました。
2つのプロジェクトの基本的な機能は同じであり、 Microsoft Office のドキュメント形式と互換性があります。とはいえ、推奨されるドキュメント形式は、ISOで標準化された完全にオープンな Open Document Format (ODF)と呼ばれるファイル形式です。 ODFファイルを使用すると、Microsoft Officeなど、異なるベンダーのアプリケーションやオペレーティングシステムの間で、ドキュメントを転送できます。 OpenOffice/LibreOfficeが提供する主なアプリケーションは次のとおりです:
- Writer
-
ワープロ
- Calc
-
表計算
- Impress
-
プレゼンテーション
- Draw
-
ドローソフト(ベクターグラフィックエディタ)
- Math
-
数式エディタ
- Base
-
データベース
LibreOfficeとApache OpenOfficeはどちらもオープンソースソフトウェアですが、LibreOfficeはLGPLv3でライセンスされ、Apache OpenOfficeはApache License 2.0でライセンスされています。これらのライセンスの違いは、LibreOfficeはApache OpenOfficeによって行われた改善を組み込むことができるが、Apache OpenOfficeはLibreOfficeによって行われた改善を組み込むことができないことを意味します。さらに、より活発な開発者コミュニティーがあることから、ほとんどのディストリビューションがLibreOfficeをデフォルトのオフィススイートとして採用しています。
Webブラウザ
ほとんどのユーザーにとって、コンピューターの主な使用目的は、インターネットへアクセスすることです。現在では、Webページをフル機能のアプリとして機能させることができるので、追加のソフトウェアをインストールしなくても、どこからでも利用できるという利点があります。つまり、Webブラウザは、少なくとも平均的なユーザーにとって、オペレーティングシステムの最も重要なアプリケーションです。
Tip
|
Web開発について学ぶための最良の情報源の1つは、https://developer.mozilla.org/ で入手可能なMDN Web Docsです。 Mozillaが保守しているこのサイトには、初心者向けのチュートリアルと、最新のWebテクノロジーに関する参考資料が満載です。 |
Linux環境の主なWebブラウザーは、Google Chrome と Mozilla Firefox です。 ChromeはGoogleが管理するWebブラウザーですが、 Chromium という名前のオープンソースブラウザーをベースとしています。Chromiumは、ディストリビューションのパッケージマネージャーを使用してインストールでき、Chromeと完全な互換性があります。非営利団体であるMozillaによって保守されているFirefoxは、オープンソースモデルを採用した最初のポピュラーなWebブラウザであるNetscapeを起源とするブラウザです。 Mozilla Foundationは、最新のWebの基礎となる公開標準(open standards)の開発に深く関わっています。
Mozillaは、電子メールクライアント Thunderbird など、他のアプリケーションも開発しています。現在では、専用のメールアプリケーションではなく、ウェブメールを使用することを選択するユーザーが多いでしょうが、Thunderbirdのようなメールクライアントは、拡張機能を提供して、デスクトップ上の他のアプリケーションと密接に統合することができます。
マルチメディア
マルチメディアコンテンツの作成には、依然として、Webアプリケーションよりもデスクトップアプリケーションの方が有利です。ビデオレンダリングなどのマルチメディア関連の作業は、多くの場合、大量のシステムリソースを必要とします。システムリソース管理には、ローカルのデスクトップアプリケーションが最も効果的です。 Linux環境で人気のあるマルチメディアアプリケーションのいくつかと、その概要を以下に示します。
- Blender (ブレンダー)
-
アニメーションを作成する3Dレンダラー。 Blenderは、3Dプリンターで印刷する3Dオブジェクトをエクスポートすることもできます。
- GIMP (ジンプ)
-
フル機能の画像エディターで、Adobe Photoshop と比較できるほどに多機能ですが、画像を操作するための独自の概念とツールがあります。 GIMPは、JPEG、PNG、GIF、TIFF、その他多くのビットマップファイルの作成、編集、保存に使用できます。
- Inkscape (インクスケープ)
-
Corel Draw ないし Adobe Illustrator に似たベクターグラフィックエディターです。InkscapeのデフォルトのフォーマットはSVGで、これはベクターグラフィックスのオープンスタンダードです。SVGファイルは任意のWebブラウザーで開くことができ、ベクターグラフィックとしての特徴から、Webページの柔軟なレイアウトに有用です。
- Audacity (オーダシティ)
-
オーディオ(音声)エディターです。 Audacityは、フィルターやエフェクトの適用や、MP3、WAV、OGG、FLACなど、まざまなオーディオファイルの形式変換に使用できます。
- ImageMagick (イメージマジック)
-
ImageMagickは、ほとんどの種類のイメージファイルを変換および編集するコマンドラインツールです。また、画像ファイルからPDF文書を作成したり、その逆を行ったりすることもできます。
マルチメディアを再生するためのアプリケーションもたくさんあります。ビデオ再生用の最も人気のあるアプリケーションは VLC ですが、 smplayer などのアプリケーションを好む人もいます。ローカルでの音楽再生には、 Audacious 、 Banshee 、 Amarok など、サウンドファイルのコレクション管理も可能な多くの選択肢があります。
サーバープログラム
WebブラウザーがWebサイトからページをロードする時には、リモートコンピューターに接続して、指定の位置にある情報を要求します。この時に、Webブラウザーを実行しているコンピューターを クライアント 、リモートコンピューターを サーバー と呼びます。
サーバーコンピューターは、通常のデスクトップコンピューターであることも、特別なハードウェアのこともありますが、いずれにしても提供する情報を種類ごとに管理する専用のプログラムが必要です。世界中のほとんどのサーバーが、Webページの配信にオープンソースのサーバープログラムを使用しています。このサーバープログラムは HTTPサーバー(HTTPは Hyper Text Transfer Protocol の略)と呼ばれ、最も一般的なものに、Apache (アパッチ)、 Nginx (エンジンエックス)、 lighttpd (ライティ)などがあります。
単純なWebページでも、多くのリクエストが必要になる場合があります。これは、通常のファイル(静的コンテンツと呼ばれる)の場合もありますし、さまざまな情報源から生成される動的なコンテンツの場合もあります。HTTPサーバーの役割は、要求されたそれぞれのデータをブラウザーに送り返すことです。ブラウザーは、受信したHTMLドキュメントや、関連するサポートファイルによって定義されたコンテンツを(画面上に)配置します。つまり、Webページのレンダリングには、サーバー側で実行される処理と、クライアント側で実行される処理の両方が必要です。どちらの側でも、カスタムスクリプトを使用して固有のタスクを実行できます。 HTTPサーバー側では、PHPスクリプト言語を使用するのが一般的です。JavaScriptは、クライアント(Webブラウザー)側で使われるスクリプト言語です。
サーバープログラムは、あらゆる種類の情報を提供できます。サーバープログラムが、別のサーバープログラムに情報を要求することも珍しいことではありません。HTTPサーバーが、データベースサーバーに情報の提供を求めることなどが、このケースに当てはまります。
たとえば、動的ページが要求されると、HTTPサーバーはデータベースに問い合わせて必要なすべての情報を収集し、動的コンテンツをクライアントに送り返すのが普通です。同様に、ユーザーがWebサイトに登録する場合は、クライアントから送信されたデータを、HTTPサーバーがとりまとめてデータベースに格納します。
データベースとは、一連の情報を組織化したものです。データベースサーバーはコンテンツを体系立てて保存するため、大量のデータの読み取り、書き込み、関係づけを、確実かつ高速に行えます。オープンソースのデータベースサーバーが、インターネットだけでなく、多くのアプリケーションで使用されています。ローカルなアプリケーションでも、ローカルなデータベースサーバーに接続して、データを保存できます。リレーショナルデータベース と呼ばれる種類のものが最も一般的で、事前に定義されたテーブル(表)にデータを組織化します。最も人気のあるオープンソースのリレーショナルデータベースは、( MySQL から発展した) MariaDB (マリアDB)と PostgreSQL (ポストグレス)です。
データ共有
オフィスや家庭で見られるようなローカルネットワーク(LAN)では、コンピュータがインターネットにアクセスできるだけでなく、相互に通信できるのが普通です。あるコンピューターがサーバーとして機能することもあれば、同じコンピューターがクライアントとして機能することもあります。たとえば、ポータブルデバイスからデスクトップコンピューターに保存されたファイルにアクセスしたい場合など、USBドライブなどにコピーする手間をかけずに、ネットワーク上の別のコンピューターにあるファイルにアクセスすることが、このケースに当たります。
Linuxマシン間では、NFS( Network File System )がよく使用されます。NFSプロトコルは、Unix/Linuxマシンのみのネットワークにおいて、ファイルシステムを共有する標準的な方法です。NFSを使用すると、コンピューターは1つ以上のディレクトリを、ネットワーク上の特定のコンピューターと共有して、ディレクトリ内のファイルを読み書きできます。NFSでは、オペレーティングシステムのディレクトリツリー全体を共有して、クライアントをそこから起動することもできます。このようなコンピュータを シンクライアント と呼び、それぞれのマシン毎にオペレーティングシステムのメンテナンスを行う手間を回避するために、大規模なネットワークで主に使用されます。
異なる種類のオペレーティングシステムがネットワーク上にある場合は、それらすべてが理解できるデータ共有プロトコルを使用することがお勧めです。この要件は、Samba (サンバ)で実現できます。Sambaは、もともとはWindowsオペレーティングシステム用に作られたネットワークでファイルを共有するためのプロトコル(現在ほとんどの主要なオペレーティングシステムと互換性があある)を実装したものです。Sambaを使用すると、ローカルネットワーク内のコンピューターはファイルを共有できるだけでなく、プリンターも共有できます。
一部のローカルネットワークでは、 ドメインコントローラー と呼ばれるサーバーによって、ワークステーションにログインする許可や、さまざまなローカルおよびリモートのリソースにアクセスする権限を管理しています。ドメインコントローラは、Microsoftの Active Directory が提供するサービスです。 Linuxワークステーションは、Sambaまたは SSSD (System Security Services Daemon)と呼ばれる認証サブシステムを使用して、ドメインコントローラーと連携することができます。また、バージョン4以降のSambaは、異種ネットワーク上のドメインコントローラーとしても機能します。
さまざまなWebベースのデータ共有方法が使える、クラウドコンピューティングソリューションを実装したいのであれば、ownCloud と Nextcloud の2つを検討するとよいでしょう。 NextcloudはownCloudから派生したものですから、2つのプロジェクトは非常に似ています。これはオープンソースプロジェクトでは珍しいことではありません。このようなスピンオフは、fork(フォーク)と呼ばれます。どちらも次のような基本機能を提供します: ファイルの共有と同期、共同ワークスペース、カレンダー、連絡先、メール、デスクトップならびにモバイル、Webに共通するインターフェースなど。NextCloudは、オーディオ/ビデオ会議も提供しています。対して、ownCloudは、ファイル共有とサードパーティソフトウェアとの連携に重点を置いています。どちらも、必要に応じて有効化できる、さまざまな機能のプラグインが利用できます。
ownCloudとNextcloudのどちらにも、追加機能と拡張サポートを備えた有料バージョンがあります。他の商用ソリューションとの違いは、NextcloudとownCloudは、プライベートサーバーに無料でインストールできることです。これにより、機密データをどこにあるかも分からないサーバーに保存する必要がなくなります。すべてのサービスはPHPで記述されていて、HTTPを使用するので、Apacheなどの既存のWebサーバーにインストールして実行できます。自分のサーバーにownCloudまたはNextcloudをインストールする場合には、必ずHTTPSを有効にして、「あなたのクラウド」へのすべての通信を暗号化しましょう。
ネットワーク管理
ネットワークが正しく機能していなければ、コンピュータ間の通信は行えません。小規模なネットワークでは通常、ルーターで実行されている一連のプログラムがネットワークの設定を行い、ネットワークのセットアップと可用性のチェックをつかさどっています。これを実現するために、2つの基本的なネットワークサービス、DHCP( 動的ホスト構成プロトコル )と DNS ( ドメインネームシステム )が使用されます。
DHCPは、ネットワークケーブルが接続されたとき、またはデバイスがワイヤレスネットワークに入ったときに、ホストにIPアドレスを割り当てる役割を果たします。インターネットに接続すると、ISPのDHCPサーバーが要求元のデバイスにIPアドレスを提供します。 ローカルエリアネットワークでも、接続されているすべてのデバイスに対して、DHCPサーバーがIPアドレスを自動的に提供します。 DHCPが構成されていない場合や、DHCPが正しく機能していない場合は、ネットワークに接続されているデバイスそれぞれのIPアドレスを、手動で設定する必要があります。ネットワークの規模にかかわらず、すべてのIPアドレスを手動で設定することは現実的ではありません。そのため、ほとんどの(インターネット接続用の)ネットワークルーターには、事前に構成されたDHCPサーバーが付属しています。
IPネットワーク上の別のデバイスと通信するためにはIPアドレスが必要ですが、 203.0.113.165
のようなIPアドレスよりも、 www.lpi.org
のようなドメイン名の方がずっと記憶しやすいものです。ただし、ドメイン名だけでは、ネットワークで通信を確立することはできません。ドメイン名をIPアドレスに変換するために、DNSサーバーが必要です。DNSサーバーのIPアドレスはISPのDHCPサーバーによって提供され、ネットワークに接続されているすべてのシステムが、ドメイン名をIPアドレスに変換するために使用します。
DHCPやDNSの設定を変更するには、ルーターが提供するWebインターフェイスを使います。たとえば、IP割り当てを既知のデバイスのみに制限したり、特定のマシンに専用のIPアドレスを関連付けることができます。ISPが提供するデフォルトのDNSサーバーを変更することもできます。 GoogleやOpenDNSなど、サードパーティが提供する一部のDNSサーバーは、より高速な応答と追加機能を提供していることがあります。
プログラミング言語
すべてのコンピュータープログラム(クライアントプログラムとサーバープログラム、デスクトップアプリケーション、およびオペレーティングシステム自体)は、1つ以上のプログラミング言語を使用して作成されています。プログラムは、単一のファイルであることも、数百のファイルからなる複雑なシステムのこともあります。オペレーティングシステムは、プログラムを、プロセッサや他のデバイスによって解釈・実行される命令の並びとして扱います。
さまざまな目的のために多数のプログラミング言語があり、それらの多くをLinuxシステムで使用できます。オープンソースソフトウェアにはプログラムのソースが含まれているため、Linuxシステムは、開発者が自分のニーズに応じてソフトウェアを理解、変更、作成するための条件を完璧に満たしています。
すべてのプログラムは、ソースコード というテキストファイルから始まります。このソースコードは、プログラムが何をするかを記述する、多かれ少なかれ人間が理解しやすい言語で書かれます。コンパイル型の言語 では、コンピュータのプロセッサはこのコードを直接には実行できませんから、ソースコードをコンピュータが実行できる バイナリファイル (binary)に変換します。 コンパイラ というプログラムが、ソースコードから実行可能形式への変換を行います。コンパイルされたバイナリは特定のプロセッサ専用であるため、別の種類のコンピューターで実行するには、プログラムを再コンパイルする必要があります。
インタープリタ型言語 では、プログラムを事前にコンパイルする必要はありません。代わりに、 インタプリタ がソースコードを読み取り、プログラムを実行するたびにその命令を実行します。これにより、開発がより簡単かつ迅速になりますが、インタープリタによるプログラムは、コンパイルによるプログラムよりも遅くなる傾向があります。
以下に、最もポピュラーなプログラミング言語を紹介します:
- JavaScript (ジャバスクリプト)
-
JavaScriptは、主にWebページで使用されるプログラミング言語です。初期のJavaScriptアプリケーションは、フォーム入力の検証ルーチンのように非常にシンプルでした。現在では、JavaScriptは第一級の言語と見なされており、Webだけでなくサーバーやモバイルデバイスでも非常に複雑なアプリケーションを作成するために使われています。
- C
-
Cプログラミング言語は、オペレーティングシステム、特にUnixと密接に関連していますが、ほとんどすべての種類のデバイスにあらゆる種類のプログラムを書くために使用されます。 Cの大きな利点は、柔軟性と速度です。 Cで記述された同じソースコードをコンパイルして、ほとんどまたはまったく変更を加えずに、異なるプラットフォームおよびオペレーティングシステムで実行できます。ただし、コンパイル後のプログラムは、ターゲットシステムでのみ実行できす。
- Java (ジャバ)
-
Javaの主な特徴は、この言語で書かれたプログラムは移植可能であることです。つまり、同じプログラムを異なるオペレーティングシステムで実行できます。名前にもかかわらず、JavaとJavaScriptとは関係ありません。
- Perl (パール)
-
Perlは、主にテキストコンテンツの処理に使用されるプログラミング言語です。Perl言語は正規表現に重点を置いているので、テキストのフィルタリングや解析に適しています。
- シェル (shell)
-
シェル、特にBashシェルは、単なるプログラミング言語ではなく、他のプログラムを実行するための対話的なインターフェースです。 shellスクリプト と呼ばれるシェルプログラムは、コマンドライン環境における複雑な処理や反復的な処理をを自動化できます。
- Python (パイソン)
-
Pythonは、計算機科学(コンピュータサイエンス)専攻とは異なる学生や専門家の間で、非常に人気のあるプログラミング言語です。 Pythonは高度な機能を備えていますが、使いやすさからプログラミングの学習を始めるのに適しています。
- PHP (ピー・エイチ・ピー)
-
PHPは、Web用のコンテンツを生成するための、サーバー側スクリプト言語として最も使用されています。オンラインのHTMLページの多くは、静的ファイルではなく、サーバーがデータベースなどのさまざまな情報源から生成する動的コンテンツです。この種のコンテンツの生成には、PHPプログラム(PHPページまたはPHPスクリプトとも呼ばれます)がよく使用されます。 LAMPという用語は、Linuxオペレーティングシステム、Apache HTTPサーバー、MySQL(またはMariaDB)データベース、PHPプログラミングを組み合わせたものです。 LAMPサーバーは、Webサーバーを実行するための非常に人気のあるソリューションです。 PHPだけでなく、前述したいずれのプログラミング言語を使用しても、このようなアプリケーションを実装することができます。
CとJavaはコンパイル言語です。システムで実行するために、Cで記述されたソースコードはバイナリの機械語に変換され、Javaソースコードは Java仮想マシン と呼ばれる特別なソフトウェア環境で実行される バイトコード (bytecode)に変換されます。 JavaScript、Perl、シェルスクリプト、Python、PHPはすべてインタープリタ型言語であり、スクリプト言語 とも呼ばれます。
演習
-
以下に示すコマンドが、それぞれ Debianパッケージシステム のものか、Red Hatパッケージシステム のものかを特定しましょう。:
dpkg
rpm
apt-get
yum
dnf
-
UbuntuにBlederをインストールするコマンドは何ですか? インストールした後に、どうするとプログラムを実行することができますか?
-
LibreOfficeスイートのアプリケーションで、表計算は何ですか?
-
Google Chromeの開発基盤となっているオープンソースのWebブラウザは何ですか?
-
SVGは、ベクターグラフィックスのオープンスタンダードです。Linuxシステムにおいて、SVGファイルを編集する最もポピュラーなアプリケーションは何ですか?
-
以下のファイルフォーマットそれぞれについて、それを開いて編集できるアプリケーション名を書き出しましょう:
png
doc
xls
ppt
wav
-
ローカルネットワークにおいて、LinuxマシンとWindowsマシンの間で、ファイル共有を行うソフトウェアは何ですか?
発展演習
-
パッケージをシステムから削除しても、関連する構成ファイルは保持されることを学びました。 cups という名前のパッケージとその構成ファイルを、DEBベースのシステムからまとめて削除するにはどうすればよいでしょう?
-
多くのTIFF画像ファイルがあり、それらをJPEGファイルにに変換したい時に、コマンドラインでこれらのファイルを変換できるソフトウェアパッケージは何ですか。
-
Windowsユーザーから送られてきたMicrosoft Wordの文書ファイルを開くために、インストールする必要があるソフトウェアパッケージは何ですか?
-
linuxquestions.org は毎年、ポピュラーなLinuxアプリケーションの調査を行っています。サイト https://www.linuxquestions.org/questions/2018-linuxquestions-org-members-choice-awards-128/ を訪れて、経験豊富なLinuxユーザーに、どんなデスクトップアプリケーションが2018年に人気だったのかを探ってみましょう。(訳注:既に投票は締め切られています。年ごとの結果は、linuxquestions.org トップページのニュース欄からたぐることができます。)
まとめ
このレッスンでは、次のような事柄を学習しました:
-
主要なLinuxディストリビューションで使用されているパッケージ管理システム
-
一般的なファイル形式を編集するためのオープンソースアプリケーション
-
インターネットおよびローカルネットワークサービスの基礎となる、主要なサーバープログラム
-
一般的なプログラミング言語とその特徴
演習の解答
-
以下に示すコマンドが、それぞれ Debianパッケージシステム のものか、Red Hatパッケージシステム のものかを特定しましょう:
dpkg
Debian パッケージシステム
rpm
Red Hat パッケージシステム
apt-get
Debian パッケージシステム
yum
Red Hat パッケージシステム
dnf
Red Hat パッケージシステム
-
UbuntuにBlederをインストールするコマンドは何ですか? インストールした後に、どうするとプログラムを実行することができますか?
apt-get install blender
コマンドを使います。パッケージ名はほとんどが小文字でです。コマンドを実行するには、ターミナルからblender
コマンドを実行し、終了するにはアプリケーションメニューを使用します。 -
LibreOfficeスイートのアプリケーションで、表計算は何ですか?
Calc です。
-
Google Chromeの開発基盤となっているオープンソースのWebブラウザは何ですか?
Chromium です。
-
SVGは、ベクターグラフィックスのオープンスタンダードです。Linuxシステムにおいて、SVGファイルを編集する最もポピュラーなアプリケーションは何ですか?
Inkscape です。
-
以下のファイルフォーマットそれぞれについて、それを開いて編集できるアプリケーション名を書き出しましょう:
png
Gimp
doc
LibreOffice の Writer
xls
LibreOffice の Calc
ppt
LibreOffice の Impress
wav
Audacity
-
ローカルネットワークにおいて、LinuxマシンとWindowsマシンの間で、ファイル共有を行うソフトウェアは何ですか?
Sambaです。
発展演習の解答
-
パッケージをシステムから削除しても、関連する構成ファイルは保持されることを学びました。 cups という名前のパッケージとその構成ファイルを、DEBベースのシステムからまとめて削除するにはどうすればよいでしょう?
apt-get purge cups
コマンドを使います。 -
多くのTIFF画像ファイルがあり、それらをJPEGファイルにに変換したい時に、コマンドラインでこれらのファイルを変換できるソフトウェアパッケージは何ですか。
ImageMagick です。
-
Windowsユーザーから送られてきたMicrosoft Wordの文書ファイルを開くために、インストールする必要があるソフトウェアパッケージは何ですか?
LibreOffice ないし OpenOffice です。
-
linuxquestions.org は毎年、ポピュラーなLinuxアプリケーションの調査を行っています。サイト https://www.linuxquestions.org/questions/2018-linuxquestions-org-members-choice-awards-128/ を訪れて、経験豊富なLinuxユーザーに、どんなデスクトップアプリケーションが2018年に人気だったのかを探ってみましょう。(訳注:既に投票は締め切られています。年ごとの結果は、linuxquestions.org トップページのニュース欄からたぐることができます。)
ブラウザ: Firefox.、メールクライアント: Thunderbird、メディアプレイヤー: VLC、ラスターグラフィック(ビットマップ)編集: GIMP.