Tech Sketch Bucket of Technical Chips by TIS Inc.

機種ごとに違う!?Android端末におけるデバイス活用の問題点

Pocket

高機能なAndroid端末が普及し、GPSやカメラ、加速度センサー等を活用したアプリケーションを作成出来る下地が揃ってきました。
弊社で開発・提供を行っているSkyWareも、これらのデバイスを活用してARによるナビゲーションを行っています。

AndroidはオープンでフリーなOSであり、スマートフォン市場で多くのシェアを獲得しています。
しかし、オープンでフリーなOSであるがゆえに、

  1. 各メーカーでハードウェア構成が異なり
  2. OSのカスタマイズを行っている場合があり
  3. Wintelのような安定さが無く
  4. 機種によってアプリ側のプログラム変更で対応しなければならない

という場面が存在するのです。

本記事では、SkyWareの開発で浮かび上がったAndroid開発の問題点をご紹介します。

ITシステムの性能に取り組む基礎知識 (その3: 平均値とパーセンタイル値)

Pocket

techsketch-banner-perfeng+blackgraph(700x72).jpg


前回は「待ち行列の基本」というサブタイトルでしたが,今見ても情報処理技術者試験対策講座みたいですね. 今回のサブタイトルも似たようなものですが,内容は前回よりはもうちょっと実践的にしてみました.


■問題

ある機能の応答時間を測定したところ,平均値が500ミリ秒,90パーセンタイル値が350ミリ秒でした. どの様な性能問題が考えられるか説明できますか.

問題文は極端にシンプルですが,性能対策に関連するいろんな課題を隠しています. 少々解説が長くなりますが,レベルを順次上げながら説明していきます. 最も「性能問題らしい」部分は,レベル3(5番目)で出てきますが,それまで少し腰を据えて読んでいただければありがたいです.

システム間連携 その3:Mule

Pocket

techsketch-banner-OSS+startingblock(700x65).jpg

