09/27のツイートまとめ

Revetronique

今日から3日間、ホーチミンへ出張! http://t.co/FtCFRzispi
09-27 11:35

バルス!@ラピュタのモデルと噂のカンボジアのベンメリア http://t.co/QsZBuU4sIP
09-27 10:56

Windows Phone アプリ作ってます

以前ダウンロードしたVisual Studio 2015 Community(そのときの感想はこちら)で、Windows Phoneアプリ(8.1用)開発の勉強を始めました。

触ってみた実感としては、何となくAndroidアプリの開発に似ている気がします。
ざっくり言うと、アプリのUI(ユーザーインタフェース)はグラフィック上で部品を配置、あるいはXML(正確にはXAML)で構築して、必要な処理をイベントハンドラで実装していきます。
要は、アプリの見た目を作っておき、ボタンを押した時など、操作に対して必要な処理を後から作るという感じです。

もう少し勉強して、何かしら動くアプリが作れたらまた記事を投稿しようかと。

テーマ : Windows Phone
ジャンル : 携帯電話・PHS

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

こんにちは、Reveです。
常日頃からネタに困っている技術担当です。
今日はどうしようか考えた挙句、プログラムの話になりました。

最近、ちょくちょく「CodeIQ」で問題を解いていたりしますが、
その中でフィボナッチ数列の演算問題が出てきたので、今回は当方のプログラムを載せてみたいと思います。
問題の回答期限はとっくに終了しているので、ネタバレみたいな記事になってもいいよね(・ω<)

【フィボナッチ数列とは】
詳しくは知らなくても、名前くらいは聞いたことがある人も多いでしょう。
イタリアの数学者レオナルド=フィリオ=ボナッチ(レオナルド・フィボナッチ)にちなんで名づけられた数列です(ちなみに、フィボナッチ本人が発見したのではなく、著書で紹介しただけだそうで。あと、本名はレオナルド・ダ・ピサ。へー)

この数列の定義は、3項目以降のある項が前の2つの項の和になるということで、
これを数式で表すと下のようになります。
なお、最初の2つの項は、それぞれ0, 1と与えられます。

F0 = 0
F1 = 1
Fn = Fn-1 + Fn-2 (n > 1)

面白い特徴として、項数が大きくなるほど、ある項とその前の項の比がいわゆる「黄金比」に近い比率となる性質を持ちます。
GoldenRatio.jpg

黄金比とは長方形の縦横の比で、ある長方形から短い辺の正方形を切り取った時に、残りの図形の縦横比が元の図形と同じになるような長方形のものを指します。
古代ヨーロッパでは最も美しい長方形の比率と考えられ、自然界にも数多く現れる(花びらの数、カタツムリの螺旋など)ことでも有名です。

【プログラミングでどうするか】
さて、一通り特徴を書いたところで、プログラムを使ってどのように解くかを見ていきましょう。
まず、10~100の位までの小さい項を求めるのであれば、数式の通りに求めていくのも良いでしょう。

1から計算させるより、
Fibonacci1.jpg

直前の計算結果を覚えておいてそれを次の計算結果に使用したほうが処理が断然早くなります(動的計画法)。
Fibonacci2.jpg

ところがっ、CodeIQはそれを許してくれない!何故なら、数千万の位の項を求めさせられるから!!
そして、時間がかかるとタイムアウトするからぁ…残念!!!
計算量が多くて時間のかかる処理は、(たとえ正解にたどり着くとしても)受け付けてくれないんですね。
そのため、高速で処理できる方法を考えます。

フィボナッチ数列の一般項は次の数式で与えられるため、これを計算して整数部を導出する手段も考えられます。
Formula_Fib1.jpg

問題は平方根を求める方法とその精度ですが、普通に数学用ライブラリや浮動小数点を使用して計算するには
計算時間はともかく、精度がだいぶ怪しい(100を超えるともう誤差が発生するようです)。
一応、複素数を扱うような形で計算できる(有理数と無理数の計算に分けて、有理数の部分のみ求める)ようですが、当方は別の手段で求めることにしました。それが行列のべき乗算ッ…!!!

【行列での求め方】
フィボナッチ数列を行列で表すと、以下のようになります。
Formula_Fib2.jpg

つまり、{{1, 1}, {1, 0}}の2次元行列をN回かければ、求めたい項の値が導出できるのです。
(行列に限らず)べき乗の計算は、普通に乗算すればN回の計算になりますが、少し工夫(この記事を参照)することでlogNのオーダーで求められるようになります。項の位が大きくなるほど効果は歴然と現れます。

【次回は】
と、プログラムまで解説すると長くなってしまうので、実装に関しては次回に持ち越します。次回の更新までに考えてみるのも良いかもしれません(当方の実装より良いものもできると思いますしorz)。
ではまた。

【参考】
こちらのサイトを参考にしました。
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)

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

09/18のツイートまとめ

Revetronique

ちょっとカンボジアまで行ってくる!プチ旅☆ http://t.co/D8dCA2XydR
09-18 10:18

Microsoftのスマートフォン買いました

こんにちは、Reveです。技術担当らしきものです。

実は昨日、ようやくスマートフォンを(ベトナムで)手に入れました!技術担当とか言いながら、最新機器とかそういうのに関心が薄かったので持っていませんでしたが、せっかくSIMフリーのデバイスが安く手に入るならばと、ハノイのお店で買いました。
お値段はなんと6000円くらい(1,120,000VND)。いやーいい買い物したっw

いや、別にニセモノとかではないですし、怪しいものでもないです(キリッ

最近、スマートフォンのアプリ開発を始めましたが、そろそろ実機でアプリの動作を確かめたいと思い、とにかく性能は少し悪くてもいいので安いデバイスを探してました。
とりあえず、ハノイのお店を何件か回って、ここで購入することにしました。、

[FPT Shop: フエ(Huế)通り 325]


その中でWindows Phoneというのを見つけたので、せっかくだからと思い購入しました。
OSは Android ではなく Windows8.1 ですがw

パチモンじゃないぞパチモンじゃ。大事なので2回言いました。

実は、MicrosoftがNokiaというフィンランドのIT企業の携帯端末事業部を買収したようで(携帯電話で有名でした)、そこがMicrosoftのデバイス部門となってスマートフォンなどを継続して開発しているそうです。

今回買った「Microsoft Lumia 430」も、Nokiaがもともと販売していた端末をMicrosoftブランドに改めたもので、同シリーズのデバイス内でも廉価なものとして出されている端末です。

Lumia430 (2)

Lumia430 (1)

元の値段は70ドル(日本円で8400円位)だったのが、何故か店のショーケースで既に展示されていた(つまり新品ではない)もので、しかも値引きしてくれたので、冒頭の通り6000円くらいで手に入りました。

Windows 8からストアアプリという、Androidアプリのような見た目と仕様のアプリケーションのカテゴリが出てきており、開発用の公式SDKも既に公開されているので、これを機に開発の勉強をしてみようかと。

ちなみに、日本で買うと15000円くらい(Amazon)。

テーマ : Windows Phone
ジャンル : 携帯電話・PHS

Visual Studio Communityをインストールしてみたの巻

こんにちは、Reveです。
こないだ言ってた(この記事を参照)Visual Studio 2015をインストールしてみました。

【Visual Studio 2015 Community】
Visual Studioもいくつか種類がありますが、今回インストールしたのは「Community」と呼ばれる種類のもので、個人や非営利団体、あるいは小規模の開発会社であれば無料で使用できるというものです。
上記リンクの記事でも述べたように、制約が厳しい代わりにProfessional相当の機能が搭載されているようで、何だかワクワクしますねw

このページ(https://www.visualstudio.com/vs-2015-product-editions)の「Download Visual Studio 2015」と書かれたリンク先で実行ファイルを入手し、それを起動するとインストールを始められます。
インストール用のウィザード(ナビゲータみたいな画面)が出てくるので、「カスタム」を選択して、必要なファイルを選択してインストールします(標準設定でもOKです)。

インストールの注意点として、次の項目が挙げられます。
1. Visual C++は標準ではインストールされません。必ず「カスタム」から必要なものを選択しましょう。
2. 同様に、モバイルアプリ開発なども「カスタム」から必要なものをインストールします。
3. このインストーラはオンライン上で必要なデータを獲得しながら環境を構築します(ネット環境が必須)。オフラインで導入したい場合は、事前にISOデータを入手する必要があります。

インストールしたばかりでまともに試せてはいませんが、今回のVisual Studioで注目すべきはやはり「クロスプラットフォーム開発」でしょう。
従来は、基本的にWindows向けのソフトウェアしか作れませんでしたが、今回はAndroidやiOSアプリ、Webブラウザ上で動くソフトウェアも作れるようになったようです。

更にUWPと呼ばれるWindows10で新しく登場したアプリケーションの開発にも対応しています。こちらはWindows向けですが、PC上だけでなくWindow Phoneと呼ばれるモバイルやタブレットなどでも動くアプリケーションとしてMicrosoftが打ち出しました。
つまり、PCでもモバイルでも使えるアプリを作れるのです。スゴイ!

確かに、従来のデスクトップアプリとは開発の仕方が大きく異なり、開発者の習得コストも少なくはないかもしれませんが、PCでもモバイルでも使えるアプリであれば、一つ当たれば相当稼げるのではないでしょうか(シェア数も凄くなりそう)。今からはじめれば、将来的にはUWP開発の先駆者として億万長者も夢ではないかも・・・(・∀・)

いやー、今から開発がたのしみだーw

【余談】
そういえば、Communityとは別にExpress版も公開されていました。
以前からのユーザーにはおなじみですが、こちらは誰でも無料で使えるツールで(機能限定ですが)、企業で開発する方でも一切の制約がありません。訳あってCommunityが利用できない方は、こちらを使用すると良いでしょう。

ただし、こちらは開発できるアプリケーション別で3種類に分かれているので、開発したいアプリ別にダウンロードする必要があります(for DeskTopが従来のアプリケーション向け、for Windowsがストアアプリ・UWP向け、for WebはWebサービス向けになっています)。

【参考】
インストール手順については、こちらのサイトが参考になります。
インコのWindowsSDK ~ Visual C++ Express
http://gurigumi.s349.xrea.com/programming/visualcpp/install2015c_1.html

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

Processing 3.0b使い始めました

そういえば、Processingが新しくなっていたので、インストールしてみました。

インストール方法はいつもの通り、公式サイトのDownloadページ(https://processing.org/download/?processing)から圧縮ファイルをダウンロードして、好きな場所に展開するだけでOK(PCのOSに対応したものを選びましょう)。

どうやら、今までのバージョンから大きく変更したようで、前のものと仕様も異なってくるようです(これまでのライブラリや開発したソースが使えない可能性もあります)。
今の安定版(2.2.1)と比べると、見た目も機能もいろいろ異なっているようなので、違いを分かる範囲で簡単にまとめました。

1. 外観
下の画像にもありますが、2つを見比べるとだいぶ違います。
(左: 前のバージョン(2.2.1), 右: 新しいバージョン(3.0b))
CompareVersion.jpg

2. 公式ライブラリ
ライブラリも3.0用に新しくなったようで、これまでのライブラリは一部使えないものも出てきました。
(公認のライブラリもいろいろ変更されているようです)

今まで使っていたライブラリが対応していない場合は、ライブラリ開発者の対応を待つか、前バージョンのProcessingを使いましょう。

また、開発中のためかインストールしても使えない公式ライブラリがありました(「Sound」ライブラリで発生。他にもあるかも)。
原因は特定できていませんが、こちらもひとまず開発側からの更新を待つ必要がありそうです(汗

3. モード
開発環境からインストールすることで、JavaScriptやAndroidに対応したプログラムを開発することもできます。
これでAndroidアプリやブラウザアプリ開発も簡単になるかも!?

4. デバッグ機能
新しいバージョンでは、デバッグ機能もより簡単に使用できます。
ソフトウェアの右のほうにある丸いボタンを押すと、下画像のようにデバッグ機能が起動します。
NewIDE.jpg

これで、開発もよりスムーズになりそうです。

公式のほうでも変更点が詳しく説明されているため、ちゃんと知りたい方はこちらからどうぞ。
https://github.com/processing/processing/wiki/Changes-in-3.0

テーマ : 雑記
ジャンル : コンピュータ

ProcessingでGIFアニメを作るよ(2)

Reveです。
以前、プログラミングでGIFを作れるという記事を書きましたが、今日こそGIFアニメの作り方を書きます。
うそじゃないです。

【How to make GIF Animation】
作り方をまとめて見ました。

(まだ導入してない方は、Processingをインストール(https://processing.org/download/?processing))
1. ライブラリ(GifAnimation)のインストール
2. 必要なコードを記述
3. プログラムを実行 → GIFアニメが自動的に生成

いやー、簡単でしたね。以上!
だけで終わらせると怒られるので、さすがに解説も入れます。

まず、今回はProcessingというプログラミング言語を使うため、その開発環境をインストールします(今回も、PC環境はWindows 8.1 64ビット版で想定)。

インストールといっても、ファイルをここ(https://processing.org/download/?processing)からダウンロードして好きな場所に展開するだけなのでとても簡単!Windows環境以外の方も、対応するOS用のファイルをダウンロードすれば利用できます。

ダウンロードするバージョンは、安定版の2.2.1を使用します。
リンク先の真ん中あたりに2.2.1と記されたファイルのリンクがあるので、そこからダウンロードします。

フォルダを展開したら、中のexeファイルを実行して見ましょう。開発ツールが起動すればOKです。
インストールが終わった後は、いよいよGIFアニメ作成の準備に入ります。

【1. ライブラリ(GifAnimation)のインストール】
まずは、ライブラリを開発環境に入れます。

Processingを起動して、「Tools」 タブの 「Import Library...」>>「Add Library...」を選択します。
AddLibrary(v2).jpg

ライブラリ導入マネージャーに入ったら、「gifanimation」を検索して、該当するライブラリをインストールします。
InstallLibrary(v2).jpg
これで、自動的にGIF生成用のライブラリが導入されます。インストールが完了したら、Processingを再起動(いったん閉じて、再び実行)しましょう。
正常にインストールされていれば、下の項目を選んでいくとライブラリが表示されます。
GifAnimationLib.jpg

【2. 必要なコードを記述】
次に必要なコードを記述します。
コードの大まかな設計は、下のようになります。

//1. Import library and create GifMaker instancce
import gifAnimation.*;
GifMaker gifMaker;

void setup(){
//(Initialization...)

//2. setup for making GIF animation
gifMaker = new GifMaker(this, "colorchange.gif"); //make a new GIF file named box.gif
gifMaker.setRepeat(0); //repeat forever
gifMaker.setDelay(20); //set the interval time as 20ms
}

void draw(){
//(MainLoop...)

//3. Make a GIF animation
//add the current scene as a frame in the gif
gifMaker.addFrame();

//pass 100 frames in the program
if(frameCount >= 300){
gifMaker.finish(); //finish making GIF animation
exit(); //finish the program
}
}

GIFの生成だけを見てみると、基本的には

1. ライブラリのインポートと、GIF生成用のインスタンス(GIF生成の管理者みたいなもの)を用意
2. 初期設定 (ファイル名、画質、透過色など)
3. メインループでGIFアニメを生成

という流れになります。 
あとは、必要な場所にアニメーション映像を作るためのコードを書けばよいのですが
今回は、背景色が時間で変化していくというアニメを作ります。

プログラム全体はこのようになります。

import gifAnimation.*;

GifMaker gifMaker; //GifMaker instancce

static final int RANGE = 100;

void setup(){
size(300, 300);
colorMode(HSB, RANGE); //HSV

//setup for making GIF animation
gifMaker = new GifMaker(this, "colorchange.gif"); //make a new GIF file named box.gif
gifMaker.setRepeat(0); //repeat forever
gifMaker.setDelay(20); //set the interval time as 20ms
}

void draw(){
//background color changes continuously
background((frameCount + RANGE * 3 / 4) % RANGE, RANGE, RANGE);

//add the current scene as a frame in the gif
gifMaker.addFrame();

//pass 100 frames in the program
if(frameCount >= 300){
gifMaker.finish(); //finish making GIF animation
exit(); //finish the program
}
}

【3. プログラムを実行】
プログラムを打ち込んだら、それを好きな場所に保存しておきましょう。
後は、プログラムを実行するだけで、GIFアニメがプログラムが保存されている場所に生成されます。

フォルダを見ると、このようなGIFアニメが置いてあるはずです。
colorchange.gif

これでGIFアニメの作り方は終わりです。お疲れ様でした。

【まとめ】
いかがだったでしょうか。
GIFアニメの生成は思ったより難しくなかったのではないかと思います。

手順をおさらいすると
1. ライブラリ(GifAnimation)のインストール
2. 必要なコードを記述
3. プログラムを実行 → GIFアニメが自動的に生成

となります。
後はアニメーションの元となるコードしだいですが、画像編集よりプログラミングのほうが得意だよ、とかPhotoshopなにそれおいしいの、という方はこちらの手法でGIFアニメを作ってみるのはいかがでしょう。

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


(今回は一切使ってないけど)

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

Visual Studios 2015に移行(したい)

少し前にVisual Studio 2015が正式公開されました。
話題に乗り遅れている感はありますが、そろそろ開発環境を新しくするのもいいなと思っています。
機能もPro相当のが無料で使用できるとのことで、いろいろと試してみたくなります。

とはいえ、無料で使用する場合は個人か非営利団体、あるいは小規模な企業による開発に限定されるそうです。
個人であれば有料アプリも開発できるみたいで(・∀・)/

小規模な企業というのは、「開発PCが250台以下で、年商1億未満」という条件で、「5名以下」までが無料で使用可能みたいです。ただし、元からある企業が開発部門のみを子会社化して無償化するのは不可能だそうです。
(参考) Insider's Break 「Pro相当機能が無料!」と話題になった「Visual Studio Community」の光と“影” (http://www.buildinsider.net/hub/insidersbreak/2014112101)

今使っている環境(Visual Studio 2013 Express for DeskTop)も便利なので、並行して使っていこうかと。
(しかし、家のネット環境が重いのでインストールできなさそうorz)

あ、そういえばストアアプリの開発も勉強したいなぁ・・・

テーマ : 雑記
ジャンル : コンピュータ

GitHub始めました

こんばんは、Reveです。
タイトルの通り、GitHubを始めたというお知らせです。

GitHubとは、自分が作成したプログラムやシステムなどを、ネットワークを通じて世界中に共有できるシステムで、誤解を恐れずに言えば、プログラマにとってのYouTube(あるいはニコニコ動画)みたいなものです。

とりあえず、習作のプログラムを中心に公開していく予定で、リンクはこちら。
(Revetronique - GitHub)
https://github.com/Revetronique/Works

更新は不定期になるかと思いますが、何かしら参考になれば幸いです。
今は3つプログラムを置いてます。

1. GIFanimeLoading1
  Processing2.2.1でGIFアニメを制作するプログラム。
  ローディング画面調のアニメが出来上がります。
2. LifeGame
  ライフゲーム(セルオートマトンの一種。人生ゲームではない)のシミュレーションを画面上で見せるプログラム。
  Processing2.2.1使用。
3. charShoot
  キーボードを打つと、ウィンドウ上でタイプした文字が弾幕のように左から右に流れるプログラム。
  矢印キーで文字のフォントや色を変えたり、マウスボタンで流れる速度を早く/遅くしたりできます。
  やはりProcessing2.2.1を使用。

GitHubにも慣れたら、使い方の紹介もしてみようかと。

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

プロフィール

Reveちゃん

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

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

リンクフリーです。

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

この人とブロともになる

QRコード
QR