SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
Windows ストアアプリのつくりかた
     (JS + HTML + CSS)



         id:nobuoka
           (@nobuoka)

       2013-01-24 Kyoto.js #4
自己紹介と概要
●   id:nobuoka - はてなブックマークチーム
●   Java, JavaScript, Perl, Ruby あたりの言語が好き
●   仕事では Perl と JavaScript

●   今日は Windows ストアアプリの話
    –   Windows ストアアプリ開発者との情報共有
    –   興味をもってる人向け情報
    –   興味ない人でも設計の話とか IE 10 情報とか
        何かしら参考になると思う
最近は Windows ストアアプリの
         開発を行うなど
●   「はてなブックマーク」 と 「MeteorLine」




はてなブックマーク (Windows ストア)     MeteorLine (Windows ストア)
Windows ストアアプリって?
●   Windows 8 上で動作する新しい種類のアプリケーション
●   全画面表示、タッチに最適化
●   要はタブレット向けアプリのようなもの
●   原則として Windows ストアからのみインストールできる

●   開発に使用できる言語は:
    – C, C++, C#, VB のいずれか + XAML
    – JavaScript + HTML + CSS
●   Web 開発者にとって取り組みやすい

                       参考: Windows ストア アプリとは (Windows)
JS + HTML + CSS での開発の場合
基本は IE 10 上の web アプリと同じ
●   もちろん違いも: 通常の web アプリとの違い (MSDN)
    –   WinRT API が使えるとかタッチ拡張サポートとか
開発環境のこと
開発環境
●   Windows 8 が必要
●   シミュレータがあるので、タッチできるデバイスがなくても
    タッチ操作のデバッグなどは可能
    –   とはいえ実際に触ってみるのとシミュレータで動かすの
        ではやはり感触が違うので、実機があった方がいい
IDE: Visual Studio Express 2012
         for Windows 8




          参考: Visual Studio Express 2012 for Windows 8 製品情報
IDE: Visual Studio Express 2012
             for Windows 8
●   Windows ストアアプリ開発専用の Visual Studio 2012
    の無料のエディション
●   Visual Studio ばりばり使うなら Professional とかも
●   JavaScript, HTML, CSS のコード補完が優秀
    –  Web 開発用の Visual Studio Express 2012 for
       Web もあるので web 開発に使ってもいいかも
●   Blend for Visual Studio が付属しているが使ってない
    ので何とも言えない
    –   XAML とかなら便利っぽいけど、HTML + CSS なら手
        で書いた方がいいのでは?
Visual Studio を用いたデバッグ
●   DOM Explorer による HTML, CSS の動的な確認
●   JS へのブレークポイント挿入、ステップ実行
    –  JS のコードに debugger 文を挿入
     – コードエディタ左端をクリックしてブレークポイント指定
●   JavaScript コンソールコマンド (console.log メソッドと
    か) による JavaScript コンソールへの出力

●   基本的には web 開発と一緒
    –   Firebug とか Chrome のデベロッパーツールとか

                 参考: クイック スタート: アプリのデバッグ (JavaScript)
Visual Studio 上でのコード補完
●   優秀なコード補完 IntelliSense
    –   動的型付け言語としてはかなり優秀だと思うが、静的
        型付け言語と比べるとやはり劣る
    –   XML ドキュメントコメントによる補助が必要
         ● ドキュメントを書く動機づけになる




●   JS での慣例を反映し、this に対するプロパティ候補表示
    の場合にのみアンダースコア (_) 始まりのプロパティを表
    示するようになっている
    –   that の場合にも表示させたい
    –   カスタマイズ可能!! (カスタマイズの参考)
                            参考: JavaScript IntelliSense
バージョン管理: Git
●   バージョン管理には Git を使ってる
    –  Visual Studio と相性が悪いとかそういうことはない
●   GitHub for Windows の Git Shell を使用
    – 個人的には Windows で Git を使うならコレ;
      exe からインストールするだけで使えるので超便利
    – 端末は Windows PowerShell (デフォルト)
    – 端末上の表示はおかしいが日本語ファイル名にも対応
●   リモートリポジトリを Dropbox に作ったりしてる
    –   Windows 8 シミュレータを起動しているときに
        Dropbox のフォルダ内のファイルを変更すると無限
        アップロード地獄に陥るので注意
WinJS を用いたアプリ開発
   どんな雰囲気なのか
WinJS ライブラリとコントロール
●   WinJS: Windows ストアアプリ開発のためのライブラリ
    – Windows Library for JavaScript
    – クラス定義や名前空間定義のヘルパーから、テンプ
      レート、アニメーション、各種コントロールまで
    – 簡単に読めるし読むと勉強になるので読むといい
●   コントロールとは?
    –   control [名] 制御装置,(テレビなどの)調整用つまみ.
    –   見た目があって、ユーザーへの情報表示やユーザーと
        のインタラクションのためのもの
    –   ボタン要素もコントロールの一種
    –   HTML コントロールと WinJS コントロール
クラス定義と名前空間
var MyClass = WinJS.Class.define(function () {
    // constructor
}, {
    instanceMethod: function () { /* … */ }
}, {
    staticMethod: function () { /* … */ }
});
var c = new MyClass();
c.instanceMethod();
WinJS.Namespace.define(“namespace”, {
    name: value
});
namespace.name; // => value
WinJS コントロールの生成方法
●   HTML 側に data-win-control 属性を書く, または
    –   JS で WinJS.UI.processAll の呼び出しが必要

<div data-win-control=“WinJS.UI.ListView”></div>

●   JS 側で WinJS コントロールのコンストラクタを呼び出す
var listView = new WinJS.UI.ListView(elem);


●   基本的に見た目が付随するので、WinJS コントロールに
    は対応する HTML 要素が 1 つ存在する

                        参考: HTML コントロールの追加とイベントの処理
ページ遷移の話
●   IE エンジン上で動くので、普通の web ページのような
    ページ遷移は可能
    – その場合のページ遷移には文書移動が伴うので不便
    – スクリプトはすべて読み直しになる
●   アプリ内でグローバルにしておきたいスクリプトもあるの
    で文書移動はさせたくない
                                        アプリ全体
    –   文書は保ったまま、ページの内容を               (HTML 文書)

        文書中に読み込む                 ページの内容
    –   単一ページナビゲーションという
        ナビゲーションモデル

                 参考: PageControl オブジェクトとナビゲーション
単一ページナビゲーションの実装
                                         グリッドアプリケーション
                                         分割アプリケーション
●   WinJS.Navigation を使用                 ナビゲーションアプリケーション

    –  現在ページや履歴を管理するオブジェクト
     – ページ遷移のメソッド呼び出しでイベント発生
●   navigator.js (WinJS の一部ではないが、ページ遷移対応のプロジェクトテンプレートに入っている)
    – WinJS.Navigation にイベントリスナを登録し、ページ
      遷移のイベントが発生したときに対応するページコント
      ロールを読み込んで表示
●   Model と View の関係
●   もちろんこの仕組みを使わなくてもいい
    –   Pjax とかあるよね (詳しく知らない)
                            参考: PageControl オブジェクトとナビゲーション
単一ページナビゲーションの実装
                                                     グリッドアプリケーション
                                                     分割アプリケーション
                                                     ナビゲーションアプリケーション
 WinJS.UI.Pages.PageControl   obj
      ページを表すオブジェクト
                                                URL に対応するページコントロールを
                                                インスタンス化・表示

ページ遷移メソッド
呼び出し

                                     navigator.js で定義        
                            Application.PageControlNavigator    obj
                                    ページを表すオブジェクトを入れ替える
                                                         View



    WinJS.Navigation
     現在ページや履歴の管理                        ページ遷移イベント通知
                    Model


                                     参考: PageControl オブジェクトとナビゲーション
ページコントロールとは
           (WinJS.UI.Pages.PageControl)
●   「ページ」 を表す WinJS コントロール
    –  HTML, CSS, JavaScript で構成される
     – ページを構成する際に必要なものが全て含まれる
●   Visual Studio のファイルエクスプローラの 「追加」 →
    「新しい項目」 から、HTML, CSS, JS の組として 1 つの
    ページコントロールを作成できる
●   ページ全体を表すだけでなく、ページの一部を表すことも
    できる = カスタムコントロールとして使うことができる
●   実装としては XHR で HTML ファイルを取得して、要素を
    cloneNode して現在の文書中に埋め込むという感じ
    –   IE 10 の cloneNode まわりのバグに注意 (参考)
バインディングとテンプレート
    (WinJS.Binding, WinJS.Binding.Template)
●   HTML 要素のカスタムデータ属性に JS オブジェクトとの
    対応関係を書いておいて、JS 側から HTML 側に値を結
    び付けることができる
●   テンプレートを使えば HTML 構造に JS 側から値を埋め
    込んだものを簡単に複数個作り出せる
    –   テンプレート内に条件分岐とかはなくて健全な感じ
<div data-win-control=“WinJS.Binding.Template”>
  <span data-win-bind=“textContent: name”></span>
</div>

template.render({ name: “your name” });

                                 参考: データとスタイルのバインド
List と ListView
        (WinJS.Binding.List と WinJS.UI.ListView)
●   List は普通の配列と似たインターフェイスをもつオブジェ
    クト
    –  要素追加や削除などの際にイベントが発生する
●   ListView はその名の通り複数の項目を並べて表示
    –   List に結び付けて、List の変更に自動的に追従
    –   ListLayout と GridLayout がある




                                 参考: ListView コントロールの追加
Promise による非同期処理
                 (WinJS.Promise)
●   Common JS Promises/A 提案 の実装
●   非同期処理をメソッドチェインで書ける
    –   コールバック関数を渡したりするより読み書きしやすい

