書籍 『Programming Windows 8 Apps with HTML, CSS, and JavaScript』 の紹介


みなさん、こんにちは。Windows 開発統括部の古内です。

今日は 『Programming Windows 8 Apps with HTML, CSS, and JavaScript』 という書籍をご紹介したいと思います。

この本は、米国本社の Windows 開発チームに所属している Kraig Brockschmidt が執筆したもので、HTML 形式の Windows ストア アプリの開発方法について、サンプルなどを交えながら 1 から順番に説明しています。こちらの Microsoft Press ブログ サイト (英語) から無料でダウンロードできますし、書籍として購入することも可能です。

本書の内容をもっと詳しく知っていただくために、Microsoft Press の英語ブログ記事と同様、下記に 「序章」 (Introduction) の日本語訳を掲載します。

HTML 形式の Windows 8 用アプリを開発するのに大変参考になる内容なので、ぜひ日本の開発者の方々にも読んでいただければと思います。


序章

Windows 8 へようこそ!この製品を世に送り出してくれたデザイナー、プログラム マネージャー、開発者、テスト エンジニア、ライターといった大勢の人を代表して、あなたを Windows Reimagined (Windows の刷新) の世界にお招きすることができて光栄です。

このテーマは、単に感情に訴えるだけのマーケティング戦略ではありません。本質は何も変わらないのにあたかも新しくなったように装うもの、もしくは 「新しく改良されたパッケージ!」 といったことを大げさに吹聴する家庭用雑貨とは違うのです。マイクロソフトは真に生まれ変わりました。四半世紀を経て何か本当に新しいものが現れたのです。

みなさんは、すでに Windows 8 の刷新されたユーザー インターフェースに触れたことがあるかと思います (実際にそうであってほしいと期待しているのですが)。Windows 8 は、デスクトップ PC・ノート PC・タブレットといったさまざまなデバイスの上で動作し、Windows ストアを介して世界中にリーチできます。それによって、大きなビジネス チャンスがもたらされますーあなたがビジネスに携わっていようといまいと、名声のためでも、幸運を掴むためでも、慈善目的でも、単に楽しいからという理由でも。その Windows 8 がもたらすビジネス チャンスのために、この本を読まれようとしているのではないかと思われます。

この本を通して新しいユーザー エクスペリエンスの色々な側面を見ていくことになりますが、この本では刷新された開発者のエクスペリエンスにフォーカスします。

軽々しく言っているわけではありません。最初に Windows ストア アプリの作り方についてマイクロソフトでプレゼンを行った時、1985 年がどのような年だったかというスライドを見せました。ロナルド・レーガン、マーガレット・サッチャー、冷戦といった時代でした。VCR が全盛でエイズが見つかった年でもありました。「バック・トゥー・ザ・フューチャー」 が最初に公開され、マイケル・ジャクソンが 「スリラー」 でトップ チャートを賑わし、スティーブ・ジョブスがアップルを追い出された年でした。そして、ソフトウェア開発者が、Windows API とデスクトップ アプリケーションのプログラミング モデルに初めて触れた年でもありました。

このプログラミング モデルの寿命の長さには目を見張るものがあります。四半世紀を超えて、この惑星の最大のビジネス エコシステムの中心となるまでに成長しました。今日では Win32 として知られる API ですが、これも地球上で最大になるまで成長しました。300 個程度のメソッドからスタートして、3 桁も大きくなるほどに拡大しました。個人では、その一部分ですら理解できないほどになってしまいました。私も、そんな無駄な努力はすっかり諦めました。

