2010年11月

2010年11月30日

[WP7] VBでWindows Phone 7開発

Announcing: Visual Basic Windows Phone 7 Support RTW

 全国のVBユーザー必見(?)ですね。
 ついにVisual BasiceでもWindows Phone 7開発ができるようになるのかぁ・・・。

2010年11月23日

インストールマニアックス参戦

 いよいよインストールマニアックス予選が開始されました。
 どこかでAzure触らなければなぁと考えていた自分にとっては良い機会です。

 引っ越しの準備とかでワタワタな期間での開催ですが、なんとかAzure触って見たと言える程度には経験を積みたいですね。

 目指せ予選突破!!
 

来年から広島で活動します

 勉強会やTwitter上では話していたのですが、来年度から舞台を北陸から広島に移して活動します。
 北陸ではコミュニティ活動を通して熱意ある技術者の方々とお会いし刺激を受けることができ非常にモチベーションアップになりました。
 広島でも熱い人々から刺激を受けつつ自分らしく勢いで突っ走りたいと思います。

 最後に北陸のエンジニアの皆様がお別れ会を開いてくれるということで、その場で新しい活動が生まれたりすると北陸らしくていいなぁと思います。

 場所が第七餃子というところも素敵ですねw
 北陸はジャンクフードが素晴らしい。懐かしく思うのでしょうねぇ。

PDC10の参加証が届きました

 仕事の状態が微妙で行けるかわからないところなのですが、参加証を受け取るとぜひ行かねば!!という気持ちになりますね。
PIC_0028


 一日目にWP7のセッションが集中しているので何とか一日目だけでも参加してWP7開発者の方とも色々話をしたいです。

[WP7] ZuneでWP7デバイスを認識できずにエラー

 よりによってメインPCでWindows Phone 7実機を認識できずにデバック不能な状態が発生してしまいました。

 001
(クリックで拡大表示)
 
Can't access important data

 認識してないわけではなく、たまにデバッグできたりするのが微妙な状態。

 これと同じ症状のようです。

 Sync Problems Win7 Professional 64bit <--> HTC 7 Trophy

 改善されましたらまた報告します。

Windows Phone 7:31 Days of Windows Phoneを3日で紹介(3)

 31 Day of Windows Phoneを3日で紹介の3回目。

 順番に読む必要はありませんが、一回目二回目も参考にどうぞ。

Day #21: Silverlight Toolkit



 21日目のSilverlight Toolkit for Windows Phoneについては先日に記事にまとめましたのでそちらを参考にしてください。

 [WP7]SL for WP Toolkit - Nov 2010入門

 とてもとても長いエントリーになってしまったので別枠で対応しました。

 

Day #22: Apps vs. Games



 登録するアプリのジャンルはゲームとアプリに分類することができる。

 設定はWMAppManifest.xmlApp xmlnsで行い

 ゲームでない場合は
 
App xmlns="" Genre="apps.normal"

 ゲームの場合は
 
App xmlns="" Genre="apps.games"

 と記述する。

 実際の動作上の違いはAppHubに表示されるかGameHubに表示されるかだがエミュレーターの場合デフォルトでは機能を制限したものなのでロックを外したロムを手に入れる必要がある。

 実機でgames設定にすると、
PIC_0025

 このようにGameHubの中に表示される。


Day #23: Providing Trial Versions of Your App



 アプリケーションをお試し版として提供したい場合の設定。

LicenseInformation li = new LicenseInformation();
li.IsTrial();


 でお試し版かどうか確認できるもよう(実際にアプリを公開してためしたわけではない)。

 日本語での詳しい解説はWindows Phone 7のアプリケーションにTrial版の機能を搭載が参考になります。


Day #24: Embedding Fonts



 埋め込みフォントについて。

 英語のフォントはタイトルリンクのページの設定で埋め込めることが確認できたが日本語のTTCファイルはフォントが反映されなかった(2,3のファイルでしか確認していないけど)。


