サーバの勉強の進捗 〜「独習Linux専科」を通して〜

サーバとは何か? がまったくわからないところから、それについて勉強している。

それが何か、まったくわからないにもかかわらず、なぜ勉強したいと思えたのかと言えば、たぶん ISUCON などのWebの裏側にまつわるあれこれを見聞きするうちに、うわ、すごい楽しそうだ、という印象を得て、実際にそこで何が話されているのかを知りたくなったから、ということではないかと思っている。

ギリシャ語でものすごく楽しそうにしゃべり合っている人たちがいつも近くにいたら、彼らが何を話しているのか知りたくなって、とりあえずギリシャ語を勉強してみるというような、そういう感じかもしれない。

サーバの勉強をしてみる、という記事は以前にもこの辺で書いた。(上から古い順に)

この3番目のリンク先で、半ば依存症的に買い込んでしまった参考書が紹介されているけど、それらにしても全くテキトーに買い込んだわけではなくて、「Webアプリエンジニア養成読本」のサーバ編で紹介されていた参考資料リストを元に買っている。

Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)

Webアプリエンジニア養成読本[しくみ、開発、環境構築・運用…全体像を最新知識で最初から! ] (Software Design plus)

このムックはPHPRubyのWAFを中心に幅広くWebアプリケーションの制作の流れを紹介しているので、それらLL言語の基礎や概観を把握するのにも良いが、サーバ構築やサービス運用といったいわば裏方の部分について知るための取っ掛かりも多くあってそれが良い。

で、今はそのタイミングで買った「独習Linux専科」を中心に据えて、少しずつ基礎の理解に努めている。

実はと言うか、上記のムック内で紹介されていたのは同じ著者による別の本(「プロのための Linuxシステム構築・運用技術」)なのだけど、それを買いにいった書店で隣にこれが置いてあって、パラパラめくったら面白そうだったので一緒に買った。
この直感は結果的に正しくて、これはもう一つの方(「プロのための〜」)に比べてずっと初心者向け、かつ独学向けなので、読むほどに自分の環境にフィットしていると感じる。

さて、サーバの勉強といっても、今やっているのは物理的に機器を購入したり触ったり接続したり、ということではなく、Vagrantを中心にLinux OSに触れる、というようなことで、いわゆる物理サーバ的なことについては、そうしたLinux操作の基本にある程度慣れてから、ということになるかもしれない。

というかそもそも、僕のような非エンジニア環境にある人間が物理サーバに触れるというのはなかなかハードルが高くて、まずは出来るところから、という感じだろうか。

この「独習Linux専科」にしても、ものすごく内容は面白いのだけど(文章が論理的かつ柔らかくて素晴らしい。最近、小飼弾さんの文章を読んだ時にもそのように感じたが、別の表現のあり方で似たことを実現している気がする)、「とりあえず学習用のWindowsを2台用意する」ということが前提に話が進められているので(!)そこでいきなり盛大につまづいたというか、「いや無理です・・」みたいな感じになったのだけど、少し粘って「マシンを購入しなくても何とか手元で試しながら勉強できないかな・・」と考えた末、「あ、Vagrantで何とかなるのでは?」となって、実際、完璧とは言えないまでもとりあえずOKかな、という感じにはなったので、まさに「まずは出来るところから」という感じになっている。

具体的には、同書ではサーバとして使用するWindowsマシン(サーバ用)と、それにリモートログインして、ログインした先のLinuxを操作するためのWindowsマシン(操作用)の使用が想定されているのだけど、前者のサーバ側のマシンを、僕がメインで使用しているMacVagrantを使って立ち上げたLinux(Fedora20)にして、後者の操作側のマシンを、普段はサブマシン(外出時やリビングでのリラックス時などのポータブル用途)として使っているMacBook Airとして、そこからリモートログインさせる構成にしてみたら、何とかそれっぽいことができるようになった。

この際、本当は操作側のマシンもメインのMacにして、1台の中で済ませたっていいわけだけど(というか面倒なときはそうしているけど)、「別のマシンからリモートでログインする感じ」という空気感がなんか大事な気がしてそうしてみたら出来たので、いずれにせよこれでとりあえずは新しいマシンを買わずに済んだ・・ということで、個人的には大きな一歩(クリア)だった。

よって、もし同書を読んで「ええ・・マシン買うの? 無理・・」と思っている人がいたら、そんな方法もありそうですよ、とは言っておきたい。

ただ、僕はまだ同書の全350ページ中92ページまでしかやっていないので、この後それじゃ乗り切れない部分も出てくるかもしれない。

というか、すでに結構そういう影響は出ていて、たとえば同書ではFedora17を使う前提で話が進んでいくのだけど、Vagrantで構築できるFedoraは、一番古くても(僕が探した範囲では)18なので、まったく同じ環境、というのを作ることができない。

実際、試しに18でもやってみたけど、やっぱりところどころで本の記述の通りにはなっていなかったりして、だからそういう場合にはCentOSの6系や7、そしてFedora18以降などをそれぞれ起動して、本の通りに動作するものを見つけては「ああ、たしかにそうなるわー」なんつって一つ一つ試している。

とはいえ、おそらくこの辺の個人的な読み替えやそれにともなう混乱は、今後CentOSFedoraなどのLinuxの歴史的経緯や違いなどを知っていくにつれ、自然に解消されていくとも思う。

操作用マシン(MacBook Air)からサーバ用仮想マシンVagrant上のLinux)にどうつなげているか、その際にどうハマってどうクリアしたか、といったことについても、その一つ一つがまた個人的にはけっこうな一大事だったので、機会をあらためて書いていきたいと思っているが、ひとまず今回は、この「独習Linux専科」の前書きにとても共感する良い文章があったので、引用して記事を締めくくりたい。

これは普段から僕がプログラミング入門のモチベーションとして挙げている話と非常に共鳴する。

 筆者は、これまで「プロのLinuxエンジニア」に向けた書籍を出版してきました。昨年の末ごろ、それを聞きつけた方に、こう問いかけられたのです。――「Linuxを使えるようになるには、何をすればいいのでしょうか?」
 その方の本業は応用科学の研究で、ITの専門家ではありません。それでも、「もはやLinuxを知らないわけにはいかない」と感じたそうです。多くの同僚がLinuxを研究に活用しており、「Python」だの「Ruby」だのと言った、謎のキーワードで会話をしているそうです。それはそれは「楽しそうに」!
 おそらく、その方の研究に、Linuxが必須というわけではないのでしょう。研究に必要なソフトウェアは、探せばきっと、Windowsにもあるでしょう。でも、本質はそこではありません。彼は、嬉々としてLinuxを使いこなす同僚が羨ましかったのです。「Linuxの魅力を理解して、彼らの仲間になるには、何をすればいいのでしょうか?」――これこそが本当の質問だったのです。

わかる、わかるよ! その気持ち!!