Authoring Tools Framework(ATF)プログラミングを学ぶ前に
ATFについてまだまだ勉強中です。
仕事終わりに少し見る程度ではホトンド進みませんね。。。
さて、ATFをプログラムをする前に知っておいたほうが良い内容があるので、
まずはそこをご紹介します。
サイト案内
Wiki
ほとんど英語ですが、ある程度日本語ページも増えてます。今後に期待
Pagesの検索に"_j"と入力すると日本語化されたページが探せます
Forum
フォーラムも用意されているみたいです。ただ、今のところあまり活用されていない模様。
プログラム基礎知識
もちろんC#の基礎は出来ていると仮定します。
しかし、基本C++で書いているプログラマーには馴染みの無い仕組みを使用していますので、そこらへんを説明します。
ATFはMEF(Managed Extensibility Framework)という仕組みで成り立っています。
MEFをキチンと学びたい方はMSDNのサイトをご覧ください。
”Managed Extensibility Framework”で検索すれば、わかりやすく教えてくれる日本語サイトも見つかります。
簡単に説明すると、クラスに欲しいインターフェイスを書いておくと、勝手に検索して渡してくれるという機能です。
class MyApp { .... [Import] private IDocument m_document; // IDocumentを実装したクラスが欲しいよー }; [Export(typeof(IDocument))] // このクラスはIDocumentです class MyDocument : IDocument { ...IDocumentの中身を実装 };
こんな感じの2つのクラスがあった場合に、
MyAppに対して明示的にMyDocumentを渡す必要なく、ImportとExportの属性を見て、勝手にMEFの機能で代入してくれます。
また、このImportとExportで受け渡されるクラスを「コンポーネント」と呼びます。
ATFはこのコンポーネントと呼ばれるクラスを大量に定義し、1つのツールを作ろうというフレームワークです。
そのため、MEF自体の仕組みを知ることが先決なので、まずはMEFの概要だけでもいいので勉強してみてください。
https://github.com/SonyWWS/ATF/wiki/MEF-with-ATF
ATFのWikiにMEFの説明と、MEFがどうATFで使用されているか書かれています。
今のところ、全て英語ページなので、MEFの説明(What is MEF)については別でググった方がわかりやすいです。
コンポーネントの初期化や、ATFコンポーネントの説明の部分は目を通しておくといいかと思います。
ATFは大量のデフォルトコンポーネントを用意していて、基本的にはそれを利用し、自分たちが作りたいアプリケーションに必要な部分だけを追加実装すればツールが作れます。
そのため、ATFが用意しているコンポーネントの仕様・構造を理解し、どう上手く利用するかが開発のキモとなると思います。
僕もまだまだ勉強中ですので、分かり次第ブログに書いていこうと思います。