Typemock: その過去・現在・未来
Eli Lopian氏率いるTypemock社の過去・現在・未来について、インタビュー形式にて記します。
作者 Jonathan Allen, 翻訳者 編集部 投稿日 2008年11月17日 午前12時36分
2005年以来、基本クラスライブラリは停滞している。他の.NETフレームワークは、進化しCLRの2.0バージョンにビルドされたが、基本クラスライ ブラリチームは、ゆっくりと希望リストを大きくしている。.NET 4では、CLRの新バージョンおよびBCLが準備段階に入り、最終的にこれらの拡張機能は実現可能となっている。
新しい型
IronPythonやF# のような言語には、単純だが真の整数型であるコア.NET言語に完全に適合しないものがある。整数を指定された設定ビットに適合するものに限定するVBや C#と異なり、これらの言語は事実上、どんな値も保持することができる。しかし、その2者間で値を共有するためには、他の言語は言うまでもなく、共通の実 装が必要である。基本クラスライブラリは、BigIntegerを追加することになっている。この高性能の実装はBCLチームおよびMicrosoft Solver Foundation(リンク)によって共同開発された。
主としてF#およびIronPythonに追加されたその他の型は、Tuplesである。Tuples自体は、たいしたものではない。元来固定長の一連の値を保持するデータ構造である。ある意味では、配列のようであるが、各値はさまざまな型を取ることができる。BigIntegerのように、BCLレベルにそれを組み込む理由は、重複した、互換性のない実装を避けることである。
コレクションの下に、SortedSetがある。これは別のクラスであるが、各ソートキーが固有でなければならない保管された一連のオブジェクトをサポートする。重複を許可する保管されたリストが、未だに欠けている。
管理されていないメモリサポート
非常に大きなファイルを扱っている場合、ネイティブデベロッパはMemory-Mappedファイルとして知られる技法に頼っている。その名前が示唆して いるように、メモリーマップされたファイルは、ファイル状の構造をメモリ内のアドレスにマップする。実際のファイルの他に、デバイスや共有オブジェクトを マップできる。メモリマップされたファイルの最も一般的な使用用途の1つに、プロセス間通信がある。このために、各アプリケーションが同様のファイル記述 子を開く。BCLの次バージョンでは、.NETデベロッパは、プラットフォーム起動呼び出しの代わりに、メモリマップされたファイルを直接使用することが できる。
国際化対応
.NET 4およびSilverlight 2のResource Managerは、CurrentUICultureのチェーンへのデフォルトではなく、UI言語に対するユーザの好みをサポートする。ユーザが複数の言語を好んで使用している場合に、特に重要である。
変化をもたらす
複数のSystem.Stringメソッド向けのデフォルトの比較ロジックが、変更されている。これは、英語のみのアプリケーションに影響を与えないが、国際的なアプリケーションに影響を与える可能性がある。
System.String(StartsWith、EndsWith、IndexOfおよびLastIndexOf)でのデフォルトの部分的なマッチングの過負荷は、デフォルトで国別環境に無関係である(原型)ように変更された。また、System.StringやSystem.CharのToUpperおよびToLowerが変更され、現在の国別環境の代わりに、不変の国別環境を使用する。StringComparisonパラメータを取る過負荷をつねに使用するよう推奨する、ガイダンスやFxCopの ルールがあるのだが、注意が足りないデベロッパはしばしばデフォルトの過負荷を使用する。.NETの以前のバージョンでは、これらのデフォルトの過負荷 は、現在の国別環境を使用し、国別環境に依存した比較をおこなう。無意識なデベロッパがデフォルトの過負荷を使用して、セキュリティ依存のストリング比較 をする場合、しばしばこれは微妙なバグを誘発する。最も顕著なのは、セキュリティの脆弱性である。
パフォーマンスの改善
現在、DirectoryおよびDirectoryInfo上のメソッドは配列を返す。これは、1つのエントリーがアクセスされる前に、ファイルの配列のすべてが追加される必要があることを意味する。DirectoryおよびDirectoryInfoへのIEnumerableのサポートが追加されたので、他のリストが追加されている間にも、ディレクトリの最初のファイルが即座にアクセス可能である。
原文はこちらです:http://www.infoq.com/news/2008/11/BCL-4
この論文では、仮想化やクラウドサービスの複雑なメリットと実世界における応用を検討します。さらに重要なこととして、Contegixが複雑な問題の解決に仮想化を実装している方法や、仮想化を使うべきではないケースについて詳細を提供します。
Fiberはユーザに試練を課すことなくこの考えを実装する有益な並行性ツールとして、ライブラリが2つあります。まさにこのためのソリューションとしてあるのがNeverBlockライブラリです。私たちはNeverBlockプロジェクトのMohammad A. Ali氏とRevactorライブラリのTony Arcier氏に話を聞きました。
システムの保守容易性や拡張性を確保するためのベスト・プラクティスに関する記事は数多くありますが、この記事では避けた方がいい、いくつかの悪習慣(ワースト・プラクティス)を強調します。
この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。
Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。
マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。
No comments
返信