開発
ジャバスクリプトとは
yahata
この世界にはJavaScriptというプログラミング言語があります。
ところでJavaScript使いあるあると言えば「Java使えるの?すごいね!」なんですが、
JavaとJavaScriptは違います。インドとインドネシアくらい違います。
JavaScript(以下JS)は主にwebサイト構築を目的としてクライアントサイドに用いられ、
アニメーション効果、シームレスな画面遷移、非同期通信などなど
HTMLとCSSだけでは実現できない機能を実現してくれます。
また現在仕様策定中のHTML5のAPIも、名前こそHTML5ですが
利用するには実質JSが不可欠で、今まさにJSの時代が到来しようとしています。
—
さて、JSを言語的な観点から見てみると主に以下の2点が挙げられます。
1.動的型付け言語
2.プロトタイプ型オブジェクト指向言語
1.動的型付け言語
このメリットはズバリ、型を意識する必要がないので「開発スピードが段違いに速い」ということ。
中・大規模プロジェクトだとまた話は違ってきますが、
DIY程度ならば思考をそのままコードに落とし込む勢いで書いても
わりと思い通りに動いてくれるので楽しいです。
Objective-CやJavaを触ってから息抜きにJSを触ると
そのスピード感が癖になりますよ。
2.プロトタイプベースオブジェクト指向言語
JSのオブジェクト指向は一般的なオブジェクト指向とは違い、JSにはクラスがありません。
もちろんクラスのようなものを作ったり、継承のようなことをしたりはできますが、
厳密な意味でのソレはできない言語なのです。
そのおかげで、そのへんのブログに溢れているようなオブジェクト指向の抽象図はほぼ役に立ちません。
(ほとんどがクラスベースのオブジェクト指向について説明したものなので。)
そのかわりクラス(のようなもの)や継承(のようなもの)の自由度はJavaなどより格段に高いと思います。
ここからは個人的な考えなんですが、
JSの最大の特長はやはり「スピード感」だと思います。
まず、その開発スピードのおかげでフィードバックを得られるのが早いので、
プログラミング初心者がプログラミング自体に興味を持つのに最適だと思います。
HTMLとの相性も良いので視覚的フィードバックが楽に得られるのもメリットです。
(最悪でもブラウザのJSコンソールにalert(“Hello world!”);って打てばOK)
また、プログラミング初心者でなくてもメリットはあります。
一つは「モックが素早く簡単に作れる」という点です。
僕はEyes, JAPANとは別のバイトで、Obj-Cで画像フィルターを作る仕事があったのですが
Obj-Cだとunsigned intのラップアラウンドとか色々邪魔があったので
JSでコードを書いてからObj-Cに移植して実装していました。
型やアクセス修飾子など外的要因に惑わされずに
必要なアルゴリズムに集中できるのも大きなメリットだと思います。
それから、初心者の話とも若干かぶるのですが
二つめのメリットは「新しい技術に触れるきっかけになる」という点です。
今、HTML5のヒートアップと共にJSライブラリが爆発的に増えています。
jQuery, prototype.jsをはじめ、Underscore.js, enchant.js, three.js, Raphael.js…など
その用途はDOM操作から正規表現、画像圧縮、暗号化、WebGL、SVG、
シンセサイザー、webカメラ、サーバーサイド…など非常に多岐に渡ります。
また、JSでiOS/Androidアプリが開発できる環境も開発されています。
(アプリ開発に限ってはネイティブ言語の方をオススメしますが…)
ライブラリそのものはコンパイラ言語などのいわばホンモノなやつらから見ると
どれも未熟で、シンプルで痒いところに手が届かないようなものばかりなのですが
「新技術に触れる」その入口としてはその未熟さ、シンプルさが逆に良いのではないでしょうか。
新しい技術に触れてみたいとは思っても重い腰が上がらないアナタ、
JSのスピード感と共に新技術を体験してみるのはいかがでしょう。
かくいう自分も腰が重くなりがちで(便秘とかではないです)
CoffeScriptとかDartに触れるタイミングを逃してしまった感があります。
特にDartはかなり気になっているので、
個人的に書いてるJSライブラリが完成次第触ってみようと思います。
また、今回はJSの特徴として他言語のサポート的な部分ばかりクローズアップしましたが
書く機会(と知識)があればJS自身の尖った部分もご紹介できればいいなと思います。