WinJS.xhr({ url: “http://b.hatena.ne.jp/” }).
then(function (xhr) {
    console.log(xhr.responseText);
}, function onError (xhrOrError) {
    console.error(xhrOrError);
}).
then(function () {
    // ...
});
CSS だと -ms-grid, -ms-flex が重要
●   display: -ms-grid
    –  IE 10 単独実装 (だよね?)
    – 要素を格子状に分割して、子要素をそれぞれどのグ
       リッドに配置するのかを自由に決めることができる
    – アプリを作るならほぼ必須
●   display: -ms-flexbox
    –   最新の W3C の勧告候補だと display: flex になって
        るやつ (のはず)
とりあえず雰囲気はこんな感じ
●   詳しいこと書きだすときりがないので雰囲気がわかりそう
    なことを書いた
    –WinRT API のこととかは全然触れてない
●   実際に開発する人は MSDN のドキュメントを読もう!
●   WinJS ライブラリのソースコードを読むのもオススメ
MeteorLine のはなし
ソースコードを一部公開
●   最初期バージョンのソースコードを公開した
    –nobuoka / win-store-MeteorLine - GitHub
●   簡素な設計、素朴な実装
●   どうやって開発を進めたか機能ごとに紹介してみる
    –   Twitter のユーザー認証 (アカウント追加)
    –   アカウント一覧表示、削除
    –   Home Timeline の表示 (User Stream API 使用)
    –   アプリ設定の追加
全体の設計
 タイムラインを表す        タイムラインを表す
のページコントロール        のページコントロール
                                             アカウント一覧の
                                            ページコントロール




                                                 アカウント
                       タイムライン一覧                  削除・参照    アカウント追加の
    タイムライン取得          のページコントロール                         ページコントロール
    ツイート投稿


                                   変更通知


                                                          アカウント追加




        twitterClient              accountList
    Twitter サーバーとのやりとり              アカウントの管理

図中では TwitterClient と OauthCredentialsObtainer
をまとめて twitterClient としてる
まずはプロジェクト作成
●   「新しいプロジェクト」 → 「テンプレート」 →
    「JavaScript」
●   既にページ構造もできてる: 「グリッド...」 「分割...」
●   単一ページだがページ遷移機能付: 「ナビゲーション...」
●   その他、ページ遷移機能無しのプロジェクトテンプレート

●   今回は 「ナビゲーショ
    ン アプリケーション」
とりあえずいじる
●   単一ページ内でアカウント管理とタイムライン一覧をタブ
    で切り替えるように
Twitter ユーザー認証の機能を追加
Twitter ユーザー認証の機能を追加
●   コミット ee959a7094a

●   アカウント追加のためのページコントロール
●   oauth ライブラリを追加
●   OAuth 認証のための処理を記述
    –   Client Credentials は Config.js に記述
        ("YOUR_CONSUMER_KEY", "YOUR_CONSUMER_SECRET")
●   アカウント一覧は WinJS.Binding.List で管理
    global.accountList

    –   List の変化をイベントとして検知して、変更されるたび
        に localSettings に JSON 文字列として保存
Twitter ユーザー認証の機能を追加
 タイムラインを表す   タイムラインを表す
のページコントロール   のページコントロール
                                  アカウント一覧の
                                 ページコントロール




                                        アカウント
                 タイムライン一覧               削除・参照    アカウント追加の
  タイムライン取得      のページコントロール                      ページコントロール
  ツイート投稿




                                                 アカウント追加




    twitterClient         accountList
  Twitter サーバーとのやりとり      アカウントの管理
アカウント一覧の表示とアカウント削除
アカウント一覧の表示とアカウント削除
●   コミット 98142480634

●   アカウント一覧のためのページコントロール
●   WinJS.UI.ListView コントロールでアカウント一覧を表示
●   削除のコマンドがたたかれた場合は
    global.accountList からアカウント情報を削除
アカウント一覧の表示とアカウント削除
 タイムラインを表す   タイムラインを表す
のページコントロール   のページコントロール
                                  アカウント一覧の
                                 ページコントロール




                                        アカウント
                 タイムライン一覧               削除・参照    アカウント追加の
  タイムライン取得      のページコントロール                      ページコントロール
  ツイート投稿




                                                 アカウント追加




    twitterClient         accountList
  Twitter サーバーとのやりとり      アカウントの管理
Home Timeline の表示
Home Timeline の表示
●   コミット f870b6d6a4e

●   TwitterClient 作成
    – IE 10 の XHR における ms-stream を使って
      Streaming API を扱う (参考)
       ● XHR 2 の responseType 属性 (“document” と

         か指定すれば HTML ドキュメントがとれるやつ)
●   Timeline を複数表示するためのページコントロール
●   Timeline のページコントロール
Home Timeline の表示
 タイムラインを表す   タイムラインを表す
のページコントロール   のページコントロール
                                  アカウント一覧の
                                 ページコントロール




                                        アカウント
                 タイムライン一覧               削除・参照    アカウント追加の
  タイムライン取得      のページコントロール                      ページコントロール
  ツイート投稿




                                                 アカウント追加




    twitterClient         accountList
  Twitter サーバーとのやりとり      アカウントの管理
アプリ設定の追加
アプリ設定の追加
●   コミット 674bc41f384

●   アプリ設定の開き方
    –   Windows ストアアプリにおけるアプリ設定の表示方
        法
Windows ストアアプリ開発に関して
            思ったことなど
●   HTML + CSS + JS で書けるのは取り組みやすい
●   一方で GUI アプリケーションの設計に関しては web 開
    発の知識では足りなくて慣れるまで苦労した
    –  MVC とかちゃんと理解してなかったので
●   UI 部品などのコンポーネント化は大事だなーと思った
    –   基本的にはページコントロールで部品を作るとよさそ
        う
    –   1 つのコントロールの中に view とか model とか
        control が混在することもあるけど、どの部分が何に相
        当するのか意識しておけば将来変更しやすい
おわり
 タイムラインを表す   タイムラインを表す
のページコントロール   のページコントロール
                                  アカウント一覧の
                                 ページコントロール




                                        アカウント
                 タイムライン一覧               削除・参照    アカウント追加の
  タイムライン取得      のページコントロール                      ページコントロール
  ツイート投稿




                                                 アカウント追加




    twitterClient         accountList
  Twitter サーバーとのやりとり      アカウントの管理

Weitere ähnliche Inhalte

Was ist angesagt?

Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Tatsuji Kuroyanagi
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVMHiroshi Maekawa
 
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能一希 大田
 
どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後Narami Kiyokura
 
C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)Takashi Kawasaki
 
Blendの便利機能振り返り
Blendの便利機能振り返りBlendの便利機能振り返り
Blendの便利機能振り返り一希 大田
 
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCGUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCYu Nobuoka
 
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarinかけ算で使いこなす Xamarin
かけ算で使いこなす XamarinTatsuji Kuroyanagi
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門minazou67
 
Prism for windows runtime入門
Prism for windows runtime入門Prism for windows runtime入門
Prism for windows runtime入門一希 大田
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
AngularJSについて
AngularJSについてAngularJSについて
AngularJSについて昌生 高橋
 
Word press初心者が 基本アーキテクチャを ざっくりと学ぶ
Word press初心者が 基本アーキテクチャを ざっくりと学ぶWord press初心者が 基本アーキテクチャを ざっくりと学ぶ
Word press初心者が 基本アーキテクチャを ざっくりと学ぶclimbFrog
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門normalian
 
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 Eastirgaly
 

Was ist angesagt? (20)

Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
 
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
 
WPF MVVM Review
WPF MVVM ReviewWPF MVVM Review
WPF MVVM Review
 
グレープシティのJavaScriptライブラリ
グレープシティのJavaScriptライブラリグレープシティのJavaScriptライブラリ
グレープシティのJavaScriptライブラリ
 
どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後
 
C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)C++からC#まで Visual Studio 縛り (で死ぬ実験)
C++からC#まで Visual Studio 縛り (で死ぬ実験)
 