ですから、Windows 7 がリリースされた直後の 2009 年秋、古い友人である Kyle Marsh と鉢合わせし、マイクロソフトが Windows 8 用にネイティブ アプリ開発を再活性化する計画があることを聞いたとき、私は熱心に耳を傾かせざるを得ませんでした。その数か月後、マイクロソフトは Windows Runtime (WinRT) と呼ばれるまったく新しい API を発表しました。これは Win32 の置き換えを目指すものではありません。デスクトップ アプリケーションは引き続きサポートされます。これは、タッチ中心で、皆が夢中になれるような、そして、新興勢力であるさまざまなモバイル プラットフォームに対抗できるようなアプリを作るためにゼロから作られた新しいプログラミング モデルなのです。システムの観点というよりも、アプリ開発者の視点からデザインされています。よって、主要な機能は、数百行・数千行ではなく、数行のコードで実装できるようになっています。いろいろな言語から直接ネイティブ アプリ開発ができるようにもなっています。これは、なんらかの中間的フレームワークが更新されるのを待ったりすることなく、開発者はすぐにオペレーティング システムの機能を利用できることを意味します。また、Windows 8 のアプリを書くときに、使い慣れた言語を選択できることも意味します。

これはとても刺激的なニュースでした。なぜなら、このようにマイクロソフトが Windows のプログラミング モデルに大きな変更を加えたのは、1990 年の初期のComponent Object Model (COM) と呼ばれるテクノロジー以来だからです。これはまさに Win32 API が爆発的に巨大化するきっかけとなりました。その当時の私の役目は、COM をデベロッパー コミュニティに紹介することでした。『Inside OLE』 (Microsoft Press, 1993 and 1995) という書籍の 2 つの版を執筆し、終わりなき旅と思われるくらいあちこちのカンファレンスで講演をし、パートナー企業を訪れ、といったことをしました。まさに 「歴史は繰り返す」 です。私も戻ってきました!

2010 年の 12 月、私はまさに最初の Windows ストア アプリを書くべく、小さなチームの一員として作業をしていました。ようやく動き始めた WinRT API を使ってアプリを作っていたのですが、メモ帳がお気に入りのテキスト エディタで、難解な PowerShell のスクリプトを使って、邪悪なハッシュ文字列を手でタイプしながら、コマンド ラインでアプリを動かしていました。ドキュメントは不十分な機能仕様書しかなく、実績と信頼の window.alert や document.writeln 以外のデバッガーはありませんでした。実際に、HTML、CSS、JavaScript は F12 デバッグ ツールを使いながら、できるだけブラウザーで実装し、最後に WinRT 固有のコードを追加するという作業をしていました。というのも、ブラウザーはそれらの API を実行できなかったからです。動いたとき、私たちがどれほどうれしかったか想像できるでしょう!

幸いにも、Visual Studio Express や Blend for Visual Studio といったツールはすぐに使えるようになりました。2011 年の春ころには、Windows 8 のアプリの作り方について、マイクロソフト社内の人にトレーニング セッションを行っていましたが、プロセスはずっと楽しいものになり、生産性も格段に向上しました。実際、2010 年の終わりころは Hello World を画面に表示するだけで数週間もかかりましたが、2011 年の秋には、ほぼ同じ時間でストアに提出できるアプリをパートナー会社と協力して作ることができるようになっていました。

このように、期待に応えて、素晴らしいアプリを数週間で作ることが可能になりました。この本や http://dev.windows.com にあるリソースが、あなたにも同じことができるように、そしてあなた自身のデザインを刷新するためのお役に立つことを願っています。

想定する読者

この本は HTML5、CSS3、JavaScript を使って Windows ストア アプリを作るための本です。私たちの目的は、これらのWebテクノロジーを Windows 8 プラットフォームに適用することです。プラットフォーム固有のこともあるかもしれませんが、Webテクノロジーの詳細を掘り下げるようなことはしません。読者の方がこれらの標準にある程度精通していると仮定しています。アプリ レイアウトの中心となる CSS グリッドのように、目立った分野についてもカバーします。ただ、それ以外の多くのことについては適切なリファレンスをご自身で見つけられると信じています。

また、あなたが少なくとも2つの理由から Windows 8 に興味をもっているものと考えました。まず、できるだけ早く事情に精通したいと思っていること、おそらく Windows ストアへ早期に何らかの足掛かりを築くことです。その目的のため、アプリ開発で最も大切なことを最初の章にまとめました。「始めてみよう」の章では、ツール、API、その他のコアとなるプラットフォームの機能の使い方を説明します。一方で、プラットフォームの機能を最大限活用するような、できるだけ良いアプリを作りたいとも考えているでしょう。この目的のためには、何ができて、どう最適化すればよいかについて、わかりやすく書くように努力しました (Windows ストアに関しては第 17 章で説明しています)。

多くの見識は実際の開発者と実際のアプリを作ることで得ることができました。Windows Ecosystem チームの一員として、自分やチームメイトが最前線に立ち、最初のアプリを Windows ストアに用意しました。それらのアプリ用にちょっとしたコードを書いたり、バグを調査したり、Windows のエンジニアリング チームのメンバーとデザイン、コード、パフォーマンス レビューといったことを行ったりしました。ですから、この本での私のゴールは、それらの経験をできるだけ多くの開発者に (もちろん、あなたにも!) 届けることなのです。

必要なもの(サンプルコード など)

この本を読み進めるにあたり、Windows SDK やツールとともに Windows 8 を開発用マシンにインストールしてください。その他多くのリソースやツールは、Windows ストア アプリ プログラミングの開発者向けダウンロードにリストされています。Microsoft Visual Studio Express 2012 for Windows 8 は特に必要です。この本では他のツールも適宜使用します (この本のスクリーンショットは、Visual Studio をデフォルトの濃色の配色テーマから淡色テーマに切り替えてあります。これは白地の本に合わせたためです)。

また、このページにリストした 「Sample app pack (サンプル アプリ パック)」 を必ずダウンロードしてください。または、Windows 8 app samples から SDK の JavaScript サンプルをダウンロードしてください。以降の章では、このサンプルから多くを引用します。ソース コードの一部を使っていろいろなタスクについて説明します。

この本の 2 番目のゴールとしては、膨大なリソースにおいて、どこに何があるか把握するお手伝いをすることです。これまでの Windows リリースの中でも、サンプルの充実ぶりは明らかに一番です。あなたのアプリでやりたいこととまさに同じことが、もしくは若干修正するだけで目的を達成するようなコードが、サンプルのどこかに見つかることも少なくないでしょう。ですから、私はすべての JavaScript サンプルに目を通し、何をしているか理解して、適切な箇所で参照するようにしました。これによって、あなたが自分で探す手間を省けるとともに、より生産的に開発できることを願っています。

SDK のサンプルに変更を加えている場合もあります。多くの場合は機能を追加していますが、バグを修正したり、サンプルの完成後にもっと良い考えを思いついてそれを実装したりしました。これらの変更は、この本に付属のコンテンツとしてまとめてあります。以下のリンクからダウンロードできます。

http://go.microsoft.com/FWLink/?Linkid=270057

付属のコンテンツには、私自身が作ったコンテンツも含まれています。本書では 「例」 として言及しますが、これらは公式な SDK コンテンツではないことをご理解ください (修正したサンプルもこの本の一部だということを明確にするため、その旨をわかるようにしています)。SDK のサンプルに含まれていない部分を補うため、また、サンプルが複雑な場合にその機能を簡略化するためのデモとして、いくつかの例を実装しました。「Here My Am!」 というアプリのさまざまなバージョンも含まれています。第 2 章で実装を開始しますが、この本の章を追うごとに磨きをかけていきます。最後には複数の言語へのローカライズも行います。

これらに加え、Windows 8 samples gallery や Visual Studio sample gallery も参照してみてください。他の開発者によるプロジェクトを見たり、検索したりすることができます。あなたも投稿することができます! (ギャラリーはマイクロソフトのすべてのプラットフォームを含むので、Visual Studio のサイトでは、Windows ストア アプリでフィルタリングするようにしてください。) もちろん、独自にプロジェクトを共有している開発者もたくさんいることでしょう。

この本では、折に触れてWindows 8 アプリ開発者ブログの投稿記事を参照します。ここでも良いリソースが見つかります。また、Windows Store 開発者向けブログもお勧めです。あなたのビジネスに関連するようなお知らせを見つけることができます。どのようにマイクロソフトがオペレーティング システムの刷新に取り組んだのかといった、Windows 8 の裏話に興味があるのであれば、Building Windows 8 ブログもご覧ください。

書式について

