2012年2月7日火曜日

正しいHTMLを書こう

○はじめに
HTMLは多少構文がおかしくてもブラウザが柔軟に解釈してくれて、なんとなく動いてしまう事が多いですが、構文間違いが多いとブラウザに依存したコードとなり、想定外の環境だとレイアウトが崩れたり、動作しなくなったりする可能性があります。

今後も新しいプラトッフォームやブラウザが次々と登場する事でしょうから、出来る限り正しいHTMLを書けるように心がけたいと思います。

また、構文が間違っているHTMLは読みにくく保守しにくいので、その面からも正しいHTMLを書きたいと思います。

そこで、今回は、HTMLの構文が正しいかチェックする"HTML構文チェッカー"を使って、構文が正しいかチェックしてみました。

○実際にやってみる
私が作成している「ATND RSS」と言うサイトを例に、HTML構文チェッカーを使って見ます。

Web上にはいくつかの構文チェッカーがありますが、今回は、HTML5にも対応している(X)HTML5 Validatorを使ってみます。
他にも「HTML 構文チェッカー」などと検索するとたくさん出てきます。

①HTML5 ValidatorにチェックしたいWebサイトのURLを貼付けて「Validate」をクリックします。URLを貼付ける以外にも、HTMLファイルをサイトにアップロードするなどして構文をチェックすることも出来ます。

②すると、以下のように構文にエラーがある場所が表示されます。

2カ所のエラーがありました
  • 76行目:"/"の位置がおかしい。
  • 92行目:要素の右寄せを"align"属性で行っている。
    ※この属性はすでに廃止されている^^;)
発見されたエラーを修正してもう一回チェックしてみました。

今度は大丈夫そうです。
○まとめ
  • HTMLの構文チェックを行って正しいHTMLを書こう。


○関連記事


2012年2月6日月曜日

rubyコードの複雑さを数値化する

○はじめに
今日は、Rubyで書いたコードのメトリクスを測定するreekと言うツールを紹介します。

メトリクスの測定とはコードの複雑さ(汚さ)を計る事です。
複雑なコードは理解しにくいため、変更しにくく、バグが発生しやすいです。
メトリクスを測定して、複雑なコードを発見しリファクタリングすることで製品の品質が向上します。

○具体的に何をしてくれる?
メトリクス測定ツールは具体的に何をしてくれるのでしょうか?
例えばreekの場合は、コードの中に以下のような"汚い"部分が無いか探してくれます。
  • 大きすぎるクラス、メソッド
  • "a", "b"みたいな、何が入っているのか分かりにくい変数名
  • rdoc用のコメントが無いクラス・・・
    などなど
そして「汚い部分が何カ所あったか」と「どこがどんな風に汚いのか」を表示してくれます。
例えばこんな感じです。
./foo.rb -- 6warings    :
  #=>foo.rbに6カ所汚い部分があった
  Foo has no descriptive comment (IrresponsibleModule)
  #=>Fooクラスがどんなクラスなのか説明するコメントが無い
  Foo has the variable name 'a' (UncommunicativeName)
  #=>Fooクラスに'a'と言う説明的でない名前の変数がある
  Foo#bar has apporox 11 statements(LongMethod) 
  #=>Fooクラスのbarメソッドが長過ぎる
  ・・・
#以降は私が書いた補足です。

プログラムが機械的に解析した結果なので、完璧では無い事も多いのですが、コードの汚さの目安として使ったり、どこをリファクタリングしたら良いのかの基準にする事ができます。

では、さっそくreekを使ってみましょう。

○インストール
コマンドラインで以下を実行すればインストールできます。
$ gem install reek

○実行
reekは、1ファイルを対象にメトリクスを測定することも出来ますし、複数のファイルを一度に測定する事も出来ます。

なお、もちろんRubyで書かれたRuby on Railsのコードに対して測定する事も出来ます。

①一つのファイルのメトリクスを測定
$ reek ./foo.rb
→foo.rbファイルのメトリクスを測定

②複数のファイルのメトリクスを同時に測定
$ reek rails_app_example/app/controller/
→controllerディレクトリの中にある全てのファイルのメトリクスを測定します。

以上の通り簡単な手順ですので、ぜひお試しください。

○まとめ
  • reekはRubyで書いたコードのメトリクスを測定するツール
  • メトリクス測定とはコードの汚さを測定する事
  • メトリクスは完璧ではないけど、リファクタリングすべき場所の目安になる
  • reekでrubyコードのメトリクスを計ろう!