2011年9月27日火曜日

2011年9月の記事いろいろ

プログラム
deck.js
新しい表現方法を提供してくれるフレームワーク。

TransformJS – Exposing Transforms to JavaScript
3Dっぽい動きをCSSに簡単に付与できるようにしてくれるjQueryプラグイン。デモを見てもらったほうが早い。

Disk space is cheap...
SQL ServerでなんでもかんでもGUIDを主キーにしてたらすぐにDBがメンテナンスできなくなるよ、って話を計測データ付きで説明してくれている。初期状態で主キーはクラスタ化インデックスになっちゃうし、非クラスタ化インデックスにもクラスタされたキーは付与されるので、GUIDのキーが当たり一面にひろがっていってレガシーデータが大量になってきた場合ににっちもさっちもいかなくなっちゃうぜー、という怖いお話。


Web
Make Games with Construct 2
Html5のゲームをプログラムを書くことなくさくさくと作れちゃうすげーツール。これならデザイナーの人とかほんとさくっとゲーム作れちゃうね。

The top 10 SEO myths
Google's head of Webspam and all-round search sage, Matt Cutts, says: "Google doesn't use the keywords meta tag in our scoring at all. It's just a waste of time to throw a lot of phrases into the keywords meta tag"
ワロタw昔メタタグがすごく重要だ!とか言って大量にキーワードを設定してる人がいたなぁ。


デザイン
Design for Software: Typography Part 1
文字サイズの取捨選択について。

This is genuinely Microsoft’s idea of a
クッソワロタwあんだけリボンUIを押してるMSなのに全然使われてないwwみんな大好きコンテキストメニュー。


ビジネス
Please confirm your email address
何か登録した後とかにメールで確認するシステムというのは多いけれど、その際に「メールアドレスの確認」みたいなSubjectにするよりも「メールアドレスを確認してください」と何をするかを明示的に説明されているSubjectのほうが登録完了まで行うユーザの割合が多いというお話。

The little-known secret of how to actually choose a web designer (in 5 easy steps)
ブランディングとか情熱的な~のようなあいまいとした言葉を多用して相手を煙に巻くデザイナーではなく、デザインの結果としてどのような効果があってそれがどのような成果に結びついたのかを明示しているデザイナーこそ雇うべきというお話。


一般
Ten ways to improve your technical blog writing
誰に向けて書いてるのか、ってのが一番重要なんだよね。うん、そうだよね。すいません、毎回書き散らしてました。

Should Your Employees Take Naps?
昼寝したほうがいいよねって記事。いつも昼食後30分ぐらい寝るようにしてる。仮眠をとると午後眠たくならないから健全な精神状態で働ける。

2011年9月18日日曜日

名前付き引数のすすめ

仕事でVB.NETとJavascriptを使い、自分のプロジェクトではC#とJavascriptにPythonと使っているのだけれど、プロジェクトをスイッチさせたときに頭の中のSyntaxがごちゃごちゃになっててスラスラと書き始めるまでしばらく時間がかかったりする。そのせいもあるのか自分のコードを忘れる時間も早くなっている気がする。

で、先日、自分の組んだJavascriptのコードに機能を追加しようと眺めていたら下記のようなコードがあってハタと手が止まってしまった。

$('.class').disable(true);

・・・disableにtrueってなんだろ?有効、非有効の表示を切り替えるためにjqueryのpluginを作ったのまでは覚えているけれど、その引数の意味が思い出せない。パッと見て類推できるのは、disableにする、しないのフラグかなと思ったのだが、enableというpluginも用意したはずなのでそれは当たらない。で、良く分からないのでpluginの実装を見たら下記のようだった。

disable:function(clearValue){
 if (clearValue){
  // code here
 }
}

ということであのbooleanはdisableついでに値も消去するかのフラグだった。これがC#、VB.NETだとまだ楽で優秀なVisual Studioのインテリセンスがすぐにどういう値なのか教えてくれるし、PythonにしてもPyDevなどがあればDocumentが表示されるので簡易に分かったりする。が、Visual StudioでJavascriptのインテリセンスを使用するためにはReferenceタグを各ファイルに追加しなければいけなかったりと若干面倒だったりするので、Syntaxとして名前付き引数が用意されていないJavascriptで、コードを用いて同じ機能を実現しようとするならば下記のようになる。

item.disable({clearValue:true});

disable:function(options){
 options = options || { clearValue:false};
 if ( options.clearValue){
  // code here
 }
}

これでコードの可読性はあがったけれど若干冗長なのは否めない。ただ冗長だからという理由だけで、常にBoolean、Integer、Stringなどのプリミティブな値を定数としてそのまま引数として渡すのは、コードを管理していく上で良い方法だとは思わない。なので、変数名などからその引数を類推できない場合などは極力名前付き引数を使用するほうが可読性の向上 → メンテナンス性の向上というコンボになるので、上記のような状況では名前付き引数を使用するのが良いだろう。


蛇足ながらそれぞれの言語で名前付き引数で上記のシグネチャの関数を呼び出すと以下のような感じになる。

// c#
item.Disable(clearValue:true);

' VB.NET
item.Disable(clearValue:=True);

# Python
item.disable(clearValue=True);

2011年9月4日日曜日

Webを支える技術 を読んでの感想



Windows Formの開発をやっててASP.NETの案件をやるようになっちゃって、そのままWindows FormのノリでイベントドリブンなWebアプリを作っちゃってWebの基礎を良く分からずに来た人などはとくに手にとっておいて損はない本。

HTTP, HTML, Atom, RESTなどなど現在のWebを取り巻く状況を満遍なく解説してくれている。なんでもかんでもGETとPOSTで行っている人(私含む)なんかは、RESTの説明周りでPUT, DELETEの存在意義だったり使用方法を見て「おぉ、そうなんだ」というAhaモーメントがあると思う。それと最後のほうのRESTFulなWebサービスをどのように設計するか、はRESTFul Webサービスを設計する場合のとても良い指針になってくれると思うので勉強になった。