連載
|
Page1
Page2
|
●.NET開発ではなぜオープンソースが利用されないのか?
マイクロソフトとオープンソース。この両者は相反する関係にあると思われがちだ。確かに、オープンソースで提供されているツールやライブラリ、フレームワークといえば、もっぱらJava開発用のものばかりが思い浮かぶ。例えばオープンソースとして有名なEclipse、Struts、TomcatなどはすべてJavaベースの開発で用いられるものだ。実際にJava開発ではオープンソースを使うことはごく一般的な手段である。
ところがマイクロソフトが推進する.NETによる開発では、オープンソース・テクノロジを活用することは一般的だとはいえない。もちろん.NET開発においてもオープンソース・ソフトウェアがまったく存在しないというわけではない。例えば、NUnit(単体テスト・ツール)、NMock(疑似的なデータ処理を可能にするテスト・ツール)、NAnt(ビルド・ツール)、NDoc(ドキュメント生成ツール)、log4net(ログ出力ツール)などがある。しかしこれらのオープンソース・ツールはまだまだ一般的な.NET開発者にまで広く浸透しているわけではないようだ。
ではなぜJavaの世界では一般的な「オープンソースを使った開発」が.NETではあまり進んでいないのだろうか? この理由の1つに、.NET開発では、.NET Frameworkが提供する標準機能・標準サービスを中心に据えて、マイクロソフト・テクノロジのみを使用することで、最大限にその特徴を生かせるということが挙げられる。
.NET Frameworkのクラス・ライブラリは、そこで提供されるあらゆるアプリケーション・サービス(Windowsアプリケーション、Webアプリケーション、スマート・デバイス・アプリケーションなど)に対する設計方針や実装方法が、マイクロソフトにより統一・標準化されている。そのため、ある技術(例えばWebアプリケーション)の設計方針や実装方法を学べば、ほかの技術(例えばWindowsアプリケーション)にも応用が利くのだ。このため、.NET開発に対する習熟が早められ、結果として開発生産性が大きく高められる(これがもしJavaのように複数のオープンソース・テクノロジを組み合わせて利用しなければならない開発スタイルだとすれば、それぞれの設計方針や実装方法を個別に学習しなければならなくなり、開発効率が落ちてしまうだろう)。
また、標準提供されているマイクロソフト・テクノロジならば、統合開発環境であるVisual Studioが完全対応しているのでその利用が簡単であるし、それらのテクノロジが将来、変遷していく際にもマイクロソフトによる柔軟な移行サポートが期待できる。これがもしオープンソース・テクノロジならば、必ずしもVisual Studioで簡単に利用できるわけではないし、オープンソース・テクノロジのサポート期間もそれを提供する組織ごとにさまざまでその将来性に不安が残るだろう(もちろんソース・コードを自分で保守する意思があれば、この不安を一蹴できることは付け加えておく)。
.NET開発ではこのような性質があるために、.NET開発者はわざわざ非マイクロソフトのオープンソース・テクノロジを利用することに抵抗を感じているのではないだろうか? つまり、このような.NET開発のメリットこそが、
|
という構図を結果的に生み出してしまっているのではないかと筆者は考えている。
今回本稿で取り上げる「Enterprise Library」はオープンソース・ソフトウェアである。しかし、上に示したこととは1点だけ明確な違いが存在する。それは「マイクロソフトが推進しているオープンソースである」という点である。つまり、「非マイクロソフトのテクノロジ」ではないのだ。
なお、ここでいうオープンソースの定義およびライセンスは、GNU GPLなどとは違い、Enterprise Library独自のものだ。詳細は以下のライセンス規約のページを参照してほしい。
●マイクロソフトが推進しているオープンソースとほかのオープンソースでは何が違うのか?
そもそもEnterprise LibraryはAvanadeのACA.NET(Avanade Connected Architectures for .NET Development)をベースにして開発された.NETのライブラリで、patterns & practices(マイクロソフト・プラットフォーム上でのシステム開発における「規範的なパターン」と「ベスト・プラクティス」)の公開を担当しているマイクロソフトPAGチーム(Platform Architecture Guidance Team)のメンバーらによってGotDotNet Workspace(オンラインで共同作業をしながらアプリケーションを開発するためのWeb上の共有スペース)上で共同開発され、その後、完成したリリース・バージョン(Enterprise Library 1.0)がpatterns & practices上に掲載されたという経緯がある。それ故、Enterprise Libraryはマイクロソフトが.NETプロダクトの1つとして正式にリリースしたものではない。
しかし、マイクロソフトが.NET開発において最適かつ最善と考える設計・実装方針を示すに当たってのかじ取り役を担うPAGチームによって開発されたという安心感・信頼感は、ほかのオープンソース・ソフトウェアでは決して得られないものである。そしてこれこそがマイクロソフトが推進しているオープンソース(=Enterprise Library)とほかのオープンソースとの決定的な違いであるといえる。
●さまざまな開発者の手によって拡張されていくEnterprise Library
ではEnterprise Libraryは、今後もPAGチームのみが拡張していくのかといえば決してそうではない。PAGチームは、開発当初から世界中の開発者コミュニティへの参加とフィードバックを積極的に奨励してきたし、Enterprise Libraryを後から拡張しやすいようにNUnitの単体テストで使用できるテスト・ケースも公開している(なおEnterprise LibraryはTDD(テスト駆動開発)で開発されている)。テスト・ケースにはEnterprise Libraryの開発において使用されたすべてのケースが含まれているので(ちなみに総テスト・ケース数は実に1800個以上に及ぶ)、Enterprise Libraryのソース・コード変更時の回帰テストを自動で何度でも行えるようになっている。
実際にこういったPAGチームの呼び掛けに呼応するかのように、さまざまな開発者たちの手によってフィードバックが行われている。以下にその成果の一例を紹介しよう。
-
Enterprise Library構成管理ツール「Enterprise Library Configurationコンソール」(詳細は後述)に対するさまざまな拡張機能の提供
例えば、「構成管理ツールのコンソール画面からデータベースへの接続テストを行えるようにする機能」や「事前コンパイルによってアプリケーション起動時のパフォーマンスを改善する機能」など多数の拡張機能の提供が、開発コミュニティからのフィードバックにより実現している(なお、主な拡張機能については、後々紹介していきたい)。
-
世界中のさまざまなWebサイトによるEnterprise Library関連情報の公開
世界中で数多くのEnterprise Library関連サイトが立ち上がってきている。これらのサイトは「Online Tutorials about Enterprise Library」にまとめられているので、ぜひ確認してほしい。
それでは日本におけるEnterprise Libraryに関する活動状況はどうだろうか? 残念なことに本稿執筆時点では、国内のマイクロソフトpatterns & practicesサイトでEnterprise Libraryに関連する情報は公開されていない。しかし有志らによって日本国内においても積極的な活動が行われている。
- Enterprise Library日本語情報サイトの公開
・patterns & practices Enterprise Library
-
Enterprise Library日本語化リソースの提供
マイクロソフト・アーキテクト・エバンジェリストの荒井省三氏によって、Enterprise Library Configurationのコンソール画面(構成管理ツール)を日本語化するためのリソース・ファイル(DLLファイル)が提供されている。このリソース・ファイルは、上記に示したサイト「patterns & practices Enterprise Library」から入手可能だ(ちなみにEnterprise Library日本語化リソース・ファイルの開発は荒井氏個人によって行われたものであり、マイクロソフトは一切関与していないという点をご留意いただきたい)。
ここまで解説してきた内容から「マイクロソフトが推進するオープンソース・ライブラリ」を定義するなら、
マイクロソフトが推奨する.NET開発のベスト・プラクティスをベースにしながら、世界中の開発者によって多様な機能とサービスが構築・検証されていくことで、自由な拡張が可能なライブラリ |
といえるだろう。
Enterprise Libraryは、このような性質を持つオープンソースのライブラリであるため、「マイクロソフト以外のオープンソース・テクノロジは極力使いたくない」という開発者にも比較的受け入れられやすく、将来的には.NET開発においてオープンソースが一般的に利用されていくための足掛かりになるのではないかと筆者は期待している。
それでは、本稿の主題であるEnterprise Libraryの内容の解説に入ろう。まずはEnterprise Libraryが生まれた背景、そしてその目的について説明していこう。
INDEX | ||
Enterprise Library概説 | ||
マイクロソフトが推進するオープンソース・ライブラリ | ||
1..NET開発ではなぜオープンソースが利用されないのか? | ||
2.Enterprise Libraryの目的と背景、ライブラリの構成 | ||
「Enterprise Library概説」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|