次の方法で共有


ツールボックス

C# JavaScript、Eric Lippert のブログ、その他

Scott Mitchell

すべての価格は 2008 年 11 月 19 日時点のものであり、変更される可能性があります。このコラムに記載されている見解は、執筆者の個人的な見解であり、必ずしもマイクロソフトの見解を反映するものではありません。

目次

C# および Visual Studio を使用して AJAX アプリケーション用の JavaScript を作成する
注目のブログ
コメント、文字列、マークアップ、およびリソース ファイルのスペル チェックを行う
推薦図書

C# および Visual Studio を使用して AJAX アプリケーション用の JavaScript を作成する

かつては、JavaScript は単純な入力の検証およびドキュメント オブジェクト モデル (DOM) の操作に役立つだけの言語と見なされていました。実際には、JavaScript は、現在の AJAX 対応 Web サイトで活用される多彩な機能を持つ強力な言語です。

現在の Web アプリケーションにおける JavaScript の普及と役割はこの数年で飛躍的に拡大されてきましたが、JavaScript コードの記述を C# コードの記述と比較すると、設計時の操作性に非常に顕著な違いがあります。

Visual Studio は JavaScript に対して IntelliSense およびデバッグ サポートを提供しますが、多数の JavaScript エラーおよび警告を実行時まで検出できません。一方、C# はリファクタリング、技術文書の作成、およびクラスのブラウズを行うツール、コンパイル時の型チェック、ならびにより堅牢なオブジェクト指向セマンティクスを提供します。さらに、ほとんどの ASP.NET 開発者は、JavaScript よりも C# に慣れ親しんでいます。

JavaScript の代わりに C# コードを記述できたらよいと思いませんか。マイクロソフトのソフトウェア アーキテクトである Nikhil Kothari により作成された Script# Version 0.5.1 (無料のコンパイラ、ランタイム、およびフレームワーク) を使用すると、それが可能になります。Script# コンパイラは、C# コードを同等の JavaScript コードに変換します。

Script# を使用して 1 回限りの短い JavaScript 関数またはイベント ハンドラ、およびより大きな JavaScript ライブラリを作成します。また、ASP.NET AJAX コンポーネントや動作、または Windows Vista サイドバー ガジェットを作成できます。Script# コンパイラは、.resx ファイルを使用して、ローカライズされたスクリプト ファイルを生成できるだけでなく、リリース スクリプトやデバッグ スクリプトを生成するように構成することもできます (デバッグ スクリプトには、読みやすくするために説明的な変数名と空白が含まれています。リリース スクリプトでは、コードをコンパクトにするために不要な空白が削除され、変数の名前が変更されています)。つまり、Script# では C# コードを使用する場合の利点 (コンパイル時エラー、慣れ親しんだ C# OOP 構文およびセマンティクス、より優れたツールのサポート) がすべて提供され、Web アプリケーションやサイドバー ガジェットに必要な JavaScript コードが生成されます。

コンパイラに加えて、Script# にはランタイムとフレームワークも含まれています。ランタイムとフレームワークには、両方とも、C# コードを記述するときにプログラミングするサーバー側の実装と、Script# コンパイラで生成される JavaScript コードが使用するクライアント側の実装が含まれています。

ランタイムは型システムを定義するものであり、必須です。フレームワークは共通タスク (HTTP 要求、JSON のシリアル化、ブラウザの検出など) を実行するための API を提供するものであり、オプションです。フレームワークには、ユーザー インターフェイス コントロールおよび API も含まれています。これらは、ブラウザでの Silverlight コントロールの使用、Internet Explorer 7 での RSS ストアへのアクセス、ブラウザ内からの Microsoft Virtual Earth へのアクセスに使用されます。

Script# は既存の C# アプリケーションを AJAX 対応 Web アプリケーションに変換するためのツールではないという点に注意してください。Script# を使用すると、開発者は、C# コードを記述することによって Web アプリケーションや サイドバー ガジェットを作成し、JavaScript コードに変換することができるようになります。

ただし、C# と JavaScript は 1 対 1 の対応ではないため、Script# を使用する場合にすべての C# 言語の機能を利用できるわけではありません。たとえば、書き込み専用のプロパティや特定の構造およびキーワード (goto、using、lock、sizeof など) は使用できません。

