オブジェクトを無理やり配列化できるんだね

今日はRoppongi.jsjQuery読み合わせ会をやりました。進行の仕方が決まってなくて、結構グダグダで進んでいきましたが、得るものがいくつかありました。その中でも一番興味深かったのがJavaScriptのダックタイピング的性質でした。

var hoge = {}
hoge[0] = 'aaa';
hoge[1] = 'bbb';
Array.prototype.push.apply(hoge, ['ccc']);
alert(hoge[2]);

このように書くと未定義なんだけど・・・

var hoge = {}
hoge[0] = 'aaa';
hoge[1] = 'bbb';
hoge.length = 2;
Array.prototype.push.apply(hoge, ['ccc']);
alert(hoge[2]);

このようにlengthプロパティをオブジェクトに持たせると、意図したとおりに3番目の要素に'ccc'が格納されるのですよ!!しかもlengthも3にちゃんと変更されるんです!

これは外見が似ていればそのように振舞うっていうダックタイピングの考え方と同じですよね。でもオブジェクト自体はArrayを継承して作っているわけではないのでメソッドはもってないんです。このようにメソッドだけ借りてくることができるみたいですよ。

ちょっと興奮したのでエントリー

脳内コーディング力

プログラミングのスピードを上げる方法 - teruyastarはかく語りき
http://d.hatena.ne.jp/teruyastar/20080308/1204977907

サラリと読んだだけなので、エントリーの意図とは違うかもしれんが・・・自分の感覚として何が自分のプログラミングを遅くしているかを考えてみたら、やっぱり知識を体系的網羅的に積み上げていない?できないってことなのかなと思った。

実際の話、フレームワークやライブラリが充実している今は月に1000行overぐらい書けば、仕事としてはやっていける感じだと思ってるから、入力速度とかそういう問題じゃないかな、
先週書いた、Javascriptコードはスクラップした分もいれて大体1000行ほどだった。

んで大して時間もかけてない、んで何で遅いのかと思えば、やれることを全部知らないことがでかいのかなと。

JavaScriptの膨大なメソッドやプロパティを全部覚えてるわけじゃないし、おそらくまだタイピングしたことのないキーワードも山ほどあるだろうし。実は物覚えも悪くて、いまだに初歩的なCSSのスタイルも調べてたりする。

この「調べたりする・・・」ってのばっかりやってる。この時間が50%以上。事前に設計すると早いとか・・・言うが、できることをできないことを知ってないと何もなしで設計なんかできないよ
結局細かいサンプルコードの山とスクラップビルドの回数が増える

・・・でも忙殺されて、やっつけコードの中で勉強するってのも大変で、独りよがりの独学コードになっちゃうし、あ〜 脳内コーディング力ゼロだなw

エクセル操作でのスラッシュの挙動が変

エクセルでセルにフォーカスインしてない状態(つまり何もしてない状態)でスラッシュのキーを押すとなぜかセルにスラッシュは入力されず、メニューのファイルにフォーカスがあたる

メニュー→オプション→移行タブの中のメニューキーの設定がなぜかスラッシュになってるんですね

こいつを空白にしたら直った
なんだこれは!!!!

駅構内連続写真

やはり新宿駅、迷う人多いよね。
新宿駅 続・妄想的日常
http://mousouteki.blog53.fc2.com/blog-entry-5650.html

