世間一般で広く利用されるLinuxを、効率良くしっかりと学ぶコツを教えよう。いまから始めて、応用の利くLinuxエンジニアを目指せ!
一昔前まではPCでUNIXを利用したいマニア向け(?)のOSとして親しまれていたLinuxですが、次第にサーバとしての利用価値が認められ、一般的にもサーバOSの選択肢に含まれるようになりました。
その後クライアントとしての用途が広まり、いまでは組み込み機器のOSとしても広く利用される状況になっています。
さらにLinuxには、インターネット上に豊富な情報が存在するという特徴があります。Linuxはインターネット上の有志により改良され発展してきました。そしてLinuxを開発、利用する人たちが得た情報をインターネット上に公開し、その情報を利用した人々がまた新たな情報を公開するという形で、情報量は増加していきました。このような豊富な情報はLinuxを利用するうえで非常に有効であり、Linuxを利用する大きな優位性になっています。
これらの背景から、Linuxを利用できる技術者へのニーズは業界に広くあります。技術者としての選択肢を広げる1つの材料として、Linuxはとても魅力のあるスキルといえるでしょう。
ご存じのとおり、LinuxはOSS(オープンソースソフトウェア)の集合体です。OSのコアであるカーネルはもちろん、周りを構成するソフトウェアの大半がOSSで構成されており、自由に利用することができます。これによりOSの構造、内部動作をソースレベルで確認できますし、ネットワーク構築の基礎、各種サーバの導入・設定方法、プログラミング言語と開発環境の利用などについて学ぶことができます。
さまざまなスキルを学べる半面、どこから手を付けていくか迷うところでもあります。明確に「Linuxを使ってこれを行いたい」という目的があるならば別ですが、漠然とLinuxを学びたいという場合には、ポイントを定めにくいのも事実です。
ただ、明確な目的があるにしろないにしろ、確実にいえることは、どのような場面においても必要となる基礎知識をしっかり学ぶことが重要だということです。
先ほど、現在Linuxはさまざまな場面で利用されているという話をしましたが、Linuxの利用において必要となる基礎知識は、サーバ用途であろうと組み込み用途であろうと変わりません。サーバ用途と組み込み用途を同様の知識(もちろん、差異はありますが)で取り扱えるということは、双方を知っている人なら、いかに劇的なことかが理解できると思います。このことからも、Linuxを学ぶうえで基礎の習得は非常に重要な要素だといえます。
私も業務でPC上のLinuxでサーバ構築、プログラミングを行っていました。開発業務が組み込み環境に移行しても、基礎知識はそのまま役に立っています。
さまざまな場面で必要となるLinuxの基礎知識として、以下のようなものを挙げることができます。
基礎知識に何を含むかについては、Linuxを使用する目的によって意見が分かれると思いますが、これらが最低限知っておいた方がいい知識であることは理解いただけると思います。これらの知識を十分に理解していれば、さまざまな場面で応用力を発揮できる技術者であるということもできます。より具体的な業務によった知識は、この基礎知識の上に成り立つものです。
ネットワークについては、目的によって利用しない場合も想定されます。しかし、サーバなどの利用をしない場合でも、Linuxのネットワーク設定の知識が必要になることがあります。例えば組み込み系の開発の場合、Linux環境でターゲットボードとPCを接続して開発を行うことがありますが、このときにネットワーク経由での接続を行うことがあるのです。
これからLinuxを勉強する人に、学習方法を紹介しましょう。まず学習の基本的な流れですが、以下のように考えられます。
A.目的設定
↓
B.インストール
↓
C.コマンドの学習
↓
D.Linuxの構造の理解
↓
E.目的に関する学習
↓
F.目的達成
すべてに共通していえることですが、理論と実践をバランス良く習得していくことが重要です。理論だけで実践できなければ意味がありませんし、実践だけでなぜそうなるかの理論が分かっていないと、本当の意味で理解したことにはなりません。
前述したとおり、Linuxは誰でもその理論を学べる土壌がありますし、それをすぐに実践することができます。こういった意味ではLinuxは学習教材としての性質も持っているといえるでしょう。
それでは、学習の各項目について解説します。
A.目的設定
まずは何でもいいので目標や目的を決めましょう。「サーバを構築する」でもいいですし、「プログラムの開発環境を構築する」でもかまいません。何らかの目的を設定したうえで前述の基礎知識を習得していく方法が、流れとしても理解しやすいのではないかと思います。
B.インストール
次にインストールです。現在のLinuxのディストリビューションのインストーラは昔に比べ完成度が高くなっているので、インストールができないというケースはあまりないと思います。ではなぜインストールを学ぶということになるのでしょうか。
もちろん、インストールをしなければそもそもLinuxを利用できないということもありますが、実はインストールフローにはいろいろな学習要素が隠れています。単純に考えても、ファイルシステム、ブートプログラム、パッケージシステム、マルチユーザー、セキュリティなどの概念がインストールフローの過程で必要になります。これらを知らなくてもインストールはできますが、知っていることによって任意の構成でLinuxをインストールすることができるようになります。
最初の段階ではインストール、環境構築、学習、再インストールを繰り返すことにより、インストールの理解が深まるでしょう。
C.コマンドの学習
現在のLinuxではGUI環境も充実し、WindowsなどのGUIをメインとしたOSと同様の操作性を実現しています。しかしLinuxの場合、あくまでも基本はCUIであり、その上にGUIを構築してあるため、どうしてもCUIでの操作が必要になることが多くあります。このためGUIが提供されていても、CUIの操作をマスターしておくことが必要になるわけです。極端なことをいえば、学習しているうちはGUIは使わない方がいいかもしれません。
コマンドを学習する際、押さえておくべきポイントは以下のとおりです。
viはLinuxの標準テキストエディタであり、さまざまなプログラムでデフォルトエディタとして設定されています。独自の操作性を持つエディタなので、ある程度の知識がないと操作が難しいですが、コマンドの実行やプログラムの設定で自動的に起動されることもありますので、やはり基礎知識として知っておく必要があります。
コマンド実行の方法については、特にCUIで操作を行う際の基本であり重要な知識となります。パスの概念、環境変数などと併せて理解していれば利用用途の高い知識となるでしょう。
以上を理解できれば、あとは用途に合わせて各コマンドを利用するだけです。
D.Linuxの構造の理解
基本的な操作が可能になったら、Linuxの構造について学習します(これは次の「E.目的に関する学習」と並行して、もしくはその後でも問題ないかと思います)。
Linuxの構造といっても、ここで学習する内容はディレクトリ構造やファイル構成、ブートシーケンスなどがメインです。これらはディストリビューションにより差異がありますので、1つのケースとしてこのような形になっているというふうに理解していれば問題はないと思います。
ブートシーケンスに関しては、突き詰めれば非常に奥が深くなってしまいます。とはいえ、どのようなシーケンスでLinuxが起動するかを知っておくことはLinuxの構造を理解するうえで不可欠な要素なので、概略程度は理解しておいた方がよいでしょう。
これらを総合的に理解する最良のテーマは、Linuxのブートディスク、レスキューディスクといわれるものを一から自分で作ることです。
E.目的に関する学習
ここまで理解できたら、次はいよいよ目的に関することを学びます。ただマニュアルどおりに実践していくのではなく、なぜこのようなことをしなければならないか、どうしてこうなるのか、といった理論も同時に理解していくことが重要です。
例えばサーバ構築を行うという目的を設定した場合、必要となる知識としてネットワーク、各サーバアプリケーションのインストール、設定、利用するサービスのプロトコルなどが挙げられます。マニュアルどおりに進めていけば、取りあえず動く形にはなるでしょう。しかし、それでは学習したことになりません。特にネットワークの場合はTCP/IP、サービスのプロトコルなどについてよく理解しておく必要があります。
すべてに共通することですが、突き詰めていけばどれも奥深い内容になります。ただ、基礎知識をしっかり理解できていれば、あとは自分の興味や業務に合わせていくらでも掘り下げることができるようになるでしょう。ここまでくればいろいろな世界が開けてくると思います。そこであらためてLinuxを面白く思うかもしれないですね。
F.目的達成です!
最後に、Linuxに関連する資格についても触れておきます。
技術を習得する目標の1つとして、資格の取得を挙げることができます。Linuxに関連する資格はいくつかありますが、特に近年Linuxの資格として広く認知されているのがLPI認定(LPIC)です。
LPICは、カナダに本部を置く国際的なNPO団体、Linux Professional Instituteが実施している世界共通の認定資格です。ベンダ系の資格と異なり、特定のディストリビューションに偏らない、Linux全般に必要とされる総合的な知識を認定します。コミュニティベースで運営されているため試験の開発もオープンな形で行われていますし、国内外の企業がスポンサーとなって支援している点も特徴的です。
LPICでは試験に3段階のレベルを設けて、それぞれに対応する試験科目を用意しています。Level1(初級)ではLinuxの導入から基本的な設定、管理などが広範囲に網羅され、Level2(中級)ではその応用が問われます。
Level3(上級)ではLDAP、PAM、キャパシティプランニングなど、さらに専門性が問われる内容になっています(日本では2007年1月開始予定)。
まずはLevel1の取得を目標として学習するというのも、方法としてはいいかもしれません。Level2まで取得すれば、網羅的にLinuxを理解することができるでしょう。
ただし資格取得が目的となってしまい、実践が伴わなければ意味がありません。あくまでも目標の1つぐらいに考えた方がよいと思います。
ここまで、Linuxの学習方法を紹介してきました。基礎をしっかり押さえることを心掛け、設定した目標に向かって一歩一歩進んでいけば、応用力の十分あるLinuxエンジニアを目指すことができます。その段階まで進むことができれば、Linuxをさらに面白く感じることになるかもしれません。
エイチアイ 技術情報部 部長
末永貴一(すえながよしかず)
ヒューマンインターフェイスの研究開発、コンテンツの開発を行うエイチアイで情報提供、技術調査、開発援助などを行う業務を担当し、自社独自の3DリアルタイムレンダリングエンジンであるミドルウェアのMascotCapsuleを中心とした開発に従事。数年前にLinuxを知ってからはサーバ構築、開発、教育、執筆などさまざまな場面でかかわるようになる。
Copyright © ITmedia, Inc. All Rights Reserved.