Home > Kanasan.JS | おもろい | プログラミング > JavaScript第5版読書会#2に参加して

JavaScript第5版読書会#2に参加して

Blogに書くまでが勉強会ということなので^^

まずは、Kanasanさん並びにスタッフの方々、Lightning Talkをしてださった方々ありがとうございました。
非常に有益なひと時でした。このような集まりが関西にあることをうれしく思います。

関連エントリ
「Kanasan.JS」
Kanasan.JS : JavaScript Workshop in Kansai | Google グループ
「他の方のブログ記事(これから拝見します)」
Kanasan.JS JavaScript第5版読書会#2 参加者のブログ記事一覧 - Kanasan.JS : JavaScript Workshop in Kansai | Google グループ

正直なところ情報量が多くて消化し切れていないのが現状です。
プログラミング話なので興味のない方は、以降は全力スルーで

<続きを読む>

「場所をまちがえる」
朝からバグってました。大阪産業創造館(サンソウカン) の地図をみて堺筋本町12番出口を出でたのですが、でてすぐ北を向いていると思ったのが勘違いの元でした。足を痛めているのであまり歩きたくないのにもかかわらず堺筋をひたすら歩いていってしまいました。無駄に体力を使ってなんとか3分前くらいに到着^^;

「スーパーサイヤ人がたくさんいました」
そんな訳ないです。
私の脳内イメージですw
単なるセミナーならまだしも、私は有志の勉強会というものはほとんど初心者です^^;
前回の配信内容や議論している内容を観た限りでは、「レベル高!」と思っていたのでそういう気持ちで会議室に向かいました。
脳内のイメージに反して会議室の雰囲気は思ったより和やかで少し落ち着きました。

そうはいっても、amachangさんを始めJavaScript界隈で有名な方々が多数いらっしゃったようなので、そういう意味では上の表現はまちがいではないと思います。

「Lightning Talk始まる」
感想をLightning一言コメントで。(というかメモ。ホント一言ですみません^^)

発表者: 長慎也 (hoge1e3) さん
題名: Web上でのゲーム製作
概要: Flash(Flex) を用いて,Web上でゲームを作ったり発表したりするための枠組みについて.
一言コメント:ASは遅い(笑)Flash8を泣く泣く買おうかと思っていたのですがFlexに傾いてきました。

発表者: nanto_vi さん
題名: Mozilla Developer Center 翻訳事始
概要: Mozilla Developer Center 翻訳手順の紹介
一言コメント:OmegaTを使った翻訳の手順。後で理解しましたが EcmaScriptの大先生でした。

発表者: amachangさん
Jsdeferred で非同期処理みたいな話(理解度が足りていません。)
一言コメント:ネットで拝見した通りのイケメンでした(w)→それだけですでに感動ToT。Parallel:別々の2つの処理が完了した後に次の処理を実行→クリティカルパスが頭に浮かんできました。

発表者: shogo4405 さん。 受付の人
題名: Inside JSmarty.Plugin
概要: JavaScriptでプラグイン作成と動的ロードの実際
一言コメント:便利そう。a = func() b = func() で a の結果を bが使うような場合a のロードを待ってからbを処理できるのでしょうか?よくわかってませんが後で試してみたいところです。

発表者: 岩田 享 / issm さん
題名: 今さらながら Twitter API + JavaScript で自作アプリ
概要: Twitter API と JavaScript を利用して作ってみたアプリ(とその中身)を大ざっぱに紹介します.
一言コメント:サービスの内容に親近感を感じました。こんなサービス作ってみたいです。後で確認:json cookies/jsonp→ドメイン越えに便利。

発表者: AWAWA さん
題名: 単に自分の開発経験を(話せる範囲で)話そう
一言コメント:ほっと一息つけた気がします。ありがとうございます^^個人的には実務でライブラリに依存しないように組む必要性についてもう少し知りたかったところです。

