back to home
ホームCONITについて業務内容CONIT LABS.採用情報お問い合わせ
  ホーム > CONIT Labs.
■CALENDAR■
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30   
<<前月 2010年09月 次月>>
■NEW ENTRIES■
■CATEGORIES■
■ARCHIVES■
■LINK■
■PROFILE■
■OTHER■
  • RSS 2.0
  • 処理時間 0.301624秒
  • なかのひと

 

弊社ブログは2010年4月26日からURLを変更いたしました。
ブックマークやRSSで登録されている方は、下記URLへ変更願います。
http://www.conit.co.jp/blog/
今後とも宜しくお願い申し上げます。
2010年4月26日 株式会社コニット

iPhone, Android, その他のスマートフォンアプリの今後はWebアプリ!?
こんにちは、岩田です。

今日は、今後のスマートフォンのアプリはすべてWebアプリになるのでは、と結構前からいわれていますが、
実際に今どこまでいっているのか、簡単にしらべてみました。

もちろん最終の段階では各キャリアや端末の種類に問わず、1つのアプリを作成したら全ての端末で動作することだと
思いますが、現状ではどうなっているのか、またはどういったWebアプリ作成のためのプラットフォームがあるのか
調べてみました。

iPhoneのWebアプリ

iPhone用のJavaScriptインターフェイス http://www.davidcann.com/iphone/
このページにあるiPhoneの画面はjavaScriptとPHPで出来ています。
まー普通ですね。
Big5
こちらも似たようなものですね。

前座はこれまでにして、本命はこちらの2つでしょうかオッケー
appcelerator

Titaniumという名前で、どんなことができるかはこちらを見てください。

こちら
http://vimeo.com/8473513

オープンソースの凄いやつ
PhoneGap

webだけでなくNativeアプリもjavascriptから叩けるので、Camera, 加速度センサなども使用できます。
そして、iPhoneだけでなく、Androidなども対応しているらしいです。


appceleratorは有償でPhoneGapはオープンソースです。

まだまだ、発展途中な感じでどんどんアップデートされていくと思いますが、注目したいと思いました。

やはり、日本ではパットしたものはありませんでした。
本当は後追いではなく、今後に向けてサービスを生み出していきたいのですが。

技術的な押さえどころは、特にHTML5とwebkitで、javaScriptとCSSもという感じでしょうか。
まーいろいろと勉強しておきたいところです。





| http://www.conit.co.jp/labs/index.php?e=303 |
| iPhone | 05:14 PM | comments (1) | trackback (0) |
xperiaとNexus one
こんばんは、いわたです。


今日は、国内で4月に販売が予定されているソニーエリクソンのxperiaを買うべきか、その後に出るであろう
Nexus oneまで待つべきかどうか悩んでいるので、スペックを比較してみたいと思います。

Xperia
画面サイズ(高さ×幅×厚さ) 約119mm×約62.8mm×約12.1mm             
Nexus one
画面サイズ(高さ×幅×厚さ) 約119mm×約59.8mm×約11.5mm

Xperia
画面解像度 480×854              
Nexus one
画面解像度 480X800

Xperia
メモリ RAM 384MB              
Nexus one
メモリ RAM 512MB

Xperia
プロセッサ CPU 1GHz Qualcomm Snapdragon™ QSD8250             
Nexus one
プロセッサ RCPU 1GHz Qualcomm Snapdragon™ QSD8250

Xperia
microSDHCメモリカード 最大16GB          
Nexus one
microSDHCメモリカード 最大32GB

Xperia
カメラ 有効画素数約810万画素         
Nexus one
カメラ 有効画素数約500万画素

Xperia
OS Google™ Android Donut version 1.6          
Nexus one
OS Google™ Android エクレール version 2.1


その他もろもろ比較するものはありますが、スペックだけではどうにも判断がつかないところですね。OSが1.6と2.1なので、開発としては2.1で遊びたい
と思いますが。。xperiaは触ったことがないので、実際に触れてみて検討したいと思います。

またAndroidシミュレーター(AVD)用にSony Ericsson Xperia X10 add-on for the Android SDKがリリースされているので、
シミュレーターで雰囲気を味わうのもありかと思いました。
詳細はこちらのサイトが分かりやすいです。
ony Ericsson Xperia X10 add-on for the Android SDK




