January 25, 2011
Webのエンジニアにはどういうスキルが一番必要か?という話を考えてみた。
例えば、C言語やUnixの経験が長く、オブジェクト指向も理解していたとしたら、PHPから始まり、Rubyなどの理解は決して難しくないだろう。
では、それだけの経験で一線級のWebエンジニアとしての信頼が置けるかというと、ちょっと違うような気がする。
考え方のベースは、
「Webは、要するにテキスト処理であることが多い。だから難しい」
ほとんどの事がHTTPプロトコルを通じてテキストデータとして情報が、なんのネットワークの制約もなく流通する。つまり、HTTPヘッダを含むテキストの操作でセキュリティホールを作り、それが世界のどこから攻撃されるかわからない。
また、
同様に世界中からアクセスが集まることがありうるので、回りくどいテーブル設計をしてしまうと、あっというまに破綻してしまうこともある。
そして、
基本的にマルチアクセスである。同時に複数の人がアクセスすることを想定した仕組みになっている必要がある。その様が設計で想像できるか?
これらをまとめると、
「セキュリティとスケーラビリティ」
ということになる。ここに一種独特の世界があると言えよう。
さらに言うと、Webは「スピード競争」なので、じっくり確実に開発するよりも、若干荒めでも、荒いことを意識できていることが大前提で、スピーディに開発できることが求められる。
きっちり全てを積み上げるというよりは、割り切るところは割り切って、「うまくやる」ことが求められる。
争乱の中を通じて、サービスを成長させ、あわよくば、自分の都合の良いようにまとめていく、という周到さが求められる。ビジネスセンスというよりは、「エンジニアとしての周到さ」かなと思っている。そう言うには、経験が必要なのかもしれないが。
さらに、最近は設計に対して、幅広い知識やセンスが求められるような気がしている。
例えばapiやURLの設計。最近は、他のサーバーやFlashやiPhoneアプリなど様々なソフト間の通信をHTTP、HTTPSプロトコルを通じて通信する設計をすることが日常的に増えていると思う。
この設計においては、何せHTTPですからオブジェクトのデータをテキストに変換してデータを受け渡すので、パラメーターも含めて、ややこしくしようと思えばややこしくできるし、変数名も含めて、かっこわるくしようと思えば、いくらでもかっこわるくできる。ここが設計のセンスということになるだろう。
少なくとも、認証系などは如何にエレガントにするか?は常に求められるような気がする。
さらに、標準化されたオープンプロトコルに合わせて行く知識やスキルも必要になっていくだろう。オープンプロトコルに合わせる理由は、相互接続性の確保がビジネスに繋がるのと、設計理論が保証されているので、安全だということ。車輪の再生産で劣化してしまうのであれば、それを選択しなかった理由はしっかり答えられる必要があるだろう。
まとめると、
1、どんなシステムでも必要になるのが、セキュリティ
2、ヒットしたサービスで必要になるのが、スケーラビリティ
3、ビジネスをスムーズに展開するためにもエレガントな設計、標準仕様へ合わせる意識
結局のところ、Web設計の難しさは、
「オープンに通信できる手段だから」
というところに尽きるようだ。
更に、トレンドは日々移り変わる。セキュリティホールとなる技術トレンドでさえも。
最新情報を学ぶには、やはりインターネットアーキテクチャで動いている世界を楽しむ心が必要だろう。「仕事」という心持ちだけでできるものだろうか、というとちょっと難しいかもしれませんね。
世の中の定義で言うと、「オタク」であることが必要と言っても差し支えないような気がする。
今、自分がわかってなくても、あぁこの話、どこかで見たよねってリンクできる、情報を探せる感覚ってのは、毎日意識しているからこそ、という気がするし。
p.s.さらに最近はサーバ設定のスキルもWebアプリケーションエンジニアにあって欲しいです。クラウドサーバによってサーバ管理をアウトソースしているので専業のサーバエンジニアを雇わないケースも増えていると思います。少なくとも自分の飯の種を支えているサーバ技術に興味がないってのは困ります。
p.s.2 ホントはこういうことを書きたかったんじゃなくて、いくらデザイナーに任せても、UI制御やエラーメッセージなどを含めた文言に対する意識は必要なので、ということで、B2BでのセンスのないVBアプリみたいなのはダメよということを書きたかったんだが、書ききれなかった。Webってややこしい。何故Webがややこしいかというと、最初は誰にも必要とされてないから、なんだと思う。世の中に割り込んで、他人の時間を奪ってナンボのプル型メディアの宿命。よって「UIがしょぼくても使えればOK」みたいな要件はWebサイトには存在しない。