ソフトウェアアーキテクチャの求め方からC++11プログラミングまで盛りだくさん “プログラミング生放送勉強会 第25回@品川”レポート

2013年8月24日(土)に株式会社マイクロソフトのセミナールームで、コミュニティ「プログラミング生放送(プロ生⁠⁠」によるIT・開発系イベント、プログラミング生放送勉強会を開催しました。その模様をお届けします。

プロ生勉強会は、IT・開発系であればなんでもOKの勉強会です。今回は、ソフトウェアアーキテクチャWindowsストア アプリのUIデザインLeap MotionC++11など多彩な内容となっています。セッションは動画で公開しています。いずれも楽しい内容になっていますので、ぜひ視聴してみてください。

会場の模様。今回は約100名の参加がありました
会場の模様。今回は約100名の参加がありました
コミュニティのキャラクター「プロ生ちゃん」がお出迎え!
コミュニティのキャラクター「プロ生ちゃん」がお出迎え!

ソフトウェアアーキテクチャの求め方

それでは、各セッション内容を簡単に紹介します。株式会社gloops 尾上雅則さん@ugaya40「ソフトウェアアーキテクチャの求め方」です。

流行の設計用語や技術要素を使えば開発がうまくいくわけではありません。必然性のあるソフトウェアアーキテクチャはどのように導き出すのか、尾上さんが実務経験・探究から身に着けたノウハウの紹介です。

「ソフトウェアアーキテクチャの求め方」株式会社gloops 尾上雅則さん
「ソフトウェアアーキテクチャの求め方」株式会社gloops 尾上雅則さん

ソフトウェアアーキテクチャとは?

アーキテクチャという言葉の定義は「万人の合意」は存在しないものとされているが、多くの開発者の関心事として挙げられています。なぜならソフトウェア設計は「複雑すぎる行為」であるためとのこと。

セッションでは、はじめにアーキテクチャ設計とは「ソフトウェア開発に関わるすべての複雑さへの対処」と定義し、順に詳細化して説明し、ソフトウェアアーキテクチャを説明しています。

複雑へのアプローチとして、整理・細部化という「関心事の分離」を行います。アーキテクチャ設計とは、関心事の分離を繰り返す作業となります。ソフトウェアアーキテクチャ設計とは、関心事の分離を繰り返して開発目標となるソフトウェアを分解する作業となります。

ソフトウェアアーキテクチャでの分離された関心事が満たすべき特性としてモジュール化とカプセル化、分離を行う代表的な視点として、製品選定、開発プロセスに対する配慮、設計パターン、言語パラダイムを挙げています。

設計パターンではなく設計視点

次に設計パターンを用いた関心事の分離と、設計パターンのわかりにくさを説明しています。

設計パターンを用いてアプリケーションを分離した場合、例えばMVCによる分離、リポジトリパターンによる分離などがあります。設計パターンとは、分離した結果ではなく、分離する視点が設計パターンとのこと。設計パターンという言葉は害悪であり、混乱した際は、設計視点として考えると良いと説明しています。

セッションでは、続いて実際の分離で使用する視点の例へと進みます。詳しくは動画とスライドを参照してください。

ニコニコ動画:https://www.nicovideo.jp/watch/sm21813008
資料公開場所
プログラミング生放送勉強会第25回@品川で話してきました! - the sea of fertility

Windowsストア アプリケーションのUIデザイン

日本マイクロソフト株式会社 高橋 忍さん@shinoblogaviによる「Windowsストア アプリケーションのUIデザイン」です。

Windowsストア アプリは、これまでのWindowsとは異なるデザインであり、独特のコンセプトや考え方があります。マイクロソフトが勧めているガイドラインをまじえながら考え方、実装方法、注意点を紹介しています。

「Windowsストア アプリケーションのUIデザイン」日本マイクロソフト株式会社 高橋 忍さん
「Windowsストア アプリケーションのUIデザイン」日本マイクロソフト株式会社 高橋 忍さん

マイクロソフトが行きついたUI "Modern Style"

マイクロソフトは、User Experience(UX)が、アプリにおいてもっとも重要なこととして、Windows Vistaの頃から力を入れているとのこと。ユーザービリティテストなどを行い改善し、行きついたひとつの答えのUIがフラットデザインのModern Styleであると紹介しています。

以前はMetroと呼ばれていたデザインで、路線図のように「デザインが目的達成をサポートする」ことがコンセプトとのこと。

コンテンツが最優先のアプリケーションデザイン

Modern Styleの重要な考えが、コンテンツが最優先とのこと。コンテンツがエクスペリエンスの中心、ユーザーがコンテンツに没頭できることがゴールと解説しています。

実現するステップとして次の3つを解説しています。

  • ① 削ぎ落とす
  • ② 構造とリズム
  • ③ 軽快に、滑らかに

余計な装飾、ぼかしやグラデーション、今使わないコントロールやメニューなどを削ぎ落とします。タブレットデザインのガイドラインを中心に画面を作っていきます。

次に、Modern Styleは美しいタイポグラフィの上に成り立ち、コンテンツに構造とリズムを生まれるとのこと。統一感のあるフォントサイズとウェイトによって情報の階層を規定します。

最後は、レスポンスの重要さについてです。処理の速さではなく、処理をする前にフィードバックを行うことが必要とのこと。

動画ではそれぞれ詳しく解説されています。

ニコニコ動画:https://www.nicovideo.jp/watch/sm21812830

Visual C++はC++10.8 ←イマココ

επιστημηさん@epitwitさんの「Visual C++はC++10.8 ←イマココ」です。Visual C++で使えるようになったC++11の新機能についてデモをまじえた解説です。

「Visual C++はC++10.8 ←イマココ⁠⁠ επιστημηさん
「Visual C++はC++10.8 ←イマココ」 επιστημηさん

Visual C++のC++11は、GCC/Clangと比べて正直イケてない?

Visual Studio 2012のVisual C++のC++11対応は、他のコンパイラ(GCC、Clang)と比べると「正直イケていない」が、Visual C++12(Visual Studio 2013 Previewでは、ようやく追いついてきた(のでC++10.8)とのこと。

※)
セッション時の最新はVisual Studio 2013 Previewでした。

他の言語では当たり前? C++11機能

ライブコーディングをまじえてC++11機能の紹介です。セッションでは、次の機能を取り上げています。

  • Delegating constructor
  • Uniform initialization
  • Initializer list
  • Explicit conversion operator

Delegating constructorは、コンストラクタ内から別のコンストラクタの呼び出しです。Java、C#などでは一般的な機能ですが、C++はC++11からできるようになったとのこと。

#include <iostream>
using namespace std;

class cplx{
private:
    double re_;
    double im_;
public:
    cplx(double real, double imag) : re_(real), im_(imag) {
        cout << "cplx(double, double)\n";
    }

    cplx(double real) : cplx(real, 0.0) {
        cout << "cplx(double)\n";
    }

    cplx() : cplx(0.0) {
        cout << "cplx()\n";
    }
};

すべての内容は動画を参照してください。セッションでは、まだできない(実装されていない)内容も少しふれています。

ニコニコ動画:https://www.nicovideo.jp/watch/sm21813057

Leap MotionではじめるNUIプログラミング

森 博之さん@hiroyuki_mori「Leap MotionではじめるNUIプログラミング」です。Natural User Interface(NUI)の概要から、C#によるLeap Motionを使ったNUIプログラミングの紹介です。Leap Motionは、手や指の動作を読み取ることができるデバイスです。

「Leap MotionではじめるNUIプログラミング」森 博之さん
「Leap MotionではじめるNUIプログラミング」森 博之さん

NUI概要

はじめにNUIの説明です。NUIは、ComputingにUIの中で、自然な・直観的な動作で操作できる仕組みや方法のことです。Kinectの登場からよく使われている用語です。Leap MotionもNUIデバイスのひとつに分類できます。

Leap Motionプログラミング

Leap Motionは、手や指の動作を読み取ることができるデバイスです。Windows/Mac OS X/Linux向けのSDKが利用でき、Windowsでは、C++/C#(.NET Framework)/Java/Python/Objective-C/JavaScriptの言語により開発ができるとのこと。

Leap Motionから取得できるデータとして、手の識別、指の識別、指の座標、ツール(手と指以外のオブジェクト⁠⁠、ジェスチャーがあるとのこと。セッションでは、プログラミングで利用する主要なクラスを紹介しています。

上記のデータはFrameと呼ばれるオブジェクトに含まれています。ポーリングまたはコールバックにより取得します。動画・スライドではもう少し詳しい説明と、実演もありますので、ぜひご覧ください。

ニコニコ動画:https://www.nicovideo.jp/watch/sm21812913
資料公開場所
Leap MotionではじめるNUIプログラミングのセッション資料・デモを公開しました。 | もりひろゆきの日々是勉強

ライトニングトーク

全セッション終了後は、ライトニングトークを行いました。タイトルのみ紹介しておきます。こちらも楽しい内容になっていますので、ぜひ視聴してみてください。

ライトニングトーク
ライトニングトーク
  • 自作アプリの宣伝@ZuQ9Nn
  • FlashAir x Node.js = ?@ww24
  • 超一般的(ここ重要)な高校生がJavaを勉強してわかったこと@_kz6
  • イカす Java Xtendのお話します。@azyobuzin
  • コミックマーケットでの携帯電話のお話し@mikan_x
  • お絵かきツールとしての Power Point @shinoblogavi
  • マジ天使! プロ生ちゃんの声をアプリに組み込もう@daruyanagi
ニコニコ動画:https://www.nicovideo.jp/watch/sm21813145

おわりに

今回 参加していただいた皆様、ありがとうございました。今後もプログラミング生放送勉強会は、各地で開催を予定していますので、参加お待ちしています。

プログラミング生放送の最新情報は、プロ生ちゃんのツイートをチェックしてください! プログラミング生放送でも情報を発信しています。

おすすめ記事

記事・ニュース一覧