・The microservice design pattern The microservice design pattern is fit to the agile development process and […]
In previous article, I described that a Flyout control composed by a TextBox control and a […]
When you provide any list, it’s items would not enough for user, not always. Accordingly, a […]
「タイルとバッジのライフサイクル実装(Azure)編」で、Microsoft Azure Notifications Hubの通知を受けとる方法を解説しました。ここでは、Microsoft Azure Mobile Serviceを使って認証を行う方法を解説します。この認証により、クライアントがタグを登録してチャンネルを開いた後、タグをMicrosoft Azure Mobile Service側で管理することができます。タグをMicrosoft Azure Notifications Hubでチャンネル単位で管理するのでなく、Microsoft Azure Mobile Serviceでユーザー単位で管理するための準備です。Microsoft […]
Windows 8.1からタイルの種類も増え、アプリケーションの独自性や機能などを表現しやすくなったので、ユーザー環境のスクリーンサイズやタイルサイズを考慮したデザインの自由度が向上しました。しかしながら、タイルやバッジの設置は、アプリケーション作成時に1度しか作業しない為おろそかになりがちな作業です。バッジとタイルのこれらの設定は、工数やフローの複雑さに大きく関係するため、開発者はMicrosoft Azure Notification Hubsを含めた設計に関わる必要があります。 ・通知内容と通知先アプリケーションの目的や機能と通知内容、通知先、ライフサイクルの関係 バッジを含むタイルのUIデザインを設計する際は、通知のライフサイクルを考慮することが重要です。さまざまな検討要素が依存関係を持つからです。 検討要素はいくつかありますが、「ロゴとアプリケーション名のタイルへの配置」「ライブ・タイル、セカンダリ・タイル、サイズ」「バッジの必要性」「 通知内容と通知先、ライフサイクル」「アプリケーションの目的と機能」は依存関係にあることに注意してください。 そのため、まず「アプリケーションの目的と機能」が明確化されている必要があります。業務アプリケーションであっても要求仕様が明確化されていないケースが多々あり、要件定義が機能の羅列になっているケースすらあります。要求仕様は、要求仕様書のような大げさなものである必要はありません。まずは「バッジが必要かどうか」を検討できる範囲の要求仕様が明確化されていればいいわけです。要求が明確化されていてれば、続いて「セカンダリ・タイルが必要かどうか」を検討できますし、「ライブ・タイルを使うべきかどうか」「どのタイル・サイズが適切か」が明確化されていきます。そうすることで「バッジ・タイルの設計、ロゴの配置」ができるようになるので、検討の順番が重要だということを理解してください。 通知の必要性:そのアプリケーションには個別通知や全体通知が必要ですか? アプリケーションに認証機能がある&パーソナライズが目的である → 個別通知が必要 アプリケーションの機能拡張やデータの追加・更新など → […]
「タイルとバッジのライフサイクル実装(クライアント)編」で、セカンダリ・タイルをアプリケーションバーの[ピン止め]ボタンから作成する処理の解説を行いました。ここでは、Microsoft Azureからの通知を受け取る方法を解説します。サンプルを動かすためには、ここでの解説に則って、Micorosoft Azure上で各種定義を行う必要があります。公式サンプルやドキュメント「Azure Notification Hubs によるユーザーへの通知」、「通知ハブの使用」も併せて参考にしてください。 サンプル・ソリューション ・開発環境 サンプル・ソリューションはユニバーサル・アプリで作成してあります。ただし、ここでの解説の内容は非ユニバーサル・アプリにも応用ができる解説を行っています。 Windows Store account Azure account (get free […]
タイルとバッジのライフサイクル設計編での設計に従って、アプリケーションにセカンダリ・タイルやバッジが必要と判断された場合は、それらのガイドラインに則って「ロゴとアプリケーション名のタイルへの配置」を実装していきます。バッジの実装についてはタイルとバッジのライフサイクル運用(タグの管理)編で解説しています。 サンプル・ソリューション ・タイルとバッジのガイドライン バッジが必要なアプリケーションは、ライブタイルが必要なアプリケーションである可能性があります。バッジのみで更新情報を伝えられる場合はライブタイルを使用する必要はありませんが、情報の更新頻度が高くユーザーがひとつひとつの通知を確認する可能性よりも、一定の間隔の複数の通知を確認する可能性が高いような場合などは、MSDNのタイルとバッジのガイドラインに則って、ライブタイルの使用を検討します。 ◆ライブ・タイルのアンチパターン ×コンテンツ提供が目的でない機能提供中心のアプリ(電卓など) ×最新の状態以外の通知が無いアプリ ×広告やスパムを通知する ×ブランド名やロゴをアニメーションのアイテムのひとつに指定する ライブ・タイルは、複数の通知を連続して表示します。たとえば、ユーザーがYoutubeの複数のチャンネルの更新情報に関心がある場合は、それぞれのチャンネルの更新情報を連続して表示します。このケースで、特定のチャンネルを別途スタートメニューに表示したい場合はセカンダリ・タイルを使います。前述のタイルとバッジのライフサイクル設計編での設計がしっかりなされている場合、ライブ・タイルのサイズ設計は、セカンダリ・タイルのサイズ設計と同じになります。セカンダリ・タイルのガイドラインのサイズ設計をチェックしてください。 ◆ワイドまたは大サイズのタイルやロゴを使う場合の目安 ✔通知を使う ✔要約通知のみではない ✔詳細情報をタイルに表示する ✔週に1回以上の通知が見込まれる ✔タイルの通知表示が複数ある […]
・ワークフローのどの部分をソース管理ツールに任せるか 社員が上流設計フェーズに参加できる能力としては、ALMを目的としているTFSでPLMを一緒に行うわけではないことを理解し、PLMの成果物やイテレーションを理解して、参加者としてPLMのタスクのステータスを推進していく必要がありました。PLMがTFS + MS Projectで管理されていようが、Git + Redmineで管理されていようが、PLMで定義された成果物に対するタスクのステータスを推進させていけば良いということになります。PLMのタスク化や成果物の定義などは、その組織や会社における製品戦略とのかかわりが強く、製品戦略における汎用的な手法(マーケティングなど)は、ALMのプロセス推進とは全く別物だからです。 一方、構築フェーズや運用フェーズでは、社員はALMの成果物とイテレーション、成果物に対するタスクのステータスを定義し、管理者として社外協力者やアライアンス、ベンダーなどをコントロールしていく必要があります。 必要な作業はロールの洗い出しと責務の定義、イテレーションの計画とイテレーション内のワークフローを構成するロールを策定することです。それらはTFSの運用設計であり、TFSにそのような機能があるわけではないからです。 前述(「プロセスを社内のワークフローに落とし込む」)のとおり、ロールには「プログラマー(コーダーを想定)」と「SE(コーダーとペアプログラミングを組む相手を想定)」および「ビルド管理者(開発責任者を想定)」を設定しました。このロールがワークフロー内でステートを推進していきます。イテレーションはワークフローのステートが完了まで行くことと換言できます。ステートが完了まで行くことで振り返りができ、次のイテレーションにフィードバックできるからです。CMMIの場合、確立されたプロセスに則った実践が、メンバーの習熟度を向上させるのに対して、Agileではイテレーションを繰り返すことでプロセスを完成させていく(または時代に合わせて変化させていく)というアプローチが採られることに注意が必要です。それが、Agile Unified ProcessではUnified Processを組織に合った形に合致させていくことを目的としているため、必ず次のイテレーションにフィードバックさせる必要があるということです。 このイテレーション内で、TFSの機能をどのように使い、運用としてどのようにプロセスを推進させていくかをブランチ機能や作業項目、ワークアイテム等のTFSの機能を使って解説していきます。 まず、Main、Dev、Releaseのブランチを作成します。この手順はVersion Control […]
・プロセスを社内のワークフローに落とし込む ユニファイド・プロセスをベースに策定した試験的なプロセスを社内のワークフローに落とし込む作業には、要求~基本設計までの上流設計フェーズ、詳細設計~試験までの構築フェーズと運用フェーズに分割して提案しました。社内のワークフローをAgileに適用する際、イテレーションが同じロールで繰り返されることが習熟度につながっていき、プロセスの確立につながると考えたからです。また、このロールにキャリアを連動させることは、社員教育にもつながるという提案をしました。提案先の企業の社内ワークフローのロールとして、社員による上流設計フェーズと協力会社による構築フェーズおよび運用フェーズが定着していたためです。 つまりここでいう社員教育とは、システム調達(プロキュアメント)のキャリアラダー・プランを策定することです。社員によるTFSの管理委託ができるようになることではなく、ALMを社内に定着させ、システムの品質を管理し、ベンダーを選定する能力とコントロールする能力を開発することです。上流設計フェーズでは自らが設計に参加できる能力を持ち合わせ、構築および運用フェーズでは管理する能力を持ち合わせる必要があったため、フェーズによってTFSを使う目的が異なることを訴求することは重要でした。多くの企業において、社員のキャリア開発プランは社内のさまざまなワークフローと深く結びついてます。その企業のキャリア開発に則ったプロセスでなければALMは社内に定着しません。 上流設計に参加できる能力は、ALMの視点でのみ考えれば、Agile Unified Processにおけるイテレーションとその成果物の構成を理解することでタスクのステートを推移させていくことが可能です。上流設計フェーズのイテレーションとその成果物の構成を定義する作業については、製品戦略などと深くかかわるためPLM側の責務とし、ALMの提案書では、構築、運用フェーズにおけるイテレーションとその成果物の構成を定義する作業を提案しました。 TFSには7種類(以降に「」で括ってあります)のチケット(TFSでの呼称は「ワークアイテム」)があります。これらの種類は組織やプロジェクトに応じてすべて使っても良いし、いくつかの種類にまとめてもかまいません。提案した方法は、いくつかの「タスク」と「バグ」、「テスト」で構成された「機能」があり、その「機能」のいくつかと複数の「テスト」で構成された「ユーザーストーリー」があり、そのいくつかの「ユーザーストーリー」と複数の「テスト」および複数の「懸案事項」があるイテレーションを構成するように提案しました。TFSの7種類のワークアイテムにはすべて「状況」(ステート)があるため、このステートを管理することができます。イテレーションを通して、ワークアイテムの種類を統合していくなり、それぞれのステートを変更していくなりといった規律の確立こそが構築、運用フェーズにおけるプロセスの管理であることを訴求しました。 前述のコミットのワークフロー内でのステートの変化を以下のように提案しました。 ワークフロー内のステートの変化
業務用かどうかに関わらず、ソフトウェアの開発ではユニファイド・プロセスが重要であると考えます。ユニファイド・プロセスはAgileやScrum、Extream Programming等と相反するものではなく、ユニファイド・プロセスがカスタマイズされたものであると考えられるからです。元来、ユニファイド・プロセスはプロジェクトや組織によってカスタマイズされることを期待しており、適切なカスタマイズは、ユニファイド・プロセスの導入効果を最も発揮する重要な手法です。 業務用ソフトウェアの場合、このプロセスの単位は大小さまざまであると考えます。大きなひとつの構築プロセスと小さな改修プロセスや機能追加プロセス、技術検証プロセスなどが同時に推進していくことの方が多く、構築がひと段落してから第2フェーズの機能追加、バグ改修といった”裕福な”プロジェクトはそう多くはありません。多くの場合、運用しながら並行して機能追加や既知の潜在バグ改修といったプロジェクト推進が求められます。 このような形態のプロジェクト推進に対応しやすいと思われるのがAgile Unified Processです。Rational Unified Processを簡素化したAgile Unified Processは、規律をベースとするプロセス推進法であり、 Test-Driven Development (TDD)やAgile Modelingなどを含み、それらの作業を簡略化するツールの使用が推奨されています。Agile Unified Processは、大小さまざまな各プロセスの規律がイテレーション後に充足、改修されながら確立されていくため、最初に試験的なプロセスが必要となります。 […]