JR東日本:駅構内図(新宿駅
http://www.jreast.co.jp/estation/stations/866.html

わかんねーっつううの。こういう部分ってやっぱり連続写真とかYoutubeとかで見れるといいよね。コンテンツとして作ろうかな!

これだと技術はなくてもパワーだけでいけるからね

できないことリスト

しないことリストとかでなんか盛り上がってたのでね。

プログラムを組んでいてよく思うのが、仕様に「できない」「やらない」ことが明示されていると楽だってこと。仕様だけでなくライブラリのマニュアルとかも
できることってのは、使いたい機能だからもうその選択の時点でわかっているんだよね。できないことで知りたいのは大体、メインの機能ではなくて付随する木っ端の機能なんだよね。

ここでできないと明記されてないと思い込みや慣例で「このくらいの機能はあって当然だろう」とやり方を模索して結構な時間を浪費する。

そこに「○○はやりません!」とか「できません!」って明記されてるとさっさとあきらめがつくからいいのになぁと思ったしだい

腹いっぱいで眠い

デブサミ行って来た

ので感想をつらつら

Spring Framework 2.5 の紹介

JSUGの人

こんな感じ
まぁこれは初歩の初歩だから、もっと詳しくはSpringユーザー会の勉強会にきてね・・・的内容。公演のあと日本Springユーザー会の人らと話す。

結構導入事例はあるようだが、現場の声がぜんぜんあがってこないらしい、本とかを書いてもわかりにくいといわれたりもするが、実際問題業務でこういうものを作っていて、どんな風なところで詰まっているかがわからないよう・・・声を上げれば何かなるよ 好感触

Flexの話

FlexのブースでFlexerたちと少し話した。
注目注目と言われながら、いつまでたってもベータ版だし、周りでマジなFlex技術者をみたことなかったのでマジでやっている人たちと話せてよかった。
Javaeclipseなしでは開発できないように、FlexもFlexBuilderなしで開発できないようだ。SDKだけ手に入れてやるのは無謀らしい。

設計に関してもXMLで全部書くようなスタイルとかASで全部やるようなスタイルとか・・・そこら辺の実装の割合は技術者依存で、特にセオリーがないようだった。
Flexbuilderの最新版のベータは90日間使用OKということなので、Javascriptやhtmlと絡める部品としてつかってみようと思う

Pythonブースで

Pythonの本を書かれている柴田さんと話す。まぁPythonに関してのなんともないはなし
となりのポストグレスブースの方々とも話すが・・・まぁ世間話

Ruby青木さん公演 普通のrubyプログラマーに送るプログラミング講座

コード添削で言っていた内容の延長線上の話。実はもっとおっさんでヒゲモジャモジャだと思ってましたw勝手にw

protectedは不要

スーパークラスのメンバをサブクラスから参照したいときも、rubyではprivateメンバも子に継承されるので、不要つまりJavaと同じような状況だからってprotectedにする必要はないという話

逆にrubyの言語仕様のprotectedもあまり状況的に起こらないので不要!

pとppの使い分け・・・というか 実装中とテストの使い分け

pは実装時とかのデバッグ用、ppはその強力版。to_sはオブジェクトの文字列化。つまり使い分けろよ

unless untilを使う

コード表現が豊かなほうがプログラマの意図をコード化しやすいから、if not を使うんじゃなくてunless使おうよという話

  • unlessなら値のチェックに使えば通したい条件そのものをはじくチェックに使える
  • untilならループの終了条件を指定したい場合、終了条件をそのまま書ける

それでも何か言うならあんた全部gotoで書くのかよ・・・ってwww

モジュールとクラスの分類法

モジュールはアプリで1個 クラスもその下に2段ぐらいがいい・・・これ以上いくと見にくくてダサいから。
モジュールとディレクトリ構造Javaよろしく一致させる。

ファイルの分割方法

関連するクラスは全部同じファイルに突っ込む。理由も無く分割しない

大クラス主義

Rubyの方針は大クラス主義。一個のクラスは使い方を想定して、使う場合に関連する機能は全部一個のクラスに押し込んで、使う側がニコニコなるように作りましょうよという話

JavaのFile操作とかやってると・・・マジ思いますねこれは。なんであんなにゴテゴテかかないとファイルひとつ開けんのか不思議すぎ

マイクロカーネルモノシリックカーネルの対比アリ
理想論はマイクロだが実をとればモノだぜ。

繋がり型は定型なのに、ばらばらになっていると、つながり方の数が増えるので複雑性が増してわかりにくくなるぜって話

sendを使ってクラス分岐(ストラテジーパターンのようなやつ)を別軸に書いてみる

sendというメソッド実行するメソッド・・・JavaScriptでいうapplyのようなメソッドがrubyにもあるので、こいつとリフレクションを組み合わせると、引数によって処理が自動分岐するランチャーのようなメソッドが作れますよという話。
つまりストラテジー部分だけ関数のように分離する設計?

動的定義で1.8と1.9の差を吸収して両対応のソースを書く

これは完全にJavascriptのブラウザ間の差異を吸収するものと同じ
メソッドやオブジェクトの存在をリフレクションで確認して、確認した後に旧メソッドを新メソッドで再定義したり、新メソッドを旧メソッドで再定義したりする。

これはrubyの動的なクラス定義やメソッド定義できる側面を利用したもの・・・
へ〜〜〜


アドビのAIRの話

ウェブというよりも.netとかのスタンドアローンアプリと競合する技術

簡単に作れます!

ってホント〜? もう簡単に作れるはあんまり信用しないことにしてます。

JavaScriptのちょっといい話

天野さんのJavaScriptの言語仕様に関する個人的解釈・・・
JavaScriptは全部、演算子と値でかけるよ!って話

お勧めライブラリとしてjQueryとEXT.jsの紹介

まとめ

人がウジャウジャで会場が狭くて、タイムテーブルの最適化もされてなかったのでコミコミでした。
こういう機会っていい加速装置になるのでまた参加したいね