さて今回は珍しく真面目に(?)、どう情報を得るかについて書いてみたいと思います。そういう意味ではエンジニアが対象でインフラエンジニアという括りではないかもしれません。
ネットの世界は日進月歩、ある時点で十分な情報をもっていたとしても、そこで停滞してしまってはすぐに置いていかれてしまいます。そういった新しい情報をどう仕入れ続けていくかという点と、あとその時点で新しくはないかもしれないけれど自分の知らない必要な情報をどう手に入れるかについて考えてみましょう。
宣伝抜きにまずは「書籍と雑誌」
すぐに思いつくものとざっとあげると、本、環境、ネット、人あたりになると思います。
まず本ですが、大別すると雑誌と書籍になります。書籍はリファレンスやチュートリアルです。筆者はリファレンスとチュートリアルの使いわけというのはとても大事だと思います。チュートリアルなしの状態でリファレンスをかたっぱしから読むのも効率が悪いし、チュートリアルを読んでもリファレンスを読まなければ限定された知識だけになってしまいます。
そして、今はネット上に情報があふれていますが、それでも書籍の持つ役割というのはとても重要だと筆者は思います。もちろん、チュートリアルもリファレンスもネットで十分揃うようなケースもありますが、書籍のほうが優れているケースもまだたくさんあります。
次に雑誌ですが、こちらも、最新の情報を手に入れるのはやはり雑誌は良い情報源だと思います。
以前はインフラの知識を身につけるための雑誌といえば『UNIX Magazine』が聖書のようなものでした。しかしながら、『UNIX Magazine』の執筆者、購読者双方の年齢があがっていくにしたがって、『UNIX User』のほうが役に立つケースが増えるようになりました。ところが、『UNIX User』は『Open source Magazine』と名前を変えて、しばらく後に廃刊になってしまいました……。
そこでいまインフラ系(に限らずですが)の情報を一手に担っているのが『Software Design』と『WEB+DB PRESS』です(宣伝ではありません)。出版社で見るとアスキー→ソフトバンク→技術評論社と遷移してきていますね。なおこのあたりは完全に筆者の私見ですので、ご了承ください!
それはさておき、やはり雑誌というのは定期的に刊行されるという点がとても重要です。これによって定期的に情報を得ることが担保されることになります。もちろん内容の善し悪しは編集部の腕の見せ所になるのは言うまでもありません。インフラエンジニアであれば、今は『Software Design』と『WEB+DB PRESS』は購読しておいて損はないでしょう。
「環境」から何を、どのように得る?
次に環境ですが、環境と言ってしまうとよくわからないような気もしますが、ここで言っているのは、サーバの中のソースやmanやinfoやマニュアルなどの情報です。
特にオープンソースではなくて製品版のソフトウェアやハードウェアを使っているときには、マニュアルは必読なのは言うまでもありません。たとえばスイッチやルータ、ロードバランサーや、商用のデータベースやサーバスイートなどは、もうマニュアルを読まなければ何がなんだかわかりません。
また、オープンソースはその名前の通り、ソースがオープンなのですから、これを活用しない手はありません。ソースには全ての答えがあります。特に、深刻な問題が起こっているときは、その答えはソースにしかない、ということは多いものです。
先日のmixiで起きたmemcached障害も、結局はソースがその解明に大きく役立ったのだと思います。そんな情報は雑誌でも書籍でも見つけられないでしょう、きっと。またcore dumpするときも、吐いたcoreとソースから原因を追うしかありません。できるインフラエンジニアかどうかの分け目のひとつに、「ソースを億劫がらずに追うかどうか」というのがあると思います。
アプリケーションエンジニアはもちろん、インフラエンジニアもソースを読み書き(特に読み)する能力は必要なのです。ただ、オープンソースのソフトウェアは往々にして巨大なものが多かったりします。その巨大なソースの中から原因を見つけるにはコツが必要です。もちろんfindやgrepあたりが大活躍するのは言うまでもありません。
また、manやhelpなども有用なことが書いてあるものです。「manをひけmanを」や「RTFM(Read the fucking manual)」というのはもはやかなり古い言葉ですが、それでもこれらが重要な情報源であることは否めません。
ネット情報は吟味が必要
次にネットです。もちろん今はネットが最も活躍する情報源のひとつであることは間違いないでしょう。
ネットにしても、公式サイト、コミュニティサイト、ブログ、RSS、Twitter、Facebook、Skype、IRCなどその手段は枚挙に暇がありません。いかに速く欲しい情報に正確に辿りつくか、これももはやエンジニアにとって重要なスキルになっていると言えます。経験のある人もいるかと思いますが、人に何か聞かれてそれを知らなくても、勘所のある情報であれば数秒で答えに辿りついて答えることができる、というケースすらあります。
ネットの本や環境と違うところは、ノイズが非常に多いということです。関係のない情報、嘘の情報、古い情報などがたくさんあります。もちろん、本や環境にも嘘や古い情報はありますが、その比率といえばネットはケタが違います。なので、欲しい情報に辿りつくには、どう探すかに加えて、見つけた情報が正しいかどうかを見極める、ということが必要です。
「知らないことについてなのにそれが正しいかどうかどう見分けるんだ」と思う人もいるかもしれません。そこで必要なのが裏を取るという行為です。幸いネットには同じことについて別々の場所に異なる情報が複数存在するということはよくあります。そこで、最初に見つけた答えだけではなく、それ以外に見つかる情報を複数吟味していくと、だいたい正解はなにかというのはわかるものです。
また、ノイズが多いということは情報のcredibilityが重要だということになります。credibilityというのは情報の信頼性のことです。
繰り返しになりますが、本や環境にはあるにはありますが嘘や間違いはほとんどありません(でもあります)。ところがネットには嘘や間違いや古い情報はたくさんあるので、先程の裏を取るということが重要になるのですが、もうひとつ、その情報源のcredibilityはどうかを知るということも重要です。
たとえば公式サイトのcredibilityは非常に高いでしょうし、メインストリームのコミュニティサイトのcredibilityも比較的高いでしょう。また、credibilityの高いblogというのもあります。blogは、いつも信頼できる(時には公式サイトより信頼できる)blogもあれば、正しいこともあれば間違いもあるblog、だいたい間違っているblogなど玉石混淆です。
より信頼できるサイトを普段から多く知っておく、ということもインフラエンジニアにとって重要なスキルであるといえます。はてブのブコメなどはその指標の1つだと言えるでしょう。また「この人が推薦するサイトはだいたい信頼できる」というのも1つの指標です。Googleのページランクと同じようなものですね。
最後は「人」
そして最後に人です。やはり人というのは重要な情報源です。これはインフラエンジニアに限らずどころかエンジニアにすら限りません。職場の同僚や先輩であったり、同業他社の友達、勉強会などで出会う人など、そのパターンはさまざまです。ネットのところであげたSkypeやTwitterやFacebookは、人に入れるのがいいのかネットに入れるのがいいのか微妙なところではあります。
それはさておき、人がとても貴重な情報源である理由は、インタラクティブであることです。
本、環境、ネットというのは基本的に、情報を受け取ることしかできません。ところが人というのはこちらから能動的に働きかけ、その内容によって答えが変化するというのが一番の違いです。もちろんブログもコメントをつけたら返事がつく、ということはあるでしょうが、これもネットと人の境界が曖昧な部分があるためで、区分け自体が重要なわけではありません。
そしてもちろん人の場合にもcredibilityは重要です。いつもより信頼できる情報を与えてくれる人はとても貴重です。ただそういう人はえてして人気者なため、ネットのように都合の良い時にいつでもアクセスできるわけではありません。重要なのは「インタラクティブは相手の時間を拘束する」という意識を持つことです。
また、ネットや本でも得られることはありますが、人の場合の良い点の1つは、否定情報が得られるということです。「それはできない(不可能)」という回答を、ネットや本から得ることはなかなか容易ではありません。でも人からは(その情報をもっていれば)得ることができます。
また、もちろん、ただ情報を搾取するだけの関係など続きはしないですから、自分も他人のために貢献する、という姿勢を持つこともとても重要です。
本当に重要なのは「情報を得るための情報」
ここに挙げた以外にも手段があるかもしれませんが、だいたい情報を得るための手段は上記のようなものだと思います。筆者は少し古い人間なので、あまり参考にならないかもしれませんが、上記の4つの比率は、
くらいです。
そして最後にもうひとつ、情報を得る手段を持つことは重要ですが、情報を得る手段自体も変化しつづけるので、それ自体もつねに最新にキャッチアップしておく必要があります。