「たった5年で激変したITエンジニアの基礎スキル」というコラムを書いたところ、意外なほど話題にしてもらった。今回は、『ネットワークの基本がまるごとわかる本 増補・改訂版』の編集を通じて「この知識は後10年使えるし、きちんと身につければ仕事の進め方にも応用できる」と思った3つの基礎スキルを紹介しよう。
レイヤーごとに、よく似た技術の長所短所を覚えよう
ロングセラームックを5年ぶりに大改訂した「ネットワークの基本がまるごとわかる本 増補・改訂版」 |
ネットワーク技術は「OSI参照モデル」と呼ばれる7階層モデルやTCP/IPの4階層モデルに分類できる。インターネットやWebで使われているあらゆる技術はレイヤーごとに役割があり、よく似た目的に利用できる技術でも、長所短所が異なる。
たとえば、PCサイトからスマートフォンサイトに誘導するときの方法を考えてみよう。まず、WebサーバーはHTTPを処理する、つまりOSI参照モデルでいうセッション層で動作しているので、クライアントがPCなのかスマートフォンなのかをHTTPヘッダーで判断し、HTTPに用意されているリダイレクトの仕組みでPCサイトからスマートフォンサイトに強制的に誘導する方法がある。
一方、HTMLに判断用のJavaScriptを仕込み、クライアント側で自分自身がPCなのかスマートフォンなのかを判断し、スマートフォンであればスマートフォンサイトに移動する方法もある。
Webサーバーに処理させればサーバーの負荷は多少高まるがクライアント側のHTMLを書き換える必要はない。クライアント側に処理させるとPCサイトのサーバー負荷は変わらないが、HTMLを書き換える必要があり、クライアントはページを2度読むことになる。PCサイトとスマートフォンサイトのサーバーが同じだと、サーバーの負荷はスマートフォンサイトのアクセス分増える。
HTMLにJavaScriptを仕込む方法も考えなければならない。CMSを使って全ページのHTMLにJavaScriptを追加するのか、SSIを使って動的にHTMLを書き換えるのかも同じ目的を達成するためのレイヤーが異なる手段だ。「どうすれば実現するか?」を考えるとき、異なるレイヤーではどうするか、どれが合理的かをいくつかの案で検討するのはITエンジニアの基礎スキルとしてもっとも重要だろう。
TCPのように、つねに確認しながら仕事をこなそう
TCPは、インターネットで効率よく、確実にデータを届ける仕組みだ。TCPでは一度に送るデータ量を徐々に増やしていき、経路や受信側で処理できないと一度に送るデータ量を減らすアルゴリズムを使ってデータ伝送を効率化している。また、データが届いたことを受信者からの応答によって確認することで、確実にデータを送る仕組みになっている。
TCPの考え方は、仕事の進め方にも応用できるだろう。たとえば、初めて仕事を任せる部下に一度に大量の作業を割り当てるのではなく、徐々に作業量を増やして様子を見る。ミスが増えたり、不満を言い出したりしたら作業量をいったん減らし、少しずつ増やしながらきちんとこなせる作業量を見極めればいい。また、仕事を任せきりにせず、日々確認しながら進めるのもTCP的な方法だ。
HTTPのように、シンプルな仕事のやりとりを心がけよう
Webページのやりとりに使われているHTTPは、クライアントからの要求に対してサーバーが応答するだけの、とてもシンプルなやりとりを基本にしている。電子メールで使われるPOP3/IMAP4がユーザー認証やメッセージの取得などでコマンドを使い分けるのとは対照的だ。
要求と応答だけというシンプルなやりとりは仕事をスムーズに進める上でも参考になる。特にたくさんの案件を抱えているマネージャーは、部下の仕事の進捗がどうなっているか、いちいち把握していない。そんなマネージャーに、現在の仕事の状況、判断のための材料などを報告や相談のたびに説明していたら決断までに時間がかかってしまう。そこで、「○○の件は△△のやり方で実現したいかよろしいですか?」という要求の形で相談し、マネージャーからは「よい」「だめ」という応答だけをもらうようにする。
GoogleやAmazonのAPIで使われているRESTでは、この考え方を徹底しており、クライアントはサーバーに対する要求をURIの形式で記述する。大量の処理をこなすために使われているシンプルな方法は、実際の仕事にも活用できるはずだ。