2012年5月18日金曜日

NTT docomo、夏モデル機種を発表するも、ついにラインナップから「ガラケー」が消滅

朝日新聞デジタルの記事によると、NTT docomo は今夏に売り出す端末を発表したが、今回の新機種では、スマートフォンがほとんどとなり、従来型の「i モード」付きの携帯電話、いわゆる「ガラケー」がなくなったそうだ。i モード付き携帯電話は、恒例だった年 2 回の新機種発表をやめて、年 1 回にするそうだ。

新機種の中には高齢者専用のスマートフォンが登場したそうだ。表示を大きく分かりやすくする以外にも、誤操作を防ぐためにタッチパネルの表示をしっかり押さないと反応しないようにし、押したことが実感できるように小刻みに震えるような感覚を指先で感じられるようにしたそうだ。利用料金も使えるアプリを制限するなどして、通常のスマートフォンよりも 4 割近く安いらしい。

携帯電話の割合が減っているとは思われていたが、これほど早く新機種から消滅するとは思われなかったのではないだろうか。

2012年5月17日木曜日

Google's Grand Android Plan

CWmike writes with news of a significant change in Google's strategy for Android. According to a Wall Street Journal report, "Google plans to give multiple mobile-device makers early access to new releases of Android and to sell those devices directly to consumers, said people familiar with the matter. That is a shift from Google's previous practice, when it joined with only one hardware maker at a time to produce 'lead devices,' before releasing the software to other device makers. Those lead devices were then sold to consumers through wireless carriers or retailers." JR Raphael adds, "Signs of something big have been brewing in AndroidLand for some time now: First, we've had the increasingly loud buzz about Google's top-secret mission to build an inexpensive Nexus-like tablet. Then, last month, Google opened the door to selling unlocked Nexus devices directly to consumers, eliminating the need for carrier meddling and contract commitments. Now, at long last, we're getting a glimpse at what's likely the final piece of the puzzle."

2012年5月16日水曜日

what is game?

A game is something that people do for fun. It is different from work. In many games, people play against other people.

There are different kinds of games. For example, in video games, people often use controllers to control what happens on a screen, such as a television screen. In board games, players often move pieces on a flat surface called a board. Some examples of board games include Monopoly, chess, and checkers. In card games, players use playing cards.

French sociologist Roger Caillois, in his book Les jeux et les hommes (Games and Men), said that a game is an activity that must have the following traits:

  • fun: the activity is chosen because it is fun
  • separate: it is circumscribed in time and place
  • uncertain: the outcome of the activity is not known at the beginning
  • non-productive: participation does not accomplish anything useful
  • governed by rules: the activity has rules that are different from everyday life
  • fictitious: it is accompanied by the awareness of a different reality

 

Basic English (British American Scientific International Commercial)

Basic English (British American Scientific International Commercial) is a constructed (made-up) language to explaincomplex thoughts with 850 basic English words chosen by Charles Kay Ogden.

Rules of word use

The word use of Basic English is simpler and more regular than the word use of full English. Not all the meanings of each word are allowed.

Ogden's rules of grammar for Basic English help people use the 850 words to talk about things and events simply.[1]

  1. -s / -es / -ies change singular nouns into plural nouns.
  2. -ing / -ed change verbs into adjectives.
  3. -ing / -er change verbs into nouns.
  4. -ly change adjectives into adverbs.
  5. -er / -est or more / most describe amounts.
  6. un- change the meanings of adjectives into their opposites.
  7. The opposite word order with do makes questions.
  8. Operators and pronouns conjugate as in normal English.
  9. Make combined words (compounds) from two nouns (for example "milkman") or a noun and a direction (sundown).
  10. Measures, numbers, money, days, months, years, clock time, and international words are in English forms. E.g. Date/Time: 20 May 1972 at 21:00
  11. Use the words of an industry or science. For example, in this grammar, some special words are for teaching languages, and not part of Basic English: plural, conjugate, noun, adjective, adverb, qualifier, operator, pronoun, and directive.

Related pages

  • Related resources
    • E Prime - a changed type of English, without the verb 'to be'

2012年5月15日火曜日

アジャイルプロジェクト管理ツール9選

名称 無償/有償 UIの日本語対応(※) VCS連携 Wiki CI連携
Pivotal
Tracker
有償(非営利・学術・OSS向け無償などあり) △(API経由) × △(API経由、プラグインなどはない)
Version
One
有償/10ユーザーまでの機能制限無償版あり △(ユーザーがメッセージを翻訳可能) ○(SVNGit、Perforceはツールあり。ほかはAPI経由で連動) × ○(Jenkinsなど)
Rally 有償/10ユーザーまでの機能制限版あり ○(SVN、Perforce、Git、GitHub、TFS、AccuRevはツールあり) × ○(Jenkinsなど)
Scrum
Works
無償(11ユーザー以降は有償) △(CollabNet TeamForgeを別途購入、TeamForge経由。SVN、CSV、Perforceにデフォルト対応。ほかはSCMリポジトリアダプタ経由) △(
CollabNet TeamForgeを別途購入)
△(
CollabNet TeamForgeを別途購入、TeamForgeを経由してJenkinsなどに対応)
Agilo 有償/機能制限無償版あり ○(最新版は未対応) ○(SVN、Mercurial、Git、Bazaar、Perforce) ○(Jenkinsなど)
Green
Hopper
有償(非営利・授業・OSS向け無償などあり) △(FishEyeを別途購入。CVS、SVN、Perforce、Git、Mercurial、ClearCase) △(
Confluenceを別途購入)
○(Jenkins、Bambooなど)
Visual 
Studio 
TFS
有償(MSDNライセンスを持つ場合、無償) ○(VCSを統合) ○(ビルドシステムを統合)
Rational 
Team 
Concert
無償(11ユーザー以降は有償) ○(VCSを統合。ClearCase、SVN、Git、CVS、Rational Synergyとも連携可能) ×(ただし、計画のノートは利用可能) ○(ビルドシステムを統合)
Backlogs
(Redmine)
無償 ○(SVN、Git、Mercurial、Bazaar、CVS) ○(Jenkinsなど)
○:対応、△:オプションで対応、×:未対応
※日本語対応
△:日本語入力のみ可能、○:日本語入力および、メッセージの日本語表示
※VCS=バージョン管理システム、SVN=Subversion、TFS=Team Foundation Server

JSARToolkit

   次はJSARToolkitにも挑戦。
 
 先ほどのface.jsでは人の顔のパターンにマッチしたものを検出しましたが、今度はWeb上で拡張現実(AR)アプリケーションを実装します。Canvas上の動画からARマーカーにマッチした部分に対して変換を行い、3Dオブジェクトも描画できます。みんなで盛り上がったのが、AR技術を使った初音ミクのこちらの動画です。

 それでは早速デモです。サイトに載っているARマーカーをスマホのカメラで撮影し、こちらにアクセスしてWebカメラにマーカーを映します。

 角度や大きさによっては、なかなかうまくいきませんが、きちんと変換された画像が表示されました。紙に印刷したマーカーを用いるとよりうまくいくようです。

 だいぶ駆け足になりましたが、最後にはこちらのデモにも挑戦します。ビデオ画面上部に鍵盤が表示され、それを指でなぞることで実際に音が出ます。こちらの動画でその様子を見られます。

 こちらの実際の処理は、ソースを見てみると、意外とシンプルでカラーチャネル間のアベレージを計算して、触れた触れないを識別しています。

face.js

   Face.js(JavaScript Face Detection + Canvas + Video = HTML5 Glasses!)を使い、顔認識します。alumicanさんのブログを参照して、デモを行いました。

 GitHubから落としたソースを見てみると、実際の顔認識はccv.jsとface.jsによって行われます。ccv.jsがCanvasを扱う画像処理ライブラリで、物体を検出する部分(detect_objects)などが実装されています。face.jsには、顔検出用のパターンがセットされ、HTML5のVideoタグを用いて、Canvasに取り込んだ画像から、顔の部分を検出できます。

 こちらのソースを、そのまま動かそうとするとエラーが出てしまいますが、get_user_mediaをwebkit_get_user_media置換するとOKになります。Chromeのバージョンの差などが影響するようです。

Web RTC

 Web RTCとは、Web RealTimeCommunicationのことで、デバイスのカメラ、マイクから音声、動画を取り込んだり、端末間で相互通信P2P(Peer to Peer)を行えるJavaScript APIです。Webカメラを準備しましょう。

 まずは本家のサイトをみんなで見てみるところからスタート。

 正式版のChromeに導入されていない新機能が、毎週のように自動更新されるというChrome Canaryをインストールします。

 手順に従ってChrome Canaryをインストールし、chrome://flagsでEnable the MediaStreamを有効にします。

 デバイスからの音声や動画の取り込みは、JavaScriptのgetUserMediaを使って行われます。この設定によって、getUserMediaメソッドが使えるようになります。

 getUserMediaの基本的な使い方は以下の通りです。第1引数が取得対象メディア、第2引数が取得成功時のコールバック、第三引数がエラー時のコールバック(任意)です。