価格: 無料

projects.nikhilk.net/ScriptSharp

注目のブログ

真に偉大な技術関連のブログの最も重要な要素は、最新トピックの情報が満載の記事が頻繁に投稿され、重要なテクノロジや概念の詳細な検証が行われ、独創的な意見やスタイルが提供されていることです。Eric Lippert のブログには、これらの要素が理想的なバランスで盛り込まれています。

Eric は、マイクロソフトのシニア ソフトウェア設計エンジニアで、スクリプト言語チームと C# チームの両方に携わってきました。彼のブログでは、セキュリティ、パフォーマンス、およびコード品質に関する多数の優れた投稿記事や、言語のセマンティクスや機能 (ラムダ式、不変性、共変性や反変性など) に関する投稿記事を読むことができます。これらのトピックの多くが非常に詳しく解説されており、複数回のブログ投稿で構成される場合もあります。

ラムダ式と匿名メソッドに関するシリーズは 5 つのパート、C# の不変性に関するシリーズは 11 のパート、プロテクト メンバのセマンティクスに関するシリーズは 5 つのパートで構成されています。さまざまな言語の機能を使用する、または使用しないことについての彼自身の洞察や意見を述べた投稿もあります。彼のブログ記事は、「Fabulous Adventures In Coding (コーディングのすてきな冒険)」でご覧ください。

ブログ エントリの多くが複雑なトピックを扱っていますが、Eric はそれらの概念と理論を単純で実際的な用語で説明する能力に長けています。

blogs.msdn.com/ericlippert

ericlippert.gif

コードのセキュリティ、パフォーマンス、および品質に関する Eric Lippert のブログ (クリックすると拡大画像が表示されます)

コメント、文字列、マークアップ、およびリソース ファイルのスペル チェックを行う

コンパイラはスペル チェック機能の役割を果たします。メソッド名の 2 文字が入れ替わっていた場合や変数名のタイプミスがあった場合は、コンパイラがビルド エラーを報告します。さいわいにも、これらのエラーは簡単に識別できます。Visual Studio では、スペルミスの下に波線が引かれます。

ただし、コンパイラは、ソース コードのコメント、コードやリソース ファイル内の文字列、HTML、XML、または XAML の各マークアップに対してはスペル チェック機能として動作しません。コメントのスペルミスがそのまま技術文書になってしまうことや、さらに悪いことに文字列のスペルミスが QA でチェックされずに製品に残ってしまうということが起こりがちです。

この問題に対処する良い方法があります。コンパイラでは対処できない文字列、コメント、マークアップなどのコンテンツに対応するスペル チェック機能のツールをご紹介しましょう。そのようなツールの 1 つが ComponentOne の IntelliSpell 2.0 です。IntelliSpell は、Microsoft Office Word のスペル チェック機能と非常によく似ています。IntelliSpell では、スペルミスの下に波線が引かれます。スペルが間違っている語を右クリックすると、修正候補の一覧が表示されます。これらのスペルミスは、[Task List] (タスク リスト) ウィンドウでも確認できます。

[Task List] (タスク リスト) ウィンドウでスペルミスを修正するか、または [Task List] (タスク リスト) でスペルミスの語をダブルクリックしてその箇所に移動することができます。スペル チェック機能は、[Tools] (ツール) メニューのメニュー オプションから選択するか、IntelliSpell ツール バーから選択していつでも実行できます。IntelliSpell では、入力するたびにスペル チェックが自動的に行われるように設定することも、各ビルドの後に実行されるように設定することもできます。

既定では、IntelliSpell はすべてのコード ファイル、Web ページ、XML ファイル (構成ファイルを含む)、リソース ファイル、およびテキスト ファイルに対してスペル チェックを行います。この機能で無視される対象は、大文字小文字の区別、数字が含まれた語、インターネットおよびファイルのアドレスですが、これらの規則およびスペル チェックの対象ファイルの種類は構成し直すことができます。また、IntelliSpell では 16 の言語に対するスペルの辞書が提供されます。これらの辞書を単独で、または複数を組み合わせて、ローカライズ プロジェクトのスペル チェックで使用することができます。