1.はじめに
前回はESB(Enterprise Service Bus)の中のJBossESB(http://www.jboss.org/jbossesb)を紹介しました。
今回は、Mule(http://www.mulesoft.org/)に焦点をあてます。

システム間連携 その2:JBossESB

Pocket

techsketch-banner-OSS+startingblock(700x65).jpg
1.はじめに
前回は、MOM(Message Oriented
Middleware、メッセージ指向ミドルウェア)に分類されるAMQP(Advanced Message Queueing
Protocol、http://www.amqp.org)という規格を実装したRabbitMQ(http://www.rabbitmq.com/)を紹介しました。このMOMはメッセージを単純にやり取りする仕掛けです。
今回及び次回では、メッセージのやり取りに際して、その内容を加工したり、その内容に応じて処理を切り替えたりすることができるESB(Enterprise Service Bus)を紹介します。
今回は、JBossESB(http://www.jboss.org/jbossesb)に焦点をあてます。

OSSツール:Pacemakerを使ってクラスタを作ろう(2)

Pocket

techsketch-banner-OSS+startingblock(700x65).jpg

最近はネット上でもPacemakerの記事が増えてきて、設定に関する情報も増えてきました。
しかし、それでも実際に業務で使える設定にしようとすると、少し悩むのではないでしょうか。
商用製品であれば立派なマニュアルも用意されていますが、Pacemakerは(OSSではありがちなことに)そこまで充実したドキュメントはありません。また、サポートに入っていれば必要な問い合わせはできるかもしれませんが、最初にちょっと試してみたいという場合には、少し困るのではないかと思います。(MLで質問するという手はありますが、新参者には少し敷居が高く感じるかもしれません。)

そこで、今回は"最終的には業務に使える状態にする"ということを念頭において、Pacemakerクラスタを構築する上で、どういった考慮が必要かについて書きたいと思います。

3Dプログラミング基礎知識(2)

Pocket

3Dプログラミング基礎知識(1)の続きです。

画面に描画されるまでの流れ

前回の記事では3Dモデルを定義しましたが、これが画面に表示されるまでには様々な処理が行われています。

Pipeline.png

最近のPCやスマートフォンにはグラフィック処理を専門に行うGPUが搭載されており、プログラム中で定義された頂点情報や、面を構成する頂点の情報はCPUからGPUへと渡され、GPUで処理が行われます。
ここで行われる処理はOpenGL ES 1.0と2.0で極端に異なっており、OpenGL ES 1.0の場合は「固定機能パイプライン」と呼ばれる定番の処理が行われます。
これは3Dオブジェクトの移動やカメラ位置に応じた変換、光源の処理などを含んでおり基本的な3D表現であれば出来るようになっています。

OpenGL ES 2.0の場合ですが、「プログラマブルシェーダ」としてGPUで行う処理を製作者が自由に指定できるようになっています。
固定機能パイプラインが行っていたカメラ位置に応じた変換や光源の処理を自分で記述する必要はありますが、固定機能パイプラインとは違い、シェーダプログラムを記述することで製作者の考えに応じて頂点情報、ピクセル情報を変更することが可能です。

シェーダプログラムに関しては第五回で改めて取り上げる予定ですので、今回は「固定機能パイプライン」について見ていきたいと思います。

3Dプログラミング基礎知識(1)

Pocket

3Dプログラミングの基礎知識(1)

はじめに

主にiPhone/AndroidからOpenGL ESを使って3D表現を行う場合に必要となる基礎知識についてまとめていきたいと思います。
基礎の基礎から説明して行くため、言語や3Dライブラリ(DirectX/OpenGL)に依存しない情報が多くなります。OpenGLに限らず「C++ + DirectX」などの環境で開発を行う人もどうぞ。

内容

5回ぐらいに分けて以下のような内容を書いていきたいと思います。

  1. モデルを構成する頂点情報、面情報
  2. 画面に描画されるまでの流れ、平行移動・回転・拡縮行列(ワールド変換)
  3. カメラ、Zバッファ
  4. 法線、ライティング
  5. 頂点シェーダ、ピクセルシェーダ(フラグメントシェーダ)

座標系

3D表現を行う為には3次元の座標系をどのように定義するか決める必要があります。
2Dの場合はX軸、Y軸で座標系を表しますが、3Dの場合はX軸、Y軸、Z軸の3軸を用いて座標系をあらわします。

DirectX、OpenGL共にX軸、Y軸、Z軸の3軸で座標系をあらわしますが、DirectXは左手座標系、OpenGLは右手座標系を用いている為、各軸のプラス方向が異なっています。
OpenGLの場合は右手座標系の為、右手の指をフレミングの法則のように直行させた時、親指がX軸、人差し指がY軸、中指がZ軸となり、それぞれの指が向いている方向がプラスとなります。
Windows環境で使用されるDirectXは左手座標系をとっているため、Z軸の方向が逆(奥方向が+)になります。

Axis.png

ITシステムの性能に取り組む基礎知識 (その2: 待ち行列の基本)

Pocket

techsketch-banner-perfeng+blackgraph(700x72).jpg

前回は前振りだけでしたが, 今回からひとつずつ解説していきます.  今回の問題は特に基礎的な話なのであまり面白くないかもしれません. 

■問題

ある受付業務を2箇所の窓口ABで行っていましたが, 来客の少ないBAに一本化することにしました.  Aの受付数は20%増加するが十分にこなせるはずでした.  ところが, 客の待ち時間が2倍になりクレームが頻発.  どうしてこの様なことが起こるか説明できますか?

基本情報処理技術者の教科書に出てきそうな問題ですね.  この例題は性能問題のもっとも基礎的な待ち行列に関するものですが, 多くの場合は公式を覚えるだけで, 性能問題につながる本質が理解されているとは言い難いように思います.  話の題材を「2台のサーバ」としてサーバ統合の例え話にした方がITシステム向け問題らしくはなるのですが, ここではあえて「2つの窓口」という話にしています.  その理由については後述します. 

Hadoopファミリーの人気投票

Pocket

といってもロゴのはなし。
kkawamuraさんの Hadoopと愉快な仲間たち ~おなじみのキャラクターを集めてみた~ にも

さてHadoopを使っている人が、みんな口を揃えて言うのが「ロゴ(キャラクター)がダサイ」ということです。果たして本当にそんなにダサいのか

と書かれていたり、Twitterなんかでもそういう空気。
 
そうなの?!Hadoopは結構かわいいよ!
援護射撃を期待して、社内SNSで聞いてみました。その結果は、、、