お手軽ミュージックプレイヤーアプリ(PC用) その1

こんばんは、Reveです。
今回は音(というか音楽)を使ったアプリケーションを作ってみようかと思います。
ただ、アプリといってもAndroidアプリではありませんが汗

【作りたいアプリ】
音楽再生アプリ(PC用)を作るといっても、巷にはそういうソフトが既にいろいろとあり(QuickTime Playerとか、Windows Media Playerとか)、同じようなものをそのまま作るのはつまらないので、最終的には電子工作と絡めてみようかと。

ただ、音楽を再生するといっても、自分の手で1から音楽データの再生処理などをプログラミングしていると途方もありません。
そこで、Processingの出番です。

Processingは、プログラミング言語の一種ですが(この記事などを参照)、普段プログラムを専門としない人でも簡単に奇抜な視覚表現やデジタルなアート作品が作れる代物です。
ライブラリ(便利ツールみたいなもの)も豊富で、プログラムを書く負担を劇的に減らせます。
中には音声処理のライブラリもあるのですが、今回は「Sound」というものを使いたいと思います。

今回では、最新版のProcessing 3.0を使いたいと思います(まだベータ版とのことで、一部バグなどがあるかもしれません)とうとう正式版が公開されたので、そちらをダウンロードしましょう。
ここからダウンロードできます(https://processing.org/download/?processing)。

今回も、開発環境はWindowsという想定でいきます(最近、OSをWindows 10に更新しましたが、今のところ問題は発生してません)。

【音声処理ライブラリ】
今回使う「Sound」ライブラリは、音楽データの再生から音の加工処理まで、いろいろな音声処理をプログラムで可能にするライブラリです。ですが、最新版がバグで動かないため、前バージョン(1.2.1)のものを使用します。

まず、GitHubのこのページ(https://github.com/processing/processing-sound/releases/tag/v1.2.1)からライブラリ(zipファイル)をダウンロードします。

あとは、プログラムを保存するためのフォルダが作成されているため、その中にある「libraries」というフォルダに解凍したファイルを入れるだけで、インストールが完了します。フォルダ未作成の場合は、Processingを起動すれば自動的に作成されます。
SoundLibrary(old).jpg

(ちなみに、上記はバージョン1.5以前のProcessingではおなじみの手法でした。)

【簡単な音楽プレイヤー】
今回はまず、曲を一度だけ再生するプレイヤーを作ります。
プログラムソース(サンプルまま)は以下の通り。

import processing.sound.*;

SoundFile file;

void setup(){
size(640, 360);
background(255);

//Load a soundfile from the /data folder of the sketch and play it back
file = new SoundFile(this, "vibraphon.aiff"); //音楽データのファイル名を指定
file.play();
}

void draw(){
//何もしない
}


これだけ。

とてもすっきりしていると思いますが、いかがでしょうか。
それでは、必要なコードと書き方を順番に説明します。

まずはライブラリを使うことを宣言します。
これはプログラムの一番初めに記述します。

import processing.sound.*;

次に、音楽再生ライブラリのインスタンスを用意します。
これは、プログラム内で音楽再生の機能などを実行する管理者みたいなものです。
どこからでも共通で使用できるよう、関数の外にあらかじめ書いておきます。

SoundFile file;

では、初期設定に入ります。
先ほどのインスタンスに設定を与えていき、音楽の再生を始めます。
設定は、初期化(setup)関数の中で行います。

ここでもっとも重要なのは、音声ファイルの指定ですが、SoundFileメソッドの2番目の引数でファイル名(ここでは"vibraphon.aiff")を指定します。別のファイルを再生したい場合は、再生したいファイル名を代わりに入れてください。なお、フォーマットはWAV, AIF/AIFF, MP3に対応しています。

void setup(){
size(640, 360);
background(255);

//Load a soundfile from the /data folder of the sketch and play it back
file = new SoundFile(this, "vibraphon.aiff"); //音楽データのファイル名を指定
file.play();
}

最後のメインループ(draw)関数ですが、今回は音楽再生については何もしていません。
ここはsetup関数が終了した後に実行される関数で、プログラムが終了するまで繰り返し実行されます。
今後は必要に応じて、ここにも処理を書いていきます。

void draw(){
//何もしない
}


では、ここで再生する前に、音楽ファイルを追加しましょう(追加しないとエラーになります)。
再生したい音楽ファイルをProceessingの上にドラッグすると、コピーが自動的にプログラム(を保存している場所)に作られます。
ファイルは、プログラムを保存しているフォルダの中に「data」というフォルダが作成され、その中に保存されます。
CopyData_Program.jpg

必要なデータを入れたら、後はプログラムを実行するだけで音楽が再生されます。
実行の際は、開発環境の再生ボタンのようなボタンを押せばOKです。

【まとめ】
いかがでしょうか。案外あっさりと音楽プレイヤーが作れたかと思います。
しかし、まだ音楽プレイヤーというには機能が少ないため、次はもう少しライブラリを駆使して機能を付け加えたいと思います。

今回はこの辺で(・ω・)ノシ

続きを読む

テーマ : ソフトウェア開発
ジャンル : コンピュータ

行列によるフィボナッチ数列の項の計算(2)

こんばんは、Reveです。
皆さんお待ちかね、前の記事で取り上げた、行列でのフィボナッチ数列の計算をC#で実装するよ。
そういえばずっとほったらかしでしたね(・ω<)
え、誰も待ってない…だと…。

という茶番は置いといて、さっそく解説に入ります。

【おさらい】
プログラムの前に、考え方を確かめたい方はこちら

【プログラミング】
では、いよいよプログラミングに取り掛かりましょう。
まずはサンプルを。

using System;
using System.Collections.Generic;

namespace Fibonacci1
{
class Program
{
//2次元行列の積算
//行列a, bの a×b を求める
//引数は、行列:a, b、計算する桁数:d
static int[,] multMtrx(int[,] a, int[,] b, int d)
{
//行列の行数と列数
int Ni = a.GetLength(0), Nj = b.GetLength(1), Nk = b.GetLength(0); //多次元配列の長さはGetLengthで求める

int[,] rslt = new int[Ni, Nj]; //結果を格納する多次元配列
int dgt = (int)Math.Pow(10, d); //下何桁まで求めるか(10のd乗より下の数まで)

//行列bを転置する
int[,] bt = new int[Nj, Nk];
for(int i = 0; i < Nk; i++)
{
for(int j = 0; j < Nj; j++)
{
bt[i, j] = b[j, i];
}
}

int sum = 0; //各要素での計算結果を入れる変数
for(int i = 0; i < Ni; i++) //行列aの行数
{
for(int j = 0; j < Nj; j++) //行列bの列数
{
sum = 0;

for(int k = 0; k < Nk; k++) //行列bの行数
{
sum += a[i, k] * bt[j, k];
}

rslt[i, j] = (sum < dgt) ? sum : (sum % dgt);
}
}

return rslt;
}

//2次元行列の高速べき乗の計算
//指数部を2進数的に分解して累乗計算する
static int[,] powMtrx(int[,] a, int n)
{
//行列の計算結果の初期化
int[,] rslt = new int[a.GetLength(0), a.GetLength(1)];
//最初は単位行列にしておく
for(int i = 0; i < a.GetLength(0); i++)
{
rslt[i, i] = 1;
}

//べき乗計算
while(n > 0)
{
if ((n & 0x01) == 1) rslt = multMtrx(a, rslt, 3);
a = multMtrx(a, a, 3);
n >>= 1;
}

return rslt;
}

static void Main(string[] args)
{
//入力データの個数
int num = int.Parse(Console.ReadLine());

//求めるフィボナッチ数列の項数
Dictionary<int, int> dat = new Dictionary<int, int>();
for (int i = 0; i < num; i++)
{
try
{
dat.Add(i, int.Parse(Console.ReadLine()));
}
catch(FormatException ex) //入力データの変換エラー
{
//Console.WriteLine(ex.ToString());
//Console.WriteLine("数値を入力してください");
--i;
continue;
}
}

//配列を昇順に並べ替え
List<KeyValuePair<int, int>> lst = new List<KeyValuePair<int, int>>(dat);
lst.Sort((x, y) => x.Value - y.Value); //ラムダ式で、(前の値 < 後の値)となるように設定

/*
//デバッグ用
foreach (KeyValuePair<int, int> pair in lst)
{
Console.WriteLine("{0} =>{1}", pair.Key, pair.Value);
}
* */

//行列でフィボナッチ数列の項数を求める
//前回の計算結果を記憶しておき、その結果とべき乗の結果を掛け合わせる
int[,] initArr = new int[,] { { 1, 1 }, { 1, 0 } }; //フィボナッチ数列の最初
int[,] tempArr = new int[,] { { 0, 0 }, { 0, 0 } }; //途中の計算結果を暫定的に記憶する
int[,] fib = new int[,] { { 1, 1 }, { 1, 0 } }; //前回の計算結果

int temp = 0; //前回計算した項
int[] rslt = new int[num]; //計算結果
foreach(KeyValuePair<int, int> pair in lst)
{
//フィボナッチ数列の計算
tempArr = powMtrx(initArr, pair.Value - temp); //新たに掛け合わせる行列をあらかじめ求める
fib = multMtrx(fib, tempArr, 3); //前回の結果と掛け合わせる
rslt[pair.Key] = fib[1, 1]; //右下の数値が求める項になる

temp = pair.Value;
}

//計算結果の出力
for(int i = 0; i < num; i++)
{
Console.WriteLine(rslt[i]);
}
}
}
}


コードが少し長くなってしまいましたので、とりあえず概略から。

このプログラムは、以下の3つから構成されています。

1. 行列の積を計算するメソッド
2. 行列のべき乗を計算するメソッド
3. 指定のフィボナッチ数列の項数を下3桁で求めるメソッド(メインメソッド)

プログラムの流れはこんな感じ

1. メインメソッド内で標準入力(キーボード)から求めるフィボナッチの項を指定。その際、 最初に入力データ数を与え、その後に求める項数を全て入力
2. フィボナッチ数列の計算のため、行列べき乗の計算メソッドを呼び出す(内部で行列の積を求めるメソッドを利用)
3. 指定したすべての項数に対して、上の操作を繰り返してフィボナッチ数列の項を求める


また、行列は多次元配列で表現しています。
C#では、多次元配列と配列の配列(ジャグ配列)は明確に区別されています。
今回は行列の計算であり、行ごとの列数は変わらないので、多次元配列を選びました。

では、それぞれのメソッドについて解説します。

1. 行列の積を計算するメソッド

static int[,] multMtrx(int[,] a, int[,] b, int d)
{
//行列の行数と列数
int Ni = a.GetLength(0), Nj = b.GetLength(1), Nk = b.GetLength(0); //多次元配列の長さはGetLengthで求める

int[,] rslt = new int[Ni, Nj]; //結果を格納する多次元配列
int dgt = (int)Math.Pow(10, d); //下何桁まで求めるか(10のd乗より下の数まで)

//行列bを転置する
int[,] bt = new int[Nj, Nk];
for(int i = 0; i < Nk; i++)
{
for(int j = 0; j < Nj; j++)
{
bt[i, j] = b[j, i];
}
}

int sum = 0; //各要素での計算結果を入れる変数
for(int i = 0; i < Ni; i++) //行列aの行数
{
for(int j = 0; j < Nj; j++) //行列bの列数
{
sum = 0;

for(int k = 0; k < Nk; k++) //行列bの行数
{
sum += a[i, k] * bt[j, k];
}
rslt[i, j] = (sum < dgt) ? sum : (sum % dgt);
}
}

return rslt;
}

m×l行列とl×n行列をかけて、m×n行列を求めます(2次元行列のみ)。
引数は、任意の2次元行列を二つと、下何桁を求めるかの桁数です(CodeIQで下3桁までという制約があったため)。
なお、1番目の行列の列数と2番目の行列の行数は揃える必要があります(エラー対策はありません)。

処理内容は、まず2番目の行列(B)を転置した行列(Bt)を求めて、それと1番目の行列(A)の積を求めます。
というのも、コンピュータアーキテクチャ的には、アドレスが近い場所にアクセスするほうがより高速に処理できます。
普通に計算すると、後ろの行列(の変数)は飛び飛びに参照しなければなりませんが、転置しておくと隣接した場所を参照して計算できるので、行列の計算ではしばし利用されます。
MultiplyTransposedMatrix.jpg
さらに、行列の要素を計算する際も、わざわざ配列にアクセスして足していくよりも、あらかじめ計算結果を別の変数に入れておき、最後に答えを入れる変数に代入するほうが更に処理時間を短縮できます。
(ですが、C#の最適化だとどうなるか、測定してないので分かりませんが(汗)そもそも、.NETのガベージコレクションだとこれが有効かもちゃんとわかってはいませんが...orz)

2. 行列のべき乗を計算するメソッド

static int[,] powMtrx(int[,] a, int n)
{
//行列の計算結果の初期化
int[,] rslt = new int[a.GetLength(0), a.GetLength(1)];
//最初は単位行列にしておく
for(int i = 0; i < a.GetLength(0); i++)
{
rslt[i, i] = 1;
}

//べき乗計算
while(n > 0)
{
if ((n & 0x01) == 1) rslt = multMtrx(a, rslt, 3);
a = multMtrx(a, a, 3);
n >>= 1;
}
return rslt;
}

1.の行列積を求めるメソッドを使い、任意の行列のべき乗を求めます(もちろん2次元行列のみ)。
引数は、任意の行列とべき乗の指数です。

べき乗の計算に関しては、この記事のように指数を2進数的に分解して処理します。参照の記事では整数でしたが、今回のように行列でも応用できます。
NumbervsMatrix.jpg
処理としては、まず答えを格納する行列を単位行列(左上から右下の対角線上のみ1、後は0の行列)にしておきます。
指数(の2進数)の各桁ごとに1か0かを調べ、1であれば答えの行列に入力した行列を掛け合わせます。
続いて、入力した行列同士を掛け合わせ、それを入力の行列に戻します。
そして指数を右シフトして、以上の処理を繰り返します。指数が0になれば、処理は終了です。

3. メインメソッド

static void Main(string[] args)
{
//入力データの個数
int num = int.Parse(Console.ReadLine());

//求めるフィボナッチ数列の項数
Dictionary<int, int> dat = new Dictionary<int, int>();
for (int i = 0; i < num; i++)
{
try
{
dat.Add(i, int.Parse(Console.ReadLine()));
}
catch(FormatException ex) //入力データの変換エラー
{
//Console.WriteLine(ex.ToString());
//Console.WriteLine("数値を入力してください");
--i;
continue;
}
}

//配列を昇順に並べ替え
List<KeyValuePair<int, int>> lst = new List<KeyValuePair<int, int>>(dat);
lst.Sort((x, y) => x.Value - y.Value); //ラムダ式で、(前の値 < 後の値)となるように設定

//行列でフィボナッチ数列の項数を求める
//前回の計算結果を記憶しておき、その結果とべき乗の結果を掛け合わせる
int[,] initArr = new int[,] { { 1, 1 }, { 1, 0 } }; //フィボナッチ数列の最初
int[,] tempArr = new int[,] { { 0, 0 }, { 0, 0 } }; //途中の計算結果を暫定的に記憶する
int[,] fib = new int[,] { { 1, 1 }, { 1, 0 } }; //前回の計算結果

int temp = 0; //前回計算した項
int[] rslt = new int[num]; //計算結果
foreach(KeyValuePair<int, int> pair in lst)
{
//フィボナッチ数列の計算
tempArr = powMtrx(initArr, pair.Value - temp); //新たに掛け合わせる行列をあらかじめ求める
fib = multMtrx(fib, tempArr, 3); //前回の結果と掛け合わせる
rslt[pair.Key] = fib[1, 1]; //右下の数値が求める項になる

temp = pair.Value;
}

//計算結果の出力
for(int i = 0; i < num; i++)
{
Console.WriteLine(rslt[i]);
}
}

ここで求めるフィボナッチ数列の項数入力と、計算結果の出力を行います。
まず入力は標準入力(キーボード)で下のように、最初に入力するデータ数、その後に求める項数を入れていきます(項の順番はバラバラでもOK)。なお、数値以外を入力すると直前の操作からやり直しになります。

5
3
128
0
1000
46

求める項数は、ディクショナリで保管されます(ディクショナリの解説は略)。
ここでは、入力した順番をキー、求める項をバリューとします。

このディクショナリを、項数で昇順に並べ替えます。
すると、前の計算結果を次の計算結果で使えるようになるので(動的計画法)、計算処理数が少なくなります。
DynamicCalcMatrix.jpg
では、肝心のフィボナッチ数列の計算に移ります。
フィボナッチ数列の計算用に、2次元配列を3つ(数列の初期行列、途中の計算を一時保存する行列、前回の計算結果)用意しました。数列の計算は、最初の行列をべき乗して求めていきます。
また、前回計算した項と結果の出力用の1次元配列も用意します。

ループはforの代わりにforeachを使いました。
foreachは、ループカウンタを設定する代わりにコレクション(配列、リストなど)の要素を使って繰り返しの処理を行います。
ここでは、先ほどのディクショナリを指定します。

ループ内では、フィボナッチ数列の計算と結果の格納、前回の状態の記録をしておきます。
まず、フィボナッチ数列の計算は新しく掛け合わせる行列を求め(初期行列を (今の項) - (前の項) 分だけかける)、それを前回の計算結果と掛け合わせます。
Fiboacci_Matrix.jpg
続いて、計算結果を出力用の1次配列に入れますが、ディクショナリのキーを使ってデータの入力順に並べ替えています。
こうすることで、入力した項に対応して計算結果が出力されます。

そして、次の要素に移る前に今の計算結果と計算した項を記録しておきます。
計算の終了後は、結果を標準出力でデータの入力順に出していきます。

プログラムを実行すると、このように計算結果が出力できると思います。
FibonacciProgram1.jpg

【終わりに】
意外と長くなってしまいましたが、これで計算の解説は終わりです。
学生時代はあまりこうした数値計算は勉強してなかったのですが、やってみると奥が深いですね。
また何かあれば記事にしようかと。

【参考】
こちらのサイトを参考にしました。
projectpn フィボナッチ数の高速計算 (http://www16.atwiki.jp/projectpn/pages/34.html)
TIM Labs フィボナッチ数列の一般項を計算する(※ただし有理数に限る) (http://labs.timedia.co.jp/2012/11/fibonacci-general-term-using-rational.html)
from scratch 動的計画法でフィボナッチ数列の計算を早くする (http://yosuke-furukawa.hatenablog.com/entry/20120120/1327056359)

テーマ : プログラミング
ジャンル : コンピュータ

10/13のツイートまとめ

Revetronique

TAKAMATSU MEDIA ART FESTIVAL(http://t.co/ywp2i4XAxh)素敵すぎるメディアアート祭の存在を今…あと12時間で締切だなんて…RealSenseもKinectも日本に忘れてきたというのに…応募したいよ(੭ ˃̣̣̥ ω˂̣̣̥)੭
10-13 12:25

Windowsストアアプリ制作入門(2)

こんばんは。
少し前にWindowsストアアプリの記事を書いたのですが、今回はその続きです。
いよいよ、アプリの作り方に入ります。

【ストアアプリで Hello World】
(今回は、C#を使用する前提です)

インストールが完了したら、ためしにアプリを作ってみましょう。
まずは、VS2015を起動してください(ショートカット、あるいはスタートメニューから検索して実行しても可)。

起動すると下のような画面が出ますので、枠で囲んだ部分をクリックしましょう。
01-StartMenu.jpg

すると、下のポップアップ画面が出現します。
ここで新しいプロジェクト(プログラムを制作するファイル等をまとめたもの)の作成をしていきます。今回はストアアプリを作成するため、「空のアプリケーション(Windows 8.1)」を選択します。
02-NewProject.jpg

作成した直後はこの画面が現れます。
いきなりここからプログラムを作成するのは難しいので、右の枠で囲んだ部分の中から、赤い丸と青い丸で示した部分をクリックしましょう。
03-CodeView.jpg

新しい項目が出てきました。
二つとも「.cs」という拡張子が付いていますが、これらにC#のソース部分が記述されています。
04-PJContents.jpg

どちらも同じ名前の「.xaml」という拡張子と連動しており、表示内容にかかわる部分をXAML、計算や操作に対する処理などロジック部分をCS(C#の場合)のファイルで分けているのです。
これにより、従来のアプリでは難しかったデザインとコード部分の分離が簡単になり、例えばアプリのデザインとプログラムの実装を別の人間が行うことも可能になったりするわけですが、この話はまた別の機会に。というか、当方もまだちゃんと使えるわけでもないので…(汗

とりあえず、上のリストから「MainPage.xaml」をダブルクリックしてみましょう。
少し時間が経過した後、下のような画面に切り替わるはずです。
GUIView_VS2015.jpg

ちなみに、「MainPage.cs」をダブルクリックするとこんな感じ。
CodeView2_VS2015.jpg

あ、コードばかりですね。ちょっとここは飛ばしましょう(笑)

ひとまず前の画面に戻り(タブで同じ名前のものをクリックすればOK)、下のように画面左から「TextBlock」というコンポーネント(アプリを構成する部品)をドラッグしてみましょう。
05-AddComponents.jpg

すると、このようにテキストがアプリ内に配置されます。
そして右下のプロパティという項目で、部品それぞれの見た目などを決定することができます。
まずは、「共通」>>「Text」と項目を選んで、その内容を「Hello World!!」にしてみます。すると、真ん中下のXAMLで記載された部分も変更されていると思います。このプロパティとXAMLは連動しているので、直接XAMLを書かなくても見た目などの設計を変更することが可能です(XAMLを直接いじる必要がある部分もありますが、それも追々(あれば))。
06-ChangeProperty1.jpg

しかし、このままでは文字が小さくて見づらいので、テキストの見た目も変えていきます。
フォントサイズ(48pt)は「テキスト」から、マージンと配置については「レイアウト」のカテゴリから探して設定してみましょう。見つからない場合は、プロパティ内の検索(虫眼鏡のついたテキスト入力)から、必要なものを入力して検索します(フォントサイズはsize、マージンはmargin、配置はalignmentで見つかります)。
07-ChangeProperty2.jpg

編集が完了したら、デバッグを開始してみます。
上の再生ボタンのようなやつ(枠で囲った部分)を押してみると、プログラムが実行されます。
08-StartDebug.jpg

少し待つと、こんなアプリ画面が出現すると思います。
TestApp_VS2015.jpg

また、開発環境のほうはこんな画面に変化します。
これは、プログラムの動作をデバッグしたりする画面なのですが、まだあまり使い込んでいないので、ここはまたわかり次第、記事にでもしようかと。
Debugging_VS2015.jpg

終了する際は、アプリを閉じるか、デバッグ画面の赤い停止ボタンみたいなやつをクリックします。
これで、最初のアプリ制作は終了です。

【終わりに】
今回は、ほとんど開発環境の使い方みたいになっていましたが、最初はこんな感じで慣れると良いでしょう。
ただ、アプリ制作自体はこれで終わりではなく、アプリ内の処理などを実装するためのコード制作も残っています(今回のアプリはコードの実装は必要ありませんでしたが)。

記事の途中で「MainPage.cs」というファイルを見ましたが、実装は主にそのファイル内に記述していく形です。また、実装は主にボタンへのタッチやリストメニューの選択などに応じた処理を実装していく「イベントドリブン」という方式で行っていくので、先に進みたい方はそれを頭の片隅に置いておくと良いでしょう。
次はそのあたりを特集できればと。

それでは(・Д・)ノ

テーマ : プログラミング
ジャンル : コンピュータ

Windowsストアアプリ制作入門(1)

お久しぶりです。
ここ最近はブログがなかなか更新できなかったのですが、ようやく時間(とネタ)ができたので記事を書こうかと。
(前回の更新から、あっという間に1週間くらい経ってますね汗)
今日はWindowsストアアプリの作り方ですよ。

Windowsストアアプリとは】
簡単に言うと、Windows 8 から登場したスマートフォンアプリの様なアプリケーションです(Windows 8のスタート画面にパネルで出ているあれ)。従来のソフトウェア(デスクトップアプリ)と対比して、ストアアプリと呼ばれています。

何故このようなアプリが登場したのか、それはWindows 8 が出た頃には、タブレットやスマートフォンなどの「新しい」デバイスが普及ししていたことと関係しています。
従来のアプリ(デスクトップアプリ)は主に、マウス、あるいはキーボードでの操作がメインでした。しかし、「タッチ操作」を前提とするデバイスではそれらの使用はできないか、あるいは操作が難しく(指で小さいボタンやタブを押すなど)なってしまいます。
そこで、タッチ操作で快適に利用できるアプリとしてストアアプリが登場したのです。

また、今年に入って Windows 10も登場しました。
無償アップデートでも話題となりましたが、開発者にとって最もアツい(と思う)のは、なんといっても「ユニバーサルWindowsアプリ」でしょう。

このユニバーサルWindowsアプリというのは、簡単に言えばPCとモバイル(Windows Phone)の双方で使えるアプリケーションのことで、デバイスを問わない(Windowsのみですがw)という意味でユニバーサルと称されています。Web制作でいうレスポンシブサイトみたいなものですね。
つまり、PCとモバイルのどちらからでも使えるアプリが簡単に作れるようになったんです!!

上記のユニバーサルアプリもストアアプリをベースとしており、スマートウォッチなど新しいデバイスの登場、さらにOSなどのシステムの移行を考えれば、今からストアアプリを勉強しておくのはとても重要だと思います。
(とはいえ、当方も少し前に始めたばかりですが…)

【ストアアプリでHello World】
というわけで、早速Windowsストアアプリを作ってみましょう。
(プログラミング言語はC#で進めていきます。)

まずはVisual Studio 2015 Communityをインストールします(詳しくはこの記事で)。
インストール作業と言っても、必要なファイルを公式サイトからダウンロードして実行するだけで完了します(ファイル実行時もオンライン環境が必要です)。

インストールが完了したらいよいよアプリの制作に入るわけですが、長くなるのでまた次回にでも。
では。

【関連記事】
ストアアプリとユニバーサルWindowsアプリに関するサイトはこちら。

【Windows8.1パーフェクトマスター】8.1の主役!ストアアプリを使ってみよう
http://www.nikkeibp.co.jp/article/tk/20140225/385207/?rt=nocnt
ユニバーサルプロジェクトで開発するには?[ユニバーサルWindowsアプリ開発]
http://www.atmarkit.co.jp/ait/articles/1405/08/news109.html

テーマ : プログラミング
ジャンル : コンピュータ

(続)ラブライブの映画

遅れるどころの騒ぎじゃなかったぜ…汗
映画館側が公開を拒否した(ソースはこちら)…だと…orz
ラブライブの映画が見られないってことじゃないかー!!!!!!!

これのために今日までハノイで過ごしてたのに、なんてこったい。
どうしてくれるじゃベトナムー( ノД`)

ばっきゃろー

テーマ : ベトナム
ジャンル : 海外情報

ラブライブの映画

が、見たいです...。
上映する時期と場所が知りたいです...。
10月初旬って、いつやるんだー。というか、上映する場所すら分からないΣ(´Д`lll)

ベトナムとか、普通に上映する時期とか遅れそうだからなぁ...。
来週末までにはやってくれないかな。

テーマ : ベトナム
ジャンル : 海外情報

09/30のツイートまとめ

Revetronique

飛行機が3時間遅れていることへのお詫びのMealは牛と鳥のフォーから選択式 by Vietnam Airline!ホーチミンへの出張が1日延びたの。 http://t.co/s30CvCSu8k
09-30 20:36

プロフィール

Reveちゃん

Author:Reveちゃん
コンビでやってます。
夢担当と技術担当がいます。

大学院卒業 → ロボットベンチャー(漆黒)就職 → 1年で退職 → ベトナムで仕事中(今ここ) → メディアアーティスト(未来☆)

リンクフリーです。

最新記事
最新コメント
月別アーカイブ
カテゴリ
アクセス数
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR