SlideShare a Scribd company logo
1 of 80
Hokuriku.NET vol.11(2013.01.26)

Windows 8 ストア アプリ
開発 Tips


           小島 富治雄
自己紹介
• 小島 富治雄
• @Fujiwo
• 福井コンピュータアーキテクト株式会社
• Microsoft MVP C# (2005-2013)




                                 2
『Community Open Day 2013 北陸』

 • 5月11日(土)
 • 石川高専にて
 • スピーカー募集中
アジェンダ
1. Bing Map を     2.カメラを    3. コントラクト
使ってみよう            使ってみよう




4. Windows ストアへ   5. お役立ち
の提出                  サイト
本日の資料

•   http://www.slideshare.net/Fujiwo/windo
    ws-8-tips-hokurikunet-vol11-2013126
•   http://slidesha.re/WjZSu5
アンケート:

•   C# でプログラムが書ける (y/n)

•   “XAML” を「ザムル」と読む (y/n)

•   いや、 「ザメル」と読む派だ (y/n)

•   Windows 8 ストアアプリを作った
    ことがある (y/n)

•   何らかの MVP 受賞経験がある (y/n)
Windows ストアアプリ開発の例
1. Bing Map を使ってみよう
Bing Maps SDK for Windows Store apps
http://visualstudiogallery.msdn.microsoft.com/bb764f67-6b2c-4e14-b2d3-
17477ae1eaca
Bing Maps SDK for Windows Store apps

既存のアプリに NuGet で入れることも出来る
Bing Maps Account Center
http://www.bingmapsportal.com
Bing Maps Account Center
Bing Maps Account Center
DEMO
Bing Maps Application
Bing Map アプリの構成
Bing Map アプリの Package.appxmanifest
Bing Map アプリ - XAML
<Page
  x:Class="ShoPhotoInfo.MainPage"
  IsTabStop="false"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="using:ShoPhotoInfo"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  mc:Ignorable="d"
  xmlns:bm="using:Bing.Maps">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">

   <bm:Map x:Name="map" Credentials=“自分の Bing Maps Key"
     ZoomLevel="16" />
</Grid>
</Page>
Bing Map アプリ - C#
public sealed partial class MainPage : Page
{
  protected async override void OnNavigatedTo(NavigationEventArgs e)
  {
     map.Center = await GetCurrentLocationAsync();
  }
Bing Map アプリ - C# 続き
 static async Task<Location> GetCurrentLocationAsync()
 {
    var currentPosition = await GetCurrentPositionAsync();
    return new Location { Latitude = currentPosition.Coordinate.Latitude,
                          Longitude = currentPosition.Coordinate.Longitude };
 }

 static async Task<Geoposition> GetCurrentPositionAsync()
 {
    var geolocator = new Geolocator();
    //geolocator.DesiredAccuracy = PositionAccuracy.High;
    return await geolocator.GetGeopositionAsync();
 }
2. カメラを使ってみよう
DEMO
カメラ アプリの Package.appxmanifest
Blend for Visual Studio
カメラ アプリ - XAML
<Page
  x:Class="ShoPhotoInfo.MainPage"
  IsTabStop="false"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="using:ShoPhotoInfo"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  mc:Ignorable="d"
  xmlns:bm="using:Bing.Maps">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">

 <Grid.ColumnDefinitions>
  <ColumnDefinition Width="*"/>
  <ColumnDefinition Width="*"/>
 </Grid.ColumnDefinitions>
 <bm:Map x:Name="map" Credentials="自分の Bing Maps Key"
        ZoomLevel="16" Grid.ColumnSpan="2" Grid.Column="1" />
 <Image x:Name="image"/>
 </Grid>
</Page>
カメラ アプリ – XAML - AppBar
<Page.BottomAppBar>
 <AppBar>
  <Grid>
   <Grid.ColumnDefinitions>
    <ColumnDefinition/>
    <ColumnDefinition/>
   </Grid.ColumnDefinitions>
   <StackPanel Orientation="Horizontal">
    <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch“
                                  Style="{StaticResource PhotoAppBarButtonStyle}"/>
    <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch“
                                  Style="{StaticResource AddAppBarButtonStyle}"/>
   </StackPanel>
   <StackPanel Grid.Column="1" HorizontalAlignment="Right“
                                Orientation="Horizontal"/>
  </Grid>
 </AppBar>
</Page.BottomAppBar>
写真撮影 - C#
static async Task<StorageFile> TakePhotoAsync()
{
   var capture = new CameraCaptureUI();
   var file = await capture.CaptureFileAsync(CameraCaptureUIMode.Photo);
   return file;
}
写真の表示 - C#
static async Task<WriteableBitmap> CreateBitmapAsync(StorageFile file) {
      var pixelSize = default(Size);
      var bytes = default(byte[]);
      using (var stream = await file.OpenReadAsync()) {
           var decoder = await BitmapDecoder.CreateAsync(stream);
           pixelSize = new Size { Width = decoder.PixelWidth, Height =
decoder.PixelHeight };
           var pixelData = await decoder.GetPixelDataAsync();
           bytes = pixelData.DetachPixelData();
       }
       var bitmap = new WriteableBitmap((int)pixelSize.Width, (int)pixelSize.Height);
       using (var pixelStream = bitmap.PixelBuffer.AsStream()) {
          await pixelStream.WriteAsync(bytes, 0, bytes.Length);
       }
       return bitmap;
}
                               要 using
                               System.Runtime.InteropServices.WindowsRuntime;
写真の表示 - C#
async void OnPhotoButtonClick(
                  object sender, RoutedEventArgs e)
{
   image.Source = await CreateBitmapAsync(
                             await TakePhotoAsync()
                        );
 }
写真のファイルオープン - C#
static async Task<StorageFile> GetStorageFileAsync()
{
   var picker = new FileOpenPicker();
   picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
   picker.ViewMode = PickerViewMode.Thumbnail;

    picker.FileTypeFilter.Add(".jpg");
    picker.FileTypeFilter.Add(".jpeg");
    picker.FileTypeFilter.Add(".png");
    picker.FileTypeFilter.Add(".bmp");

    return await picker.PickSingleFileAsync();
}
写真のプロパティ(Exif) - C#

static async Task<ImageProperties>
                 GetImagePropertiesAsync(StorageFile file)
{
        var imageProperties = await
                                file.Properties.GetImagePropertiesAsync();
        return imageProperties;
}
写真のファイル オープン - C#
 async void OnOpenButtonClick(
                     object sender, RoutedEventArgs e)
{
   var file = await GetStorageFileAsync();
   image.Source = await CreateBitmapAsync(file);
   var imageProperties = await
                         GetImagePropertiesAsync(file);
   map.Center = new Location {
     Latitude = imageProperties.Latitude.Value,
     Longitude = imageProperties.Longitude.Value };
}
3. コントラクト
DEMO
3.1. 検索コントラクト
DEMO
検索コントラクト – C#
public class Book
{
     public string Title { get; set; }
     public Uri Url { get; set; }

