SlideShare uma empresa Scribd logo
1 de 45
ちょっとだけ、昔話
アプリケーションの画面は
どうやって定義していましたか?
色々あって
最近はあまり使われなくなりましたが
Webで動きのある画面を作ろうと思えば、
Flashで、という時代がありました。
いや・・・言いたいことは色々ありますが、
画面定義の話に戻りましょう。
タイムラインという
フレーム毎に画面を定義していました。
動画編集の考え方に近いアプローチ
当時のFlashは
アニメーション作成用途が強かったので、
アニメーションを作成しやすい方法。
画面定義をテキストで表現できなかったので、
差分が取れない。
・・・バイナリを解析できれば差分も・・・
余談:AS2時代は
それぞれのオブジェクトに
スクリプトを記述できたので、
作り方によっては更にカオスなことに・・・
その後、AS3や、
Adobe Flexの登場で
この辺が変化していくのですが、
ひとまず置いておいて・・・
this.textBox1 = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(33, 109);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
プログラムコードを
解析してデザイナーに表示。
メリット:差分が見れる
デメリット:コードからデザインは把握し辛い・・・
ご存知、XMLタグで画面を定義する方法。
XAMLもこの発想。
Flashにもmxmlというのがあった・・・
メリット:差分が取れる
:プログラミングの知識無しに扱える
デメリット:アニメーションなど複雑なものは
定義できない。
デメリットと書いたが、
アニメーションなどを定義できないことで、
逆にシンプルで良い気がする。
デザイナーにもプログラマーにも触れるという
ラインのバラスを上手く取っている?
XAML登場!!
スライド15枚めにして
(Zガンダムよりは早い当社比)
XMLで画面を定義する方式。
アニメーションや、
コントロールの雛形も定義可能
この辺は良し悪し
タグで定義できるという点では
HTMLに近いが、
どちらかというとWindows Formsの
コード→デザイナ
を発展させた
コード→XAML→デザイナ
という構造(後述)。
デザイナーとプログラマーの
分業が成立する前提で見るか?
デザイナーが主に使うのか?
プログラマーが主に使うのか?
分業できていることが多いのはHTML
デザイナーメインなFlashタイムライン
プログラマーメインなWindows Forms
eXtensible Application Markup Language
Application? Avalon?
<Button />
<Button></Button>
<ButtonText=“プロパティ”/>
<Button>ボタン</Button>
<ButtonText=“ボタン” />
コレはイコール。
じゃあ入れ子にした部分は、Textプロパティに該当?
<Button><Image src=“hoge.jpg”></Button>
これは?
入れ子の部分はContentPropertyとして
扱われる
// Buttonの親クラスの記述
[Composable(typeof(IContentControlFactory), CompositionT
[ContentProperty(Name = "Content")]
[MarshalingBehavior(MarshalingType.Agile)]
// Objectを受け入れる。結構広い間口
public System.Object Content { get; set; }
<Image Source="Assets/LockScreenLogo.png"/>
これUri型なのに、文字列で指定できるの?
型コンバーターという仕組みが、
いい感じに変換してくれる。
XAMLを拡張する記法
基本的に{}に囲まれたやつ
Text="{x:BindViewModel.Name, Mode=TwoWay}"
XAMLを拡張する記法
基本的に{}に囲まれたやつ
Text="{x:BindViewModel.Name, Mode=TwoWay}“
プラットフォーム毎に異なる仕様だが、
基本的に同じ機能があることが多い。
上のx:BindはUWPから追加されたもの。
画面を定義するXAMLには
コードビハインドとしてロジックを記述するための
プログラムファイルがある。
例:MainPage.xamlとMainPage.xaml.cs
コードビハインドの中間
MainPage.g.cs MainPage.g.i.cs
XAMLが元々、プログラムコードを、
見た目(XAML)とロジック(プログラムコード)
に分離するためのものであるため、
プログラムの画面を定義する部分を、
XML形式で表現できるようにしたもの。
この辺がHTMLとの大きな違い。
<ButtonText= “hoge”/>
以下は等価
Button btn = new Button();
btn.Content = "hoge";
mainGrid.Children.Add(btn);
XAML自体は、こんな感じで、
シンプル。
XAMLを使って
コントロール、アニメーション、3D…など
様々なものを表現するので複雑に見える。
プロパティで変えれるパターン
テンプレート、スタイルで変えるパターン
(こっちがちょっとわかりづらい)
ListViewの場合
ListView自体のテンプレート
ListViewで繰り返し表示されるデータのテンプレート
リスト表示されるアイテムのテンプレートListView自体のテンプレート
ボタンの場合
→テンプレートの編集
イベントハンドラー
XAMLからコードビハインドのメソッドを呼び出す
プログラミングのプロパティと
XAMLのプロパティを紐付ける
疎結合
This.textbox.text = “ほげ”;
が不要になる。
XAMLのプロパティ同士も紐付けれる
デザインに必要なら、
条件分岐のような判定もできるようにする。
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="720" />
</VisualState.StateTriggers>
アニメーションもXAMLで定義可能
編集はタイムライン方式(Adobe Flashもそう)
アニメーションもXAMLで表現
・・・まぁ、読むのも難しいし、手打ちだと書けないよね・・・
<Storyboard x:Name="Storyboard1">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransf
<EasingDoubleKeyFrame KeyTime="0"Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:1"Value="208"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransf
<EasingDoubleKeyFrame KeyTime="0"Value="0"/>
<EasingDoubleKeyFrame KeyTime="0:0:1"Value="-156"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
色々なことができるマークアップ
これまでのUI表現の歴史をうまく取り込んでいる

Mais conteúdo relacionado

Destaque

かずきのUWP入門
かずきのUWP入門かずきのUWP入門
かずきのUWP入門一希 大田
 
Uwpでみるxaml入門第二回
Uwpでみるxaml入門第二回Uwpでみるxaml入門第二回
Uwpでみるxaml入門第二回Makoto Nishimura
 
独自Ecサイト立ち上げワンストップセミナー 0907
独自Ecサイト立ち上げワンストップセミナー 0907独自Ecサイト立ち上げワンストップセミナー 0907
独自Ecサイト立ち上げワンストップセミナー 0907Makoto Nishimura
 
Azure上でec cubeを運用するポイント
Azure上でec cubeを運用するポイントAzure上でec cubeを運用するポイント
Azure上でec cubeを運用するポイントMakoto Nishimura
 
2016年11月.NETラボLT:超余談ゲームプラットフォームの話
2016年11月.NETラボLT:超余談ゲームプラットフォームの話2016年11月.NETラボLT:超余談ゲームプラットフォームの話
2016年11月.NETラボLT:超余談ゲームプラットフォームの話Makoto Nishimura
 
はじめての UWP アプリ開発
はじめての UWP アプリ開発はじめての UWP アプリ開発
はじめての UWP アプリ開発hiyohiyo
 
Uwpアプリケーション開発入門
Uwpアプリケーション開発入門Uwpアプリケーション開発入門
Uwpアプリケーション開発入門Makoto Nishimura
 
しごとで使うTitanium 第2版
しごとで使うTitanium 第2版しごとで使うTitanium 第2版
しごとで使うTitanium 第2版忠利 花崎
 
10分でわかる無料になったXamarin
10分でわかる無料になったXamarin10分でわかる無料になったXamarin
10分でわかる無料になったXamarinYoshito Tabuchi
 

Destaque (11)

かずきのUWP入門
かずきのUWP入門かずきのUWP入門
かずきのUWP入門
 
XAML入門
XAML入門XAML入門
XAML入門
 
Uwpでみるxaml入門第二回
Uwpでみるxaml入門第二回Uwpでみるxaml入門第二回
Uwpでみるxaml入門第二回
 
独自Ecサイト立ち上げワンストップセミナー 0907
独自Ecサイト立ち上げワンストップセミナー 0907独自Ecサイト立ち上げワンストップセミナー 0907
独自Ecサイト立ち上げワンストップセミナー 0907
 
これからはじめる XAML - WPF プログラミング
これからはじめる XAML - WPF プログラミングこれからはじめる XAML - WPF プログラミング
これからはじめる XAML - WPF プログラミング
 
Azure上でec cubeを運用するポイント
Azure上でec cubeを運用するポイントAzure上でec cubeを運用するポイント
Azure上でec cubeを運用するポイント
 
2016年11月.NETラボLT:超余談ゲームプラットフォームの話
2016年11月.NETラボLT:超余談ゲームプラットフォームの話2016年11月.NETラボLT:超余談ゲームプラットフォームの話
2016年11月.NETラボLT:超余談ゲームプラットフォームの話
 
はじめての UWP アプリ開発
はじめての UWP アプリ開発はじめての UWP アプリ開発
はじめての UWP アプリ開発
 
Uwpアプリケーション開発入門
Uwpアプリケーション開発入門Uwpアプリケーション開発入門
Uwpアプリケーション開発入門
 
しごとで使うTitanium 第2版
しごとで使うTitanium 第2版しごとで使うTitanium 第2版
しごとで使うTitanium 第2版
 
10分でわかる無料になったXamarin
10分でわかる無料になったXamarin10分でわかる無料になったXamarin
10分でわかる無料になったXamarin
 

Mais de Makoto Nishimura

リモートで技術を伝える方法(発表版)
リモートで技術を伝える方法(発表版)リモートで技術を伝える方法(発表版)
リモートで技術を伝える方法(発表版)Makoto Nishimura
 
リモートで技術を伝える方法(フル)
リモートで技術を伝える方法(フル)リモートで技術を伝える方法(フル)
リモートで技術を伝える方法(フル)Makoto Nishimura
 
Minecraftでプログラミングを学べるって本当?
Minecraftでプログラミングを学べるって本当?Minecraftでプログラミングを学べるって本当?
Minecraftでプログラミングを学べるって本当?Makoto Nishimura
 
Power Automateを使ってみた
Power Automateを使ってみたPower Automateを使ってみた
Power Automateを使ってみたMakoto Nishimura
 
Power Automate Desktop入門
Power Automate Desktop入門Power Automate Desktop入門
Power Automate Desktop入門Makoto Nishimura
 
WinUI 3.0 Preview 1を触ってみた(.NETラボ2020年6月登壇資料)
WinUI 3.0 Preview 1を触ってみた(.NETラボ2020年6月登壇資料)WinUI 3.0 Preview 1を触ってみた(.NETラボ2020年6月登壇資料)
WinUI 3.0 Preview 1を触ってみた(.NETラボ2020年6月登壇資料)Makoto Nishimura
 
AzureDevOpsの機能解説
AzureDevOpsの機能解説AzureDevOpsの機能解説
AzureDevOpsの機能解説Makoto Nishimura
 
OSS開発で.NETを活用してDevOps
OSS開発で.NETを活用してDevOpsOSS開発で.NETを活用してDevOps
OSS開発で.NETを活用してDevOpsMakoto Nishimura
 
Amazon echoがやってきた
Amazon echoがやってきたAmazon echoがやってきた
Amazon echoがやってきたMakoto Nishimura
 
2017年度注目の.netテクノロジー
2017年度注目の.netテクノロジー2017年度注目の.netテクノロジー
2017年度注目の.netテクノロジーMakoto Nishimura
 
Xamarin入門(技術というより心構え編)
Xamarin入門(技術というより心構え編)Xamarin入門(技術というより心構え編)
Xamarin入門(技術というより心構え編)Makoto Nishimura
 
Universal windows platformの新機能をおさえよう
Universal windows platformの新機能をおさえようUniversal windows platformの新機能をおさえよう
Universal windows platformの新機能をおさえようMakoto Nishimura
 
2016年注目の.netテクノロジー
2016年注目の.netテクノロジー2016年注目の.netテクノロジー
2016年注目の.netテクノロジーMakoto Nishimura
 
Uwpハンズオン参加レポート
Uwpハンズオン参加レポートUwpハンズオン参加レポート
Uwpハンズオン参加レポートMakoto Nishimura
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Makoto Nishimura
 

Mais de Makoto Nishimura (20)

リモートで技術を伝える方法(発表版)
リモートで技術を伝える方法(発表版)リモートで技術を伝える方法(発表版)
リモートで技術を伝える方法(発表版)
 
リモートで技術を伝える方法(フル)
リモートで技術を伝える方法(フル)リモートで技術を伝える方法(フル)
リモートで技術を伝える方法(フル)
 
windows terminal入門
windows terminal入門windows terminal入門
windows terminal入門
 
Minecraftでプログラミングを学べるって本当?
Minecraftでプログラミングを学べるって本当?Minecraftでプログラミングを学べるって本当?
Minecraftでプログラミングを学べるって本当?
 
Power Automateを使ってみた
Power Automateを使ってみたPower Automateを使ってみた
Power Automateを使ってみた
 
Power Automate Desktop入門
Power Automate Desktop入門Power Automate Desktop入門
Power Automate Desktop入門
 
Microsoft Teams Custom
Microsoft Teams CustomMicrosoft Teams Custom
Microsoft Teams Custom
 
WinUI 3.0 Preview 1を触ってみた(.NETラボ2020年6月登壇資料)
WinUI 3.0 Preview 1を触ってみた(.NETラボ2020年6月登壇資料)WinUI 3.0 Preview 1を触ってみた(.NETラボ2020年6月登壇資料)
WinUI 3.0 Preview 1を触ってみた(.NETラボ2020年6月登壇資料)
 
AzureDevOpsの機能解説
AzureDevOpsの機能解説AzureDevOpsの機能解説
AzureDevOpsの機能解説
 
EC-CUBE 4 入門
EC-CUBE 4 入門EC-CUBE 4 入門
EC-CUBE 4 入門
 
OSS開発で.NETを活用してDevOps
OSS開発で.NETを活用してDevOpsOSS開発で.NETを活用してDevOps
OSS開発で.NETを活用してDevOps
 
.NETの最近
.NETの最近.NETの最近
.NETの最近
 
Amazon echoがやってきた
Amazon echoがやってきたAmazon echoがやってきた
Amazon echoがやってきた
 
2017年度注目の.netテクノロジー
2017年度注目の.netテクノロジー2017年度注目の.netテクノロジー
2017年度注目の.netテクノロジー
 
Xamarin入門(技術というより心構え編)
Xamarin入門(技術というより心構え編)Xamarin入門(技術というより心構え編)
Xamarin入門(技術というより心構え編)
 
初心者目線でIo t
初心者目線でIo t初心者目線でIo t
初心者目線でIo t
 
Universal windows platformの新機能をおさえよう
Universal windows platformの新機能をおさえようUniversal windows platformの新機能をおさえよう
Universal windows platformの新機能をおさえよう
 
2016年注目の.netテクノロジー
2016年注目の.netテクノロジー2016年注目の.netテクノロジー
2016年注目の.netテクノロジー
 
Uwpハンズオン参加レポート
Uwpハンズオン参加レポートUwpハンズオン参加レポート
Uwpハンズオン参加レポート
 
Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介Aspnet mvc 6の今を紹介
Aspnet mvc 6の今を紹介
 

Último

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Último (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

Uwpでみるxaml入門