« 2009年05月 | メイン | 2009年07月 »

2009年06月 アーカイブ

2009年06月05日

JSDeferredを読む

JSDeferredはJavaScriptで同期/非同期を制御するLibraryです。
JSDeferredを読み込み展開すると、Globalで新しく使えるようになるメソッドは、「next」「call」「parallel」「wait」「loop」の次の5つ。
どのような事をするLibraryなのかなんとなく理解できますね。実行中のエラーを捕まえる「error」なんてのもあるようです。これらを、メソッドチェーンで繋いでいくのが、JSDeferredの使い方らしいです。何故、「らしい」かというと使った事がないから。でも、JSDeferredを使っている人やJSDeferredのコードを読んだ人のblogからは興奮が伝わってきます。
読まないとちゃんとした使い方がわからないというレポートもありますし、これは是非読んでみたいですね。ただ、codeを斜め読みしたのですが短いわりに少々難解かもしれません。一人で読んでも理解できないかもしれませんね。
ということで、今週末にKanasan.JSでJSDeferredのCodeReadingがあります。
正直言って自分も出たいのですが...。スタッフや参加する人のBlogにも告知が...。
あああ、うらやましい...。Onlineからも参加可能なので、遠方の方も是非ご参加下さい。自分も、当日時間があればOnlineでお邪魔するつもりです。
JSDeferredの読み方(というより印刷の仕方)
ここからが本題です。
個人的には、codeは印刷したほうが全体像が掴みやすく読みやすい(検索用にエディタも併用)のですが、以前行なっていたprototype.jsのCodeReadingの時は、印刷すると何十ページにもなっていました。しかし、JSDeferredは400行のLibraryです。用紙サイズをA3、文字サイズをギリギリ読める大きさにして行間も調整し表示を2段にすると、なんと1ページに収まってしまいます。
小さくても読みやすいフォントを選択しましょう。コメントも含めて全てasciiなため、様々なフォントを選択できます。tabを小さめに設定すれば(文字間を設定できれば尚良し)、表示を3段にする事もできますので、行間を広げる事もできます。用紙の余白を印刷できるギリギリに設定し、段の間隔を小さくすれば、フォントをもう少し大きくする事も可能です。
1枚の紙で全体像が把握できると、理解が進むのがはやいのでお勧めです。

2009年06月08日

metacon2009に参加して -勉強会をブームにしてはいけない-

勉強会カンファレンス、お疲れさまでした。特にスタッフの皆様、本当にお疲れさまでした。
会場を提供して頂いたOracleさん、ありがとうございました。ヒノキの匂いの漂うロビー、広々としたセミナー会場、とても印象的でした。
プレゼンも非常に興味深いものが多く大変ためになりました。このmetaconを今後に生かす事ができるように色々やっていきたいと思います。当日の内容はUstreamで中継され録画もされていますので、興味のある方はそちらをご覧下さい。個人的には勉強会を生涯学習の面から論じた「勉強会と行政」がお勧めです。参加者のblogも少しずつentryされていますし、メディアの方が来られていましたので当日の記事も出てくるかと思います。当日のChatのログはIRCのためログは残っていないと思います。
さて、興味深い事が色々聞けて、大変ためになったmetaconですが、参加することでこれまで懸念していたある事を、他の人からも聞く事ができましたので、書いてみようかと思います。内容的には批判的なものになりますが、特定の人物及びその発言等を批難・否定するつもりはありません。状況をより良くしていこうと考えている立場というのは同じだと思いますので、反論等あるでしょうが、発展的な方向でお願いします。
勉強会の開催ブームへの懸念
勉強会開催がブームであると言われますが、そもそも勉強会はブームで開催すべきものなのでしょうか。甚だ疑問です。

以前あったLUGを中心とした数多くのUsers Groupの設立、そしてその後の衰退と沈静期間。沈静期間に社会に出た当時の私にとっては、社外に技術的な繋がりを持つ事はできませんでした。この頃の私は、社外に何らかの交流会のようなものがあるのではないかと必死に探しました。Users Groupというものがあるという事を知りましたが、その名前から「使う人の集まり」と誤解してしまい、「開発する人の集まり」を探していた私にとって参加したいという気持ちを持つには至りませんでした。UGが何をしている集団なのかをもっと公開していれば、違った今があったと思います。(私が、ChatやUstream中継、Chatログの公開やUstreamの録画にこだわるのはこのような点からです。)他にも異業種交流会というものを見つける事ができましたが、弁護士や看護士とお酒を飲みたかったわけではないので参加するつもりもありませんでした。

そして、数年が経ち、やっと参加すべき勉強会を見つける事ができました。「Ruby勉強会@関西」です。Ruby関西への参加を機に、各種勉強会に顔を出していく事になります。自分でも勉強会を開く事になりました。今も続いているKanasan.JS(現代表は37toさん)です。

そして、去年から続く多数の勉強会の設立。勉強会開催ブームとも言われています。しかし、私は疑問に思います。勉強会はブームで良いのでしょうか。このブームが去った後何が残るんでしょうか。来年、再来年も勉強会は開催され続けていますか。UGのように衰退し、社外で勉強する場が失われてはいませんか。各勉強会設立が同時期であれば、繁盛期衰退期も重なる可能性があります。ほとんどの勉強会の衰退期が同じだった場合、その後には何が残るのでしょうか。

この勉強会開催ブームが一気に盛り上がり、勉強会が定着すれば良いとも思います。しかし、勉強会の存在は未だコミュニティ内だけのもので、業界へはほとんどアピールできていません。会社の重要なポストに就いている人達の耳には届いていません。業界誌を積極的に読む上層部や経営者であれば既にコミュニティへの接触を試みているでしょう。しかし、業界全体に勉強会が重要だという意識を持ってもらうためには経済誌や一般誌への露出が必要です。

勉強会が増えていくためには参加者が必要です。コミュニティに関わる人の数が増えなければ、勉強会の数を増やしたところで参加者の取り合いが起きてしまいます。コミュニティへの人の流入がなければ、勉強会の増加はコミュニティの疲弊をもたらします。コミュニティに関わる人を増やすために、勉強会をブームにするという意見もあるかも知れませんが、現状は人の流入が追いついていないという印象を持っています。

私は、今の開催されている勉強会の数は、コミュニティの体力を上回っていると思っています。上記のように、勉強会開催の意義が業界内の共通意識として根付くのであれば、ブームをもっと盛り上げるべきでしょう。しかし、そうならないのであればもうこれ以上ブームにすべきではないと思います。コミュニティの体力が残っているうちにブームを終わらせなければなりません。

私は、勉強会というものはブームではなく、技術者にとっての日常でなければならないと思っています。ある勉強会が衰退しても、それを補う形で別の勉強会が設立されるような状態が良いと思っています。勉強会がエリマキトカゲやウーパールーパーと同様にならないようにしなければいけないと思っています。ティラミスやナタデココ、パンナコッタと同じではいけないのです。

勉強会のライフサイクルの設立期が、勉強会開催ブームによって統一されてしまう事を危惧します。このままでは13年ゼミや17年ゼミになってしまいます。UG設立期から勉強会設立期の間、コミュニティにほとんど動きがなかった期間と同じような期間を、勉強会開催ブームの後に作ってはいけないと思います。
勉強会バブル
勉強会開催ブームに対する危惧を人に説明したところ、「『勉強会バブル』ですか?」と言われました。勉強会バブル、これが私が感じていることを今のところ一番的確に表していると思います。勉強会をバブルにせずに、技術者の日常になくてはならないものになっていく事を願います。
2009/06/17 追記
続きを書きました。

2009年06月10日

世にも奇妙なJavaScriptの機能

タイトル大袈裟過ぎ。
今は亡き某チャットで出てきた話だけど、誰も書き留めていないみたいなので書いておく。
大文字小文字変換
大文字小文字を変更するtoUpperCaseメソッドとtoLowerCaseだけど、実は全角にも適応できる。
"a".toUpperCase(); //=>"A"
"A".toLowerCase(); //=>"a"
それどころか、こんな文字も変換可能。
"α".toUpperCase(); //=>"Α"
"Α".toLowerCase(); //=>"α"
"ω".toUpperCase(); //=>"Ω"
"Ω".toLowerCase(); //=>"ω"
"ψ".toUpperCase(); //=>"Ψ"
"Ψ".toLowerCase(); //=>"ψ"
"ա".toUpperCase(); //=>"Ա"
"Ա".toLowerCase(); //=>"ա"
"â".toUpperCase(); //=>"Â"
"Â".toLowerCase(); //=>"â"
でも、グルジア文字は片方向しか無理。そういう規則のある文字なのかJavaScriptのバグなのかは不明。(Firefox3.0の話)
"თ".toUpperCase(); //=>"თ"
"Ⴇ".toLowerCase(); //=>"თ"
上記は、他のブラウザでも可能なはず。
存在しないメソッドコールに反応
Rubyのmethod_missingと同じ。こっちはFirefox限定のはず。
Object.prototype.__noSuchMethod__=function(methodName,argsArray){
    return "存在しないメソッドが呼ばれました。 "+methodName+"("+argsArray.join(",")+")";
};
["a","b","c"].fooBar("foo","bar"); //=>"存在しないメソッドが呼ばれました。 fooBar(foo,bar)"
2009/06/13 追記
文字の大文字小文字についてはてなブックマークやWassrで色々教えてもらったので引用。
自作Blog更新ツールが、インラインのタグ設定に対応していないので、リンクは貼れずURLの表記のみとなってる。
最後のUnicode3.0については、はせがわさんも自身がないとの事です。

