翔泳社が8月21日(金)に刊行した『入社1年目からの「Web技術」がわかる本』は、視覚表現からネットワークの基礎知識まで、Web技術を広く網羅した解説本です。個別の要素技術やツールの使い方について説明した書籍がある中で、本書ではWeb開発者や設計者が仕事をするにあたって知っておくべきWeb技術の全体像を描写しています。
著者の濱勝巳さんはアーキテクチャ設計などのコンサルタントを主業務とする株式会社アッズーリと、IT運用支援サービスを行う株式会社アジルコアの取締役。もともとエンジニア出身でファームウェア開発に携わっていた濱さんは、近年エンジニアの基礎知識の不足を問題視されています。
本書で解説されているHTMLやCSS、ECMAScript(JavaScript)、HTTP、セキュリティ、そしてインターネットの仕組みや構造は、濱さんに言わせればプロの開発者や設計者を名乗るのであれば、最低限必要な知識。そこで今回、濱さんにその問題意識と本書について話をうかがいました。
Web技術をコンパクトに網羅した教材がなかった
――よろしくお願いします。濱さんは二つの会社の取締役ですが、もともとはどういう仕事をされていたのでしょうか。
濱:私は1990年にメーカー系の子会社に入社して、ファームウェアの開発をしていました。ソフトウェアどうこうより、メモリに正しく書き込めるかどうかも怪しい時代でした。だから、ソフトウェアでできることも少なかったので、コンピュータの基本的な仕組みや構造を先に覚えました。
その後フリーランスになり、起業する中でアーキテクチャの仕事を始め、それを支える基礎的な技術や知識が大事だなと思うようになったのです。
――会社経営に関して苦労したことはありますか?
濱:アジルコアで新人研修を行なっていると、プログラミングの指導に入る前にネットワークの仕組みなどWeb技術全般の基礎知識が必要なことが分かってきました。これまでは直接指導をして足りない知識を補ってきたのですが、自分で学習するとなるとそれぞれの要素技術を解説している本をたくさん読まなくてはなりません。Web技術についてコンパクトにまとまった1冊がなかったのです。
社員によって知らないこともばらばらでしたし、教え続けるにはたいへんなので教材を探していました。本書は担当編集の佐藤さんと、「そういう本があったらいいね」と話したことから制作がスタートしました。
分業の時代が終わりつつあり、基礎的な知識も重要になる
――25年前に比べて、Web開発に関わらずさまざまな分野で分業が進んだと思いますが、そのせいでどこから勉強し始めたらいいのか分からない方もいるのでしょうか?
濱:たしかにそれもありますが、一方で分業の時代も終わりつつあって、幅広く知識を持たないといけない岐路にあるのではと。プロダクトができ上がったらOKというものではなく、その前提や技術の背景を知ったうえで技術開発に関わってほしいと思っています。
エンジニアの人たちが専門分野以外、あるいは今日の仕事をこなすために必要な技術以外をあまり勉強していないように見えるのは、面白い本や雑誌がなくなっているのも理由ですし、そもそも機会がないというのもあります。
枠組みをこちらで作ればフレームワークなどを使って仕事ができるのですが、結局それがどういうふうにできているのかというベースにある技術を分かっていないので、応用が利きませんし、時代や技術が変わるとついていけなくなります。
若い人は学習が早くても、基礎がないのでフレームワークの使い方を単純に覚えるだけになってしまいます。それでは将来が辛いですよね。技術を学ぶにしても、自分で考えられるようになり、解決策を導き出せるようになってもらいたいです。
Web開発の専門分野を深堀していくきっかけに
――本書は具体的にどういう読者を想定していますか?
濱:まずはうちの若い社員に読んでもらいたいですね。彼らに向けて書いたものでもありますから。社員には「はい、最低限」と言って読んでもらおうと思っています。これを知っているからといってすごいわけではないですが、仕事にするにあたっては当然知っていてほしいことですから。
この記事の読者も抱えている問題は同じなのではないでしょうか。Web技術は知らないといけない範囲が広すぎますからね。
――「入社1年目」とタイトルにありますが、これは会社に入りたての方や開発者として仕事を始めたばかりの方などを意識しての命名なのでしょうか。
濱:入社してからも当然読んでもらいたいですが、どちらかというと、入社1年目の方でも最低限知っておいてほしいという意味です。Web技術は昔に比べて広く深くなっていますから、全部を知ることはできません。ですが、本書が専門分野を深掘りしていくためのきっかけになってくれればいいなと考えています。
「どうだこの野郎、分かんないだろ」がちょうどいい
――本書はWeb技術をまだ知らない人、本当に入社1年目の方が読むと難しい内容だと思いますが、本書でつまずかないようにするにはどうすればいいんでしょうか。
濱:Web技術は簡単じゃないので、「どうだこの野郎、分かんないだろ」というくらいがちょうどよいのではないですか? 何が書いてあるのかちょっと分からないような本のほうがいいと思います。いまの時代はいろいろ易しすぎますし、分かった気になってもらっても仕方ないでしょう。それでも簡単になるように書いたつもりです。
自分が読んでわからない本を買えとよく言われますよね。分かる本はその先使いませんから。なので、本書もできるだけ長く使える本であってほしいなと思って、Web技術は難しいという雰囲気を出して書きました。これを踏み台にして理解して次のステップに行ってみてください。
内容のレベルとしては、自分が普段手元に置いておきたいと思うくらいです。覚えるのはたいへんなので仕事中に印刷したゲラを横に置いていたのですが、「あれ?」と思ったときに開いてみたらなかなか使えました(笑)。
作業に没頭するだけでなく、面白いことをしようと考える
――本書の章立ては全体像の説明から始まり、技術者でなくても使う方の多いHTMLやCSSから、徐々にHTTPやセキュリティなど専門的な内容になっていっています。これにはどういう意図があるのでしょうか。
目次
はじめに
第1章 Webを取り巻く技術とは
Web技術の背景、クラウドコンピューティング、UX、マーケティング、
セキュリティ、セマンティクス、標準化
第2章 セマンティックWeb ― HTML5
HTML5、HTML構文、セマンティックと構造、WebアプリケーションAPI
第3章 視覚要素の表現 ― CSS
CSS、CSSの構文、セレクタ、メディアクエリ、@ルール、CSSの利用、
ボックスモデル、値の単位、色の指定、位置決定スキーム、プロパティインデックス
第4章 スクリプト言語 ― ECMAScript
ECMAScript、式と演算子、リテラル、予約語、文、関数
第5章 Webサービスの設計思想 ― REST/HTTP
RESTとHTTP、RESTの概念、URI、HTTP/1.1、HTTP/2
第6章 データ交換と表現 ― JSON
メディアタイプ、JSON
第7章 Webセキュリティ
セキュリティの三大要素、脆弱性への対策、Webアプリケーションの脆弱性、
暗号化、メッセージダイジェスト、PKI、改ざんの防止、認証、CAPTCHA
第8章 インターネットプロトコル
インターネットプロトコル、アプリケーション層、トランスポート層、
インターネット層、ICMP、OSI参照モデル
付録 リファレンス
濱:まず第1章で全体像を知ってもらうようにしました。ここで、Web=簡単というイメージをなくしてほしいですね。そのあと、HTMLで表現する、それをCSSでデザインする、ECMAScript(JavaScript)でダイナミックにするというところから、アプリケーションに必要なサーバーサイドのことやセキュリティ、そして最後にWebサービスのベースとなるネットワークの知識を学んでもらいたいです。
設計者の仕事は新しい何かを生み出すこと
――このように全体を広く学ぶことで、どういったメリットがありますか?
濱:専門分野をより深く知ることができますが、なにより要素技術を組み合わせて使えるようになるのが利点です。一つ一つの技術でできることはそこまで広くありません。HTMLやCSSだけを覚えると目の前の作業はこなせますが、「プロダクトを作ること」に意識は向きませんよね。開発者や設計者になるには、技術をいかに組み合わせて使うかというアイデアが大事です。
既存のプロダクトのことを書いていないのも同じ理由です。与えられたもので与えられた仕事をするだけでなく、何かを生み出してほしいからです。いま標準化されている技術やツールは数学の公式みたいなもので、「こうやればうまくいく」と初めから決まっています。いわば誰でもできるのです。
そこにはアイデアはありません。ですから、日々の仕事だけに囚われず、技術と技術を組み合わせて新しいアイデアやビジネスを生み出してください。どうやって生み出せばいいのか難しいかもしれませんが、それこそが設計者の仕事なのだと思います。