開発ツール「Wijmo」と「SpreadJS」からみる業務アプリケーションの変遷とこれから
開発ツール「Wijmo」と「SpreadJS」からみる業務アプリケーションの変遷とこれから開発ツール「Wijmo」と「SpreadJS」からみる業務アプリケーションの変遷とこれから
開発ツール「Wijmo」と「SpreadJS」からみる業務アプリケーションの変遷とこれから
 
Blendの便利機能振り返り
Blendの便利機能振り返りBlendの便利機能振り返り
Blendの便利機能振り返り
 
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCGUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
 
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarinかけ算で使いこなす Xamarin
かけ算で使いこなす Xamarin
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
 
Prism for windows runtime入門
Prism for windows runtime入門Prism for windows runtime入門
Prism for windows runtime入門
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
AngularJSについて
AngularJSについてAngularJSについて
AngularJSについて
 
Word press初心者が 基本アーキテクチャを ざっくりと学ぶ
Word press初心者が 基本アーキテクチャを ざっくりと学ぶWord press初心者が 基本アーキテクチャを ざっくりと学ぶ
Word press初心者が 基本アーキテクチャを ざっくりと学ぶ
 
【Web TECH FORUM 2017 in大阪】Webシステム開発とJavaScript UIコンポーネント
【Web TECH FORUM 2017 in大阪】Webシステム開発とJavaScript UIコンポーネント【Web TECH FORUM 2017 in大阪】Webシステム開発とJavaScript UIコンポーネント
【Web TECH FORUM 2017 in大阪】Webシステム開発とJavaScript UIコンポーネント
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
 
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
 
【Web TECH FORUM 2017 in大阪】グレープシティのJavaScriptライブラリ
【Web TECH FORUM 2017 in大阪】グレープシティのJavaScriptライブラリ【Web TECH FORUM 2017 in大阪】グレープシティのJavaScriptライブラリ
【Web TECH FORUM 2017 in大阪】グレープシティのJavaScriptライブラリ
 

Andere mochten auch

GRADEの基礎:概要と問題設定
GRADEの基礎:概要と問題設定GRADEの基礎:概要と問題設定
GRADEの基礎:概要と問題設定Yuko Masuzawa
 
マークアップ講座 01b HTML
マークアップ講座 01b HTMLマークアップ講座 01b HTML
マークアップ講座 01b HTMLeiji sekiya
 
三角ポップ大作戦!!(京大CARP)
三角ポップ大作戦!!(京大CARP)三角ポップ大作戦!!(京大CARP)
三角ポップ大作戦!!(京大CARP)pj_wcj
 
芸術情報演習デザイン(web) 第2回:HTML入門
芸術情報演習デザイン(web) 第2回:HTML入門芸術情報演習デザイン(web) 第2回:HTML入門
芸術情報演習デザイン(web) 第2回:HTML入門Atsushi Tadokoro
 
PtengienのヒートマップとOptimizelyとの連携
PtengienのヒートマップとOptimizelyとの連携PtengienのヒートマップとOptimizelyとの連携
PtengienのヒートマップとOptimizelyとの連携Ptmind_jp
 
持続可能な里山とは?~里山保全の同時代史と里山ガバナンスの今後
持続可能な里山とは?~里山保全の同時代史と里山ガバナンスの今後持続可能な里山とは?~里山保全の同時代史と里山ガバナンスの今後
持続可能な里山とは?~里山保全の同時代史と里山ガバナンスの今後marrmur
 
情報編集 (web) 第2回:HTML入門
情報編集 (web) 第2回:HTML入門情報編集 (web) 第2回:HTML入門
情報編集 (web) 第2回:HTML入門Atsushi Tadokoro
 
2016年12月冥炎強化月間
2016年12月冥炎強化月間2016年12月冥炎強化月間
2016年12月冥炎強化月間paul01647
 
Drupal 8 へのスタンドアロン behat の導入
Drupal 8 へのスタンドアロン behat の導入Drupal 8 へのスタンドアロン behat の導入
Drupal 8 へのスタンドアロン behat の導入tom_konda
 
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSSShogo Iwano
 
HTMLデザインを崩さないテンプレートエンジンの作り方
HTMLデザインを崩さないテンプレートエンジンの作り方HTMLデザインを崩さないテンプレートエンジンの作り方
HTMLデザインを崩さないテンプレートエンジンの作り方kwatch
 
Ptengineの使い方
Ptengineの使い方Ptengineの使い方
Ptengineの使い方Ptmind_jp
 
D D Mapで守り隊!伊都はいいとこPJ(九大CARP)
D D Mapで守り隊!伊都はいいとこPJ(九大CARP)D D Mapで守り隊!伊都はいいとこPJ(九大CARP)
D D Mapで守り隊!伊都はいいとこPJ(九大CARP)pj_wcj
 
メディア芸術基礎 Ⅰ 第2回 HTML入門
メディア芸術基礎 Ⅰ 第2回 HTML入門メディア芸術基礎 Ⅰ 第2回 HTML入門
メディア芸術基礎 Ⅰ 第2回 HTML入門Atsushi Tadokoro
 
Html講習会資料
Html講習会資料Html講習会資料
Html講習会資料竹島 泉
 
失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発Tsunenori Oohara
 
防災するけん!岡山県~岡山防災意識革命~(岡山CARP)
防災するけん!岡山県~岡山防災意識革命~(岡山CARP)防災するけん!岡山県~岡山防災意識革命~(岡山CARP)
防災するけん!岡山県~岡山防災意識革命~(岡山CARP)pj_wcj
 

Andere mochten auch (20)

