ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

「Google、携帯電話OSを開発中」、アジアの端末メーカーと。。。。

2007-06-01 20:51:00 | Weblog

ここのニュース
[WSJ] Google、携帯電話OSを開発中
http://www.itmedia.co.jp/news/articles/0706/01/news066.html

によると(以下斜体は上記サイトより引用)


Google CEOが「新しいモバイルアプリケーションを開発中」と明らかにした。情報筋は、携帯電話サービス一式を動かす独自OSだとしている。


で、さらに。。


Googleの計画をよく知る2人の人物は、同社は基本的に、携帯電話サービス一式を動かす独自OSを構築していると語る。同社は既に、GmailやGoogle Mapsなどスタンドアロンのモバイルアプリケーションを幾つか提供している。だがこれらはすべての携帯電話とキャリアに対応しているわけではなく、1つのサービススイートに統合されてもいない。


で、さらにさらに。。

Googleの計画の説明を受けた別の人物は、同社はアジアの端末メーカーと、同社のアプリケーションすべてを新デバイスに搭載することについて話し合っていると伝えている。


アジアの端末メーカー。。。キャリアではないのね。
端末つくっている会社と。。。

どこどこどこなのよお(^^;)・・・




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ドコモ2・0、たしかに、わかりにくい!

2007-06-01 20:16:23 | Weblog

ここのニュース
<ドコモ2・0>巻き返しに新戦略 「わかりにくい」の声も
http://headlines.yahoo.co.jp/hl?a=20070531-00000110-mai-bus_all


わかりにくいですよねー。宣伝見ても、結局、どこが新しくなったのかよくわかんないし・・
ケータイから「はと」が出るんなら新しいけど、
たぶん、「はと」は出ないだろうし(CMの見すぎ? ^^;)

なんかが安くなるみたいなんだけど、よくわかんない。。

ソフトバンクがわかりにくい!っていって、問題だったけど、
もっとわかりにくい気がする

ソフトバンクのホワイトプラン+いろんな色の端末のほうが、どっちかといえば、
わかりやすく、斬新の気がしたりする。。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

開発の初めから順番に書いていってみる その53:プログラミング(15)入出力自動3説明

2007-06-01 13:46:58 | 開発ネタ

シリーズ「開発の初めから順番に書いていってみる」の続きです。
 設計手順には、要求分析、外部設計、内部詳細設計・プログラミング、単体テスト、結合テスト、総合テスト、運用テスト及び運用とあります。
 現在プログラミングです。
プログラミング以前は、ここ http://www.geocities.jp/xmldtp/index_kaihatsu.htm

 プログラミングでは決定表と自動生成のお話をします。
 今、入出力の自動生成をやっていて、いまJDBCを使ったDBアクセスについてです。
 で、前回、自動生成のさらにもとになる、DBアクセス部分のソースを示しました。今回はその説明、とくに以下の2つの疑問

・なぜ、DBKankyoというクラスに分けたのか
・selectはなぜ、すべてStringで入れているのか

に対する答えです。




■なぜ、DBKankyoというクラスに分けたのか

前回、JDBCにアクセスするとき(メソッドexecute)

・ドライバクラスをロード
   Class.forName(JDBCDriverName);
・データベースへ接続
   Connection con =
    DriverManager.getConnection(JDBCURL,JDBCUserName,JDBCPassword);

・ステートメントオブジェクトを生成
   Statement stmt = con.createStatement();

・SQL実行
   stmt.execute(cmd);

・データベース切断(CLOSE)
   stmt.close();
   con.close();
 
という形でおこないました。そのとき、

・ドライバ名  JDBCDriverName
・アクセスURL  JDBCURL
・ユーザー名  JDBCUserName
・パスワード  JDBCPassword

を、このクラスに埋め込まなかった理由についてですが、
テストのとき用、本番用で、上記の箇所は変わり、さらに、その値の取得方法も、クラスに埋め込んだり、ファイルを読み込んだりなど、いろいろと変わる可能性があります。そこで、これらを、 DBKankyoというクラスにカプセル化し、このクラスの上記変数だけを変えれば、切り替わるようにしたかったからです。




■selectはなぜ、すべてStringで入れているのか

前回、JDBCで検索するとき(メソッドselectExecute)

・ドライバクラスをロード
   Class.forName(JDBCDriverName);
・データベースへ接続
   Connection con =
    DriverManager.getConnection(JDBCURL,JDBCUserName,JDBCPassword);

・ステートメントオブジェクトを生成
   Statement stmt = con.createStatement();

・SQL実行
   ResultSet rs = stmt.executeQuery(cmd);


・メタデータの取得(項目名を取得するため)
   ResultSetMetaData meta = rs.getMetaData();

・1レコード分のハッシュマップを作成し
   HashMap mp = new HashMap();
   for(int i = 1 ; i <= meta.getColumnCount(); i ++ )
   {
       mp.put(meta.getColumnName(i),
          rs.getString(meta.getColumnName(i)) );
   }

