読者です 読者をやめる 読者になる 読者になる

the sea of fertility

C#er blog - http://ugaya40.net より移転。今度のブログは落ちない

Livet 1.3(VS2015対応リリース) & Livet2について

 

f:id:m_onoue:20141224062742p:plain

ProjectHome : http://ugaya40.hateblo.jp/entry/livet

SourceCode : https://github.com/ugaya40/Livet

Livet 1.3リリース

Livet1.3をVSギャラリー/Nugetともにリリースしました。

www.nuget.org

visualstudiogallery.msdn.microsoft.com

 

VS2015対応がメインですが、VSギャラリーとNugetで公開しているアセンブリに含まれなかったかなり長い間放置していた数々のバグ修正を含んでいます。

破壊的変更があります。

InteractionMessageAction.InvokeActionOnlyWhenWindowIsActiveのデフォルト値が、falseからtrueになりました。混乱が多く発生していたのを見かねたからです。

github.com

最後のLivet1.x系リリース

Livet1.x系のリリースはこれで最後にしようかと思っています。LivetのインストーラはいまだにVS2010をサポートしていますし、VBにも対応しています。本質的ではない保守コストが高すぎます。

また、.NET4系のコードベースはもう今の時代に沿いません。限界を感じます。

 

2011年に開発を初めてから、記録が残っていない部分もありますが、少なくともVS2013になってからでもVSギャラリーとnugetだけで13000ダウンロードはしていただいています。開発のどの段階でも様々なフィードバックをいただきました。技術者としてもっとも成長できたのはMVVMの追求とLivetの開発に充てた時間だと思っております。ありがとうございました、感謝してもしきれません。

提督業も忙しい!や Krileをはじめとして多くのアプリで採用していただきました。特に前述の二つのアプリケーションには巨大なバイナリ実績を作っていただいたので感謝しております。

今後はLivet2の開発をしていこうと思っています。

Livet2について

実はもうすでにリポジトリが立っています。

github.com

Livet2はWPF4.6以降のみ対応になる予定です。単体にはなりません。StatefulModelの併用を前提としたものになります。

ugaya40.hateblo.jp

プロジェクトテンプレートはStatefulModelのNugetパッケージが参照された状態にする予定です。

仕事でXamarinをがっつり触っていますが、そちら用のLivetファミリを立てるかどうかはまだ決めていません。

 Livet1.x系の既知の問題とLivet2での対応

私が現在認識しているLivet1.x系の問題は以下の通りです。

  1. InteractionMessageのリーク
  2. ViewModelHelper.CreateReadOnlyDispatcherCollectionは、現在更新がかかっているObservable(Synchronized)Collectionから作成した際にタイミングによっては抜け等が出る
  3. C#6対応

1については問題の詳細はこちらになります。

qiita.com

もしかしたらそもそもWPF4.6では治っているかもしれません。そうではなかった場合対応を検討中です。Livet1.x系ではMessageを必ずUIスレッドで作成することで回避可能です。

2についてはStatefulModelの併用で解決します。StatefulModelでは新しい同期コレクションを作成する場合、ソースコレクションは必ずロックされます。StatefulModelはそのほかにも、Livetで解決しきれなかったM-V-Whateverにおけるコレクション問題を広く解決するためのソリューションです。Livet1.x系ではObservable(Synchronized)Collectionへの更新をCreateReadOnlyDispatcherCollectionが終わるまで停止するしか手がありません。

3についてはすでに現状のLivet2リポジトリで対応済です。

Livet2へのご意見募集

Livet2系での機能案・現状の課題についてはまだまだ私が認識している以上にあると思っております。なんでもよいのでコメントやメールをしていただけると大変助かります。githubにissueを立てていただくのもありがたいです。

よろしくお願いいたします。