GRADEの基礎:概要と問題設定
GRADEの基礎:概要と問題設定GRADEの基礎:概要と問題設定
GRADEの基礎:概要と問題設定
 
まちづくり門前
まちづくり門前まちづくり門前
まちづくり門前
 
マークアップ講座 01b HTML
マークアップ講座 01b HTMLマークアップ講座 01b HTML
マークアップ講座 01b HTML
 
三角ポップ大作戦!!(京大CARP)
三角ポップ大作戦!!(京大CARP)三角ポップ大作戦!!(京大CARP)
三角ポップ大作戦!!(京大CARP)
 
芸術情報演習デザイン(web) 第2回:HTML入門
芸術情報演習デザイン(web) 第2回:HTML入門芸術情報演習デザイン(web) 第2回:HTML入門
芸術情報演習デザイン(web) 第2回:HTML入門
 
PtengienのヒートマップとOptimizelyとの連携
PtengienのヒートマップとOptimizelyとの連携PtengienのヒートマップとOptimizelyとの連携
PtengienのヒートマップとOptimizelyとの連携
 
持続可能な里山とは?~里山保全の同時代史と里山ガバナンスの今後
持続可能な里山とは?~里山保全の同時代史と里山ガバナンスの今後持続可能な里山とは?~里山保全の同時代史と里山ガバナンスの今後
持続可能な里山とは?~里山保全の同時代史と里山ガバナンスの今後
 
情報編集 (web) 第2回:HTML入門
情報編集 (web) 第2回:HTML入門情報編集 (web) 第2回:HTML入門
情報編集 (web) 第2回:HTML入門
 
2016年12月冥炎強化月間
2016年12月冥炎強化月間2016年12月冥炎強化月間
2016年12月冥炎強化月間
 
Drupal 8 へのスタンドアロン behat の導入
Drupal 8 へのスタンドアロン behat の導入Drupal 8 へのスタンドアロン behat の導入
Drupal 8 へのスタンドアロン behat の導入
 
Htmlのコトバ
HtmlのコトバHtmlのコトバ
Htmlのコトバ
 
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
短期間+大規模ゲーム開発でも破綻しないHTML・SCSS
 
HTMLデザインを崩さないテンプレートエンジンの作り方
HTMLデザインを崩さないテンプレートエンジンの作り方HTMLデザインを崩さないテンプレートエンジンの作り方
HTMLデザインを崩さないテンプレートエンジンの作り方
 
Ptengineの使い方
Ptengineの使い方Ptengineの使い方
Ptengineの使い方
 
D D Mapで守り隊!伊都はいいとこPJ(九大CARP)
D D Mapで守り隊!伊都はいいとこPJ(九大CARP)D D Mapで守り隊!伊都はいいとこPJ(九大CARP)
D D Mapで守り隊!伊都はいいとこPJ(九大CARP)
 
メディア芸術基礎 Ⅰ 第2回 HTML入門
メディア芸術基礎 Ⅰ 第2回 HTML入門メディア芸術基礎 Ⅰ 第2回 HTML入門
メディア芸術基礎 Ⅰ 第2回 HTML入門
 
Html講習会資料
Html講習会資料Html講習会資料
Html講習会資料
 
失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発失敗という概念が存在しない退屈なweb開発
失敗という概念が存在しない退屈なweb開発
 
防災するけん!岡山県~岡山防災意識革命~(岡山CARP)
防災するけん!岡山県~岡山防災意識革命~(岡山CARP)防災するけん!岡山県~岡山防災意識革命~(岡山CARP)
防災するけん!岡山県~岡山防災意識革命~(岡山CARP)
 
Basic HTML Introduction
Basic HTML IntroductionBasic HTML Introduction
Basic HTML Introduction
 

Ähnlich wie Windows ストアアプリのつくりかた (JS + HTML + CSS)

html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた Shumpei Shiraishi
 
Grid application テンプレートを紐解く
Grid application テンプレートを紐解くGrid application テンプレートを紐解く
Grid application テンプレートを紐解くKazuhide Maruyama
 
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)Kei Yagi
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介Shotaro Suzuki
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVCRyunosuke SATO
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Akira Inoue
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発Daizen Ikehara
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発Akira Inoue
 
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)shigeya
 
1_各Atlassian製品の紹介
1_各Atlassian製品の紹介1_各Atlassian製品の紹介
1_各Atlassian製品の紹介Ricksoft
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIHajime Fujimoto
 
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Shotaro Suzuki
 

Ähnlich wie Windows ストアアプリのつくりかた (JS + HTML + CSS) (20)

html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
html5j.orgがHTML5+JavaScriptで Metro Style アプリを作ってみた
 
Grid application テンプレートを紐解く
Grid application テンプレートを紐解くGrid application テンプレートを紐解く
Grid application テンプレートを紐解く
 
Web Intents入門
Web Intents入門Web Intents入門
Web Intents入門
 
20090212
2009021220090212
20090212
 
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVC
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
 
Devtools.next
Devtools.nextDevtools.next
Devtools.next
 
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
jQuery/Html5/ASP.NET MVC 対応コンポーネントを用いたデバイス対応業務アプリケーション開発
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
 
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
 
1_各Atlassian製品の紹介
1_各Atlassian製品の紹介1_各Atlassian製品の紹介
1_各Atlassian製品の紹介
 
Data API 2.0
Data API 2.0Data API 2.0
Data API 2.0
 
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData APIJavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
 
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
 
Ajax basic
Ajax basicAjax basic
Ajax basic
 

Mehr von Yu Nobuoka

5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術Yu Nobuoka
 
Android アプリを Jenkins でビルドして GitHub に “リリース” を作る
Android アプリを Jenkins でビルドして GitHub に “リリース” を作るAndroid アプリを Jenkins でビルドして GitHub に “リリース” を作る
Android アプリを Jenkins でビルドして GitHub に “リリース” を作るYu Nobuoka
 
AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行Yu Nobuoka
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムAndroid アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムYu Nobuoka
 
Java による Web アプリケーションのプロトタイプのために最近使っている構成
Java による Web アプリケーションのプロトタイプのために最近使っている構成Java による Web アプリケーションのプロトタイプのために最近使っている構成
Java による Web アプリケーションのプロトタイプのために最近使っている構成Yu Nobuoka
 
はてなにおける Android アプリのソフトウェアテスト
はてなにおける Android アプリのソフトウェアテストはてなにおける Android アプリのソフトウェアテスト
はてなにおける Android アプリのソフトウェアテストYu Nobuoka
 
GIF と LZW 圧縮と GifWriter.js
GIF と LZW 圧縮と GifWriter.jsGIF と LZW 圧縮と GifWriter.js
GIF と LZW 圧縮と GifWriter.jsYu Nobuoka
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめYu Nobuoka
 
WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketYu Nobuoka
 

Mehr von Yu Nobuoka (10)

5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
 
Android アプリを Jenkins でビルドして GitHub に “リリース” を作る
Android アプリを Jenkins でビルドして GitHub に “リリース” を作るAndroid アプリを Jenkins でビルドして GitHub に “リリース” を作る
Android アプリを Jenkins でビルドして GitHub に “リリース” を作る
 
AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行AndroidJUnitRunner で JUnit 4 形式のテストに移行
AndroidJUnitRunner で JUnit 4 形式のテストに移行
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Android アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステムAndroid アプリ開発における Gradle ビルドシステム
Android アプリ開発における Gradle ビルドシステム
 
Java による Web アプリケーションのプロトタイプのために最近使っている構成
Java による Web アプリケーションのプロトタイプのために最近使っている構成Java による Web アプリケーションのプロトタイプのために最近使っている構成
Java による Web アプリケーションのプロトタイプのために最近使っている構成
 
はてなにおける Android アプリのソフトウェアテスト
はてなにおける Android アプリのソフトウェアテストはてなにおける Android アプリのソフトウェアテスト
はてなにおける Android アプリのソフトウェアテスト
 
GIF と LZW 圧縮と GifWriter.js
GIF と LZW 圧縮と GifWriter.jsGIF と LZW 圧縮と GifWriter.js
GIF と LZW 圧縮と GifWriter.js
 
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめTypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
 
WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocket
 

Kürzlich hochgeladen

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (9)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 

