だるプロ

だるい。毎日がだるい。そんなプログラマーのメモ。UE4,Unity,C++、その他趣味でやってる作業を書いていきたいな

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が用意しているコンポーネントの仕様・構造を理解し、どう上手く利用するかが開発のキモとなると思います。

僕もまだまだ勉強中ですので、分かり次第ブログに書いていこうと思います。