この本を通して、コードの中に現れる、変数名、プロパティ名、API 関数、名前空間などの識別子は色付きの固定幅フォントの書式で記述します。たとえば Windows.Storage.ApplicationData.currentの ような感じになります。このように、名前空間全体を含む完全修飾名を使った場合は、その名前が長くなりがちなので、行をまたぐときはハイフンを使って改行することがあります。Windows.Security.Cryptography.CryptographicBuffer.­-
convertString-­ToBinary といった感じです。できるだけ、ドットの後ろか単語の間で改行するように試みました。いずれにせよ、ハイフンは ID の一部ではありません。ただし、CSS (-ms-high-contrast-adjust)、および aria-label や data-win-options のような HTML の属性ではハイフンも使用できます。

ときどき datarequested のように違う色の識別子を目にすることがあるかもしれませんが、これは Windows Runtime オブジェクトからのイベントであることを示しています。この場合、第 3 章の終わりで説明しますが、JavaScript でイベント リスナーを追加・削除するときに特別な配慮が必要となります。これに関しては折に触れて言及しますが、色を変えた目的は、議論の流れを遮ることなく、配慮が必要なことを思い出してもらうためです。

謝辞

いろいろな意味で、これは私の本ではありません。これは、Windows 8 アプリを書く上で、私自身の経験や意見を述べたものではありません。私はストーリーの語り手の役割を果たしたというべきでしょう。何千もの Windows チームの人々が情熱をもって献身的に作業することで、継続したインスピレーションが生まれ、それがストーリーになったのです。カスタマー リサーチ、仕様書の記述、実装、テスト、詳細なドキュメント化、日々のビルド管理、一般公開、これまで見た中で最良のサンプルの実装、このような作業なしに本書は成立しません。実際に、いくつかの章の記述は、機能をデザインして実装した人々との会話から直接引用しています。彼らと話ができたこと、そして、彼らの理想に向けた情熱を代弁してあなたにお届けできることをうれしく思います。

このプロジェクトを長期間にわたって支えてくれた多くの人達にも触れさせてください。まず、Chris Sells です。この本の最初のバージョンを一緒に執筆しました。今は Telerik で開発の指揮を執っています。一緒に仕事をした Mahesh Prakriya、Ian LeGrow、Anantha Kancherla、Keith Boyd とそれぞれのチーム メンバー、ならびに Keith Rowe、Dennis Flanagan、Ulf Schoo といった上司の下で働けたことに感謝します。

Microsoft Press の Devon Musgrave にも感謝します。多くの時間を使って、多くの章を何度も編集してくれました。私のチームメイト、Kyle Marsh、Todd Landstad、Shai Hinitz、Patrick Dengler、Lora Heiny、Leon Braginski、Joseph Ngari は、実世界のパートナーとの仕事で学んだ貴重な経験を共有してくれました。Microsoft Japan の田中 賢一郎にも特に感謝しています。各章のレビューをいつも最初に返してくれ、私が頼んだどんなことも、いろいろなプラットフォームのことについて喜んでリサーチしてくれました。どうもありがとう!第 17 章で Here My Am! アプリのローカライズに協力してくれた International Windows Ecosystem チームのメンバー、Gilles Peingné、Sam Chang、Celia Pipó Garcia、Juergen Schwertl、Maaten Van De Dospoort、Li-Qun Jia、(そしてヘブライ語のShai Hinitz) にもお礼申し上げます。

以下の人達もこの本に貢献してくれました。各章のレビュー、質問への返答、詳細な議論などです。みなさんの時間とご協力に感謝します。

Shakil Ahmed

Scott Dickens

Kishore Kotteri

Daniel Oliver

Sam Spencer

Chris Anderson

Tyler Donahue

Victoria Kruse

Jason Olson

Ben Srour

Erik Anderson

Brendan Elliott

Nathan Kuchta

Elliot H Omiya

Adam Stritzel

Axel Andrejs

Matt Esquivel

Elmar Langholz

Larry Osterman

Shijun Sun

Tarek Ayna

David Fields

Bonny Lau

Rohit Pagariya

鈴木 聡

Art Baker

Erik Fortune

Travis Leithead