発表者: ema イーマさん
題名: Script.aculo.us の UnitTest の使い方
概要: 簡単な UnitTest の使い方。簡易なフレームワークですが、とりあえず十分な機能でした。
一言コメント:ひさしぶりなので、まず仕様をテストで書いて・・・という考え方。参考になります。

発表者: yharaワイハラさん @京大マイコンクラブ→きになるw
題名: Javascriptで無限ループを実現するn個の方法
概要: 非同期処理を同期っぽく書ける手法/ライブラリをいくつか紹介します
一言コメント:話のテンポうまいですね。JSTreadがすごい。 JSで「15119行」→「無茶しやがって」でフイタw

発表者: 氏久 さん
題名: JavaScriptから見たHaskell
概要: JavaScriptな人向けの簡単なHaskell入門をします。
一言コメント:Haskell好きな人がいる理由がようやくわかりました。非常に簡潔な記法。キレのあるトークがすごいです。Haskell使いだとあんな風に話せるならHaskellを勉強してみたいですw
以下、メモ:Haskellは、Draft(nearプロトタイプ)代わりに使える。数式をそのまま表現できる。

発表者: 井上謙次さん
題名: Flex & de.popforge.audioライブラリを使ってリアルタイムで音生成と再生
概要: Flexでリアルタイムに音を生成&再生するデモです。デモ内容は,あまり面白くありませんが,「あ」とか「い」といった母音を声道断面積関数から偏微分方程式を解いて音声合成します。
一言コメント:ASで初音ミクみてみたいです。

「Lingrって何?」
名前には聞いたことがあったのですが、チャットのプラットフォームのことなのですね。
あっというまに50人近くがチャット可能になるのを目の当たりにして少し感動しました。

「読書会メンバーTwitter率7割以上」
Twitterはどうもほったらかしなのですが、こんなに率が多いなんて。。。。
まだ、そのよさを体感できるに至っていませんが、一応、https://twitter.com/andreryuで登録していますのでfollowしていただけるとよろこびます。(followもしたいんですが・・・腰がひけます^^;)

「マルチタスク読書会」
「読書中」にチャットで「議論」が始まり「コード」がポストされるというスレッド割り込みに慣れていないせいか読むだけでせいいっぱいでした。
特に「議論」が気になってしまい、深く読書できていなかった。。。
わかった気になっていても後で議論を聞いたら私の理解が浅くてまるでわかってなかったというは、ちょっと反省。

「読書会」
(P81)6章 文から(P112)7章 オブジェクトと配列のObjectのプロパティとメソッドの最後まで

内容についてはきっとどなたか優秀なジョバンニさんが、すばらしいまとめをしてくださるでしょうから、
私は私の引っかかった所を書きます。(残りは、みなさんのブログを拝見しますw)
(1)switchは上から順に評価されるの?
試してみたのですが

var test = function(x) {switch(x){ case 1:return "1st1!"; case 1:return "2nd1!";}};
test(1);//"1st1!"
>>
var test = function(x) {switch(x){ case 1:return "2nd1!";case 1:return "1st1!";}};
test(1);//"2st1!"

だったので上から順に評価しているようです。

(2)forの()カッコの中
jQueryで

var ・・・,a = 1;

if ( al == 1 ) {

target = this;

a = 0;

}

for ( ; a < al; a++ ) {・・・・}

(al が1ならa=0そうでなければa=1でfor文を開始。)

という文があってとても奇妙な書き方だと思っていたのですが、

http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/12_Statements.html
の12.6 繰返し文 (Iteration Statements)に

for (ExpressionNoIn[opt]; Expression[opt] ; Expressionopt ) Statement

>>ExpressionNoIn[opt]
省略可能[opt]と書いてあってスッキリしました。

(3)whileの説明(forと比較して)
initialize;
while(test) {
 statemaent
 increment;
}

for (initialize;test;increment)
 statemaent

が同じ。いまさらなんですけどシンプルな説明に感動。

(4)exceptionはやはり弱い。派生した例外によって異なる例外クラスをよびたい。

(5)ラベルを積極的につかう理由がピンとこない。関数を組み合わせて組んでしまいそう・・・

「アツい議論」
・式と文の違いは?
・.(ドット)は演算子?
・クラスとオブジェクト・・・・

amachangさんがアツいです。
やっぱりアツい方です。
EcmaScriptの辞書のごとき知識を有するnanto先生との議論が、盛り上がり深い話を聞くことができました。内容は高度だったのでなんとなくでしか理解できなかったのが残念なところです。

ただ、あの時はカーズ状態(笑)でしたが、後から思うと最後の「JavaScriptにおけるクラスとオブジェクトの話」については少し違う印象を持ちました。
これは私のC#のプログラミング経験からかもしれません。
以下、私の漠然とした理解の内容です。

JavaScriptにはやっぱりクラスはない。
どうしてもクラスという言葉が使われることに違和感を感じます。
全てはオブジェクトという感覚
私の経験してきたC#のクラスの定義はintなどの「型」に近いと感じています。 「クラスは、雛形であり、クラス-オブジェクト(インスタンス)関係においてオブジェクトはクラスの厳密な型に縛られている」というのが私のもってるクラスの定義です。
int a = 2;
string b = "2"; a = b;
がC#で不可能なように
class person {};//personクラス宣言
class person2 {};//person2クラス宣言

person a = new person();

person2 b = new person2();

a = b;

もコンパイルエラーになります。

JavaScriptでこのことは表現しにくいのですがチャットで挙がっていた以下の例から

>> A=function(){}
※1
(A.prototypeにはこの時点でfunctionオブジェクトのprototypeが存在する)
A.prototype = {
get: function() {return this.x*2;}※2
}
(A.prototypeの内容は書き換えられた)
a=new A();
a.constructor==A;

false(a.constructor==Aの結果はfalse)

※1で宣言された型にないもの(getメソッドのこと)を※2で追加すること自体がクラスの定義では考えられない気がするのです。(先のa = bのように後から型違いのオブジェクトを代入することと似た感覚)

ならオブジェクトなら可能なのか?もちろん、後から型を変更することはオブジェクトであってもC#には不可能です。

ここまできてどうもC#のオブジェクト生成(new)とjavascriptのオブジェクト生成(new)の意味が違う気がしてきました。

C#

Person p = new Person(); //Personという型をpオブジェクトとしてインスタンス化する。

JavaScript
Person = function() {};
p = new Person();//Personの持っている性質をpオブジェクトに継承したいだけ。

ただし、JavaScriptでは、newが単なる内容のコピーじゃ、メモリの無駄ですよというところからprototypeという継承元への参照をもつ特別なメソッドがにあるというのが今のところの私の認識です。

長々と書きましたが、まとめるとこんな感じです。

型=クラスにちかい認識。(C#から)
動的な言語であるJavaScriptに厳密な型の定義はないのでクラスはない。
オブジェクトの内容を複写(継承)したいがためにnewとprototypeがある。
プロトタイプについては cuzicさんの
# メソッド探索というのは限定すぎされているか。
全体的なイメージは akipiiさんの
# JavaScriptの世界では、全てのオブジェクトは、__proto__属性を持つObjectの子孫みたいなもの?
が個人的にはしっくりきました。

このあたりについては、まだ読んでませんが9章の「クラスとコンストラクタとプロトタイプ」のあたりなので次回の読書会を楽しみにしたいと思います。

「次回へむけて」
理解の浅いところは、おいおい理解していくつもりです。
次回も参加したいと考えておりますのでよろしくお願いします。

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
http://andre-garden.com/cgi/mt/mt-tb.cgi/25
Listed below are links to weblogs that reference
JavaScript第5版読書会#2に参加して from Andre's garden

Home > Kanasan.JS | おもろい | プログラミング > JavaScript第5版読書会#2に参加して

Search
Feeds

iKnow
utilities
あわせて読みたい
スカウター : Andre's garden
track feed
人気ブログランキング - Andre's garden
Counter

Return to page top