     public override string ToString()
     { return Title; }
}
検索コントラクト – C#
public class Model : IEnumerable<Book>
{
     static readonly Model instance = new Model();

    public static IEnumerable<Book> Search(string queryText) // 検索時に呼ばれる
    { return instance.Where(book => book.Title.Contains(queryText)); }

    public IEnumerator<Book> GetEnumerator()
    {
      yield return new Book { Title = "基礎から学ぶ Windowsストアアプリ開発",
                              Url = new Uri("http://www.amazon.co.jp/dp/4863541198/") };
      yield return new Book { Title = "Windows8ストアアプリ開発入門",
                              Url = new Uri("http://www.amazon.co.jp/dp/4798035440/") };
      yield return new Book { Title = "Windowsストアアプリ開発入門",
                              Url = new Uri("http://www.amazon.co.jp/dp/4774155012/") };
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    { return GetEnumerator(); }
}
検索コントラクト – C#
<Page
  x:Class="ContractSample.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="using:ContractSample"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  mc:Ignorable="d">
  <Page.Resources>
     <local:Model x:Key="model" />
  </Page.Resources>
  <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
     <ListView x:Name="bookListView" ItemsSource="{Binding
Source={StaticResource model}}" Margin="120,140,120,140" />
  </Grid>
</Page>
検索コントラクトの追加
検索コントラクト追加時
の Package.appxmanifest
検索コントラクト – C#
private sealed class Filter : ContractSample2.Common.BindableBase
{
        private String _name;
        private int _count;
        private bool _active;


       List<Book> searchResult; // ToDo:
       public List<Book> SearchResult // ToDo:
       {
           get { return searchResult; }
           set { if (this.SetProperty(ref searchResult, value)) this.OnPropertyChanged("Description"); }
       }

      //public Filter(String name, int count, bool active = false) // ToDo:
      //{
      // this.Name = name;
      // this.Count = count;
      // this.Active = active;
      //}
       public Filter(string name, List<Book> searchResult, bool active = false) // ToDo:
       {
          Name = name;
          SearchResult = searchResult;
          Active = active;
       }
検索コントラクト – C#
        public override String ToString()
        {
          return Description;
        }

        public String Name
        {
          get { return _name; }
          set { if (this.SetProperty(ref _name, value)) this.OnPropertyChanged("Description"); }
        }


        public int Count
        {
           //get { return _count; } // ToDo:
           get { return SearchResult.Count; } // ToDo:
           set { if (this.SetProperty(ref _count, value)) this.OnPropertyChanged("Description"); }
        }

        public bool Active
        {
          get { return _active; }
          set { this.SetProperty(ref _active, value); }
        }

        public String Description
        {
          get { return String.Format("{0} ({1})", _name, _count); }
        }
    }
}
検索コントラクト – C#
protected override void LoadState(Object navigationParameter,
                                  Dictionary<String, Object> pageState)
{
     var queryText = navigationParameter as String;

    var filterList = new List<Filter>();

    //filterList.Add(new Filter("All", 0, true)); // ToDo:
    filterList.Add(new Filter("All",
                                Model. Search(queryText).ToList(), true));

    // ビュー モデルを介して結果を通信します
    this.DefaultViewModel["QueryText"] = 'u201c' + queryText + 'u201d';
    this.DefaultViewModel["Filters"] = filterList;
    this.DefaultViewModel["ShowFilters"] = filterList.Count > 1;
}
検索コントラクト – C#
void Filter_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
  var selectedFilter = e.AddedItems.FirstOrDefault() as Filter;
  if (selectedFilter != null) {
      selectedFilter.Active = true;

      DefaultViewModel["Results"] = selectedFilter.SearchResult;

      object results;
      ICollection resultsCollection;
      if (this.DefaultViewModel.TryGetValue("Results", out results) &&
          (resultsCollection = results as ICollection) != null && resultsCollection.Count != 0) {
          VisualStateManager.GoToState(this, "ResultsFound", true);
          return;
      }
    }
    VisualStateManager.GoToState(this, "NoResultsFound", true);
}
3.2. 共有コントラクト
DEMO
検索コントラクト – C#
<Page
  x:Class="ContractSample.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="using:ContractSample"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  mc:Ignorable="d">
  <Page.Resources>
     <local:Model x:Key="model" />
  </Page.Resources>
  <Page.BottomAppBar>
     <AppBar>
       <StackPanel Orientation="Horizontal">
          <Button Content=“共有" Click="OnButtonClick" />
       </StackPanel>
     </AppBar>
  </Page.BottomAppBar>
  <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
     <ListView x:Name="bookListView" ItemsSource="{Binding Source={StaticResource model}}"
Margin="120,140,120,140" />
  </Grid>
</Page>
共有コントラクト
 void OnButtonClick(object sender, RoutedEventArgs e)
{
     var book = (Book)bookListView.SelectedItem;
     if (book == null)
           return;

    var dataTransferManager =
                               DataTransferManager.GetForCurrentView();
    dataTransferManager.DataRequested += (_, args) => {
       args.Request.Data.Properties.Title = book.Title;
       args.Request.Data.SetUri(book.Url);
    };
    DataTransferManager.ShowShareUI();
}
DEMO
共有ターゲット コントラクトの追加
共有ターゲット コントラクト追加時
の Package.appxmanifest
4. Windows ストアへの提出
Windows ストア アプリ デベロッパー センター

• http://msdn.microsoft.com/ja-JP/windows/apps
• https://appdev.microsoft.com/StorePortals/
Windows ストア アプリ デベロッパー センター
アプリ名の予約
アプリ名の予約
アプリ名の予約
Windows ストア アプリ 登録の手引き
Windows 8 アプリ開発体験テンプレート
http://msdn.microsoft.com/ja-jp/jj556277



参考資料
Windows ストア アプリ 登録の手引き
本自習書では、Microsoft アカウントの取得から Windows ストア アプリの審査登録までの手順を紹介し
ます。
Windows ストア アプリ開発のためのポイント
より効率的にアプリのストア登録をしていただくためのヒントをまとめました。是非ご参照ください。
アイコン作成用テンプレート
ストア申請のために必要となるサイズのアイコンを、より簡単につくっていただくためのテンプレートを
ご用意しました。
リジェクトの理由と対策
リジェクト理由
2012/09/24