| http://www.conit.co.jp/labs/index.php?e=294 |
| Android | 06:23 PM | comments (0) | trackback (0) |
Google Wave②
こんにちは、イワタです。

今回は、前回の続きでGoogle Waveのプロトコルの概要について書こうと思います。

前回は、Waveは複数のWaveletから構成されているというところまででしたので、今回は、
その続きからです。

Waveletの構造

waveletは、
*ドキュメントリスト
*参加者リスト
の2つから構成されています。

waveletは複数のドキュメントを持つことができ、ツリー状に展開されます。
参加者がドキュメントに対して返信すれば、どんどんドキュメントは増えていきます。
ドキュメントの読み書きはプログラムによる自動書き込みを行うロボットというもの
もあります。


ドキュメントの構造
ドキュメントは、
*アノテーションリスト(key-valueペア)
*XMLデータ
の2つから構成されています。

ドキュメントの内用は内部的にはXMLデータとして保持されており、文字のスタイルや
ハイパーリンクなどの付加情報はアノテーションリストで管理されています。

図で現すとこんな感じです。



また、wavelet自体はGoogleのサーバー上にあります。
よって、Waveは参加者がいつでも後からドキュメントを編集、削除することもできます。






| http://www.conit.co.jp/labs/index.php?e=285 |
| 実験 | 10:51 AM | comments (0) | trackback (0) |
Google Wave① 紹介
こんにちは、岩田です。
今年も宜しくお願い致します。

早速ですが、今回は公開されてから少々時間が経っていますが、
Google Waveについて調べてみました。

Google Waveって何?
Google Wave は Web におけるユーザーのコミュニケーションとコラボレーションを支援する製品です。
1 つの「ウェーブ」は会話であると同時にドキュメントであり、そこでユーザーは適切に書式設定されたテキスト、
写真、動画、地図などをほとんど瞬時にやり取りし、共同作業を行うことができます。
また、Google Wave は豊富なオープン API セットを持つプラットフォームでもあり、デベロッパーは他の Web サービスにウェーブを埋め込んだり、
ウェーブ内で動く拡張機能を作成したりできます。

こちらのホームページには、書いてあります。

何か凄そうですねーりんご


3つの「P」

Goole Waveは3つPから構成されているらしいです。

1:Product
 Googleが公開しているProduct(商品)としてのWave。
 普通に使っているチャットみたいな(私の印象ですが)Google Waveのこと

2:Platform
 プラットフォームとしてのWave。
 開発者は自作のアプリケーションをWaveに組み込んで動かせる(ボットとか)

3:Protocol
 プロトコルとしてのWave。
 Waveの仕組みが公開されているので、開発者は自由にWaveを使って開発/運用
 することができる。

Waveの基本データ構造
基本用語
wave:つながりのある一連のドキュメント
wavelet:waveは複数のwavelet(ウェーブレット)から構成され、
     waveletはwaveのアクセス管理の基本単位です。
    ユーザーが特定のwaveを開くと、wave内にそのユーザに関連するwaveletが
    表示される。


時間がないので、waveletの構造、ドキュメントの構造、プロトコルの仕様などを
は明日続きを書きます。

 


| http://www.conit.co.jp/labs/index.php?e=272 |
| 実験 | 02:01 PM | comments (0) | trackback (0) |
Android Tips その2 Intent 画像の取得篇
こんにちは、最近浦和レッズの不振に悩む、いわたです。

今日は、久しぶりにAndroidについて書いてみようと思います。

国内でのスマートフォン市場をみた場合に、Androidは、iPhoneに比べると国内ではまだまだユーザー数は
少ないのが現実です。
しかし、世界に目を向けてみると、
<以下記事抜粋>
世界スマートフォン市場でAndroid搭載機が躍進、2012年のシェアは14%に

米国の市場調査会社Gartnerがまとめた世界スマートフォン市場の動向予測によると、
Android搭載機のシェアは、現在の2%未満から2012年には14%まで拡大する見通しだ。
 現在、世界のスマートフォン市場でシェア1位のOSはフィンランドのNokiaが開発したSymbian OSで、