Ankur Patel

Simon Tao

Adam Barrus

Jim Galasyn

Chantal Leonard

Harry Pierson

Henry Tappen

Megan Bates

Gavin Gear

Cameron Lerum*

Steve Proteau

Chris Tavares

Tyler Beam

Derek Gephard

Brian LeVee

Hari Pulapaka

David Tepper

Ben Betz

Marcelo Garcia Gonzalez

Jianfeng Lin

Arun Rabinar

Sara Thomas

Johnny Bregar

Sunil Gottumukkala

Tian Luo

Matt Rakow

Ryan Thompson

John Brezak

Scott Graham

Sean Lyndersay

Ramu Ramanathan

Bill Ticehurst

John Bronskill

Ben Grover

David Machaj

Ravi Rao

Stephen Toub

Jed Brown

Paul Gusmorino

Mike Mastrangelo

Brent Rector

Tonu Vanatalu

Vincent Celie

Rylan Hawkins

Jordan Matthiesen

Ruben Rios

Jeremy Viegas

Raymond Chen

John Hazen

Ian McBurnie

Dale Rogerson

Nick Waggoner

Rian Chung

Jerome Holman

Jesse McGatha

Nick Rotondo

David Washington

Arik Cohen

Scott Hoogerwerf

Matt Merry

David Rousset

Sarah Waskom

Justin Cooperman

Stephen Hufnagel

Markus Mielke

George Roussos

Marc Wautier

Michael Crider

Sean Hume

Pavel Minaev

Jake Sabulsky

Josh Williams

Priya Dandawate

Mathias Jourdain

John Morrow

Perumaal Shanmugam

Lucian Wischik

Darren Davis

Damian Kedzierski

Feras Moussa

Edgar Ruiz Silva

Kevin Michael Woley

Jack Davis

Suhail Khalid

John Mullaly

Karanbir Singh

Charing Wong

Ryan Demopoulos

Daniel Kitchener

Jan Nelson*

Peter Smith

Michael Ziller

* Jan と Cameron に対しても、わざわざワシントン州レドモンドから車を運転して、その時に住んでいたオレゴン州のポートランドまで私を訪ねてくれて、タイ料理のランチを食べながらローカライズや多言語アプリについて話し合ったことについて感謝しなければいけません。

コンピューターの前に長時間座り続けたために増えてしまった体重にも別れを告げたいところです!みなさんも、私と同じように普段の運動を再開することを楽しみにしていることでしょう。

最後に、私の妻 Kristi と息子 Liam (6歳) にも特別に感謝の意を表します。ありがとう。深夜や早朝に家からオフィスへ出かけることを気にかけず、いつも優しく一緒にいてくれました。

正誤表と本のサポート

この本と付属のコンテンツが正確であるようにと最大限の努力をしましたが、この本が出版された後に報告された誤記に関しては oreilly.com の Microsoft Press のサイトに列挙します。この本を http://microsoftpress.oreilly.com で検索し、そのページの [View/Submit Errata] リンクをクリックしてください。リストにない誤記を見つけた場合は、そこから報告することができます。

さらにサポートが必要なときは、Microsoft Press Book Support (mspinput@microsoft.com) 宛にメール (英語) をお送りください。

上記のメール アドレスではマイクロソフトのサポート サービスは受けられません。開発者サポートに関する情報は、Windows デベロッパー センターの開発者向けサポート ページにあります。得に、Building Windows Store apps with HTML5/JavaScript フォーラムがよいでしょう。また、Stack Overflow にも windows8winrt タグに関して活発なコミュニティがあります。

お聞かせください

Microsoft Press では、あなたにご満足いただけることが最優先事項です。フィードバックは貴重な財産です。この本に対する感想をどうぞお聞かせください。

https://aka.ms/tellpress

アンケートは短いものです。すべてのコメントとご意見に目を通します。ご協力よろしくお願いいたします!

連絡を取り合いましょう

会話を続けましょう。Twitter (https://twitter.com/MicrosoftPress) もやっています。また、Kraig の動向については http://www.kraigbrockschmidt.com でチェックできます。

Comments (0)

Skip to main content