お客様のアプリは、要件 4.1 を満たしていません。
審査担当者からのコメント:
There is no privacy policy in metadata regarding internet
connection.
No privacy policy in Settings Charm
対処: プライバシーポリシー
プライバシーポリシー
はじめに
Sho's Software (以下「本サービス」) は、本サービスを利用する 全ての方 (以下「利用者」といいます) のプライバシーを尊重するために、 利用者の個人情報を以下の定義に従い、個人情報の適切な取り扱いに取り組んでまいります。
■個人情報の定義
個人情報とは、本サービスを通じて利用者から取得する氏名、年齢、メールアドレス、その他の利用者個人を特定できる情報のことを指します。 収集する個人情報は、利用者から本サービスにてご登録いただく情報に限られます。
■個人情報の利用目的について
本サービスは、利用者の個人情報を以下の目的で利用することができるものとします。
本サービスならびにその他本サービスに関連する情報の提供のため
利用者の本人確認のため
本サービスの運営上必要な事項の通知 (電子メールによるものを含むものとします)
本サービス上で、個人を特定できない範囲においての統計情報の作成および利用
本サービスの新規開発に必要なデータの解析や分析 •契約や法律等に基づく権利の行使や義務の履行
アフターサービス、各種問い合わせ対応のため •利用規約に反する態様でのご利用を防止するため
■統計データの利用
当社は、ユーザーの個人情報をもとに、個人を識別できないように加工した統計データを作成することがあります。個人を識別できない統計データについては、個人情報には当たらず、当社は何ら制限なく利用することができるものとします
。
■個人情報の共有ならびに利用制限について
本サービスは、以下に定める場合を除いて、事前に利用者本人の同意を得ず、利用目的の達成に必要な範囲を超えて個人情報を利用または共有することはありません。
法令により認められた場合
利用者の皆様の同意があった場合
人の生命、身体または財産の保護のために必要があり、さらに利用者の同意を得るのが困難な場合
裁判所、検察庁、警察、税務署、弁護士会またはこれらに準じた権限を持つ機関から、個人情報の開示を求められた場合
合併、営業譲渡その他の事由による事業の承継の際に、事業を承継する者に対して開示する場合
■個人情報の安全管理について
本サービスでは、個人情報の漏洩または毀損の防止ならびにその他個人情報の安全管理が行われるよう、個人情報の適切な監督を行います。 本サービスでは、業務遂行に必要な範囲内で、権限を与えられた者のみが個人情報を取り扱います
。 個人情報の取扱いを外部に委託する場合には、機密保持契約を締結のうえ委託先を監督します。
■個人情報の開示、訂正、削除について
本サービスは、個人情報保護法その他の法令等に基づき、個人情報の開示、訂正、追加、削除、利用停止、消去、第三者提供の停止、利用目的の 通知の請求に対応いたします。 請求が本人確認不可能な場合や、個人情報保護法の定める要件
を満たさない場合、ご希望に添えない場合があります。 なお、アクセスログなどの個人情報以外の情報については、原則として開示等はいたしません。
■プライバシーポリシーの更新について
本サービスは、個人情報保護を図るため、法令等の変更や必要に応じて、本プライバシーポリシーを改訂することがあります。 その際は、最新のプライバシーポリシーを本サービスに掲載いたします。本ページを都度ご確認の上、本サービ
スのプライバシーポリシーをご理解いただくよう お願いします。
■プライバシーポリシーに関するお問い合わせ
本サービスのプライバシーポリシーに関するお問い合わせは、下記までご連絡お願い致します。
リジェクト理由
2012/09/27

お客様のアプリは、要件 2.4 を満たしていません。

アプリがこの要件を満たしていないと見なされる一般的な理
由は、アプリの主要なシナリオの 1 つに該当する部分を完
了するために、ユーザーが Web ブラウザーにリダイレクト
されることです。
対処: …

•   Windows 8 アプリ開発体験テンプレート
    http://msdn.microsoft.com/ja-jp/jj556277
    「NewsReader テンプレート XAML/C# 用」
    で作ったアプリから、
    「Web ブラウザーで開く」機能を削除
リジェクト理由
2012/09/25

お客様のアプリは、要件 4.1 を満たしていません。
対処: プライバシーポリシー
Privacy Policy
Sho's Software takes the privacy of its users very respectfully. We also comply fully with the Act on the
Protection of Personal Information.
Sho's Software does not collect personally identifiable information (e.g., name, address, telephone
number, e-mail address) unless you provide it to us.
対処: Package.appxmanifest
リジェクト理由
2012/09/25

お客様のアプリは、要件 6.5 を満たしていません。
アプリがこの要件を満たしていないと見なされる一般的な理由:
アプリが、1 つ以上の認定言語をサポートしていない。
提出時に指定された言語の一部ではアプリが動作するが、すべての言語では動作
しない。
アプリの [説明] ページに記載されている情報 (説明、機能、スクリーンショット
など) が、アプリのローカライズ量を反映していない。
対処: Package.appxmanifest

<Resources>
 <Resource Language="x-generate" />
</Resources>



対処:

<Resources>
 <Resource Language=“en" />
</Resources>
リジェクト理由
2012/09/25

お客様のアプリは、要件 6.8 を満たしていません。
アプリがこの要件を満たしていないと見なされる一般的な理由は、1 つ以上のス
クリーンショットに、実際より良く見えるようなグラフィック処理が施されてい
ることです。



対処:

審査担当者へのコメント
Background image will be choosen from 6 images randomly.
リジェクト理由
2012/10/04
お客様のアプリは、要件 1.2 を満たしていません。
審査担当者からのコメント:
You should add more detail to your app description, it read too generic or vague
to adequately represent the app's unique value.




対処:

「説明」をより詳細に
リジェクト理由
2012/09/28

お客様のアプリは、要件 2.3 を満たしていません。 詳細情報
アプリがこの要件を満たしていないと見なされる一般的な理由は、アプリ タイ
ル、アプリ バー、設定チャーム ([バージョン情報] リンクを含む) が、プロモー
ション資料に使用されていることです。




対処:

アプリの中の “Die Hard” を別の表現に変更。
Windows 8 Clinic

•   http://msdn.microsoft.com/ja-jp/jj820154
5. お役立ちサイト
参考資料: 開発を始めるとき
•   デベロッパー センター - Windows ストア アプリ
    http://msdn.microsoft.com/ja-JP/windows/apps
    Windows ストア アプリ開発は先ずここから
•   Windows ストア アプリ プログラミングの開発者向け ダウンロード - デベロッパー センター -
    Windows ストア アプリ
    http://msdn.microsoft.com/ja-jp/windows/apps/br229516.aspx
•   Windows 8 アプリ開発体験テンプレート
    http://msdn.microsoft.com/ja-jp/jj556277
•   Windows アプリ アート ギャラリー - アプリに組み込めるイメージ素材集
    http://msdn.microsoft.com/ja-jp/windowsphone/hh544699
•   Developer Camp 2012 Japan Fall - Channel 9
    http://channel9.msdn.com/Events/Windows-Azure-DevCamps/Developer-Camp-2012-Japan-Fall
    動画と資料
•   Windows Store app samples - デベロッパー センター - Windows ストア アプリ
    http://code.msdn.microsoft.com/windowsapps/
•   MSDN マガジン Windows 8 Special Issue 2012
    http://msdn.microsoft.com/ja-jp/magazine/jj660298.aspx
参考資料: ブログ
•   Windowsストアアプリ - 田中達彦のブログ - MSDN Blogs
    http://blogs.msdn.com/b/ttanaka/archive/tags/windows_b930c830a230a230d730ea30_/
•   windows - Akira Onishi's weblog - MSDN Blogs
    http://blogs.msdn.com/b/aonishi/archive/tags/windows/
•   WinRT - 荒井省三のBlog - MSDN Blogs
    http://blogs.msdn.com/b/shozoa/archive/tags/winrt/
•   Windows Store 開発者向けブログ - MSDN Blogs
    http://blogs.msdn.com/b/windowsstore_ja/
•   Windows8 - 眠るシーラカンスと水底のプログラマー
    http://coelacanth.heteml.jp/blog/category/windows8/
•   プログラミング ( Metro スタイル ) - biac の それさえもおそらくは幸せな日々@nifty
    http://bluewatersoft.cocolog-nifty.com/blog/metro/
•   [WinRT] - かずきのBlog@Hatena
    http://d.hatena.ne.jp/okazuki/searchdiary?word=%2A%5BWinRT%5D
参考資料: 連載記事

• 速習 Windowsストアアプリケーション - CodeZine
  http://codezine.jp/article/corner/471
• WinRT/Metro TIPS - Insider.NET - @IT
  http://www.atmarkit.co.jp/ait/subtop/features/da/ap_winrttips_index.html
• Windows 8 APIの基礎 - ITpro
  http://itpro.nikkeibp.co.jp/article/COLUMN/20121206/442473/
参考資料: 単体テスト、ViewModel、その他

•   Metroアプリをテストファーストするときのポイント - slideshare
    http://www.slideshare.net/yasuhikoy/2520121201-tdd13
•   Windows 8 で MVVM パターンを使用する (機械翻訳) - MSDN マガジン
    http://msdn.microsoft.com/ja-jp/magazine/jj651572.aspx
    MVVM Light Toolkit http://mvvmlight.codeplex.com を使ったサンプル。
•   WinRT/Metro TIPS:多言語化対応を楽に行うには?[Win 8] - @IT
    http://www.atmarkit.co.jp/ait/articles/1211/08/news025.html
•   WinRT/Metro TIPS:文字列を多言語化対応するには?[Win 8] - @IT
    http://www.atmarkit.co.jp/ait/articles/1211/01/news069.html
•   WinRT/Metro TIPS:文字列リソースを使うには?[Win 8] - @IT
    http://www.atmarkit.co.jp/ait/articles/1210/25/news026.html
    固定文字列を、多言語化対応などのために、文字列リソースとして別のファイルに分けて
    おく方法
お役立ち本
Hokuriku.NET vol.11(2013.01.26)

Windows 8 ストア アプリ
開発 Tips


           小島 富治雄

More Related Content

What's hot

Parse introduction
Parse introductionParse introduction
Parse introductionTamura Koya
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-Kazunari Hara
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜Sotaro Omura
 
はじめてのCouch db
はじめてのCouch dbはじめてのCouch db
はじめてのCouch dbEiji Kuroda
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについてtako pons
 
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020Fujio Kojima
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門kwatch
 
Composable Callbacks & Listeners
Composable Callbacks & ListenersComposable Callbacks & Listeners
Composable Callbacks & ListenersTaisuke Oe
 
WordPress のキャッシュ機構
WordPress のキャッシュ機構WordPress のキャッシュ機構
WordPress のキャッシュ機構katanyan
 
20150530 pgunconf-pgbench-semi-structured-benchmark
20150530 pgunconf-pgbench-semi-structured-benchmark20150530 pgunconf-pgbench-semi-structured-benchmark
20150530 pgunconf-pgbench-semi-structured-benchmarkToshi Harada
 
Caliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for ScalaCaliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for ScalaPierre Ricadat
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )hiro345
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門Yohei Sasaki
 
Spectacular Future with clojure.spec
Spectacular Future with clojure.specSpectacular Future with clojure.spec
Spectacular Future with clojure.specKent Ohashi
 
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxG*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxNobuhiro Sue
 

What's hot (19)

Try Jetpack
Try JetpackTry Jetpack
Try Jetpack
 
Parse introduction
Parse introductionParse introduction
Parse introduction
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
Teclab3
Teclab3Teclab3
Teclab3
 
omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜omoon.org の裏側 〜FuelPHP の task 活用例〜
omoon.org の裏側 〜FuelPHP の task 活用例〜
 
はじめてのCouch db
はじめてのCouch dbはじめてのCouch db
はじめてのCouch db
 
test
testtest
test
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
 
PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門PHP5.5新機能「ジェネレータ」初心者入門
PHP5.5新機能「ジェネレータ」初心者入門
 
Composable Callbacks & Listeners
Composable Callbacks & ListenersComposable Callbacks & Listeners
Composable Callbacks & Listeners
 
WordPress のキャッシュ機構
WordPress のキャッシュ機構WordPress のキャッシュ機構
WordPress のキャッシュ機構
 
20150530 pgunconf-pgbench-semi-structured-benchmark
20150530 pgunconf-pgbench-semi-structured-benchmark20150530 pgunconf-pgbench-semi-structured-benchmark
20150530 pgunconf-pgbench-semi-structured-benchmark
 
Caliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for ScalaCaliban: Functional GraphQL Library for Scala
Caliban: Functional GraphQL Library for Scala
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
 
Spectacular Future with clojure.spec
Spectacular Future with clojure.specSpectacular Future with clojure.spec
Spectacular Future with clojure.spec
 
G*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+BetamaxG*workshop 2011/11/22 Geb+Betamax
G*workshop 2011/11/22 Geb+Betamax
 
あらためてPHP5.3
あらためてPHP5.3あらためてPHP5.3
あらためてPHP5.3
 

Similar to 「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)

初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣Yuji Takayama
 
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...Shotaro Suzuki
 
初めての Data api
初めての Data api初めての Data api
初めての Data apiYuji Takayama
 
cloud_firestore_schema_code_generation_for_flutter.pdf
cloud_firestore_schema_code_generation_for_flutter.pdfcloud_firestore_schema_code_generation_for_flutter.pdf
cloud_firestore_schema_code_generation_for_flutter.pdfKosuke Saigusa
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用Yatabe Terumasa
 
Roslyn による Visual Studio のアドイン
Roslyn による Visual Studio のアドインRoslyn による Visual Studio のアドイン
Roslyn による Visual Studio のアドインFujio Kojima
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -Yuji Takayama
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Yuji Takayama
 
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライAzure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライMasanobu Sato
 
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント Shinichi Hirauchi
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackkimukou_26 Kimukou
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会Yukihiro Kitazawa
 
Grunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanakaGrunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanakaHisateru Tanaka
 
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 AutumnJavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 AutumnKoji Ishimoto
 
サーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよサーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよkoji lin
 
Data api workshop at Co-Edo
Data api workshop at Co-EdoData api workshop at Co-Edo
Data api workshop at Co-EdoYuji Takayama
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter IntegrationKazuki Nakajima
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDEdcubeio
 

Similar to 「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日) (20)

初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api   cms どうでしょう - 大阪夏の陣初めての Data api   cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
 
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...Let's build a simple app with  .net 6 asp.net core web api, react, and elasti...
Let's build a simple app with .net 6 asp.net core web api, react, and elasti...
 
初めての Data api
初めての Data api初めての Data api
初めての Data api
 
cloud_firestore_schema_code_generation_for_flutter.pdf
cloud_firestore_schema_code_generation_for_flutter.pdfcloud_firestore_schema_code_generation_for_flutter.pdf
cloud_firestore_schema_code_generation_for_flutter.pdf
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
 
Roslyn による Visual Studio のアドイン
Roslyn による Visual Studio のアドインRoslyn による Visual Studio のアドイン
Roslyn による Visual Studio のアドイン
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
 
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
 
Azure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライAzure で Serverless 初心者向けタッチ&トライ
Azure で Serverless 初心者向けタッチ&トライ
 
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント Xamarin.formsで作成する翻訳機能付きtwitterクライアント
Xamarin.formsで作成する翻訳機能付きtwitterクライアント
 
Twitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hackTwitter sphere of #twitter4j #twtr_hack
Twitter sphere of #twitter4j #twtr_hack
 
20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会20130924 Picomon CRH勉強会
20130924 Picomon CRH勉強会
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
Grunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanakaGrunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanaka
 
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 AutumnJavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 Autumn
 
サーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよサーバーサイドでの非同期処理で色々やったよ
サーバーサイドでの非同期処理で色々やったよ
 
Data api workshop at Co-Edo
Data api workshop at Co-EdoData api workshop at Co-Edo
Data api workshop at Co-Edo
 
勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration勉強会force#4 Chatter Integration
勉強会force#4 Chatter Integration
 
React Native GUIDE
React Native GUIDEReact Native GUIDE
React Native GUIDE
 

More from Fujio Kojima

Burikaigi 2023「C# Live Coding!」 小島の分
Burikaigi  2023「C# Live Coding!」 小島の分Burikaigi  2023「C# Live Coding!」 小島の分
Burikaigi 2023「C# Live Coding!」 小島の分Fujio Kojima
 
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発Fujio Kojima
 
.NET 6 時代のデスクトップ アプリケーション開発
.NET 6 時代のデスクトップ アプリケーション開発.NET 6 時代のデスクトップ アプリケーション開発
.NET 6 時代のデスクトップ アプリケーション開発Fujio Kojima
 
BuriKaigi 2022 「C# Live Coding!」 小島の分
BuriKaigi 2022 「C# Live Coding!」 小島の分BuriKaigi 2022 「C# Live Coding!」 小島の分
BuriKaigi 2022 「C# Live Coding!」 小島の分Fujio Kojima
 
C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~Fujio Kojima
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~Fujio Kojima
 
.NETラボ 勉強会 2021年1月 「C#で機械学習」
.NETラボ 勉強会 2021年1月 「C#で機械学習」.NETラボ 勉強会 2021年1月 「C#で機械学習」
.NETラボ 勉強会 2021年1月 「C#で機械学習」Fujio Kojima
 
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~Fujio Kojima
 
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~Fujio Kojima
 
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分Fujio Kojima
 
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights FukuiFujio Kojima
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 Fujio Kojima
 
機械学習 (AI/ML) 勉強会 #1 基本編
機械学習 (AI/ML) 勉強会 #1 基本編機械学習 (AI/ML) 勉強会 #1 基本編
機械学習 (AI/ML) 勉強会 #1 基本編Fujio Kojima
 
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分Fujio Kojima
 
機械学習入門
機械学習入門機械学習入門
機械学習入門Fujio Kojima
 
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しようC# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しようFujio Kojima
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~Fujio Kojima
 
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」Fujio Kojima
 
.NET MVP によるドキドキ・ライブコーディング! 小島の分
.NET MVP によるドキドキ・ライブコーディング! 小島の分.NET MVP によるドキドキ・ライブコーディング! 小島の分
.NET MVP によるドキドキ・ライブコーディング! 小島の分Fujio Kojima
 
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...Fujio Kojima
 

More from Fujio Kojima (20)

Burikaigi 2023「C# Live Coding!」 小島の分
Burikaigi  2023「C# Live Coding!」 小島の分Burikaigi  2023「C# Live Coding!」 小島の分
Burikaigi 2023「C# Live Coding!」 小島の分
 
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
2022.04.23 .NET 6 -7 時代のデスクトップ アプリケーション開発
 
.NET 6 時代のデスクトップ アプリケーション開発
.NET 6 時代のデスクトップ アプリケーション開発.NET 6 時代のデスクトップ アプリケーション開発
.NET 6 時代のデスクトップ アプリケーション開発
 
BuriKaigi 2022 「C# Live Coding!」 小島の分
BuriKaigi 2022 「C# Live Coding!」 小島の分BuriKaigi 2022 「C# Live Coding!」 小島の分
BuriKaigi 2022 「C# Live Coding!」 小島の分
 
C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
 
.NETラボ 勉強会 2021年1月 「C#で機械学習」
.NETラボ 勉強会 2021年1月 「C#で機械学習」.NETラボ 勉強会 2021年1月 「C#で機械学習」
.NETラボ 勉強会 2021年1月 「C#で機械学習」
 
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
『議論パターン』 (Discussion Patterns) ~不毛な議論を避け、実り有る議論とするために~
 
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
 
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
牛タン会議 2019 @ 仙台 「C# ドキドキ ライブ!!」 小島の分
 
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
『機械学習 (AI/ML) の基礎と Microsoft の AI | 2019/04/02 Global AI Nights Fukui
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
 
機械学習 (AI/ML) 勉強会 #1 基本編
機械学習 (AI/ML) 勉強会 #1 基本編機械学習 (AI/ML) 勉強会 #1 基本編
機械学習 (AI/ML) 勉強会 #1 基本編
 
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
BuriKaigi2019 「C# ドキドキ・ライブコーディング」 小島の分
 
機械学習入門
機械学習入門機械学習入門
機械学習入門
 
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しようC# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
C# でニューラルネットワークをスクラッチで書いて機械学習の原理を理解しよう
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
 
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
「ふくいソフトウェアコンペティション 2014 大賞受賞者プレゼンテーション」
 
.NET MVP によるドキドキ・ライブコーディング! 小島の分
.NET MVP によるドキドキ・ライブコーディング! 小島の分.NET MVP によるドキドキ・ライブコーディング! 小島の分
.NET MVP によるドキドキ・ライブコーディング! 小島の分
 
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...Windows アプリケーション開発はじめに ~ Windows アプリケーション開発初学者の方向けVisual Studio を使ったアプリケーショ...
Windows アプリケーション開発 はじめに ~ Windows アプリケーション開発初学者の方向け Visual Studio を使ったアプリケーショ...
 

Recently uploaded

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Recently uploaded (10)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)

  • 1. Hokuriku.NET vol.11(2013.01.26) Windows 8 ストア アプリ 開発 Tips 小島 富治雄
  • 2. 自己紹介 • 小島 富治雄 • @Fujiwo • 福井コンピュータアーキテクト株式会社 • Microsoft MVP C# (2005-2013) 2
  • 3. 『Community Open Day 2013 北陸』 • 5月11日(土) • 石川高専にて • スピーカー募集中
  • 4. アジェンダ 1. Bing Map を 2.カメラを 3. コントラクト 使ってみよう 使ってみよう 4. Windows ストアへ 5. お役立ち の提出 サイト
  • 5. 本日の資料 • http://www.slideshare.net/Fujiwo/windo ws-8-tips-hokurikunet-vol11-2013126 • http://slidesha.re/WjZSu5
  • 6. アンケート: • C# でプログラムが書ける (y/n) • “XAML” を「ザムル」と読む (y/n) • いや、 「ザメル」と読む派だ (y/n) • Windows 8 ストアアプリを作った ことがある (y/n) • 何らかの MVP 受賞経験がある (y/n)
  • 8. 1. Bing Map を使ってみよう
  • 9. Bing Maps SDK for Windows Store apps http://visualstudiogallery.msdn.microsoft.com/bb764f67-6b2c-4e14-b2d3- 17477ae1eaca
  • 10. Bing Maps SDK for Windows Store apps 既存のアプリに NuGet で入れることも出来る
  • 11. Bing Maps Account Center http://www.bingmapsportal.com
  • 14. DEMO
  • 17. Bing Map アプリの Package.appxmanifest
  • 18. Bing Map アプリ - XAML <Page x:Class="ShoPhotoInfo.MainPage" IsTabStop="false" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:ShoPhotoInfo" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:bm="using:Bing.Maps"> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <bm:Map x:Name="map" Credentials=“自分の Bing Maps Key" ZoomLevel="16" /> </Grid> </Page>
  • 19. Bing Map アプリ - C# public sealed partial class MainPage : Page { protected async override void OnNavigatedTo(NavigationEventArgs e) { map.Center = await GetCurrentLocationAsync(); }
  • 20. Bing Map アプリ - C# 続き static async Task<Location> GetCurrentLocationAsync() { var currentPosition = await GetCurrentPositionAsync(); return new Location { Latitude = currentPosition.Coordinate.Latitude, Longitude = currentPosition.Coordinate.Longitude }; } static async Task<Geoposition> GetCurrentPositionAsync() { var geolocator = new Geolocator(); //geolocator.DesiredAccuracy = PositionAccuracy.High; return await geolocator.GetGeopositionAsync(); }
  • 22. DEMO
  • 25. カメラ アプリ - XAML <Page x:Class="ShoPhotoInfo.MainPage" IsTabStop="false" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:ShoPhotoInfo" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:bm="using:Bing.Maps"> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <bm:Map x:Name="map" Credentials="自分の Bing Maps Key" ZoomLevel="16" Grid.ColumnSpan="2" Grid.Column="1" /> <Image x:Name="image"/> </Grid> </Page>
  • 26. カメラ アプリ – XAML - AppBar <Page.BottomAppBar> <AppBar> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <StackPanel Orientation="Horizontal"> <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch“ Style="{StaticResource PhotoAppBarButtonStyle}"/> <Button HorizontalAlignment="Stretch" VerticalAlignment="Stretch“ Style="{StaticResource AddAppBarButtonStyle}"/> </StackPanel> <StackPanel Grid.Column="1" HorizontalAlignment="Right“ Orientation="Horizontal"/> </Grid> </AppBar> </Page.BottomAppBar>
  • 27. 写真撮影 - C# static async Task<StorageFile> TakePhotoAsync() { var capture = new CameraCaptureUI(); var file = await capture.CaptureFileAsync(CameraCaptureUIMode.Photo); return file; }
  • 28. 写真の表示 - C# static async Task<WriteableBitmap> CreateBitmapAsync(StorageFile file) { var pixelSize = default(Size); var bytes = default(byte[]); using (var stream = await file.OpenReadAsync()) { var decoder = await BitmapDecoder.CreateAsync(stream); pixelSize = new Size { Width = decoder.PixelWidth, Height = decoder.PixelHeight }; var pixelData = await decoder.GetPixelDataAsync(); bytes = pixelData.DetachPixelData(); } var bitmap = new WriteableBitmap((int)pixelSize.Width, (int)pixelSize.Height); using (var pixelStream = bitmap.PixelBuffer.AsStream()) { await pixelStream.WriteAsync(bytes, 0, bytes.Length); } return bitmap; } 要 using System.Runtime.InteropServices.WindowsRuntime;
  • 29. 写真の表示 - C# async void OnPhotoButtonClick( object sender, RoutedEventArgs e) { image.Source = await CreateBitmapAsync( await TakePhotoAsync() ); }
  • 30. 写真のファイルオープン - C# static async Task<StorageFile> GetStorageFileAsync() { var picker = new FileOpenPicker(); picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; picker.ViewMode = PickerViewMode.Thumbnail; picker.FileTypeFilter.Add(".jpg"); picker.FileTypeFilter.Add(".jpeg"); picker.FileTypeFilter.Add(".png"); picker.FileTypeFilter.Add(".bmp"); return await picker.PickSingleFileAsync(); }
  • 31. 写真のプロパティ(Exif) - C# static async Task<ImageProperties> GetImagePropertiesAsync(StorageFile file) { var imageProperties = await file.Properties.GetImagePropertiesAsync(); return imageProperties; }
  • 32. 写真のファイル オープン - C# async void OnOpenButtonClick( object sender, RoutedEventArgs e) { var file = await GetStorageFileAsync(); image.Source = await CreateBitmapAsync(file); var imageProperties = await GetImagePropertiesAsync(file); map.Center = new Location { Latitude = imageProperties.Latitude.Value, Longitude = imageProperties.Longitude.Value }; }
  • 34. DEMO
  • 36. DEMO
  • 37. 検索コントラクト – C# public class Book { public string Title { get; set; } public Uri Url { get; set; } public override string ToString() { return Title; } }
  • 38. 検索コントラクト – C# public class Model : IEnumerable<Book> { static readonly Model instance = new Model(); public static IEnumerable<Book> Search(string queryText) // 検索時に呼ばれる { return instance.Where(book => book.Title.Contains(queryText)); } public IEnumerator<Book> GetEnumerator() { yield return new Book { Title = "基礎から学ぶ Windowsストアアプリ開発", Url = new Uri("http://www.amazon.co.jp/dp/4863541198/") }; yield return new Book { Title = "Windows8ストアアプリ開発入門", Url = new Uri("http://www.amazon.co.jp/dp/4798035440/") }; yield return new Book { Title = "Windowsストアアプリ開発入門", Url = new Uri("http://www.amazon.co.jp/dp/4774155012/") }; } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); } }
  • 39. 検索コントラクト – C# <Page x:Class="ContractSample.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:ContractSample" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Page.Resources> <local:Model x:Key="model" /> </Page.Resources> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <ListView x:Name="bookListView" ItemsSource="{Binding Source={StaticResource model}}" Margin="120,140,120,140" /> </Grid> </Page>
  • 42. 検索コントラクト – C# private sealed class Filter : ContractSample2.Common.BindableBase { private String _name; private int _count; private bool _active; List<Book> searchResult; // ToDo: public List<Book> SearchResult // ToDo: { get { return searchResult; } set { if (this.SetProperty(ref searchResult, value)) this.OnPropertyChanged("Description"); } } //public Filter(String name, int count, bool active = false) // ToDo: //{ // this.Name = name; // this.Count = count; // this.Active = active; //} public Filter(string name, List<Book> searchResult, bool active = false) // ToDo: { Name = name; SearchResult = searchResult; Active = active; }
  • 43. 検索コントラクト – C# public override String ToString() { return Description; } public String Name { get { return _name; } set { if (this.SetProperty(ref _name, value)) this.OnPropertyChanged("Description"); } } public int Count { //get { return _count; } // ToDo: get { return SearchResult.Count; } // ToDo: set { if (this.SetProperty(ref _count, value)) this.OnPropertyChanged("Description"); } } public bool Active { get { return _active; } set { this.SetProperty(ref _active, value); } } public String Description { get { return String.Format("{0} ({1})", _name, _count); } } } }
  • 44. 検索コントラクト – C# protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState) { var queryText = navigationParameter as String; var filterList = new List<Filter>(); //filterList.Add(new Filter("All", 0, true)); // ToDo: filterList.Add(new Filter("All", Model. Search(queryText).ToList(), true)); // ビュー モデルを介して結果を通信します this.DefaultViewModel["QueryText"] = 'u201c' + queryText + 'u201d'; this.DefaultViewModel["Filters"] = filterList; this.DefaultViewModel["ShowFilters"] = filterList.Count > 1; }
  • 45. 検索コントラクト – C# void Filter_SelectionChanged(object sender, SelectionChangedEventArgs e) { var selectedFilter = e.AddedItems.FirstOrDefault() as Filter; if (selectedFilter != null) { selectedFilter.Active = true; DefaultViewModel["Results"] = selectedFilter.SearchResult; object results; ICollection resultsCollection; if (this.DefaultViewModel.TryGetValue("Results", out results) && (resultsCollection = results as ICollection) != null && resultsCollection.Count != 0) { VisualStateManager.GoToState(this, "ResultsFound", true); return; } } VisualStateManager.GoToState(this, "NoResultsFound", true); }
  • 47. DEMO
  • 48. 検索コントラクト – C# <Page x:Class="ContractSample.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:ContractSample" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Page.Resources> <local:Model x:Key="model" /> </Page.Resources> <Page.BottomAppBar> <AppBar> <StackPanel Orientation="Horizontal"> <Button Content=“共有" Click="OnButtonClick" /> </StackPanel> </AppBar> </Page.BottomAppBar> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <ListView x:Name="bookListView" ItemsSource="{Binding Source={StaticResource model}}" Margin="120,140,120,140" /> </Grid> </Page>
  • 49. 共有コントラクト void OnButtonClick(object sender, RoutedEventArgs e) { var book = (Book)bookListView.SelectedItem; if (book == null) return; var dataTransferManager = DataTransferManager.GetForCurrentView(); dataTransferManager.DataRequested += (_, args) => { args.Request.Data.Properties.Title = book.Title; args.Request.Data.SetUri(book.Url); }; DataTransferManager.ShowShareUI(); }
  • 50. DEMO
  • 54. Windows ストア アプリ デベロッパー センター • http://msdn.microsoft.com/ja-JP/windows/apps • https://appdev.microsoft.com/StorePortals/
  • 55. Windows ストア アプリ デベロッパー センター
  • 59. Windows ストア アプリ 登録の手引き Windows 8 アプリ開発体験テンプレート http://msdn.microsoft.com/ja-jp/jj556277 参考資料 Windows ストア アプリ 登録の手引き 本自習書では、Microsoft アカウントの取得から Windows ストア アプリの審査登録までの手順を紹介し ます。 Windows ストア アプリ開発のためのポイント より効率的にアプリのストア登録をしていただくためのヒントをまとめました。是非ご参照ください。 アイコン作成用テンプレート ストア申請のために必要となるサイズのアイコンを、より簡単につくっていただくためのテンプレートを ご用意しました。
  • 61. リジェクト理由 2012/09/24 お客様のアプリは、要件 4.1 を満たしていません。 審査担当者からのコメント: There is no privacy policy in metadata regarding internet connection. No privacy policy in Settings Charm
  • 62. 対処: プライバシーポリシー プライバシーポリシー はじめに Sho's Software (以下「本サービス」) は、本サービスを利用する 全ての方 (以下「利用者」といいます) のプライバシーを尊重するために、 利用者の個人情報を以下の定義に従い、個人情報の適切な取り扱いに取り組んでまいります。 ■個人情報の定義 個人情報とは、本サービスを通じて利用者から取得する氏名、年齢、メールアドレス、その他の利用者個人を特定できる情報のことを指します。 収集する個人情報は、利用者から本サービスにてご登録いただく情報に限られます。 ■個人情報の利用目的について 本サービスは、利用者の個人情報を以下の目的で利用することができるものとします。 本サービスならびにその他本サービスに関連する情報の提供のため 利用者の本人確認のため 本サービスの運営上必要な事項の通知 (電子メールによるものを含むものとします) 本サービス上で、個人を特定できない範囲においての統計情報の作成および利用 本サービスの新規開発に必要なデータの解析や分析 •契約や法律等に基づく権利の行使や義務の履行 アフターサービス、各種問い合わせ対応のため •利用規約に反する態様でのご利用を防止するため ■統計データの利用 当社は、ユーザーの個人情報をもとに、個人を識別できないように加工した統計データを作成することがあります。個人を識別できない統計データについては、個人情報には当たらず、当社は何ら制限なく利用することができるものとします 。 ■個人情報の共有ならびに利用制限について 本サービスは、以下に定める場合を除いて、事前に利用者本人の同意を得ず、利用目的の達成に必要な範囲を超えて個人情報を利用または共有することはありません。 法令により認められた場合 利用者の皆様の同意があった場合 人の生命、身体または財産の保護のために必要があり、さらに利用者の同意を得るのが困難な場合 裁判所、検察庁、警察、税務署、弁護士会またはこれらに準じた権限を持つ機関から、個人情報の開示を求められた場合 合併、営業譲渡その他の事由による事業の承継の際に、事業を承継する者に対して開示する場合 ■個人情報の安全管理について 本サービスでは、個人情報の漏洩または毀損の防止ならびにその他個人情報の安全管理が行われるよう、個人情報の適切な監督を行います。 本サービスでは、業務遂行に必要な範囲内で、権限を与えられた者のみが個人情報を取り扱います 。 個人情報の取扱いを外部に委託する場合には、機密保持契約を締結のうえ委託先を監督します。 ■個人情報の開示、訂正、削除について 本サービスは、個人情報保護法その他の法令等に基づき、個人情報の開示、訂正、追加、削除、利用停止、消去、第三者提供の停止、利用目的の 通知の請求に対応いたします。 請求が本人確認不可能な場合や、個人情報保護法の定める要件 を満たさない場合、ご希望に添えない場合があります。 なお、アクセスログなどの個人情報以外の情報については、原則として開示等はいたしません。 ■プライバシーポリシーの更新について 本サービスは、個人情報保護を図るため、法令等の変更や必要に応じて、本プライバシーポリシーを改訂することがあります。 その際は、最新のプライバシーポリシーを本サービスに掲載いたします。本ページを都度ご確認の上、本サービ スのプライバシーポリシーをご理解いただくよう お願いします。 ■プライバシーポリシーに関するお問い合わせ 本サービスのプライバシーポリシーに関するお問い合わせは、下記までご連絡お願い致します。
  • 64. 対処: … • Windows 8 アプリ開発体験テンプレート http://msdn.microsoft.com/ja-jp/jj556277 「NewsReader テンプレート XAML/C# 用」 で作ったアプリから、 「Web ブラウザーで開く」機能を削除
  • 66. 対処: プライバシーポリシー Privacy Policy Sho's Software takes the privacy of its users very respectfully. We also comply fully with the Act on the Protection of Personal Information. Sho's Software does not collect personally identifiable information (e.g., name, address, telephone number, e-mail address) unless you provide it to us.
  • 68. リジェクト理由 2012/09/25 お客様のアプリは、要件 6.5 を満たしていません。 アプリがこの要件を満たしていないと見なされる一般的な理由: アプリが、1 つ以上の認定言語をサポートしていない。 提出時に指定された言語の一部ではアプリが動作するが、すべての言語では動作 しない。 アプリの [説明] ページに記載されている情報 (説明、機能、スクリーンショット など) が、アプリのローカライズ量を反映していない。
  • 69. 対処: Package.appxmanifest <Resources> <Resource Language="x-generate" /> </Resources> 対処: <Resources> <Resource Language=“en" /> </Resources>
  • 70. リジェクト理由 2012/09/25 お客様のアプリは、要件 6.8 を満たしていません。 アプリがこの要件を満たしていないと見なされる一般的な理由は、1 つ以上のス クリーンショットに、実際より良く見えるようなグラフィック処理が施されてい ることです。 対処: 審査担当者へのコメント Background image will be choosen from 6 images randomly.
  • 71. リジェクト理由 2012/10/04 お客様のアプリは、要件 1.2 を満たしていません。 審査担当者からのコメント: You should add more detail to your app description, it read too generic or vague to adequately represent the app's unique value. 対処: 「説明」をより詳細に
  • 72. リジェクト理由 2012/09/28 お客様のアプリは、要件 2.3 を満たしていません。 詳細情報 アプリがこの要件を満たしていないと見なされる一般的な理由は、アプリ タイ ル、アプリ バー、設定チャーム ([バージョン情報] リンクを含む) が、プロモー ション資料に使用されていることです。 対処: アプリの中の “Die Hard” を別の表現に変更。
  • 73. Windows 8 Clinic • http://msdn.microsoft.com/ja-jp/jj820154
  • 75. 参考資料: 開発を始めるとき • デベロッパー センター - Windows ストア アプリ http://msdn.microsoft.com/ja-JP/windows/apps Windows ストア アプリ開発は先ずここから • Windows ストア アプリ プログラミングの開発者向け ダウンロード - デベロッパー センター - Windows ストア アプリ http://msdn.microsoft.com/ja-jp/windows/apps/br229516.aspx • Windows 8 アプリ開発体験テンプレート http://msdn.microsoft.com/ja-jp/jj556277 • Windows アプリ アート ギャラリー - アプリに組み込めるイメージ素材集 http://msdn.microsoft.com/ja-jp/windowsphone/hh544699 • Developer Camp 2012 Japan Fall - Channel 9 http://channel9.msdn.com/Events/Windows-Azure-DevCamps/Developer-Camp-2012-Japan-Fall 動画と資料 • Windows Store app samples - デベロッパー センター - Windows ストア アプリ http://code.msdn.microsoft.com/windowsapps/ • MSDN マガジン Windows 8 Special Issue 2012 http://msdn.microsoft.com/ja-jp/magazine/jj660298.aspx
  • 76. 参考資料: ブログ • Windowsストアアプリ - 田中達彦のブログ - MSDN Blogs http://blogs.msdn.com/b/ttanaka/archive/tags/windows_b930c830a230a230d730ea30_/ • windows - Akira Onishi's weblog - MSDN Blogs http://blogs.msdn.com/b/aonishi/archive/tags/windows/ • WinRT - 荒井省三のBlog - MSDN Blogs http://blogs.msdn.com/b/shozoa/archive/tags/winrt/ • Windows Store 開発者向けブログ - MSDN Blogs http://blogs.msdn.com/b/windowsstore_ja/ • Windows8 - 眠るシーラカンスと水底のプログラマー http://coelacanth.heteml.jp/blog/category/windows8/ • プログラミング ( Metro スタイル ) - biac の それさえもおそらくは幸せな日々@nifty http://bluewatersoft.cocolog-nifty.com/blog/metro/ • [WinRT] - かずきのBlog@Hatena http://d.hatena.ne.jp/okazuki/searchdiary?word=%2A%5BWinRT%5D
  • 77. 参考資料: 連載記事 • 速習 Windowsストアアプリケーション - CodeZine http://codezine.jp/article/corner/471 • WinRT/Metro TIPS - Insider.NET - @IT http://www.atmarkit.co.jp/ait/subtop/features/da/ap_winrttips_index.html • Windows 8 APIの基礎 - ITpro http://itpro.nikkeibp.co.jp/article/COLUMN/20121206/442473/
  • 78. 参考資料: 単体テスト、ViewModel、その他 • Metroアプリをテストファーストするときのポイント - slideshare http://www.slideshare.net/yasuhikoy/2520121201-tdd13 • Windows 8 で MVVM パターンを使用する (機械翻訳) - MSDN マガジン http://msdn.microsoft.com/ja-jp/magazine/jj651572.aspx MVVM Light Toolkit http://mvvmlight.codeplex.com を使ったサンプル。 • WinRT/Metro TIPS:多言語化対応を楽に行うには?[Win 8] - @IT http://www.atmarkit.co.jp/ait/articles/1211/08/news025.html • WinRT/Metro TIPS:文字列を多言語化対応するには?[Win 8] - @IT http://www.atmarkit.co.jp/ait/articles/1211/01/news069.html • WinRT/Metro TIPS:文字列リソースを使うには?[Win 8] - @IT http://www.atmarkit.co.jp/ait/articles/1210/25/news026.html 固定文字列を、多言語化対応などのために、文字列リソースとして別のファイルに分けて おく方法
  • 80. Hokuriku.NET vol.11(2013.01.26) Windows 8 ストア アプリ 開発 Tips 小島 富治雄