InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

基本クラスライブラリに対する変更および改善

作者 Jonathan Allen , 翻訳者 編集部 投稿日 2008年11月17日

セクション
デベロップメント
トピック
.NET ,
.NETフレームワーク

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

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。