手作りプログラミングのススメ

ゴリゴリ書くのは古い?

PHPASP.NETRubyなどのスクリプト系言語の普及、およびそれらを支える .NETRuby on RailsPrototypeなどの便利なフレームワークが多数普及しており、プログラミングは以前より簡便になってきていて、確実に入門者への敷居は下がっているといえよう。Webアプリケーションの作成もひと昔に比べれば本当に楽になったものだ。

事実、オープンソースのEclipseやMicrosoft製品であるVisual StudioシリーズもExpress Editionの公開で、無償で開発環境が手に入るようになり、手軽に開発に着手することができるようになった。入門書も多数出版されているので、最近ではこのルートでプログラミングの世界にデビューする人が多くなっている。

GUIも整備された最新の開発環境ではフレームワークの充実もあり、コードをキーボードより打ち込む手間が格段に少なくなっている。最近のアプリ開発ではマウスを多用することに筆者などは驚いてしまう。

そんな便利な開発環境があっても筆者はWebページに少しの情報をpostするような簡単な画面は、送信ページのHTMLも受信ページのコードも手で打ち込んでしまう。筆者は決してプログラミングが得意なわけではないが、こんな手作りのページを見た最近の若いプログラマはビックリしていた。

基礎を知ると言うこと

筆者のようなプログラミングを家業としてないサンデープログラマならいざしらず、Webアプリケーション開発を業務としている場合は、やはりコーディングの手間を軽減させる統合開発環境とプログラミング品質の均質化と高度化にはフレームワークを使うことが求められる。このようなニーズがあることから、プログラマ育成の研修などにも取り入れられている。

これら統合開発環境およびフレームワークの世界を知るだけでアプリケーションを作成することは可能である。しかし、その裏にある実際のコード、アプリケーションが用いている基礎的技術についてもぜひ知っていて欲しい。例えばHTTPの仕組みとか、Webサーバとアプリケーションサーバの役割分担と処理手順とか。

フレームワークを使うにしても、フレームワークの関数やオブジェクトが実際のコードのどの部分を簡略化しているのか、どの機能を受け持っているのか。フレームワークがベースとしている言語についても知って欲しい。Prototypeを使えば、JavaScriptに精通していなくてもそれなりのAjax処理は書けるようになる。しかし、Ajaxを用いるのであれば、JavaScriptの知識は不可欠である。

なぜ基礎を知るといいのか

便利な環境やフレームワークがあるのに、なぜ前世代の不便で面倒くさいものまで知らなくてはならないのか。それは、今の環境やフレームワークはその基礎となっている技術を完全に隠蔽しきれていないからである。

例えば、エラーやバグが発生したときに、統合開発環境ではデバッグ機能が高度に発達しているのでどんなエラーでもトラッキングできそうに思える。しかし、OSやアプリケーションサーバの制限などの外因性のエラーやプロトコルのエラーなどは稀ではなく、基礎技術の知識があるとトラブル解決のスピードが相当早くなる。また、フレームワークの流儀に沿ってプログラムを書くとどうしても不便なこともままある。基礎技術を知っていれば、より簡便な処理方法があることに気がつくこともある。

フレームワークだけしか見えてないと、よりクリエイティブでエレガントな処理方法に気がつかない。例えば動的なWeb画面を作る場合には、JavaScriptを知っていれば無用なページ遷移を省くことができることが多い。グループで開発を行う場合はコーディングルールがあるのでなかなか自由にコーディングできないが、基礎的な技術を知っていればコーディングやデバッグの幅が広がることは間違いない。

それより、開発環境やフレームワークはさまざまなものが登場し、バージョンアップに伴いどんどん新たな機能が増えていく。しかし、多くの場合はHTML、XMLやHTTPなどの基礎的な部分は変わらない。むしろ、これらの技術が身についていれば、新たな技術の習得は楽になるであろう。

日々の業務に追われてなかなかプラスアルファの勉強まで手がつかないと思うが、ぜひ、統合開発環境やフレームワークしか知らずに育った皆さんには、より基礎的な技術の習得まで頑張っていただきたい。まずはエディタとブラウザだけを使って簡単なアプリケーションを作ってみよう。

  • スクリプト系言語
    • PHP・・・Webアプリケーション作成に便利なオープンソースのスクリプト言語。日本ユーザ会もある。
    • ASP.NET・・・MicrosoftのWebアプリケーション作成用スクリプト言語+フレームワーク。正式サイト(英語)
    • Ruby・・・オブジェクト指向スクリプト言語。
  • フレームワーク
    • .NET Framework
    • ・・・Microsoftが開発した、Windows環境、Webアプリケーション環境を統合したアプリケーション・フレームワーク体系。
    • Ruby on Rails
    • ・・・RubyをベースにしたWebアプリケーション・フレームワーク。
    • Prototype
    • ・・・JavaScriptでのWebアプリケーション開発に便利なフレームワークで、Ajax処理を得意とする。
  • 統合開発環境