全スマートフォン製品の約半数に搭載されている。だが、そのシェアは2012年に39%まで減少するとGartnerはみている。
このSymbian OS搭載スマートフォンに代わってシェアを拡大するのがAndroidスマートフォンだ。
Android端末は、2012年には市場シェアでiPhone やWindows Mobile端末、BlackBerryを抑えて、
Symbian OS端末に次ぐ第2位に躍進すると、Gartnerのアナリスト、ケン・デュレイニー(Ken Dulaney)氏は予想している。

2012年の世界スマートフォン市場(Gartnerの予測)
第1位 SymbianOS 販売台数2億300万台(シェア39%)
第2位 Android 販売台数は7,600万台(同14.5%)
第3位 iPhone 販売台数は7,150万台(同13.7%)
第4位 WindowsMobile 販売台数6,680万台(同12.8%)
第5位 BlackBerry 販売台数6,525万台(同12.5%)

という報告がされています。
また、国内でも現在販売しているドコモでは、販売機種を拡大していく予定みたいです。

この数字だけでは、AndroidとiPhoneを比べた場合、あまり違いがわかりませんが、
AndroidOSはスマートフォンだけではなく、ネットブックや組み込み系のデバイスにも搭載することができることが大きな違いであり、OSとしての潜在的な市場可能性はiPhoneの比ではないでしょう。
機能面を比べても、スマートフォンに特化したiPhoneOSとAndroidではどちらが良いとかではなく、違ったものです。

実際に様々な勉強会やフォーラムに参加すると、参加者は、大手電機メーカーやモバイルとは関係性の薄い会社の方々とよくあいます。
やはり、オープンなAndroidはコストの面やプラットフォームを統一することでメーカーを超えた様々なデバイス同士の連携などが可能となり、魅力的なOSだと思います。
(モバイルアプリ開発としては、まだiPhoneの方がUIの設計などはライブラリが豊富でやりやすいですが。。)

おそらくスマートフォンのアプリケーションからみた場合は、iPhoneのほうがMacのデザイン性やUIなどのクオリティの進化などを考えると、今後もiPhoneのほうが、数や機能では上をいくのではと思いますが、OSとしてみた場合は、閉鎖的なiPhoneと比べAndroidのほうが数を伸ばしてくると思います。

前置きが長くなってしまいましたが、今日は、Androidの良く出来ているなと思う機能のIntentとContent Providerについて簡単に書いてみたいと思います。

インテントには意図や目的という意味があり、主にアクティビティを起動する際のパラメータに使われます。
と言ってもよくわからないと思うので、噛み砕くと、アクティビティとはAndroidにおいて、アプリケーションがユーザーとのインターフェイスをとるための基本単位です。MVCモデルでいうところのView(V)に相当するものかなと思います。

ここで重要なことは、Androidはアクティビティを基本単位としているので、異なるアプリケーションのアクティビティ同士で呼び出しができることです。
複数のアプリケーションで連携作業が容易にできることはとても面白いことです。このアクティビティ間の呼び出しを行うための
仕組みがインテント(Intent)です。

Intentには明示的な呼び出しと、暗黙的な呼び出しの2通りがあります。
明示的な呼び出しは、アクティビティを直接指定して起動させるのに対し、暗黙的な呼び出しでは、明示的に起動させるアクティビティを指定せずにインテントのパラメータに起動するアクティビティをある程度推測できるだけの情報(インテントフィルター)を入れておくと、該当するアクティビティが起動するようになっています。

面白いことは、起動元からは実際に起動するアクティビティが何なのかわからないというところです。

実際に、今回は暗黙的な呼び出しを行い、画像を集めたGaralley(フォトアルバム的なアプリケーション)の呼び出しを行ってみます。
(意外にネットや本には載っていませんでしたね)

インテントの発行
Intent intent = new Intent(Intent.ACTION_PICK); // アクションとしてピックを指定する
intent.setType("image/*");          // タイプとしてimageを指定、要するに画像をピックするインテントを作成
startActivityForResult(intent, REQUEST_PICK_CONTACT); // アクティビティのスタート REQUEST_PICK_CONTACTは任意のIDです