Day #26: Sharing Your App With Other Developers (For Free)



 他の開発者とアプリケーションを共有する方法について。
 XAPファイルを渡すことで他の人にアプリケーションを試してもらうことが可能なようだが、最後の方に
DON’T give this file to people you don’t trust

 信用できる人に配布してね、とあるようにXAPには再配布などを防ぐ手段はないもよう(そりゃそうか)。


Day #27: Windows Phone Marketplace



 マーケットプレイスへの登録と審査について。
 アイコンは購入者が選ぶ大きなポイントだから力を入れよう。


Day #28: Advertising in Your Apps



 アプリの隅などに広告を表示するAPIについて。
 無料で広告収入? 有料アプリ? どちらが良いのかはやはり作りアプリ次第で自分で決めなければいけないんでしょうねぇ。


Day #29: Animations



 アニメーションのつけ方。
 BlendでStoryboardを作成してコードから呼び出す方法が紹介されています。

 さすがにStoryboardはVisualStudioで手打ちは勘弁ですねぇ。


Day #30: Gestures



 画面をタッチしたりフリックしたりした場合の取得方法について書かれています。
 この辺も実機が無いとマルチタッチなどはデバッグし難いところ。


Day #31: Charting Data



 チャートのようなグラフを表示する方法について。

 

 紹介元サイトの画像ですが、かなりきれいに表示できますね。


 というわけで、最後の方は駆け足気味でしたが31 Day of Windows Phoneの概要紹介でした。

 英語が苦手という場合もすべてのテーマにサンプルが付いていますのでそちらを動かしながら確認してみると良いと思います。

2010年11月22日

Windows Phone 7:今日のWP7ネタ

 休みの日は引越しの準備で忙しくなかなかWP7が触れず悶々とする今日この頃。
 巷ではWP7の情報がどんどんでてきていますので、しっかり収集しておかないと!!
 というわけで備忘録的に今日みつけた気になった記事をピックアップ。


 ・[Windows Phone 7 UIガイドを読み解く] 第13回 〜WP7のテーマ〜

 テーマのダーク系とホワイト系は最初変更できることを知らず。
 自分のアプリをホワイト系に変更したらえらい不気味でびっくりしました。


・Windows Phone 7のListBoxのパフォーマンスを上げる 〜その1〜

 この辺は自分でもテストして確認しなければ。


・Windows Phone 7 での日本語フォント

 マルチバイト周りの拡充と、もちろん日本でのWindows Phone 7の発売を願います。


2010年11月21日

[WP7]SL for WP Toolkit - Nov 2010入門

 タイトルは「Silverlight for Windows Phone Toolkit - Nov 2010」の略です。(そして以下ではWP Toolkitと更に略します)

 「31 Days of Windows Phoneを3日で紹介」の3回目の予定でしたが、Toolkitの章はとても分量を抑えきれないと思ったので別途紹介。

 (3回で紹介するというのは嘘じゃないか…というのは置いておいて)

 以降はSilverlight for Windows Phone Toolkit - Nov 2010がインストールされていることを前提に使い方を紹介します。

1.AutoCompleteBox



 AutoCompleteBoxはテキストボックスに入力文字の候補を出すことを可能にしたコントロールです。

 IEなどのデフォルトのアプリの多くが候補を出してくれて便利だなと思っていましたが、自分で作成したアプリでもそれが可能になります。

 PIC_0023
(IEでURLを打ち込んだところ、候補のURLが表示される)

 (使い方)
 どのコントロールもそうですが、まず基本となるMicorsoft.Phone.Controls.Toolkitを参照に追加します。

001


 続いてAutoCompleteBoxを配置したいXAMLファイルのxmlns宣言に以下の行を追加
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

 続いてコントロールを追加。
 
<toolkit:AutoCompleteBox x:Name="AutoCompleteBox"/>


 この状態で文字を入力しても補完は受けれません。

 002
(XAML追加でオートコンプリートが動作…すると嬉しいんですが流石にそこまで便利ではありません)

 AutoCompleteBoxに補完のための辞書替わりとなるものを渡す必要があります。
 公式ページのサンプルは