Windows ストアアプリのつくりかた (JS + HTML + CSS)

  • 1. Windows ストアアプリのつくりかた (JS + HTML + CSS) id:nobuoka (@nobuoka) 2013-01-24 Kyoto.js #4
  • 2. 自己紹介と概要 ● id:nobuoka - はてなブックマークチーム ● Java, JavaScript, Perl, Ruby あたりの言語が好き ● 仕事では Perl と JavaScript ● 今日は Windows ストアアプリの話 – Windows ストアアプリ開発者との情報共有 – 興味をもってる人向け情報 – 興味ない人でも設計の話とか IE 10 情報とか 何かしら参考になると思う
  • 3. 最近は Windows ストアアプリの 開発を行うなど ● 「はてなブックマーク」 と 「MeteorLine」 はてなブックマーク (Windows ストア) MeteorLine (Windows ストア)
  • 4. Windows ストアアプリって? ● Windows 8 上で動作する新しい種類のアプリケーション ● 全画面表示、タッチに最適化 ● 要はタブレット向けアプリのようなもの ● 原則として Windows ストアからのみインストールできる ● 開発に使用できる言語は: – C, C++, C#, VB のいずれか + XAML – JavaScript + HTML + CSS ● Web 開発者にとって取り組みやすい 参考: Windows ストア アプリとは (Windows)
  • 5. JS + HTML + CSS での開発の場合 基本は IE 10 上の web アプリと同じ ● もちろん違いも: 通常の web アプリとの違い (MSDN) – WinRT API が使えるとかタッチ拡張サポートとか
  • 7. 開発環境 ● Windows 8 が必要 ● シミュレータがあるので、タッチできるデバイスがなくても タッチ操作のデバッグなどは可能 – とはいえ実際に触ってみるのとシミュレータで動かすの ではやはり感触が違うので、実機があった方がいい
  • 8. IDE: Visual Studio Express 2012 for Windows 8 参考: Visual Studio Express 2012 for Windows 8 製品情報
  • 9. IDE: Visual Studio Express 2012 for Windows 8 ● Windows ストアアプリ開発専用の Visual Studio 2012 の無料のエディション ● Visual Studio ばりばり使うなら Professional とかも ● JavaScript, HTML, CSS のコード補完が優秀 – Web 開発用の Visual Studio Express 2012 for Web もあるので web 開発に使ってもいいかも ● Blend for Visual Studio が付属しているが使ってない ので何とも言えない – XAML とかなら便利っぽいけど、HTML + CSS なら手 で書いた方がいいのでは?
  • 10. Visual Studio を用いたデバッグ ● DOM Explorer による HTML, CSS の動的な確認 ● JS へのブレークポイント挿入、ステップ実行 – JS のコードに debugger 文を挿入 – コードエディタ左端をクリックしてブレークポイント指定 ● JavaScript コンソールコマンド (console.log メソッドと か) による JavaScript コンソールへの出力 ● 基本的には web 開発と一緒 – Firebug とか Chrome のデベロッパーツールとか 参考: クイック スタート: アプリのデバッグ (JavaScript)
  • 11. Visual Studio 上でのコード補完 ● 優秀なコード補完 IntelliSense – 動的型付け言語としてはかなり優秀だと思うが、静的 型付け言語と比べるとやはり劣る – XML ドキュメントコメントによる補助が必要 ● ドキュメントを書く動機づけになる ● JS での慣例を反映し、this に対するプロパティ候補表示 の場合にのみアンダースコア (_) 始まりのプロパティを表 示するようになっている – that の場合にも表示させたい – カスタマイズ可能!! (カスタマイズの参考) 参考: JavaScript IntelliSense
  • 12. バージョン管理: Git ● バージョン管理には Git を使ってる – Visual Studio と相性が悪いとかそういうことはない ● GitHub for Windows の Git Shell を使用 – 個人的には Windows で Git を使うならコレ; exe からインストールするだけで使えるので超便利 – 端末は Windows PowerShell (デフォルト) – 端末上の表示はおかしいが日本語ファイル名にも対応 ● リモートリポジトリを Dropbox に作ったりしてる – Windows 8 シミュレータを起動しているときに Dropbox のフォルダ内のファイルを変更すると無限 アップロード地獄に陥るので注意
  • 13. WinJS を用いたアプリ開発 どんな雰囲気なのか
  • 14. WinJS ライブラリとコントロール ● WinJS: Windows ストアアプリ開発のためのライブラリ – Windows Library for JavaScript – クラス定義や名前空間定義のヘルパーから、テンプ レート、アニメーション、各種コントロールまで – 簡単に読めるし読むと勉強になるので読むといい ● コントロールとは? – control [名] 制御装置,(テレビなどの)調整用つまみ. – 見た目があって、ユーザーへの情報表示やユーザーと のインタラクションのためのもの – ボタン要素もコントロールの一種 – HTML コントロールと WinJS コントロール
  • 15. クラス定義と名前空間 var MyClass = WinJS.Class.define(function () { // constructor }, { instanceMethod: function () { /* … */ } }, { staticMethod: function () { /* … */ } }); var c = new MyClass(); c.instanceMethod(); WinJS.Namespace.define(“namespace”, { name: value }); namespace.name; // => value
  • 16. WinJS コントロールの生成方法 ● HTML 側に data-win-control 属性を書く, または – JS で WinJS.UI.processAll の呼び出しが必要 <div data-win-control=“WinJS.UI.ListView”></div> ● JS 側で WinJS コントロールのコンストラクタを呼び出す var listView = new WinJS.UI.ListView(elem); ● 基本的に見た目が付随するので、WinJS コントロールに は対応する HTML 要素が 1 つ存在する 参考: HTML コントロールの追加とイベントの処理
  • 17. ページ遷移の話 ● IE エンジン上で動くので、普通の web ページのような ページ遷移は可能 – その場合のページ遷移には文書移動が伴うので不便 – スクリプトはすべて読み直しになる ● アプリ内でグローバルにしておきたいスクリプトもあるの で文書移動はさせたくない アプリ全体 – 文書は保ったまま、ページの内容を (HTML 文書) 文書中に読み込む ページの内容 – 単一ページナビゲーションという ナビゲーションモデル 参考: PageControl オブジェクトとナビゲーション
  • 18. 単一ページナビゲーションの実装 グリッドアプリケーション 分割アプリケーション ● WinJS.Navigation を使用 ナビゲーションアプリケーション – 現在ページや履歴を管理するオブジェクト – ページ遷移のメソッド呼び出しでイベント発生 ● navigator.js (WinJS の一部ではないが、ページ遷移対応のプロジェクトテンプレートに入っている) – WinJS.Navigation にイベントリスナを登録し、ページ 遷移のイベントが発生したときに対応するページコント ロールを読み込んで表示 ● Model と View の関係 ● もちろんこの仕組みを使わなくてもいい – Pjax とかあるよね (詳しく知らない) 参考: PageControl オブジェクトとナビゲーション
  • 19. 単一ページナビゲーションの実装 グリッドアプリケーション 分割アプリケーション ナビゲーションアプリケーション WinJS.UI.Pages.PageControl obj ページを表すオブジェクト URL に対応するページコントロールを インスタンス化・表示 ページ遷移メソッド 呼び出し navigator.js で定義         Application.PageControlNavigator obj ページを表すオブジェクトを入れ替える View WinJS.Navigation 現在ページや履歴の管理 ページ遷移イベント通知 Model 参考: PageControl オブジェクトとナビゲーション
  • 20. ページコントロールとは (WinJS.UI.Pages.PageControl) ● 「ページ」 を表す WinJS コントロール – HTML, CSS, JavaScript で構成される – ページを構成する際に必要なものが全て含まれる ● Visual Studio のファイルエクスプローラの 「追加」 → 「新しい項目」 から、HTML, CSS, JS の組として 1 つの ページコントロールを作成できる ● ページ全体を表すだけでなく、ページの一部を表すことも できる = カスタムコントロールとして使うことができる ● 実装としては XHR で HTML ファイルを取得して、要素を cloneNode して現在の文書中に埋め込むという感じ – IE 10 の cloneNode まわりのバグに注意 (参考)
  • 21. バインディングとテンプレート (WinJS.Binding, WinJS.Binding.Template) ● HTML 要素のカスタムデータ属性に JS オブジェクトとの 対応関係を書いておいて、JS 側から HTML 側に値を結 び付けることができる ● テンプレートを使えば HTML 構造に JS 側から値を埋め 込んだものを簡単に複数個作り出せる – テンプレート内に条件分岐とかはなくて健全な感じ <div data-win-control=“WinJS.Binding.Template”> <span data-win-bind=“textContent: name”></span> </div> template.render({ name: “your name” }); 参考: データとスタイルのバインド
  • 22. List と ListView (WinJS.Binding.List と WinJS.UI.ListView) ● List は普通の配列と似たインターフェイスをもつオブジェ クト – 要素追加や削除などの際にイベントが発生する ● ListView はその名の通り複数の項目を並べて表示 – List に結び付けて、List の変更に自動的に追従 – ListLayout と GridLayout がある 参考: ListView コントロールの追加
  • 23. Promise による非同期処理 (WinJS.Promise) ● Common JS Promises/A 提案 の実装 ● 非同期処理をメソッドチェインで書ける – コールバック関数を渡したりするより読み書きしやすい WinJS.xhr({ url: “http://b.hatena.ne.jp/” }). then(function (xhr) { console.log(xhr.responseText); }, function onError (xhrOrError) { console.error(xhrOrError); }). then(function () { // ... });
  • 24. CSS だと -ms-grid, -ms-flex が重要 ● display: -ms-grid – IE 10 単独実装 (だよね?) – 要素を格子状に分割して、子要素をそれぞれどのグ リッドに配置するのかを自由に決めることができる – アプリを作るならほぼ必須 ● display: -ms-flexbox – 最新の W3C の勧告候補だと display: flex になって るやつ (のはず)
  • 25. とりあえず雰囲気はこんな感じ ● 詳しいこと書きだすときりがないので雰囲気がわかりそう なことを書いた –WinRT API のこととかは全然触れてない ● 実際に開発する人は MSDN のドキュメントを読もう! ● WinJS ライブラリのソースコードを読むのもオススメ
  • 27. ソースコードを一部公開 ● 最初期バージョンのソースコードを公開した –nobuoka / win-store-MeteorLine - GitHub ● 簡素な設計、素朴な実装 ● どうやって開発を進めたか機能ごとに紹介してみる – Twitter のユーザー認証 (アカウント追加) – アカウント一覧表示、削除 – Home Timeline の表示 (User Stream API 使用) – アプリ設定の追加
  • 28. 全体の設計 タイムラインを表す タイムラインを表す のページコントロール のページコントロール アカウント一覧の ページコントロール アカウント タイムライン一覧 削除・参照 アカウント追加の タイムライン取得 のページコントロール ページコントロール ツイート投稿 変更通知 アカウント追加 twitterClient accountList Twitter サーバーとのやりとり アカウントの管理 図中では TwitterClient と OauthCredentialsObtainer をまとめて twitterClient としてる
  • 29. まずはプロジェクト作成 ● 「新しいプロジェクト」 → 「テンプレート」 → 「JavaScript」 ● 既にページ構造もできてる: 「グリッド...」 「分割...」 ● 単一ページだがページ遷移機能付: 「ナビゲーション...」 ● その他、ページ遷移機能無しのプロジェクトテンプレート ● 今回は 「ナビゲーショ ン アプリケーション」
  • 30. とりあえずいじる ● 単一ページ内でアカウント管理とタイムライン一覧をタブ で切り替えるように
  • 32. Twitter ユーザー認証の機能を追加 ● コミット ee959a7094a ● アカウント追加のためのページコントロール ● oauth ライブラリを追加 ● OAuth 認証のための処理を記述 – Client Credentials は Config.js に記述 ("YOUR_CONSUMER_KEY", "YOUR_CONSUMER_SECRET") ● アカウント一覧は WinJS.Binding.List で管理 global.accountList – List の変化をイベントとして検知して、変更されるたび に localSettings に JSON 文字列として保存
  • 33. Twitter ユーザー認証の機能を追加 タイムラインを表す タイムラインを表す のページコントロール のページコントロール アカウント一覧の ページコントロール アカウント タイムライン一覧 削除・参照 アカウント追加の タイムライン取得 のページコントロール ページコントロール ツイート投稿 アカウント追加 twitterClient accountList Twitter サーバーとのやりとり アカウントの管理
  • 35. アカウント一覧の表示とアカウント削除 ● コミット 98142480634 ● アカウント一覧のためのページコントロール ● WinJS.UI.ListView コントロールでアカウント一覧を表示 ● 削除のコマンドがたたかれた場合は global.accountList からアカウント情報を削除
  • 36. アカウント一覧の表示とアカウント削除 タイムラインを表す タイムラインを表す のページコントロール のページコントロール アカウント一覧の ページコントロール アカウント タイムライン一覧 削除・参照 アカウント追加の タイムライン取得 のページコントロール ページコントロール ツイート投稿 アカウント追加 twitterClient accountList Twitter サーバーとのやりとり アカウントの管理
  • 38. Home Timeline の表示 ● コミット f870b6d6a4e ● TwitterClient 作成 – IE 10 の XHR における ms-stream を使って Streaming API を扱う (参考) ● XHR 2 の responseType 属性 (“document” と か指定すれば HTML ドキュメントがとれるやつ) ● Timeline を複数表示するためのページコントロール ● Timeline のページコントロール
  • 39. Home Timeline の表示 タイムラインを表す タイムラインを表す のページコントロール のページコントロール アカウント一覧の ページコントロール アカウント タイムライン一覧 削除・参照 アカウント追加の タイムライン取得 のページコントロール ページコントロール ツイート投稿 アカウント追加 twitterClient accountList Twitter サーバーとのやりとり アカウントの管理
  • 41. アプリ設定の追加 ● コミット 674bc41f384 ● アプリ設定の開き方 – Windows ストアアプリにおけるアプリ設定の表示方 法
  • 42. Windows ストアアプリ開発に関して 思ったことなど ● HTML + CSS + JS で書けるのは取り組みやすい ● 一方で GUI アプリケーションの設計に関しては web 開 発の知識では足りなくて慣れるまで苦労した – MVC とかちゃんと理解してなかったので ● UI 部品などのコンポーネント化は大事だなーと思った – 基本的にはページコントロールで部品を作るとよさそ う – 1 つのコントロールの中に view とか model とか control が混在することもあるけど、どの部分が何に相 当するのか意識しておけば将来変更しやすい
  • 43. おわり タイムラインを表す タイムラインを表す のページコントロール のページコントロール アカウント一覧の ページコントロール アカウント タイムライン一覧 削除・参照 アカウント追加の タイムライン取得 のページコントロール ページコントロール ツイート投稿 アカウント追加 twitterClient accountList Twitter サーバーとのやりとり アカウントの管理