・それらレコードをベクターにどんどん付け加える
    allData.add(mp);

・データベース切断(CLOSE)
   stmt.close();
   con.close();

(赤字は、executeとちがうところ、< > は本当は半角) 
という形でおこないました。そのとき、

 rs.getString(meta.getColumnName(i))

という形で、型にかかわらず、かならず文字列にしている理由ですが、
仕様でよく変更が起こるのが、この型の問題だからです。

  Integerから、文字列など。。。

そーすると、このところでエラーをおこしてしまいます。
ならば、はじめから、全部文字列と決めてしまえば、Integerで欲しいときは、受け取ってから変換すればいいから、いいかなと。。
というためです。

 このやりかただと、Dateのとき、おもったような文字列じゃないことがあり、こまるのですが、そもそも、日付や時間は、文字列(20070601のような)で表現しておいたほうが処理しやすいです。(DBの容量の問題とかを気にしなければ)なので、日付は文字列というつもりで作っています。

 とはいえ、文字列にされるとこまるもの(バイナリなど)を格納することもあるかと思います。そういうときは、文字列変換しないselectを作ってもいいかとおもいます。




ということで、まあ、ここまでの説明はおわりということで、この後、
その上の部分、
  select
  update
  insert
  delete
について、考えてみたいと思います。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

一般的な編集ソフトの作り方 その4:メモリ上への要素展開(読み書き)

2007-06-01 10:20:32 | 開発ネタ

 ワープロやドローイングソフトなどの編集ソフトを作る上での一般的な考え方を考える「一般的な編集ソフトの作り方」です。

 はじめに、ここで取り上げる内容、つまり、編集ソフトを作る上で共通的な部分について考えました。
 具体的には、以下の3箇所です

・メモリ上に、要素(編集しているもの)をもつ
・イベント発生時の動き
・画面の構成

 今は「メモリ上に、要素(編集しているもの)をもつ」ということについて考えていて、その表現法としての連結リストをやっています。

 今日は連結リストの保存と読み込みです。




■なにが問題なのか?

 連結リストには、前、後のところに、(Cの場合)ポインタ、(Javaの場合)オブジェクトが入っています。XMLで保存するような場合、これを、そのまま入れても。。。??となってしまいます。

 そこで、ポインタを何かに置き換えないといけません。




■そこでIDを使う

 そこで、IDを使います。各要素は、
public class Item {
	int	id;
	Item	prev = null;
	Item	next = null;
}

ってことで、共通してIDをもってます。このIDを、prev,nextの代わりにセットします。




■方法-オブジェクト生成時

 なので、オブジェクト生成時、一意になるように、IDを振ります。
 具体的にはドキュメント(ファイルを保存する単位)でstaticかなんかでID(の最高値)を持っていて、オブジェクト生成時に、IDを1つ加えて、そのオブジェクトのIDとします。

 ドキュメント生成時は、IDは0になります。読み込みの場合は、後述しますが、IDも保存してあります。




■保存するとき

1.まず、ドキュメントで持っているID(の最高値)をもとに、配列を用意します(要素をすべてnullで初期化して置きます)。

2.その配列に、IDをもとに、オブジェクトをセットしていきます

3.IDを振りなおします
 →これをやんないと、IDが、どんどん増えていき、
  削除追加を永遠と繰り返すといつかは桁あふれする。
  ただし、それはずーっと先の話なので、
  そこまで考えないならふりなおさないでよい

 ドキュメントで持っているID(の最高値)を0にして、
 配列をみていき、もし、オブジェクトがあったら1上げてそ
 の番号を振りなおし、nullだったら、次へ。。を繰り返し、
 最後まで。

4.書き出し用のDomなり、なにかシリアライズするものなりを用意し、
 1つ1つの要素を配列を見ながらセットします。
 そのときに、prevのところは、リンクをたどって、そのIDを、
 nextのところも、リンクをたどって、そのIDを、いれます
 (NULLは、0)

5.書き出し時には、4のものと一緒に
  ドキュメントで持っているID(の最高値)も書き出します。


注意:IDを振りなおした場合、この操作後、
   書き出し前とIDは、変わっています。




■読み込み
1.書き出しの4に相当する、Domなり、シリアライズされた
  オブジェクトを読み込みます

2.ファイルに保存されている
  ドキュメントで持っているID(の最高値)を読み込み、
  メモリ上のオブジェクト用の配列を作成し、
  その分、prevとnextはまだ埋めないで、
  そのオブジェクトを配列に入れます

3.1のオブジェクトをもとに2のオブジェクトをセットします
 そのときprev,nextは、ID=配列番号をもとに、オブジェクトを
 セットします。




 もっといい方法はあるかもしれません。
 でも、とりあえず、これで、まあ、読み込み、書き出しはできます。

 ってことで、今回はここまで



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする