先週開催された.NET Conf 2020において、Scott Hunter(.NETのプログラムマネジメントディレクタ)、Maddy Leger(Microsoft Mobile Dev Tools — Xamarin担当プログラムマネージャ)、David Ortinau(Mobile Developer Tools担当プリンシパルプログラムマネージャ)の3氏が、Xamarinの最新のデバッグ機能であるHot ReloadとHot Restartについて説明した。最新のVisual Studioアップデートはデバッグエクスペリエンスが多くの領域、特にXamarinアプリ開発において改善されている。最初に例として挙げられるのは、修正による変更結果を素早くプレビューできるXAML Hot Reloadの新バージョンだ。1年前にリリースされた最初のバージョンに比較すると、Universal Windows Platform(UWP)とWindows Presentation Foundation(WPF)用のXAML Hot Reloadアーキテクチャを意識したリライトが行われている。開発者コミュニティのフィードバックによると、Xamarin.Forms UWPとの併用や変更ページの部分的なリフレッシュ(これはVisual Studioのデバッグ設定によって変更可能なオプションである)が可能になるということだ。
出典: https://devblogs.microsoft.com/xamarin/dotnetconf-2020-xamarin-recap/
Maddy Leger氏の説明によれば、
XAMLが有効になれば、アプリは即座にアップデートされます。セーブする必要さえありません。
Xamarin Hot Restart機能の恩恵により、iOSのデバッグエクスペリエンスも改善されている。Macがなくても、iPhone上で直接アプリケーションをデバッグすることが可能になった。この機能は設定で有効にする必要があると同時に、(現時点では)有償のApple Developer Programサブスクリプションが要件となる。デバイスがWindows PCに接続されれば、それをデバッグ用のターゲットデバイスとしてVisual Studioが認識し、プロビジョンする。ただし、Apple Storeでのアプリ配布においては、これまで通りMacが必要だ。
その他に発表された機能としては、開発中にアプリ内の要素構造の可視化を支援するLive Visual Tree、XAMLバインディングの正しさや修正の必要を示すXAML Binding Diagnostic Paneなどがある。
GitHubプロジェクトページでのプルリクエストやコメントによるコミュニティからの大きなコントリビューションの成果として、新たに登場するXamarin.Forms 5.0には、次のような新たな機能やコントロールが含まれており、一部はすでに昨年からプレビュー版が提供されている。
- Brushes: 単色、線形グラデーション、放射状グラデーションを使用したアプリケーションUI領域の塗りつぶし。
- Shapes: 楕円、直線、多角形(polygon)、折れ線(polyline)、矩形(rectangle)などの形状の描画。
- Paths: 独自の形状やデザインの描画。SVGパスをサポートする。
- コントロールテンプレート: ネイティブコントロール用のカスタムテンプレート定義による、視覚面の強化。次図に示すラジオボタンはその例だ。
- CarouselView: VisualStateManagerに関連する視覚的アイテムの新たな改善。前後にあるアイテムの一部をプレビューすることで、ユーザーにスクロール方向を示唆す
PeakAreaInsets
などがある。バインドされたデータが利用できない場合に代替コンテンツを表示するEmptyView
の導入もそのひとつだ。 - SwipeView: 任意のコントロールに対してコンテキストメニューを付加する。
- ドラッグ・アンド・ドロップジェスチャ: UIアイテムを画面上の任意の領域にドラッグ・アンド・ドロップすることができる。モバイルアプリケーションの内外いずれにも機能するので、特にSurface Duoのように2面スクリーンを持つ場合には有効だ。
出典: https://devblogs.microsoft.com/xamarin/xamarin-forms-5-preview/
Xamarin.Forms 5.0の安定バージョンは今年末に予定されている。David Ortinau氏によると、プロダクトのリリースノートに従えば、アプリケーションのアップグレードはスムーズに行えるはずだ。今回のリリースは、.NET 6をターゲットとして来年に向けて計画されている、.NET Multi-platform App UI(MAUI)の実現への一歩である。