2010年02月14日

デザインパターンについて考えてみた

会社の技術研修ではデザインパターンについて教えようとする者はいないようだ。
(デザインパターンの重要性がわかっている少ないように思うのは、不幸な環境の所為だろうか...?)

まぁなんでこんなことを言い出すのかというと、昨年の12月ごろに自分のプロジェクトに部下がアサインされました。

1年目の新人で、どこのプロジェクトにも属さずに半飼い殺しのようにされていた(部長の直下で雑用部隊にいた)状態だった。
そこで、2ヶ月ほど教育を施し、その際にデザインパターンについて暗記させたわけなんですが、よくよく考えると、デザインパターンなんて新人研修で前もって教えておくべきだよなぁ...と思ったわけなんですよ。

 

で、デザインパターンってなんだろう?

って改めて考えると、先人の知識&経験により最適化された手法であり、数学でいうところの「公式」ではないかと思います。

数学を勉強していくにあたって、定理や四則演算だけではなく、2次方程式の解を導く公式であったり、三角関数の倍角の公式って憶えたりしますよね?

そんなかんじの役割と考えると、結構ぴったりきます。

プログラミング言語が使えるということは、数学的には四則演算をマスターしたレベルであり、アプリケーションを構築するためのデザインパターンを熟知している人は、便利な公式を使いこなすことができるレベルで、「アプリケーション作成」という問題が与えられたとき、公式を使ったほうが効率もいいし、間違いも少なくなると思いませんか?

 

というわけで、憶えてしまえば良いわけなんですが、実際のアプリケーションにデザインパターンを適用することを考えると、

  • 開発するプラットフォームや言語によって変わってくる
  • プレゼンテーション層(UI)によって大きく限定される
  • アプリケーション全体ではなく、個々のUIのコンポーネントに対して別々のパターンを適用する場合もある

といったことがあり、知識としては憶えていても、日頃からデザインパターンを意識してアプリケーションを作成していかないと最適なデザインを選択できなかったりします

一例として、一昔前はWebアプリケーションといえば猫も杓子もMVCパターンで、それさえ知っていればまぁなんとかなったと思いますが、Ajaxを利用したUIを採用した場合、Viewに相当する部分がクライアント・サイドなので、MVCパターンではちょっときついのかなと。

 

まぁ数学でも公式を使いこなすまでに相当訓練するわけですし、デザインパターンも最初に叩き込んで、ことあるごとにアプリケーションのデザインについて考えるような癖をつけさせていかないといけないなぁ、と思う今日この頃です〜。

posted by aki at 19:06| Comment(0) | TrackBack(0) | Web | このブログの読者になる | 更新情報をチェックする

2010年01月09日

Webを理解してないWebアプリ開発者

最近、社内の技術指導で必ず最初にWebの話から行います。

Webを利用するってなんだろう?と考えると、端的にはHTTPというプロトコルを利用するということなんですが、

  • Webアプリ:Web(およびそれに関連した技術)を利用したサーバーサイドのアプリケーション
  • Webアプリのクライアント:一般にはブラウザ

となります。

話し始めは「何をいまさら...」って顔されるんですが(特に経験者)、話していくうちにみなさんWebに関してのリテラシー(特にHTTPの仕様について)が低いことに気付いてくれます。

まぁいろいろ原因はあると思うんですが、

  • Webがアプリケーションのベースとして利用できることが認知され、世の中に急速に広まってしまった
  • 仕様を理解してなくても動くものが作れてしまうような技術が発達してしまった
    • Servlet
    • コンテナ
    • アプリケーション・フレームワーク(strutsなど)
    • ...

のが主な原因として挙げられると思います。

akiはJavaが専門なんでJavaを前提として話をしますが、ほんとにServletは便利で、ServletによりJavaはWebのサーバーサイド技術の代表格として定着したといっても過言ではありません。でも、Javaを利用したWebアプリ開発者はServletやJSPのAPIは知っていても他のJavaEEの技術を知らないというか、ServletがJavaEEの仕様の一部ということすら知らないといったことが現実だと思います。(まぁなんでこんなことが言えるかというと、自分もそんな時期があり、お恥ずかしながらWebアプリを開発している会社で問題なく通用していました。(u u;)

blogなどでServlet等のWebアプリに関する技術のサンプルを書いている方がいらっしゃいますが、その方々はHTTPに熟知している方もいらっしゃると思いますが、そのHTTPに関しては前提というか常識のため大抵何も言及されていません
そんなblogを、前提の知識を持っていない方がアプリ開発の参考にしてしまうと、知らず知らずのうち(まぁほんとに知らないんですが...)にHTTPの仕様から逸脱する利用方法を行ってしまいます。
それでも、アプリケーションとしては動いてしまうため、

動作してしまう=正しいこと

という思い込みから、それを他の人に発信し...ということが繰り返され&積み重なり、Webというものを知らない&理解していないWeb開発者が出来上がっていっているわけです。

そんな流れを少しでも抑止するべく、社内では必ずWebおよびHTTPの説明からするようにしているのですが、このblogが誰かの参考になればいいなぁと思ったわけです。

posted by aki at 15:05| Comment(0) | TrackBack(0) | Web | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。