大文字小文字の概念は同じ文字でも文化的背景で異なるので注意。→http://blogs.msdn.com/oldnewthing/archive/2003/09/05/54802.aspx
http://www.unicode.org/Public/UNIDATA/CaseFolding.txt / 音素文字なら大文字小文字があるという訳ではない。
http://unicode.org/cldr/utility/character.jsp?a=10D7 http://unicode.org/cldr/utility/character.jsp?a=10A7 http://unicode.org/cldr/utility/character.jsp?a=2d07
調べた。toUpperCase/toLowerCaseはECMA-262ではUnicodeに従って大文字小文字変換。Unicode 3.0+ では U+10A7(大文字)とU+2D07(小文字)の相互変換が可能だけど、Unicode 2.x では U+10A7(大文字) から U+10D7(小文字) に一方通行の変換。ECMA-262では従うべきUnicodeのバージョンは「2.1 or later」なので、結論としては仕様に従った動作。

2009年06月13日

Skypeの特定のroomで発言できなくなる問題

オープンチャットで、Windows版のSkypeを使っている人が発言できなくなるけど原因を特定できないかと聞かれた。"unterminated attribute"と表示されるらしい。"unterminated attribute"で調べてみると5分もかからないうちに見つかった。
My idea is that it happend because someone in the chat changed the topic (I can see the that in the conversations window, I guess it's too long or something).
topic(バージョンによってはタイトルと表現)に変な文字「( ・ิω・ิ)」が入っていたので、タイトルを全部普通の文字に置き換えた。あっさり、解決。
原因は、文字コードの変換じゃないかとか、サロゲードペアがどうとか話をしていたけど、上記のリンク先のスクリーンショットを良く見ると、topicに「<--」が入っている。まさか。こっちのオープンチャットのタイトルは、「( ・ิω・ิ) < こんにちわ」こんな感じ。もしかして「<」が原因?やっぱりそうだった。
皆で色々実験してみると、「123<b>456</b>789」は「123456789」になったり、「a<img src="..." />b」「ab」になったり、「<script>alert(1);</script>」は「alert(1);」になったり。タグの削除はしているみたいだけど、「<」を「>」で閉じていないとおかしくなるらしい。また、追加で変な不具合も発見。「&amp;&lt;」が「&<」として表示される。「&amp;lt;」は「&lt;」のままなので、置換されているのではないようだ。このあたりはMac版でも再現した。
とりあえず、Excite翻訳を使って、適当な英語をこしらえてSkypeのサポートに投げておいた。
適当な英語
Hello.

I fond bug of function of "topic".
If "<" is put in the topic, the display becomes amusing.
It is not possible to make remarks with Windows.
In Mac, "&amp;" in topic is evaluated as "&".
かなり怪しいけど多分通じると思う。
でも、よく上の引用元見たらSkypeのフォーラムなんだよねぇ。開発陣にとっては既知のバグだったかも。

2009年06月17日

勉強会バブルのという言葉が一人歩きしはじめてはないか

先日、勉強会バブルが起きているのではないかという主旨のエントリーを書きました。
勉強会バブルという言葉が少々一人歩きしかかっているような気がします。
やはり、勉強会バブルという言葉を使ったのがまずかったのでしょう。思いもよらず、センセーショナルな言葉になってしまいました。言いたい事が沢山あったためにあのようなエントリーになってしまいましたが、話を単純化したほうがよさそうです。
勉強会のブームの影響
・勉強会の需要と供給のバランスは保てているか。
・供給過剰により参加者が減りはしないか。
・参加者・発表者の取り合いが起きても勉強会の質が保てるのか。
・これらの問題が顕著になったとき、勉強会全体の衰退の可能性はないか。
どうでしょうか。衰退の是非は個々人の価値観によると思いますので、その点は含めていません。
勉強会バブルという用語の出現日
私と知人との会話を引用し、勉強会バブルという言葉を用いましたが、インターネット上にはそれ以前より存在したようです。以下の2カ所です。
コミュニティの定義
「オープンソースコミュニティ」等の用語があるにもかかわらず、前のエントリーではコミュニティという言葉を使用してしまい、誤読を促してしまったようです。前のエントリーでは各々勉強会や各々コミュニティを更に括った集団を示すものとしてコミュニティと書いていましたが、もっと適切な言葉を用いるか何らかの造語をすべきでした。今回は、話を単純化し混乱を避けるため、コミュニティという言葉を避けています。

2009年06月18日

はてなにKanasansoftのサブドメイン

はてなは「http://???.hatena.ne.jp/」の???の部分に存在しないURLを指定すると「http://www.hatena.ne.jp/」へリダイレクトしてくれるらしい。
というわけで、皆も自分のはてなIDで1getしておくといいと思うよ。
Google

タグ クラウド