2014年08月21日
JavaScript 始めました。
学習書籍は、こちら。
JavaEEの学習書籍としてお世話になった山田さんの著書で、個人的には、とても読みやすく相性が良い。
さらっと何となくJavaScriptができればいいな。という人には、他の薄い本がよいと思うが、
以下に書くような、私と同じような感覚で「JavaScriptって何?」という人で、しっかり学びたい。
Ajax!Ajax!な人は、是非お勧め。細かい入門知識から、本格的に学ぶことができる。
今までの私自身のjavaScriptの知識はと言うと、なんとなく使った事はあるけど、
JavaScript本格入門 〜モダンスタイルによる基礎からAjax・jQueryまで
新品価格
¥3,218 から
(2014/8/24 14:43時点)
JavaEEの学習書籍としてお世話になった山田さんの著書で、個人的には、とても読みやすく相性が良い。
さらっと何となくJavaScriptができればいいな。という人には、他の薄い本がよいと思うが、
以下に書くような、私と同じような感覚で「JavaScriptって何?」という人で、しっかり学びたい。
Ajax!Ajax!な人は、是非お勧め。細かい入門知識から、本格的に学ぶことができる。
今までの私自身のjavaScriptの知識はと言うと、なんとなく使った事はあるけど、
- 使うときは基本的にサイトのコピペ。それ以上の事は出来ない。
- JavaScriptと言うからには、Javaの仲間?
- クライアントサイドだよね。負担は操作者のPCにかかるやつ。
- 基本的な書き方はjavaっぽいが、ブラウザ上で動かすブラウザオブジェクトの概念がわからない。
- Javaで言う文字列(String)でも、数値(int)でも、「var」という型で宣言していて、どう管理しているかわからなかった。
- オブジェクト指向ではないと書いてあったり、オブジェクト指向だと書いてあったり、処理の受け渡しがピンとこなかった。
といった程度。Javaは多少書けるけど、なんかしっくりこない感じでした。
しっくりこなかった理由は、
学習を進めていく事で、(まだ途中だけど)上記に上げた3点は何となく理解した。
階層構造を意識する必要がある
window関数の配下に、色んな関数があり、
ブラウザが開かれた時に、自作なり、用意されたオブジェクトやメソッドを読み込んで、
使用できる状態にする。
その用意したオブジェクト(メソッド)の関数名を、HTMLのタグに紐づけて
クリックした時なり、ドラッグした時なりに動作するようにメソッド内にプログラミングしていけばよいと。
一般的な文字列の宣言の仕方、if,forの書き方は他言語とさほど変わらないが、
このwindow関数などのブラウザオブジェクトに関してはがっつり学習する必要があるかな。
そして学習書籍を読み進めていると、
この後、ブラウザオブジェクトより、DOMの方が重要だと知る。
HTML自体の階層構造の宣言がとても大事で、自分で階層構造を宣言したり、
子要素を丸ごと入れ替えたりといった操作ができるようになり、
クライアントサイドで動くアプリケーションを構築するのに重要な要素だと学ぶ。
DOMについては、一度別の機会にまとめる必要がある。
変数の宣言は全てvar、関数の定義はfunction
ひとまず、こう覚えた。厳密には違うような気もするけど。
文字でも数字でも、配列リテラルでも全部var!
Javaだと、String(文字列型)に数字を入れると、エラーになったりしますが、
JavaScriptではそのまま上書きされます。
数字に文字列を加算しようが、javaScript先生がうまいことやろうとします。
これは楽!と捉えるべきかもしれませんが、正直気持ち悪いし、
中身がどうなっているのか把握しづらいので厄介です…。
初めての言語学習がJSだよ。と言う人は、
Javaに入った時に、いちいちエラーが出てうざい!といった感じでしょうか。
結構、概念的にはJavaと似ている部分もあるのですが、こういった変数の部分や、
宣言の仕方などが微妙に違うので、もやもやした感じがします。
JavaScriptはプロトタイプ型オブジェクト指向
上記で、もやっていましたが、こっちも更にもやもや。
Java自体は、クラス型オブジェクト指向。
じゃあ、何が違うのかと言うと、
Javaはクラスを定義して、実処理ではインスタンス化(実体化)して処理を行ったりします。
JavaScriptもそれは同じなのですが、
JavaScriptはそのクラス(プロトタイプ)にないメソッドをインスタンス自身に処理の中で追加できる
便利なように見えますが、同じクラス(プロトタイプ)から派生したインスタンスA、Bにおいても、
途中で処理の構文自体が別物になっている可能性もあり、動きが保証されないのが怖い。
継承元を切り替える事が出来る。
Javaでは、継承と言って自分にないメソッドや変数を親クラスを継承する事によって、
あたかも自分のクラスに定義されている可能ような振舞ができるのですが、JavaScriptでもできます。
しかも処理の途中で、その親を変える事が出来る。。。
これも動きを冗長化できて便利な感じがする一方、親クラスが変わると言う事は
そのクラス(プロトタイプ)自身の持っている変数やメソッドも変わるので、
またまた動きを予測するのが難しくなる。。。
ここまでの学習で…
まずは一冊読みあげたいので、ちょっと分からないところはスル—していますが、
Javaに比べると、JavaScript自身が「おいらが、うまいことやってあげるよ」といった感じなので、
いいのか、悪いのか…。
そして、本格的な実装をしようとすると、結構概念がややこしい。
冗長化されている分、不可解な動きを思想であり、Javaのようなクラスライクな設計もできるようだが、
変数や関数を上手いことやって無理くりやっているようにしか見えないな。。。
正直、ブログのデザインを上手いことやるくらいだったら、上記に述べたようなところでは、
ブラウザオブジェクトだけしっかり覚えて、単発単発でスクリプトを埋め込んでいったら、それで終わりな話。
ガチムチな実装をしても、うまい事コードを組まないとメモリばかり食ってなかなか表示されない。
なんてことにもなりかねません。
キー操作で画像を動かして、動作で得点が加算され、結果をサーバにデータ送信。
なんてところまでスムーズにできるようになれば、
サーバサイドのJavaとクライアントサイドのJavaScriptで連携したAjaxアプリケーションを作れそうですかね。
まだまだアプリケーションプログラマの道はほど遠い。
この記事へのコメント
Look advanced to far added agreeable from you! By the way, how could we communicate?
to vacuum-chokepoint devices, corrective implants, intracavernosal
injections, and intraurethral suppositories.4 Since its advent,
the grade of agents known as type-5 phosphodiesterase (PDE5) inhibitors has revolutionized the management
of ED. PDE5 inhibitors bear become the first-line of reasoning
therapy for ED, as recommended by the American Urological Connexion (AUA) and
the European Affiliation of Urogenital medicine
iPad and tested to see if it can survive a forty foot drop, just so she can be a
youtube sensation. My iPad is now destroyed and she has 83 views.
I know this is totally off topic but I had to share it with someone!
はじめまして。コメントありがとうございます!
資格取得に向けて主に頑張っていたのは、去年で、
今はどちらかというと技術習得に力を入れています!
刺激になるという言葉をいただくのが、何よりの私自身へのいい刺激になります。
コメントは大歓迎ですので是非ともよろしくお願いします!
終わりがない業界というのは、たしかにそうですね。
それでも一通り身に付ければ、ある程度はやっていける内容もあるかと思います。
常に最先端というのも難しいかと思いますので、
安定したスキルと、少し最先端の技術を追っていけたらいいなと思います。
1週間ほど前にshadeさんのブログを発見し拝見しておりました。
とても勉強熱心で資格取得に向けて頑張っておられるようで
私自身とてもよい刺激になり「負けていられないな!!」という気持ちになりました。
これからちょくちょく
拝見してはコメントしていくかもしれません。
勉強しても勉強しても終わりのない業界ですが
お互いに頑張れたらよいですねb