モノトーンの伝説日記

OBS Studio と Blackmagic Design が大好き。

<mini> Xxaml (Cross eXtensible Application Markup Language) についての話 (5) ~ entry point

 スマートフォンなどの特別な環境下にない場合はすべて XXaml 側で処理できるようにして簡単にエントリーポイントから起動できるようにしようと思う。それについて各言語こんな感じになるという見え方を書くだけ。

Windows/OS X/Linux

 Windows, OS X, Linux では OS との連携が弱いので、閉じたエコシステム系を形成しようと思う。つまり、XXaml 側による完全支配。 (manage all systems by xxaml)

C++

xxaml::application::start( []
{
    your::app app;
    app.Run();
} );

C

XXaml.Application.Start( () => {
    var app = new Your.App();
    app.Run();
} );

VB

XXaml.Application.Start(
    Sub()
        Dim app = New Your.App()
        app.Run()
    End Sub)

Java 5-7

xxaml.application.start( new ApplicationInitializationCallback() {
    @Override
    public void initialized()
    {
        final Your.App app = new Your.App();
        app.run();
    }
});

Java 8

xxaml.application.start( () -> {
    final Your.App app = new Your.App();
    app.run();
});

iOS/Android

 iOS はまだ検証してないのでごめんなさい。

 Android は検証してるけど、1 Activity = 1 Window = 1 Frame = n Pages にしようと思って、Android の App と XXaml の Application は関与しない感じにしようと思ってる。既存の axml な UI と XXaml の UI を併用可能にしてメリットを得られる?

 なぜこのような形にしたかというと、Android は共有のための Intent などが存在するから。共有のための Intent のページは Activity である必要があり、それを処理するのに Activity をうまく使う方が Android 開発には便利だから。

 とりあえず Java からのことしか考えてません。C++ だけの閉鎖空間による API 設計はまだ考えてない模様。

Android-java

package test.androidxxaml.demo;

import android.app.Activity;
import android.os.Bundle;

public class XXamlActivity extends Activity
{
    @Override
    public void onCreate( Bundle savedInstanceState )
    {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.xxaml_main); // OpenGL の Surface のみ書かれてる (?)

        xxaml.application.load(); // load global and theme resource

        final CoreWindow window = new xxaml.ui.core.CoreWindow();
        window.bind( this ); // bind this activity
    }

    @Override
    public void onDestory()
    {
        super.onDestory();
        xxaml.application.shutdown(); // release global, theme, xxaml, and native resource
    }
}

 まだイメージ。ただ、これ XXaml-Android の標準クラスとして搭載するからあんまり気にしなくてもいいのかも。XXamlActivity を継承して読み込むページを指定すれば簡単にロードできるようにしたらベストなのかもね。

 このあたりはどういう設計がいいのかまだまだ寝る。

まとめ

 2 つのプラットフォームの違いからこんな定義になってしまったけど、Android とか iOS はまだまだ研究が必要だと思う。そのために Androidソースコード読まないといけないからまだ先だと思う。

 とりあえずメモ程度です。