これだけで、自動的にGaralleyが起動します。(これだけだとアプリケーションのGaralleyが起動するというよりは、Android内の画像を集めてGaralley Viewに
表示していると言ったほうが適切ですね。)
その後に、何か画像が選択された場合は、OnActivityResultで結果を受けます。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);

if(requestCode == REQUEST_PICK_CONTACT){
//Content Providerとは、全てのアプリケーションからデータの読み書きが可能なオブジェクトで、パッケージ間でデータ共有を行う唯一の手段
Uri photoUri = data.getData();
ContentResolver cont_reslv = getContentResolver();
if (photoUri != null) {
try {
mBitmap = MediaStore.Images.Media.getBitmap(cont_reslv, photoUri);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

上でおこなっていることは、選択された画像のURIを取得、ContentResolverというオブジェクトを作成し、MediaStore.Images.Media.getBitmapで
実際の画像を取得しています。


この他にもアドレス帳の情報を取得することや、電話をかけるなどなど多数のことがIntentを使用して出来るのでいろいろと試してください。
検索すればアドレスなどはいろいろと出てきます。



| http://www.conit.co.jp/labs/index.php?e=255 |
| Android | 10:27 AM | comments (0) | trackback (1) |
最新のAR
こんにちは、イワタです。

今日は、ただ今開催されている、世界最先端のAR技術展で紹介されているものを幾つか紹介します。
展示会は、ISMAR 2009(International Symposium on Mixed and Augmented Reality)という名称で、
ISMARへのリンク
フロリダ州のオーランドで行われています。

凄いとなーというものを幾つかあげてみます。



これは、3年くらい前にある3D技術の会社のCMで未来はこうなったら凄いなーというようなニュアンスのCM
ととても似ていて、こんなに早く実現されようとしていることに驚きです。
将来的に、建築や、空間デザインなどの会議で当たり前のように使われるようになったら便利だと思いました。



こちらは、オクスフォード大学のiPhoneのARです。
実際はどうなのかわかりませんがマーカレスで平面位置をきちんと
検出できているのだとしたらすばらしい技術かなと思いました。
もっと電話機のあたりを歩かせたらどうなるのかみてみたいものです。

実際、iPhoneの加速度センサと方位角センサーの組み合わせで、
ある程度のステレオ視的なことで、3次元上の位置を計算しているのか、
もっと別の特徴点抽出の方法でおおよその面の位置を計算しているのか
アルゴリズムが気になるところです。



もう一つiPhoneです。

ARは、現実空間に想像(創造)したものを合わせたり表示することで、デザインの確認や、リアル空間でのゲーム性のある遊びができたりと、その他にも実社会に有効な手段としてこれから色々と存在を現してくるのではないのでしょうか。

以下のような眼鏡型のARも開発されてきているようですので、将来は全員が携帯のようにAR眼鏡を装着して生活するようになるかも知れません。
ARメガネ

| http://www.conit.co.jp/labs/index.php?e=249 |
| AR | 02:37 PM | comments (0) | trackback (0) |
OpenSocialとmixiアプリ超入門
こんにちは、最近、浦和レッズ観戦が楽しみな岩田です。
今日は昨今注目されているというか実際に様々なSNSサイトで採用されているOpenSocialについて書きたいと思います。

現在OpenSocialは、海外では、MySpace,Friendster,hi5やorkultなどが採用しており、日本では、mixi,モバゲーが加わってますます重要になっています。
当然共通のアプリケーションプラットフォームを採用しているので、これらのSNSに同じものを使えるのが開発者にとって最大のメリットですね。
ただ、Facebookのユーザー数や勢いを考えるとこちらも勉強しておきたいところですが、今回はOpenSocialのちょー簡単なサンプルアプリを作ってみたいと思います。


今回は、mixiアプリを作成してみます。

手順1:mixiにDeveloper登録を行う。
    mixiのホーム上にある「アプリ」をクリック→「アプリを作ろう」から登録を行う。

    登録には携帯のアドレスが必要で、届いたメールからログインすることで認証し、登録完了となる

手順2:ガジェットXMLを作成
    ガジェットXMLとは、アプリケーションを構成するHTML,CSS,JavaScript,アプリのタイトル, 配布者などのメタ情報を
    記述したXML形式のファイルです。

    今回は下記のように文字を表示するだけのもの作成します。



3:Webサーバーにアップロードする(今回は簡易的に弊社で使用しているAmazonサーバーに置いた)

4:mixiからログインして作成したアプリを登録する

登録画面

ここにアップロードURL、説明など必要事項を追加していく

5:アプリを起動する

起動すると以下のように文字が出てきた。
アプリ起動画面


今回は、まったくソーシャル性はないですが、
以下のmixiサイトにチュートリアルがあるので、いろいろ試してみてください。
チュートリアル

さらっとみましたが、基本的なことはあるので、まずは全部ためしてみましょう。
自分はこの間作ったFlashを使ってみようと思います。
  


| http://www.conit.co.jp/labs/index.php?e=240 |
| HTML | 12:02 PM | comments (0) | trackback (0) |
SIO2
こんばんは、岩田です。

今日は、iPhoneおよびiPod Touchでゲーム作成をするときに、便利なゲームエンジンライブラリであるSIO2を紹介します。
SIO2のページ



このライブラリは、本格的なゲーム作成にも実際に使用されており、ゲーム作成に必要な様々な機能をサポートしています。
この使い方をマスターすれば、個人プログラマでもそこそこのゲームを作成することが出来ると思います。

○特徴的機能
* アニメーション(Blenderからのエクスポーターもあり)
* 物理エンジン(パーティクル、フォグ、衝突判定、リジットボディ、ソフトボディ)
* ライトとシャドー
* テクスチャ(マルチ、トランスペアレントなどなど)
* マルチメディア機能(OpenAL)

などなど、ゲーム作成において充実した機能を備えています。


また、SIO2はフリーのオープンソースであり、3DモデルはBlenderという3Dモデリングソフトで作成したモデルを取り込むことができるため、
フリーフリーですべて作成できるところがとても魅力的であると思います。

チュートリアルをゆっくりといろいろ試していきたいと思います。







| http://www.conit.co.jp/labs/index.php?e=231 |
| iPhone | 06:39 PM | comments (0) | trackback (0) |
スマートフォンと医療福祉について考えてみる
ちょっと、堅い話ですが。。
自分は頭の片隅にいつも、技術者として社会に貢献したいという思いがあります。
ゲームなどのアプリを作ることももちろん楽しいのですが、社会を見回してみると
もっと根本的な社会生活(世界の医療、福祉、教育)を向上させることに取り組ん
でみたいと思ったりもしています。
そういう意味でもモバイルやソーシャル系の開発に携わることは、とても有意義な
ことなのではと思っています。

そういうことで、今回はスマートフォン(iPhone)と医療:福祉について考えてみました。


*何ができそうか?
 最初に思ったのは訪問看護で、医師が患者宅で、電子カルテやレントゲン写真など
を閲覧できるアプリです。
 院内のサーバー(HISやRISなどの情報)に接続して、個人の情報をとってきて閲覧できる
ようにします。もちろんセキュリティの高い設計が前提です。もしかしたらもうノートPC
レベルで実現されているかも知れませんが。しかし、WiFiがなくても3G回線お手軽にみれる
のは良いと思います。

 これが発展していくと総合電子カルテシステムみたくなってしまいますね。

次はもっと簡単にゲーム性のあるリハビリアプリなどはどうでしょうか、例えば、
リハビリ効果のあるような指の運動をさせるタッチアプリとか音楽に合わせて
振るとか(こういう音系の面白いアプリもあるみたいですよ


最後にいつも有益な情報をくださるブログを紹介します。

この開発ブログは、医療情報サービス「TOBYO」を運営されている三宅さんが書かれている医療情報系のブログです。
TOBYO

こちらは、実際に病気になられた方々が書いた闘病記をみることができるので、とても有益なサイトだと思いました。
みなさんも覚えておいてください。食べログよりも信頼できる経験情報ですよ。


開発ブログは、医療に関する最先端の情報、関連したSNSやスマートフォンなどの情報も充実しています。
その中で、先日の消費者向けiPhone医療アプリケーションTop5
の中のアプリを幾つか試してみましたが、

気になったのは、Pocket First Aid and CPR でしたが、ストアになく、
たぶん名前が変わって、First Aid-Pocket Guideになったのでと思い
こちらを使ってみました。

まー230は微妙な感じで、しかもアメリカの情報なのでさらに微妙でしょう。。

いつか医療系のアプリをつくってみたいですね。





| http://www.conit.co.jp/labs/index.php?e=223 |
| iPhone | 03:52 PM | comments (4) | trackback (0) |
Android Tipsその①
こんばんわ、

Android AR
これ面白いですね。

ラボにアンドロイド系の情報が少ないことに気づいたので、今回から数回にわたり、
レベルは高くないけど、本にはあまりのっていないような内容について書いてみたいと思います。

第1回は、カスタムリストの作成について、です。

Step 1:リスト表示を行うためには、BaseAdapterクラスを継承してImageViewAdapterを作成する

今回は、単純にリストに画像を表示するカスタムクラスを作成します。

ソースを示します。解説は中に書きます。

**************************  アダプタクラス  ******************************

import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.view.LayoutInflater;
import android.widget.ImageView;
import android.graphics.Bitmap;
import android.content.Context;


import java.util.HashMap;

public class ImageViewAdapter extends BaseAdapter {

// グローバル変数
private LayoutInflater mInflater;
private HashMap<Integer, Bitmap> mHashImage;

public ImageViewAdapter(Context context){
//参照先を保存(キャッシュ)
mInflater = LayoutInflater.from(context);

    //画像管理リスト
mHashImage = new HashMap<Integer, Bitmap>();
}

  // データをadd
public void addData(Bitmap bitmap){
this.mHashImage.put(new Integer(this.mHashImage.size()), bitmap);
}

// リスト数を返す
public int getCount() {
return this.mHashImage.size();
}

//アイテム取得
public Object getItem(int position) {
return this.mHashImage.get(position);
}

//アイテムID取得
public long getItemId(int position) {
return position;
}

// ビューを取得する
// showViewはリストにアイテムとして表示するビューのこと
public View getView(int position, View showView, ViewGroup parent) {

ImageView iView;
//初期化
if(showView == null){
showView = this.mInflater.inflate(R.layout.row_image, null);

iView = (ImageView) showView.findViewById(R.id.list_row_image);
showView.setTag(iView);
}
else{
iView = (ImageView)showView.getTag();
}

updateImageView(position, iView);

return showView;
}

public void updateImageView(int position, ImageView iView){
iView.setImageBitmap(this.mHashImage.get(position));
}

****************************************************************

今回、リストの管理としてHashMapクラスで管理しました。

Step 2:作成した、ImageViewAdapterクラスをListActivityを継承した、ListOfPackageクラスでセットする。


public class ListOfPackage extends ListActivity {

// リストビューに表示するデータを保持するアダプター
ArrayAdapter<ImageView> mAdapter;
private ImageView mListView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list_of_package);

mListView = (ImageView) findViewById(R.id.ListOfPackage);

// アダプタクラスを作成する
ImageViewAdapter imageViewAdapter = new ImageViewAdapter(this);

// Drawableに予めあるイメージからテストサンプルイメージを取得する  (今回やり方は適当です)
Resources r = getResources();
Bitmap bmp1 = BitmapFactory.decodeResource(r, R.drawable.test1);
Bitmap bmp2 = BitmapFactory.decodeResource(r, R.drawable.test2);
Bitmap bmp3 = BitmapFactory.decodeResource(r, R.drawable.test3);
Bitmap bmp4 = BitmapFactory.decodeResource(r, R.drawable.test4);

imageViewAdapter.addData(bmp1);
imageViewAdapter.addData(bmp2);
imageViewAdapter.addData(bmp3);
imageViewAdapter.addData(bmp4);

// ここでセットして登録する
setListAdapter(imageViewAdapter);

}

以上です。


| http://www.conit.co.jp/labs/index.php?e=211 |
| Android | 06:59 PM | comments (0) | trackback (0) |