IntelliSpell には、2 つのエディションがあります。Community Edition (無償) と Professional Edition (79.99 ドル) です。Community Edition の主要な機能は、Visual Studio との統合、スペルミス箇所の下線による表示、コンテキスト メニューによる修正候補の表示などです。Professional Edition にのみ含まれている機能もいくつかあります。

Community Edition では、一度に 1 ファイルにのみスペル チェックを実行できます。これに対して、Professional Edition ではプロジェクトまたはソリューションの全体についてスペル チェックを実行できます。また、入力時のスペル チェック機能、ローカライズ プロジェクトのスペル チェック機能、カスタム辞書の作成などの機能は Community Edition にはありません。

価格: Community Edition は無償。Professional Edition は 79.99 ドル。

componentone.com/

intellispell.gif

IntelliSpell での文字列、コメント、およびマークアップのスペル チェック (クリックすると拡大画像が表示されます)

推薦図書

どのような職業または趣味の分野でも、経験の有無にかかわらず皆が学習しなければならない領域があります。たとえば、ゴルファーは技術のレベルにかかわらず、ショート ゲームをレベル アップに役立てることができます。

ソフトウェア開発者の場合、SQL の構文と機能に関する知識は多ければ多いほどよいでしょう。SQL のヒントや秘訣を紹介するオンライン記事はたくさんありますが、私にとって SQL スキルを高めるのに役立つ最良の方法とは、SQL に関する本を入念に読み通すことです。

最近、私が読み終えた本は Michael Coles 著『Pro T-SQL 2008 Programmer's Guide』(Apress) です。この本では、T-SQL の構文と言語の機能に関する詳細な説明が提供されています。最初に、T-SQL 2008 の新機能 (MERGE ステートメントや新しいデータ型など) の説明があります。次に、主要な T-SQL 構造 (ユーザー定義関数、ストアド プロシージャ、トリガ、XML)、XQuery、および XPath のサポートについて説明されています。さらに、著者は暗号化、共通テーブル式とウィンドウ化の機能、SQL CLR プログラミングとエラー処理などについて話を進めていきます。各章ごとにこれらのトピックが取り上げられ、それぞれに詳細な説明と例が含まれています。また、各章の最後には一連の演習があり、その解答が付録に記載されています。

特に興味深く感じたのは、パフォーマンス チューニングに関する章です。この章では、最初に SQL Server でディスク上のデータを編成する方法と、その編成がパフォーマンスに与える影響の概要が述べられています。ディスク領域の節約や疎データの格納に関連するヒントも紹介されています。さらに、インデックスのパフォーマンス上の利点と、クラスタ化インデックス、非クラスタ化インデックス、およびフィルタ処理されたインデックスの比較が示されています。この章の最後には、クエリ プランの分析に関する説明と、クエリの最適化のヒントが示されています。

『Pro T-SQL 2008 Programmer's Guide』は、読者が既に T-SQL の基本を熟知していることを前提としています。SELECT、INSERT、UPDATE、DELETE の各ステートメントに関する初心者レベルの説明は含まれていません。さらに、この本では T-SQL に重点が置かれ、データベース管理の解説は提供されていません。ただし、SQL Server Management Studio、SQL Profiler、SQLCMD、BCP などのツールを簡単に紹介している短い章があります。Microsoft .NET Framework クライアント アプリケーションで ADO.NET SqlClient プロバイダおよび LINQ to SQL を使用して、SQL Server とやり取りする 2 とおりの方法を紹介している章もあります。

新しい SQL スキルの習得や既存のスキルの練習に費やされる時間は有意義な時間です。『Pro T-SQL 2008 Programmer's Guide』の明快な記述、多数のサンプル、および章の最後に用意された演習によって、SQL Server 2008 の最新機能を理解し、現在の SQL のスキルを高めることができます。

価格: 52.99 ドル

apress.com/

bookcov.gif

ご意見やご質問は、Scott (toolsmm@microsoft.com) までお送りください。

Scott Mitchell は、多数の著書を出版し、4GuysFromRolla.com の創設者でもあります。また、1998 年からは Microsoft MVP としてマイクロソフトの Web テクノロジに携わっています。現在は、フリーのコンサルタント、トレーナー、およびライターとして活躍しています。Scott の連絡先は、Mitchell@4guysfromrolla.com です。また、ScottOnWriting.NET にブログを公開しています。