navigator.getUserMedia(
media,
successCallback,
errorCallback
);

JFreeChart、関数をプロットする

JFreeChart で関数をプロットする方法を紹介。
 
チャートを生成する大雑把な手順は
 
Function2D オブジェクトを生成する
Dataset オブジェクトを生成する
JFreeChart オブジェクトを生成して表示する
です。
 
Function2D インターフェース
 
JFreeChart で関数を表すには、 org.jfree.data.function.Function2D インターフェースを用います。 このインターフェースは引数から値を計算して返す getValue() メソッドのみ定義されています:
 
package org.jfree.data.function;
 
public interface Function2D{
    double getValue(double x);
}
このインターフェースを実装するクラスであれば、以下で見る方法でチャートを表示することができます:
 
import static java.lang.Math.*
 
// サブクラス
class HyperbolicSineFunction implements Function2D{
    @Override
    public double getValue(double x){
        return (exp(x) - exp(x))/2.0;
    }
}
 
// 無名クラス
Function2D cosh = new Function2D(){
    @Override
    public double getValue(double x){
        return (exp(x) + exp(x))/2.0;
    };
}
Groovy ではメソッドが1つしかないインターフェースはクロージャを用いて簡単にインスタンスを生成できます:
 
import static java.lang.Math.*
 
def tanh = { x -> (exp(2d*x) - 1) / (exp(2d*x) + 1) } as Function2D
Dataset オブジェクトの生成
 
Function2D オブジェクトから Dataset オブジェクトを生成するには org.jfree.data.general.DatasetUtilities#sampleFunction2D() メソッドを用います:
 
Function2D f = ...
double xmin = -1.0d;
double xmax = 1.0d;
int sampleCount = 1000;
String seriesKey = "Function"
 
XYDataset dataset = DatasetUtilities.sampleFunction2D(f, xmin, xmax, sampleCount, seriesKey);
この結果返される XYDataset オブジェクトは(JFreeChart 1.0.12 では) XYSeriesCollection クラスのインスタンスで、sampleCount で指定された個数のデータを持つ離散的なデータになっています*1。
 
JFreeChart 1.0.13 からは DatasetUtilities クラスに XYDataset オブジェクトを生成する sampleFunction2D() メソッドに加えて、XYSeries オブジェクトを生成する sampleFunction2DToSeries() メソッドも定義されています(Maven2 のリポジトリには今のところ 1.0.12 までしか配備されていないので、拙者はあまり使ってませんが)。 他のデータも同時に扱いたい場合にはこちらを使うと便利かと。
 
チャートの生成(と表示)
 
上記の方法で生成された XYDataset オブジェクトは離散的なデータの単なる XYDataset なので、ChartFactory#createXxxx() メソッドで JFreeChart オブジェクトを生成すれば普通にチャートが生成できます(詳細割愛)。
 
JFreeChart chart = ChartFactory.createXYLineChart("Function Plot", "X", "Y", dataset, PlotOrientation.VERTICAL, true, true, false);
ちなみに、ChartFactory.createScatterPlot() などでチャートを生成すると、跳び跳びのグラフが表示されます。
 
とりあえず、これで関数のプロットは完了。
 
ビルドイン関数
 
JFreeChart にはもともと定義されている関数が3つあります(1.0.12)
 
LineFunction2D
1次関数。 new LineFunction2D(a, b) によって1次関数 a+bx が生成される(ax+b ではない!)
PowerFunction2D
冪関数。 new PowerFunction2D(a, b) によって a*x^b (x^b は x の b 乗の意)が生成される。 b が負の値や非整数でも可。 ただし、b が非整数の場合は x は非負でないといけない(NaN が返される)。
NormalDistribution2D
正規分布関数。 new NormalDistribution2D(μ, σ) は、平均値が μ、標準偏差が σ の正規分布。
で、それぞれチャート作ってみました。
 
 
追記
 
JFreeChart 1.0.12 では Function2D から XYSeries を直接生成できませんが、DatasetUtilities#sampleFunction2D() メソッドで返される XYDataset が XYSeriesCollection オブジェクトなので、XYSeriesCollection の API を使って
 
XYSeriesCollection dataset = (XYSeriesCollection)DatasetUtilities.sampleFunction2D(...)
XYSeries series = dataset.getSeries(0)
とすれば XYSeries オブジェクトを取得することができます。