ItemsSource="{StaticResource words}"

 とXAML上で渡していますので、ここではソース上で辞書を渡すようにします。

 なんの判定処理も不要で静的なリストを渡す場合は以下のように書きます。
this.AutoCompleteBox.ItemsSource = new List() { "hige", "hoge", "hige" };

003
(おっ出た出た!!)

 公式のサンプルはIEnumerable<string>を継承したクラスを用いてGetEnumerator()で列挙可能なオブジェクトを動的に生成して返していますので判定などを入れたい場合はそちらを参考にしてみてください。

 このサンプルをダウンロードする
 

2.ListPicker



 ListPickerはプルダウンで選択できるコントロールです。

 使い方はAutoCompleteBox同様、参照とxmlnsを追加します。
 
 そしてXAMLを以下のようにGridに追加します。
<toolkit:ListPicker Header="background" SelectionChanged="ListPicker_SelectionChanged">
  <TextBlock Text="list1"/>
  <TextBlock Text="list2"/>
  <TextBlock Text="list3"/>
  <TextBlock Text="list4"/>
</toolkit:ListPicker>

 SelectionChangedイベントも定義しておきます。

private void ListPicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var text = e.AddedItems[0] as TextBlock;
MessageBox.Show(text.Text + "が選択させました");
}


 004
(クリックするとリストがプルダウンして画像のように表示されます)

005
(選択するとSelectionChangedイベントが呼ばれます)

 公式のサンプルではmscorlibを使ってリストにStringをあてたり、Templateを使って複数のコントロールを追加したリストの実装方法が確認できます。

 このサンプルをダウンロードする

3.LongListSelector



 LongListSelectorは表示量の多いリストなどをグループ化して選択しやすくするコンポーネント。

006
(こんな感じの縦に長いリストを選択するのに下までスクロールするのは面倒・・・というケースで)

007
(こんな風に索引から一気に該当の部分にジャンプすることができる!!)

 利用方法はこれまでのListPicker、AutoCompleteBox同様に参照(Microsoft.Phone.Controls.Toolkit)とxmlnsを追加します。
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

 表示するだけなら
xaml
<toolkit:LongListSelector x:Name="LongListSelector" IsFlatList="True" ></toolkit:LongListSelector>

C#
this.LongListSelector.ItemsSource = new List { "alpha", "beta"};


008


 本当に表示するだけでこのままではあまり意味がありません。

 LongListSelectorはいくつかのパーツから構成されます。
 その構成を説明していきます。

(ヘッダー、フッター)
xaml
<toolkit:LongListSelector x:Name="LongListSelector" IsFlatList="True"
  ListHeaderTemplate="{StaticResource header}"
  ListFooterTemplate="{StaticResource footer}"
/>
<Grid.Resources>
  <DataTemplate x:Key="header">
    <TextBlock Text="ヘッダー" />
  </DataTemplate>
  <DataTemplate x:Key="footer">
    <TextBlock Text="フッター" />
  </DataTemplate>
</Grid.Resources>

もしくは、
<toolkit:LongListSelector x:Name="LongListSelector" IsFlatList="True">
  <toolkit:LongListSelector.ListHeader>
    <TextBlock Text="ヘッダー" />
  </toolkit:LongListSelector.ListHeader>
  <toolkit:LongListSelector.ListFooter>
    <TextBlock Text="フッター" />
  </toolkit:LongListSelector.ListFooter>
</toolkit:LongListSelector>


009
(上下にヘッダーフッターが表示されました)

(アイテムテンプレート)

 まずはグループ分けしてない状態でデータを表示してみます。


XAML
<!-- リソース定義(ここではGrid.Resources内に記述) -->
<DataTemplate x:Key="itemTemplate">
<StackPanel Grid.Column="1" VerticalAlignment="Top">
<TextBlock Text="{Binding name}" FontSize="26" Margin="12,-12,12,6"/>
<TextBlock Text="{Binding author}" Foreground="GreenYellow"/>
<TextBlock Text="{Binding price}" Foreground="Orange" />
</StackPanel>
</DataTemplate>

<!-- ItemTemplate属性を追加-->
<toolkit:LongListSelector x:Name="LongListSelector" IsFlatList="True"
ListHeaderTemplate="{StaticResource header}"
ListFooterTemplate="{StaticResource footer}"
ItemTemplate="{StaticResource itemTemplate}"
/>

C#
public MainPage()
{
  InitializeComponent();

  var books = new List<Book>()
  {
    new Book() { name = "Silverlightで開発するデータ駆動アプリケーション", author="鈴木章太郎", group="Silverlight", price=3400},
    new Book() { name = "プログラミングC# ", author="Jess Liberty", group="C#", price=4800},
    new Book() { name = "C#クックブック", author="Jay Hilyard", group="C#", price=4600},
    new Book() { name = "C#エッセンシャルズ", author="Brad Merill", group="C#", price=2600},
    new Book() { name = "エッセンシャルSilverlight3", author="Ashraf Michail", group="Silverlight", price=3200},
    new Book() { name = "Windows Azure入門", author="", group="Azure", price=2600},
    new Book() { name = "究極のC#プログラミング", author="川俣 晶", group="C#", price=2980}
  };
  this.LongListSelector.ItemsSource = books;
}

・・・・

public class Book
{
  public string name { get; set; }
  public int price { get; set; }
  public string author { get; set; }
  public string group { set; get; }
}

010

 次はグループ化してみます。

C#

var books = new List<Book>()
{
new Book() { name = "Silverlightで開発するデータ駆動アプリケーション", author="鈴木章太郎", type="Silverlight", price=3400},
new Book() { name = "プログラミングC# ", author="Jess Liberty", type="C", price=4800},
new Book() { name = "C#クックブック", author="Jay Hilyard", type="C", price=4600},
new Book() { name = "C#エッセンシャルズ", author="Brad Merill", type="C", price=2600},
new Book() { name = "エッセンシャルSilverlight3", author="Ashraf Michail", type="Silverlight", price=3200},
new Book() { name = "Windows Azure入門", author="", type="Azure", price=2600},
new Book() { name = "究極のC#プログラミング", author="川俣 晶", type="C", price=2980}
};

var groupBy = from book in books
  group book by book.type into c
  orderby c.Key
  select new Group<Book>(c.Key, c);


this.citiesListGropus.ItemsSource = groupBy;


 Linqを使って列挙可能な配列をtype(C#,Silverlight等の分類)にまとめています。
 Linqのinto構文が見慣れ方(私だ!!)は要復習ですね。

 new Groupしているグループクラスは添付のサンプルコードを参照してください。

 パブリックな変数で
public string Title { get; set; }
public IList<T> Items { get; set; }

 でタイトルとそのタイトルのグループ一覧を保持しています。

XAML

 XAMLコードでは
<toolkit:LongListSelector x:Name="citiesListGropus" Background="Transparent"
  ItemTemplate = "{StaticResource itemTemplate}"
  ListHeaderTemplate = "{StaticResource header}"
  ListFooterTemplate = "{StaticResource footer}"
  GroupHeaderTemplate = "{StaticResource groupHeader}"
  GroupItemTemplate = "{StaticResource groupItem}" >
</toolkit:LongListSelector>


 Grup系の定義が2つ追加されました。

<DataTemplate x:Key="groupHeader">
<Border Background="Aquamarine" Margin="6">
<TextBlock Text="{Binding Title}" FontSize="40" Foreground="Black"/>
</Border>
</DataTemplate>
<DataTemplate x:Key="groupItem" >
<Border Background="Aquamarine" Width="99" Height="99" Margin="6">
<TextBlock Text="{Binding Title}" FontSize="40" Foreground="Black"/>
</Border>
</DataTemplate>

 定義も通常のXAMLなので色々カスタマイズできそうですね。
0011


 サンプルコード

4.Page Transitions



 ページ遷移時様々なトランジションが追加できるようになりました。

 (画像はTurnstileTransitionの動き)

 トランジションの種類は、
 Turnsite(立体的にドアのようにスライド)
Slide(縦や横からスライドして次の画面に移動する)
 Swivel(中央を軸に立体的に回転)
 Roll(中央を軸に回転)
 Rotate(これも回転、Rollとの違いは今のところ不明)


 実際の動作はToolKitダウンロードページにあるサンプルで動きを見ると良いと思います。

 トランジションの使い方は、

 App.xamlのRootFrameプロパティにトランジションを設定。

RootFrame = new TransitionFrame();


 後はxamlファイルに

<toolkit:TransitionService.NavigationInTransition>
<toolkit:NavigationInTransition>
<toolkit:NavigationInTransition.Backward>
<toolkit:TurnstileTransition Mode="BackwardIn"/>
</toolkit:NavigationInTransition.Backward>
<toolkit:NavigationInTransition.Forward>
<toolkit:TurnstileTransition Mode="ForwardIn"/>
</toolkit:NavigationInTransition.Forward>
</toolkit:NavigationInTransition>
</toolkit:TransitionService.NavigationInTransition>
<toolkit:TransitionService.NavigationOutTransition>
<toolkit:NavigationOutTransition>
<toolkit:NavigationOutTransition.Backward>
<toolkit:TurnstileTransition Mode="BackwardOut"/>
</toolkit:NavigationOutTransition.Backward>
<toolkit:NavigationOutTransition.Forward>
<toolkit:TurnstileTransition Mode="ForwardOut"/>
</toolkit:NavigationOutTransition.Forward>
</toolkit:NavigationOutTransition>
</toolkit:TransitionService.NavigationOutTransition>


 というようにトランジションの設定をします。
 と書くとすごく簡単なんですがRootFrameの設定を見逃していてしばらく公式サンプルと自分のコードでなぜ違いがでるのかがわからず悩みました。

 XAMLではなくコードに書くことも可能。


 以上で、SL for WP Toolkit - Nov 2010の新機能紹介でした。
 次回は「31 Days of Windows Phoneを3日で紹介」に戻って3回目の締めを行いたいと思います。

2010年11月18日

Windows Phone 7:今日のWP7ネタ

 備忘録的なメモ。
 日本語の記事中心。

・Free ebook: Programming Windows Phone 7

 のっけから今日のでもなんでもないのですが、少し前にあっデートされて1000ページぐらいの凄いFreePaperと化しています。
 英語ですがWindows Phone 7について興味がある方は読んでみて下さい。

・Windows Phone 7でJailbreak?

 もうここまで解析が進んでいるとは、早い!!


・[Windows Phone 7 UIガイドを読み解く] 第9回 〜トーストによる通知〜


 すでに第10回も書かれておりますのでそちらもあわせてどうぞ。

2010年11月17日

Windows Phone 7:アプリ買えた編

 昨日、Windows Phone 7で日本のアカウントでマーケットプレイスに接続できず、AppHubに登録したアカウントが日本のものなのでデバッグのためにそのアカウントをWindows Phone 7に登録しなければいけないと書いた。

 が、間違いでした!!

 昨日のエントリだけ読まれた方には申し訳ありませんがWindows Phone 7をAppHubで登録したアカウント以外でもデバッグに利用することは可能でした。

設定方法



 まずは二つのアカウントを用意します。

 1.AppHubに登録してあるアカウント(日本アカウント)
 2.MarketPlaceが利用可能な国のアカウント(アメリカアカウント)

 Windows Phone 7の登録時のLiveIDをアメリカアカウントに設定します。

 デバッグできない編などを参考にWindows Phone 7をZuneで認識させます。

 Windows Phone Developer Registrationは日本アカウントを使って登録します。

 登録に成功すればアメリカアカウントのWindows Phone 7でデバッグができます。

 マーケットプレイスでのアプリ購入はアメリカアカウントでWindows Phone 7かZune上で購入が可能です!!

 これで色々アプリを試せて、デバッグにも利用できますね♪

Profile

シーラカンス

Recent Comments
QRコード
QRコード
livedoor Readerに登録
RSS
livedoor Blog(ブログ)