システムエンジニアインサイド013〜知ってる技術と使える技術〜

このシリーズを書くときにいつも気にしているのが「あまり悪口にならないようにしよう」ということ。元々一開発者の愚痴の垂れ流しなので
多少の悪意は入るのだが、あまり入りすぎると本当にただの愚痴になってしまい、読んで気分が悪くなるような代物になってしまう。

実は013として一本書いた物がかなりそれに近い物になってしまい、手直ししたら今度は説教臭いITmediaのブログみたいになってしまう始末。
(べつにあのブログがいいとか悪いとかではなくて私のページとはカラーが違うというだけのこと)

どうしたもんかと思っていたら良い感じで新しいネタが入ってきたのでそっちを書いて掲載したのが今回の文章。



そんな言わなきゃ誰も分からない裏話を頭書きにして今回のSEI。タイトルは「知ってる技術と使える技術」
技術を技術書で勉強すれば現場で使えるかと言えばそうではない、そんなお話。



さて、今ウチのプロジェクトは設計真っ盛り♪ 設計フェーズのうち外部設計が終了し、内部設計に移ろうかという場面だ。

現在の私のプロジェクトメンバーは、私と私より一回り年上のSさん、今回が初のインフラ基盤プロジェクト担当になるSE4年目のAクンという3人が主軸。
まあ私より一回り年上の人間がいるのに何故私がプロジェクトリーダやってるのかとかいう疑問は置いとけ。

Aクンはウチの会社のインフラ基盤の体制強化という目的の下、育成要員として今回のプロジェクトに参画している。今まではプログラム開発という
畑違いのプロジェクトにいたため、インフラ基盤の作業は中々大変そうだがそれでも何とか頑張ってくれている。

もちろん育成要員なので仕事の出来映えやスピードは私の4割程度と言うところだが、まあ、それは仕方がない事である。
彼にかかっている費用を全てプロジェクトの予算内でまかなっており、会社としては育成費用を一銭も出していないため
コストパフォーマンスが異常に悪いのは彼の責任ではない。



育成要員でスキル的には不足しているからと言って出来る仕事だけ任せても仕方がない。時間がかかっても良いので必要な事を覚えさせないと
私の仕事が減ってくれない。と言うことで、比較的簡単なディスクのサイジングをお願いすることにした。
細かいことは割愛するが、このシステムではどれだけのデータ量があり、そのデータを格納するためにはどれだけの容量のハードディスクを
何本用意しなければならないか
を決める仕事だ。



例を挙げよう。200GBのデータを格納する必要があるとし、ハードディスクの容量は100GBの容量の物が使えるとする。そうなると、

200GB /100GB = 2本

となる。たったこれだけの簡単なお仕事ではあるが、実際にはRAID(ハードディスクを壊れにくくしたり、動作を速くしたりするための仕組み)を
考慮しなければならないので必要となる本数は多少増える。それでも、四則演算の範囲で収まる話だ。



と言うことで早速やってもらった。必要となるデータ量を積み上げたところ、格納が必要なデータ量は130GB強。これを格納するのは146GBの
ハードディスク。
で、RAID構成は1+0(※)、ディスク本数は4本。ここまでは順調だ。
では、格納が必要なデータは置いといて、利用できるデータ領域は何GB?

※……今回はデータベースなので書き込み速度と信頼性を両立できる1+0を採用。よく分からない方は「そういうものなのだ」ということで。



A君「えーと、146GBです」



……んーっと? RAID1+0のディスク容量は「ディスクの合計容量/2」(今回の場合は292GB)となるのだが……

私「えーっと、RAID1+0の仕組みは知っている?」

A君「ミラーリング(RAID1)したものを、ストライピング(RAID0)するんですよね」

私「うん、その通りなんだけど……計算間違いしているようなので、もう一回計算してみてくれないか?」



私が教えた方が、この場の進行は早いのは百も承知。しかし、彼自身に答えを出してもらわないとここは困る。
正直に言えば、この基礎的なレベルでつまずかれると今後の作業に支障が出るからだ。

3分ほど計算し、彼は答えた。



A君「73GBですか?」



減ってどうする。



私「いやいや、それじゃそもそも容量足りないでしょ。えーと、まず、146GBのディスク2本をミラーリングしたら何GBになる?」

A君「……146GBです」

私「じゃあ次に、146GBのディスク2本をストライピングしたら何GBになる?」

A君「292GBです」

私「じゃあ、2本のディスクをミラーリングしたディスクのセットを2組作って、それをストライピングしたら何GBになる?」

A君「え、146GBですか?」

私「……何故に?

A君「え……4本ディスクがあって、ミラーリングする……から……」




この後、紆余曲折あり彼が「292GB」という回答にたどり着いたのは最初に「146GB」という回答を出してから1時間後
流石に私もここまで時間がかかるとは思わなかったが、正しい回答にたどり着いて、その理由も理解してくれたからよしとしておこう。






さてこの話、A君の無知を笑うために書いた物ではない。コレを読んでいる人にも少し考えてもらいたい。

A君は「RAID0」も「RAID1」も「RAID1+0」も「ミラーリング」も「ストライピング」も知っており、その概念も説明することが出来た。
では、何故容量の計算が出来ず、また正解を導き出すまでにこれほど時間がかかったのだろうか。






端的に言ってしまえば「技術は知っていたがそれを使う事が出来ない」状態だったからである。こういう人は結構多い。

技術要素や概念は知っているし理解している。だが、それを実際の設計で利用する時、今回であればディスクが何本必要だとか、容量は何GBになるだとか、
そういうレベルになるととたんに出来なくなってしまう。
つまり覚えた理論と目の前にある現物が結びついていないわけで、今回はその典型例と言えるだろう。



この話、進めて行くと「資格だけ持ってても……」とかいう議論になりがちなのだが、個人的には現場で役立つ「実践力」と他人に説明するための「理論」
両立しないとSEとしてはやってけないだろうなと思うのでどっちが先でも良いと思う。

ただ危惧するのは自分がよく分からない技術に関して「実際にやってみる」と言うことをしない人が増えている印象があり、そうなると今後技術を「使えない」人が
増えそうだなあと感じていることだ。
せめて私が関わっている人間だけは、という思いでプロジェクトを進める今日この頃である。



理論の蓄積と実践、試行は技術者の基本。……なのだが、どうもウチの会社の人たちはそうではなくなっているらしい……

Written by Kamiya



と、さも私がこのプロジェクトを引っ張っていこうとしているように見えるが、その実「お金がない」という理由でこのプロジェクトから追い出されそうになってたりして。
プロジェクトリーダ追い出すとか一般的にはあり得ないのだが、こうしようとしているのは幹部社員(課長とか部長とか)の方々。
やはりウチの会社、色々とおかしな方向に向かっているのは確かのようだ。

2011/10/10 初稿