スパイスラボ神部です。
最近 OpenSocial アプリを開発していてすっかり仲良くなってきた JavaScript。しかし、やっぱりなじみのないところがあるのでいろいろ疑問に思うところもあったのですが、調べたらいろいろわかってきたのでここでいったんまとめてみます。
JavaScript の連想配列って?
OpenSocial では外部サーバとの通信をする際に makeRequest を使います。その際 postdata をブランケットで囲まれた { postkey : postvalue} という風に定義して渡すのですが、これががなんなのかわからず使っていました。しかし、この値の組み合わせを増やさなければいけないときに実態がわからず困っていました。
そこで探してみたところ、
-JavaScript の配列と連想配列の違い - IT戦記
にてこれが JavaScript の連想配列であることが判明。もし PHP で書くとしたら array("postkey"=>"postvalue"); という感じ似なるのでかなり違いますね。今振り返ると key と value の組み合わせなので連想配列が一番近そうだな、と思えるわけですが。
肝心の増やし方は、それぞれの key と value の区切りを , (カンマ)で区切るだけでした!わからなくってセミコロンとかで区切っていましたがこれは当然うまくいきませんでした。
JSON を使う意義は?
あわせて、JavaScript を使う上で JSON の意義がいまいちよくわかってなかったんだけど、
-[Think IT] 第1回:JSONってなにもの? (1/3)
を見たらちょっとわかりました。PHP から XML をシリアライズするのと同じように、テキストとデータオブジェクトの間でデータをシームレスにやりとりできる仕組みなんですね。
これって目黒の雅叙園で開催された Google Hackathon のときも「サーバから json 出して」みたいなことをチームメイトに要求されて訳もわからず出力していたんですが、こうするとクライアントサイドで面倒なパージングとかなしに変数として使えるというわけですね。なるほど。
ただし、そんな eval すればいいだけの賢い子にもちょっと使いこなすコツはあるようです。
-Greenbear Diary - JSONをevalするときは括弧で囲まないといけないらしい? , S式をRubyで手軽に生成する
まあ、eval ってのがそもそも謎な関数なんですが、自己実行形の関数とでも言えばいいんでしょうか?ともかく Wikipedia をひいてお茶を濁しておきます。
その他の JSON 関連情報
-第三章 データを解析し表示しよう:JSONのデータを表示する
-風の吹くまま 気の向くままに: [JavaScript]JSONでのデータの受け渡し
-s.h.log: JavaScript - JSONでデータを受信する方法2種類
-JavaScriptでJSONをeval - sshi.Continual
追記
ちょっと気になっていたんですが、makeRequest でも JSON でもないとき、つまり今までの下手な処理はなんなんだろうな?というのが気になったんですが、どうやら「パイプ処理」ということでいいようです。UNIX のパイプと一緒ですね。それではっと気がついたんですが、Yahoo! のフィードなどの操作のサービス Pipes: Rewire the web も、パイプ処理の連結から Yahoo! Pipes だったんですね。
なるほど納得です。
-WWW上を流れるデータにパイプ処理を - Yahoo Pipes - スラッシュドット・ジャパン
-JavaScript 第5版が好き! - ILOVEIT(β)
関連記事


