Hatena::ブログ(Diary)

Yuya Yamaki’s blog このページをアンテナに追加 RSSフィード Twitter

2012年03月22日(木曜日)

Windows 8のデスクトップテーマ「Windowsベーシック」はWPF的には「AeroLite」

 Windows 8では、デスクトップテーマ「Windowsベーシック」がWindows 7と比べて大きく変化しているということは、以前の投稿でご紹介しました。


Windows 8 Developer Preivewのテーマ - Yuya Yamaki’s blog


f:id:Yamaki:20120322132655p:image


 また、Developer Preview時点のWPFでは、まだこの新しい外観の「Windowsベーシック」をサポートしていないということも、上の投稿で確認していました。しかしながら、.NET Framework 4.5 Betaでは「PresentationFramework.AeroLite.dll」というアセンブリが追加されており、これにより新しい外観の「Windowsベーシック」がサポートされています。


f:id:Yamaki:20120322133310p:image


 2006年の投稿でWPFでほかのデスクトップテーマを適用する方法を紹介していましたので、今回もこれと同じコードでご紹介します。


WPFでほかのデスクトップテーマを適用する方法 - Yuya Yamaki’s blog


XAML

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.Resources>
                <ResourceDictionary Source="/presentationframework.Aero;component/themes/aero.normalcolor.xaml" />
            </Grid.Resources>
            <Button Margin="10">aero.normalcolor</Button>
            <ProgressBar Grid.Column="1" Margin="10" Value="50"/>
            <ScrollBar Grid.Column="2" Margin="10" Orientation="Horizontal"/>
        </Grid>

        <Grid Grid.Row="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.Resources>
                <ResourceDictionary Source="/presentationframework.AeroLite;component/themes/aerolite.normalcolor.xaml" />
            </Grid.Resources>
            <Button Margin="10">aerolite.normalcolor</Button>
            <ProgressBar Grid.Column="1" Margin="10" Value="50"/>
            <ScrollBar Grid.Column="2" Margin="10" Orientation="Horizontal"/>
        </Grid>

        <Grid Grid.Row="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.Resources>
                <ResourceDictionary Source="/presentationframework.Luna;component/themes/luna.normalcolor.xaml" />
            </Grid.Resources>
            <Button Margin="10">luna.normalcolor</Button>
            <ProgressBar Grid.Column="1" Margin="10" Value="50"/>
            <ScrollBar Grid.Column="2" Margin="10" Orientation="Horizontal"/>
        </Grid>

        <Grid Grid.Row="3">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.Resources>
                <ResourceDictionary Source="/presentationframework.Luna;component/themes/luna.homestead.xaml" />
            </Grid.Resources>
            <Button Margin="10">luna.homestead</Button>
            <ProgressBar Grid.Column="1" Margin="10" Value="50"/>
            <ScrollBar Grid.Column="2" Margin="10" Orientation="Horizontal"/>
        </Grid>

        <Grid Grid.Row="4">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.Resources>
                <ResourceDictionary Source="/presentationframework.Luna;component/themes/luna.metallic.xaml" />
            </Grid.Resources>
            <Button Margin="10">luna.metallic</Button>
            <ProgressBar Grid.Column="1" Margin="10" Value="50"/>
            <ScrollBar Grid.Column="2" Margin="10" Orientation="Horizontal"/>
        </Grid>

        <Grid Grid.Row="5">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.Resources>
                <ResourceDictionary Source="/presentationframework.Royale;component/themes/royale.normalcolor.xaml" />
            </Grid.Resources>
            <Button Margin="10">royale.normalcolor</Button>
            <ProgressBar Grid.Column="1" Margin="10" Value="50"/>
            <ScrollBar Grid.Column="2" Margin="10" Orientation="Horizontal"/>
        </Grid>

        <Grid Grid.Row="6">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.Resources>
                <ResourceDictionary Source="/presentationframework.Classic;component/themes/classic.xaml" />
            </Grid.Resources>
            <Button Margin="10">classic</Button>
            <ProgressBar Grid.Column="1" Margin="10" Value="50"/>
            <ScrollBar Grid.Column="2" Margin="10" Orientation="Horizontal"/>
        </Grid>
    </Grid>

</Window>


f:id:Yamaki:20120322133202p:image


2012年03月05日(月曜日)

Silverlightアプリケーション最適化ツール「XapOptimizer」がWindows Phoneアプリに対応

 XapOptimizerは2009年にリリースされたSilverlightアプリケーションの最適化ツールで、アプリケーションパッケージのサイズ削減やコードの難読化といった機能を持っています。


Silverlightアプリを軽量化するツール「XapOptimizer 1.0J」 - Yuya Yamaki’s blog


 今回、このXapOptimizer 1.0Jのサービスパックがリリースされ、Windows Phoneアプリの最適化がサポートされるようになりました。


no title


 Windows Phoneでは、20MB以上のサイズのアプリケーションは3G回線ではダウンロードすることができないという制限が存在します。


patterns & practices | Microsoft Docs

電話にダウンロードするパッケージのサイズが 20 MB を超える場合、GPRS または 3G 電話接続では Windows Marketplace からダウンロードすることはできません。サイズが 20 MB を超えるパッケージは、Wi-Fi 接続または物理的な有線接続を介してダウンロード、インストールしなければなりません。


 これはiPhoneも同様となっており、開発の際に20MBの壁を意識することは比較的認知されているようです。


no title

有料アプリの場合、購入することすらできないため、単純に20MBを超えるだけで販売機会を逃すことになり、iPhone開発者にとってアプリを20MBに収めることが重要であることはよく認知されています。


 もちろんこのレベルのサイズの場合、大部分を画像や音声といったコンテンツが占めているためXapOptimizerでサイズ削減できる割合はあまり大きくないことが予想されますが、アプリサイズをできる限り小さくするに越したことはありません。


 下の図は実際にMarketplaceで公開しているアプリをXapOptimizerで最適化した結果です。


f:id:Yamaki:20120305174705p:image


 今回のケースでは、アプリサイズだけでなく起動の速度やメモリ消費のピークも僅かに減っていることを確認することができました。


最適化前:

f:id:Yamaki:20120305181625p:image


最適化後:

f:id:Yamaki:20120305181624p:image